@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,132 @@
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
+ import { normalizeGraphifyLabel } from './resolve';
8
+ import { graphifyFileStem, makeGraphifyId, normalizeSourcePath, } from './ids';
9
+ const FILE_SUFFIX_RE = /\.(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;
10
+ function isDefinition(node) {
11
+ if (node.file_type !== 'code')
12
+ return false;
13
+ const file = typeof node.source_file === 'string' ? node.source_file : '';
14
+ if (!file)
15
+ return false;
16
+ const label = typeof node.label === 'string' ? node.label.trim() : '';
17
+ return !!label && !FILE_SUFFIX_RE.test(label);
18
+ }
19
+ /** Label forms that might match a subsystem symbol on a graphify node. */
20
+ export function symbolLabelVariants(symbol) {
21
+ const raw = symbol.trim();
22
+ if (!raw)
23
+ return [];
24
+ const last = raw.includes('.') ? (raw.split('.').pop() ?? raw) : raw;
25
+ const variants = new Set([
26
+ raw,
27
+ last,
28
+ `${raw}()`,
29
+ `${last}()`,
30
+ `.${last}()`,
31
+ `.${last}`,
32
+ ]);
33
+ return [...variants];
34
+ }
35
+ function labelMatchesSymbol(label, symbol) {
36
+ const variants = symbolLabelVariants(symbol);
37
+ const trimmed = label.trim();
38
+ if (variants.includes(trimmed))
39
+ return true;
40
+ const foldedLabel = normalizeGraphifyLabel(trimmed);
41
+ return variants.some((v) => normalizeGraphifyLabel(v) === foldedLabel);
42
+ }
43
+ function candidateIdsFor(file, symbol) {
44
+ const stem = graphifyFileStem(file);
45
+ if (!stem)
46
+ return [];
47
+ const parts = symbol.split('.').map((p) => p.trim()).filter(Boolean);
48
+ const ids = new Set();
49
+ ids.add(makeGraphifyId(stem, symbol));
50
+ if (parts.length > 0)
51
+ ids.add(makeGraphifyId(stem, ...parts));
52
+ if (parts.length === 2) {
53
+ // Class method: make_id(class_id, method) ≈ make_id(stem, Class, method)
54
+ ids.add(makeGraphifyId(stem, parts[0], parts[1]));
55
+ }
56
+ return [...ids];
57
+ }
58
+ /**
59
+ * Anchor a subsystem component onto a graphify definition node.
60
+ */
61
+ export function resolveComponentAnchor(nodes, input) {
62
+ const file = input.file?.trim() ? normalizeSourcePath(input.file) : '';
63
+ const symbol = input.symbol?.trim() ?? '';
64
+ if (!file || !symbol) {
65
+ return { resolution: 'missing', node: null, candidates: [], triedIds: [] };
66
+ }
67
+ const byId = new Map();
68
+ const inFile = [];
69
+ for (const node of nodes) {
70
+ byId.set(String(node.id), node);
71
+ if (!isDefinition(node))
72
+ continue;
73
+ const sf = normalizeSourcePath(String(node.source_file ?? ''));
74
+ if (sf === file)
75
+ inFile.push(node);
76
+ }
77
+ const triedIds = candidateIdsFor(file, symbol);
78
+ const idHits = [];
79
+ for (const id of triedIds) {
80
+ const hit = byId.get(id);
81
+ if (!hit || !isDefinition(hit))
82
+ continue;
83
+ const sf = normalizeSourcePath(String(hit.source_file ?? ''));
84
+ if (sf === file)
85
+ idHits.push(hit);
86
+ }
87
+ const uniqueIdHits = [...new Map(idHits.map((n) => [String(n.id), n])).values()];
88
+ if (uniqueIdHits.length === 1) {
89
+ return {
90
+ resolution: 'exact',
91
+ node: uniqueIdHits[0],
92
+ candidates: [],
93
+ triedIds,
94
+ };
95
+ }
96
+ if (uniqueIdHits.length > 1) {
97
+ return {
98
+ resolution: 'ambiguous',
99
+ node: null,
100
+ candidates: uniqueIdHits,
101
+ triedIds,
102
+ };
103
+ }
104
+ if (inFile.length === 0) {
105
+ return { resolution: 'missing', node: null, candidates: [], triedIds };
106
+ }
107
+ const labelHits = inFile.filter((n) => labelMatchesSymbol(String(n.label ?? ''), symbol));
108
+ if (labelHits.length === 1) {
109
+ return {
110
+ resolution: 'exact',
111
+ node: labelHits[0],
112
+ candidates: [],
113
+ triedIds,
114
+ };
115
+ }
116
+ if (labelHits.length > 1) {
117
+ return {
118
+ resolution: 'ambiguous',
119
+ node: null,
120
+ candidates: labelHits,
121
+ triedIds,
122
+ };
123
+ }
124
+ // File has code nodes but none matched the symbol.
125
+ return {
126
+ resolution: 'file-only',
127
+ node: null,
128
+ candidates: inFile.slice(0, 8),
129
+ triedIds,
130
+ };
131
+ }
132
+ //# sourceMappingURL=anchor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anchor.js","sourceRoot":"","sources":["../../src/graphify/anchor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,210 @@
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
+ import type { GraphifyConfidence, GraphifyFileType, GraphifyRelation } from './types';
11
+ /** How a subsystem component resolved to a graphify node. */
12
+ export type GraphifyAnchorResolution = 'exact' | 'file-only' | 'ambiguous' | 'missing';
13
+ /**
14
+ * The bridge between a facet component and the graphify graph.
15
+ *
16
+ * `nodeId` is reconstructed from the component's `file` + `symbol` via the id
17
+ * slug scheme; `resolution` says how confident that reconstruction is.
18
+ * `source_file` + `source_location` are the "open the definition" primitive.
19
+ */
20
+ export interface SubsystemGraphifyAnchor {
21
+ /** Resolved graphify node id. */
22
+ nodeId: string;
23
+ /** PURL of the repo the node lives in (pkg:github/owner/repo). */
24
+ purl: string;
25
+ /** How the anchor resolved — the honesty signal for verification. */
26
+ resolution: GraphifyAnchorResolution;
27
+ /** Human-readable node label from the graph. */
28
+ label: string;
29
+ /** Repo-relative path of the node's source file. */
30
+ source_file: string;
31
+ /** `L<line>` — the line of the definition for a file-open jump. */
32
+ source_location?: string;
33
+ /** Node classification from the graph. */
34
+ file_type: GraphifyFileType;
35
+ /** Leiden community id. */
36
+ community?: number | null;
37
+ /** Human-readable community label. */
38
+ community_name?: string;
39
+ }
40
+ /** A method on a class-like node (`method` edge from the class). */
41
+ export interface GraphifyMethodInfo {
42
+ /** The method's own node id. */
43
+ nodeId: string;
44
+ /** Display name from the label (`.get()` → `get`). */
45
+ name: string;
46
+ /** Typed parameters from `references` edges with context `parameter_type`. */
47
+ parameters?: GraphifyParamInfo[];
48
+ /** Return type from a `references` edge with context `return_type`. */
49
+ returnType?: string;
50
+ /** Backing edge target for `returnType`, when the graph had one. */
51
+ returnTypeRef?: GraphifyReferenceInfo;
52
+ }
53
+ /** A property/field on a class- or type-like node. */
54
+ export interface GraphifyPropertyInfo {
55
+ /** Field name — present when graphify emits a `defines` node (C++). */
56
+ name: string;
57
+ /** Field type from a `references` edge with context `field`. */
58
+ type?: string;
59
+ /** Backing edge target for `type`, when the graph had one. */
60
+ typeRef?: GraphifyReferenceInfo;
61
+ /** The field's own node id when it exists (e.g. C++ `defines` nodes). */
62
+ nodeId?: string;
63
+ }
64
+ /**
65
+ * A single typed parameter of a function (`references` context `parameter_type`).
66
+ *
67
+ * `ref.nodeId` is the resolvable half: it targets the type's definition node
68
+ * when graphify resolved the reference, or a sourceless stub node when the
69
+ * name was ambiguous / external (see `resolveGraphifyTypeRef`).
70
+ */
71
+ export interface GraphifyParamInfo {
72
+ /** Parameter name — not captured by graphify; left undefined. */
73
+ name?: string;
74
+ /** Parameter type. */
75
+ type: string;
76
+ /** Backing `references[parameter_type|generic_arg]` edge target. */
77
+ ref?: GraphifyReferenceInfo;
78
+ }
79
+ /** One call relationship, in either direction. */
80
+ export interface GraphifyCallInfo {
81
+ /** The other endpoint's node id (caller for `callers`, callee for `callees`). */
82
+ nodeId: string;
83
+ /** The other endpoint's display label. */
84
+ name: string;
85
+ /** `L<line>` of the call site. */
86
+ source_location?: string;
87
+ }
88
+ /** A type-name reference to a node (`references` edge with a context). */
89
+ export interface GraphifyReferenceInfo {
90
+ /** The referenced node id. */
91
+ nodeId: string;
92
+ /** The referenced node's display label. */
93
+ name: string;
94
+ /** Reference context (e.g. `type`, `field`, `generic_arg`, `attribute`). */
95
+ context?: string;
96
+ /** `L<line>` of the reference site. */
97
+ source_location?: string;
98
+ }
99
+ /** An import relationship (`imports` / `imports_from` / `re_exports`). */
100
+ export interface GraphifyImportInfo {
101
+ /** The imported module/file node id. */
102
+ nodeId: string;
103
+ /** The imported module/file label. */
104
+ name: string;
105
+ /** Which relation carried the import. */
106
+ relation?: GraphifyRelation;
107
+ /** `L<line>` of the import statement. */
108
+ source_location?: string;
109
+ }
110
+ /** A class-like node: owns outgoing `method` edges. */
111
+ export interface GraphifyClassDetail {
112
+ kind: 'class';
113
+ /** Methods connected via `method` edges. */
114
+ methods: GraphifyMethodInfo[];
115
+ /** Fields from `defines`/`references` context `field`. */
116
+ properties: GraphifyPropertyInfo[];
117
+ /** `inherits` edge targets. */
118
+ extends: string[];
119
+ /** `implements` edge targets. */
120
+ implements: string[];
121
+ /** Incoming `calls` — graphify models constructor calls as calls into the class. */
122
+ instantiations: GraphifyCallInfo[];
123
+ /** Everywhere the type name is referenced (`references` edges). */
124
+ references: GraphifyReferenceInfo[];
125
+ }
126
+ /** A function-like node: label ends `name()` with no `method` edges. */
127
+ export interface GraphifyFunctionDetail {
128
+ kind: 'function';
129
+ /** Parameter types from `references` context `parameter_type`. */
130
+ parameters: GraphifyParamInfo[];
131
+ /** Return type from `references` context `return_type`. */
132
+ returnType?: string;
133
+ /** Backing edge target for `returnType`, when the graph had one. */
134
+ returnTypeRef?: GraphifyReferenceInfo;
135
+ /** Incoming `calls` edges. */
136
+ callers: GraphifyCallInfo[];
137
+ /** Outgoing `calls` edges. */
138
+ callees: GraphifyCallInfo[];
139
+ }
140
+ /** A type-like node (interface/struct): revealed by incoming `implements` edges. */
141
+ export interface GraphifyTypeDetail {
142
+ kind: 'type';
143
+ /** Struct/interface fields. */
144
+ properties: GraphifyPropertyInfo[];
145
+ /** Nodes referencing this type name. */
146
+ usedBy: GraphifyReferenceInfo[];
147
+ /** Nodes that `inherits`/`implements` this type. */
148
+ implementors: string[];
149
+ }
150
+ /** A module/file-like node: a `contains` target with a filename label. */
151
+ export interface GraphifyModuleDetail {
152
+ kind: 'module';
153
+ /** `re_exports` targets / contained public symbols. */
154
+ exports: string[];
155
+ /** `imports` / `imports_from` relationships. */
156
+ imports: GraphifyImportInfo[];
157
+ /** Symbols contained in the module (`contains` targets). */
158
+ symbols: string[];
159
+ }
160
+ /** A facet-only component with no graphify node (external consumer stub). */
161
+ export interface GraphifyExternalDetail {
162
+ kind: 'external';
163
+ /** Facet-only label; there is no backing graph data. */
164
+ label: string;
165
+ }
166
+ /**
167
+ * A retained-state node (`kind: 'store'`): state and its contract, no
168
+ * behavior. `kind` is the node's verifiable anchor — a store anchors to a
169
+ * *state location* (module consts, a file or db), not to a declaration.
170
+ * When a class manages the store's access, that is a SEPARATE node
171
+ * (`kind: 'class'`, methods = the access mechanism) joined by
172
+ * `writes`/`reads` — never merged into one hybrid node. This payload
173
+ * renders as state declarations (`declare const …`), never as a class
174
+ * stub.
175
+ */
176
+ export interface GraphifyStoreDetail {
177
+ kind: 'store';
178
+ /** The retained state members (module-level consts or class fields). */
179
+ properties: GraphifyPropertyInfo[];
180
+ }
181
+ /** A standalone method selected from its owning class. */
182
+ export interface GraphifyMethodDetail {
183
+ kind: 'method';
184
+ /** The class that owns this method. */
185
+ hostClass: string;
186
+ /** Parameter types from `references` context `parameter_type`. */
187
+ parameters?: GraphifyParamInfo[];
188
+ /** Return type from `references` context `return_type`. */
189
+ returnType?: string;
190
+ }
191
+ /**
192
+ * The drill-down payload for a subsystem component.
193
+ *
194
+ * The discriminant is derived from graph structure, not read off the node:
195
+ * method edges → class; `()` label + no method edges → function; incoming
196
+ * `implements` → type; else module. `external` covers consumer stubs.
197
+ * `method` covers standalone method components selected from a class.
198
+ */
199
+ export type GraphifyComponentDetail = GraphifyClassDetail | GraphifyFunctionDetail | GraphifyMethodDetail | GraphifyTypeDetail | GraphifyModuleDetail | GraphifyExternalDetail | GraphifyStoreDetail;
200
+ /** A raw graphify edge backing a facet claim (verification + provenance). */
201
+ export interface GraphifyEdgeRef {
202
+ source: string;
203
+ target: string;
204
+ relation: GraphifyRelation;
205
+ confidence: GraphifyConfidence;
206
+ confidence_score?: number;
207
+ source_file: string;
208
+ source_location?: string;
209
+ }
210
+ //# sourceMappingURL=consolidated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consolidated.d.ts","sourceRoot":"","sources":["../../src/graphify/consolidated.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
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
+ export {};
11
+ //# sourceMappingURL=consolidated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consolidated.js","sourceRoot":"","sources":["../../src/graphify/consolidated.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -0,0 +1,19 @@
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
+ /** Normalize one id string to graphify's canonical form. */
9
+ export declare function normalizeGraphifyId(s: string): string;
10
+ /** Build a canonical node id from path/symbol parts (graphify `make_id`). */
11
+ export declare function makeGraphifyId(...parts: string[]): string;
12
+ /**
13
+ * File stem used as the node-id prefix (graphify `_file_stem`):
14
+ * full path with extension dropped, posix separators.
15
+ */
16
+ export declare function graphifyFileStem(file: string): string;
17
+ /** Normalize a repo-relative path for source_file comparison. */
18
+ export declare function normalizeSourcePath(file: string): string;
19
+ //# sourceMappingURL=ids.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../../src/graphify/ids.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,4DAA4D;AAC5D,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAQrD;AAED,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAOzD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASrD;AAED,iEAAiE;AACjE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExD"}
@@ -0,0 +1,46 @@
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
+ /** Normalize one id string to graphify's canonical form. */
9
+ export function normalizeGraphifyId(s) {
10
+ let out = s.normalize("NFKC");
11
+ // JS has no Unicode casefold; lowercasing + second NFKC is close enough
12
+ // for the Latin/ASCII identifiers we resolve in practice.
13
+ out = out.toLowerCase().normalize("NFKC");
14
+ out = out.replace(/[^\w]+/gu, "_");
15
+ out = out.replace(/_+/g, "_");
16
+ return out.replace(/^_|_$/g, "");
17
+ }
18
+ /** Build a canonical node id from path/symbol parts (graphify `make_id`). */
19
+ export function makeGraphifyId(...parts) {
20
+ const joined = parts
21
+ .filter((p) => typeof p === "string" && p.length > 0)
22
+ .map((p) => p.replace(/^[_.]+|[_.]+$/g, ""))
23
+ .filter(Boolean)
24
+ .join("_");
25
+ return normalizeGraphifyId(joined);
26
+ }
27
+ /**
28
+ * File stem used as the node-id prefix (graphify `_file_stem`):
29
+ * full path with extension dropped, posix separators.
30
+ */
31
+ export function graphifyFileStem(file) {
32
+ const posix = file.replace(/\\/g, "/").replace(/^\.\//, "");
33
+ const lastSlash = posix.lastIndexOf("/");
34
+ const base = lastSlash >= 0 ? posix.slice(lastSlash + 1) : posix;
35
+ const dir = lastSlash >= 0 ? posix.slice(0, lastSlash + 1) : "";
36
+ if (!base || base === ".")
37
+ return "";
38
+ const dot = base.lastIndexOf(".");
39
+ const stemBase = dot > 0 ? base.slice(0, dot) : base;
40
+ return `${dir}${stemBase}`;
41
+ }
42
+ /** Normalize a repo-relative path for source_file comparison. */
43
+ export function normalizeSourcePath(file) {
44
+ return file.replace(/\\/g, "/").replace(/^\.\//, "").replace(/\/+/g, "/");
45
+ }
46
+ //# sourceMappingURL=ids.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ids.js","sourceRoot":"","sources":["../../src/graphify/ids.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,4DAA4D;AAC5D,MAAM,UAAU,mBAAmB,CAAC,CAAS;IAC5C,IAAI,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9B,wEAAwE;IACxE,0DAA0D;IAC1D,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC1C,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IACnC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC9B,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAClC,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,cAAc,CAAC,GAAG,KAAe;IAChD,MAAM,MAAM,GAAG,KAAK;SAClB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;SACpD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;SAC3C,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACjE,MAAM,GAAG,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,EAAE,CAAC;IACrC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrD,OAAO,GAAG,GAAG,GAAG,QAAQ,EAAE,CAAC;AAC5B,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC3E,CAAC"}
@@ -0,0 +1,18 @@
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
+ export type { JsonValue, GraphifyFileType, GraphifyConfidence, GraphifyNodeType, GraphifyRelation, GraphifyNode, GraphifyEdge, GraphifyHyperedge, GraphifyGraphMetadata, GraphifyGraph, } from './types';
8
+ export type { GraphifyAnchorResolution, SubsystemGraphifyAnchor, GraphifyMethodInfo, GraphifyPropertyInfo, GraphifyParamInfo, GraphifyCallInfo, GraphifyReferenceInfo, GraphifyImportInfo, GraphifyClassDetail, GraphifyFunctionDetail, GraphifyTypeDetail, GraphifyModuleDetail, GraphifyExternalDetail, GraphifyStoreDetail, GraphifyComponentDetail, GraphifyEdgeRef, } from './consolidated';
9
+ export type { GraphifyTypeRefStatus, GraphifyTypeRefResolution, } from './resolve';
10
+ export { normalizeGraphifyLabel, createGraphifyTypeResolver, resolveGraphifyTypeRef, } from './resolve';
11
+ export { normalizeGraphifyId, makeGraphifyId, graphifyFileStem, normalizeSourcePath, } from './ids';
12
+ export type { ComponentAnchorInput, ComponentAnchorResult, } from './anchor';
13
+ export { resolveComponentAnchor, symbolLabelVariants, } from './anchor';
14
+ export type { InferredGraphifyKind, InferGraphifyKindResult } from './kind';
15
+ export { inferGraphifyKind, kindsMatch } from './kind';
16
+ export type { GraphifyInferredSignature, ClaimedSignature, SignatureCompareResult, } from './signature';
17
+ export { extractNamedTypes, extractGraphifySignature, compareSignatures, } from './signature';
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/graphify/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY,EACV,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,uBAAuB,EACvB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,OAAO,CAAC;AACf,YAAY,EACV,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,QAAQ,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACvD,YAAY,EACV,yBAAyB,EACzB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,aAAa,CAAC"}
@@ -0,0 +1,12 @@
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
+ export { normalizeGraphifyLabel, createGraphifyTypeResolver, resolveGraphifyTypeRef, } from './resolve';
8
+ export { normalizeGraphifyId, makeGraphifyId, graphifyFileStem, normalizeSourcePath, } from './ids';
9
+ export { resolveComponentAnchor, symbolLabelVariants, } from './anchor';
10
+ export { inferGraphifyKind, kindsMatch } from './kind';
11
+ export { extractNamedTypes, extractGraphifySignature, compareSignatures, } from './signature';
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/graphify/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoCH,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,OAAO,CAAC;AAKf,OAAO,EACL,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAMvD,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,aAAa,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Infer a subsystem-style kind from a graphify node + edges.
3
+ *
4
+ * Graphify does not store `kind` on nodes (everything is `file_type: "code"`).
5
+ * Class vs function vs type is derived from structure — same rules as
6
+ * `GraphifyComponentDetail` in consolidated.ts.
7
+ */
8
+ import type { GraphifyEdge, GraphifyNode } from './types';
9
+ /** Kind inferred from graph structure (never read off the node). */
10
+ export type InferredGraphifyKind = 'class' | 'function' | 'method' | 'type' | 'module' | 'unknown';
11
+ export interface InferGraphifyKindResult {
12
+ kind: InferredGraphifyKind;
13
+ evidence: string[];
14
+ }
15
+ /**
16
+ * Infer kind for a definition node from its label and incident edges.
17
+ *
18
+ * Priority: class → method → function → type → module → unknown.
19
+ */
20
+ export declare function inferGraphifyKind(node: GraphifyNode, edges: readonly GraphifyEdge[]): InferGraphifyKindResult;
21
+ /** Strict claimed-vs-inferred check, with type-family compatibility. */
22
+ export declare function kindsMatch(claimed: string | undefined, inferred: InferredGraphifyKind): boolean;
23
+ //# sourceMappingURL=kind.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kind.d.ts","sourceRoot":"","sources":["../../src/graphify/kind.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE1D,oEAAoE;AACpE,MAAM,MAAM,oBAAoB,GAC7B,OAAO,GACP,UAAU,GACV,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,SAAS,CAAC;AAEb,MAAM,WAAW,uBAAuB;IACvC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACnB;AAqBD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAChC,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,SAAS,YAAY,EAAE,GAC5B,uBAAuB,CAqDzB;AAOD,wEAAwE;AACxE,wBAAgB,UAAU,CACzB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,QAAQ,EAAE,oBAAoB,GAC5B,OAAO,CAIT"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Infer a subsystem-style kind from a graphify node + edges.
3
+ *
4
+ * Graphify does not store `kind` on nodes (everything is `file_type: "code"`).
5
+ * Class vs function vs type is derived from structure — same rules as
6
+ * `GraphifyComponentDetail` in consolidated.ts.
7
+ */
8
+ const FILE_LABEL_RE = /\.(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;
9
+ function isMethodStyleLabel(label) {
10
+ return label.trim().startsWith('.');
11
+ }
12
+ function isCallStyleLabel(label) {
13
+ return label.trim().endsWith('()');
14
+ }
15
+ function isFilenameLabel(label, sourceFile) {
16
+ const trimmed = label.trim();
17
+ if (FILE_LABEL_RE.test(trimmed))
18
+ return true;
19
+ if (!sourceFile)
20
+ return false;
21
+ const base = sourceFile.replace(/\\/g, '/').split('/').pop() ?? '';
22
+ return !!base && trimmed === base;
23
+ }
24
+ /**
25
+ * Infer kind for a definition node from its label and incident edges.
26
+ *
27
+ * Priority: class → method → function → type → module → unknown.
28
+ */
29
+ export function inferGraphifyKind(node, edges) {
30
+ const id = String(node.id);
31
+ const label = String(node.label ?? '').trim();
32
+ const sourceFile = typeof node.source_file === 'string' ? node.source_file : '';
33
+ const evidence = [];
34
+ const outgoingMethod = edges.filter((e) => String(e.source) === id && e.relation === 'method');
35
+ if (outgoingMethod.length > 0) {
36
+ evidence.push(`${outgoingMethod.length} outgoing method edge(s)`);
37
+ return { kind: 'class', evidence };
38
+ }
39
+ const incomingMethod = edges.filter((e) => String(e.target) === id && e.relation === 'method');
40
+ if (incomingMethod.length > 0 && isMethodStyleLabel(label)) {
41
+ evidence.push(`incoming method edge from ${String(incomingMethod[0].source)}`, `label ${label}`);
42
+ return { kind: 'method', evidence };
43
+ }
44
+ if (isCallStyleLabel(label)) {
45
+ evidence.push(`call-style label ${label}`);
46
+ return { kind: 'function', evidence };
47
+ }
48
+ const incomingImplements = edges.filter((e) => String(e.target) === id && e.relation === 'implements');
49
+ if (incomingImplements.length > 0) {
50
+ evidence.push(`${incomingImplements.length} incoming implements edge(s)`);
51
+ return { kind: 'type', evidence };
52
+ }
53
+ if (node.type === 'module' || isFilenameLabel(label, sourceFile)) {
54
+ evidence.push(node.type === 'module'
55
+ ? 'node.type=module'
56
+ : `filename label ${label}`);
57
+ return { kind: 'module', evidence };
58
+ }
59
+ if (label)
60
+ evidence.push(`unclassified label ${label}`);
61
+ else
62
+ evidence.push('no classifying signals');
63
+ return { kind: 'unknown', evidence };
64
+ }
65
+ /** Type-family constructs all infer as the coarse 'type' — graph structure
66
+ * (implements/references edges) cannot sub-classify interface vs alias vs
67
+ * enum vs variable; only the source declaration can. */
68
+ const TYPE_FAMILY = new Set(['interface', 'type_alias', 'enum']);
69
+ /** Strict claimed-vs-inferred check, with type-family compatibility. */
70
+ export function kindsMatch(claimed, inferred) {
71
+ if (!claimed || claimed === 'external')
72
+ return true;
73
+ if (TYPE_FAMILY.has(claimed))
74
+ return inferred === 'type';
75
+ return claimed === inferred;
76
+ }
77
+ //# sourceMappingURL=kind.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kind.js","sourceRoot":"","sources":["../../src/graphify/kind.ts"],"names":[],"mappings":"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"}