@mastra/playground-ui 48.0.0-alpha.8 → 48.0.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 (616) hide show
  1. package/CHANGELOG.md +338 -0
  2. package/dist/{Button-Bm94fEF2.cjs → Button-B4Ixj2aW.cjs} +4 -3
  3. package/dist/Button-B4Ixj2aW.cjs.map +1 -0
  4. package/dist/{Button-Bx2lFdqb.js → Button-C-9Pzy-Z.js} +4 -3
  5. package/dist/Button-C-9Pzy-Z.js.map +1 -0
  6. package/dist/{Notice-B9cdEg8R.cjs → Notice-DSfh1Ap5.cjs} +2 -2
  7. package/dist/{Notice-B9cdEg8R.cjs.map → Notice-DSfh1Ap5.cjs.map} +1 -1
  8. package/dist/{Notice-DIK9IZsq.js → Notice-DWHQgxkA.js} +2 -2
  9. package/dist/{Notice-DIK9IZsq.js.map → Notice-DWHQgxkA.js.map} +1 -1
  10. package/dist/{SessionExpired-C5ADs4NL.cjs → SessionExpired-CL4bppLl.cjs} +2 -2
  11. package/dist/{SessionExpired-C5ADs4NL.cjs.map → SessionExpired-CL4bppLl.cjs.map} +1 -1
  12. package/dist/{SessionExpired-CHF__hq9.js → SessionExpired-qvMB5AP_.js} +2 -2
  13. package/dist/{SessionExpired-CHF__hq9.js.map → SessionExpired-qvMB5AP_.js.map} +1 -1
  14. package/dist/Shimmer.css +37 -0
  15. package/dist/{combobox-sa_Pxyl4.js → combobox-CH9vBToX.js} +2 -2
  16. package/dist/{combobox-sa_Pxyl4.js.map → combobox-CH9vBToX.js.map} +1 -1
  17. package/dist/{combobox-DXwbHjvQ.cjs → combobox-Z3NehlIY.cjs} +2 -2
  18. package/dist/{combobox-DXwbHjvQ.cjs.map → combobox-Z3NehlIY.cjs.map} +1 -1
  19. package/dist/{command-Duq1xsiS.js → command-BZ7S7MR-.js} +2 -2
  20. package/dist/{command-Duq1xsiS.js.map → command-BZ7S7MR-.js.map} +1 -1
  21. package/dist/{command-qsEykgml.cjs → command-DJwcGKv_.cjs} +2 -2
  22. package/dist/{command-qsEykgml.cjs.map → command-DJwcGKv_.cjs.map} +1 -1
  23. package/dist/components/AlertDialog.cjs.js +1 -1
  24. package/dist/components/AlertDialog.es.js +1 -1
  25. package/dist/components/Button.cjs.js +1 -1
  26. package/dist/components/Button.es.js +1 -1
  27. package/dist/components/ChatShell.cjs.js +10 -6
  28. package/dist/components/ChatShell.cjs.js.map +1 -1
  29. package/dist/components/ChatShell.es.js +10 -6
  30. package/dist/components/ChatShell.es.js.map +1 -1
  31. package/dist/components/ClampedText.cjs.js +1 -1
  32. package/dist/components/ClampedText.es.js +1 -1
  33. package/dist/components/CodeBlock.cjs.js +6 -5
  34. package/dist/components/CodeBlock.cjs.js.map +1 -1
  35. package/dist/components/CodeBlock.es.js +4 -3
  36. package/dist/components/CodeBlock.es.js.map +1 -1
  37. package/dist/components/CodeEditor.cjs.js +1 -1
  38. package/dist/components/CodeEditor.es.js +1 -1
  39. package/dist/components/Columns.cjs.js +1 -1
  40. package/dist/components/Columns.es.js +1 -1
  41. package/dist/components/Combobox.cjs.js +1 -1
  42. package/dist/components/Combobox.es.js +1 -1
  43. package/dist/components/Command.cjs.js +1 -1
  44. package/dist/components/Command.es.js +1 -1
  45. package/dist/components/CommandPalette.cjs.js +1 -1
  46. package/dist/components/CommandPalette.es.js +1 -1
  47. package/dist/components/CopyButton.cjs.js +1 -1
  48. package/dist/components/CopyButton.es.js +1 -1
  49. package/dist/components/DataCodeSection.cjs.js +1 -1
  50. package/dist/components/DataCodeSection.es.js +1 -1
  51. package/dist/components/DataDetailsPanel.cjs.js +2 -2
  52. package/dist/components/DataDetailsPanel.es.js +2 -2
  53. package/dist/components/DataFilter.cjs.js +2 -2
  54. package/dist/components/DataFilter.es.js +2 -2
  55. package/dist/components/DataList.cjs.js +2 -2
  56. package/dist/components/DataList.es.js +2 -2
  57. package/dist/components/DataPanel.cjs.js +1 -1
  58. package/dist/components/DataPanel.es.js +1 -1
  59. package/dist/components/DateRangeTimeline.cjs.js +1 -1
  60. package/dist/components/DateRangeTimeline.es.js +1 -1
  61. package/dist/components/DateTimePicker.cjs.js +2 -2
  62. package/dist/components/DateTimePicker.es.js +2 -2
  63. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  64. package/dist/components/DateTimeRangePicker.es.js +1 -1
  65. package/dist/components/Dialog.cjs.js +1 -1
  66. package/dist/components/Dialog.es.js +1 -1
  67. package/dist/components/Drawer.cjs.js +1 -1
  68. package/dist/components/Drawer.es.js +1 -1
  69. package/dist/components/DropdownMenu.cjs.js +1 -1
  70. package/dist/components/DropdownMenu.es.js +1 -1
  71. package/dist/components/EnvironmentVariablesEditor.cjs.js +4 -4
  72. package/dist/components/EnvironmentVariablesEditor.es.js +4 -4
  73. package/dist/components/ErrorBoundary.cjs.js +1 -1
  74. package/dist/components/ErrorBoundary.es.js +1 -1
  75. package/dist/components/FormFieldBlocks.cjs.js +2 -2
  76. package/dist/components/FormFieldBlocks.es.js +2 -2
  77. package/dist/components/HoverCard.cjs.js +1 -1
  78. package/dist/components/HoverCard.es.js +1 -1
  79. package/dist/components/InputGroup.cjs.js +1 -1
  80. package/dist/components/InputGroup.es.js +1 -1
  81. package/dist/components/JSONSchemaForm.cjs.js +2 -2
  82. package/dist/components/JSONSchemaForm.es.js +2 -2
  83. package/dist/components/KeyValueList.cjs.js +1 -1
  84. package/dist/components/KeyValueList.es.js +1 -1
  85. package/dist/components/ListSearch.cjs.js +1 -1
  86. package/dist/components/ListSearch.es.js +1 -1
  87. package/dist/components/MainSidebar.cjs.js +73 -50
  88. package/dist/components/MainSidebar.cjs.js.map +1 -1
  89. package/dist/components/MainSidebar.es.js +73 -50
  90. package/dist/components/MainSidebar.es.js.map +1 -1
  91. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  92. package/dist/components/MarkdownRenderer.es.js +1 -1
  93. package/dist/components/MessageScroller.cjs.js +1 -1
  94. package/dist/components/MessageScroller.es.js +1 -1
  95. package/dist/components/Notice.cjs.js +1 -1
  96. package/dist/components/Notice.es.js +1 -1
  97. package/dist/components/PrevNextNav.cjs.js +1 -1
  98. package/dist/components/PrevNextNav.es.js +1 -1
  99. package/dist/components/PropertyFilter.cjs.js +3 -3
  100. package/dist/components/PropertyFilter.es.js +4 -4
  101. package/dist/components/RuleBuilder.cjs.js +2 -2
  102. package/dist/components/RuleBuilder.es.js +2 -2
  103. package/dist/components/SankeyChart.cjs.js +10 -709
  104. package/dist/components/SankeyChart.cjs.js.map +1 -1
  105. package/dist/components/SankeyChart.es.js +2 -706
  106. package/dist/components/SankeyChart.es.js.map +1 -1
  107. package/dist/components/Select.cjs.js +1 -1
  108. package/dist/components/Select.es.js +1 -1
  109. package/dist/components/SessionExpired.cjs.js +1 -1
  110. package/dist/components/SessionExpired.es.js +1 -1
  111. package/dist/components/Shimmer.cjs.js +2 -15
  112. package/dist/components/Shimmer.cjs.js.map +1 -1
  113. package/dist/components/Shimmer.es.js +2 -15
  114. package/dist/components/Shimmer.es.js.map +1 -1
  115. package/dist/components/SideDialog.cjs.js +3 -3
  116. package/dist/components/SideDialog.es.js +3 -3
  117. package/dist/components/Tabs.cjs.js +4 -3
  118. package/dist/components/Tabs.cjs.js.map +1 -1
  119. package/dist/components/Tabs.es.js +2 -1
  120. package/dist/components/Tabs.es.js.map +1 -1
  121. package/dist/components/ThreadList.cjs.js +1 -1
  122. package/dist/components/ThreadList.es.js +1 -1
  123. package/dist/components/ThreadRail.cjs.js +6 -5
  124. package/dist/components/ThreadRail.cjs.js.map +1 -1
  125. package/dist/components/ThreadRail.es.js +6 -6
  126. package/dist/components/ThreadRail.es.js.map +1 -1
  127. package/dist/components/Truncate.cjs.js +1 -1
  128. package/dist/components/Truncate.es.js +1 -1
  129. package/dist/components/ai/ask-user.cjs.js +1 -1
  130. package/dist/components/ai/ask-user.es.js +1 -1
  131. package/dist/components/ai/plan.cjs.js +2 -2
  132. package/dist/components/ai/plan.es.js +2 -2
  133. package/dist/{copy-button-H2iaKMng.js → copy-button-B1GWIQ-x.js} +2 -2
  134. package/dist/{copy-button-H2iaKMng.js.map → copy-button-B1GWIQ-x.js.map} +1 -1
  135. package/dist/{copy-button-BKFcsNE1.cjs → copy-button-DwZ3c7D4.cjs} +2 -2
  136. package/dist/{copy-button-BKFcsNE1.cjs.map → copy-button-DwZ3c7D4.cjs.map} +1 -1
  137. package/dist/{data-code-section-D2zjah_b.cjs → data-code-section-BjmFgJpC.cjs} +5 -5
  138. package/dist/{data-code-section-D2zjah_b.cjs.map → data-code-section-BjmFgJpC.cjs.map} +1 -1
  139. package/dist/{data-code-section-MHMkC6q9.js → data-code-section-PJM5l3aS.js} +5 -5
  140. package/dist/{data-code-section-MHMkC6q9.js.map → data-code-section-PJM5l3aS.js.map} +1 -1
  141. package/dist/{data-list-CnQRIUyN.js → data-list-CnQWE0QP.js} +2 -2
  142. package/dist/{data-list-CnQRIUyN.js.map → data-list-CnQWE0QP.js.map} +1 -1
  143. package/dist/{data-list-Cb-piK4z.cjs → data-list-Cnnnx_vD.cjs} +2 -2
  144. package/dist/{data-list-Cb-piK4z.cjs.map → data-list-Cnnnx_vD.cjs.map} +1 -1
  145. package/dist/{data-panel-BEvHk4wg.js → data-panel-BQqPr6ew.js} +3 -3
  146. package/dist/{data-panel-BEvHk4wg.js.map → data-panel-BQqPr6ew.js.map} +1 -1
  147. package/dist/{data-panel-BumsjXVz.cjs → data-panel-C85h9XvH.cjs} +3 -3
  148. package/dist/{data-panel-BumsjXVz.cjs.map → data-panel-C85h9XvH.cjs.map} +1 -1
  149. package/dist/{date-time-range-picker-yJBIm34J.js → date-time-range-picker-BQpZVrH7.js} +4 -4
  150. package/dist/{date-time-range-picker-yJBIm34J.js.map → date-time-range-picker-BQpZVrH7.js.map} +1 -1
  151. package/dist/{date-time-range-picker-ue0m5G27.cjs → date-time-range-picker-sT6pHDmU.cjs} +4 -4
  152. package/dist/{date-time-range-picker-ue0m5G27.cjs.map → date-time-range-picker-sT6pHDmU.cjs.map} +1 -1
  153. package/dist/{dialog-ClItuCFY.cjs → dialog-5ZYCeKf-.cjs} +2 -2
  154. package/dist/{dialog-ClItuCFY.cjs.map → dialog-5ZYCeKf-.cjs.map} +1 -1
  155. package/dist/{dialog-bnt6epW2.js → dialog-DDXW5M21.js} +2 -2
  156. package/dist/{dialog-bnt6epW2.js.map → dialog-DDXW5M21.js.map} +1 -1
  157. package/dist/domains/logs/components/log-details-view.cjs.js +2 -2
  158. package/dist/domains/logs/components/log-details-view.es.js +2 -2
  159. package/dist/domains/logs/components/logs-error-content.cjs.js +1 -1
  160. package/dist/domains/logs/components/logs-error-content.es.js +1 -1
  161. package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
  162. package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
  163. package/dist/domains/logs/components/no-logs-info.cjs.js +1 -1
  164. package/dist/domains/logs/components/no-logs-info.es.js +1 -1
  165. package/dist/domains/memory/components/flame-graph.cjs.js +1 -1
  166. package/dist/domains/memory/components/flame-graph.es.js +1 -1
  167. package/dist/domains/memory/components/memory-studio-panel.cjs.js +1 -1
  168. package/dist/domains/memory/components/memory-studio-panel.es.js +1 -1
  169. package/dist/domains/metrics/components/card-action-buttons.cjs.js +1 -1
  170. package/dist/domains/metrics/components/card-action-buttons.es.js +1 -1
  171. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  172. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  173. package/dist/domains/metrics/components/latency-card-view.cjs.js +4 -3
  174. package/dist/domains/metrics/components/latency-card-view.cjs.js.map +1 -1
  175. package/dist/domains/metrics/components/latency-card-view.es.js +2 -1
  176. package/dist/domains/metrics/components/latency-card-view.es.js.map +1 -1
  177. package/dist/domains/metrics/components/memory-card-view.cjs.js +5 -4
  178. package/dist/domains/metrics/components/memory-card-view.cjs.js.map +1 -1
  179. package/dist/domains/metrics/components/memory-card-view.es.js +3 -2
  180. package/dist/domains/metrics/components/memory-card-view.es.js.map +1 -1
  181. package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js +1 -1
  182. package/dist/domains/metrics/components/model-usage-cost-card-view.es.js +1 -1
  183. package/dist/domains/metrics/components/scores-card-view.cjs.js +5 -4
  184. package/dist/domains/metrics/components/scores-card-view.cjs.js.map +1 -1
  185. package/dist/domains/metrics/components/scores-card-view.es.js +3 -2
  186. package/dist/domains/metrics/components/scores-card-view.es.js.map +1 -1
  187. package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js +4 -3
  188. package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js.map +1 -1
  189. package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js +2 -1
  190. package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js.map +1 -1
  191. package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js +4 -3
  192. package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js.map +1 -1
  193. package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js +2 -1
  194. package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js.map +1 -1
  195. package/dist/domains/metrics/components/traces-volume-card-view.cjs.js +4 -3
  196. package/dist/domains/metrics/components/traces-volume-card-view.cjs.js.map +1 -1
  197. package/dist/domains/metrics/components/traces-volume-card-view.es.js +2 -1
  198. package/dist/domains/metrics/components/traces-volume-card-view.es.js.map +1 -1
  199. package/dist/domains/traces/components/no-traces-info.cjs.js +1 -1
  200. package/dist/domains/traces/components/no-traces-info.es.js +1 -1
  201. package/dist/domains/traces/components/shared.cjs.js +8 -0
  202. package/dist/domains/traces/components/shared.cjs.js.map +1 -1
  203. package/dist/domains/traces/components/shared.es.js +8 -0
  204. package/dist/domains/traces/components/shared.es.js.map +1 -1
  205. package/dist/domains/traces/components/span-data-panel-view.cjs.js +6 -5
  206. package/dist/domains/traces/components/span-data-panel-view.cjs.js.map +1 -1
  207. package/dist/domains/traces/components/span-data-panel-view.es.js +4 -3
  208. package/dist/domains/traces/components/span-data-panel-view.es.js.map +1 -1
  209. package/dist/domains/traces/components/timeline-name-col.cjs.js +6 -2
  210. package/dist/domains/traces/components/timeline-name-col.cjs.js.map +1 -1
  211. package/dist/domains/traces/components/timeline-name-col.es.js +6 -2
  212. package/dist/domains/traces/components/timeline-name-col.es.js.map +1 -1
  213. package/dist/domains/traces/components/timeline-timing-col.cjs.js +1 -1
  214. package/dist/domains/traces/components/timeline-timing-col.es.js +1 -1
  215. package/dist/domains/traces/components/trace-columns-menu.cjs.js +3 -3
  216. package/dist/domains/traces/components/trace-columns-menu.es.js +3 -3
  217. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +4 -10
  218. package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
  219. package/dist/domains/traces/components/trace-data-panel-view.es.js +5 -11
  220. package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
  221. package/dist/domains/traces/components/traces-error-content.cjs.js +1 -1
  222. package/dist/domains/traces/components/traces-error-content.es.js +1 -1
  223. package/dist/domains/traces/components/traces-list-mode-toggle.cjs.js +2 -2
  224. package/dist/domains/traces/components/traces-list-mode-toggle.es.js +2 -2
  225. package/dist/domains/traces/components/traces-list-view.cjs.js +2 -2
  226. package/dist/domains/traces/components/traces-list-view.es.js +2 -2
  227. package/dist/domains/traces/components/traces-toolbar.cjs.js +1 -1
  228. package/dist/domains/traces/components/traces-toolbar.es.js +1 -1
  229. package/dist/domains/traces/hooks/use-entity-names.cjs.js +12 -4
  230. package/dist/domains/traces/hooks/use-entity-names.cjs.js.map +1 -1
  231. package/dist/domains/traces/hooks/use-entity-names.es.js +12 -4
  232. package/dist/domains/traces/hooks/use-entity-names.es.js.map +1 -1
  233. package/dist/{drawer-DZ9amYo_.js → drawer-C8jNXutE.js} +2 -2
  234. package/dist/{drawer-DZ9amYo_.js.map → drawer-C8jNXutE.js.map} +1 -1
  235. package/dist/{drawer-CdsTitFp.cjs → drawer-CNnvBMfD.cjs} +2 -2
  236. package/dist/{drawer-CdsTitFp.cjs.map → drawer-CNnvBMfD.cjs.map} +1 -1
  237. package/dist/{dropdown-menu-ppWztidX.cjs → dropdown-menu-BZGlERgf.cjs} +4 -3
  238. package/dist/dropdown-menu-BZGlERgf.cjs.map +1 -0
  239. package/dist/{dropdown-menu-DEFygDZI.js → dropdown-menu-DCMh8P4w.js} +4 -3
  240. package/dist/dropdown-menu-DCMh8P4w.js.map +1 -0
  241. package/dist/ee/signals/components/signals-empty-state.cjs.js +1 -1
  242. package/dist/ee/signals/components/signals-empty-state.es.js +1 -1
  243. package/dist/ee/signals/entity-learning-api.cjs.js +113 -0
  244. package/dist/ee/signals/entity-learning-api.cjs.js.map +1 -0
  245. package/dist/ee/signals/entity-learning-api.d.ts +2 -0
  246. package/dist/ee/signals/entity-learning-api.es.js +99 -0
  247. package/dist/ee/signals/entity-learning-api.es.js.map +1 -0
  248. package/dist/ee/signals/examples-pager.cjs.js +49 -0
  249. package/dist/ee/signals/examples-pager.cjs.js.map +1 -0
  250. package/dist/ee/signals/examples-pager.d.ts +2 -0
  251. package/dist/ee/signals/examples-pager.es.js +44 -0
  252. package/dist/ee/signals/examples-pager.es.js.map +1 -0
  253. package/dist/ee/signals/flow-card.cjs.js +105 -0
  254. package/dist/ee/signals/flow-card.cjs.js.map +1 -0
  255. package/dist/ee/signals/flow-card.d.ts +2 -0
  256. package/dist/ee/signals/flow-card.es.js +101 -0
  257. package/dist/ee/signals/flow-card.es.js.map +1 -0
  258. package/dist/ee/signals/hooks/theme-query-guards.cjs.js +20 -0
  259. package/dist/ee/signals/hooks/theme-query-guards.cjs.js.map +1 -0
  260. package/dist/ee/signals/hooks/theme-query-guards.d.ts +2 -0
  261. package/dist/ee/signals/hooks/theme-query-guards.es.js +14 -0
  262. package/dist/ee/signals/hooks/theme-query-guards.es.js.map +1 -0
  263. package/dist/ee/signals/hooks/use-entity-learning-progress.cjs.js +19 -0
  264. package/dist/ee/signals/hooks/use-entity-learning-progress.cjs.js.map +1 -0
  265. package/dist/ee/signals/hooks/use-entity-learning-progress.d.ts +2 -0
  266. package/dist/ee/signals/hooks/use-entity-learning-progress.es.js +15 -0
  267. package/dist/ee/signals/hooks/use-entity-learning-progress.es.js.map +1 -0
  268. package/dist/ee/signals/hooks/use-noise-examples.cjs.js +32 -0
  269. package/dist/ee/signals/hooks/use-noise-examples.cjs.js.map +1 -0
  270. package/dist/ee/signals/hooks/use-noise-examples.d.ts +2 -0
  271. package/dist/ee/signals/hooks/use-noise-examples.es.js +28 -0
  272. package/dist/ee/signals/hooks/use-noise-examples.es.js.map +1 -0
  273. package/dist/ee/signals/hooks/use-noise.cjs.js +22 -0
  274. package/dist/ee/signals/hooks/use-noise.cjs.js.map +1 -0
  275. package/dist/ee/signals/hooks/use-noise.d.ts +2 -0
  276. package/dist/ee/signals/hooks/use-noise.es.js +18 -0
  277. package/dist/ee/signals/hooks/use-noise.es.js.map +1 -0
  278. package/dist/ee/signals/hooks/use-snapshot-playback.cjs.js +22 -0
  279. package/dist/ee/signals/hooks/use-snapshot-playback.cjs.js.map +1 -0
  280. package/dist/ee/signals/hooks/use-snapshot-playback.d.ts +2 -0
  281. package/dist/ee/signals/hooks/use-snapshot-playback.es.js +18 -0
  282. package/dist/ee/signals/hooks/use-snapshot-playback.es.js.map +1 -0
  283. package/dist/ee/signals/hooks/use-theme-detail.cjs.js +27 -0
  284. package/dist/ee/signals/hooks/use-theme-detail.cjs.js.map +1 -0
  285. package/dist/ee/signals/hooks/use-theme-detail.d.ts +2 -0
  286. package/dist/ee/signals/hooks/use-theme-detail.es.js +23 -0
  287. package/dist/ee/signals/hooks/use-theme-detail.es.js.map +1 -0
  288. package/dist/ee/signals/hooks/use-theme-entities.cjs.js +18 -0
  289. package/dist/ee/signals/hooks/use-theme-entities.cjs.js.map +1 -0
  290. package/dist/ee/signals/hooks/use-theme-entities.d.ts +2 -0
  291. package/dist/ee/signals/hooks/use-theme-entities.es.js +14 -0
  292. package/dist/ee/signals/hooks/use-theme-entities.es.js.map +1 -0
  293. package/dist/ee/signals/hooks/use-theme-examples.cjs.js +40 -0
  294. package/dist/ee/signals/hooks/use-theme-examples.cjs.js.map +1 -0
  295. package/dist/ee/signals/hooks/use-theme-examples.d.ts +2 -0
  296. package/dist/ee/signals/hooks/use-theme-examples.es.js +36 -0
  297. package/dist/ee/signals/hooks/use-theme-examples.es.js.map +1 -0
  298. package/dist/ee/signals/hooks/use-theme-flow.cjs.js +23 -0
  299. package/dist/ee/signals/hooks/use-theme-flow.cjs.js.map +1 -0
  300. package/dist/ee/signals/hooks/use-theme-flow.d.ts +2 -0
  301. package/dist/ee/signals/hooks/use-theme-flow.es.js +19 -0
  302. package/dist/ee/signals/hooks/use-theme-flow.es.js.map +1 -0
  303. package/dist/ee/signals/hooks/use-theme-flows.cjs.js +22 -0
  304. package/dist/ee/signals/hooks/use-theme-flows.cjs.js.map +1 -0
  305. package/dist/ee/signals/hooks/use-theme-flows.d.ts +2 -0
  306. package/dist/ee/signals/hooks/use-theme-flows.es.js +18 -0
  307. package/dist/ee/signals/hooks/use-theme-flows.es.js.map +1 -0
  308. package/dist/ee/signals/hooks/use-theme-history.cjs.js +20 -0
  309. package/dist/ee/signals/hooks/use-theme-history.cjs.js.map +1 -0
  310. package/dist/ee/signals/hooks/use-theme-history.d.ts +2 -0
  311. package/dist/ee/signals/hooks/use-theme-history.es.js +16 -0
  312. package/dist/ee/signals/hooks/use-theme-history.es.js.map +1 -0
  313. package/dist/ee/signals/hooks/use-theme-paths.cjs.js +21 -0
  314. package/dist/ee/signals/hooks/use-theme-paths.cjs.js.map +1 -0
  315. package/dist/ee/signals/hooks/use-theme-paths.d.ts +2 -0
  316. package/dist/ee/signals/hooks/use-theme-paths.es.js +17 -0
  317. package/dist/ee/signals/hooks/use-theme-paths.es.js.map +1 -0
  318. package/dist/ee/signals/hooks/use-theme-snapshots.cjs.js +22 -0
  319. package/dist/ee/signals/hooks/use-theme-snapshots.cjs.js.map +1 -0
  320. package/dist/ee/signals/hooks/use-theme-snapshots.d.ts +2 -0
  321. package/dist/ee/signals/hooks/use-theme-snapshots.es.js +18 -0
  322. package/dist/ee/signals/hooks/use-theme-snapshots.es.js.map +1 -0
  323. package/dist/ee/signals/hooks/use-trace-insight.cjs.js +21 -0
  324. package/dist/ee/signals/hooks/use-trace-insight.cjs.js.map +1 -0
  325. package/dist/ee/signals/hooks/use-trace-insight.d.ts +2 -0
  326. package/dist/ee/signals/hooks/use-trace-insight.es.js +17 -0
  327. package/dist/ee/signals/hooks/use-trace-insight.es.js.map +1 -0
  328. package/dist/ee/signals/hooks.cjs.js +30 -0
  329. package/dist/ee/signals/hooks.cjs.js.map +1 -0
  330. package/dist/ee/signals/hooks.d.ts +2 -0
  331. package/dist/ee/signals/hooks.es.js +12 -0
  332. package/dist/ee/signals/hooks.es.js.map +1 -0
  333. package/dist/ee/signals/lifeline-point.cjs.js +73 -0
  334. package/dist/ee/signals/lifeline-point.cjs.js.map +1 -0
  335. package/dist/ee/signals/lifeline-point.d.ts +2 -0
  336. package/dist/ee/signals/lifeline-point.es.js +69 -0
  337. package/dist/ee/signals/lifeline-point.es.js.map +1 -0
  338. package/dist/ee/signals/lifeline-row.cjs.js +118 -0
  339. package/dist/ee/signals/lifeline-row.cjs.js.map +1 -0
  340. package/dist/ee/signals/lifeline-row.d.ts +2 -0
  341. package/dist/ee/signals/lifeline-row.es.js +114 -0
  342. package/dist/ee/signals/lifeline-row.es.js.map +1 -0
  343. package/dist/ee/signals/noise-detail-panel.cjs.js +96 -0
  344. package/dist/ee/signals/noise-detail-panel.cjs.js.map +1 -0
  345. package/dist/ee/signals/noise-detail-panel.d.ts +2 -0
  346. package/dist/ee/signals/noise-detail-panel.es.js +92 -0
  347. package/dist/ee/signals/noise-detail-panel.es.js.map +1 -0
  348. package/dist/ee/signals/sankey-signals-data.cjs.js +138 -0
  349. package/dist/ee/signals/sankey-signals-data.cjs.js.map +1 -0
  350. package/dist/ee/signals/sankey-signals-data.d.ts +2 -0
  351. package/dist/ee/signals/sankey-signals-data.es.js +127 -0
  352. package/dist/ee/signals/sankey-signals-data.es.js.map +1 -0
  353. package/dist/ee/signals/sankey-signals.cjs.js +367 -0
  354. package/dist/ee/signals/sankey-signals.cjs.js.map +1 -0
  355. package/dist/ee/signals/sankey-signals.d.ts +2 -0
  356. package/dist/ee/signals/sankey-signals.es.js +363 -0
  357. package/dist/ee/signals/sankey-signals.es.js.map +1 -0
  358. package/dist/ee/signals/signal-delta-column.cjs.js +90 -0
  359. package/dist/ee/signals/signal-delta-column.cjs.js.map +1 -0
  360. package/dist/ee/signals/signal-delta-column.d.ts +2 -0
  361. package/dist/ee/signals/signal-delta-column.es.js +86 -0
  362. package/dist/ee/signals/signal-delta-column.es.js.map +1 -0
  363. package/dist/ee/signals/signal-formatting.cjs.js +83 -0
  364. package/dist/ee/signals/signal-formatting.cjs.js.map +1 -0
  365. package/dist/ee/signals/signal-formatting.d.ts +2 -0
  366. package/dist/ee/signals/signal-formatting.es.js +70 -0
  367. package/dist/ee/signals/signal-formatting.es.js.map +1 -0
  368. package/dist/ee/signals/signal-lifelines.cjs.js +69 -0
  369. package/dist/ee/signals/signal-lifelines.cjs.js.map +1 -0
  370. package/dist/ee/signals/signal-lifelines.d.ts +2 -0
  371. package/dist/ee/signals/signal-lifelines.es.js +65 -0
  372. package/dist/ee/signals/signal-lifelines.es.js.map +1 -0
  373. package/dist/ee/signals/signals-error-state.cjs.js +28 -0
  374. package/dist/ee/signals/signals-error-state.cjs.js.map +1 -0
  375. package/dist/ee/signals/signals-error-state.d.ts +2 -0
  376. package/dist/ee/signals/signals-error-state.es.js +24 -0
  377. package/dist/ee/signals/signals-error-state.es.js.map +1 -0
  378. package/dist/ee/signals/signals-loading-skeleton.cjs.js +57 -0
  379. package/dist/ee/signals/signals-loading-skeleton.cjs.js.map +1 -0
  380. package/dist/ee/signals/signals-loading-skeleton.d.ts +2 -0
  381. package/dist/ee/signals/signals-loading-skeleton.es.js +52 -0
  382. package/dist/ee/signals/signals-loading-skeleton.es.js.map +1 -0
  383. package/dist/ee/signals/snapshot-timeline-data.cjs.js +40 -0
  384. package/dist/ee/signals/snapshot-timeline-data.cjs.js.map +1 -0
  385. package/dist/ee/signals/snapshot-timeline-data.d.ts +2 -0
  386. package/dist/ee/signals/snapshot-timeline-data.es.js +34 -0
  387. package/dist/ee/signals/snapshot-timeline-data.es.js.map +1 -0
  388. package/dist/ee/signals/snapshot-timeline.cjs.js +109 -0
  389. package/dist/ee/signals/snapshot-timeline.cjs.js.map +1 -0
  390. package/dist/ee/signals/snapshot-timeline.d.ts +2 -0
  391. package/dist/ee/signals/snapshot-timeline.es.js +104 -0
  392. package/dist/ee/signals/snapshot-timeline.es.js.map +1 -0
  393. package/dist/ee/signals/sortable-signal-headers.cjs.js +145 -0
  394. package/dist/ee/signals/sortable-signal-headers.cjs.js.map +1 -0
  395. package/dist/ee/signals/sortable-signal-headers.d.ts +2 -0
  396. package/dist/ee/signals/sortable-signal-headers.es.js +141 -0
  397. package/dist/ee/signals/sortable-signal-headers.es.js.map +1 -0
  398. package/dist/ee/signals/theme-compare-data.cjs.js +46 -0
  399. package/dist/ee/signals/theme-compare-data.cjs.js.map +1 -0
  400. package/dist/ee/signals/theme-compare-data.d.ts +2 -0
  401. package/dist/ee/signals/theme-compare-data.es.js +41 -0
  402. package/dist/ee/signals/theme-compare-data.es.js.map +1 -0
  403. package/dist/ee/signals/theme-compare-sparkline.cjs.js +67 -0
  404. package/dist/ee/signals/theme-compare-sparkline.cjs.js.map +1 -0
  405. package/dist/ee/signals/theme-compare-sparkline.d.ts +2 -0
  406. package/dist/ee/signals/theme-compare-sparkline.es.js +63 -0
  407. package/dist/ee/signals/theme-compare-sparkline.es.js.map +1 -0
  408. package/dist/ee/signals/theme-compare.cjs.js +103 -0
  409. package/dist/ee/signals/theme-compare.cjs.js.map +1 -0
  410. package/dist/ee/signals/theme-compare.d.ts +2 -0
  411. package/dist/ee/signals/theme-compare.es.js +99 -0
  412. package/dist/ee/signals/theme-compare.es.js.map +1 -0
  413. package/dist/ee/signals/theme-detail-panel.cjs.js +171 -0
  414. package/dist/ee/signals/theme-detail-panel.cjs.js.map +1 -0
  415. package/dist/ee/signals/theme-detail-panel.d.ts +2 -0
  416. package/dist/ee/signals/theme-detail-panel.es.js +167 -0
  417. package/dist/ee/signals/theme-detail-panel.es.js.map +1 -0
  418. package/dist/ee/signals/theme-drilldown-data.cjs.js +115 -0
  419. package/dist/ee/signals/theme-drilldown-data.cjs.js.map +1 -0
  420. package/dist/ee/signals/theme-drilldown-data.d.ts +2 -0
  421. package/dist/ee/signals/theme-drilldown-data.es.js +109 -0
  422. package/dist/ee/signals/theme-drilldown-data.es.js.map +1 -0
  423. package/dist/ee/signals/theme-filter-banner.cjs.js +64 -0
  424. package/dist/ee/signals/theme-filter-banner.cjs.js.map +1 -0
  425. package/dist/ee/signals/theme-filter-banner.d.ts +2 -0
  426. package/dist/ee/signals/theme-filter-banner.es.js +60 -0
  427. package/dist/ee/signals/theme-filter-banner.es.js.map +1 -0
  428. package/dist/ee/signals/theme-lifelines-data.cjs.js +62 -0
  429. package/dist/ee/signals/theme-lifelines-data.cjs.js.map +1 -0
  430. package/dist/ee/signals/theme-lifelines-data.d.ts +2 -0
  431. package/dist/ee/signals/theme-lifelines-data.es.js +56 -0
  432. package/dist/ee/signals/theme-lifelines-data.es.js.map +1 -0
  433. package/dist/ee/signals/theme-lifelines.cjs.js +75 -0
  434. package/dist/ee/signals/theme-lifelines.cjs.js.map +1 -0
  435. package/dist/ee/signals/theme-lifelines.d.ts +2 -0
  436. package/dist/ee/signals/theme-lifelines.es.js +71 -0
  437. package/dist/ee/signals/theme-lifelines.es.js.map +1 -0
  438. package/dist/ee/signals/theme-trend-chart.cjs.js +83 -0
  439. package/dist/ee/signals/theme-trend-chart.cjs.js.map +1 -0
  440. package/dist/ee/signals/theme-trend-chart.d.ts +2 -0
  441. package/dist/ee/signals/theme-trend-chart.es.js +79 -0
  442. package/dist/ee/signals/theme-trend-chart.es.js.map +1 -0
  443. package/dist/ee/signals/theme-trend.cjs.js +27 -0
  444. package/dist/ee/signals/theme-trend.cjs.js.map +1 -0
  445. package/dist/ee/signals/theme-trend.d.ts +2 -0
  446. package/dist/ee/signals/theme-trend.es.js +22 -0
  447. package/dist/ee/signals/theme-trend.es.js.map +1 -0
  448. package/dist/ee/signals/trace-insight-view.cjs.js +89 -0
  449. package/dist/ee/signals/trace-insight-view.cjs.js.map +1 -0
  450. package/dist/ee/signals/trace-insight-view.d.ts +2 -0
  451. package/dist/ee/signals/trace-insight-view.es.js +85 -0
  452. package/dist/ee/signals/trace-insight-view.es.js.map +1 -0
  453. package/dist/ee/signals/trace-intelligence-context.cjs.js +24 -0
  454. package/dist/ee/signals/trace-intelligence-context.cjs.js.map +1 -0
  455. package/dist/ee/signals/trace-intelligence-context.d.ts +2 -0
  456. package/dist/ee/signals/trace-intelligence-context.es.js +19 -0
  457. package/dist/ee/signals/trace-intelligence-context.es.js.map +1 -0
  458. package/dist/ee/signals/trace-intelligence-explainer.cjs.js +45 -0
  459. package/dist/ee/signals/trace-intelligence-explainer.cjs.js.map +1 -0
  460. package/dist/ee/signals/trace-intelligence-explainer.d.ts +2 -0
  461. package/dist/ee/signals/trace-intelligence-explainer.es.js +41 -0
  462. package/dist/ee/signals/trace-intelligence-explainer.es.js.map +1 -0
  463. package/dist/ee/signals/trace-intelligence-provider.cjs.js +19 -0
  464. package/dist/ee/signals/trace-intelligence-provider.cjs.js.map +1 -0
  465. package/dist/ee/signals/trace-intelligence-provider.d.ts +2 -0
  466. package/dist/ee/signals/trace-intelligence-provider.es.js +15 -0
  467. package/dist/ee/signals/trace-intelligence-provider.es.js.map +1 -0
  468. package/dist/ee/signals/types.cjs.js +3 -0
  469. package/dist/ee/signals/types.cjs.js.map +1 -0
  470. package/dist/ee/signals/types.d.ts +2 -0
  471. package/dist/ee/signals/types.es.js +2 -0
  472. package/dist/ee/signals/types.es.js.map +1 -0
  473. package/dist/ee/signals/use-trace-intelligence.cjs.js +13 -0
  474. package/dist/ee/signals/use-trace-intelligence.cjs.js.map +1 -0
  475. package/dist/ee/signals/use-trace-intelligence.d.ts +2 -0
  476. package/dist/ee/signals/use-trace-intelligence.es.js +9 -0
  477. package/dist/ee/signals/use-trace-intelligence.es.js.map +1 -0
  478. package/dist/ee/signals/view-mode-tab.cjs.js +18 -0
  479. package/dist/ee/signals/view-mode-tab.cjs.js.map +1 -0
  480. package/dist/ee/signals/view-mode-tab.d.ts +2 -0
  481. package/dist/ee/signals/view-mode-tab.es.js +14 -0
  482. package/dist/ee/signals/view-mode-tab.es.js.map +1 -0
  483. package/dist/ee/signals.cjs.js +38 -0
  484. package/dist/ee/signals.cjs.js.map +1 -1
  485. package/dist/ee/signals.es.js +18 -0
  486. package/dist/ee/signals.es.js.map +1 -1
  487. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +3 -3
  488. package/dist/ee/topics/components/topic-trace-summary-list.es.js +3 -3
  489. package/dist/{hover-card-crVofiZO.js → hover-card-Bs845QbV.js} +2 -2
  490. package/dist/{hover-card-crVofiZO.js.map → hover-card-Bs845QbV.js.map} +1 -1
  491. package/dist/{hover-card-Bx258om1.cjs → hover-card-Cd9QK50X.cjs} +2 -2
  492. package/dist/{hover-card-Bx258om1.cjs.map → hover-card-Cd9QK50X.cjs.map} +1 -1
  493. package/dist/{input-group-CH72YUVL.cjs → input-group-BTaw3Ycd.cjs} +2 -2
  494. package/dist/{input-group-CH72YUVL.cjs.map → input-group-BTaw3Ycd.cjs.map} +1 -1
  495. package/dist/{input-group-Dzs-ai0n.js → input-group-CWT_IwX0.js} +2 -2
  496. package/dist/{input-group-Dzs-ai0n.js.map → input-group-CWT_IwX0.js.map} +1 -1
  497. package/dist/{markdown-renderer-Bi2fWeoF.js → markdown-renderer-DszxuuNM.js} +36 -18
  498. package/dist/markdown-renderer-DszxuuNM.js.map +1 -0
  499. package/dist/{markdown-renderer-DwfNrhEH.cjs → markdown-renderer-g8xNLOc0.cjs} +36 -18
  500. package/dist/markdown-renderer-g8xNLOc0.cjs.map +1 -0
  501. package/dist/{message-scroller-BmzjZZNs.cjs → message-scroller-BssU0EKT.cjs} +89 -16
  502. package/dist/message-scroller-BssU0EKT.cjs.map +1 -0
  503. package/dist/{message-scroller-D5O7sUS5.js → message-scroller-DlVS0FW7.js} +89 -16
  504. package/dist/message-scroller-DlVS0FW7.js.map +1 -0
  505. package/dist/{property-filter-applied-DI4w1ACS.js → property-filter-applied-C2teL4uw.js} +3 -3
  506. package/dist/{property-filter-applied-DI4w1ACS.js.map → property-filter-applied-C2teL4uw.js.map} +1 -1
  507. package/dist/{property-filter-applied-BhxbHAN8.cjs → property-filter-applied-ChK5XtsC.cjs} +3 -3
  508. package/dist/{property-filter-applied-BhxbHAN8.cjs.map → property-filter-applied-ChK5XtsC.cjs.map} +1 -1
  509. package/dist/resize/panel-drawer.cjs.js +1 -1
  510. package/dist/resize/panel-drawer.es.js +1 -1
  511. package/dist/sankey-chart-Bp-DrL1q.cjs +925 -0
  512. package/dist/sankey-chart-Bp-DrL1q.cjs.map +1 -0
  513. package/dist/sankey-chart-zhW_F0Rm.js +915 -0
  514. package/dist/sankey-chart-zhW_F0Rm.js.map +1 -0
  515. package/dist/{search-field-block-DCnFZzRK.js → search-field-block-D0PBxCxK.js} +2 -2
  516. package/dist/{search-field-block-DCnFZzRK.js.map → search-field-block-D0PBxCxK.js.map} +1 -1
  517. package/dist/{search-field-block-D6TdrHZX.cjs → search-field-block-D4vuLoZI.cjs} +2 -2
  518. package/dist/{search-field-block-D6TdrHZX.cjs.map → search-field-block-D4vuLoZI.cjs.map} +1 -1
  519. package/dist/{select-Beo8qQ0e.js → select-B_E0ADD5.js} +2 -2
  520. package/dist/{select-Beo8qQ0e.js.map → select-B_E0ADD5.js.map} +1 -1
  521. package/dist/{select-B6ce20XX.cjs → select-OAXqZLkC.cjs} +2 -2
  522. package/dist/{select-B6ce20XX.cjs.map → select-OAXqZLkC.cjs.map} +1 -1
  523. package/dist/{select-field-block-svlHplxW.cjs → select-field-block-BN9oU5B5.cjs} +2 -2
  524. package/dist/{select-field-block-svlHplxW.cjs.map → select-field-block-BN9oU5B5.cjs.map} +1 -1
  525. package/dist/{select-field-block-DXw3tD0y.js → select-field-block-D1Na8gZW.js} +2 -2
  526. package/dist/{select-field-block-DXw3tD0y.js.map → select-field-block-D1Na8gZW.js.map} +1 -1
  527. package/dist/src/domains/traces/hooks/use-entity-names.d.ts +2 -1
  528. package/dist/src/ds/components/ChatShell/chat-shell.d.ts +9 -6
  529. package/dist/src/ds/components/MainSidebar/main-sidebar-nav-item-classes.d.ts +13 -2
  530. package/dist/src/ds/components/MainSidebar/main-sidebar-nav-link.d.ts +2 -2
  531. package/dist/src/ds/components/MarkdownRenderer/markdown-renderer.d.ts +3 -1
  532. package/dist/src/ds/components/SankeyChart/sankey-chart.d.ts +7 -2
  533. package/dist/src/ds/components/SankeyChart/sankey-portal-tooltip.d.ts +8 -0
  534. package/dist/src/ds/components/SankeyChart/use-sankey-geometry-transition.d.ts +11 -0
  535. package/dist/src/ds/components/SankeyChart/use-sankey-hover-tooltip.d.ts +15 -0
  536. package/dist/src/ds/components/ThreadRail/thread-rail-turns.d.ts +2 -0
  537. package/dist/src/ee/signals/entity-learning-api.d.ts +13 -0
  538. package/dist/src/ee/signals/examples-pager.d.ts +7 -0
  539. package/dist/src/ee/signals/flow-card.d.ts +14 -0
  540. package/dist/src/ee/signals/hooks/index.d.ts +11 -0
  541. package/dist/src/ee/signals/hooks/theme-query-guards.d.ts +3 -0
  542. package/dist/src/ee/signals/hooks/use-entity-learning-progress.d.ts +1 -0
  543. package/dist/src/ee/signals/hooks/use-noise-examples.d.ts +2 -0
  544. package/dist/src/ee/signals/hooks/use-noise.d.ts +2 -0
  545. package/dist/src/ee/signals/hooks/use-snapshot-playback.d.ts +9 -0
  546. package/dist/src/ee/signals/hooks/use-theme-detail.d.ts +2 -0
  547. package/dist/src/ee/signals/hooks/use-theme-entities.d.ts +1 -0
  548. package/dist/src/ee/signals/hooks/use-theme-examples.d.ts +2 -0
  549. package/dist/src/ee/signals/hooks/use-theme-flow.d.ts +2 -0
  550. package/dist/src/ee/signals/hooks/use-theme-flows.d.ts +2 -0
  551. package/dist/src/ee/signals/hooks/use-theme-history.d.ts +2 -0
  552. package/dist/src/ee/signals/hooks/use-theme-paths.d.ts +2 -0
  553. package/dist/src/ee/signals/hooks/use-theme-snapshots.d.ts +2 -0
  554. package/dist/src/ee/signals/hooks/use-trace-insight.d.ts +1 -0
  555. package/dist/src/ee/signals/index.d.ts +9 -0
  556. package/dist/src/ee/signals/lifeline-point.d.ts +8 -0
  557. package/dist/src/ee/signals/lifeline-row.d.ts +11 -0
  558. package/dist/src/ee/signals/noise-detail-panel.d.ts +10 -0
  559. package/dist/src/ee/signals/sankey-signals-data.d.ts +41 -0
  560. package/dist/src/ee/signals/sankey-signals.d.ts +12 -0
  561. package/dist/src/ee/signals/signal-delta-column.d.ts +12 -0
  562. package/dist/src/ee/signals/signal-formatting.d.ts +15 -0
  563. package/dist/src/ee/signals/signal-lifelines.d.ts +9 -0
  564. package/dist/src/ee/signals/signals-error-state.d.ts +5 -0
  565. package/dist/src/ee/signals/signals-loading-skeleton.d.ts +2 -0
  566. package/dist/src/ee/signals/snapshot-timeline-data.d.ts +12 -0
  567. package/dist/src/ee/signals/snapshot-timeline.d.ts +25 -0
  568. package/dist/src/ee/signals/sortable-signal-headers.d.ts +6 -0
  569. package/dist/src/ee/signals/theme-compare-data.d.ts +24 -0
  570. package/dist/src/ee/signals/theme-compare-sparkline.d.ts +5 -0
  571. package/dist/src/ee/signals/theme-compare.d.ts +17 -0
  572. package/dist/src/ee/signals/theme-detail-panel.d.ts +11 -0
  573. package/dist/src/ee/signals/theme-drilldown-data.d.ts +10 -0
  574. package/dist/src/ee/signals/theme-filter-banner.d.ts +8 -0
  575. package/dist/src/ee/signals/theme-lifelines-data.d.ts +35 -0
  576. package/dist/src/ee/signals/theme-lifelines.d.ts +17 -0
  577. package/dist/src/ee/signals/theme-trend-chart.d.ts +6 -0
  578. package/dist/src/ee/signals/theme-trend.d.ts +17 -0
  579. package/dist/src/ee/signals/trace-insight-view.d.ts +6 -0
  580. package/dist/src/ee/signals/trace-intelligence-context.d.ts +10 -0
  581. package/dist/src/ee/signals/trace-intelligence-explainer.d.ts +2 -0
  582. package/dist/src/ee/signals/trace-intelligence-provider.d.ts +11 -0
  583. package/dist/src/ee/signals/types.d.ts +1 -0
  584. package/dist/src/ee/signals/use-trace-intelligence.d.ts +1 -0
  585. package/dist/src/ee/signals/view-mode-tab.d.ts +6 -0
  586. package/dist/src/test/msw-server.d.ts +1 -0
  587. package/dist/src/test/vitest-setup.d.ts +1 -0
  588. package/dist/style.css +306 -18
  589. package/dist/tabs-root-BBPou4QC.js +69 -0
  590. package/dist/tabs-root-BBPou4QC.js.map +1 -0
  591. package/dist/tabs-root-VtBc6K2q.cjs +72 -0
  592. package/dist/tabs-root-VtBc6K2q.cjs.map +1 -0
  593. package/dist/{tabs-tab-BkUCE-4E.cjs → tabs-tab-Cq4YR31P.cjs} +2 -67
  594. package/dist/tabs-tab-Cq4YR31P.cjs.map +1 -0
  595. package/dist/{tabs-tab-DDGltcUc.js → tabs-tab-D5JTAehi.js} +6 -69
  596. package/dist/tabs-tab-D5JTAehi.js.map +1 -0
  597. package/dist/{time-picker-mLzcoQMO.js → time-picker-CkqREdQB.js} +2 -2
  598. package/dist/{time-picker-mLzcoQMO.js.map → time-picker-CkqREdQB.js.map} +1 -1
  599. package/dist/{time-picker-BOQtPoyD.cjs → time-picker-Dy2oyq8P.cjs} +2 -2
  600. package/dist/{time-picker-BOQtPoyD.cjs.map → time-picker-Dy2oyq8P.cjs.map} +1 -1
  601. package/dist/{traces-data-list-DtuaCDES.js → traces-data-list-B3wMvCfk.js} +2 -2
  602. package/dist/{traces-data-list-DtuaCDES.js.map → traces-data-list-B3wMvCfk.js.map} +1 -1
  603. package/dist/{traces-data-list-vsvvvEiP.cjs → traces-data-list-pTNo_zbS.cjs} +2 -2
  604. package/dist/{traces-data-list-vsvvvEiP.cjs.map → traces-data-list-pTNo_zbS.cjs.map} +1 -1
  605. package/package.json +8 -8
  606. package/theme.css +6 -8
  607. package/dist/Button-Bm94fEF2.cjs.map +0 -1
  608. package/dist/Button-Bx2lFdqb.js.map +0 -1
  609. package/dist/dropdown-menu-DEFygDZI.js.map +0 -1
  610. package/dist/dropdown-menu-ppWztidX.cjs.map +0 -1
  611. package/dist/markdown-renderer-Bi2fWeoF.js.map +0 -1
  612. package/dist/markdown-renderer-DwfNrhEH.cjs.map +0 -1
  613. package/dist/message-scroller-BmzjZZNs.cjs.map +0 -1
  614. package/dist/message-scroller-D5O7sUS5.js.map +0 -1
  615. package/dist/tabs-tab-BkUCE-4E.cjs.map +0 -1
  616. package/dist/tabs-tab-DDGltcUc.js.map +0 -1
@@ -0,0 +1,138 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+
5
+ const ee_signals_signalFormatting = require('./signal-formatting.cjs.js');
6
+
7
+ const MINIMUM_LAYOUT_WEIGHT = 0.01;
8
+ function getSignalRecordNodeId(record, column) {
9
+ return String(record[column.id]);
10
+ }
11
+ function getSignalRecordNodeLabel(record, column) {
12
+ const label = String(record[`${column.id}Label`]);
13
+ const description = record[`${column.id}Description`];
14
+ return typeof description === "string" && description.trim() ? `${label}
15
+ ${description}` : label;
16
+ }
17
+ function getSignalRecordNodeValue(record, column) {
18
+ return Number(record[`${column.id}TraceCount`]);
19
+ }
20
+ function themeFlowToSankeyData(flow) {
21
+ const nodes = /* @__PURE__ */ new Map();
22
+ for (const stage of flow.stages) {
23
+ for (const node of stage.nodes) nodes.set(node.nodeId, { signalName: stage.signalName, node });
24
+ }
25
+ const linkedSignalNames = new Set(
26
+ flow.links.flatMap((link) => {
27
+ const source = nodes.get(link.sourceNodeId);
28
+ const target = nodes.get(link.targetNodeId);
29
+ return [...source ? [source.signalName] : [], ...target ? [target.signalName] : []];
30
+ })
31
+ );
32
+ const columns = flow.stages.filter((stage) => linkedSignalNames.has(stage.signalName)).map((stage) => ({
33
+ id: stage.signalName,
34
+ label: formatSignalName(stage.signalName)
35
+ }));
36
+ const records = [];
37
+ for (const link of flow.links) {
38
+ const source = nodes.get(link.sourceNodeId);
39
+ const target = nodes.get(link.targetNodeId);
40
+ if (!source || !target) continue;
41
+ records.push({
42
+ [source.signalName]: source.node.nodeId,
43
+ [`${source.signalName}Label`]: displayNodeLabel(source.node),
44
+ [`${source.signalName}Description`]: source.node.description,
45
+ [`${source.signalName}TraceCount`]: source.node.traceCount,
46
+ [target.signalName]: target.node.nodeId,
47
+ [`${target.signalName}Label`]: displayNodeLabel(target.node),
48
+ [`${target.signalName}Description`]: target.node.description,
49
+ [`${target.signalName}TraceCount`]: target.node.traceCount,
50
+ traceCount: link.traceCount,
51
+ layoutTraceCount: "layoutTraceCount" in link ? link.layoutTraceCount : link.traceCount
52
+ });
53
+ }
54
+ return { columns, records };
55
+ }
56
+ function buildSignalGraphSummary(flow) {
57
+ return themeFlowToSankeyData(flow);
58
+ }
59
+ function selectFlowSnapshotIds(snapshots, selectedIndex) {
60
+ if (snapshots.length === 0) return [];
61
+ const neighborIndexes = /* @__PURE__ */ new Set([
62
+ (selectedIndex - 1 + snapshots.length) % snapshots.length,
63
+ selectedIndex,
64
+ (selectedIndex + 1) % snapshots.length
65
+ ]);
66
+ return [...neighborIndexes].sort((left, right) => left - right).flatMap((index) => {
67
+ const snapshot = snapshots[index];
68
+ return snapshot ? [snapshot.snapshotId] : [];
69
+ });
70
+ }
71
+ function stabilizeThemeFlow(flow, windowFlows) {
72
+ const stages = flow.stages.map((stage) => {
73
+ const orderedNodeIds = /* @__PURE__ */ new Map();
74
+ for (const windowFlow of windowFlows) {
75
+ const windowStage = windowFlow.stages.find((candidate) => candidate.signalName === stage.signalName);
76
+ for (const node of windowStage?.nodes ?? []) {
77
+ if (!orderedNodeIds.has(node.nodeId)) orderedNodeIds.set(node.nodeId, orderedNodeIds.size);
78
+ }
79
+ }
80
+ const nodes = stage.nodes.filter((node) => node.traceCount > 0).sort(
81
+ (left, right) => (orderedNodeIds.get(left.nodeId) ?? Number.MAX_SAFE_INTEGER) - (orderedNodeIds.get(right.nodeId) ?? Number.MAX_SAFE_INTEGER)
82
+ );
83
+ return { ...stage, nodes };
84
+ });
85
+ const keptNodeIds = new Set(stages.flatMap((stage) => stage.nodes.map((node) => node.nodeId)));
86
+ const layoutWeights = /* @__PURE__ */ new Map();
87
+ const orderedLinkKeys = /* @__PURE__ */ new Map();
88
+ for (const windowFlow of windowFlows) {
89
+ for (const link of windowFlow.links) {
90
+ const key = `${link.sourceNodeId}\0${link.targetNodeId}`;
91
+ layoutWeights.set(key, Math.max(layoutWeights.get(key) ?? 0, link.traceCount));
92
+ if (!orderedLinkKeys.has(key)) orderedLinkKeys.set(key, orderedLinkKeys.size);
93
+ }
94
+ }
95
+ const stableLinks = flow.links.filter((link) => link.traceCount > 0 && keptNodeIds.has(link.sourceNodeId) && keptNodeIds.has(link.targetNodeId)).sort((left, right) => {
96
+ const leftKey = `${left.sourceNodeId}\0${left.targetNodeId}`;
97
+ const rightKey = `${right.sourceNodeId}\0${right.targetNodeId}`;
98
+ return (orderedLinkKeys.get(leftKey) ?? 0) - (orderedLinkKeys.get(rightKey) ?? 0);
99
+ }).map((link) => {
100
+ const key = `${link.sourceNodeId}\0${link.targetNodeId}`;
101
+ return {
102
+ ...link,
103
+ layoutTraceCount: Math.max(MINIMUM_LAYOUT_WEIGHT, layoutWeights.get(key) ?? link.traceCount)
104
+ };
105
+ });
106
+ return { ...flow, stages, links: stableLinks };
107
+ }
108
+ function displayNodeLabel(node) {
109
+ return node.kind === "noise" ? "Noise" : node.label;
110
+ }
111
+ function formatSignalName(signalName) {
112
+ return `${signalName.slice(0, 1).toUpperCase()}${signalName.slice(1)}`;
113
+ }
114
+ function snapshotSummaryLabel(snapshot, flow) {
115
+ const date = snapshot.cutoffAt ? ee_signals_signalFormatting.formatSnapshotCutoff(snapshot.cutoffAt) : ee_signals_signalFormatting.formatSnapshotWindow(snapshot.startedAt, snapshot.endedAt);
116
+ if (!flow) return date;
117
+ const { traceCount, themeCount } = flowCounts(flow);
118
+ return `${date} · ${ee_signals_signalFormatting.traceLabel(traceCount)} · ${ee_signals_signalFormatting.themeLabel(themeCount)}`;
119
+ }
120
+ function flowCounts(flow) {
121
+ return {
122
+ traceCount: flow.stages[0]?.traceCount ?? flow.snapshot.traceCount,
123
+ themeCount: flow.stages.reduce(
124
+ (total, stage) => total + stage.nodes.filter((node) => node.kind === "theme").length,
125
+ 0
126
+ )
127
+ };
128
+ }
129
+
130
+ exports.buildSignalGraphSummary = buildSignalGraphSummary;
131
+ exports.getSignalRecordNodeId = getSignalRecordNodeId;
132
+ exports.getSignalRecordNodeLabel = getSignalRecordNodeLabel;
133
+ exports.getSignalRecordNodeValue = getSignalRecordNodeValue;
134
+ exports.selectFlowSnapshotIds = selectFlowSnapshotIds;
135
+ exports.snapshotSummaryLabel = snapshotSummaryLabel;
136
+ exports.stabilizeThemeFlow = stabilizeThemeFlow;
137
+ exports.themeFlowToSankeyData = themeFlowToSankeyData;
138
+ //# sourceMappingURL=sankey-signals-data.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sankey-signals-data.cjs.js","sources":["../../../src/ee/signals/sankey-signals-data.ts"],"sourcesContent":["import { formatSnapshotCutoff, formatSnapshotWindow, themeLabel, traceLabel } from './signal-formatting';\nimport type { ThemeFlowResponse, ThemeNode, ThemeSnapshot, TraceSignalName } from './types';\nimport type { SankeyChartColumn, SankeyChartRecord } from '@/ds/components/SankeyChart';\n\nconst MINIMUM_LAYOUT_WEIGHT = 0.01;\n\ntype StableThemeFlowLink = ThemeFlowResponse['links'][number] & { layoutTraceCount: number };\ntype StableThemeFlowResponse = Omit<ThemeFlowResponse, 'links'> & { links: StableThemeFlowLink[] };\n\nexport function getSignalRecordNodeId(record: SankeyChartRecord, column: SankeyChartColumn) {\n return String(record[column.id]);\n}\n\nexport function getSignalRecordNodeLabel(record: SankeyChartRecord, column: SankeyChartColumn) {\n const label = String(record[`${column.id}Label`]);\n const description = record[`${column.id}Description`];\n return typeof description === 'string' && description.trim() ? `${label}\\n${description}` : label;\n}\n\nexport function getSignalRecordNodeValue(record: SankeyChartRecord, column: SankeyChartColumn) {\n return Number(record[`${column.id}TraceCount`]);\n}\n\nexport function themeFlowToSankeyData(flow: ThemeFlowResponse): {\n columns: SankeyChartColumn[];\n records: SankeyChartRecord[];\n} {\n const nodes = new Map<string, { signalName: TraceSignalName; node: ThemeNode }>();\n\n for (const stage of flow.stages) {\n for (const node of stage.nodes) nodes.set(node.nodeId, { signalName: stage.signalName, node });\n }\n\n // Only stages that participate in links become chart columns. A stage with\n // themes but no links (possible in real flows) would otherwise leave a\n // phantom first column: the chart lays out linked columns across the full\n // width but keeps anchoring labels as if the unlinked column still led.\n const linkedSignalNames = new Set(\n flow.links.flatMap(link => {\n const source = nodes.get(link.sourceNodeId);\n const target = nodes.get(link.targetNodeId);\n return [...(source ? [source.signalName] : []), ...(target ? [target.signalName] : [])];\n }),\n );\n const columns = flow.stages\n .filter(stage => linkedSignalNames.has(stage.signalName))\n .map(stage => ({\n id: stage.signalName,\n label: formatSignalName(stage.signalName),\n }));\n\n const records: SankeyChartRecord[] = [];\n for (const link of flow.links) {\n const source = nodes.get(link.sourceNodeId);\n const target = nodes.get(link.targetNodeId);\n if (!source || !target) continue;\n\n records.push({\n [source.signalName]: source.node.nodeId,\n [`${source.signalName}Label`]: displayNodeLabel(source.node),\n [`${source.signalName}Description`]: source.node.description,\n [`${source.signalName}TraceCount`]: source.node.traceCount,\n [target.signalName]: target.node.nodeId,\n [`${target.signalName}Label`]: displayNodeLabel(target.node),\n [`${target.signalName}Description`]: target.node.description,\n [`${target.signalName}TraceCount`]: target.node.traceCount,\n traceCount: link.traceCount,\n layoutTraceCount: 'layoutTraceCount' in link ? link.layoutTraceCount : link.traceCount,\n });\n }\n\n return { columns, records };\n}\n\nexport function buildSignalGraphSummary(flow: ThemeFlowResponse): {\n columns: SankeyChartColumn[];\n records: SankeyChartRecord[];\n} {\n return themeFlowToSankeyData(flow);\n}\n\n/**\n * Snapshot ids whose flows the timeline needs right now: the selected landmark\n * plus its previous and next playback neighbors (playback wraps around).\n */\nexport function selectFlowSnapshotIds(snapshots: Array<{ snapshotId: string }>, selectedIndex: number): string[] {\n if (snapshots.length === 0) return [];\n const neighborIndexes = new Set([\n (selectedIndex - 1 + snapshots.length) % snapshots.length,\n selectedIndex,\n (selectedIndex + 1) % snapshots.length,\n ]);\n return [...neighborIndexes]\n .sort((left, right) => left - right)\n .flatMap(index => {\n const snapshot = snapshots[index];\n return snapshot ? [snapshot.snapshotId] : [];\n });\n}\n\n/**\n * Keeps node ordering and ribbon layout widths consistent across the playback\n * window without inventing content: only nodes and links present in the\n * current snapshot render (no zero-count ghosts from neighboring flows), but\n * their order and layout weight come from the whole window so shared themes\n * hold their position while scrubbing.\n */\nexport function stabilizeThemeFlow(flow: ThemeFlowResponse, windowFlows: ThemeFlowResponse[]): StableThemeFlowResponse {\n const stages = flow.stages.map(stage => {\n const orderedNodeIds = new Map<string, number>();\n for (const windowFlow of windowFlows) {\n const windowStage = windowFlow.stages.find(candidate => candidate.signalName === stage.signalName);\n for (const node of windowStage?.nodes ?? []) {\n if (!orderedNodeIds.has(node.nodeId)) orderedNodeIds.set(node.nodeId, orderedNodeIds.size);\n }\n }\n\n const nodes = stage.nodes\n .filter(node => node.traceCount > 0)\n .sort(\n (left, right) =>\n (orderedNodeIds.get(left.nodeId) ?? Number.MAX_SAFE_INTEGER) -\n (orderedNodeIds.get(right.nodeId) ?? Number.MAX_SAFE_INTEGER),\n );\n return { ...stage, nodes };\n });\n\n const keptNodeIds = new Set(stages.flatMap(stage => stage.nodes.map(node => node.nodeId)));\n const layoutWeights = new Map<string, number>();\n const orderedLinkKeys = new Map<string, number>();\n for (const windowFlow of windowFlows) {\n for (const link of windowFlow.links) {\n const key = `${link.sourceNodeId}\\u0000${link.targetNodeId}`;\n layoutWeights.set(key, Math.max(layoutWeights.get(key) ?? 0, link.traceCount));\n if (!orderedLinkKeys.has(key)) orderedLinkKeys.set(key, orderedLinkKeys.size);\n }\n }\n\n const stableLinks = flow.links\n .filter(link => link.traceCount > 0 && keptNodeIds.has(link.sourceNodeId) && keptNodeIds.has(link.targetNodeId))\n .sort((left, right) => {\n const leftKey = `${left.sourceNodeId}\\u0000${left.targetNodeId}`;\n const rightKey = `${right.sourceNodeId}\\u0000${right.targetNodeId}`;\n return (orderedLinkKeys.get(leftKey) ?? 0) - (orderedLinkKeys.get(rightKey) ?? 0);\n })\n .map((link): StableThemeFlowLink => {\n const key = `${link.sourceNodeId}\\u0000${link.targetNodeId}`;\n return {\n ...link,\n layoutTraceCount: Math.max(MINIMUM_LAYOUT_WEIGHT, layoutWeights.get(key) ?? link.traceCount),\n };\n });\n\n return { ...flow, stages, links: stableLinks };\n}\n\nfunction displayNodeLabel(node: ThemeNode) {\n return node.kind === 'noise' ? 'Noise' : node.label;\n}\n\nfunction formatSignalName(signalName: TraceSignalName) {\n return `${signalName.slice(0, 1).toUpperCase()}${signalName.slice(1)}`;\n}\n\n/**\n * \"Date · N traces · N themes\" line rendered under the timeline in every view\n * mode. Counts come from the charted flow (cohort stage totals), so a drilled\n * flow reports the drilled subset; date-only while the flow is loading.\n */\nexport function snapshotSummaryLabel(snapshot: ThemeSnapshot, flow: ThemeFlowResponse | undefined) {\n const date = snapshot.cutoffAt\n ? formatSnapshotCutoff(snapshot.cutoffAt)\n : formatSnapshotWindow(snapshot.startedAt, snapshot.endedAt);\n if (!flow) return date;\n\n const { traceCount, themeCount } = flowCounts(flow);\n return `${date} · ${traceLabel(traceCount)} · ${themeLabel(themeCount)}`;\n}\n\nfunction flowCounts(flow: ThemeFlowResponse) {\n return {\n traceCount: flow.stages[0]?.traceCount ?? flow.snapshot.traceCount,\n themeCount: flow.stages.reduce(\n (total, stage) => total + stage.nodes.filter(node => node.kind === 'theme').length,\n 0,\n ),\n };\n}\n"],"names":["formatSnapshotCutoff","formatSnapshotWindow","traceLabel","themeLabel"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from '../../src/ee/signals/sankey-signals-data'
2
+ export {}
@@ -0,0 +1,127 @@
1
+ import { formatSnapshotCutoff, formatSnapshotWindow, traceLabel, themeLabel } from './signal-formatting.es.js';
2
+
3
+ const MINIMUM_LAYOUT_WEIGHT = 0.01;
4
+ function getSignalRecordNodeId(record, column) {
5
+ return String(record[column.id]);
6
+ }
7
+ function getSignalRecordNodeLabel(record, column) {
8
+ const label = String(record[`${column.id}Label`]);
9
+ const description = record[`${column.id}Description`];
10
+ return typeof description === "string" && description.trim() ? `${label}
11
+ ${description}` : label;
12
+ }
13
+ function getSignalRecordNodeValue(record, column) {
14
+ return Number(record[`${column.id}TraceCount`]);
15
+ }
16
+ function themeFlowToSankeyData(flow) {
17
+ const nodes = /* @__PURE__ */ new Map();
18
+ for (const stage of flow.stages) {
19
+ for (const node of stage.nodes) nodes.set(node.nodeId, { signalName: stage.signalName, node });
20
+ }
21
+ const linkedSignalNames = new Set(
22
+ flow.links.flatMap((link) => {
23
+ const source = nodes.get(link.sourceNodeId);
24
+ const target = nodes.get(link.targetNodeId);
25
+ return [...source ? [source.signalName] : [], ...target ? [target.signalName] : []];
26
+ })
27
+ );
28
+ const columns = flow.stages.filter((stage) => linkedSignalNames.has(stage.signalName)).map((stage) => ({
29
+ id: stage.signalName,
30
+ label: formatSignalName(stage.signalName)
31
+ }));
32
+ const records = [];
33
+ for (const link of flow.links) {
34
+ const source = nodes.get(link.sourceNodeId);
35
+ const target = nodes.get(link.targetNodeId);
36
+ if (!source || !target) continue;
37
+ records.push({
38
+ [source.signalName]: source.node.nodeId,
39
+ [`${source.signalName}Label`]: displayNodeLabel(source.node),
40
+ [`${source.signalName}Description`]: source.node.description,
41
+ [`${source.signalName}TraceCount`]: source.node.traceCount,
42
+ [target.signalName]: target.node.nodeId,
43
+ [`${target.signalName}Label`]: displayNodeLabel(target.node),
44
+ [`${target.signalName}Description`]: target.node.description,
45
+ [`${target.signalName}TraceCount`]: target.node.traceCount,
46
+ traceCount: link.traceCount,
47
+ layoutTraceCount: "layoutTraceCount" in link ? link.layoutTraceCount : link.traceCount
48
+ });
49
+ }
50
+ return { columns, records };
51
+ }
52
+ function buildSignalGraphSummary(flow) {
53
+ return themeFlowToSankeyData(flow);
54
+ }
55
+ function selectFlowSnapshotIds(snapshots, selectedIndex) {
56
+ if (snapshots.length === 0) return [];
57
+ const neighborIndexes = /* @__PURE__ */ new Set([
58
+ (selectedIndex - 1 + snapshots.length) % snapshots.length,
59
+ selectedIndex,
60
+ (selectedIndex + 1) % snapshots.length
61
+ ]);
62
+ return [...neighborIndexes].sort((left, right) => left - right).flatMap((index) => {
63
+ const snapshot = snapshots[index];
64
+ return snapshot ? [snapshot.snapshotId] : [];
65
+ });
66
+ }
67
+ function stabilizeThemeFlow(flow, windowFlows) {
68
+ const stages = flow.stages.map((stage) => {
69
+ const orderedNodeIds = /* @__PURE__ */ new Map();
70
+ for (const windowFlow of windowFlows) {
71
+ const windowStage = windowFlow.stages.find((candidate) => candidate.signalName === stage.signalName);
72
+ for (const node of windowStage?.nodes ?? []) {
73
+ if (!orderedNodeIds.has(node.nodeId)) orderedNodeIds.set(node.nodeId, orderedNodeIds.size);
74
+ }
75
+ }
76
+ const nodes = stage.nodes.filter((node) => node.traceCount > 0).sort(
77
+ (left, right) => (orderedNodeIds.get(left.nodeId) ?? Number.MAX_SAFE_INTEGER) - (orderedNodeIds.get(right.nodeId) ?? Number.MAX_SAFE_INTEGER)
78
+ );
79
+ return { ...stage, nodes };
80
+ });
81
+ const keptNodeIds = new Set(stages.flatMap((stage) => stage.nodes.map((node) => node.nodeId)));
82
+ const layoutWeights = /* @__PURE__ */ new Map();
83
+ const orderedLinkKeys = /* @__PURE__ */ new Map();
84
+ for (const windowFlow of windowFlows) {
85
+ for (const link of windowFlow.links) {
86
+ const key = `${link.sourceNodeId}\0${link.targetNodeId}`;
87
+ layoutWeights.set(key, Math.max(layoutWeights.get(key) ?? 0, link.traceCount));
88
+ if (!orderedLinkKeys.has(key)) orderedLinkKeys.set(key, orderedLinkKeys.size);
89
+ }
90
+ }
91
+ const stableLinks = flow.links.filter((link) => link.traceCount > 0 && keptNodeIds.has(link.sourceNodeId) && keptNodeIds.has(link.targetNodeId)).sort((left, right) => {
92
+ const leftKey = `${left.sourceNodeId}\0${left.targetNodeId}`;
93
+ const rightKey = `${right.sourceNodeId}\0${right.targetNodeId}`;
94
+ return (orderedLinkKeys.get(leftKey) ?? 0) - (orderedLinkKeys.get(rightKey) ?? 0);
95
+ }).map((link) => {
96
+ const key = `${link.sourceNodeId}\0${link.targetNodeId}`;
97
+ return {
98
+ ...link,
99
+ layoutTraceCount: Math.max(MINIMUM_LAYOUT_WEIGHT, layoutWeights.get(key) ?? link.traceCount)
100
+ };
101
+ });
102
+ return { ...flow, stages, links: stableLinks };
103
+ }
104
+ function displayNodeLabel(node) {
105
+ return node.kind === "noise" ? "Noise" : node.label;
106
+ }
107
+ function formatSignalName(signalName) {
108
+ return `${signalName.slice(0, 1).toUpperCase()}${signalName.slice(1)}`;
109
+ }
110
+ function snapshotSummaryLabel(snapshot, flow) {
111
+ const date = snapshot.cutoffAt ? formatSnapshotCutoff(snapshot.cutoffAt) : formatSnapshotWindow(snapshot.startedAt, snapshot.endedAt);
112
+ if (!flow) return date;
113
+ const { traceCount, themeCount } = flowCounts(flow);
114
+ return `${date} · ${traceLabel(traceCount)} · ${themeLabel(themeCount)}`;
115
+ }
116
+ function flowCounts(flow) {
117
+ return {
118
+ traceCount: flow.stages[0]?.traceCount ?? flow.snapshot.traceCount,
119
+ themeCount: flow.stages.reduce(
120
+ (total, stage) => total + stage.nodes.filter((node) => node.kind === "theme").length,
121
+ 0
122
+ )
123
+ };
124
+ }
125
+
126
+ export { buildSignalGraphSummary, getSignalRecordNodeId, getSignalRecordNodeLabel, getSignalRecordNodeValue, selectFlowSnapshotIds, snapshotSummaryLabel, stabilizeThemeFlow, themeFlowToSankeyData };
127
+ //# sourceMappingURL=sankey-signals-data.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sankey-signals-data.es.js","sources":["../../../src/ee/signals/sankey-signals-data.ts"],"sourcesContent":["import { formatSnapshotCutoff, formatSnapshotWindow, themeLabel, traceLabel } from './signal-formatting';\nimport type { ThemeFlowResponse, ThemeNode, ThemeSnapshot, TraceSignalName } from './types';\nimport type { SankeyChartColumn, SankeyChartRecord } from '@/ds/components/SankeyChart';\n\nconst MINIMUM_LAYOUT_WEIGHT = 0.01;\n\ntype StableThemeFlowLink = ThemeFlowResponse['links'][number] & { layoutTraceCount: number };\ntype StableThemeFlowResponse = Omit<ThemeFlowResponse, 'links'> & { links: StableThemeFlowLink[] };\n\nexport function getSignalRecordNodeId(record: SankeyChartRecord, column: SankeyChartColumn) {\n return String(record[column.id]);\n}\n\nexport function getSignalRecordNodeLabel(record: SankeyChartRecord, column: SankeyChartColumn) {\n const label = String(record[`${column.id}Label`]);\n const description = record[`${column.id}Description`];\n return typeof description === 'string' && description.trim() ? `${label}\\n${description}` : label;\n}\n\nexport function getSignalRecordNodeValue(record: SankeyChartRecord, column: SankeyChartColumn) {\n return Number(record[`${column.id}TraceCount`]);\n}\n\nexport function themeFlowToSankeyData(flow: ThemeFlowResponse): {\n columns: SankeyChartColumn[];\n records: SankeyChartRecord[];\n} {\n const nodes = new Map<string, { signalName: TraceSignalName; node: ThemeNode }>();\n\n for (const stage of flow.stages) {\n for (const node of stage.nodes) nodes.set(node.nodeId, { signalName: stage.signalName, node });\n }\n\n // Only stages that participate in links become chart columns. A stage with\n // themes but no links (possible in real flows) would otherwise leave a\n // phantom first column: the chart lays out linked columns across the full\n // width but keeps anchoring labels as if the unlinked column still led.\n const linkedSignalNames = new Set(\n flow.links.flatMap(link => {\n const source = nodes.get(link.sourceNodeId);\n const target = nodes.get(link.targetNodeId);\n return [...(source ? [source.signalName] : []), ...(target ? [target.signalName] : [])];\n }),\n );\n const columns = flow.stages\n .filter(stage => linkedSignalNames.has(stage.signalName))\n .map(stage => ({\n id: stage.signalName,\n label: formatSignalName(stage.signalName),\n }));\n\n const records: SankeyChartRecord[] = [];\n for (const link of flow.links) {\n const source = nodes.get(link.sourceNodeId);\n const target = nodes.get(link.targetNodeId);\n if (!source || !target) continue;\n\n records.push({\n [source.signalName]: source.node.nodeId,\n [`${source.signalName}Label`]: displayNodeLabel(source.node),\n [`${source.signalName}Description`]: source.node.description,\n [`${source.signalName}TraceCount`]: source.node.traceCount,\n [target.signalName]: target.node.nodeId,\n [`${target.signalName}Label`]: displayNodeLabel(target.node),\n [`${target.signalName}Description`]: target.node.description,\n [`${target.signalName}TraceCount`]: target.node.traceCount,\n traceCount: link.traceCount,\n layoutTraceCount: 'layoutTraceCount' in link ? link.layoutTraceCount : link.traceCount,\n });\n }\n\n return { columns, records };\n}\n\nexport function buildSignalGraphSummary(flow: ThemeFlowResponse): {\n columns: SankeyChartColumn[];\n records: SankeyChartRecord[];\n} {\n return themeFlowToSankeyData(flow);\n}\n\n/**\n * Snapshot ids whose flows the timeline needs right now: the selected landmark\n * plus its previous and next playback neighbors (playback wraps around).\n */\nexport function selectFlowSnapshotIds(snapshots: Array<{ snapshotId: string }>, selectedIndex: number): string[] {\n if (snapshots.length === 0) return [];\n const neighborIndexes = new Set([\n (selectedIndex - 1 + snapshots.length) % snapshots.length,\n selectedIndex,\n (selectedIndex + 1) % snapshots.length,\n ]);\n return [...neighborIndexes]\n .sort((left, right) => left - right)\n .flatMap(index => {\n const snapshot = snapshots[index];\n return snapshot ? [snapshot.snapshotId] : [];\n });\n}\n\n/**\n * Keeps node ordering and ribbon layout widths consistent across the playback\n * window without inventing content: only nodes and links present in the\n * current snapshot render (no zero-count ghosts from neighboring flows), but\n * their order and layout weight come from the whole window so shared themes\n * hold their position while scrubbing.\n */\nexport function stabilizeThemeFlow(flow: ThemeFlowResponse, windowFlows: ThemeFlowResponse[]): StableThemeFlowResponse {\n const stages = flow.stages.map(stage => {\n const orderedNodeIds = new Map<string, number>();\n for (const windowFlow of windowFlows) {\n const windowStage = windowFlow.stages.find(candidate => candidate.signalName === stage.signalName);\n for (const node of windowStage?.nodes ?? []) {\n if (!orderedNodeIds.has(node.nodeId)) orderedNodeIds.set(node.nodeId, orderedNodeIds.size);\n }\n }\n\n const nodes = stage.nodes\n .filter(node => node.traceCount > 0)\n .sort(\n (left, right) =>\n (orderedNodeIds.get(left.nodeId) ?? Number.MAX_SAFE_INTEGER) -\n (orderedNodeIds.get(right.nodeId) ?? Number.MAX_SAFE_INTEGER),\n );\n return { ...stage, nodes };\n });\n\n const keptNodeIds = new Set(stages.flatMap(stage => stage.nodes.map(node => node.nodeId)));\n const layoutWeights = new Map<string, number>();\n const orderedLinkKeys = new Map<string, number>();\n for (const windowFlow of windowFlows) {\n for (const link of windowFlow.links) {\n const key = `${link.sourceNodeId}\\u0000${link.targetNodeId}`;\n layoutWeights.set(key, Math.max(layoutWeights.get(key) ?? 0, link.traceCount));\n if (!orderedLinkKeys.has(key)) orderedLinkKeys.set(key, orderedLinkKeys.size);\n }\n }\n\n const stableLinks = flow.links\n .filter(link => link.traceCount > 0 && keptNodeIds.has(link.sourceNodeId) && keptNodeIds.has(link.targetNodeId))\n .sort((left, right) => {\n const leftKey = `${left.sourceNodeId}\\u0000${left.targetNodeId}`;\n const rightKey = `${right.sourceNodeId}\\u0000${right.targetNodeId}`;\n return (orderedLinkKeys.get(leftKey) ?? 0) - (orderedLinkKeys.get(rightKey) ?? 0);\n })\n .map((link): StableThemeFlowLink => {\n const key = `${link.sourceNodeId}\\u0000${link.targetNodeId}`;\n return {\n ...link,\n layoutTraceCount: Math.max(MINIMUM_LAYOUT_WEIGHT, layoutWeights.get(key) ?? link.traceCount),\n };\n });\n\n return { ...flow, stages, links: stableLinks };\n}\n\nfunction displayNodeLabel(node: ThemeNode) {\n return node.kind === 'noise' ? 'Noise' : node.label;\n}\n\nfunction formatSignalName(signalName: TraceSignalName) {\n return `${signalName.slice(0, 1).toUpperCase()}${signalName.slice(1)}`;\n}\n\n/**\n * \"Date · N traces · N themes\" line rendered under the timeline in every view\n * mode. Counts come from the charted flow (cohort stage totals), so a drilled\n * flow reports the drilled subset; date-only while the flow is loading.\n */\nexport function snapshotSummaryLabel(snapshot: ThemeSnapshot, flow: ThemeFlowResponse | undefined) {\n const date = snapshot.cutoffAt\n ? formatSnapshotCutoff(snapshot.cutoffAt)\n : formatSnapshotWindow(snapshot.startedAt, snapshot.endedAt);\n if (!flow) return date;\n\n const { traceCount, themeCount } = flowCounts(flow);\n return `${date} · ${traceLabel(traceCount)} · ${themeLabel(themeCount)}`;\n}\n\nfunction flowCounts(flow: ThemeFlowResponse) {\n return {\n traceCount: flow.stages[0]?.traceCount ?? flow.snapshot.traceCount,\n themeCount: flow.stages.reduce(\n (total, stage) => total + stage.nodes.filter(node => node.kind === 'theme').length,\n 0,\n ),\n };\n}\n"],"names":[],"mappings":"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"}