@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,124 @@
1
+ import { describe, expect, test } from 'bun:test';
2
+ import type { GraphifyNode } from './types';
3
+ import {
4
+ graphifyFileStem,
5
+ makeGraphifyId,
6
+ normalizeGraphifyId,
7
+ } from './ids';
8
+ import { resolveComponentAnchor, symbolLabelVariants } from './anchor';
9
+
10
+ function node(
11
+ id: string,
12
+ label: string,
13
+ sourceFile: string,
14
+ location?: string,
15
+ ): GraphifyNode {
16
+ return {
17
+ id,
18
+ label,
19
+ file_type: 'code',
20
+ source_file: sourceFile,
21
+ source_location: location ?? '',
22
+ };
23
+ }
24
+
25
+ describe('makeGraphifyId', () => {
26
+ test('matches graphify path+symbol slug shape', () => {
27
+ const stem = graphifyFileStem(
28
+ 'packages/subsystems-studio/src/mainview/views/SubsystemModelView.tsx',
29
+ );
30
+ expect(stem).toBe(
31
+ 'packages/subsystems-studio/src/mainview/views/SubsystemModelView',
32
+ );
33
+ expect(makeGraphifyId(stem, 'SubsystemModelView')).toBe(
34
+ 'packages_trail_viewer_src_mainview_views_subsystemmodelview_subsystemmodelview',
35
+ );
36
+ });
37
+
38
+ test('normalize is idempotent on ascii', () => {
39
+ const id = makeGraphifyId('Foo/Bar', 'Baz');
40
+ expect(normalizeGraphifyId(id)).toBe(id);
41
+ });
42
+ });
43
+
44
+ describe('symbolLabelVariants', () => {
45
+ test('includes call-style labels', () => {
46
+ expect(symbolLabelVariants('SubsystemModelView')).toContain(
47
+ 'SubsystemModelView()',
48
+ );
49
+ expect(symbolLabelVariants('SessionReader.normalize')).toContain('normalize()');
50
+ expect(symbolLabelVariants('SessionReader.normalize')).toContain('.normalize()');
51
+ });
52
+ });
53
+
54
+ describe('resolveComponentAnchor', () => {
55
+ const file =
56
+ 'packages/subsystems-studio/src/mainview/views/SubsystemModelView.tsx';
57
+ const defId = makeGraphifyId(graphifyFileStem(file), 'SubsystemModelView');
58
+ const corpus: GraphifyNode[] = [
59
+ node(defId, 'SubsystemModelView()', file, 'L27'),
60
+ node(
61
+ makeGraphifyId(graphifyFileStem(file)),
62
+ 'SubsystemModelView.tsx',
63
+ file,
64
+ 'L1',
65
+ ),
66
+ node(
67
+ makeGraphifyId(
68
+ graphifyFileStem('other/SessionReader.ts'),
69
+ 'SessionReader',
70
+ ),
71
+ 'SessionReader',
72
+ 'other/SessionReader.ts',
73
+ 'L1',
74
+ ),
75
+ ];
76
+
77
+ test('exact via make_id reconstruction', () => {
78
+ const r = resolveComponentAnchor(corpus, {
79
+ file,
80
+ symbol: 'SubsystemModelView',
81
+ });
82
+ expect(r.resolution).toBe('exact');
83
+ expect(r.node?.id).toBe(defId);
84
+ expect(r.node?.source_location).toBe('L27');
85
+ });
86
+
87
+ test('exact via label when id reconstruction misses', () => {
88
+ const weirdId = 'weird_id_not_from_make_id';
89
+ const local = [
90
+ node(weirdId, 'subsystemGraphToExcalidrawScene()', 'packages/x.ts', 'L10'),
91
+ ];
92
+ const r = resolveComponentAnchor(local, {
93
+ file: 'packages/x.ts',
94
+ symbol: 'subsystemGraphToExcalidrawScene',
95
+ });
96
+ expect(r.resolution).toBe('exact');
97
+ expect(r.node?.id).toBe(weirdId);
98
+ });
99
+
100
+ test('file-only when file has nodes but symbol misses', () => {
101
+ const r = resolveComponentAnchor(corpus, {
102
+ file,
103
+ symbol: 'DoesNotExist',
104
+ });
105
+ expect(r.resolution).toBe('file-only');
106
+ expect(r.candidates.length).toBeGreaterThan(0);
107
+ });
108
+
109
+ test('missing when file absent from graph', () => {
110
+ const r = resolveComponentAnchor(corpus, {
111
+ file: 'no/such/file.ts',
112
+ symbol: 'Foo',
113
+ });
114
+ expect(r.resolution).toBe('missing');
115
+ });
116
+
117
+ test('does not bind via corpus-wide same name in another file', () => {
118
+ const r = resolveComponentAnchor(corpus, {
119
+ file: 'packages/elsewhere/SessionReader.ts',
120
+ symbol: 'SessionReader',
121
+ });
122
+ expect(r.resolution).toBe('missing');
123
+ });
124
+ });
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Resolve a subsystem component (file + symbol) to a graphify definition node.
3
+ *
4
+ * This is component *anchoring*, not type-ref stub rewiring (`resolve.ts`).
5
+ * Conservative: never bind via corpus-wide same-name alone.
6
+ */
7
+
8
+ import type { GraphifyNode } from './types';
9
+ import type { GraphifyAnchorResolution } from './consolidated';
10
+ import { normalizeGraphifyLabel } from './resolve';
11
+ import {
12
+ graphifyFileStem,
13
+ makeGraphifyId,
14
+ normalizeSourcePath,
15
+ } from './ids';
16
+
17
+ export interface ComponentAnchorInput {
18
+ file?: string;
19
+ symbol?: string;
20
+ kind?: string;
21
+ purl?: string;
22
+ }
23
+
24
+ export interface ComponentAnchorResult {
25
+ resolution: GraphifyAnchorResolution;
26
+ node: GraphifyNode | null;
27
+ candidates: GraphifyNode[];
28
+ /** make_id strings attempted on the fast path. */
29
+ triedIds: string[];
30
+ }
31
+
32
+ const FILE_SUFFIX_RE =
33
+ /\.(py|js|jsx|ts|tsx|mjs|cjs|java|go|rs|rb|php|cs|cpp|cc|c|h|hpp|pas|pp|dpr|swift|kt|scala|dart|lua|pl|pm|ex|exs|zig|vue|svelte)$/i;
34
+
35
+ function isDefinition(node: GraphifyNode): boolean {
36
+ if (node.file_type !== 'code') return false;
37
+ const file = typeof node.source_file === 'string' ? node.source_file : '';
38
+ if (!file) return false;
39
+ const label = typeof node.label === 'string' ? node.label.trim() : '';
40
+ return !!label && !FILE_SUFFIX_RE.test(label);
41
+ }
42
+
43
+ /** Label forms that might match a subsystem symbol on a graphify node. */
44
+ export function symbolLabelVariants(symbol: string): string[] {
45
+ const raw = symbol.trim();
46
+ if (!raw) return [];
47
+ const last = raw.includes('.') ? (raw.split('.').pop() ?? raw) : raw;
48
+ const variants = new Set<string>([
49
+ raw,
50
+ last,
51
+ `${raw}()`,
52
+ `${last}()`,
53
+ `.${last}()`,
54
+ `.${last}`,
55
+ ]);
56
+ return [...variants];
57
+ }
58
+
59
+ function labelMatchesSymbol(label: string, symbol: string): boolean {
60
+ const variants = symbolLabelVariants(symbol);
61
+ const trimmed = label.trim();
62
+ if (variants.includes(trimmed)) return true;
63
+ const foldedLabel = normalizeGraphifyLabel(trimmed);
64
+ return variants.some((v) => normalizeGraphifyLabel(v) === foldedLabel);
65
+ }
66
+
67
+ function candidateIdsFor(file: string, symbol: string): string[] {
68
+ const stem = graphifyFileStem(file);
69
+ if (!stem) return [];
70
+ const parts = symbol.split('.').map((p) => p.trim()).filter(Boolean);
71
+ const ids = new Set<string>();
72
+ ids.add(makeGraphifyId(stem, symbol));
73
+ if (parts.length > 0) ids.add(makeGraphifyId(stem, ...parts));
74
+ if (parts.length === 2) {
75
+ // Class method: make_id(class_id, method) ≈ make_id(stem, Class, method)
76
+ ids.add(makeGraphifyId(stem, parts[0]!, parts[1]!));
77
+ }
78
+ return [...ids];
79
+ }
80
+
81
+ /**
82
+ * Anchor a subsystem component onto a graphify definition node.
83
+ */
84
+ export function resolveComponentAnchor(
85
+ nodes: readonly GraphifyNode[],
86
+ input: ComponentAnchorInput,
87
+ ): ComponentAnchorResult {
88
+ const file = input.file?.trim() ? normalizeSourcePath(input.file) : '';
89
+ const symbol = input.symbol?.trim() ?? '';
90
+ if (!file || !symbol) {
91
+ return { resolution: 'missing', node: null, candidates: [], triedIds: [] };
92
+ }
93
+
94
+ const byId = new Map<string, GraphifyNode>();
95
+ const inFile: GraphifyNode[] = [];
96
+ for (const node of nodes) {
97
+ byId.set(String(node.id), node);
98
+ if (!isDefinition(node)) continue;
99
+ const sf = normalizeSourcePath(String(node.source_file ?? ''));
100
+ if (sf === file) inFile.push(node);
101
+ }
102
+
103
+ const triedIds = candidateIdsFor(file, symbol);
104
+ const idHits: GraphifyNode[] = [];
105
+ for (const id of triedIds) {
106
+ const hit = byId.get(id);
107
+ if (!hit || !isDefinition(hit)) continue;
108
+ const sf = normalizeSourcePath(String(hit.source_file ?? ''));
109
+ if (sf === file) idHits.push(hit);
110
+ }
111
+ const uniqueIdHits = [...new Map(idHits.map((n) => [String(n.id), n])).values()];
112
+ if (uniqueIdHits.length === 1) {
113
+ return {
114
+ resolution: 'exact',
115
+ node: uniqueIdHits[0]!,
116
+ candidates: [],
117
+ triedIds,
118
+ };
119
+ }
120
+ if (uniqueIdHits.length > 1) {
121
+ return {
122
+ resolution: 'ambiguous',
123
+ node: null,
124
+ candidates: uniqueIdHits,
125
+ triedIds,
126
+ };
127
+ }
128
+
129
+ if (inFile.length === 0) {
130
+ return { resolution: 'missing', node: null, candidates: [], triedIds };
131
+ }
132
+
133
+ const labelHits = inFile.filter((n) =>
134
+ labelMatchesSymbol(String(n.label ?? ''), symbol),
135
+ );
136
+ if (labelHits.length === 1) {
137
+ return {
138
+ resolution: 'exact',
139
+ node: labelHits[0]!,
140
+ candidates: [],
141
+ triedIds,
142
+ };
143
+ }
144
+ if (labelHits.length > 1) {
145
+ return {
146
+ resolution: 'ambiguous',
147
+ node: null,
148
+ candidates: labelHits,
149
+ triedIds,
150
+ };
151
+ }
152
+
153
+ // File has code nodes but none matched the symbol.
154
+ return {
155
+ resolution: 'file-only',
156
+ node: null,
157
+ candidates: inFile.slice(0, 8),
158
+ triedIds,
159
+ };
160
+ }
@@ -0,0 +1,246 @@
1
+ /**
2
+ * Graphify consolidated / drill-down types.
3
+ *
4
+ * graphify stores the graph in flat, normalized form — class vs function vs
5
+ * type is NOT a node attribute (every code node is `file_type: "code"`); it is
6
+ * derived from graph structure. These types rebuild that structure from the raw
7
+ * edges so a UI can show a drill-down modal for a subsystem component or jump
8
+ * to its definition file.
9
+ */
10
+
11
+ import type {
12
+ GraphifyConfidence,
13
+ GraphifyFileType,
14
+ GraphifyRelation,
15
+ } from './types';
16
+
17
+ /** How a subsystem component resolved to a graphify node. */
18
+ export type GraphifyAnchorResolution = 'exact' | 'file-only' | 'ambiguous' | 'missing';
19
+
20
+ /**
21
+ * The bridge between a facet component and the graphify graph.
22
+ *
23
+ * `nodeId` is reconstructed from the component's `file` + `symbol` via the id
24
+ * slug scheme; `resolution` says how confident that reconstruction is.
25
+ * `source_file` + `source_location` are the "open the definition" primitive.
26
+ */
27
+ export interface SubsystemGraphifyAnchor {
28
+ /** Resolved graphify node id. */
29
+ nodeId: string;
30
+ /** PURL of the repo the node lives in (pkg:github/owner/repo). */
31
+ purl: string;
32
+ /** How the anchor resolved — the honesty signal for verification. */
33
+ resolution: GraphifyAnchorResolution;
34
+ /** Human-readable node label from the graph. */
35
+ label: string;
36
+ /** Repo-relative path of the node's source file. */
37
+ source_file: string;
38
+ /** `L<line>` — the line of the definition for a file-open jump. */
39
+ source_location?: string;
40
+ /** Node classification from the graph. */
41
+ file_type: GraphifyFileType;
42
+ /** Leiden community id. */
43
+ community?: number | null;
44
+ /** Human-readable community label. */
45
+ community_name?: string;
46
+ }
47
+
48
+ // ---------------------------------------------------------------------------
49
+ // Leaf info types — each backed by a specific graphify edge pattern
50
+ // ---------------------------------------------------------------------------
51
+
52
+ /** A method on a class-like node (`method` edge from the class). */
53
+ export interface GraphifyMethodInfo {
54
+ /** The method's own node id. */
55
+ nodeId: string;
56
+ /** Display name from the label (`.get()` → `get`). */
57
+ name: string;
58
+ /** Typed parameters from `references` edges with context `parameter_type`. */
59
+ parameters?: GraphifyParamInfo[];
60
+ /** Return type from a `references` edge with context `return_type`. */
61
+ returnType?: string;
62
+ /** Backing edge target for `returnType`, when the graph had one. */
63
+ returnTypeRef?: GraphifyReferenceInfo;
64
+ }
65
+
66
+ /** A property/field on a class- or type-like node. */
67
+ export interface GraphifyPropertyInfo {
68
+ /** Field name — present when graphify emits a `defines` node (C++). */
69
+ name: string;
70
+ /** Field type from a `references` edge with context `field`. */
71
+ type?: string;
72
+ /** Backing edge target for `type`, when the graph had one. */
73
+ typeRef?: GraphifyReferenceInfo;
74
+ /** The field's own node id when it exists (e.g. C++ `defines` nodes). */
75
+ nodeId?: string;
76
+ }
77
+
78
+ /**
79
+ * A single typed parameter of a function (`references` context `parameter_type`).
80
+ *
81
+ * `ref.nodeId` is the resolvable half: it targets the type's definition node
82
+ * when graphify resolved the reference, or a sourceless stub node when the
83
+ * name was ambiguous / external (see `resolveGraphifyTypeRef`).
84
+ */
85
+ export interface GraphifyParamInfo {
86
+ /** Parameter name — not captured by graphify; left undefined. */
87
+ name?: string;
88
+ /** Parameter type. */
89
+ type: string;
90
+ /** Backing `references[parameter_type|generic_arg]` edge target. */
91
+ ref?: GraphifyReferenceInfo;
92
+ }
93
+
94
+ /** One call relationship, in either direction. */
95
+ export interface GraphifyCallInfo {
96
+ /** The other endpoint's node id (caller for `callers`, callee for `callees`). */
97
+ nodeId: string;
98
+ /** The other endpoint's display label. */
99
+ name: string;
100
+ /** `L<line>` of the call site. */
101
+ source_location?: string;
102
+ }
103
+
104
+ /** A type-name reference to a node (`references` edge with a context). */
105
+ export interface GraphifyReferenceInfo {
106
+ /** The referenced node id. */
107
+ nodeId: string;
108
+ /** The referenced node's display label. */
109
+ name: string;
110
+ /** Reference context (e.g. `type`, `field`, `generic_arg`, `attribute`). */
111
+ context?: string;
112
+ /** `L<line>` of the reference site. */
113
+ source_location?: string;
114
+ }
115
+
116
+ /** An import relationship (`imports` / `imports_from` / `re_exports`). */
117
+ export interface GraphifyImportInfo {
118
+ /** The imported module/file node id. */
119
+ nodeId: string;
120
+ /** The imported module/file label. */
121
+ name: string;
122
+ /** Which relation carried the import. */
123
+ relation?: GraphifyRelation;
124
+ /** `L<line>` of the import statement. */
125
+ source_location?: string;
126
+ }
127
+
128
+ // ---------------------------------------------------------------------------
129
+ // Discriminated union — the drill-down payload
130
+ // ---------------------------------------------------------------------------
131
+
132
+ /** A class-like node: owns outgoing `method` edges. */
133
+ export interface GraphifyClassDetail {
134
+ kind: 'class';
135
+ /** Methods connected via `method` edges. */
136
+ methods: GraphifyMethodInfo[];
137
+ /** Fields from `defines`/`references` context `field`. */
138
+ properties: GraphifyPropertyInfo[];
139
+ /** `inherits` edge targets. */
140
+ extends: string[];
141
+ /** `implements` edge targets. */
142
+ implements: string[];
143
+ /** Incoming `calls` — graphify models constructor calls as calls into the class. */
144
+ instantiations: GraphifyCallInfo[];
145
+ /** Everywhere the type name is referenced (`references` edges). */
146
+ references: GraphifyReferenceInfo[];
147
+ }
148
+
149
+ /** A function-like node: label ends `name()` with no `method` edges. */
150
+ export interface GraphifyFunctionDetail {
151
+ kind: 'function';
152
+ /** Parameter types from `references` context `parameter_type`. */
153
+ parameters: GraphifyParamInfo[];
154
+ /** Return type from `references` context `return_type`. */
155
+ returnType?: string;
156
+ /** Backing edge target for `returnType`, when the graph had one. */
157
+ returnTypeRef?: GraphifyReferenceInfo;
158
+ /** Incoming `calls` edges. */
159
+ callers: GraphifyCallInfo[];
160
+ /** Outgoing `calls` edges. */
161
+ callees: GraphifyCallInfo[];
162
+ }
163
+
164
+ /** A type-like node (interface/struct): revealed by incoming `implements` edges. */
165
+ export interface GraphifyTypeDetail {
166
+ kind: 'type';
167
+ /** Struct/interface fields. */
168
+ properties: GraphifyPropertyInfo[];
169
+ /** Nodes referencing this type name. */
170
+ usedBy: GraphifyReferenceInfo[];
171
+ /** Nodes that `inherits`/`implements` this type. */
172
+ implementors: string[];
173
+ }
174
+
175
+ /** A module/file-like node: a `contains` target with a filename label. */
176
+ export interface GraphifyModuleDetail {
177
+ kind: 'module';
178
+ /** `re_exports` targets / contained public symbols. */
179
+ exports: string[];
180
+ /** `imports` / `imports_from` relationships. */
181
+ imports: GraphifyImportInfo[];
182
+ /** Symbols contained in the module (`contains` targets). */
183
+ symbols: string[];
184
+ }
185
+
186
+ /** A facet-only component with no graphify node (external consumer stub). */
187
+ export interface GraphifyExternalDetail {
188
+ kind: 'external';
189
+ /** Facet-only label; there is no backing graph data. */
190
+ label: string;
191
+ }
192
+
193
+ /**
194
+ * A retained-state node (`kind: 'store'`): state and its contract, no
195
+ * behavior. `kind` is the node's verifiable anchor — a store anchors to a
196
+ * *state location* (module consts, a file or db), not to a declaration.
197
+ * When a class manages the store's access, that is a SEPARATE node
198
+ * (`kind: 'class'`, methods = the access mechanism) joined by
199
+ * `writes`/`reads` — never merged into one hybrid node. This payload
200
+ * renders as state declarations (`declare const …`), never as a class
201
+ * stub.
202
+ */
203
+ export interface GraphifyStoreDetail {
204
+ kind: 'store';
205
+ /** The retained state members (module-level consts or class fields). */
206
+ properties: GraphifyPropertyInfo[];
207
+ }
208
+
209
+ /** A standalone method selected from its owning class. */
210
+ export interface GraphifyMethodDetail {
211
+ kind: 'method';
212
+ /** The class that owns this method. */
213
+ hostClass: string;
214
+ /** Parameter types from `references` context `parameter_type`. */
215
+ parameters?: GraphifyParamInfo[];
216
+ /** Return type from `references` context `return_type`. */
217
+ returnType?: string;
218
+ }
219
+
220
+ /**
221
+ * The drill-down payload for a subsystem component.
222
+ *
223
+ * The discriminant is derived from graph structure, not read off the node:
224
+ * method edges → class; `()` label + no method edges → function; incoming
225
+ * `implements` → type; else module. `external` covers consumer stubs.
226
+ * `method` covers standalone method components selected from a class.
227
+ */
228
+ export type GraphifyComponentDetail =
229
+ | GraphifyClassDetail
230
+ | GraphifyFunctionDetail
231
+ | GraphifyMethodDetail
232
+ | GraphifyTypeDetail
233
+ | GraphifyModuleDetail
234
+ | GraphifyExternalDetail
235
+ | GraphifyStoreDetail;
236
+
237
+ /** A raw graphify edge backing a facet claim (verification + provenance). */
238
+ export interface GraphifyEdgeRef {
239
+ source: string;
240
+ target: string;
241
+ relation: GraphifyRelation;
242
+ confidence: GraphifyConfidence;
243
+ confidence_score?: number;
244
+ source_file: string;
245
+ source_location?: string;
246
+ }
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Mirror of graphify/ids.py — NFKC + casefold-ish + non-word → `_`.
3
+ *
4
+ * Definition node ids are `makeId(fileStem, ...symbolParts)`. Stub ids are
5
+ * intentionally different (name-only / `ref_…`); this module is for the
6
+ * definition path used by component anchoring.
7
+ */
8
+
9
+ /** Normalize one id string to graphify's canonical form. */
10
+ export function normalizeGraphifyId(s: string): string {
11
+ let out = s.normalize("NFKC");
12
+ // JS has no Unicode casefold; lowercasing + second NFKC is close enough
13
+ // for the Latin/ASCII identifiers we resolve in practice.
14
+ out = out.toLowerCase().normalize("NFKC");
15
+ out = out.replace(/[^\w]+/gu, "_");
16
+ out = out.replace(/_+/g, "_");
17
+ return out.replace(/^_|_$/g, "");
18
+ }
19
+
20
+ /** Build a canonical node id from path/symbol parts (graphify `make_id`). */
21
+ export function makeGraphifyId(...parts: string[]): string {
22
+ const joined = parts
23
+ .filter((p) => typeof p === "string" && p.length > 0)
24
+ .map((p) => p.replace(/^[_.]+|[_.]+$/g, ""))
25
+ .filter(Boolean)
26
+ .join("_");
27
+ return normalizeGraphifyId(joined);
28
+ }
29
+
30
+ /**
31
+ * File stem used as the node-id prefix (graphify `_file_stem`):
32
+ * full path with extension dropped, posix separators.
33
+ */
34
+ export function graphifyFileStem(file: string): string {
35
+ const posix = file.replace(/\\/g, "/").replace(/^\.\//, "");
36
+ const lastSlash = posix.lastIndexOf("/");
37
+ const base = lastSlash >= 0 ? posix.slice(lastSlash + 1) : posix;
38
+ const dir = lastSlash >= 0 ? posix.slice(0, lastSlash + 1) : "";
39
+ if (!base || base === ".") return "";
40
+ const dot = base.lastIndexOf(".");
41
+ const stemBase = dot > 0 ? base.slice(0, dot) : base;
42
+ return `${dir}${stemBase}`;
43
+ }
44
+
45
+ /** Normalize a repo-relative path for source_file comparison. */
46
+ export function normalizeSourcePath(file: string): string {
47
+ return file.replace(/\\/g, "/").replace(/^\.\//, "").replace(/\/+/g, "/");
48
+ }
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Graphify integration types.
3
+ *
4
+ * Type-compatible view of graphify's graph.json data model for consuming
5
+ * graphify output (nodes, links, hyperedges) inside this library.
6
+ */
7
+
8
+ export type {
9
+ JsonValue,
10
+ GraphifyFileType,
11
+ GraphifyConfidence,
12
+ GraphifyNodeType,
13
+ GraphifyRelation,
14
+ GraphifyNode,
15
+ GraphifyEdge,
16
+ GraphifyHyperedge,
17
+ GraphifyGraphMetadata,
18
+ GraphifyGraph,
19
+ } from './types';
20
+ export type {
21
+ GraphifyAnchorResolution,
22
+ SubsystemGraphifyAnchor,
23
+ GraphifyMethodInfo,
24
+ GraphifyPropertyInfo,
25
+ GraphifyParamInfo,
26
+ GraphifyCallInfo,
27
+ GraphifyReferenceInfo,
28
+ GraphifyImportInfo,
29
+ GraphifyClassDetail,
30
+ GraphifyFunctionDetail,
31
+ GraphifyTypeDetail,
32
+ GraphifyModuleDetail,
33
+ GraphifyExternalDetail,
34
+ GraphifyStoreDetail,
35
+ GraphifyComponentDetail,
36
+ GraphifyEdgeRef,
37
+ } from './consolidated';
38
+ export type {
39
+ GraphifyTypeRefStatus,
40
+ GraphifyTypeRefResolution,
41
+ } from './resolve';
42
+ export {
43
+ normalizeGraphifyLabel,
44
+ createGraphifyTypeResolver,
45
+ resolveGraphifyTypeRef,
46
+ } from './resolve';
47
+ export {
48
+ normalizeGraphifyId,
49
+ makeGraphifyId,
50
+ graphifyFileStem,
51
+ normalizeSourcePath,
52
+ } from './ids';
53
+ export type {
54
+ ComponentAnchorInput,
55
+ ComponentAnchorResult,
56
+ } from './anchor';
57
+ export {
58
+ resolveComponentAnchor,
59
+ symbolLabelVariants,
60
+ } from './anchor';
61
+ export type { InferredGraphifyKind, InferGraphifyKindResult } from './kind';
62
+ export { inferGraphifyKind, kindsMatch } from './kind';
63
+ export type {
64
+ GraphifyInferredSignature,
65
+ ClaimedSignature,
66
+ SignatureCompareResult,
67
+ } from './signature';
68
+ export {
69
+ extractNamedTypes,
70
+ extractGraphifySignature,
71
+ compareSignatures,
72
+ } from './signature';