@mastra/playground-ui 68.0.0 → 69.0.0-alpha.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 (1784) hide show
  1. package/README.md +80 -8
  2. package/dist/AgentIndicator-Dnv_1hvF.js +1995 -0
  3. package/dist/AgentIndicator-Dnv_1hvF.js.map +1 -0
  4. package/dist/AgentIndicator-zCokR2zb.cjs +2012 -0
  5. package/dist/AgentIndicator-zCokR2zb.cjs.map +1 -0
  6. package/dist/{AttachmentCard-DbGp7TYl.js → AttachmentCard-Bt3-QAxJ.js} +3 -3
  7. package/dist/{AttachmentCard-DbGp7TYl.js.map → AttachmentCard-Bt3-QAxJ.js.map} +1 -1
  8. package/dist/{AttachmentCard-CciBqu7E.cjs → AttachmentCard-BycDEelL.cjs} +3 -3
  9. package/dist/{AttachmentCard-CciBqu7E.cjs.map → AttachmentCard-BycDEelL.cjs.map} +1 -1
  10. package/dist/{Avatar-Dj8aP7OI.js → Avatar-DOoEXudh.js} +3 -3
  11. package/dist/{Avatar-Dj8aP7OI.js.map → Avatar-DOoEXudh.js.map} +1 -1
  12. package/dist/{Avatar-Iiqjad9K.cjs → Avatar-Dxpc0YUx.cjs} +3 -3
  13. package/dist/{Avatar-Iiqjad9K.cjs.map → Avatar-Dxpc0YUx.cjs.map} +1 -1
  14. package/dist/{Badge-aVu5iGAF.js → Badge-C7NnqmMx.js} +3 -3
  15. package/dist/{Badge-aVu5iGAF.js.map → Badge-C7NnqmMx.js.map} +1 -1
  16. package/dist/{Badge-DZ6r6bcw.cjs → Badge-DqaMg7Gy.cjs} +3 -3
  17. package/dist/{Badge-DZ6r6bcw.cjs.map → Badge-DqaMg7Gy.cjs.map} +1 -1
  18. package/dist/{Button-DLcMcuUL.cjs → Button-BfICfyxD.cjs} +5 -5
  19. package/dist/Button-BfICfyxD.cjs.map +1 -0
  20. package/dist/{Button-CLXTbAY8.js → Button-Bi7aXd_G.js} +5 -5
  21. package/dist/Button-Bi7aXd_G.js.map +1 -0
  22. package/dist/{Card-C6iEBgVq.cjs → Card-C9oCXvxU.cjs} +3 -3
  23. package/dist/{Card-C6iEBgVq.cjs.map → Card-C9oCXvxU.cjs.map} +1 -1
  24. package/dist/{Card-LU1aWO7U.js → Card-ClDoUQNb.js} +3 -3
  25. package/dist/{Card-LU1aWO7U.js.map → Card-ClDoUQNb.js.map} +1 -1
  26. package/dist/{CodeEditor-CLzs0yVc.cjs → CodeEditor-DHIDfP5g.cjs} +8 -8
  27. package/dist/{CodeEditor-CLzs0yVc.cjs.map → CodeEditor-DHIDfP5g.cjs.map} +1 -1
  28. package/dist/{CodeEditor-COnz9c6B.js → CodeEditor-ZoBu3Gjw.js} +8 -8
  29. package/dist/{CodeEditor-COnz9c6B.js.map → CodeEditor-ZoBu3Gjw.js.map} +1 -1
  30. package/dist/{Comment-0n98b_f_.js → Comment-2q9SomE2.js} +5 -5
  31. package/dist/{Comment-0n98b_f_.js.map → Comment-2q9SomE2.js.map} +1 -1
  32. package/dist/{Comment-Cg0f7eLa.cjs → Comment-rQxuMDQv.cjs} +6 -6
  33. package/dist/{Comment-Cg0f7eLa.cjs.map → Comment-rQxuMDQv.cjs.map} +1 -1
  34. package/dist/{Composer-D1gF-0jZ.js → Composer-bVE8qK52.js} +19 -14
  35. package/dist/Composer-bVE8qK52.js.map +1 -0
  36. package/dist/{Composer-BcueJvdX.cjs → Composer-u1K6edoZ.cjs} +18 -13
  37. package/dist/Composer-u1K6edoZ.cjs.map +1 -0
  38. package/dist/{DataCodeSection-CFxXsQWH.cjs → DataCodeSection-7SvRJj6f.cjs} +8 -8
  39. package/dist/{DataCodeSection-CFxXsQWH.cjs.map → DataCodeSection-7SvRJj6f.cjs.map} +1 -1
  40. package/dist/{DataCodeSection-PY9XEg2C.js → DataCodeSection-CTodi9wg.js} +8 -8
  41. package/dist/{DataCodeSection-PY9XEg2C.js.map → DataCodeSection-CTodi9wg.js.map} +1 -1
  42. package/dist/{DataDetailsPanel-DiyjEXqK.cjs → DataDetailsPanel-BDoD6pxx.cjs} +7 -7
  43. package/dist/{DataDetailsPanel-DiyjEXqK.cjs.map → DataDetailsPanel-BDoD6pxx.cjs.map} +1 -1
  44. package/dist/{DataDetailsPanel-CohEKPm4.js → DataDetailsPanel-BU05psHL.js} +7 -7
  45. package/dist/{DataDetailsPanel-CohEKPm4.js.map → DataDetailsPanel-BU05psHL.js.map} +1 -1
  46. package/dist/{DataKeysAndValues-PwOmGxyp.js → DataKeysAndValues-B56je3sK.js} +2 -2
  47. package/dist/{DataKeysAndValues-PwOmGxyp.js.map → DataKeysAndValues-B56je3sK.js.map} +1 -1
  48. package/dist/{DataKeysAndValues-DsH6AbAo.cjs → DataKeysAndValues-BbKeVxrQ.cjs} +2 -2
  49. package/dist/{DataKeysAndValues-DsH6AbAo.cjs.map → DataKeysAndValues-BbKeVxrQ.cjs.map} +1 -1
  50. package/dist/{DataList-CUhRQAv6.js → DataList-B7ho6PrJ.js} +8 -8
  51. package/dist/{DataList-CUhRQAv6.js.map → DataList-B7ho6PrJ.js.map} +1 -1
  52. package/dist/{DataList-Cj0mfk19.cjs → DataList-DTIdllb-.cjs} +8 -8
  53. package/dist/{DataList-Cj0mfk19.cjs.map → DataList-DTIdllb-.cjs.map} +1 -1
  54. package/dist/{DataPanel-Coc9h35I.cjs → DataPanel-BRRAvWYQ.cjs} +10 -10
  55. package/dist/{DataPanel-Coc9h35I.cjs.map → DataPanel-BRRAvWYQ.cjs.map} +1 -1
  56. package/dist/{DataPanel-IgB9D5PO.js → DataPanel-pVr5LVaK.js} +10 -10
  57. package/dist/{DataPanel-IgB9D5PO.js.map → DataPanel-pVr5LVaK.js.map} +1 -1
  58. package/dist/{Dialog-BvWF9HE-.cjs → Dialog-Duy3M1ny.cjs} +3 -3
  59. package/dist/{Dialog-BvWF9HE-.cjs.map → Dialog-Duy3M1ny.cjs.map} +1 -1
  60. package/dist/{Dialog-DaWtxwd9.js → Dialog-OBPu3rl2.js} +3 -3
  61. package/dist/{Dialog-DaWtxwd9.js.map → Dialog-OBPu3rl2.js.map} +1 -1
  62. package/dist/{EmptyState-DxDHlYqD.cjs → EmptyState-Dc-sP95H.cjs} +2 -2
  63. package/dist/{EmptyState-DxDHlYqD.cjs.map → EmptyState-Dc-sP95H.cjs.map} +1 -1
  64. package/dist/{EmptyState-P-Gy898T.js → EmptyState-i88y1x75.js} +2 -2
  65. package/dist/{EmptyState-P-Gy898T.js.map → EmptyState-i88y1x75.js.map} +1 -1
  66. package/dist/{ErrorBoundary-B5GjmA6V.cjs → ErrorBoundary-Bwoum0sT.cjs} +3 -3
  67. package/dist/{ErrorBoundary-B5GjmA6V.cjs.map → ErrorBoundary-Bwoum0sT.cjs.map} +1 -1
  68. package/dist/{ErrorBoundary-Cat3KU86.js → ErrorBoundary-BzmaWe2y.js} +3 -3
  69. package/dist/{ErrorBoundary-Cat3KU86.js.map → ErrorBoundary-BzmaWe2y.js.map} +1 -1
  70. package/dist/{FilterBar-PSQ1OwqH.js → FilterBar-Kmn6gMgO.js} +14 -15
  71. package/dist/FilterBar-Kmn6gMgO.js.map +1 -0
  72. package/dist/{FilterBar-BSP2UTjc.cjs → FilterBar-jBz6yaNu.cjs} +13 -14
  73. package/dist/FilterBar-jBz6yaNu.cjs.map +1 -0
  74. package/dist/{LogsDataList-BI2C5OJz.js → LogsDataList-Cdo_U0Ei.js} +5 -5
  75. package/dist/{LogsDataList-BI2C5OJz.js.map → LogsDataList-Cdo_U0Ei.js.map} +1 -1
  76. package/dist/{LogsDataList-CCIfUPGo.cjs → LogsDataList-z0Y2X8P5.cjs} +5 -5
  77. package/dist/{LogsDataList-CCIfUPGo.cjs.map → LogsDataList-z0Y2X8P5.cjs.map} +1 -1
  78. package/dist/{MarkdownRenderer-y65WGBhC.cjs → MarkdownRenderer-CUYpmuPh.cjs} +6 -6
  79. package/dist/{MarkdownRenderer-y65WGBhC.cjs.map → MarkdownRenderer-CUYpmuPh.cjs.map} +1 -1
  80. package/dist/{MarkdownRenderer-CI30RqdB.js → MarkdownRenderer-CY8LGt-l.js} +6 -6
  81. package/dist/{MarkdownRenderer-CI30RqdB.js.map → MarkdownRenderer-CY8LGt-l.js.map} +1 -1
  82. package/dist/MarkdownRenderer.css +77 -6
  83. package/dist/{Message-jj56lxNL.cjs → Message-CgO_SxI4.cjs} +20 -9
  84. package/dist/Message-CgO_SxI4.cjs.map +1 -0
  85. package/dist/{Message-CWzi5F_Q.js → Message-DnnCoSef.js} +20 -9
  86. package/dist/{Message-CWzi5F_Q.js.map → Message-DnnCoSef.js.map} +1 -1
  87. package/dist/{MessageScroller-CGsfTd1Z.cjs → MessageScroller-D-mK1uuu.cjs} +50 -26
  88. package/dist/MessageScroller-D-mK1uuu.cjs.map +1 -0
  89. package/dist/{MessageScroller-DvaKlm4O.js → MessageScroller-nV_zBF3H.js} +50 -26
  90. package/dist/MessageScroller-nV_zBF3H.js.map +1 -0
  91. package/dist/Metadata-5GJlO4GU.cjs +32 -0
  92. package/dist/Metadata-5GJlO4GU.cjs.map +1 -0
  93. package/dist/Metadata-DlVgmRTA.js +27 -0
  94. package/dist/Metadata-DlVgmRTA.js.map +1 -0
  95. package/dist/{MetricsCard-BEwiS7Pe.cjs → MetricsCard-DojbLiEx.cjs} +19 -6
  96. package/dist/MetricsCard-DojbLiEx.cjs.map +1 -0
  97. package/dist/{MetricsCard-ua6C6b8a.js → MetricsCard-kAqSCPPe.js} +20 -7
  98. package/dist/MetricsCard-kAqSCPPe.js.map +1 -0
  99. package/dist/{MetricsKpiCard-OHbAElTl.js → MetricsKpiCard-1blTbzUs.js} +6 -6
  100. package/dist/{MetricsKpiCard-OHbAElTl.js.map → MetricsKpiCard-1blTbzUs.js.map} +1 -1
  101. package/dist/{MetricsKpiCard-By_-sagx.cjs → MetricsKpiCard-C_9GvRAp.cjs} +6 -6
  102. package/dist/{MetricsKpiCard-By_-sagx.cjs.map → MetricsKpiCard-C_9GvRAp.cjs.map} +1 -1
  103. package/dist/{MetricsLineChart-4SwxBbQx.js → MetricsLineChart-4w5lpH63.js} +3 -3
  104. package/dist/{MetricsLineChart-4SwxBbQx.js.map → MetricsLineChart-4w5lpH63.js.map} +1 -1
  105. package/dist/{MetricsLineChart-tZxsauau.cjs → MetricsLineChart-BnY9JKzc.cjs} +3 -3
  106. package/dist/{MetricsLineChart-tZxsauau.cjs.map → MetricsLineChart-BnY9JKzc.cjs.map} +1 -1
  107. package/dist/{MetricsStackedBarChart-D2QyS4-z.js → MetricsStackedBarChart-Bmk0OjYp.js} +7 -7
  108. package/dist/{MetricsStackedBarChart-D2QyS4-z.js.map → MetricsStackedBarChart-Bmk0OjYp.js.map} +1 -1
  109. package/dist/{MetricsStackedBarChart-CDLE76IB.cjs → MetricsStackedBarChart-CJQF99sc.cjs} +7 -7
  110. package/dist/{MetricsStackedBarChart-CDLE76IB.cjs.map → MetricsStackedBarChart-CJQF99sc.cjs.map} +1 -1
  111. package/dist/{MetricsTable-BSl81oNe.cjs → MetricsTable-CvMoo2vg.cjs} +3 -3
  112. package/dist/{MetricsTable-BSl81oNe.cjs.map → MetricsTable-CvMoo2vg.cjs.map} +1 -1
  113. package/dist/{MetricsTable-DID6LRoP.js → MetricsTable-DIjbD5Xk.js} +3 -3
  114. package/dist/{MetricsTable-DID6LRoP.js.map → MetricsTable-DIjbD5Xk.js.map} +1 -1
  115. package/dist/{Notice-JZ7SW7q6.cjs → Notice-B_KjMmA6.cjs} +3 -3
  116. package/dist/{Notice-JZ7SW7q6.cjs.map → Notice-B_KjMmA6.cjs.map} +1 -1
  117. package/dist/{Notice-C-8oOZZF.js → Notice-OSlG42lD.js} +2 -2
  118. package/dist/{Notice-C-8oOZZF.js.map → Notice-OSlG42lD.js.map} +1 -1
  119. package/dist/{PageLayout-DFRzcnkf.cjs → PageLayout-C0Fo3ZQC.cjs} +3 -3
  120. package/dist/{PageLayout-DFRzcnkf.cjs.map → PageLayout-C0Fo3ZQC.cjs.map} +1 -1
  121. package/dist/{PageLayout-CyM_Op3c.js → PageLayout-DLll7ZwB.js} +3 -3
  122. package/dist/{PageLayout-CyM_Op3c.js.map → PageLayout-DLll7ZwB.js.map} +1 -1
  123. package/dist/{SankeyChart-E68mYEs2.js → SankeyChart-lkM5cpOC.js} +3 -3
  124. package/dist/{SankeyChart-E68mYEs2.js.map → SankeyChart-lkM5cpOC.js.map} +1 -1
  125. package/dist/{SankeyChart-DHeJ45KN.cjs → SankeyChart-m50vrsBS.cjs} +3 -3
  126. package/dist/{SankeyChart-DHeJ45KN.cjs.map → SankeyChart-m50vrsBS.cjs.map} +1 -1
  127. package/dist/{Section-CyGQZR7U.cjs → Section-B8MIbDDs.cjs} +3 -3
  128. package/dist/{Section-CyGQZR7U.cjs.map → Section-B8MIbDDs.cjs.map} +1 -1
  129. package/dist/{Section-CWFQ8jNS.js → Section-C9Fgv-IF.js} +3 -3
  130. package/dist/{Section-CWFQ8jNS.js.map → Section-C9Fgv-IF.js.map} +1 -1
  131. package/dist/{ShareBar-3Z5np-NY.cjs → ShareBar-DERy_egz.cjs} +2 -2
  132. package/dist/{ShareBar-3Z5np-NY.cjs.map → ShareBar-DERy_egz.cjs.map} +1 -1
  133. package/dist/{ShareBar-D6dWWl4C.js → ShareBar-KrzzdcyI.js} +2 -2
  134. package/dist/{ShareBar-D6dWWl4C.js.map → ShareBar-KrzzdcyI.js.map} +1 -1
  135. package/dist/{Tree-BplQcY8u.cjs → Tree-Caz4FTCU.cjs} +3 -3
  136. package/dist/{Tree-BplQcY8u.cjs.map → Tree-Caz4FTCU.cjs.map} +1 -1
  137. package/dist/{Tree-CoLkeBCL.js → Tree-od43gLMO.js} +3 -3
  138. package/dist/{Tree-CoLkeBCL.js.map → Tree-od43gLMO.js.map} +1 -1
  139. package/dist/{Txt-BM6TVV_c.js → Txt-5efBsb2p.js} +2 -2
  140. package/dist/{Txt-BM6TVV_c.js.map → Txt-5efBsb2p.js.map} +1 -1
  141. package/dist/{Txt-BnoSqxKE.cjs → Txt-_00wWxTd.cjs} +2 -2
  142. package/dist/{Txt-BnoSqxKE.cjs.map → Txt-_00wWxTd.cjs.map} +1 -1
  143. package/dist/{Workflow-DSWQ-ROz.cjs → Workflow-XR5L-3cJ.cjs} +15 -14
  144. package/dist/Workflow-XR5L-3cJ.cjs.map +1 -0
  145. package/dist/{Workflow-C3SlEdP-.js → Workflow-mIbUYdv0.js} +15 -14
  146. package/dist/Workflow-mIbUYdv0.js.map +1 -0
  147. package/dist/{activity-CcQZeDYi.cjs → activity-BprmG6yH.cjs} +10 -10
  148. package/dist/activity-BprmG6yH.cjs.map +1 -0
  149. package/dist/{activity-C8Ql81WM.js → activity-ClFChYfl.js} +10 -10
  150. package/dist/activity-ClFChYfl.js.map +1 -0
  151. package/dist/annotations.css +8 -0
  152. package/dist/{ask-user-DPznrqGO.js → ask-user-D4ezQ6pt.js} +5 -5
  153. package/dist/{ask-user-DPznrqGO.js.map → ask-user-D4ezQ6pt.js.map} +1 -1
  154. package/dist/{ask-user-C1p2PEYe.cjs → ask-user-DcnUNMM5.cjs} +5 -5
  155. package/dist/{ask-user-C1p2PEYe.cjs.map → ask-user-DcnUNMM5.cjs.map} +1 -1
  156. package/dist/{buttons-group-DkFlnMiL.js → buttons-group-DA_wORqQ.js} +2 -2
  157. package/dist/{buttons-group-DkFlnMiL.js.map → buttons-group-DA_wORqQ.js.map} +1 -1
  158. package/dist/{buttons-group-Dc6R7YSs.cjs → buttons-group-DM6_Kohs.cjs} +2 -2
  159. package/dist/{buttons-group-Dc6R7YSs.cjs.map → buttons-group-DM6_Kohs.cjs.map} +1 -1
  160. package/dist/chat-shell-context-0m1GVhS7.js +16 -0
  161. package/dist/chat-shell-context-0m1GVhS7.js.map +1 -0
  162. package/dist/chat-shell-context-ONCslAGn.cjs +39 -0
  163. package/dist/chat-shell-context-ONCslAGn.cjs.map +1 -0
  164. package/dist/{clear-filters-button-CNrRuHOY.js → clear-filters-button-C79dzuzA.js} +2 -2
  165. package/dist/{clear-filters-button-CNrRuHOY.js.map → clear-filters-button-C79dzuzA.js.map} +1 -1
  166. package/dist/{clear-filters-button-Buc973vw.cjs → clear-filters-button-CCO-y7kt.cjs} +2 -2
  167. package/dist/{clear-filters-button-Buc973vw.cjs.map → clear-filters-button-CCO-y7kt.cjs.map} +1 -1
  168. package/dist/{combobox-DIT_6xiG.cjs → combobox-i723LxeC.cjs} +33 -29
  169. package/dist/combobox-i723LxeC.cjs.map +1 -0
  170. package/dist/{combobox-D21no8t5.js → combobox-lbSxWRMl.js} +33 -29
  171. package/dist/combobox-lbSxWRMl.js.map +1 -0
  172. package/dist/{combobox-parts-C4phOq4t.cjs → combobox-parts-BeNqgCbj.cjs} +27 -12
  173. package/dist/combobox-parts-BeNqgCbj.cjs.map +1 -0
  174. package/dist/{combobox-parts-D90ir0Py.js → combobox-parts-C9o4UfH_.js} +22 -13
  175. package/dist/combobox-parts-C9o4UfH_.js.map +1 -0
  176. package/dist/components/AgentIndicator.cjs.js +1 -1
  177. package/dist/components/AgentIndicator.es.js +1 -1
  178. package/dist/components/AlertDialog.cjs.js +2 -2
  179. package/dist/components/AlertDialog.es.js +2 -2
  180. package/dist/components/AttachmentCard.cjs.js +1 -1
  181. package/dist/components/AttachmentCard.es.js +1 -1
  182. package/dist/components/Avatar.cjs.js +1 -1
  183. package/dist/components/Avatar.es.js +1 -1
  184. package/dist/components/Badge.cjs.js +1 -1
  185. package/dist/components/Badge.es.js +1 -1
  186. package/dist/components/Breadcrumb.cjs.js +6 -5
  187. package/dist/components/Breadcrumb.cjs.js.map +1 -1
  188. package/dist/components/Breadcrumb.es.js +6 -5
  189. package/dist/components/Breadcrumb.es.js.map +1 -1
  190. package/dist/components/Button.cjs.js +2 -2
  191. package/dist/components/Button.es.js +2 -2
  192. package/dist/components/ButtonsGroup.cjs.js +1 -1
  193. package/dist/components/ButtonsGroup.es.js +1 -1
  194. package/dist/components/Card.cjs.js +1 -1
  195. package/dist/components/Card.es.js +1 -1
  196. package/dist/components/ChartSkeleton.cjs.js +2 -2
  197. package/dist/components/ChartSkeleton.es.js +2 -2
  198. package/dist/components/ChartTooltip.cjs.js +1 -1
  199. package/dist/components/ChartTooltip.es.js +1 -1
  200. package/dist/components/ChatShell.cjs.js +33 -9
  201. package/dist/components/ChatShell.cjs.js.map +1 -1
  202. package/dist/components/ChatShell.es.js +33 -9
  203. package/dist/components/ChatShell.es.js.map +1 -1
  204. package/dist/components/Checkbox.cjs.js +1 -1
  205. package/dist/components/Checkbox.es.js +1 -1
  206. package/dist/components/ClampedText.cjs.js +3 -3
  207. package/dist/components/ClampedText.es.js +3 -3
  208. package/dist/components/ClearFiltersButton.cjs.js +1 -1
  209. package/dist/components/ClearFiltersButton.es.js +1 -1
  210. package/dist/components/CodeBlock.cjs.js +5 -5
  211. package/dist/components/CodeBlock.es.js +5 -5
  212. package/dist/components/CodeDiff.cjs.js +3 -3
  213. package/dist/components/CodeDiff.es.js +2 -2
  214. package/dist/components/CodeEditor.cjs.js +1 -1
  215. package/dist/components/CodeEditor.es.js +1 -1
  216. package/dist/components/Collapsible.cjs.js +1 -1
  217. package/dist/components/Collapsible.es.js +1 -1
  218. package/dist/components/CollapsibleBox.cjs.js +1 -1
  219. package/dist/components/CollapsibleBox.es.js +1 -1
  220. package/dist/components/Combobox.cjs.js +2 -2
  221. package/dist/components/Combobox.es.js +2 -2
  222. package/dist/components/Command.cjs.js +5 -5
  223. package/dist/components/Command.es.js +5 -5
  224. package/dist/components/CommandPalette.cjs.js +7 -7
  225. package/dist/components/CommandPalette.cjs.js.map +1 -1
  226. package/dist/components/CommandPalette.es.js +7 -7
  227. package/dist/components/CommandPalette.es.js.map +1 -1
  228. package/dist/components/Comment.cjs.js +1 -1
  229. package/dist/components/Comment.es.js +1 -1
  230. package/dist/components/CompactNumber.cjs.js +2 -2
  231. package/dist/components/CompactNumber.es.js +2 -2
  232. package/dist/components/Composer.cjs.js +1 -1
  233. package/dist/components/Composer.es.js +1 -1
  234. package/dist/components/ContextMenu.cjs.js +1 -1
  235. package/dist/components/ContextMenu.es.js +1 -1
  236. package/dist/components/CopyButton.cjs.js +1 -1
  237. package/dist/components/CopyButton.es.js +1 -1
  238. package/dist/components/DataCodeSection.cjs.js +1 -1
  239. package/dist/components/DataCodeSection.es.js +1 -1
  240. package/dist/components/DataDetailsPanel.cjs.js +1 -1
  241. package/dist/components/DataDetailsPanel.es.js +1 -1
  242. package/dist/components/DataKeysAndValues.cjs.js +1 -1
  243. package/dist/components/DataKeysAndValues.es.js +1 -1
  244. package/dist/components/DataList.cjs.js +3 -3
  245. package/dist/components/DataList.es.js +3 -3
  246. package/dist/components/DataPanel.cjs.js +1 -1
  247. package/dist/components/DataPanel.es.js +1 -1
  248. package/dist/components/DateRangeTimeline.cjs.js +9 -9
  249. package/dist/components/DateRangeTimeline.cjs.js.map +1 -1
  250. package/dist/components/DateRangeTimeline.es.js +9 -9
  251. package/dist/components/DateRangeTimeline.es.js.map +1 -1
  252. package/dist/components/DateTimePicker.cjs.js +75 -142
  253. package/dist/components/DateTimePicker.cjs.js.map +1 -1
  254. package/dist/components/DateTimePicker.es.js +79 -146
  255. package/dist/components/DateTimePicker.es.js.map +1 -1
  256. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  257. package/dist/components/DateTimeRangePicker.es.js +1 -1
  258. package/dist/components/Dialog.cjs.js +1 -1
  259. package/dist/components/Dialog.es.js +1 -1
  260. package/dist/components/DiffStat.cjs.js +1 -1
  261. package/dist/components/DiffStat.es.js +1 -1
  262. package/dist/components/DisabledFeatureButton.cjs.js +3 -3
  263. package/dist/components/DisabledFeatureButton.es.js +3 -3
  264. package/dist/components/DisclosureChevron.cjs.js +1 -1
  265. package/dist/components/DisclosureChevron.es.js +1 -1
  266. package/dist/components/Drawer.cjs.js +2 -2
  267. package/dist/components/Drawer.es.js +2 -2
  268. package/dist/components/DropdownMenu.cjs.js +1 -1
  269. package/dist/components/DropdownMenu.es.js +1 -1
  270. package/dist/components/EmptyState.cjs.js +1 -1
  271. package/dist/components/EmptyState.es.js +1 -1
  272. package/dist/components/Entity.cjs.js +3 -3
  273. package/dist/components/Entity.es.js +3 -3
  274. package/dist/components/EntityHeader.cjs.js +2 -2
  275. package/dist/components/EntityHeader.es.js +2 -2
  276. package/dist/components/Entry.cjs.js +1 -1
  277. package/dist/components/Entry.es.js +1 -1
  278. package/dist/components/EnvironmentVariablesEditor.cjs.js +6 -6
  279. package/dist/components/EnvironmentVariablesEditor.es.js +6 -6
  280. package/dist/components/ErrorBoundary.cjs.js +1 -1
  281. package/dist/components/ErrorBoundary.es.js +1 -1
  282. package/dist/components/Field.cjs.js +2 -2
  283. package/dist/components/Field.es.js +2 -2
  284. package/dist/components/FileDropBackdrop.cjs.js +1 -1
  285. package/dist/components/FileDropBackdrop.es.js +1 -1
  286. package/dist/components/FilterBar.cjs.js +3 -3
  287. package/dist/components/FilterBar.es.js +3 -3
  288. package/dist/components/FormFieldBlocks.cjs.js +5 -5
  289. package/dist/components/FormFieldBlocks.es.js +6 -6
  290. package/dist/components/Header.cjs.js +1 -1
  291. package/dist/components/Header.es.js +1 -1
  292. package/dist/components/HoverCard.cjs.js +1 -1
  293. package/dist/components/HoverCard.es.js +1 -1
  294. package/dist/components/Input.cjs.js +1 -1
  295. package/dist/components/Input.es.js +1 -1
  296. package/dist/components/InputGroup.cjs.js +1 -1
  297. package/dist/components/InputGroup.es.js +1 -1
  298. package/dist/components/InputNumber.cjs.js +3 -3
  299. package/dist/components/InputNumber.es.js +3 -3
  300. package/dist/components/JSONSchemaForm.cjs.js +4 -4
  301. package/dist/components/JSONSchemaForm.es.js +4 -4
  302. package/dist/components/Kbd.cjs.js +1 -1
  303. package/dist/components/Kbd.es.js +1 -1
  304. package/dist/components/KeyValueList.cjs.js +2 -2
  305. package/dist/components/KeyValueList.es.js +2 -2
  306. package/dist/components/ListSearch.cjs.js +1 -1
  307. package/dist/components/ListSearch.es.js +1 -1
  308. package/dist/components/LogsDataList.cjs.js +2 -2
  309. package/dist/components/LogsDataList.es.js +2 -2
  310. package/dist/components/MainHeader.cjs.js +1 -1
  311. package/dist/components/MainHeader.es.js +1 -1
  312. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  313. package/dist/components/MarkdownRenderer.es.js +1 -1
  314. package/dist/components/Message.cjs.js +1 -1
  315. package/dist/components/Message.es.js +1 -1
  316. package/dist/components/MessageScroller.cjs.js +1 -1
  317. package/dist/components/MessageScroller.es.js +1 -1
  318. package/dist/components/Metadata.cjs.js +3 -0
  319. package/dist/components/Metadata.d.ts +1 -0
  320. package/dist/components/Metadata.es.js +1 -0
  321. package/dist/components/Meter.cjs.js +3 -3
  322. package/dist/components/Meter.es.js +3 -3
  323. package/dist/components/MetricsCard.cjs.js +1 -1
  324. package/dist/components/MetricsCard.es.js +1 -1
  325. package/dist/components/MetricsKpiCard.cjs.js +1 -1
  326. package/dist/components/MetricsKpiCard.es.js +1 -1
  327. package/dist/components/MetricsLineChart.cjs.js +1 -1
  328. package/dist/components/MetricsLineChart.es.js +1 -1
  329. package/dist/components/MetricsStackedBarChart.cjs.js +1 -1
  330. package/dist/components/MetricsStackedBarChart.es.js +1 -1
  331. package/dist/components/MetricsTable.cjs.js +1 -1
  332. package/dist/components/MetricsTable.es.js +1 -1
  333. package/dist/components/Notice.cjs.js +1 -1
  334. package/dist/components/Notice.es.js +1 -1
  335. package/dist/components/PageHeader.cjs.js +1 -1
  336. package/dist/components/PageHeader.es.js +1 -1
  337. package/dist/components/PageLayout.cjs.js +1 -1
  338. package/dist/components/PageLayout.es.js +1 -1
  339. package/dist/components/Popover.cjs.js +1 -1
  340. package/dist/components/Popover.es.js +1 -1
  341. package/dist/components/PrevNextNav.cjs.js +1 -1
  342. package/dist/components/PrevNextNav.es.js +1 -1
  343. package/dist/components/ProductAvatar.cjs.js +2 -2
  344. package/dist/components/ProductAvatar.es.js +2 -2
  345. package/dist/components/ProductBadge.cjs.js +2 -2
  346. package/dist/components/ProductBadge.es.js +2 -2
  347. package/dist/components/PropertyFilter.cjs.js +9 -9
  348. package/dist/components/PropertyFilter.cjs.js.map +1 -1
  349. package/dist/components/PropertyFilter.es.js +9 -9
  350. package/dist/components/PropertyFilter.es.js.map +1 -1
  351. package/dist/components/RadioGroup.cjs.js +1 -1
  352. package/dist/components/RadioGroup.es.js +1 -1
  353. package/dist/components/RelativeTimestamp.cjs.js +6 -30
  354. package/dist/components/RelativeTimestamp.cjs.js.map +1 -1
  355. package/dist/components/RelativeTimestamp.es.js +7 -31
  356. package/dist/components/RelativeTimestamp.es.js.map +1 -1
  357. package/dist/components/RuleBuilder.cjs.js +22 -22
  358. package/dist/components/RuleBuilder.cjs.js.map +1 -1
  359. package/dist/components/RuleBuilder.es.js +5 -5
  360. package/dist/components/SankeyChart.cjs.js +1 -1
  361. package/dist/components/SankeyChart.es.js +1 -1
  362. package/dist/components/SavedViews.cjs.js +9 -9
  363. package/dist/components/SavedViews.es.js +9 -9
  364. package/dist/components/ScatterPlotChart.cjs.js +2 -2
  365. package/dist/components/ScatterPlotChart.es.js +2 -2
  366. package/dist/components/ScrollArea.cjs.js +1 -1
  367. package/dist/components/ScrollArea.es.js +1 -1
  368. package/dist/components/SearchInput.cjs.js +2 -2
  369. package/dist/components/SearchInput.es.js +2 -2
  370. package/dist/components/Section.cjs.js +1 -1
  371. package/dist/components/Section.es.js +1 -1
  372. package/dist/components/SectionCard.cjs.js +1 -1
  373. package/dist/components/SectionCard.es.js +1 -1
  374. package/dist/components/SegmentedControl.cjs.js +3 -3
  375. package/dist/components/SegmentedControl.es.js +3 -3
  376. package/dist/components/Select.cjs.js +1 -1
  377. package/dist/components/Select.es.js +1 -1
  378. package/dist/components/ShareBar.cjs.js +1 -1
  379. package/dist/components/ShareBar.es.js +1 -1
  380. package/dist/components/SideDialog.cjs.js +8 -8
  381. package/dist/components/SideDialog.es.js +8 -8
  382. package/dist/components/Sidebar.cjs.js +14 -14
  383. package/dist/components/Sidebar.cjs.js.map +1 -1
  384. package/dist/components/Sidebar.es.js +15 -15
  385. package/dist/components/Sidebar.es.js.map +1 -1
  386. package/dist/components/Skeleton.cjs.js +1 -1
  387. package/dist/components/Skeleton.es.js +1 -1
  388. package/dist/components/Spinner.cjs.js +1 -1
  389. package/dist/components/Spinner.es.js +1 -1
  390. package/dist/components/StatusIndicators.cjs.js +3 -3
  391. package/dist/components/StatusIndicators.es.js +3 -3
  392. package/dist/components/Steps.cjs.js +73 -3
  393. package/dist/components/Steps.cjs.js.map +1 -1
  394. package/dist/components/Steps.es.js +73 -4
  395. package/dist/components/Steps.es.js.map +1 -1
  396. package/dist/components/Switch.cjs.js +2 -2
  397. package/dist/components/Switch.es.js +2 -2
  398. package/dist/components/Table.cjs.js +4 -4
  399. package/dist/components/Table.es.js +4 -4
  400. package/dist/components/Tabs.cjs.js +2 -2
  401. package/dist/components/Tabs.es.js +2 -2
  402. package/dist/components/Text.cjs.js +1 -1
  403. package/dist/components/Text.es.js +1 -1
  404. package/dist/components/Textarea.cjs.js +2 -2
  405. package/dist/components/Textarea.es.js +2 -2
  406. package/dist/components/ThinkingLevel.cjs.js +5 -5
  407. package/dist/components/ThinkingLevel.cjs.js.map +1 -1
  408. package/dist/components/ThinkingLevel.es.js +5 -5
  409. package/dist/components/ThinkingLevel.es.js.map +1 -1
  410. package/dist/components/ThreadList.cjs.js +2 -2
  411. package/dist/components/ThreadList.es.js +2 -2
  412. package/dist/components/ThreadRail.cjs.js +8 -8
  413. package/dist/components/ThreadRail.cjs.js.map +1 -1
  414. package/dist/components/ThreadRail.es.js +8 -8
  415. package/dist/components/ThreadRail.es.js.map +1 -1
  416. package/dist/components/Toaster.cjs.js +4 -4
  417. package/dist/components/Toaster.es.js +3 -3
  418. package/dist/components/TokenBudget.cjs.js +3 -3
  419. package/dist/components/TokenBudget.es.js +2 -2
  420. package/dist/components/Tooltip.cjs.js +2 -2
  421. package/dist/components/Tooltip.es.js +2 -2
  422. package/dist/components/Tree.cjs.js +1 -1
  423. package/dist/components/Tree.es.js +1 -1
  424. package/dist/components/Truncate.cjs.js +3 -3
  425. package/dist/components/Truncate.es.js +3 -3
  426. package/dist/components/Txt.cjs.js +1 -1
  427. package/dist/components/Txt.es.js +1 -1
  428. package/dist/components/Workflow.cjs.js +1 -1
  429. package/dist/components/Workflow.es.js +1 -1
  430. package/dist/components/ai/activity.cjs.js +1 -1
  431. package/dist/components/ai/activity.es.js +1 -1
  432. package/dist/components/ai/annotations.cjs.js +836 -0
  433. package/dist/components/ai/annotations.cjs.js.map +1 -0
  434. package/dist/components/ai/annotations.d.ts +1 -0
  435. package/dist/components/ai/annotations.es.js +831 -0
  436. package/dist/components/ai/annotations.es.js.map +1 -0
  437. package/dist/components/ai/ask-user.cjs.js +1 -1
  438. package/dist/components/ai/ask-user.es.js +1 -1
  439. package/dist/components/ai/plan.cjs.js +6 -6
  440. package/dist/components/ai/plan.es.js +6 -6
  441. package/dist/components/ai/task-list.cjs.js +4 -4
  442. package/dist/components/ai/task-list.cjs.js.map +1 -1
  443. package/dist/components/ai/task-list.es.js +4 -4
  444. package/dist/components/ai/task-list.es.js.map +1 -1
  445. package/dist/components/ai/tool-approval.cjs.js +1 -1
  446. package/dist/components/ai/tool-approval.es.js +1 -1
  447. package/dist/components/ai/tool-call.cjs.js +7 -2
  448. package/dist/components/ai/tool-call.es.js +3 -3
  449. package/dist/components/ai/transcript-divider.cjs.js +1 -1
  450. package/dist/components/ai/transcript-divider.es.js +1 -1
  451. package/dist/{context-menu-Dv0NU0oM.js → context-menu-6_Kcs8kj.js} +3 -3
  452. package/dist/{context-menu-Dv0NU0oM.js.map → context-menu-6_Kcs8kj.js.map} +1 -1
  453. package/dist/{context-menu-DTFPCyae.cjs → context-menu-DwB7u7fB.cjs} +3 -3
  454. package/dist/{context-menu-DTFPCyae.cjs.map → context-menu-DwB7u7fB.cjs.map} +1 -1
  455. package/dist/{copy-button-BXrbevLn.js → copy-button-B-_Z6N6y.js} +2 -2
  456. package/dist/{copy-button-BXrbevLn.js.map → copy-button-B-_Z6N6y.js.map} +1 -1
  457. package/dist/{copy-button-DJAQ6_3o.cjs → copy-button-DuEUYvS2.cjs} +2 -2
  458. package/dist/{copy-button-DJAQ6_3o.cjs.map → copy-button-DuEUYvS2.cjs.map} +1 -1
  459. package/dist/{data-list-C4Vmq5HA.cjs → data-list-072hHK9L.cjs} +7 -7
  460. package/dist/{data-list-C4Vmq5HA.cjs.map → data-list-072hHK9L.cjs.map} +1 -1
  461. package/dist/{data-list-DHCOoLmj.js → data-list-GzbzPmYR.js} +7 -7
  462. package/dist/{data-list-DHCOoLmj.js.map → data-list-GzbzPmYR.js.map} +1 -1
  463. package/dist/{date-time-range-picker-CWGjoR3j.cjs → date-time-range-picker-Bq-8IPtS.cjs} +141 -112
  464. package/dist/date-time-range-picker-Bq-8IPtS.cjs.map +1 -0
  465. package/dist/{date-time-range-picker-CdSiXwB4.js → date-time-range-picker-DdNgKD87.js} +144 -115
  466. package/dist/date-time-range-picker-DdNgKD87.js.map +1 -0
  467. package/dist/domains/auth/components/permission-denied.cjs.js +1 -1
  468. package/dist/domains/auth/components/permission-denied.es.js +1 -1
  469. package/dist/domains/auth/components/session-expired.cjs.js +3 -3
  470. package/dist/domains/auth/components/session-expired.es.js +3 -3
  471. package/dist/domains/chat/activity/activity-stretch-line.cjs.js +2 -2
  472. package/dist/domains/chat/activity/activity-stretch-line.es.js +2 -2
  473. package/dist/domains/chat/activity/components/activity-fold.cjs.js +54 -58
  474. package/dist/domains/chat/activity/components/activity-fold.cjs.js.map +1 -1
  475. package/dist/domains/chat/activity/components/activity-fold.es.js +54 -58
  476. package/dist/domains/chat/activity/components/activity-fold.es.js.map +1 -1
  477. package/dist/domains/chat/activity/components/calls-panel.cjs.js +2 -2
  478. package/dist/domains/chat/activity/components/calls-panel.es.js +2 -2
  479. package/dist/domains/chat/activity/components/stretch-content.cjs.js +2 -2
  480. package/dist/domains/chat/activity/components/stretch-content.es.js +2 -2
  481. package/dist/domains/chat/activity/components/stretch-thought.cjs.js +1 -1
  482. package/dist/domains/chat/activity/components/stretch-thought.es.js +1 -1
  483. package/dist/domains/chat/activity/model/activity-segments.cjs.js +1 -1
  484. package/dist/domains/chat/activity/model/activity-segments.es.js +1 -1
  485. package/dist/domains/chat/activity/model/activity-words.cjs.js +7 -11
  486. package/dist/domains/chat/activity/model/activity-words.cjs.js.map +1 -1
  487. package/dist/domains/chat/activity/model/activity-words.es.js +8 -11
  488. package/dist/domains/chat/activity/model/activity-words.es.js.map +1 -1
  489. package/dist/domains/chat/activity.cjs.js +2 -5
  490. package/dist/domains/chat/activity.es.js +4 -5
  491. package/dist/domains/chat/attachments/attachment-preview-dialog.cjs.js +3 -3
  492. package/dist/domains/chat/attachments/attachment-preview-dialog.es.js +3 -3
  493. package/dist/domains/chat/attachments/composer-attachment-entry.cjs.js +2 -2
  494. package/dist/domains/chat/attachments/composer-attachment-entry.es.js +2 -2
  495. package/dist/domains/chat/attachments/composer-attachment-list.cjs.js +2 -2
  496. package/dist/domains/chat/attachments/composer-attachment-list.es.js +2 -2
  497. package/dist/domains/chat/attachments/composer-attachment.cjs.js +4 -4
  498. package/dist/domains/chat/attachments/composer-attachment.es.js +4 -4
  499. package/dist/domains/chat/attachments/message-attachment.cjs.js +2 -2
  500. package/dist/domains/chat/attachments/message-attachment.es.js +2 -2
  501. package/dist/domains/chat/attachments/message-image-attachment.cjs.js +2 -2
  502. package/dist/domains/chat/attachments/message-image-attachment.cjs.js.map +1 -1
  503. package/dist/domains/chat/attachments/message-image-attachment.es.js +2 -2
  504. package/dist/domains/chat/attachments/message-image-attachment.es.js.map +1 -1
  505. package/dist/domains/chat/components/badge-wrapper.cjs.js +2 -2
  506. package/dist/domains/chat/components/badge-wrapper.es.js +2 -2
  507. package/dist/domains/chat/components/loading-badge.cjs.js +2 -2
  508. package/dist/domains/chat/components/loading-badge.es.js +2 -2
  509. package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +4 -4
  510. package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +4 -4
  511. package/dist/domains/chat/components/section-label.cjs.js +1 -1
  512. package/dist/domains/chat/components/section-label.es.js +1 -1
  513. package/dist/domains/chat/context/chat-context.cjs.js +2 -0
  514. package/dist/domains/chat/context/chat-context.cjs.js.map +1 -1
  515. package/dist/domains/chat/context/chat-context.es.js +2 -1
  516. package/dist/domains/chat/context/chat-context.es.js.map +1 -1
  517. package/dist/domains/chat/knowledge/knowledge-links.cjs.js +1 -1
  518. package/dist/domains/chat/knowledge/knowledge-links.es.js +1 -1
  519. package/dist/domains/chat/knowledge/pinned-knowledge.cjs.js +3 -3
  520. package/dist/domains/chat/knowledge/pinned-knowledge.es.js +3 -3
  521. package/dist/domains/chat/knowledge.cjs.js +1 -1
  522. package/dist/domains/chat/knowledge.es.js +1 -1
  523. package/dist/domains/chat/messages/assistant-message-actions.cjs.js +2 -2
  524. package/dist/domains/chat/messages/assistant-message-actions.es.js +2 -2
  525. package/dist/domains/chat/messages/dataset-save-action.cjs.js +10 -10
  526. package/dist/domains/chat/messages/dataset-save-action.es.js +11 -11
  527. package/dist/domains/chat/messages/message-row.cjs.js +20 -20
  528. package/dist/domains/chat/messages/message-row.cjs.js.map +1 -1
  529. package/dist/domains/chat/messages/message-row.es.js +20 -20
  530. package/dist/domains/chat/messages/message-row.es.js.map +1 -1
  531. package/dist/domains/chat/messages/notification-signal-notice.cjs.js +5 -5
  532. package/dist/domains/chat/messages/notification-signal-notice.cjs.js.map +1 -1
  533. package/dist/domains/chat/messages/notification-signal-notice.es.js +5 -5
  534. package/dist/domains/chat/messages/notification-signal-notice.es.js.map +1 -1
  535. package/dist/domains/chat/messages/reasoning-content.cjs.js +1 -1
  536. package/dist/domains/chat/messages/reasoning-content.es.js +1 -1
  537. package/dist/domains/chat/messages/renderers/data-part-renderer.cjs.js +1 -1
  538. package/dist/domains/chat/messages/renderers/data-part-renderer.es.js +1 -1
  539. package/dist/domains/chat/messages/renderers/message-text.cjs.js +5 -5
  540. package/dist/domains/chat/messages/renderers/message-text.es.js +5 -5
  541. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
  542. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
  543. package/dist/domains/chat/messages/renderers/status-renderers.cjs.js +1 -1
  544. package/dist/domains/chat/messages/renderers/status-renderers.es.js +1 -1
  545. package/dist/domains/chat/messages/renderers/user-file-part-renderer.cjs.js +1 -1
  546. package/dist/domains/chat/messages/renderers/user-file-part-renderer.es.js +1 -1
  547. package/dist/domains/chat/messages/signal-badge.cjs.js +5 -5
  548. package/dist/domains/chat/messages/signal-badge.es.js +5 -5
  549. package/dist/domains/chat/messages/skill-message.cjs.js +4 -4
  550. package/dist/domains/chat/messages/skill-message.es.js +4 -4
  551. package/dist/domains/chat/messages/system-reminder-badge.cjs.js +1 -1
  552. package/dist/domains/chat/messages/system-reminder-badge.es.js +1 -1
  553. package/dist/domains/chat/messages/tripwire-notice.cjs.js +4 -4
  554. package/dist/domains/chat/messages/tripwire-notice.es.js +4 -4
  555. package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
  556. package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
  557. package/dist/domains/chat/tools/badges/agent-badge.cjs.js +1 -1
  558. package/dist/domains/chat/tools/badges/agent-badge.es.js +1 -1
  559. package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
  560. package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
  561. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.cjs.js +5 -5
  562. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js +5 -5
  563. package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +7 -6
  564. package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js.map +1 -1
  565. package/dist/domains/chat/tools/badges/code-mode-badge.es.js +7 -6
  566. package/dist/domains/chat/tools/badges/code-mode-badge.es.js.map +1 -1
  567. package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +5 -5
  568. package/dist/domains/chat/tools/badges/file-tree-badge.es.js +5 -5
  569. package/dist/domains/chat/tools/badges/knowledge-body-range.cjs.js +2 -2
  570. package/dist/domains/chat/tools/badges/knowledge-body-range.cjs.js.map +1 -1
  571. package/dist/domains/chat/tools/badges/knowledge-body-range.es.js +2 -2
  572. package/dist/domains/chat/tools/badges/knowledge-body-range.es.js.map +1 -1
  573. package/dist/domains/chat/tools/badges/knowledge-tool-badge.cjs.js +34 -28
  574. package/dist/domains/chat/tools/badges/knowledge-tool-badge.cjs.js.map +1 -1
  575. package/dist/domains/chat/tools/badges/knowledge-tool-badge.es.js +34 -28
  576. package/dist/domains/chat/tools/badges/knowledge-tool-badge.es.js.map +1 -1
  577. package/dist/domains/chat/tools/badges/mcp-task-chip.cjs.js +28 -24
  578. package/dist/domains/chat/tools/badges/mcp-task-chip.cjs.js.map +1 -1
  579. package/dist/domains/chat/tools/badges/mcp-task-chip.es.js +28 -24
  580. package/dist/domains/chat/tools/badges/mcp-task-chip.es.js.map +1 -1
  581. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +4 -4
  582. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +4 -4
  583. package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +8 -7
  584. package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js.map +1 -1
  585. package/dist/domains/chat/tools/badges/observation-marker-details.es.js +8 -7
  586. package/dist/domains/chat/tools/badges/observation-marker-details.es.js.map +1 -1
  587. package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +3 -3
  588. package/dist/domains/chat/tools/badges/observation-renderer.es.js +3 -3
  589. package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js +25 -34
  590. package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js.map +1 -1
  591. package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js +27 -36
  592. package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js.map +1 -1
  593. package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +1 -1
  594. package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
  595. package/dist/domains/chat/tools/badges/tool-badge.cjs.js +19 -26
  596. package/dist/domains/chat/tools/badges/tool-badge.cjs.js.map +1 -1
  597. package/dist/domains/chat/tools/badges/tool-badge.es.js +19 -26
  598. package/dist/domains/chat/tools/badges/tool-badge.es.js.map +1 -1
  599. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +12 -10
  600. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js.map +1 -1
  601. package/dist/domains/chat/tools/badges/workflow-badge.es.js +12 -10
  602. package/dist/domains/chat/tools/badges/workflow-badge.es.js.map +1 -1
  603. package/dist/domains/chat/tools/badges/workspace-data-parts.cjs.js +13 -0
  604. package/dist/domains/chat/tools/badges/workspace-data-parts.cjs.js.map +1 -1
  605. package/dist/domains/chat/tools/badges/workspace-data-parts.es.js +13 -1
  606. package/dist/domains/chat/tools/badges/workspace-data-parts.es.js.map +1 -1
  607. package/dist/domains/chat/tools/badges/workspace-link.cjs.js +1 -1
  608. package/dist/domains/chat/tools/badges/workspace-link.es.js +1 -1
  609. package/dist/domains/chat/tools/connect-prompt-tool.cjs.js +8 -8
  610. package/dist/domains/chat/tools/connect-prompt-tool.es.js +8 -8
  611. package/dist/domains/chat/tools/mcp-input-request-tool.cjs.js +5 -5
  612. package/dist/domains/chat/tools/mcp-input-request-tool.es.js +5 -5
  613. package/dist/domains/chat/tools/submit-plan-tool.cjs.js +4 -4
  614. package/dist/domains/chat/tools/submit-plan-tool.es.js +4 -4
  615. package/dist/domains/chat/tools/tool-card-kind.cjs.js +10 -5
  616. package/dist/domains/chat/tools/tool-card-kind.cjs.js.map +1 -1
  617. package/dist/domains/chat/tools/tool-card-kind.es.js +10 -5
  618. package/dist/domains/chat/tools/tool-card-kind.es.js.map +1 -1
  619. package/dist/domains/chat/tools/tool-card.cjs.js +1 -1
  620. package/dist/domains/chat/tools/tool-card.es.js +1 -1
  621. package/dist/domains/chat/tools/tool-groups.cjs.js +2 -2
  622. package/dist/domains/chat/tools/tool-groups.es.js +2 -2
  623. package/dist/domains/chat.cjs.js +6 -5
  624. package/dist/domains/chat.es.js +6 -6
  625. package/dist/domains/connect.cjs.js +1 -1
  626. package/dist/domains/connect.es.js +1 -1
  627. package/dist/domains/dashboards/components/dashboard-grid.cjs.js +11 -8
  628. package/dist/domains/dashboards/components/dashboard-grid.cjs.js.map +1 -1
  629. package/dist/domains/dashboards/components/dashboard-grid.es.js +11 -8
  630. package/dist/domains/dashboards/components/dashboard-grid.es.js.map +1 -1
  631. package/dist/domains/dashboards/components/dashboard-renderer.cjs.js +18 -7
  632. package/dist/domains/dashboards/components/dashboard-renderer.cjs.js.map +1 -1
  633. package/dist/domains/dashboards/components/dashboard-renderer.es.js +18 -7
  634. package/dist/domains/dashboards/components/dashboard-renderer.es.js.map +1 -1
  635. package/dist/domains/dashboards/components/widget-chrome.cjs.js +1 -1
  636. package/dist/domains/dashboards/components/widget-chrome.es.js +1 -1
  637. package/dist/domains/dashboards/components/widget-controls.cjs.js +16 -1
  638. package/dist/domains/dashboards/components/widget-controls.cjs.js.map +1 -1
  639. package/dist/domains/dashboards/components/widget-controls.es.js +16 -2
  640. package/dist/domains/dashboards/components/widget-controls.es.js.map +1 -1
  641. package/dist/domains/dashboards/components/widget-error.cjs.js +6 -3
  642. package/dist/domains/dashboards/components/widget-error.cjs.js.map +1 -1
  643. package/dist/domains/dashboards/components/widget-error.es.js +6 -3
  644. package/dist/domains/dashboards/components/widget-error.es.js.map +1 -1
  645. package/dist/domains/dashboards/kinds/kpis/kpis-widget.cjs.js +18 -4
  646. package/dist/domains/dashboards/kinds/kpis/kpis-widget.cjs.js.map +1 -1
  647. package/dist/domains/dashboards/kinds/kpis/kpis-widget.es.js +19 -5
  648. package/dist/domains/dashboards/kinds/kpis/kpis-widget.es.js.map +1 -1
  649. package/dist/domains/dashboards/kinds/kpis.cjs.js +1 -1
  650. package/dist/domains/dashboards/kinds/kpis.es.js +1 -1
  651. package/dist/domains/dashboards/kinds/scores/scores-widget.cjs.js +18 -9
  652. package/dist/domains/dashboards/kinds/scores/scores-widget.cjs.js.map +1 -1
  653. package/dist/domains/dashboards/kinds/scores/scores-widget.es.js +18 -9
  654. package/dist/domains/dashboards/kinds/scores/scores-widget.es.js.map +1 -1
  655. package/dist/domains/dashboards/kinds/table/table-cells.cjs.js +1 -1
  656. package/dist/domains/dashboards/kinds/table/table-cells.es.js +1 -1
  657. package/dist/domains/dashboards/kinds/table/table-tabs.cjs.js +12 -5
  658. package/dist/domains/dashboards/kinds/table/table-tabs.cjs.js.map +1 -1
  659. package/dist/domains/dashboards/kinds/table/table-tabs.es.js +12 -5
  660. package/dist/domains/dashboards/kinds/table/table-tabs.es.js.map +1 -1
  661. package/dist/domains/dashboards/kinds/table/table-view.cjs.js +7 -7
  662. package/dist/domains/dashboards/kinds/table/table-view.es.js +7 -7
  663. package/dist/domains/dashboards/kinds/table/table-widget.cjs.js +5 -2
  664. package/dist/domains/dashboards/kinds/table/table-widget.cjs.js.map +1 -1
  665. package/dist/domains/dashboards/kinds/table/table-widget.es.js +5 -2
  666. package/dist/domains/dashboards/kinds/table/table-widget.es.js.map +1 -1
  667. package/dist/domains/dashboards/kinds/table.cjs.js +1 -1
  668. package/dist/domains/dashboards/kinds/table.es.js +1 -1
  669. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.cjs.js +21 -14
  670. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.cjs.js.map +1 -1
  671. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.es.js +22 -15
  672. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.es.js.map +1 -1
  673. package/dist/domains/dashboards/kinds/timeseries.cjs.js +1 -1
  674. package/dist/domains/dashboards/kinds/timeseries.es.js +1 -1
  675. package/dist/domains/dashboards/lib/chrome.cjs.js.map +1 -1
  676. package/dist/domains/dashboards/lib/chrome.es.js.map +1 -1
  677. package/dist/domains/dashboards/lib/format.cjs.js +1 -1
  678. package/dist/domains/dashboards/lib/format.es.js +1 -1
  679. package/dist/domains/dashboards/lib/pin-actions.cjs.js +16 -0
  680. package/dist/domains/dashboards/lib/pin-actions.cjs.js.map +1 -0
  681. package/dist/domains/dashboards/lib/pin-actions.d.ts +1 -0
  682. package/dist/domains/dashboards/lib/pin-actions.es.js +15 -0
  683. package/dist/domains/dashboards/lib/pin-actions.es.js.map +1 -0
  684. package/dist/domains/dashboards/lib/requests.cjs.js +2 -2
  685. package/dist/domains/dashboards/lib/requests.es.js +2 -2
  686. package/dist/domains/dashboards/widget-kind.cjs.js.map +1 -1
  687. package/dist/domains/dashboards/widget-kind.es.js.map +1 -1
  688. package/dist/domains/dashboards.cjs.js +11 -10
  689. package/dist/domains/dashboards.es.js +11 -11
  690. package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.cjs.js +11 -11
  691. package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.es.js +11 -11
  692. package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-picker.cjs.js +3 -3
  693. package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-picker.es.js +3 -3
  694. package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.cjs.js +6 -6
  695. package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.es.js +6 -6
  696. package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js +7 -7
  697. package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js +7 -7
  698. package/dist/domains/knowledge/components/KnowledgePageCard.cjs.js +3 -2
  699. package/dist/domains/knowledge/components/KnowledgePageCard.cjs.js.map +1 -1
  700. package/dist/domains/knowledge/components/KnowledgePageCard.es.js +3 -2
  701. package/dist/domains/knowledge/components/KnowledgePageCard.es.js.map +1 -1
  702. package/dist/domains/knowledge/components/KnowledgePageDetail.cjs.js +11 -16
  703. package/dist/domains/knowledge/components/KnowledgePageDetail.cjs.js.map +1 -1
  704. package/dist/domains/knowledge/components/KnowledgePageDetail.es.js +11 -16
  705. package/dist/domains/knowledge/components/KnowledgePageDetail.es.js.map +1 -1
  706. package/dist/domains/knowledge/components/KnowledgePageExplorer.cjs.js +5 -5
  707. package/dist/domains/knowledge/components/KnowledgePageExplorer.es.js +5 -5
  708. package/dist/domains/knowledge/components/KnowledgePageGraph.cjs.js +11 -10
  709. package/dist/domains/knowledge/components/KnowledgePageGraph.cjs.js.map +1 -1
  710. package/dist/domains/knowledge/components/KnowledgePageGraph.es.js +10 -9
  711. package/dist/domains/knowledge/components/KnowledgePageGraph.es.js.map +1 -1
  712. package/dist/domains/knowledge/components/KnowledgePageTree.cjs.js +1 -1
  713. package/dist/domains/knowledge/components/KnowledgePageTree.es.js +1 -1
  714. package/dist/domains/llm/models-dev-logo-slugs.cjs.js +230 -0
  715. package/dist/domains/llm/models-dev-logo-slugs.cjs.js.map +1 -0
  716. package/dist/domains/llm/models-dev-logo-slugs.d.ts +1 -0
  717. package/dist/domains/llm/models-dev-logo-slugs.es.js +229 -0
  718. package/dist/domains/llm/models-dev-logo-slugs.es.js.map +1 -0
  719. package/dist/domains/llm/provider-logo-monogram.cjs.js +37 -0
  720. package/dist/domains/llm/provider-logo-monogram.cjs.js.map +1 -0
  721. package/dist/domains/llm/provider-logo-monogram.d.ts +1 -0
  722. package/dist/domains/llm/provider-logo-monogram.es.js +36 -0
  723. package/dist/domains/llm/provider-logo-monogram.es.js.map +1 -0
  724. package/dist/domains/llm/provider-logo.cjs.js +46 -17
  725. package/dist/domains/llm/provider-logo.cjs.js.map +1 -1
  726. package/dist/domains/llm/provider-logo.es.js +46 -17
  727. package/dist/domains/llm/provider-logo.es.js.map +1 -1
  728. package/dist/domains/llm/provider-map-icon.cjs.js +1 -1
  729. package/dist/domains/llm/provider-map-icon.es.js +1 -1
  730. package/dist/domains/llm.cjs.js +1 -1
  731. package/dist/domains/llm.es.js +1 -1
  732. package/dist/domains/logs/components/log-data-panel.cjs.js +11 -7
  733. package/dist/domains/logs/components/log-data-panel.cjs.js.map +1 -1
  734. package/dist/domains/logs/components/log-data-panel.es.js +11 -7
  735. package/dist/domains/logs/components/log-data-panel.es.js.map +1 -1
  736. package/dist/domains/logs/components/logs-error-content.cjs.js +1 -1
  737. package/dist/domains/logs/components/logs-error-content.es.js +1 -1
  738. package/dist/domains/logs/components/logs-list-view.cjs.js +2 -2
  739. package/dist/domains/logs/components/logs-list-view.es.js +2 -2
  740. package/dist/domains/logs/components/logs-saved-views.cjs.js +1 -1
  741. package/dist/domains/logs/components/logs-saved-views.es.js +1 -1
  742. package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
  743. package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
  744. package/dist/domains/logs/components/no-logs-info.cjs.js +3 -3
  745. package/dist/domains/logs/components/no-logs-info.cjs.js.map +1 -1
  746. package/dist/domains/logs/components/no-logs-info.es.js +3 -3
  747. package/dist/domains/logs/components/no-logs-info.es.js.map +1 -1
  748. package/dist/domains/logs/hooks/use-logs-filter-persistence.cjs.js +1 -1
  749. package/dist/domains/logs/hooks/use-logs-filter-persistence.es.js +1 -1
  750. package/dist/domains/logs.cjs.js +2 -2
  751. package/dist/domains/logs.es.js +2 -2
  752. package/dist/domains/mcps/components/mcp-app-tool-result.cjs.js +7 -8
  753. package/dist/domains/mcps/components/mcp-app-tool-result.cjs.js.map +1 -1
  754. package/dist/domains/mcps/components/mcp-app-tool-result.es.js +6 -7
  755. package/dist/domains/mcps/components/mcp-app-tool-result.es.js.map +1 -1
  756. package/dist/domains/mcps/components/mcp-app-viewer.cjs.js +2 -108
  757. package/dist/domains/mcps/components/mcp-app-viewer.es.js +1 -108
  758. package/dist/domains/mcps/hooks/use-mcp-app-tool-call.cjs.js +36 -0
  759. package/dist/domains/mcps/hooks/use-mcp-app-tool-call.cjs.js.map +1 -0
  760. package/dist/domains/mcps/hooks/use-mcp-app-tool-call.d.ts +1 -0
  761. package/dist/domains/mcps/hooks/use-mcp-app-tool-call.es.js +35 -0
  762. package/dist/domains/mcps/hooks/use-mcp-app-tool-call.es.js.map +1 -0
  763. package/dist/domains/memory/components/flame-graph.cjs.js +4 -4
  764. package/dist/domains/memory/components/flame-graph.es.js +4 -4
  765. package/dist/domains/memory/components/memory-studio-panel.cjs.js +6 -6
  766. package/dist/domains/memory/components/memory-studio-panel.es.js +6 -6
  767. package/dist/domains/memory/components/observation-detail-view.cjs.js +6 -6
  768. package/dist/domains/memory/components/observation-detail-view.es.js +6 -6
  769. package/dist/domains/memory/components/thread-context-progress.cjs.js +2 -2
  770. package/dist/domains/memory/components/thread-context-progress.es.js +2 -2
  771. package/dist/domains/memory/components.cjs.js +1 -1
  772. package/dist/domains/memory/components.es.js +1 -1
  773. package/dist/domains/metrics/components/agent-runs-card.cjs.js +7 -7
  774. package/dist/domains/metrics/components/agent-runs-card.es.js +7 -7
  775. package/dist/domains/metrics/components/breakdown/breakdown-entity-tab.cjs.js +2 -2
  776. package/dist/domains/metrics/components/breakdown/breakdown-entity-tab.es.js +2 -2
  777. package/dist/domains/metrics/components/breakdown/breakdown-figure.cjs.js +1 -1
  778. package/dist/domains/metrics/components/breakdown/breakdown-figure.es.js +1 -1
  779. package/dist/domains/metrics/components/breakdown/breakdown-models-tab.cjs.js +2 -2
  780. package/dist/domains/metrics/components/breakdown/breakdown-models-tab.es.js +2 -2
  781. package/dist/domains/metrics/components/breakdown/breakdown-row-mark.cjs.js +2 -2
  782. package/dist/domains/metrics/components/breakdown/breakdown-row-mark.es.js +2 -2
  783. package/dist/domains/metrics/components/breakdown/breakdown-row-name.cjs.js +1 -1
  784. package/dist/domains/metrics/components/breakdown/breakdown-row-name.es.js +1 -1
  785. package/dist/domains/metrics/components/breakdown/breakdown-tab-body.cjs.js +2 -2
  786. package/dist/domains/metrics/components/breakdown/breakdown-tab-body.es.js +2 -2
  787. package/dist/domains/metrics/components/breakdown/breakdown-table.cjs.js +8 -8
  788. package/dist/domains/metrics/components/breakdown/breakdown-table.es.js +8 -8
  789. package/dist/domains/metrics/components/breakdown/breakdown-text.cjs.js +1 -1
  790. package/dist/domains/metrics/components/breakdown/breakdown-text.es.js +1 -1
  791. package/dist/domains/metrics/components/breakdown/breakdown-trace-tab.cjs.js +2 -2
  792. package/dist/domains/metrics/components/breakdown/breakdown-trace-tab.es.js +2 -2
  793. package/dist/domains/metrics/components/breakdown-card.cjs.js +4 -4
  794. package/dist/domains/metrics/components/breakdown-card.es.js +4 -4
  795. package/dist/domains/metrics/components/card-action-buttons.cjs.js +1 -1
  796. package/dist/domains/metrics/components/card-action-buttons.es.js +1 -1
  797. package/dist/domains/metrics/components/chart-area.cjs.js +1 -1
  798. package/dist/domains/metrics/components/chart-area.es.js +1 -1
  799. package/dist/domains/metrics/components/chart-card-error.cjs.js +2 -2
  800. package/dist/domains/metrics/components/chart-card-error.es.js +2 -2
  801. package/dist/domains/metrics/components/chart-card.cjs.js +21 -5
  802. package/dist/domains/metrics/components/chart-card.cjs.js.map +1 -1
  803. package/dist/domains/metrics/components/chart-card.es.js +21 -5
  804. package/dist/domains/metrics/components/chart-card.es.js.map +1 -1
  805. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  806. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  807. package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.cjs.js +5 -5
  808. package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.es.js +5 -5
  809. package/dist/domains/metrics/components/failure-rate-card.cjs.js +7 -7
  810. package/dist/domains/metrics/components/failure-rate-card.es.js +7 -7
  811. package/dist/domains/metrics/components/kpi-card.cjs.js +1 -1
  812. package/dist/domains/metrics/components/kpi-card.cjs.js.map +1 -1
  813. package/dist/domains/metrics/components/kpi-card.es.js +1 -1
  814. package/dist/domains/metrics/components/kpi-card.es.js.map +1 -1
  815. package/dist/domains/metrics/components/latency-card.cjs.js +7 -7
  816. package/dist/domains/metrics/components/latency-card.es.js +7 -7
  817. package/dist/domains/metrics/components/metrics-time-range-chip.cjs.js +2 -2
  818. package/dist/domains/metrics/components/metrics-time-range-chip.es.js +2 -2
  819. package/dist/domains/metrics/components/scores-card.cjs.js +4 -4
  820. package/dist/domains/metrics/components/scores-card.es.js +4 -4
  821. package/dist/domains/metrics/components/token-usage-card.cjs.js +8 -8
  822. package/dist/domains/metrics/components/token-usage-card.es.js +8 -8
  823. package/dist/domains/metrics/components/trace-aggregate-card.cjs.js +1 -1
  824. package/dist/domains/metrics/components/trace-aggregate-card.es.js +1 -1
  825. package/dist/domains/metrics/components/trace-volume-card.cjs.js +4 -4
  826. package/dist/domains/metrics/components/trace-volume-card.es.js +4 -4
  827. package/dist/domains/metrics/components/usage-card.cjs.js +5 -5
  828. package/dist/domains/metrics/components/usage-card.es.js +5 -5
  829. package/dist/domains/metrics/components.cjs.js +9 -9
  830. package/dist/domains/metrics/components.es.js +9 -9
  831. package/dist/domains/metrics/drilldown.cjs.js +1 -1
  832. package/dist/domains/metrics/drilldown.es.js +1 -1
  833. package/dist/domains/metrics/hooks/use-metrics-activity.cjs.js +1 -1
  834. package/dist/domains/metrics/hooks/use-metrics-activity.es.js +1 -1
  835. package/dist/domains/metrics/hooks/use-metrics-latency.cjs.js +1 -1
  836. package/dist/domains/metrics/hooks/use-metrics-latency.es.js +1 -1
  837. package/dist/domains/metrics/hooks/use-metrics-scores.cjs.js +1 -1
  838. package/dist/domains/metrics/hooks/use-metrics-scores.es.js +1 -1
  839. package/dist/domains/metrics/hooks/use-metrics-span-aggregate.cjs.js +2 -2
  840. package/dist/domains/metrics/hooks/use-metrics-span-aggregate.es.js +2 -2
  841. package/dist/domains/metrics/hooks/use-metrics-trace-aggregate.cjs.js +1 -1
  842. package/dist/domains/metrics/hooks/use-metrics-trace-aggregate.es.js +1 -1
  843. package/dist/domains/metrics/hooks/use-metrics.cjs.js +1 -1
  844. package/dist/domains/metrics/hooks/use-metrics.es.js +1 -1
  845. package/dist/domains/metrics/hooks.cjs.js +5 -5
  846. package/dist/domains/metrics/hooks.es.js +5 -5
  847. package/dist/domains/metrics/lib/breakdown-table.cjs.js +2 -2
  848. package/dist/domains/metrics/lib/breakdown-table.es.js +2 -2
  849. package/dist/domains/metrics/lib/series-colors.cjs.js +279 -0
  850. package/dist/domains/metrics/lib/series-colors.cjs.js.map +1 -0
  851. package/dist/domains/metrics/lib/series-colors.d.ts +1 -0
  852. package/dist/domains/metrics/lib/series-colors.es.js +272 -0
  853. package/dist/domains/metrics/lib/series-colors.es.js.map +1 -0
  854. package/dist/domains/metrics/lib.cjs.js +9 -3
  855. package/dist/domains/metrics/lib.es.js +5 -4
  856. package/dist/domains/metrics.cjs.js +7 -1
  857. package/dist/domains/metrics.es.js +3 -2
  858. package/dist/domains/observability/components/observability-capability-gate.cjs.js +3 -3
  859. package/dist/domains/observability/components/observability-capability-gate.es.js +3 -3
  860. package/dist/domains/observability/components/observability-histogram.cjs.js +5 -5
  861. package/dist/domains/observability/components/observability-histogram.cjs.js.map +1 -1
  862. package/dist/domains/observability/components/observability-histogram.es.js +5 -5
  863. package/dist/domains/observability/components/observability-histogram.es.js.map +1 -1
  864. package/dist/domains/observability/components/observability-page-layout.cjs.js +2 -2
  865. package/dist/domains/observability/components/observability-page-layout.es.js +2 -2
  866. package/dist/domains/observability/hooks/use-observability-list-filters.cjs.js +3 -3
  867. package/dist/domains/observability/hooks/use-observability-list-filters.es.js +3 -3
  868. package/dist/domains/observability/observability-list-url-state.cjs.js +1 -1
  869. package/dist/domains/observability/observability-list-url-state.es.js +1 -1
  870. package/dist/domains/observability/saved-view-state.cjs.js +3 -3
  871. package/dist/domains/observability/saved-view-state.es.js +3 -3
  872. package/dist/domains/observability/saved-views/observability-saved-views.cjs.js +1 -1
  873. package/dist/domains/observability/saved-views/observability-saved-views.es.js +1 -1
  874. package/dist/domains/observability/saved-views/use-hosted-saved-views.cjs.js +1 -1
  875. package/dist/domains/observability/saved-views/use-hosted-saved-views.es.js +1 -1
  876. package/dist/domains/observability/saved-views.cjs.js +2 -2
  877. package/dist/domains/observability/saved-views.es.js +2 -2
  878. package/dist/domains/observability.cjs.js +6 -6
  879. package/dist/domains/observability.es.js +6 -6
  880. package/dist/domains/review/components/review-status-badge.cjs.js +1 -1
  881. package/dist/domains/review/components/review-status-badge.es.js +1 -1
  882. package/dist/domains/scores/components/score-as-item-dialog.cjs.js +1 -1
  883. package/dist/domains/scores/components/score-as-item-dialog.es.js +1 -1
  884. package/dist/domains/scores/components/score-data-panel.cjs.js +7 -7
  885. package/dist/domains/scores/components/score-data-panel.cjs.js.map +1 -1
  886. package/dist/domains/scores/components/score-data-panel.es.js +7 -7
  887. package/dist/domains/scores/components/score-data-panel.es.js.map +1 -1
  888. package/dist/domains/scores/components/span-scoring.cjs.js +4 -4
  889. package/dist/domains/scores/components/span-scoring.es.js +4 -4
  890. package/dist/domains/scores/components/trace-scores-list.cjs.js +5 -5
  891. package/dist/domains/scores/components/trace-scores-list.es.js +5 -5
  892. package/dist/domains/scores/components/trace-scores-tab.cjs.js +15 -19
  893. package/dist/domains/scores/components/trace-scores-tab.cjs.js.map +1 -1
  894. package/dist/domains/scores/components/trace-scores-tab.es.js +15 -19
  895. package/dist/domains/scores/components/trace-scores-tab.es.js.map +1 -1
  896. package/dist/domains/scores/components.cjs.js +1 -1
  897. package/dist/domains/scores/components.es.js +1 -1
  898. package/dist/domains/skills/skill-simple-form.cjs.js +4 -4
  899. package/dist/domains/skills/skill-simple-form.es.js +4 -4
  900. package/dist/domains/spans/components/spans-explorer-body.cjs.js +6 -6
  901. package/dist/domains/spans/components/spans-explorer-body.es.js +7 -7
  902. package/dist/domains/spans/components/spans-filter-bar.cjs.js +3 -3
  903. package/dist/domains/spans/components/spans-filter-bar.es.js +3 -3
  904. package/dist/domains/spans/hooks/use-spans-filter-bar.cjs.js +2 -2
  905. package/dist/domains/spans/hooks/use-spans-filter-bar.es.js +2 -2
  906. package/dist/domains/spans/hooks/use-spans-list-source.cjs.js +1 -1
  907. package/dist/domains/spans/hooks/use-spans-list-source.es.js +1 -1
  908. package/dist/domains/spans/hooks.cjs.js +1 -1
  909. package/dist/domains/spans/hooks.es.js +1 -1
  910. package/dist/domains/threads/components/threads-explorer-body.cjs.js +6 -6
  911. package/dist/domains/threads/components/threads-explorer-body.es.js +7 -7
  912. package/dist/domains/threads/components/threads-filter-bar.cjs.js +3 -3
  913. package/dist/domains/threads/components/threads-filter-bar.es.js +3 -3
  914. package/dist/domains/threads/hooks/use-threads-filter-bar.cjs.js +2 -2
  915. package/dist/domains/threads/hooks/use-threads-filter-bar.es.js +2 -2
  916. package/dist/domains/threads/hooks/use-threads-list-source.cjs.js +1 -1
  917. package/dist/domains/threads/hooks/use-threads-list-source.es.js +1 -1
  918. package/dist/domains/threads/hooks.cjs.js +1 -1
  919. package/dist/domains/threads/hooks.es.js +1 -1
  920. package/dist/domains/traces/components/columns-menu/columns-menu.cjs.js +1 -1
  921. package/dist/domains/traces/components/columns-menu/columns-menu.es.js +2 -2
  922. package/dist/domains/traces/components/feedback-thread.cjs.js +9 -9
  923. package/dist/domains/traces/components/feedback-thread.es.js +9 -9
  924. package/dist/domains/traces/components/format-trace-thread-messages.cjs.js +1 -1
  925. package/dist/domains/traces/components/format-trace-thread-messages.es.js +1 -1
  926. package/dist/domains/traces/components/no-traces-info.cjs.js +2 -2
  927. package/dist/domains/traces/components/no-traces-info.cjs.js.map +1 -1
  928. package/dist/domains/traces/components/no-traces-info.es.js +2 -2
  929. package/dist/domains/traces/components/no-traces-info.es.js.map +1 -1
  930. package/dist/domains/traces/components/shared.cjs.js +3 -3
  931. package/dist/domains/traces/components/shared.es.js +3 -3
  932. package/dist/domains/traces/components/span-data-panel-view.cjs.js +23 -23
  933. package/dist/domains/traces/components/span-data-panel-view.cjs.js.map +1 -1
  934. package/dist/domains/traces/components/span-data-panel-view.es.js +23 -23
  935. package/dist/domains/traces/components/span-data-panel-view.es.js.map +1 -1
  936. package/dist/domains/traces/components/span-details-view.cjs.js +3 -3
  937. package/dist/domains/traces/components/span-details-view.es.js +3 -3
  938. package/dist/domains/traces/components/span-outcome.cjs.js +1 -1
  939. package/dist/domains/traces/components/span-outcome.es.js +1 -1
  940. package/dist/domains/traces/components/span-outcome.utils.cjs.js +3 -3
  941. package/dist/domains/traces/components/span-outcome.utils.cjs.js.map +1 -1
  942. package/dist/domains/traces/components/span-outcome.utils.es.js +3 -3
  943. package/dist/domains/traces/components/span-outcome.utils.es.js.map +1 -1
  944. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +5 -5
  945. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +5 -5
  946. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +4 -4
  947. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +4 -4
  948. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +7 -7
  949. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +7 -7
  950. package/dist/domains/traces/components/span-payload/span-payload-attachment.cjs.js +1 -1
  951. package/dist/domains/traces/components/span-payload/span-payload-attachment.es.js +1 -1
  952. package/dist/domains/traces/components/span-payload/span-payload-json.cjs.js +2 -2
  953. package/dist/domains/traces/components/span-payload/span-payload-json.es.js +2 -2
  954. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +14 -9
  955. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js.map +1 -1
  956. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +14 -9
  957. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js.map +1 -1
  958. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +1 -1
  959. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +1 -1
  960. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +3 -3
  961. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +3 -3
  962. package/dist/domains/traces/components/span-payload/span-payload-registry.cjs.js +1 -1
  963. package/dist/domains/traces/components/span-payload/span-payload-registry.es.js +1 -1
  964. package/dist/domains/traces/components/span-payload/span-payload-section.cjs.js +7 -7
  965. package/dist/domains/traces/components/span-payload/span-payload-section.es.js +7 -7
  966. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +1 -1
  967. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +1 -1
  968. package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js +3 -3
  969. package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +3 -3
  970. package/dist/domains/traces/components/span-payload/span-processor-mutations.cjs.js +3 -3
  971. package/dist/domains/traces/components/span-payload/span-processor-mutations.es.js +3 -3
  972. package/dist/domains/traces/components/span-payload/span-signal-details.cjs.js +4 -4
  973. package/dist/domains/traces/components/span-payload/span-signal-details.es.js +4 -4
  974. package/dist/domains/traces/components/span-payload/span-tools-section.cjs.js +6 -6
  975. package/dist/domains/traces/components/span-payload/span-tools-section.es.js +6 -6
  976. package/dist/domains/traces/components/span-payload.cjs.js +4 -4
  977. package/dist/domains/traces/components/span-payload.es.js +4 -4
  978. package/dist/domains/traces/components/span-prompt-changes.cjs.js +17 -10
  979. package/dist/domains/traces/components/span-prompt-changes.cjs.js.map +1 -1
  980. package/dist/domains/traces/components/span-prompt-changes.es.js +17 -10
  981. package/dist/domains/traces/components/span-prompt-changes.es.js.map +1 -1
  982. package/dist/domains/traces/components/span-rows.cjs.js +1 -1
  983. package/dist/domains/traces/components/span-rows.es.js +1 -1
  984. package/dist/domains/traces/components/span-summary-description.cjs.js +3 -3
  985. package/dist/domains/traces/components/span-summary-description.es.js +3 -3
  986. package/dist/domains/traces/components/span-timeline-row.cjs.js +10 -10
  987. package/dist/domains/traces/components/span-timeline-row.es.js +10 -10
  988. package/dist/domains/traces/components/span-timing-hover-card.cjs.js +3 -3
  989. package/dist/domains/traces/components/span-timing-hover-card.es.js +3 -3
  990. package/dist/domains/traces/components/span-token-usage.cjs.js +2 -2
  991. package/dist/domains/traces/components/span-token-usage.es.js +2 -2
  992. package/dist/domains/traces/components/span-token-usage.utils.cjs.js +2 -2
  993. package/dist/domains/traces/components/span-token-usage.utils.cjs.js.map +1 -1
  994. package/dist/domains/traces/components/span-token-usage.utils.es.js +2 -2
  995. package/dist/domains/traces/components/span-token-usage.utils.es.js.map +1 -1
  996. package/dist/domains/traces/components/span-type-badge.cjs.js +1 -1
  997. package/dist/domains/traces/components/span-type-badge.es.js +1 -1
  998. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +3 -3
  999. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +3 -3
  1000. package/dist/domains/traces/components/thread-trace/thread-trace-list.cjs.js +2 -2
  1001. package/dist/domains/traces/components/thread-trace/thread-trace-list.es.js +2 -2
  1002. package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +4 -4
  1003. package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +4 -4
  1004. package/dist/domains/traces/components/thread-trace/thread-trace-root.cjs.js +3 -3
  1005. package/dist/domains/traces/components/thread-trace/thread-trace-root.es.js +3 -3
  1006. package/dist/domains/traces/components/thread-trace/thread-trace-row.cjs.js +5 -5
  1007. package/dist/domains/traces/components/thread-trace/thread-trace-row.es.js +5 -5
  1008. package/dist/domains/traces/components/thread-trace/thread-trace-span-panel.cjs.js +1 -1
  1009. package/dist/domains/traces/components/thread-trace/thread-trace-span-panel.es.js +1 -1
  1010. package/dist/domains/traces/components/thread-trace/thread-trace-spans.cjs.js +6 -6
  1011. package/dist/domains/traces/components/thread-trace/thread-trace-spans.es.js +6 -6
  1012. package/dist/domains/traces/components/thread-trace.cjs.js +3 -3
  1013. package/dist/domains/traces/components/thread-trace.es.js +3 -3
  1014. package/dist/domains/traces/components/thread-view-by-trace.cjs.js +7 -7
  1015. package/dist/domains/traces/components/thread-view-by-trace.es.js +7 -7
  1016. package/dist/domains/traces/components/thread-view-skeleton.cjs.js +5 -5
  1017. package/dist/domains/traces/components/thread-view-skeleton.es.js +5 -5
  1018. package/dist/domains/traces/components/timeline-name-col.cjs.js +6 -6
  1019. package/dist/domains/traces/components/timeline-name-col.es.js +6 -6
  1020. package/dist/domains/traces/components/timeline-timing-col.cjs.js +4 -4
  1021. package/dist/domains/traces/components/timeline-timing-col.es.js +4 -4
  1022. package/dist/domains/traces/components/trace-columns-menu.cjs.js +5 -5
  1023. package/dist/domains/traces/components/trace-columns-menu.es.js +5 -5
  1024. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +13 -13
  1025. package/dist/domains/traces/components/trace-data-panel-view.es.js +13 -13
  1026. package/dist/domains/traces/components/trace-data-panel.cjs.js +2 -2
  1027. package/dist/domains/traces/components/trace-data-panel.es.js +2 -2
  1028. package/dist/domains/traces/components/trace-details-view.cjs.js +3 -3
  1029. package/dist/domains/traces/components/trace-details-view.es.js +3 -3
  1030. package/dist/domains/traces/components/trace-error-cell.cjs.js +2 -2
  1031. package/dist/domains/traces/components/trace-error-cell.es.js +2 -2
  1032. package/dist/domains/traces/components/trace-error-summary.cjs.js +2 -2
  1033. package/dist/domains/traces/components/trace-error-summary.es.js +2 -2
  1034. package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
  1035. package/dist/domains/traces/components/trace-id-button.es.js +1 -1
  1036. package/dist/domains/traces/components/trace-messages-panel.cjs.js +1 -1
  1037. package/dist/domains/traces/components/trace-messages-panel.es.js +1 -1
  1038. package/dist/domains/traces/components/trace-messages-skeleton.cjs.js +1 -1
  1039. package/dist/domains/traces/components/trace-messages-skeleton.es.js +1 -1
  1040. package/dist/domains/traces/components/trace-span-panel.cjs.js +3 -3
  1041. package/dist/domains/traces/components/trace-span-panel.es.js +3 -3
  1042. package/dist/domains/traces/components/trace-span-timeline-markers.cjs.js +6 -6
  1043. package/dist/domains/traces/components/trace-span-timeline-markers.es.js +6 -6
  1044. package/dist/domains/traces/components/trace-span-timeline.cjs.js +5 -5
  1045. package/dist/domains/traces/components/trace-span-timeline.es.js +5 -5
  1046. package/dist/domains/traces/components/trace-span-tree-skeleton.cjs.js +2 -2
  1047. package/dist/domains/traces/components/trace-span-tree-skeleton.es.js +2 -2
  1048. package/dist/domains/traces/components/trace-span-tree.cjs.js +2 -2
  1049. package/dist/domains/traces/components/trace-span-tree.es.js +2 -2
  1050. package/dist/domains/traces/components/trace-status-value.cjs.js +1 -1
  1051. package/dist/domains/traces/components/trace-status-value.es.js +1 -1
  1052. package/dist/domains/traces/components/trace-summary-description.cjs.js +5 -5
  1053. package/dist/domains/traces/components/trace-summary-description.es.js +5 -5
  1054. package/dist/domains/traces/components/trace-thread-item-view.cjs.js +5 -5
  1055. package/dist/domains/traces/components/trace-thread-item-view.es.js +5 -5
  1056. package/dist/domains/traces/components/trace-thread-panel.cjs.js +1 -1
  1057. package/dist/domains/traces/components/trace-thread-panel.es.js +1 -1
  1058. package/dist/domains/traces/components/trace-timeline.cjs.js +1 -1
  1059. package/dist/domains/traces/components/trace-timeline.es.js +1 -1
  1060. package/dist/domains/traces/components/traces-error-content.cjs.js +2 -2
  1061. package/dist/domains/traces/components/traces-error-content.es.js +2 -2
  1062. package/dist/domains/traces/components/traces-explorer/traces-explorer-body.cjs.js +2 -2
  1063. package/dist/domains/traces/components/traces-explorer/traces-explorer-body.es.js +2 -2
  1064. package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-menu.cjs.js +1 -1
  1065. package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-menu.es.js +1 -1
  1066. package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-provider.cjs.js +1 -1
  1067. package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-provider.es.js +1 -1
  1068. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.cjs.js +2 -2
  1069. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.es.js +2 -2
  1070. package/dist/domains/traces/components/traces-explorer/traces-explorer-histogram.cjs.js +1 -1
  1071. package/dist/domains/traces/components/traces-explorer/traces-explorer-histogram.es.js +1 -1
  1072. package/dist/domains/traces/components/traces-explorer/traces-explorer-layout.cjs.js +2 -2
  1073. package/dist/domains/traces/components/traces-explorer/traces-explorer-layout.es.js +2 -2
  1074. package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.cjs.js +2 -2
  1075. package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.es.js +2 -2
  1076. package/dist/domains/traces/components/traces-explorer/traces-explorer-list.cjs.js +1 -1
  1077. package/dist/domains/traces/components/traces-explorer/traces-explorer-list.es.js +1 -1
  1078. package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.cjs.js +6 -6
  1079. package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.es.js +6 -6
  1080. package/dist/domains/traces/components/traces-explorer/traces-explorer-root.cjs.js +2 -2
  1081. package/dist/domains/traces/components/traces-explorer/traces-explorer-root.es.js +3 -3
  1082. package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.cjs.js +1 -1
  1083. package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.es.js +1 -1
  1084. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.cjs.js +2 -2
  1085. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.es.js +2 -2
  1086. package/dist/domains/traces/components/traces-explorer.cjs.js +4 -4
  1087. package/dist/domains/traces/components/traces-explorer.es.js +4 -4
  1088. package/dist/domains/traces/components/traces-list-mode-toggle.cjs.js +2 -2
  1089. package/dist/domains/traces/components/traces-list-mode-toggle.es.js +2 -2
  1090. package/dist/domains/traces/components/traces-list-view.cjs.js +10 -10
  1091. package/dist/domains/traces/components/traces-list-view.es.js +10 -10
  1092. package/dist/domains/traces/components/traces-page-skeleton.cjs.js +2 -2
  1093. package/dist/domains/traces/components/traces-page-skeleton.es.js +2 -2
  1094. package/dist/domains/traces/components/traces-spans-switch.cjs.js +3 -3
  1095. package/dist/domains/traces/components/traces-spans-switch.es.js +3 -3
  1096. package/dist/domains/traces/components.cjs.js +15 -15
  1097. package/dist/domains/traces/components.es.js +15 -15
  1098. package/dist/domains/traces/hooks/use-download-trace-json.cjs.js +1 -1
  1099. package/dist/domains/traces/hooks/use-download-trace-json.es.js +1 -1
  1100. package/dist/domains/traces/hooks/use-traces-list-source.cjs.js +1 -1
  1101. package/dist/domains/traces/hooks/use-traces-list-source.es.js +1 -1
  1102. package/dist/domains/traces/hooks.cjs.js +4 -4
  1103. package/dist/domains/traces/hooks.es.js +4 -4
  1104. package/dist/domains/traces/utils/span-utils.cjs.js +2 -2
  1105. package/dist/domains/traces/utils/span-utils.cjs.js.map +1 -1
  1106. package/dist/domains/traces/utils/span-utils.es.js +2 -2
  1107. package/dist/domains/traces/utils/span-utils.es.js.map +1 -1
  1108. package/dist/domains/traces/utils.cjs.js +2 -2
  1109. package/dist/domains/traces/utils.es.js +2 -2
  1110. package/dist/domains/traces.cjs.js +2 -2
  1111. package/dist/domains/traces.es.js +2 -2
  1112. package/dist/domains/workflows/components/workflow-combobox.cjs.js +4 -3
  1113. package/dist/domains/workflows/components/workflow-combobox.cjs.js.map +1 -1
  1114. package/dist/domains/workflows/components/workflow-combobox.es.js +4 -3
  1115. package/dist/domains/workflows/components/workflow-combobox.es.js.map +1 -1
  1116. package/dist/domains/workflows/components/workflow-entity-header.cjs.js +6 -6
  1117. package/dist/domains/workflows/components/workflow-entity-header.cjs.js.map +1 -1
  1118. package/dist/domains/workflows/components/workflow-entity-header.es.js +6 -6
  1119. package/dist/domains/workflows/components/workflow-entity-header.es.js.map +1 -1
  1120. package/dist/domains/workflows/components/workflow-information.cjs.js +10 -10
  1121. package/dist/domains/workflows/components/workflow-information.es.js +10 -10
  1122. package/dist/domains/workflows/components/workflow-layout.cjs.js +3 -3
  1123. package/dist/domains/workflows/components/workflow-layout.es.js +2 -2
  1124. package/dist/domains/workflows/components/workflow-run-status-icon.cjs.js +3 -3
  1125. package/dist/domains/workflows/components/workflow-run-status-icon.es.js +3 -3
  1126. package/dist/domains/workflows/components/workflow-step-detail.cjs.js +4 -4
  1127. package/dist/domains/workflows/components/workflow-step-detail.es.js +4 -4
  1128. package/dist/domains/workflows/components/workflows-list/no-workflows-info.cjs.js +2 -2
  1129. package/dist/domains/workflows/components/workflows-list/no-workflows-info.es.js +2 -2
  1130. package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +11 -11
  1131. package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +11 -11
  1132. package/dist/domains/workflows/context/playground-workflow-run-provider.cjs.js +1 -1
  1133. package/dist/domains/workflows/context/playground-workflow-run-provider.es.js +1 -1
  1134. package/dist/domains/workflows/context/use-stream-for-run.cjs.js +1 -1
  1135. package/dist/domains/workflows/context/use-stream-for-run.es.js +1 -1
  1136. package/dist/domains/workflows/context/workflow-run-provider.cjs.js +1 -1
  1137. package/dist/domains/workflows/context/workflow-run-provider.es.js +1 -1
  1138. package/dist/domains/workflows/runs/workflow-run-details.cjs.js +2 -2
  1139. package/dist/domains/workflows/runs/workflow-run-details.es.js +2 -2
  1140. package/dist/domains/workflows/runs/workflow-run-list.cjs.js +26 -21
  1141. package/dist/domains/workflows/runs/workflow-run-list.cjs.js.map +1 -1
  1142. package/dist/domains/workflows/runs/workflow-run-list.es.js +26 -21
  1143. package/dist/domains/workflows/runs/workflow-run-list.es.js.map +1 -1
  1144. package/dist/domains/workflows/workflow/data/use-workflow-data.cjs.js +1 -1
  1145. package/dist/domains/workflows/workflow/data/use-workflow-data.es.js +1 -1
  1146. package/dist/domains/workflows/workflow/data/workflow-data-button.cjs.js +1 -1
  1147. package/dist/domains/workflows/workflow/data/workflow-data-button.es.js +1 -1
  1148. package/dist/domains/workflows/workflow/data/workflow-data-inspector.cjs.js +5 -5
  1149. package/dist/domains/workflows/workflow/data/workflow-data-inspector.es.js +5 -5
  1150. package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js +1 -1
  1151. package/dist/domains/workflows/workflow/input/workflow-json-input.es.js +1 -1
  1152. package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js +8 -8
  1153. package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js.map +1 -1
  1154. package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js +8 -8
  1155. package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js.map +1 -1
  1156. package/dist/domains/workflows/workflow/use-workflow-graph-nodes.cjs.js +1 -1
  1157. package/dist/domains/workflows/workflow/use-workflow-graph-nodes.es.js +1 -1
  1158. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.cjs.js +1 -1
  1159. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +1 -1
  1160. package/dist/domains/workflows/workflow/use-workflow-trigger.cjs.js +3 -3
  1161. package/dist/domains/workflows/workflow/use-workflow-trigger.es.js +3 -3
  1162. package/dist/domains/workflows/workflow/utils.cjs.js +2 -2
  1163. package/dist/domains/workflows/workflow/utils.es.js +2 -2
  1164. package/dist/domains/workflows/workflow/workflow-body-graph.cjs.js +1 -1
  1165. package/dist/domains/workflows/workflow/workflow-body-graph.es.js +1 -1
  1166. package/dist/domains/workflows/workflow/workflow-cancel-button.cjs.js +1 -1
  1167. package/dist/domains/workflows/workflow/workflow-cancel-button.es.js +1 -1
  1168. package/dist/domains/workflows/workflow/workflow-card.cjs.js +1 -1
  1169. package/dist/domains/workflows/workflow/workflow-card.es.js +1 -1
  1170. package/dist/domains/workflows/workflow/workflow-data-edge.cjs.js +1 -1
  1171. package/dist/domains/workflows/workflow/workflow-data-edge.es.js +1 -1
  1172. package/dist/domains/workflows/workflow/workflow-debug-mode-switch.cjs.js +1 -1
  1173. package/dist/domains/workflows/workflow/workflow-debug-mode-switch.es.js +1 -1
  1174. package/dist/domains/workflows/workflow/workflow-debug-step-controls.cjs.js +1 -1
  1175. package/dist/domains/workflows/workflow/workflow-debug-step-controls.es.js +1 -1
  1176. package/dist/domains/workflows/workflow/workflow-graph-boundary.cjs.js +6 -6
  1177. package/dist/domains/workflows/workflow/workflow-graph-boundary.es.js +6 -6
  1178. package/dist/domains/workflows/workflow/workflow-graph-groups.cjs.js +1 -1
  1179. package/dist/domains/workflows/workflow/workflow-graph-groups.cjs.js.map +1 -1
  1180. package/dist/domains/workflows/workflow/workflow-graph-groups.es.js +1 -1
  1181. package/dist/domains/workflows/workflow/workflow-graph-groups.es.js.map +1 -1
  1182. package/dist/domains/workflows/workflow/workflow-graph-inner.cjs.js +4 -4
  1183. package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +4 -4
  1184. package/dist/domains/workflows/workflow/workflow-graph-layout.cjs.js +1 -1
  1185. package/dist/domains/workflows/workflow/workflow-graph-layout.es.js +1 -1
  1186. package/dist/domains/workflows/workflow/workflow-graph-node.cjs.js +1 -1
  1187. package/dist/domains/workflows/workflow/workflow-graph-node.es.js +1 -1
  1188. package/dist/domains/workflows/workflow/workflow-graph.cjs.js +2 -2
  1189. package/dist/domains/workflows/workflow/workflow-graph.es.js +2 -2
  1190. package/dist/domains/workflows/workflow/workflow-input-data.cjs.js +6 -6
  1191. package/dist/domains/workflows/workflow/workflow-input-data.es.js +6 -6
  1192. package/dist/domains/workflows/workflow/workflow-input-type-toggle.cjs.js +2 -2
  1193. package/dist/domains/workflows/workflow/workflow-input-type-toggle.es.js +2 -2
  1194. package/dist/domains/workflows/workflow/workflow-map-config-dialog.cjs.js +3 -3
  1195. package/dist/domains/workflows/workflow/workflow-map-config-dialog.es.js +3 -3
  1196. package/dist/domains/workflows/workflow/workflow-nested-graph.cjs.js +1 -1
  1197. package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +1 -1
  1198. package/dist/domains/workflows/workflow/workflow-run-data.cjs.js +4 -4
  1199. package/dist/domains/workflows/workflow/workflow-run-data.es.js +4 -4
  1200. package/dist/domains/workflows/workflow/workflow-run-error.cjs.js +1 -1
  1201. package/dist/domains/workflows/workflow/workflow-run-error.es.js +1 -1
  1202. package/dist/domains/workflows/workflow/workflow-run-header.cjs.js +6 -6
  1203. package/dist/domains/workflows/workflow/workflow-run-header.es.js +6 -6
  1204. package/dist/domains/workflows/workflow/workflow-status.cjs.js +7 -7
  1205. package/dist/domains/workflows/workflow/workflow-status.es.js +7 -7
  1206. package/dist/domains/workflows/workflow/workflow-step-action-bar.cjs.js +2 -2
  1207. package/dist/domains/workflows/workflow/workflow-step-action-bar.es.js +2 -2
  1208. package/dist/domains/workflows/workflow/workflow-step-node-utils.cjs.js +1 -1
  1209. package/dist/domains/workflows/workflow/workflow-step-node-utils.es.js +1 -1
  1210. package/dist/domains/workflows/workflow/workflow-steps-status.cjs.js +1 -1
  1211. package/dist/domains/workflows/workflow/workflow-steps-status.es.js +1 -1
  1212. package/dist/domains/workflows/workflow/workflow-suspended-steps.cjs.js +10 -10
  1213. package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +10 -10
  1214. package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +12 -12
  1215. package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +12 -12
  1216. package/dist/domains/workflows/workflow/workflow-timeline-row.cjs.js +4 -4
  1217. package/dist/domains/workflows/workflow/workflow-timeline-row.es.js +4 -4
  1218. package/dist/domains/workflows/workflow/workflow-timeline.cjs.js +9 -9
  1219. package/dist/domains/workflows/workflow/workflow-timeline.es.js +9 -9
  1220. package/dist/domains/workflows/workflow/workflow-trigger-form.cjs.js +2 -2
  1221. package/dist/domains/workflows/workflow/workflow-trigger-form.es.js +2 -2
  1222. package/dist/domains/workflows/workflow/workflow-trigger-header.cjs.js +3 -3
  1223. package/dist/domains/workflows/workflow/workflow-trigger-header.es.js +3 -3
  1224. package/dist/domains/workflows/workflow/workflow-trigger.cjs.js +5 -5
  1225. package/dist/domains/workflows/workflow/workflow-trigger.es.js +5 -5
  1226. package/dist/domains/workflows.cjs.js +4 -4
  1227. package/dist/domains/workflows.es.js +4 -4
  1228. package/dist/domains/workspace/components/mount-icon.cjs.js +1 -1
  1229. package/dist/domains/workspace/components/mount-icon.es.js +1 -1
  1230. package/dist/domains/workspace/components/workspace-active-file.cjs.js +4 -4
  1231. package/dist/domains/workspace/components/workspace-active-file.es.js +4 -4
  1232. package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +10 -10
  1233. package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +10 -10
  1234. package/dist/domains/workspace/components/workspace-add-skill.cjs.js +1 -1
  1235. package/dist/domains/workspace/components/workspace-add-skill.es.js +1 -1
  1236. package/dist/domains/workspace/components/workspace-context.cjs.js +1 -1
  1237. package/dist/domains/workspace/components/workspace-context.es.js +1 -1
  1238. package/dist/domains/workspace/components/workspace-create-directory.cjs.js +4 -4
  1239. package/dist/domains/workspace/components/workspace-create-directory.es.js +4 -4
  1240. package/dist/domains/workspace/components/workspace-error.cjs.js +1 -1
  1241. package/dist/domains/workspace/components/workspace-error.es.js +1 -1
  1242. package/dist/domains/workspace/components/workspace-markdown-preview.cjs.js +2 -2
  1243. package/dist/domains/workspace/components/workspace-markdown-preview.es.js +2 -2
  1244. package/dist/domains/workspace/components/workspace-parts.cjs.js +5 -5
  1245. package/dist/domains/workspace/components/workspace-parts.es.js +5 -5
  1246. package/dist/domains/workspace/components/workspace-search.cjs.js +17 -20
  1247. package/dist/domains/workspace/components/workspace-search.cjs.js.map +1 -1
  1248. package/dist/domains/workspace/components/workspace-search.es.js +18 -21
  1249. package/dist/domains/workspace/components/workspace-search.es.js.map +1 -1
  1250. package/dist/domains/workspace/components/workspace-tree-view.cjs.js +1 -1
  1251. package/dist/domains/workspace/components/workspace-tree-view.es.js +1 -1
  1252. package/dist/domains/workspace/components/workspace-tree.cjs.js +11 -11
  1253. package/dist/domains/workspace/components/workspace-tree.cjs.js.map +1 -1
  1254. package/dist/domains/workspace/components/workspace-tree.es.js +11 -11
  1255. package/dist/domains/workspace/components/workspace-tree.es.js.map +1 -1
  1256. package/dist/domains/workspace/components/workspace.cjs.js +1 -1
  1257. package/dist/domains/workspace/components/workspace.es.js +1 -1
  1258. package/dist/domains/workspace.cjs.js +3 -3
  1259. package/dist/domains/workspace.es.js +3 -3
  1260. package/dist/{dropdown-menu-B4jY3J9e.js → dropdown-menu-DKoWI8kD.js} +2 -2
  1261. package/dist/{dropdown-menu-B4jY3J9e.js.map → dropdown-menu-DKoWI8kD.js.map} +1 -1
  1262. package/dist/{dropdown-menu-BETTTPBB.cjs → dropdown-menu-Dx-jCOIv.cjs} +2 -2
  1263. package/dist/{dropdown-menu-BETTTPBB.cjs.map → dropdown-menu-Dx-jCOIv.cjs.map} +1 -1
  1264. package/dist/ee/signals/components/entity-index-compact-grid.cjs.js +4 -4
  1265. package/dist/ee/signals/components/entity-index-compact-grid.es.js +4 -4
  1266. package/dist/ee/signals/components/entity-index-list.cjs.js +1 -1
  1267. package/dist/ee/signals/components/entity-index-list.es.js +1 -1
  1268. package/dist/ee/signals/components/entity-index-status.cjs.js +2 -2
  1269. package/dist/ee/signals/components/entity-index-status.es.js +2 -2
  1270. package/dist/ee/signals/components/signals-empty-state.cjs.js +12 -21
  1271. package/dist/ee/signals/components/signals-empty-state.cjs.js.map +1 -1
  1272. package/dist/ee/signals/components/signals-empty-state.es.js +12 -21
  1273. package/dist/ee/signals/components/signals-empty-state.es.js.map +1 -1
  1274. package/dist/ee/signals/components/trace-intelligence-entity-detail.cjs.js +5 -5
  1275. package/dist/ee/signals/components/trace-intelligence-entity-detail.es.js +5 -5
  1276. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +13 -13
  1277. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +14 -14
  1278. package/dist/ee/signals/examples-pager.cjs.js +2 -2
  1279. package/dist/ee/signals/examples-pager.es.js +2 -2
  1280. package/dist/ee/signals/flow-card.cjs.js +4 -4
  1281. package/dist/ee/signals/flow-card.es.js +4 -4
  1282. package/dist/ee/signals/lifeline-point.cjs.js +2 -2
  1283. package/dist/ee/signals/lifeline-point.es.js +2 -2
  1284. package/dist/ee/signals/lifeline-row.cjs.js +6 -6
  1285. package/dist/ee/signals/lifeline-row.cjs.js.map +1 -1
  1286. package/dist/ee/signals/lifeline-row.es.js +6 -6
  1287. package/dist/ee/signals/lifeline-row.es.js.map +1 -1
  1288. package/dist/ee/signals/noise-detail-panel.cjs.js +6 -6
  1289. package/dist/ee/signals/noise-detail-panel.es.js +6 -6
  1290. package/dist/ee/signals/sankey-signals-data.cjs.js +9 -5
  1291. package/dist/ee/signals/sankey-signals-data.cjs.js.map +1 -1
  1292. package/dist/ee/signals/sankey-signals-data.es.js +9 -5
  1293. package/dist/ee/signals/sankey-signals-data.es.js.map +1 -1
  1294. package/dist/ee/signals/sankey-signals.cjs.js +21 -12
  1295. package/dist/ee/signals/sankey-signals.cjs.js.map +1 -1
  1296. package/dist/ee/signals/sankey-signals.es.js +21 -12
  1297. package/dist/ee/signals/sankey-signals.es.js.map +1 -1
  1298. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +4 -4
  1299. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +4 -4
  1300. package/dist/ee/signals/settings/trace-signal-settings.cjs.js +7 -7
  1301. package/dist/ee/signals/settings/trace-signal-settings.es.js +7 -7
  1302. package/dist/ee/signals/signal-delta-column.cjs.js +3 -3
  1303. package/dist/ee/signals/signal-delta-column.es.js +3 -3
  1304. package/dist/ee/signals/signal-lifelines.cjs.js +5 -5
  1305. package/dist/ee/signals/signal-lifelines.es.js +5 -5
  1306. package/dist/ee/signals/signals-error-state.cjs.js +2 -2
  1307. package/dist/ee/signals/signals-error-state.es.js +2 -2
  1308. package/dist/ee/signals/snapshot-summary.cjs.js +15 -0
  1309. package/dist/ee/signals/snapshot-summary.cjs.js.map +1 -0
  1310. package/dist/ee/signals/snapshot-summary.d.ts +1 -0
  1311. package/dist/ee/signals/snapshot-summary.es.js +14 -0
  1312. package/dist/ee/signals/snapshot-summary.es.js.map +1 -0
  1313. package/dist/ee/signals/snapshot-timeline.cjs.js +4 -4
  1314. package/dist/ee/signals/snapshot-timeline.cjs.js.map +1 -1
  1315. package/dist/ee/signals/snapshot-timeline.es.js +4 -4
  1316. package/dist/ee/signals/snapshot-timeline.es.js.map +1 -1
  1317. package/dist/ee/signals/sortable-signal-headers.cjs.js +6 -6
  1318. package/dist/ee/signals/sortable-signal-headers.es.js +6 -6
  1319. package/dist/ee/signals/theme-compare.cjs.js +15 -7
  1320. package/dist/ee/signals/theme-compare.cjs.js.map +1 -1
  1321. package/dist/ee/signals/theme-compare.es.js +15 -7
  1322. package/dist/ee/signals/theme-compare.es.js.map +1 -1
  1323. package/dist/ee/signals/theme-detail-panel.cjs.js +13 -17
  1324. package/dist/ee/signals/theme-detail-panel.cjs.js.map +1 -1
  1325. package/dist/ee/signals/theme-detail-panel.es.js +13 -17
  1326. package/dist/ee/signals/theme-detail-panel.es.js.map +1 -1
  1327. package/dist/ee/signals/theme-filter-banner.cjs.js +7 -7
  1328. package/dist/ee/signals/theme-filter-banner.cjs.js.map +1 -1
  1329. package/dist/ee/signals/theme-filter-banner.es.js +7 -7
  1330. package/dist/ee/signals/theme-filter-banner.es.js.map +1 -1
  1331. package/dist/ee/signals/theme-lifelines.cjs.js +8 -5
  1332. package/dist/ee/signals/theme-lifelines.cjs.js.map +1 -1
  1333. package/dist/ee/signals/theme-lifelines.es.js +8 -5
  1334. package/dist/ee/signals/theme-lifelines.es.js.map +1 -1
  1335. package/dist/ee/signals/theme-trend-chart.cjs.js +3 -3
  1336. package/dist/ee/signals/theme-trend-chart.cjs.js.map +1 -1
  1337. package/dist/ee/signals/theme-trend-chart.es.js +3 -3
  1338. package/dist/ee/signals/theme-trend-chart.es.js.map +1 -1
  1339. package/dist/ee/signals/trace-insight-view.cjs.js +11 -13
  1340. package/dist/ee/signals/trace-insight-view.cjs.js.map +1 -1
  1341. package/dist/ee/signals/trace-insight-view.es.js +11 -13
  1342. package/dist/ee/signals/trace-insight-view.es.js.map +1 -1
  1343. package/dist/ee/signals/trace-intelligence-explainer.cjs.js +10 -15
  1344. package/dist/ee/signals/trace-intelligence-explainer.cjs.js.map +1 -1
  1345. package/dist/ee/signals/trace-intelligence-explainer.es.js +10 -15
  1346. package/dist/ee/signals/trace-intelligence-explainer.es.js.map +1 -1
  1347. package/dist/ee/signals/view-mode-tab.cjs.js +2 -2
  1348. package/dist/ee/signals/view-mode-tab.es.js +2 -2
  1349. package/dist/ee/signals.cjs.js +5 -5
  1350. package/dist/ee/signals.es.js +5 -5
  1351. package/dist/ee/topics/components/topic-trace-details-panel.cjs.js +1 -1
  1352. package/dist/ee/topics/components/topic-trace-details-panel.es.js +1 -1
  1353. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +4 -4
  1354. package/dist/ee/topics/components/topic-trace-summary-list.es.js +4 -4
  1355. package/dist/ee/topics/components/topics-layout.cjs.js +1 -1
  1356. package/dist/ee/topics/components/topics-layout.es.js +1 -1
  1357. package/dist/{field-error-id-DBSuJ3HM.js → field-error-id-6ZynvsRO.js} +2 -2
  1358. package/dist/{field-error-id-DBSuJ3HM.js.map → field-error-id-6ZynvsRO.js.map} +1 -1
  1359. package/dist/{field-error-id-nGAF0330.cjs → field-error-id-VimPQI_b.cjs} +2 -2
  1360. package/dist/{field-error-id-nGAF0330.cjs.map → field-error-id-VimPQI_b.cjs.map} +1 -1
  1361. package/dist/{filter-bar-chip-Cg-UbIwP.cjs → filter-bar-chip-DFsbUZ-V.cjs} +10 -10
  1362. package/dist/{filter-bar-chip-Cg-UbIwP.cjs.map → filter-bar-chip-DFsbUZ-V.cjs.map} +1 -1
  1363. package/dist/{filter-bar-chip-CABeKrtf.js → filter-bar-chip-NBtfDca9.js} +11 -11
  1364. package/dist/{filter-bar-chip-CABeKrtf.js.map → filter-bar-chip-NBtfDca9.js.map} +1 -1
  1365. package/dist/{filter-bar-time-range-qlV8p7hp.js → filter-bar-time-range-D9SnzR2J.js} +3 -3
  1366. package/dist/{filter-bar-time-range-qlV8p7hp.js.map → filter-bar-time-range-D9SnzR2J.js.map} +1 -1
  1367. package/dist/{filter-bar-time-range-zdM024JD.cjs → filter-bar-time-range-DlVNjw43.cjs} +3 -3
  1368. package/dist/{filter-bar-time-range-zdM024JD.cjs.map → filter-bar-time-range-DlVNjw43.cjs.map} +1 -1
  1369. package/dist/hooks/use-clock.cjs.js +34 -0
  1370. package/dist/hooks/use-clock.cjs.js.map +1 -0
  1371. package/dist/hooks/use-clock.d.ts +1 -0
  1372. package/dist/hooks/use-clock.es.js +33 -0
  1373. package/dist/hooks/use-clock.es.js.map +1 -0
  1374. package/dist/hooks/use-copy-to-clipboard.cjs.js +1 -1
  1375. package/dist/hooks/use-copy-to-clipboard.es.js +1 -1
  1376. package/dist/hooks/use-text-highlight.cjs.js +3 -5
  1377. package/dist/hooks/use-text-highlight.cjs.js.map +1 -1
  1378. package/dist/hooks/use-text-highlight.es.js +1 -3
  1379. package/dist/hooks/use-text-highlight.es.js.map +1 -1
  1380. package/dist/icons/ByteDanceIcon.cjs.js +37 -0
  1381. package/dist/icons/ByteDanceIcon.cjs.js.map +1 -0
  1382. package/dist/icons/ByteDanceIcon.d.ts +1 -0
  1383. package/dist/icons/ByteDanceIcon.es.js +34 -0
  1384. package/dist/icons/ByteDanceIcon.es.js.map +1 -0
  1385. package/dist/icons/CohereBrandIcon.cjs.js +34 -0
  1386. package/dist/icons/CohereBrandIcon.cjs.js.map +1 -0
  1387. package/dist/icons/CohereBrandIcon.d.ts +1 -0
  1388. package/dist/icons/CohereBrandIcon.es.js +31 -0
  1389. package/dist/icons/CohereBrandIcon.es.js.map +1 -0
  1390. package/dist/icons/FireworksIcon.cjs.js +22 -0
  1391. package/dist/icons/FireworksIcon.cjs.js.map +1 -0
  1392. package/dist/icons/FireworksIcon.d.ts +1 -0
  1393. package/dist/icons/FireworksIcon.es.js +19 -0
  1394. package/dist/icons/FireworksIcon.es.js.map +1 -0
  1395. package/dist/icons/Icon.cjs.js +1 -1
  1396. package/dist/icons/Icon.es.js +1 -1
  1397. package/dist/icons/LongCatIcon.cjs.js +22 -0
  1398. package/dist/icons/LongCatIcon.cjs.js.map +1 -0
  1399. package/dist/icons/LongCatIcon.d.ts +1 -0
  1400. package/dist/icons/LongCatIcon.es.js +19 -0
  1401. package/dist/icons/LongCatIcon.es.js.map +1 -0
  1402. package/dist/icons/MicrosoftIcon.cjs.js +34 -0
  1403. package/dist/icons/MicrosoftIcon.cjs.js.map +1 -0
  1404. package/dist/icons/MicrosoftIcon.d.ts +1 -0
  1405. package/dist/icons/MicrosoftIcon.es.js +31 -0
  1406. package/dist/icons/MicrosoftIcon.es.js.map +1 -0
  1407. package/dist/icons/MorphIcon.cjs.js +20 -0
  1408. package/dist/icons/MorphIcon.cjs.js.map +1 -0
  1409. package/dist/icons/MorphIcon.d.ts +1 -0
  1410. package/dist/icons/MorphIcon.es.js +17 -0
  1411. package/dist/icons/MorphIcon.es.js.map +1 -0
  1412. package/dist/icons/NousResearchIcon.cjs.js +19 -0
  1413. package/dist/icons/NousResearchIcon.cjs.js.map +1 -0
  1414. package/dist/icons/NousResearchIcon.d.ts +1 -0
  1415. package/dist/icons/NousResearchIcon.es.js +16 -0
  1416. package/dist/icons/NousResearchIcon.es.js.map +1 -0
  1417. package/dist/icons/NovaIcon.cjs.js +41 -0
  1418. package/dist/icons/NovaIcon.cjs.js.map +1 -0
  1419. package/dist/icons/NovaIcon.d.ts +1 -0
  1420. package/dist/icons/NovaIcon.es.js +38 -0
  1421. package/dist/icons/NovaIcon.es.js.map +1 -0
  1422. package/dist/icons/PerplexityIcon.cjs.js +21 -0
  1423. package/dist/icons/PerplexityIcon.cjs.js.map +1 -0
  1424. package/dist/icons/PerplexityIcon.d.ts +1 -0
  1425. package/dist/icons/PerplexityIcon.es.js +18 -0
  1426. package/dist/icons/PerplexityIcon.es.js.map +1 -0
  1427. package/dist/icons/SakanaIcon.cjs.js +20 -0
  1428. package/dist/icons/SakanaIcon.cjs.js.map +1 -0
  1429. package/dist/icons/SakanaIcon.d.ts +1 -0
  1430. package/dist/icons/SakanaIcon.es.js +17 -0
  1431. package/dist/icons/SakanaIcon.es.js.map +1 -0
  1432. package/dist/icons/StepFunIcon.cjs.js +35 -0
  1433. package/dist/icons/StepFunIcon.cjs.js.map +1 -0
  1434. package/dist/icons/StepFunIcon.d.ts +1 -0
  1435. package/dist/icons/StepFunIcon.es.js +32 -0
  1436. package/dist/icons/StepFunIcon.es.js.map +1 -0
  1437. package/dist/icons/TencentIcon.cjs.js +21 -0
  1438. package/dist/icons/TencentIcon.cjs.js.map +1 -0
  1439. package/dist/icons/TencentIcon.d.ts +1 -0
  1440. package/dist/icons/TencentIcon.es.js +18 -0
  1441. package/dist/icons/TencentIcon.es.js.map +1 -0
  1442. package/dist/icons/UpstageIcon.cjs.js +36 -0
  1443. package/dist/icons/UpstageIcon.cjs.js.map +1 -0
  1444. package/dist/icons/UpstageIcon.d.ts +1 -0
  1445. package/dist/icons/UpstageIcon.es.js +33 -0
  1446. package/dist/icons/UpstageIcon.es.js.map +1 -0
  1447. package/dist/{input-2hRXcZIu.cjs → input-BpnUsQSt.cjs} +4 -4
  1448. package/dist/{input-2hRXcZIu.cjs.map → input-BpnUsQSt.cjs.map} +1 -1
  1449. package/dist/{input-0l1uzOBZ.js → input-Cyit5ZSc.js} +4 -4
  1450. package/dist/{input-0l1uzOBZ.js.map → input-Cyit5ZSc.js.map} +1 -1
  1451. package/dist/{input-group-DVJLZDBL.cjs → input-group-DBCilXjT.cjs} +4 -4
  1452. package/dist/{input-group-DVJLZDBL.cjs.map → input-group-DBCilXjT.cjs.map} +1 -1
  1453. package/dist/{input-group-QKKV_ouF.js → input-group-NV4ZzKOk.js} +4 -4
  1454. package/dist/{input-group-QKKV_ouF.js.map → input-group-NV4ZzKOk.js.map} +1 -1
  1455. package/dist/layout/tabbed-container.cjs.js +1 -1
  1456. package/dist/layout/tabbed-container.es.js +1 -1
  1457. package/dist/lib/form/auto-form.cjs.js +1 -1
  1458. package/dist/lib/form/auto-form.es.js +1 -1
  1459. package/dist/lib/form/components/array-element-wrapper.cjs.js +4 -4
  1460. package/dist/lib/form/components/array-element-wrapper.es.js +4 -4
  1461. package/dist/lib/form/components/array-wrapper.cjs.js +2 -2
  1462. package/dist/lib/form/components/array-wrapper.es.js +2 -2
  1463. package/dist/lib/form/components/boolean-field.cjs.js +1 -1
  1464. package/dist/lib/form/components/boolean-field.es.js +1 -1
  1465. package/dist/lib/form/components/date-field.cjs.js +5 -5
  1466. package/dist/lib/form/components/date-field.es.js +5 -5
  1467. package/dist/lib/form/components/error-message.cjs.js +1 -1
  1468. package/dist/lib/form/components/error-message.es.js +1 -1
  1469. package/dist/lib/form/components/form-submit-row.cjs.js +2 -2
  1470. package/dist/lib/form/components/form-submit-row.es.js +2 -2
  1471. package/dist/lib/form/components/number-field.cjs.js +1 -1
  1472. package/dist/lib/form/components/number-field.es.js +1 -1
  1473. package/dist/lib/form/components/object-wrapper.cjs.js +3 -3
  1474. package/dist/lib/form/components/object-wrapper.es.js +3 -3
  1475. package/dist/lib/form/components/record-field.cjs.js +2 -2
  1476. package/dist/lib/form/components/record-field.es.js +2 -2
  1477. package/dist/lib/form/components/select-field.cjs.js +1 -1
  1478. package/dist/lib/form/components/select-field.es.js +1 -1
  1479. package/dist/lib/form/components/string-field.cjs.js +1 -1
  1480. package/dist/lib/form/components/string-field.es.js +1 -1
  1481. package/dist/lib/form/components/submit-button.cjs.js +1 -1
  1482. package/dist/lib/form/components/submit-button.es.js +1 -1
  1483. package/dist/lib/form/components/union-field.cjs.js +1 -1
  1484. package/dist/lib/form/components/union-field.es.js +1 -1
  1485. package/dist/lib/form/dynamic-form.cjs.js +2 -2
  1486. package/dist/lib/form/dynamic-form.es.js +2 -2
  1487. package/dist/{list-search-CkhsTFdG.js → list-search-DUcIMJTk.js} +2 -2
  1488. package/dist/{list-search-CkhsTFdG.js.map → list-search-DUcIMJTk.js.map} +1 -1
  1489. package/dist/{list-search-BtRno5As.cjs → list-search-yF02rvZt.cjs} +2 -2
  1490. package/dist/{list-search-BtRno5As.cjs.map → list-search-yF02rvZt.cjs.map} +1 -1
  1491. package/dist/mcp-app-viewer-BV7FI498.js +2051 -0
  1492. package/dist/mcp-app-viewer-BV7FI498.js.map +1 -0
  1493. package/dist/mcp-app-viewer-M3-pqAlo.cjs +2058 -0
  1494. package/dist/mcp-app-viewer-M3-pqAlo.cjs.map +1 -0
  1495. package/dist/new/layout/page-header.cjs.js +1 -1
  1496. package/dist/new/layout/page-header.es.js +1 -1
  1497. package/dist/new/settings.cjs.js +1 -1
  1498. package/dist/new/settings.es.js +1 -1
  1499. package/dist/{observability-saved-views-CjKTEp1V.js → observability-saved-views-Ch53fh5_.js} +9 -9
  1500. package/dist/{observability-saved-views-CjKTEp1V.js.map → observability-saved-views-Ch53fh5_.js.map} +1 -1
  1501. package/dist/{observability-saved-views-Daizz4tU.cjs → observability-saved-views-DgABvgat.cjs} +9 -9
  1502. package/dist/{observability-saved-views-Daizz4tU.cjs.map → observability-saved-views-DgABvgat.cjs.map} +1 -1
  1503. package/dist/{page-header-BykBsHUy.js → page-header-Maytcmgh.js} +3 -3
  1504. package/dist/{page-header-BB6yjtce.cjs.map → page-header-Maytcmgh.js.map} +1 -1
  1505. package/dist/{page-header-BB6yjtce.cjs → page-header-pZCts_WC.cjs} +3 -3
  1506. package/dist/page-header-pZCts_WC.cjs.map +1 -0
  1507. package/dist/{popover-CzHvTPk2.js → popover-BpMi52Tb.js} +3 -3
  1508. package/dist/{popover-CzHvTPk2.js.map → popover-BpMi52Tb.js.map} +1 -1
  1509. package/dist/{popover-BJqa6Hz6.cjs → popover-D9AfJmla.cjs} +3 -3
  1510. package/dist/{popover-BJqa6Hz6.cjs.map → popover-D9AfJmla.cjs.map} +1 -1
  1511. package/dist/primitives/chart-frame.cjs.js +2 -2
  1512. package/dist/primitives/chart-frame.es.js +2 -2
  1513. package/dist/primitives/chart-time-tick.cjs.js +2 -2
  1514. package/dist/primitives/chart-time-tick.es.js +2 -2
  1515. package/dist/primitives/charts/drag-selection.cjs.js +1 -1
  1516. package/dist/primitives/charts/drag-selection.es.js +1 -1
  1517. package/dist/primitives/menu-item.cjs.js +2 -2
  1518. package/dist/primitives/menu-item.es.js +2 -2
  1519. package/dist/primitives/menu-scroll-area.cjs.js +1 -1
  1520. package/dist/primitives/menu-scroll-area.es.js +1 -1
  1521. package/dist/primitives/resize-handle-indicator.cjs.js +1 -1
  1522. package/dist/primitives/resize-handle-indicator.es.js +1 -1
  1523. package/dist/primitives/trigger-button.cjs.js +2 -2
  1524. package/dist/primitives/trigger-button.es.js +2 -2
  1525. package/dist/{property-filter-applied--U5EZdaA.js → property-filter-applied-DoxQHG09.js} +8 -8
  1526. package/dist/{property-filter-applied--U5EZdaA.js.map → property-filter-applied-DoxQHG09.js.map} +1 -1
  1527. package/dist/{property-filter-applied-BkkIObRq.cjs → property-filter-applied-DuyL4S_K.cjs} +8 -8
  1528. package/dist/{property-filter-applied-BkkIObRq.cjs.map → property-filter-applied-DuyL4S_K.cjs.map} +1 -1
  1529. package/dist/resize/collapsible-panel.cjs.js +4 -4
  1530. package/dist/resize/collapsible-panel.cjs.js.map +1 -1
  1531. package/dist/resize/collapsible-panel.es.js +4 -4
  1532. package/dist/resize/collapsible-panel.es.js.map +1 -1
  1533. package/dist/resize/panel-drawer.cjs.js +3 -3
  1534. package/dist/resize/panel-drawer.es.js +3 -3
  1535. package/dist/resize/panel-icon-button.cjs.js +1 -2
  1536. package/dist/resize/panel-icon-button.cjs.js.map +1 -1
  1537. package/dist/resize/panel-icon-button.es.js +1 -1
  1538. package/dist/resize/separator.cjs.js +1 -1
  1539. package/dist/resize/separator.es.js +1 -1
  1540. package/dist/{scroll-area-C226l0v0.js → scroll-area-9-S7wfSs.js} +2 -2
  1541. package/dist/{scroll-area-C226l0v0.js.map → scroll-area-9-S7wfSs.js.map} +1 -1
  1542. package/dist/{scroll-area-BP4gPZ4G.cjs → scroll-area-BU_TorPW.cjs} +2 -2
  1543. package/dist/{scroll-area-BP4gPZ4G.cjs.map → scroll-area-BU_TorPW.cjs.map} +1 -1
  1544. package/dist/{select-Dg8L5ROX.cjs → select-CeukeSn_.cjs} +5 -5
  1545. package/dist/{select-Dg8L5ROX.cjs.map → select-CeukeSn_.cjs.map} +1 -1
  1546. package/dist/{select-BdIZEdcy.js → select-dNX9If-s.js} +5 -5
  1547. package/dist/{select-BdIZEdcy.js.map → select-dNX9If-s.js.map} +1 -1
  1548. package/dist/{settings-BaUeaO96.js → settings-BEw_bg12.js} +2 -2
  1549. package/dist/{settings-BaUeaO96.js.map → settings-BEw_bg12.js.map} +1 -1
  1550. package/dist/{settings-CUVqhBbf.cjs → settings-Bminohri.cjs} +2 -2
  1551. package/dist/{settings-CUVqhBbf.cjs.map → settings-Bminohri.cjs.map} +1 -1
  1552. package/dist/{span-payload-primitives-CKKIAVPJ.js → span-payload-primitives-BKkRpVVO.js} +12 -12
  1553. package/dist/{span-payload-primitives-CKKIAVPJ.js.map → span-payload-primitives-BKkRpVVO.js.map} +1 -1
  1554. package/dist/{span-payload-primitives-D4tHWN2W.cjs → span-payload-primitives-D2NWznGy.cjs} +12 -12
  1555. package/dist/{span-payload-primitives-D4tHWN2W.cjs.map → span-payload-primitives-D2NWznGy.cjs.map} +1 -1
  1556. package/dist/{spinner-CnLgLj9R.js → spinner-B9ykw74u.js} +2 -2
  1557. package/dist/{spinner-CnLgLj9R.js.map → spinner-B9ykw74u.js.map} +1 -1
  1558. package/dist/{spinner-C8ZxiA5C.cjs → spinner-oS6q4pwx.cjs} +3 -3
  1559. package/dist/{spinner-C8ZxiA5C.cjs.map → spinner-oS6q4pwx.cjs.map} +1 -1
  1560. package/dist/src/domains/chat/activity/index.d.ts +1 -3
  1561. package/dist/src/domains/chat/activity/model/activity-members.d.ts +1 -2
  1562. package/dist/src/domains/chat/activity/model/activity-words.d.ts +1 -2
  1563. package/dist/src/domains/chat/context/chat-context.d.ts +9 -0
  1564. package/dist/src/domains/chat/tools/badges/knowledge-tool-badge.d.ts +2 -1
  1565. package/dist/src/domains/chat/tools/badges/mcp-task-chip.d.ts +1 -1
  1566. package/dist/src/domains/chat/tools/badges/workspace-data-parts.d.ts +6 -0
  1567. package/dist/src/domains/chat/tools/tool-card-kind.d.ts +12 -2
  1568. package/dist/src/domains/dashboards/components/dashboard-grid.d.ts +4 -1
  1569. package/dist/src/domains/dashboards/components/dashboard-renderer.d.ts +22 -2
  1570. package/dist/src/domains/dashboards/components/widget-controls.d.ts +3 -0
  1571. package/dist/src/domains/dashboards/components/widget-error.d.ts +7 -2
  1572. package/dist/src/domains/dashboards/index.d.ts +2 -2
  1573. package/dist/src/domains/dashboards/kinds/kpis/kpis-widget.d.ts +1 -1
  1574. package/dist/src/domains/dashboards/kinds/scores/scores-widget.d.ts +1 -1
  1575. package/dist/src/domains/dashboards/lib/chrome.d.ts +5 -2
  1576. package/dist/src/domains/dashboards/lib/pin-actions.d.ts +7 -0
  1577. package/dist/src/domains/dashboards/widget-kind.d.ts +13 -0
  1578. package/dist/src/domains/llm/models-dev-logo-slugs.d.ts +1 -0
  1579. package/dist/src/domains/llm/provider-logo-monogram.d.ts +8 -0
  1580. package/dist/src/domains/llm/provider-logo.d.ts +0 -4
  1581. package/dist/src/domains/mcps/components/mcp-app-tool-result.d.ts +2 -1
  1582. package/dist/src/domains/mcps/components/mcp-app-viewer.d.ts +7 -2
  1583. package/dist/src/domains/mcps/hooks/use-mcp-app-tool-call.d.ts +5 -0
  1584. package/dist/src/domains/metrics/components/chart-card.d.ts +6 -2
  1585. package/dist/src/domains/metrics/components/kpi-card.d.ts +2 -1
  1586. package/dist/src/domains/metrics/lib/index.d.ts +1 -0
  1587. package/dist/src/domains/metrics/lib/series-colors.d.ts +39 -0
  1588. package/dist/src/domains/traces/components/span-token-usage.utils.d.ts +1 -1
  1589. package/dist/src/domains/workflows/components/workflow-combobox.d.ts +2 -1
  1590. package/dist/src/ds/components/AgentIndicator/paint.d.ts +6 -2
  1591. package/dist/src/ds/components/AgentIndicator/poses/coordination.d.ts +7 -0
  1592. package/dist/src/ds/components/AgentIndicator/poses/documents.d.ts +2 -0
  1593. package/dist/src/ds/components/AgentIndicator/poses/files.d.ts +5 -0
  1594. package/dist/src/ds/components/AgentIndicator/poses/interface.d.ts +8 -0
  1595. package/dist/src/ds/components/AgentIndicator/poses/knowledge-actions.d.ts +6 -0
  1596. package/dist/src/ds/components/AgentIndicator/poses/knowledge.d.ts +2 -0
  1597. package/dist/src/ds/components/AgentIndicator/poses/skills.d.ts +4 -0
  1598. package/dist/src/ds/components/AgentIndicator/poses/terminal.d.ts +4 -0
  1599. package/dist/src/ds/components/AgentIndicator/poses/thinking.d.ts +2 -0
  1600. package/dist/src/ds/components/AgentIndicator/poses.d.ts +1 -1
  1601. package/dist/src/ds/components/AgentIndicator/shapes.d.ts +7 -1
  1602. package/dist/src/ds/components/Breadcrumb/crumb-switcher.d.ts +1 -0
  1603. package/dist/src/ds/components/ChatShell/chat-shell-context.d.ts +9 -0
  1604. package/dist/src/ds/components/ChatShell/chat-shell.d.ts +5 -0
  1605. package/dist/src/ds/components/ChatShell/index.d.ts +2 -1
  1606. package/dist/src/ds/components/Combobox/combobox-parts.d.ts +2 -1
  1607. package/dist/src/ds/components/Combobox/combobox-styles.d.ts +9 -4
  1608. package/dist/src/ds/components/Combobox/combobox.d.ts +4 -2
  1609. package/dist/src/ds/components/CommandPalette/command-palette.d.ts +1 -1
  1610. package/dist/src/ds/components/DateTimePicker/date-picker.d.ts +6 -1
  1611. package/dist/src/ds/components/DateTimePicker/index.d.ts +0 -1
  1612. package/dist/src/ds/components/DateTimeRangePicker/custom-range-editor.d.ts +3 -2
  1613. package/dist/src/ds/components/Message/message-timestamp.d.ts +1 -0
  1614. package/dist/src/ds/components/MessageScroller/message-scroller-context.d.ts +3 -2
  1615. package/dist/src/ds/components/MessageScroller/message-scroller-geometry.d.ts +1 -1
  1616. package/dist/src/ds/components/MessageScroller/message-scroller-hooks.d.ts +2 -8
  1617. package/dist/src/ds/components/MessageScroller/message-scroller-visibility-store.d.ts +8 -0
  1618. package/dist/src/ds/components/Metadata/index.d.ts +2 -0
  1619. package/dist/src/ds/components/Metadata/metadata.d.ts +10 -0
  1620. package/dist/src/ds/components/MetricsCard/index.d.ts +1 -0
  1621. package/dist/src/ds/components/MetricsCard/metrics-card-drag-handle.d.ts +12 -0
  1622. package/dist/src/ds/components/MetricsCard/metrics-card.d.ts +2 -0
  1623. package/dist/src/ds/components/Steps/index.d.ts +1 -0
  1624. package/dist/src/ds/components/Steps/step.d.ts +13 -0
  1625. package/dist/src/ds/components/Steps/steps-context.d.ts +2 -0
  1626. package/dist/src/ds/components/Steps/steps-root.d.ts +18 -0
  1627. package/dist/src/ds/components/Steps/steps.d.ts +7 -0
  1628. package/dist/src/ds/components/ai/annotations/annotatable-selection.d.ts +25 -0
  1629. package/dist/src/ds/components/ai/annotations/annotation-comment-card.d.ts +11 -0
  1630. package/dist/src/ds/components/ai/annotations/annotation-comment-popover.d.ts +15 -0
  1631. package/dist/src/ds/components/ai/annotations/annotation-highlights.d.ts +1 -0
  1632. package/dist/src/ds/components/ai/annotations/annotation-marker.d.ts +13 -0
  1633. package/dist/src/ds/components/ai/annotations/annotation-markers.d.ts +9 -0
  1634. package/dist/src/ds/components/ai/annotations/annotation-number.d.ts +4 -0
  1635. package/dist/src/ds/components/ai/annotations/annotation-selection-toolbar.d.ts +7 -0
  1636. package/dist/src/ds/components/ai/annotations/chat-annotations.d.ts +27 -0
  1637. package/dist/src/ds/components/ai/annotations/composer-annotation-list.d.ts +6 -0
  1638. package/dist/src/ds/components/ai/annotations/composer-annotations.d.ts +5 -0
  1639. package/dist/src/ds/components/ai/annotations/format-annotated-message.d.ts +11 -0
  1640. package/dist/src/ds/components/ai/annotations/index.d.ts +5 -0
  1641. package/dist/src/ds/components/ai/annotations/transcript-annotations.d.ts +6 -0
  1642. package/dist/src/ds/components/ai/annotations/use-annotation-placement.d.ts +11 -0
  1643. package/dist/src/ds/components/ai/annotations/use-annotation-selection.d.ts +12 -0
  1644. package/dist/src/ds/components/ai/tool-call/index.d.ts +3 -0
  1645. package/dist/src/ds/components/ai/tool-call/tool-call-body.d.ts +6 -0
  1646. package/dist/src/ds/components/ai/tool-call/tool-call-exit-status.d.ts +11 -0
  1647. package/dist/src/ds/components/ai/tool-call/tool-call-output.d.ts +1 -2
  1648. package/dist/src/ds/components/ai/tool-call/tool-call-view.d.ts +17 -0
  1649. package/dist/src/ds/components/ai/tool-call/tool-phrases.d.ts +127 -138
  1650. package/dist/src/ds/components/ai/tool-call/tool-presentation.d.ts +2 -0
  1651. package/dist/src/ds/components/ai/tool-call/tool-styles.d.ts +10 -0
  1652. package/dist/src/ds/components/ai/transcript-divider/transcript-divider.d.ts +2 -2
  1653. package/dist/src/ds/icons/ByteDanceIcon.d.ts +2 -0
  1654. package/dist/src/ds/icons/CohereBrandIcon.d.ts +2 -0
  1655. package/dist/src/ds/icons/FireworksIcon.d.ts +2 -0
  1656. package/dist/src/ds/icons/LongCatIcon.d.ts +2 -0
  1657. package/dist/src/ds/icons/MicrosoftIcon.d.ts +2 -0
  1658. package/dist/src/ds/icons/MorphIcon.d.ts +2 -0
  1659. package/dist/src/ds/icons/NousResearchIcon.d.ts +2 -0
  1660. package/dist/src/ds/icons/NovaIcon.d.ts +2 -0
  1661. package/dist/src/ds/icons/PerplexityIcon.d.ts +2 -0
  1662. package/dist/src/ds/icons/SakanaIcon.d.ts +2 -0
  1663. package/dist/src/ds/icons/StepFunIcon.d.ts +2 -0
  1664. package/dist/src/ds/icons/TencentIcon.d.ts +2 -0
  1665. package/dist/src/ds/icons/UpstageIcon.d.ts +2 -0
  1666. package/dist/src/ds/icons/index.d.ts +13 -0
  1667. package/dist/src/ds/tokens/colors.d.ts +12 -0
  1668. package/dist/src/ee/signals/sankey-signals-data.d.ts +2 -2
  1669. package/dist/src/ee/signals/snapshot-summary.d.ts +7 -0
  1670. package/dist/src/ee/signals/snapshot-timeline.d.ts +2 -1
  1671. package/dist/src/hooks/use-clock.d.ts +5 -0
  1672. package/dist/src/lib/resize/collapsible-panel.d.ts +5 -3
  1673. package/dist/src/lib/string.d.ts +1 -0
  1674. package/dist/{string-CNKDIc_4.js → string-CA5M0mj_.js} +5 -2
  1675. package/dist/{string-CNKDIc_4.js.map → string-CA5M0mj_.js.map} +1 -1
  1676. package/dist/{string-DdJJdCv2.cjs → string-EyTazW-F.cjs} +10 -1
  1677. package/dist/{string-DdJJdCv2.cjs.map → string-EyTazW-F.cjs.map} +1 -1
  1678. package/dist/style.css +321 -144
  1679. package/dist/{tabbed-container-B4lCBgRP.cjs → tabbed-container-Bhfi-DWr.cjs} +9 -9
  1680. package/dist/{tabbed-container-B4lCBgRP.cjs.map → tabbed-container-Bhfi-DWr.cjs.map} +1 -1
  1681. package/dist/{tabbed-container-DI1GI1Qv.js → tabbed-container-DOkHshha.js} +8 -8
  1682. package/dist/{tabbed-container-DI1GI1Qv.js.map → tabbed-container-DOkHshha.js.map} +1 -1
  1683. package/dist/{tabs-content-CmXe5ML0.cjs → tabs-content-BACwMrMG.cjs} +3 -3
  1684. package/dist/{tabs-content-CmXe5ML0.cjs.map → tabs-content-BACwMrMG.cjs.map} +1 -1
  1685. package/dist/{tabs-content-D__B9hd-.js → tabs-content-DwU_eA-a.js} +3 -3
  1686. package/dist/{tabs-content-D__B9hd-.js.map → tabs-content-DwU_eA-a.js.map} +1 -1
  1687. package/dist/{tabs-tab-CYTZevdV.js → tabs-tab-BHs639jL.js} +4 -4
  1688. package/dist/{tabs-tab-CYTZevdV.js.map → tabs-tab-BHs639jL.js.map} +1 -1
  1689. package/dist/{tabs-tab-DGwfHVDr.cjs → tabs-tab-CANh2eAD.cjs} +4 -4
  1690. package/dist/{tabs-tab-DGwfHVDr.cjs.map → tabs-tab-CANh2eAD.cjs.map} +1 -1
  1691. package/dist/{toast-api-D_rrRhNG.js → toast-api-Cak5N8pT.js} +2 -2
  1692. package/dist/{toast-api-D_rrRhNG.js.map → toast-api-Cak5N8pT.js.map} +1 -1
  1693. package/dist/{toast-api-qtkOucy2.cjs → toast-api-DDcGCbIw.cjs} +2 -2
  1694. package/dist/{toast-api-qtkOucy2.cjs.map → toast-api-DDcGCbIw.cjs.map} +1 -1
  1695. package/dist/tokens.cjs.js +12 -0
  1696. package/dist/tokens.cjs.js.map +1 -1
  1697. package/dist/tokens.es.js +12 -0
  1698. package/dist/tokens.es.js.map +1 -1
  1699. package/dist/{tool-approval-CJvPDL7D.cjs → tool-approval-CguPaikn.cjs} +7 -7
  1700. package/dist/{tool-approval-CJvPDL7D.cjs.map → tool-approval-CguPaikn.cjs.map} +1 -1
  1701. package/dist/{tool-approval-DyN11vFA.js → tool-approval-Cjz0yAzw.js} +7 -7
  1702. package/dist/{tool-approval-DyN11vFA.js.map → tool-approval-Cjz0yAzw.js.map} +1 -1
  1703. package/dist/tool-call-BqDI9mrY.cjs +600 -0
  1704. package/dist/tool-call-BqDI9mrY.cjs.map +1 -0
  1705. package/dist/tool-call-ChJKYCfu.js +505 -0
  1706. package/dist/tool-call-ChJKYCfu.js.map +1 -0
  1707. package/dist/{tool-card-BOLXeKIp.cjs → tool-card-Dg4VOYV6.cjs} +24 -15
  1708. package/dist/tool-card-Dg4VOYV6.cjs.map +1 -0
  1709. package/dist/{tool-card-HZ5bm7ue.js → tool-card-GSiCfxMz.js} +25 -16
  1710. package/dist/tool-card-GSiCfxMz.js.map +1 -0
  1711. package/dist/tool-presentation-C2bYQ7gB.js +874 -0
  1712. package/dist/tool-presentation-C2bYQ7gB.js.map +1 -0
  1713. package/dist/tool-presentation-DPp9h-n2.cjs +915 -0
  1714. package/dist/tool-presentation-DPp9h-n2.cjs.map +1 -0
  1715. package/dist/{tooltip-BiRLT3Th.cjs → tooltip-BsExuMO8.cjs} +2 -2
  1716. package/dist/{tooltip-BiRLT3Th.cjs.map → tooltip-BsExuMO8.cjs.map} +1 -1
  1717. package/dist/{tooltip-HzcLyGtV.js → tooltip-DJcze2VZ.js} +2 -2
  1718. package/dist/{tooltip-HzcLyGtV.js.map → tooltip-DJcze2VZ.js.map} +1 -1
  1719. package/dist/{transcript-divider-CvdgElIC.js → transcript-divider-DM2HkdeO.js} +5 -11
  1720. package/dist/transcript-divider-DM2HkdeO.js.map +1 -0
  1721. package/dist/{transcript-divider-CQ6sc3nt.cjs → transcript-divider-DroC3feH.cjs} +4 -10
  1722. package/dist/transcript-divider-DroC3feH.cjs.map +1 -0
  1723. package/dist/{use-workflow-graph-runtime-BKNhOKsH.js → use-workflow-graph-runtime-B3VUuhUE.js} +12 -12
  1724. package/dist/{use-workflow-graph-runtime-BKNhOKsH.js.map → use-workflow-graph-runtime-B3VUuhUE.js.map} +1 -1
  1725. package/dist/{use-workflow-graph-runtime-DYao-08R.cjs → use-workflow-graph-runtime-BfCL6nd4.cjs} +12 -12
  1726. package/dist/{use-workflow-graph-runtime-DYao-08R.cjs.map → use-workflow-graph-runtime-BfCL6nd4.cjs.map} +1 -1
  1727. package/dist/utils/string.cjs.js +2 -1
  1728. package/dist/utils/string.es.js +1 -1
  1729. package/dist/utils/toast.cjs.js +1 -1
  1730. package/dist/utils/toast.es.js +1 -1
  1731. package/oxlint/copy-rules.d.ts +4 -0
  1732. package/oxlint/copy-rules.js +29 -0
  1733. package/oxlint/copy-sources.js +223 -0
  1734. package/oxlint/index.d.ts +5 -0
  1735. package/oxlint/index.js +17 -0
  1736. package/package.json +13 -10
  1737. package/theme/data-viz.css +33 -0
  1738. package/dist/AgentIndicator-Bs2S8AWJ.js +0 -847
  1739. package/dist/AgentIndicator-Bs2S8AWJ.js.map +0 -1
  1740. package/dist/AgentIndicator-to30W73z.cjs +0 -864
  1741. package/dist/AgentIndicator-to30W73z.cjs.map +0 -1
  1742. package/dist/Button-CLXTbAY8.js.map +0 -1
  1743. package/dist/Button-DLcMcuUL.cjs.map +0 -1
  1744. package/dist/Composer-BcueJvdX.cjs.map +0 -1
  1745. package/dist/Composer-D1gF-0jZ.js.map +0 -1
  1746. package/dist/FilterBar-BSP2UTjc.cjs.map +0 -1
  1747. package/dist/FilterBar-PSQ1OwqH.js.map +0 -1
  1748. package/dist/Message-jj56lxNL.cjs.map +0 -1
  1749. package/dist/MessageScroller-CGsfTd1Z.cjs.map +0 -1
  1750. package/dist/MessageScroller-DvaKlm4O.js.map +0 -1
  1751. package/dist/MetricsCard-BEwiS7Pe.cjs.map +0 -1
  1752. package/dist/MetricsCard-ua6C6b8a.js.map +0 -1
  1753. package/dist/Workflow-C3SlEdP-.js.map +0 -1
  1754. package/dist/Workflow-DSWQ-ROz.cjs.map +0 -1
  1755. package/dist/activity-C8Ql81WM.js.map +0 -1
  1756. package/dist/activity-CcQZeDYi.cjs.map +0 -1
  1757. package/dist/combobox-D21no8t5.js.map +0 -1
  1758. package/dist/combobox-DIT_6xiG.cjs.map +0 -1
  1759. package/dist/combobox-parts-C4phOq4t.cjs.map +0 -1
  1760. package/dist/combobox-parts-D90ir0Py.js.map +0 -1
  1761. package/dist/date-time-range-picker-CWGjoR3j.cjs.map +0 -1
  1762. package/dist/date-time-range-picker-CdSiXwB4.js.map +0 -1
  1763. package/dist/domains/chat/activity/components/activity-timed-trigger.cjs.js +0 -29
  1764. package/dist/domains/chat/activity/components/activity-timed-trigger.cjs.js.map +0 -1
  1765. package/dist/domains/chat/activity/components/activity-timed-trigger.d.ts +0 -1
  1766. package/dist/domains/chat/activity/components/activity-timed-trigger.es.js +0 -28
  1767. package/dist/domains/chat/activity/components/activity-timed-trigger.es.js.map +0 -1
  1768. package/dist/domains/mcps/components/mcp-app-viewer.cjs.js.map +0 -1
  1769. package/dist/domains/mcps/components/mcp-app-viewer.es.js.map +0 -1
  1770. package/dist/page-header-BykBsHUy.js.map +0 -1
  1771. package/dist/src/domains/chat/activity/components/activity-timed-trigger.d.ts +0 -9
  1772. package/dist/src/ds/components/DateTimePicker/time-picker.d.ts +0 -7
  1773. package/dist/tool-call-DBn14X-3.cjs +0 -497
  1774. package/dist/tool-call-DBn14X-3.cjs.map +0 -1
  1775. package/dist/tool-call-Dsj43lvJ.js +0 -426
  1776. package/dist/tool-call-Dsj43lvJ.js.map +0 -1
  1777. package/dist/tool-card-BOLXeKIp.cjs.map +0 -1
  1778. package/dist/tool-card-HZ5bm7ue.js.map +0 -1
  1779. package/dist/tool-presentation-CvibOP1J.js +0 -256
  1780. package/dist/tool-presentation-CvibOP1J.js.map +0 -1
  1781. package/dist/tool-presentation-D6nzVruN.cjs +0 -291
  1782. package/dist/tool-presentation-D6nzVruN.cjs.map +0 -1
  1783. package/dist/transcript-divider-CQ6sc3nt.cjs.map +0 -1
  1784. package/dist/transcript-divider-CvdgElIC.js.map +0 -1
@@ -120,15 +120,19 @@ function formatSignalName(signalName) {
120
120
  return `${signalName.slice(0, 1).toUpperCase()}${signalName.slice(1)}`;
121
121
  }
122
122
  /**
123
- * "Date · N traces · N themes" line rendered under the timeline in every view
123
+ * Date, trace-count, and theme-count fields rendered under the timeline in every view
124
124
  * mode. Counts come from the charted flow (cohort stage totals), so a drilled
125
125
  * flow reports the drilled subset; date-only while the flow is loading.
126
126
  */
127
- function snapshotSummaryLabel(snapshot, flow) {
127
+ function snapshotSummaryParts(snapshot, flow) {
128
128
  const date = snapshot.cutoffAt ? formatSnapshotCutoff(snapshot.cutoffAt) : formatSnapshotWindow(snapshot.startedAt, snapshot.endedAt);
129
- if (!flow) return date;
129
+ if (!flow) return [date];
130
130
  const { traceCount, themeCount } = flowCounts(flow);
131
- return `${date} · ${traceLabel(traceCount)} · ${themeLabel(themeCount)}`;
131
+ return [
132
+ date,
133
+ traceLabel(traceCount),
134
+ themeLabel(themeCount)
135
+ ];
132
136
  }
133
137
  function flowCounts(flow) {
134
138
  return {
@@ -136,6 +140,6 @@ function flowCounts(flow) {
136
140
  themeCount: flow.stages.reduce((total, stage) => total + stage.nodes.filter((node) => node.kind === "theme").length, 0)
137
141
  };
138
142
  }
139
- export { buildSignalGraphSummary, getSignalRecordNodeId, getSignalRecordNodeLabel, getSignalRecordNodeValue, selectFlowSnapshotIds, snapshotSummaryLabel, stabilizeThemeFlow, themeFlowToSankeyData };
143
+ export { buildSignalGraphSummary, getSignalRecordNodeId, getSignalRecordNodeLabel, getSignalRecordNodeValue, selectFlowSnapshotIds, snapshotSummaryParts, stabilizeThemeFlow, themeFlowToSankeyData };
140
144
 
141
145
  //# sourceMappingURL=sankey-signals-data.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sankey-signals-data.es.js","names":[],"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"],"mappings":"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"}
1
+ {"version":3,"file":"sankey-signals-data.es.js","names":[],"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, trace-count, and theme-count fields 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 snapshotSummaryParts(snapshot: ThemeSnapshot, flow: ThemeFlowResponse | undefined): readonly string[] {\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"],"mappings":"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"}
@@ -1,30 +1,31 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_Txt = require("../../Txt-BnoSqxKE.cjs");
3
- const require_tabs_tab = require("../../tabs-tab-DGwfHVDr.cjs");
4
- const require_ee_signals_signal_formatting = require("./signal-formatting.cjs.js");
5
2
  const require_ee_signals_components_signals_empty_state = require("./components/signals-empty-state.cjs.js");
6
3
  const require_ee_signals_components_signals_overview_page = require("./components/signals-overview-page.cjs.js");
7
4
  const require_ee_signals_entity_learning_api = require("./entity-learning-api.cjs.js");
8
- const require_ee_signals_trace_intelligence_context = require("./trace-intelligence-context.cjs.js");
9
- const require_ee_signals_use_trace_intelligence = require("./use-trace-intelligence.cjs.js");
10
- const require_ee_signals_hooks_use_entity_learning_progress = require("./hooks/use-entity-learning-progress.cjs.js");
11
- const require_ee_signals_hooks_use_theme_paths = require("./hooks/use-theme-paths.cjs.js");
12
- const require_ee_signals_hooks_use_theme_snapshots = require("./hooks/use-theme-snapshots.cjs.js");
13
- const require_ee_signals_sankey_signals_data = require("./sankey-signals-data.cjs.js");
14
5
  const require_ee_signals_flow_card = require("./flow-card.cjs.js");
6
+ const require_ee_signals_hooks_use_entity_learning_progress = require("./hooks/use-entity-learning-progress.cjs.js");
15
7
  const require_ee_signals_hooks_use_snapshot_playback = require("./hooks/use-snapshot-playback.cjs.js");
16
8
  const require_ee_signals_hooks_use_theme_flows = require("./hooks/use-theme-flows.cjs.js");
9
+ const require_ee_signals_hooks_use_theme_paths = require("./hooks/use-theme-paths.cjs.js");
10
+ const require_ee_signals_hooks_use_theme_snapshots = require("./hooks/use-theme-snapshots.cjs.js");
17
11
  const require_ee_signals_noise_detail_panel = require("./noise-detail-panel.cjs.js");
12
+ const require_ee_signals_sankey_signals_data = require("./sankey-signals-data.cjs.js");
13
+ const require_ee_signals_signal_formatting = require("./signal-formatting.cjs.js");
18
14
  const require_ee_signals_signals_error_state = require("./signals-error-state.cjs.js");
19
15
  const require_ee_signals_signals_loading_skeleton = require("./signals-loading-skeleton.cjs.js");
16
+ const require_ee_signals_snapshot_summary = require("./snapshot-summary.cjs.js");
20
17
  const require_ee_signals_snapshot_timeline = require("./snapshot-timeline.cjs.js");
21
18
  const require_ee_signals_theme_compare = require("./theme-compare.cjs.js");
22
19
  const require_ee_signals_theme_detail_panel = require("./theme-detail-panel.cjs.js");
23
20
  const require_ee_signals_theme_drilldown_data = require("./theme-drilldown-data.cjs.js");
24
21
  const require_ee_signals_theme_filter_banner = require("./theme-filter-banner.cjs.js");
25
22
  const require_ee_signals_theme_lifelines = require("./theme-lifelines.cjs.js");
23
+ const require_ee_signals_trace_intelligence_context = require("./trace-intelligence-context.cjs.js");
26
24
  const require_ee_signals_trace_intelligence_explainer = require("./trace-intelligence-explainer.cjs.js");
25
+ const require_ee_signals_use_trace_intelligence = require("./use-trace-intelligence.cjs.js");
27
26
  const require_ee_signals_view_mode_tab = require("./view-mode-tab.cjs.js");
27
+ const require_tabs_tab = require("../../tabs-tab-CANh2eAD.cjs");
28
+ const require_Txt = require("../../Txt-_00wWxTd.cjs");
28
29
  let react = require("react");
29
30
  let react_jsx_runtime = require("react/jsx-runtime");
30
31
  let lucide_react = require("lucide-react");
@@ -216,7 +217,10 @@ function SankeySignals({ entityId, entityType = "agent", signalNames: initialSig
216
217
  snapshots,
217
218
  selectedIndex: selectedSnapshotIndex,
218
219
  totalSnapshots,
219
- summary: snapshot ? require_ee_signals_sankey_signals_data.snapshotSummaryLabel(snapshot, void 0) : "",
220
+ summary: snapshot ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ee_signals_snapshot_summary.SnapshotSummary, {
221
+ snapshot,
222
+ flow: void 0
223
+ }) : void 0,
220
224
  isPlaying,
221
225
  onPlayingChange: handlePlayingChange,
222
226
  onSnapshotChange: selectSnapshot
@@ -258,6 +262,7 @@ function SankeySignals({ entityId, entityType = "agent", signalNames: initialSig
258
262
  perspectiveMutation.mutate(mergedSignalNames);
259
263
  };
260
264
  const filtersResolved = drillStack.length > 0 && drillInAvailable && pathsQuery.data !== void 0;
265
+ const filterSummaryPrefix = drillInAvailable ? "Filtered" : "Filters unavailable";
261
266
  const detailStats = filtersResolved ? require_ee_signals_theme_drilldown_data.findSelectionStats(flow, drillStack, detailSelection) : void 0;
262
267
  const noiseStats = filtersResolved ? require_ee_signals_theme_drilldown_data.findSelectionStats(flow, drillStack, noiseSignalName ? {
263
268
  kind: "noise",
@@ -337,7 +342,11 @@ function SankeySignals({ entityId, entityType = "agent", signalNames: initialSig
337
342
  snapshots,
338
343
  selectedIndex: selectedSnapshotIndex,
339
344
  totalSnapshots,
340
- summary: `${drillStack.length > 0 ? drillInAvailable ? "Filtered · " : "Filters unavailable · " : ""}${require_ee_signals_sankey_signals_data.snapshotSummaryLabel(snapshot, flow)}`,
345
+ summary: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ee_signals_snapshot_summary.SnapshotSummary, {
346
+ snapshot,
347
+ flow,
348
+ prefix: drillStack.length > 0 ? filterSummaryPrefix : void 0
349
+ }),
341
350
  isPlaying,
342
351
  onPlayingChange: handlePlayingChange,
343
352
  onSnapshotChange: selectSnapshot
@@ -373,7 +382,7 @@ function SankeySignals({ entityId, entityType = "agent", signalNames: initialSig
373
382
  as: "span",
374
383
  variant: "body",
375
384
  className: "block",
376
- children: "No cross-signal flow for this snapshot — its trace signals have not overlapped on shared traces yet. Pick another snapshot from the timeline below."
385
+ children: "No cross-signal flow for this snapshot. Its trace signals have not overlapped on shared traces yet. Pick another snapshot from the timeline below."
377
386
  })
378
387
  }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ee_signals_flow_card.FlowCard, {
379
388
  columns: labeledColumns,
@@ -1 +1 @@
1
- {"version":3,"file":"sankey-signals.cjs.js","names":["useQueryClient","useTraceIntelligence","useState","useThemeSnapshots","useMemo","selectFlowSnapshotIds","useThemeFlows","stabilizeThemeFlow","useThemePaths","buildDrilledThemeFlow","buildSignalGraphSummary","findThemeSelectionById","useEntityLearningProgress","useMutation","fetchThemeSnapshots","fetchThemeFlow","fetchThemePaths","_Fragment","SignalsLoadingSkeleton","SignalsErrorState","SignalsEmptyState","SnapshotTimeline","snapshotSummaryLabel","SignalsFrameLoadingSkeleton","findNoiseSelection","findThemeSelection","mergeVisibleSignalOrder","findSelectionStats","serializeThemeFilters","orderedSignals","signalLabel","TraceIntelligenceContext","Tabs","TabList","ViewModeTab","Waypoints","ArrowLeftRight","ChartNoAxesGantt","TraceIntelligenceExplainer","Txt","PendingSignalProgress","ThemeCompare","ThemeLifelines","ThemeFilterBanner","FlowCard","ThemeDetailPanel","NoiseDetailPanel"],"sources":["../../../src/ee/signals/sankey-signals.tsx"],"sourcesContent":["import { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { ArrowLeftRight, ChartNoAxesGantt, Waypoints } from 'lucide-react';\nimport { useMemo, useState } from 'react';\n\nimport { PendingSignalProgress } from './components/signals-empty-state';\nimport { SignalsOverviewPage as SignalsEmptyState } from './components/signals-overview-page';\nimport { fetchThemeFlow, fetchThemePaths, fetchThemeSnapshots, serializeThemeFilters } from './entity-learning-api';\nimport { FlowCard } from './flow-card';\nimport { useEntityLearningProgress } from './hooks/use-entity-learning-progress';\nimport { useSnapshotPlayback } from './hooks/use-snapshot-playback';\nimport { useThemeFlows } from './hooks/use-theme-flows';\nimport { useThemePaths } from './hooks/use-theme-paths';\nimport { useThemeSnapshots } from './hooks/use-theme-snapshots';\nimport { NoiseDetailPanel } from './noise-detail-panel';\nimport {\n buildSignalGraphSummary,\n selectFlowSnapshotIds,\n snapshotSummaryLabel,\n stabilizeThemeFlow,\n} from './sankey-signals-data';\nimport { orderedSignals, signalLabel } from './signal-formatting';\nimport { SignalsErrorState } from './signals-error-state';\nimport { SignalsFrameLoadingSkeleton, SignalsLoadingSkeleton } from './signals-loading-skeleton';\nimport { SnapshotTimeline } from './snapshot-timeline';\nimport { ThemeCompare } from './theme-compare';\nimport { ThemeDetailPanel } from './theme-detail-panel';\nimport {\n buildDrilledThemeFlow,\n findNoiseSelection,\n findSelectionStats,\n findThemeSelection,\n findThemeSelectionById,\n mergeVisibleSignalOrder,\n} from './theme-drilldown-data';\nimport type { SelectedTheme, ThemeSelection } from './theme-drilldown-data';\nimport { ThemeFilterBanner } from './theme-filter-banner';\nimport { ThemeLifelines } from './theme-lifelines';\nimport { TraceIntelligenceContext } from './trace-intelligence-context';\nimport { TraceIntelligenceExplainer } from './trace-intelligence-explainer';\nimport type { TraceSignalName } from './types';\nimport { useTraceIntelligence } from './use-trace-intelligence';\nimport { ViewModeTab } from './view-mode-tab';\nimport type { SignalsViewMode } from './view-mode-tab';\nimport type { SankeyChartNodeSelection } from '@/ds/components/SankeyChart';\nimport { TabList, Tabs } from '@/ds/components/Tabs';\nimport { Txt } from '@/ds/components/Txt';\n\nexport interface SankeySignalsProps {\n entityId: string;\n entityType?: string;\n signalNames: TraceSignalName[];\n dateFrom?: Date;\n dateTo?: Date;\n height?: number;\n selectedThemeId: string | undefined;\n onSelectedThemeIdChange: (themeId: string | undefined) => void;\n /** Snapshot id of the timeline frame currently displayed. The parent owns this state. */\n selectedFrameId: string;\n onFrameIdChange: (frameId: string) => void;\n /** Date range control rendered in line with the view mode tabs. */\n dateRangePicker?: React.ReactNode;\n}\n\nconst DRILL_IN_TRACE_LIMIT = 2000;\n\n/** One-line answer to \"what am I looking at?\" for each view, shown under the tabs. */\nconst VIEW_DESCRIPTIONS: Omit<Record<SignalsViewMode, string>, 'flow'> = {\n compare: 'Which themes grew, shrank, appeared, or disappeared between two points in time.',\n lifelines: \"Each theme's share of traces across the whole selected range.\",\n};\n\nfunction formatSignalList(labels: string[]): string {\n if (labels.length < 2) return labels[0] ?? 'trace signal';\n if (labels.length === 2) return labels.join(' and ');\n return `${labels.slice(0, -1).join(', ')}, and ${labels.at(-1)}`;\n}\n\nexport function SankeySignals({\n entityId,\n entityType = 'agent',\n signalNames: initialSignalNames,\n dateFrom,\n dateTo,\n height,\n selectedThemeId,\n onSelectedThemeIdChange,\n selectedFrameId,\n onFrameIdChange,\n dateRangePicker,\n}: SankeySignalsProps) {\n const queryClient = useQueryClient();\n const traceIntelligence = useTraceIntelligence();\n const { cacheScope, request, LinkComponent, signalCatalog } = traceIntelligence;\n const [signalNames, setSignalNames] = useState(() => initialSignalNames);\n const [pendingSignalNames, setPendingSignalNames] = useState<TraceSignalName[]>();\n const snapshotsQuery = useThemeSnapshots(entityId, entityType, signalNames, dateFrom, dateTo);\n const effectiveSignalCatalog = snapshotsQuery.data?.signalCatalog ?? signalCatalog;\n const traceIntelligenceContext = useMemo(\n () => ({ ...traceIntelligence, signalCatalog: effectiveSignalCatalog }),\n [effectiveSignalCatalog, traceIntelligence],\n );\n const snapshots = [...(snapshotsQuery.data?.snapshots ?? [])].sort((left, right) => left.ordinal - right.ordinal);\n const [isPlaying, setIsPlaying] = useState(false);\n const [viewMode, setViewMode] = useState<SignalsViewMode>('flow');\n const [drillStack, setDrillStack] = useState<ThemeSelection[]>([]);\n const [noiseSignalName, setNoiseSignalName] = useState<TraceSignalName>();\n // Pure derivation: the parent owns the frame. The index-0 fallback only covers\n // the transient render where a perspective change swapped the snapshot list.\n const matchedSnapshotIndex = snapshots.findIndex(snapshot => snapshot.snapshotId === selectedFrameId);\n const selectedSnapshotIndex = matchedSnapshotIndex >= 0 ? matchedSnapshotIndex : 0;\n const snapshot = snapshots[selectedSnapshotIndex];\n const totalSnapshots = snapshotsQuery.data?.totalSnapshots ?? snapshot?.total ?? 0;\n const selectSnapshot = (index: number) => {\n const id = snapshots[index]?.snapshotId;\n if (id) onFrameIdChange(id);\n };\n const handleViewModeChange = (nextViewMode: SignalsViewMode) => {\n if (nextViewMode !== 'flow') setIsPlaying(false);\n setViewMode(nextViewMode);\n };\n const handlePlayingChange = (nextIsPlaying: boolean) => {\n // Restart from the first landmark when play is pressed at the end.\n if (nextIsPlaying && selectedSnapshotIndex === snapshots.length - 1) selectSnapshot(0);\n setIsPlaying(nextIsPlaying);\n };\n const setThemeDetails = (selection: SelectedTheme | undefined) => {\n onSelectedThemeIdChange(selection?.themeId);\n };\n // Compare cards and lifeline points open details for the theme at the\n // landmark they were clicked on, so the panel's snapshot follows the click.\n const openThemeDetailsAt = (selection: ThemeSelection, snapshotIndex: number) => {\n if (selection.kind !== 'theme') return;\n selectSnapshot(snapshotIndex);\n setNoiseSignalName(undefined);\n setThemeDetails(selection);\n };\n\n // Undefined at the last landmark so playback stops instead of looping.\n const nextSnapshotId = snapshots[selectedSnapshotIndex + 1]?.snapshotId;\n const flowSnapshotIds = selectFlowSnapshotIds(snapshots, selectedSnapshotIndex);\n const flowQueries = useThemeFlows(entityId, entityType, signalNames, flowSnapshotIds);\n const flowQuery = flowQueries[flowSnapshotIds.indexOf(snapshot?.snapshotId ?? '')];\n const currentFlow = flowQuery?.data;\n // The loading skeleton tracks only the selected snapshot's flow; prefetched\n // neighbors warm the cache in the background without blocking the chart.\n const isFlowPending = flowQuery?.isPending ?? false;\n // Errors stay window-wide: a failed preload surfaces the retry state instead\n // of letting playback advance into a broken frame.\n const hasFlowError = flowQueries.some(query => query.isError);\n const isFlowWindowBusy = flowQueries.some(query => query.isPending) || hasFlowError;\n const windowFlows = useMemo(() => flowQueries.flatMap(query => (query.data ? [query.data] : [])), [flowQueries]);\n const stableUnfilteredFlow = useMemo(\n () => (currentFlow ? stabilizeThemeFlow(currentFlow, windowFlows) : undefined),\n [currentFlow, windowFlows],\n );\n const drillInAvailable = Boolean(currentFlow && currentFlow.snapshot.traceCount <= DRILL_IN_TRACE_LIMIT);\n const pathsQuery = useThemePaths(\n entityId,\n entityType,\n signalNames,\n snapshot?.snapshotId,\n drillInAvailable && drillStack.length > 0,\n );\n const flow = useMemo(() => {\n if (!stableUnfilteredFlow || drillStack.length === 0 || !pathsQuery.data) return stableUnfilteredFlow;\n\n const drilledFlow = buildDrilledThemeFlow(stableUnfilteredFlow, pathsQuery.data, drillStack);\n return stabilizeThemeFlow(drilledFlow, [stableUnfilteredFlow, drilledFlow]);\n }, [drillStack, pathsQuery.data, stableUnfilteredFlow]);\n const graphSummary = useMemo(() => (flow ? buildSignalGraphSummary(flow) : undefined), [flow]);\n const detailSelection =\n stableUnfilteredFlow && selectedThemeId ? findThemeSelectionById(stableUnfilteredFlow, selectedThemeId) : undefined;\n const populatedStageCount = currentFlow?.stages.filter(stage => stage.nodes.length > 0).length ?? 0;\n const hasPendingEnabledSignals = effectiveSignalCatalog.some(signal => signal.enabled && signal.status !== 'ready');\n const shouldLoadProgress =\n snapshotsQuery.isSuccess &&\n !snapshotsQuery.isError &&\n (hasPendingEnabledSignals ||\n !snapshot ||\n Boolean(currentFlow && (!flow || !graphSummary || populatedStageCount < 2)));\n const progressQuery = useEntityLearningProgress(entityId, entityType, shouldLoadProgress);\n const isPlaybackBlockedByDrillIn = drillStack.length > 0 && (pathsQuery.isFetching || pathsQuery.isError);\n const hasActivePathsError = drillStack.length > 0 && pathsQuery.isError;\n\n useSnapshotPlayback({\n isPlaying,\n isPlaybackBlocked: isFlowWindowBusy || isPlaybackBlockedByDrillIn,\n nextSnapshot: nextSnapshotId,\n onAdvance: frameId => {\n if (frameId === undefined) {\n setIsPlaying(false);\n return;\n }\n onFrameIdChange(frameId);\n },\n snapshotCount: snapshots.length,\n });\n\n const perspectiveMutation = useMutation({\n mutationFn: async (nextSignalNames: TraceSignalName[]) => {\n const nextSnapshots = await queryClient.fetchQuery({\n queryKey: [\n 'entity-learning',\n cacheScope,\n entityType,\n entityId,\n 'theme-snapshots',\n nextSignalNames,\n dateFrom?.toISOString(),\n dateTo?.toISOString(),\n ],\n queryFn: () => fetchThemeSnapshots(request, entityId, entityType, nextSignalNames, dateFrom, dateTo),\n });\n const sortedNextSnapshots = [...nextSnapshots.snapshots].sort((left, right) => left.ordinal - right.ordinal);\n const matchedNextIndex = sortedNextSnapshots.findIndex(candidate => candidate.ordinal === snapshot?.ordinal);\n const nextSelectedIndex = matchedNextIndex >= 0 ? matchedNextIndex : 0;\n const nextSnapshot = sortedNextSnapshots[nextSelectedIndex];\n await Promise.all(\n selectFlowSnapshotIds(sortedNextSnapshots, nextSelectedIndex).map(snapshotId =>\n queryClient.fetchQuery({\n queryKey: ['entity-learning', cacheScope, entityType, entityId, 'theme-flow', nextSignalNames, snapshotId],\n queryFn: () => fetchThemeFlow(request, entityId, entityType, nextSignalNames, snapshotId),\n }),\n ),\n );\n if (drillStack.length > 0 && nextSnapshot && nextSnapshot.traceCount <= DRILL_IN_TRACE_LIMIT) {\n await queryClient.fetchQuery({\n queryKey: [\n 'entity-learning',\n cacheScope,\n entityType,\n entityId,\n 'theme-paths',\n nextSignalNames,\n nextSnapshot.snapshotId,\n ],\n queryFn: () => fetchThemePaths(request, entityId, entityType, nextSignalNames, nextSnapshot.snapshotId),\n });\n }\n return { nextSignalNames, nextFrameId: nextSnapshot?.snapshotId };\n },\n onSuccess: ({ nextSignalNames, nextFrameId }) => {\n setSignalNames(nextSignalNames);\n setPendingSignalNames(undefined);\n // Keep the parent-owned frame pointing at a snapshot that exists in the new perspective.\n if (nextFrameId && nextFrameId !== selectedFrameId) onFrameIdChange(nextFrameId);\n },\n onError: () => setPendingSignalNames(undefined),\n });\n\n if (snapshotsQuery.isPending) {\n return (\n <>\n {dateRangePicker && <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>}\n <SignalsLoadingSkeleton />\n </>\n );\n }\n\n if (snapshotsQuery.isError || hasFlowError || hasActivePathsError) {\n return (\n <>\n {dateRangePicker && <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>}\n <SignalsErrorState\n message=\"Unable to load trace signal flow.\"\n onRetry={() => {\n setIsPlaying(false);\n void snapshotsQuery.refetch();\n void Promise.all(flowQueries.map(query => query.refetch()));\n if (drillStack.length > 0 && drillInAvailable) void pathsQuery.refetch();\n }}\n onClear={hasActivePathsError ? () => setDrillStack([]) : undefined}\n />\n </>\n );\n }\n\n if (!snapshot) {\n return (\n <>\n {dateRangePicker && <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>}\n <SignalsEmptyState\n LinkComponent={LinkComponent}\n progress={progressQuery.data}\n signalCatalog={effectiveSignalCatalog}\n isRangeEmpty\n />\n </>\n );\n }\n\n if (isFlowPending) {\n return (\n <div className=\"min-w-0 space-y-5 p-4 lg:p-6\">\n {dateRangePicker && <div className=\"flex justify-end\">{dateRangePicker}</div>}\n <SnapshotTimeline\n snapshots={snapshots}\n selectedIndex={selectedSnapshotIndex}\n totalSnapshots={totalSnapshots}\n summary={snapshot ? snapshotSummaryLabel(snapshot, undefined) : ''}\n isPlaying={isPlaying}\n onPlayingChange={handlePlayingChange}\n onSnapshotChange={selectSnapshot}\n />\n <SignalsFrameLoadingSkeleton />\n </div>\n );\n }\n\n if (!currentFlow || !flow || !graphSummary || populatedStageCount < 2) {\n return (\n <>\n {dateRangePicker && <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>}\n <SignalsEmptyState\n LinkComponent={LinkComponent}\n progress={progressQuery.data}\n signalCatalog={effectiveSignalCatalog}\n />\n </>\n );\n }\n\n const stages = flow.stages;\n const isNodeClickable = (selection: SankeyChartNodeSelection) =>\n findNoiseSelection(flow, selection.column.id, selection.value) !== undefined ||\n findThemeSelection(flow, selection.column.id, selection.value) !== undefined;\n const handleNodeClick = (selection: SankeyChartNodeSelection) => {\n const nextSelection =\n findNoiseSelection(flow, selection.column.id, selection.value) ??\n findThemeSelection(flow, selection.column.id, selection.value);\n if (!nextSelection || drillStack.some(filter => filter.signalName === nextSelection.signalName)) return;\n if (nextSelection.kind === 'theme') {\n setNoiseSignalName(undefined);\n setThemeDetails(nextSelection);\n if (drillInAvailable) setDrillStack(current => [...current, nextSelection]);\n } else {\n setThemeDetails(undefined);\n setNoiseSignalName(nextSelection.signalName);\n }\n };\n const drillInDisabledReason = drillInAvailable\n ? undefined\n : 'Drill-in is unavailable for snapshots with more than 2,000 traces.';\n const isDrilledEmpty = drillStack.length > 0 && pathsQuery.data !== undefined && flow.snapshot.traceCount === 0;\n const handleSignalOrderChange = (nextSignalNames: TraceSignalName[]) => {\n if (perspectiveMutation.isPending) return;\n setIsPlaying(false);\n setThemeDetails(undefined);\n setNoiseSignalName(undefined);\n const mergedSignalNames = mergeVisibleSignalOrder(signalNames, nextSignalNames);\n setPendingSignalNames(mergedSignalNames);\n perspectiveMutation.mutate(mergedSignalNames);\n };\n const filtersResolved = drillStack.length > 0 && drillInAvailable && pathsQuery.data !== undefined;\n const detailStats = filtersResolved ? findSelectionStats(flow, drillStack, detailSelection) : undefined;\n const noiseStats = filtersResolved\n ? findSelectionStats(flow, drillStack, noiseSignalName ? { kind: 'noise', signalName: noiseSignalName } : undefined)\n : undefined;\n const filterKey = serializeThemeFilters(drillStack);\n const catalogSignalNames = orderedSignals(effectiveSignalCatalog, signalNames);\n const viewDescription =\n viewMode === 'flow'\n ? `How this agent's traces distribute across ${formatSignalList(catalogSignalNames.map(name => signalLabel(effectiveSignalCatalog, name).toLocaleLowerCase()))} themes at this point in time.`\n : VIEW_DESCRIPTIONS[viewMode];\n const labeledColumns = graphSummary.columns.map(column => ({\n ...column,\n label: signalLabel(effectiveSignalCatalog, column.id),\n }));\n\n return (\n <TraceIntelligenceContext.Provider value={traceIntelligenceContext}>\n <div className=\"min-w-0 space-y-5 p-4 lg:p-6\">\n <div className=\"flex min-w-0 flex-wrap items-center justify-between gap-3\">\n <div className=\"flex min-w-0 flex-wrap items-center gap-4\">\n <Tabs<SignalsViewMode>\n value={viewMode}\n defaultTab=\"flow\"\n onValueChange={handleViewModeChange}\n className=\"w-fit\"\n >\n <TabList variant=\"pill-ghost\">\n <ViewModeTab value=\"flow\" icon={<Waypoints />} label=\"Flow\" />\n <ViewModeTab value=\"compare\" icon={<ArrowLeftRight />} label=\"Compare\" />\n <ViewModeTab value=\"lifelines\" icon={<ChartNoAxesGantt />} label=\"Lifelines\" />\n </TabList>\n </Tabs>\n <TraceIntelligenceExplainer signalCatalog={effectiveSignalCatalog} />\n </div>\n {dateRangePicker}\n </div>\n <Txt variant=\"caption\" tone=\"muted\">\n {viewDescription}\n </Txt>\n <PendingSignalProgress progress={progressQuery.data} signalCatalog={effectiveSignalCatalog} />\n {viewMode === 'compare' ? (\n <ThemeCompare\n entityId={entityId}\n entityType={entityType}\n signalNames={signalNames}\n snapshots={snapshots}\n totalSnapshots={totalSnapshots}\n onThemeSelect={openThemeDetailsAt}\n />\n ) : viewMode === 'lifelines' ? (\n <ThemeLifelines\n entityId={entityId}\n entityType={entityType}\n signalNames={signalNames}\n snapshots={snapshots}\n totalSnapshots={totalSnapshots}\n selectedIndex={selectedSnapshotIndex}\n onSnapshotSelect={selectSnapshot}\n onThemeSelect={openThemeDetailsAt}\n />\n ) : (\n <>\n <SnapshotTimeline\n snapshots={snapshots}\n selectedIndex={selectedSnapshotIndex}\n totalSnapshots={totalSnapshots}\n summary={`${drillStack.length > 0 ? (drillInAvailable ? 'Filtered · ' : 'Filters unavailable · ') : ''}${snapshotSummaryLabel(snapshot, flow)}`}\n isPlaying={isPlaying}\n onPlayingChange={handlePlayingChange}\n onSnapshotChange={selectSnapshot}\n />\n {drillStack.length > 0 ? (\n <ThemeFilterBanner\n selections={drillStack}\n filteredTraceCount={filtersResolved ? flow.snapshot.traceCount : undefined}\n totalTraceCount={currentFlow.snapshot.traceCount}\n isUnavailable={!drillInAvailable}\n onViewDetails={selection => {\n if (selection.kind === 'theme') {\n setNoiseSignalName(undefined);\n setThemeDetails(selection);\n } else {\n setThemeDetails(undefined);\n setNoiseSignalName(selection.signalName);\n }\n }}\n onRemove={signalName =>\n setDrillStack(current => current.filter(filter => filter.signalName !== signalName))\n }\n onClear={() => setDrillStack([])}\n />\n ) : null}\n {isDrilledEmpty ? (\n <section className=\"rounded-lg border border-border bg-background p-6 text-muted-foreground\">\n <Txt as=\"span\" variant=\"body\" className=\"block\">\n This theme is not present in the selected snapshot. Use the clear filter action above to return to the\n full flow.\n </Txt>\n </section>\n ) : graphSummary.records.length === 0 ? (\n <section className=\"rounded-lg border border-border bg-background p-6 text-muted-foreground\">\n <Txt as=\"span\" variant=\"body\" className=\"block\">\n No cross-signal flow for this snapshot — its trace signals have not overlapped on shared traces yet.\n Pick another snapshot from the timeline below.\n </Txt>\n </section>\n ) : (\n <FlowCard\n columns={labeledColumns}\n records={graphSummary.records}\n stages={stages}\n height={height}\n onNodeClick={handleNodeClick}\n isNodeClickable={isNodeClickable}\n drillInDisabledReason={drillInDisabledReason}\n onOrderChange={handleSignalOrderChange}\n signalOrder={pendingSignalNames ?? signalNames}\n reorderDisabled={perspectiveMutation.isPending}\n />\n )}\n {perspectiveMutation.isPending ? (\n <Txt variant=\"caption\" tone=\"muted\" role=\"status\">\n Reloading snapshots for new trace signal perspective…\n </Txt>\n ) : null}\n {perspectiveMutation.isError ? (\n <Txt variant=\"caption\" className=\"text-destructive-foreground\" role=\"alert\">\n Unable to load that trace signal perspective. Try reordering the columns again.\n </Txt>\n ) : null}\n </>\n )}\n <ThemeDetailPanel\n key={`${snapshot.snapshotId}:${detailSelection?.signalName ?? ''}:${detailSelection?.themeId ?? ''}:${filterKey}`}\n entityId={entityId}\n entityType={entityType}\n snapshotId={snapshot.snapshotId}\n snapshotTotal={snapshot.total}\n selection={detailSelection}\n filters={drillStack}\n filteredStats={detailStats}\n onClose={() => setThemeDetails(undefined)}\n />\n <NoiseDetailPanel\n key={`${snapshot.snapshotId}:${noiseSignalName ?? ''}:${filterKey}`}\n entityId={entityId}\n entityType={entityType}\n snapshotId={snapshot.snapshotId}\n signalName={noiseSignalName}\n filters={drillStack}\n filteredStats={noiseStats}\n onClose={() => setNoiseSignalName(undefined)}\n />\n </div>\n </TraceIntelligenceContext.Provider>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"sankey-signals.cjs.js","names":["useQueryClient","useTraceIntelligence","useState","useThemeSnapshots","useMemo","selectFlowSnapshotIds","useThemeFlows","stabilizeThemeFlow","useThemePaths","buildDrilledThemeFlow","buildSignalGraphSummary","findThemeSelectionById","useEntityLearningProgress","useMutation","fetchThemeSnapshots","fetchThemeFlow","fetchThemePaths","_Fragment","SignalsLoadingSkeleton","SignalsErrorState","SignalsEmptyState","SnapshotTimeline","SnapshotSummary","SignalsFrameLoadingSkeleton","findNoiseSelection","findThemeSelection","mergeVisibleSignalOrder","findSelectionStats","serializeThemeFilters","orderedSignals","signalLabel","TraceIntelligenceContext","Tabs","TabList","ViewModeTab","Waypoints","ArrowLeftRight","ChartNoAxesGantt","TraceIntelligenceExplainer","Txt","PendingSignalProgress","ThemeCompare","ThemeLifelines","ThemeFilterBanner","FlowCard","ThemeDetailPanel","NoiseDetailPanel"],"sources":["../../../src/ee/signals/sankey-signals.tsx"],"sourcesContent":["import { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { ArrowLeftRight, ChartNoAxesGantt, Waypoints } from 'lucide-react';\nimport { useMemo, useState } from 'react';\n\nimport { PendingSignalProgress } from './components/signals-empty-state';\nimport { SignalsOverviewPage as SignalsEmptyState } from './components/signals-overview-page';\nimport { fetchThemeFlow, fetchThemePaths, fetchThemeSnapshots, serializeThemeFilters } from './entity-learning-api';\nimport { FlowCard } from './flow-card';\nimport { useEntityLearningProgress } from './hooks/use-entity-learning-progress';\nimport { useSnapshotPlayback } from './hooks/use-snapshot-playback';\nimport { useThemeFlows } from './hooks/use-theme-flows';\nimport { useThemePaths } from './hooks/use-theme-paths';\nimport { useThemeSnapshots } from './hooks/use-theme-snapshots';\nimport { NoiseDetailPanel } from './noise-detail-panel';\nimport { buildSignalGraphSummary, selectFlowSnapshotIds, stabilizeThemeFlow } from './sankey-signals-data';\nimport { orderedSignals, signalLabel } from './signal-formatting';\nimport { SignalsErrorState } from './signals-error-state';\nimport { SignalsFrameLoadingSkeleton, SignalsLoadingSkeleton } from './signals-loading-skeleton';\nimport { SnapshotSummary } from './snapshot-summary';\nimport { SnapshotTimeline } from './snapshot-timeline';\nimport { ThemeCompare } from './theme-compare';\nimport { ThemeDetailPanel } from './theme-detail-panel';\nimport {\n buildDrilledThemeFlow,\n findNoiseSelection,\n findSelectionStats,\n findThemeSelection,\n findThemeSelectionById,\n mergeVisibleSignalOrder,\n} from './theme-drilldown-data';\nimport type { SelectedTheme, ThemeSelection } from './theme-drilldown-data';\nimport { ThemeFilterBanner } from './theme-filter-banner';\nimport { ThemeLifelines } from './theme-lifelines';\nimport { TraceIntelligenceContext } from './trace-intelligence-context';\nimport { TraceIntelligenceExplainer } from './trace-intelligence-explainer';\nimport type { TraceSignalName } from './types';\nimport { useTraceIntelligence } from './use-trace-intelligence';\nimport { ViewModeTab } from './view-mode-tab';\nimport type { SignalsViewMode } from './view-mode-tab';\nimport type { SankeyChartNodeSelection } from '@/ds/components/SankeyChart';\nimport { TabList, Tabs } from '@/ds/components/Tabs';\nimport { Txt } from '@/ds/components/Txt';\n\nexport interface SankeySignalsProps {\n entityId: string;\n entityType?: string;\n signalNames: TraceSignalName[];\n dateFrom?: Date;\n dateTo?: Date;\n height?: number;\n selectedThemeId: string | undefined;\n onSelectedThemeIdChange: (themeId: string | undefined) => void;\n /** Snapshot id of the timeline frame currently displayed. The parent owns this state. */\n selectedFrameId: string;\n onFrameIdChange: (frameId: string) => void;\n /** Date range control rendered in line with the view mode tabs. */\n dateRangePicker?: React.ReactNode;\n}\n\nconst DRILL_IN_TRACE_LIMIT = 2000;\n\n/** One-line answer to \"what am I looking at?\" for each view, shown under the tabs. */\nconst VIEW_DESCRIPTIONS: Omit<Record<SignalsViewMode, string>, 'flow'> = {\n compare: 'Which themes grew, shrank, appeared, or disappeared between two points in time.',\n lifelines: \"Each theme's share of traces across the whole selected range.\",\n};\n\nfunction formatSignalList(labels: string[]): string {\n if (labels.length < 2) return labels[0] ?? 'trace signal';\n if (labels.length === 2) return labels.join(' and ');\n return `${labels.slice(0, -1).join(', ')}, and ${labels.at(-1)}`;\n}\n\nexport function SankeySignals({\n entityId,\n entityType = 'agent',\n signalNames: initialSignalNames,\n dateFrom,\n dateTo,\n height,\n selectedThemeId,\n onSelectedThemeIdChange,\n selectedFrameId,\n onFrameIdChange,\n dateRangePicker,\n}: SankeySignalsProps) {\n const queryClient = useQueryClient();\n const traceIntelligence = useTraceIntelligence();\n const { cacheScope, request, LinkComponent, signalCatalog } = traceIntelligence;\n const [signalNames, setSignalNames] = useState(() => initialSignalNames);\n const [pendingSignalNames, setPendingSignalNames] = useState<TraceSignalName[]>();\n const snapshotsQuery = useThemeSnapshots(entityId, entityType, signalNames, dateFrom, dateTo);\n const effectiveSignalCatalog = snapshotsQuery.data?.signalCatalog ?? signalCatalog;\n const traceIntelligenceContext = useMemo(\n () => ({ ...traceIntelligence, signalCatalog: effectiveSignalCatalog }),\n [effectiveSignalCatalog, traceIntelligence],\n );\n const snapshots = [...(snapshotsQuery.data?.snapshots ?? [])].sort((left, right) => left.ordinal - right.ordinal);\n const [isPlaying, setIsPlaying] = useState(false);\n const [viewMode, setViewMode] = useState<SignalsViewMode>('flow');\n const [drillStack, setDrillStack] = useState<ThemeSelection[]>([]);\n const [noiseSignalName, setNoiseSignalName] = useState<TraceSignalName>();\n // Pure derivation: the parent owns the frame. The index-0 fallback only covers\n // the transient render where a perspective change swapped the snapshot list.\n const matchedSnapshotIndex = snapshots.findIndex(snapshot => snapshot.snapshotId === selectedFrameId);\n const selectedSnapshotIndex = matchedSnapshotIndex >= 0 ? matchedSnapshotIndex : 0;\n const snapshot = snapshots[selectedSnapshotIndex];\n const totalSnapshots = snapshotsQuery.data?.totalSnapshots ?? snapshot?.total ?? 0;\n const selectSnapshot = (index: number) => {\n const id = snapshots[index]?.snapshotId;\n if (id) onFrameIdChange(id);\n };\n const handleViewModeChange = (nextViewMode: SignalsViewMode) => {\n if (nextViewMode !== 'flow') setIsPlaying(false);\n setViewMode(nextViewMode);\n };\n const handlePlayingChange = (nextIsPlaying: boolean) => {\n // Restart from the first landmark when play is pressed at the end.\n if (nextIsPlaying && selectedSnapshotIndex === snapshots.length - 1) selectSnapshot(0);\n setIsPlaying(nextIsPlaying);\n };\n const setThemeDetails = (selection: SelectedTheme | undefined) => {\n onSelectedThemeIdChange(selection?.themeId);\n };\n // Compare cards and lifeline points open details for the theme at the\n // landmark they were clicked on, so the panel's snapshot follows the click.\n const openThemeDetailsAt = (selection: ThemeSelection, snapshotIndex: number) => {\n if (selection.kind !== 'theme') return;\n selectSnapshot(snapshotIndex);\n setNoiseSignalName(undefined);\n setThemeDetails(selection);\n };\n\n // Undefined at the last landmark so playback stops instead of looping.\n const nextSnapshotId = snapshots[selectedSnapshotIndex + 1]?.snapshotId;\n const flowSnapshotIds = selectFlowSnapshotIds(snapshots, selectedSnapshotIndex);\n const flowQueries = useThemeFlows(entityId, entityType, signalNames, flowSnapshotIds);\n const flowQuery = flowQueries[flowSnapshotIds.indexOf(snapshot?.snapshotId ?? '')];\n const currentFlow = flowQuery?.data;\n // The loading skeleton tracks only the selected snapshot's flow; prefetched\n // neighbors warm the cache in the background without blocking the chart.\n const isFlowPending = flowQuery?.isPending ?? false;\n // Errors stay window-wide: a failed preload surfaces the retry state instead\n // of letting playback advance into a broken frame.\n const hasFlowError = flowQueries.some(query => query.isError);\n const isFlowWindowBusy = flowQueries.some(query => query.isPending) || hasFlowError;\n const windowFlows = useMemo(() => flowQueries.flatMap(query => (query.data ? [query.data] : [])), [flowQueries]);\n const stableUnfilteredFlow = useMemo(\n () => (currentFlow ? stabilizeThemeFlow(currentFlow, windowFlows) : undefined),\n [currentFlow, windowFlows],\n );\n const drillInAvailable = Boolean(currentFlow && currentFlow.snapshot.traceCount <= DRILL_IN_TRACE_LIMIT);\n const pathsQuery = useThemePaths(\n entityId,\n entityType,\n signalNames,\n snapshot?.snapshotId,\n drillInAvailable && drillStack.length > 0,\n );\n const flow = useMemo(() => {\n if (!stableUnfilteredFlow || drillStack.length === 0 || !pathsQuery.data) return stableUnfilteredFlow;\n\n const drilledFlow = buildDrilledThemeFlow(stableUnfilteredFlow, pathsQuery.data, drillStack);\n return stabilizeThemeFlow(drilledFlow, [stableUnfilteredFlow, drilledFlow]);\n }, [drillStack, pathsQuery.data, stableUnfilteredFlow]);\n const graphSummary = useMemo(() => (flow ? buildSignalGraphSummary(flow) : undefined), [flow]);\n const detailSelection =\n stableUnfilteredFlow && selectedThemeId ? findThemeSelectionById(stableUnfilteredFlow, selectedThemeId) : undefined;\n const populatedStageCount = currentFlow?.stages.filter(stage => stage.nodes.length > 0).length ?? 0;\n const hasPendingEnabledSignals = effectiveSignalCatalog.some(signal => signal.enabled && signal.status !== 'ready');\n const shouldLoadProgress =\n snapshotsQuery.isSuccess &&\n !snapshotsQuery.isError &&\n (hasPendingEnabledSignals ||\n !snapshot ||\n Boolean(currentFlow && (!flow || !graphSummary || populatedStageCount < 2)));\n const progressQuery = useEntityLearningProgress(entityId, entityType, shouldLoadProgress);\n const isPlaybackBlockedByDrillIn = drillStack.length > 0 && (pathsQuery.isFetching || pathsQuery.isError);\n const hasActivePathsError = drillStack.length > 0 && pathsQuery.isError;\n\n useSnapshotPlayback({\n isPlaying,\n isPlaybackBlocked: isFlowWindowBusy || isPlaybackBlockedByDrillIn,\n nextSnapshot: nextSnapshotId,\n onAdvance: frameId => {\n if (frameId === undefined) {\n setIsPlaying(false);\n return;\n }\n onFrameIdChange(frameId);\n },\n snapshotCount: snapshots.length,\n });\n\n const perspectiveMutation = useMutation({\n mutationFn: async (nextSignalNames: TraceSignalName[]) => {\n const nextSnapshots = await queryClient.fetchQuery({\n queryKey: [\n 'entity-learning',\n cacheScope,\n entityType,\n entityId,\n 'theme-snapshots',\n nextSignalNames,\n dateFrom?.toISOString(),\n dateTo?.toISOString(),\n ],\n queryFn: () => fetchThemeSnapshots(request, entityId, entityType, nextSignalNames, dateFrom, dateTo),\n });\n const sortedNextSnapshots = [...nextSnapshots.snapshots].sort((left, right) => left.ordinal - right.ordinal);\n const matchedNextIndex = sortedNextSnapshots.findIndex(candidate => candidate.ordinal === snapshot?.ordinal);\n const nextSelectedIndex = matchedNextIndex >= 0 ? matchedNextIndex : 0;\n const nextSnapshot = sortedNextSnapshots[nextSelectedIndex];\n await Promise.all(\n selectFlowSnapshotIds(sortedNextSnapshots, nextSelectedIndex).map(snapshotId =>\n queryClient.fetchQuery({\n queryKey: ['entity-learning', cacheScope, entityType, entityId, 'theme-flow', nextSignalNames, snapshotId],\n queryFn: () => fetchThemeFlow(request, entityId, entityType, nextSignalNames, snapshotId),\n }),\n ),\n );\n if (drillStack.length > 0 && nextSnapshot && nextSnapshot.traceCount <= DRILL_IN_TRACE_LIMIT) {\n await queryClient.fetchQuery({\n queryKey: [\n 'entity-learning',\n cacheScope,\n entityType,\n entityId,\n 'theme-paths',\n nextSignalNames,\n nextSnapshot.snapshotId,\n ],\n queryFn: () => fetchThemePaths(request, entityId, entityType, nextSignalNames, nextSnapshot.snapshotId),\n });\n }\n return { nextSignalNames, nextFrameId: nextSnapshot?.snapshotId };\n },\n onSuccess: ({ nextSignalNames, nextFrameId }) => {\n setSignalNames(nextSignalNames);\n setPendingSignalNames(undefined);\n // Keep the parent-owned frame pointing at a snapshot that exists in the new perspective.\n if (nextFrameId && nextFrameId !== selectedFrameId) onFrameIdChange(nextFrameId);\n },\n onError: () => setPendingSignalNames(undefined),\n });\n\n if (snapshotsQuery.isPending) {\n return (\n <>\n {dateRangePicker && <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>}\n <SignalsLoadingSkeleton />\n </>\n );\n }\n\n if (snapshotsQuery.isError || hasFlowError || hasActivePathsError) {\n return (\n <>\n {dateRangePicker && <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>}\n <SignalsErrorState\n message=\"Unable to load trace signal flow.\"\n onRetry={() => {\n setIsPlaying(false);\n void snapshotsQuery.refetch();\n void Promise.all(flowQueries.map(query => query.refetch()));\n if (drillStack.length > 0 && drillInAvailable) void pathsQuery.refetch();\n }}\n onClear={hasActivePathsError ? () => setDrillStack([]) : undefined}\n />\n </>\n );\n }\n\n if (!snapshot) {\n return (\n <>\n {dateRangePicker && <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>}\n <SignalsEmptyState\n LinkComponent={LinkComponent}\n progress={progressQuery.data}\n signalCatalog={effectiveSignalCatalog}\n isRangeEmpty\n />\n </>\n );\n }\n\n if (isFlowPending) {\n return (\n <div className=\"min-w-0 space-y-5 p-4 lg:p-6\">\n {dateRangePicker && <div className=\"flex justify-end\">{dateRangePicker}</div>}\n <SnapshotTimeline\n snapshots={snapshots}\n selectedIndex={selectedSnapshotIndex}\n totalSnapshots={totalSnapshots}\n summary={snapshot ? <SnapshotSummary snapshot={snapshot} flow={undefined} /> : undefined}\n isPlaying={isPlaying}\n onPlayingChange={handlePlayingChange}\n onSnapshotChange={selectSnapshot}\n />\n <SignalsFrameLoadingSkeleton />\n </div>\n );\n }\n\n if (!currentFlow || !flow || !graphSummary || populatedStageCount < 2) {\n return (\n <>\n {dateRangePicker && <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>}\n <SignalsEmptyState\n LinkComponent={LinkComponent}\n progress={progressQuery.data}\n signalCatalog={effectiveSignalCatalog}\n />\n </>\n );\n }\n\n const stages = flow.stages;\n const isNodeClickable = (selection: SankeyChartNodeSelection) =>\n findNoiseSelection(flow, selection.column.id, selection.value) !== undefined ||\n findThemeSelection(flow, selection.column.id, selection.value) !== undefined;\n const handleNodeClick = (selection: SankeyChartNodeSelection) => {\n const nextSelection =\n findNoiseSelection(flow, selection.column.id, selection.value) ??\n findThemeSelection(flow, selection.column.id, selection.value);\n if (!nextSelection || drillStack.some(filter => filter.signalName === nextSelection.signalName)) return;\n if (nextSelection.kind === 'theme') {\n setNoiseSignalName(undefined);\n setThemeDetails(nextSelection);\n if (drillInAvailable) setDrillStack(current => [...current, nextSelection]);\n } else {\n setThemeDetails(undefined);\n setNoiseSignalName(nextSelection.signalName);\n }\n };\n const drillInDisabledReason = drillInAvailable\n ? undefined\n : 'Drill-in is unavailable for snapshots with more than 2,000 traces.';\n const isDrilledEmpty = drillStack.length > 0 && pathsQuery.data !== undefined && flow.snapshot.traceCount === 0;\n const handleSignalOrderChange = (nextSignalNames: TraceSignalName[]) => {\n if (perspectiveMutation.isPending) return;\n setIsPlaying(false);\n setThemeDetails(undefined);\n setNoiseSignalName(undefined);\n const mergedSignalNames = mergeVisibleSignalOrder(signalNames, nextSignalNames);\n setPendingSignalNames(mergedSignalNames);\n perspectiveMutation.mutate(mergedSignalNames);\n };\n const filtersResolved = drillStack.length > 0 && drillInAvailable && pathsQuery.data !== undefined;\n const filterSummaryPrefix = drillInAvailable ? 'Filtered' : 'Filters unavailable';\n const detailStats = filtersResolved ? findSelectionStats(flow, drillStack, detailSelection) : undefined;\n const noiseStats = filtersResolved\n ? findSelectionStats(flow, drillStack, noiseSignalName ? { kind: 'noise', signalName: noiseSignalName } : undefined)\n : undefined;\n const filterKey = serializeThemeFilters(drillStack);\n const catalogSignalNames = orderedSignals(effectiveSignalCatalog, signalNames);\n const viewDescription =\n viewMode === 'flow'\n ? `How this agent's traces distribute across ${formatSignalList(catalogSignalNames.map(name => signalLabel(effectiveSignalCatalog, name).toLocaleLowerCase()))} themes at this point in time.`\n : VIEW_DESCRIPTIONS[viewMode];\n const labeledColumns = graphSummary.columns.map(column => ({\n ...column,\n label: signalLabel(effectiveSignalCatalog, column.id),\n }));\n\n return (\n <TraceIntelligenceContext.Provider value={traceIntelligenceContext}>\n <div className=\"min-w-0 space-y-5 p-4 lg:p-6\">\n <div className=\"flex min-w-0 flex-wrap items-center justify-between gap-3\">\n <div className=\"flex min-w-0 flex-wrap items-center gap-4\">\n <Tabs<SignalsViewMode>\n value={viewMode}\n defaultTab=\"flow\"\n onValueChange={handleViewModeChange}\n className=\"w-fit\"\n >\n <TabList variant=\"pill-ghost\">\n <ViewModeTab value=\"flow\" icon={<Waypoints />} label=\"Flow\" />\n <ViewModeTab value=\"compare\" icon={<ArrowLeftRight />} label=\"Compare\" />\n <ViewModeTab value=\"lifelines\" icon={<ChartNoAxesGantt />} label=\"Lifelines\" />\n </TabList>\n </Tabs>\n <TraceIntelligenceExplainer signalCatalog={effectiveSignalCatalog} />\n </div>\n {dateRangePicker}\n </div>\n <Txt variant=\"caption\" tone=\"muted\">\n {viewDescription}\n </Txt>\n <PendingSignalProgress progress={progressQuery.data} signalCatalog={effectiveSignalCatalog} />\n {viewMode === 'compare' ? (\n <ThemeCompare\n entityId={entityId}\n entityType={entityType}\n signalNames={signalNames}\n snapshots={snapshots}\n totalSnapshots={totalSnapshots}\n onThemeSelect={openThemeDetailsAt}\n />\n ) : viewMode === 'lifelines' ? (\n <ThemeLifelines\n entityId={entityId}\n entityType={entityType}\n signalNames={signalNames}\n snapshots={snapshots}\n totalSnapshots={totalSnapshots}\n selectedIndex={selectedSnapshotIndex}\n onSnapshotSelect={selectSnapshot}\n onThemeSelect={openThemeDetailsAt}\n />\n ) : (\n <>\n <SnapshotTimeline\n snapshots={snapshots}\n selectedIndex={selectedSnapshotIndex}\n totalSnapshots={totalSnapshots}\n summary={\n <SnapshotSummary\n snapshot={snapshot}\n flow={flow}\n prefix={drillStack.length > 0 ? filterSummaryPrefix : undefined}\n />\n }\n isPlaying={isPlaying}\n onPlayingChange={handlePlayingChange}\n onSnapshotChange={selectSnapshot}\n />\n {drillStack.length > 0 ? (\n <ThemeFilterBanner\n selections={drillStack}\n filteredTraceCount={filtersResolved ? flow.snapshot.traceCount : undefined}\n totalTraceCount={currentFlow.snapshot.traceCount}\n isUnavailable={!drillInAvailable}\n onViewDetails={selection => {\n if (selection.kind === 'theme') {\n setNoiseSignalName(undefined);\n setThemeDetails(selection);\n } else {\n setThemeDetails(undefined);\n setNoiseSignalName(selection.signalName);\n }\n }}\n onRemove={signalName =>\n setDrillStack(current => current.filter(filter => filter.signalName !== signalName))\n }\n onClear={() => setDrillStack([])}\n />\n ) : null}\n {isDrilledEmpty ? (\n <section className=\"rounded-lg border border-border bg-background p-6 text-muted-foreground\">\n <Txt as=\"span\" variant=\"body\" className=\"block\">\n This theme is not present in the selected snapshot. Use the clear filter action above to return to the\n full flow.\n </Txt>\n </section>\n ) : graphSummary.records.length === 0 ? (\n <section className=\"rounded-lg border border-border bg-background p-6 text-muted-foreground\">\n <Txt as=\"span\" variant=\"body\" className=\"block\">\n No cross-signal flow for this snapshot. Its trace signals have not overlapped on shared traces yet.\n Pick another snapshot from the timeline below.\n </Txt>\n </section>\n ) : (\n <FlowCard\n columns={labeledColumns}\n records={graphSummary.records}\n stages={stages}\n height={height}\n onNodeClick={handleNodeClick}\n isNodeClickable={isNodeClickable}\n drillInDisabledReason={drillInDisabledReason}\n onOrderChange={handleSignalOrderChange}\n signalOrder={pendingSignalNames ?? signalNames}\n reorderDisabled={perspectiveMutation.isPending}\n />\n )}\n {perspectiveMutation.isPending ? (\n <Txt variant=\"caption\" tone=\"muted\" role=\"status\">\n Reloading snapshots for new trace signal perspective…\n </Txt>\n ) : null}\n {perspectiveMutation.isError ? (\n <Txt variant=\"caption\" className=\"text-destructive-foreground\" role=\"alert\">\n Unable to load that trace signal perspective. Try reordering the columns again.\n </Txt>\n ) : null}\n </>\n )}\n <ThemeDetailPanel\n key={`${snapshot.snapshotId}:${detailSelection?.signalName ?? ''}:${detailSelection?.themeId ?? ''}:${filterKey}`}\n entityId={entityId}\n entityType={entityType}\n snapshotId={snapshot.snapshotId}\n snapshotTotal={snapshot.total}\n selection={detailSelection}\n filters={drillStack}\n filteredStats={detailStats}\n onClose={() => setThemeDetails(undefined)}\n />\n <NoiseDetailPanel\n key={`${snapshot.snapshotId}:${noiseSignalName ?? ''}:${filterKey}`}\n entityId={entityId}\n entityType={entityType}\n snapshotId={snapshot.snapshotId}\n signalName={noiseSignalName}\n filters={drillStack}\n filteredStats={noiseStats}\n onClose={() => setNoiseSignalName(undefined)}\n />\n </div>\n </TraceIntelligenceContext.Provider>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2DA,IAAM,uBAAuB;;AAG7B,IAAM,oBAAmE;CACvE,SAAS;CACT,WAAW;AACb;AAEA,SAAS,iBAAiB,QAA0B;CAClD,IAAI,OAAO,SAAS,GAAG,OAAO,OAAO,MAAM;CAC3C,IAAI,OAAO,WAAW,GAAG,OAAO,OAAO,KAAK,OAAO;CACnD,OAAO,GAAG,OAAO,MAAM,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,OAAO,GAAG,EAAE;AAC/D;AAEA,SAAgB,cAAc,EAC5B,UACA,aAAa,SACb,aAAa,oBACb,UACA,QACA,QACA,iBACA,yBACA,iBACA,iBACA,mBACqB;CACrB,MAAM,eAAA,GAAcA,sBAAAA,eAAAA,CAAe;CACnC,MAAM,oBAAoBC,0CAAAA,qBAAqB;CAC/C,MAAM,EAAE,YAAY,SAAS,eAAe,kBAAkB;CAC9D,MAAM,CAAC,aAAa,mBAAA,GAAkBC,MAAAA,SAAAA,OAAe,kBAAkB;CACvE,MAAM,CAAC,oBAAoB,0BAAA,GAAyBA,MAAAA,SAAAA,CAA4B;CAChF,MAAM,iBAAiBC,6CAAAA,kBAAkB,UAAU,YAAY,aAAa,UAAU,MAAM;CAC5F,MAAM,yBAAyB,eAAe,MAAM,iBAAiB;CACrE,MAAM,4BAAA,GAA2BC,MAAAA,QAAAA,QACxB;EAAE,GAAG;EAAmB,eAAe;CAAuB,IACrE,CAAC,wBAAwB,iBAAiB,CAC5C;CACA,MAAM,YAAY,CAAC,GAAI,eAAe,MAAM,aAAa,CAAC,CAAE,CAAC,CAAC,MAAM,MAAM,UAAU,KAAK,UAAU,MAAM,OAAO;CAChH,MAAM,CAAC,WAAW,iBAAA,GAAgBF,MAAAA,SAAAA,CAAS,KAAK;CAChD,MAAM,CAAC,UAAU,gBAAA,GAAeA,MAAAA,SAAAA,CAA0B,MAAM;CAChE,MAAM,CAAC,YAAY,kBAAA,GAAiBA,MAAAA,SAAAA,CAA2B,CAAC,CAAC;CACjE,MAAM,CAAC,iBAAiB,uBAAA,GAAsBA,MAAAA,SAAAA,CAA0B;CAGxE,MAAM,uBAAuB,UAAU,WAAU,aAAY,SAAS,eAAe,eAAe;CACpG,MAAM,wBAAwB,wBAAwB,IAAI,uBAAuB;CACjF,MAAM,WAAW,UAAU;CAC3B,MAAM,iBAAiB,eAAe,MAAM,kBAAkB,UAAU,SAAS;CACjF,MAAM,kBAAkB,UAAkB;EACxC,MAAM,KAAK,UAAU,MAAM,EAAE;EAC7B,IAAI,IAAI,gBAAgB,EAAE;CAC5B;CACA,MAAM,wBAAwB,iBAAkC;EAC9D,IAAI,iBAAiB,QAAQ,aAAa,KAAK;EAC/C,YAAY,YAAY;CAC1B;CACA,MAAM,uBAAuB,kBAA2B;EAEtD,IAAI,iBAAiB,0BAA0B,UAAU,SAAS,GAAG,eAAe,CAAC;EACrF,aAAa,aAAa;CAC5B;CACA,MAAM,mBAAmB,cAAyC;EAChE,wBAAwB,WAAW,OAAO;CAC5C;CAGA,MAAM,sBAAsB,WAA2B,kBAA0B;EAC/E,IAAI,UAAU,SAAS,SAAS;EAChC,eAAe,aAAa;EAC5B,mBAAmB,KAAA,CAAS;EAC5B,gBAAgB,SAAS;CAC3B;CAGA,MAAM,iBAAiB,UAAU,wBAAwB,EAAE,EAAE;CAC7D,MAAM,kBAAkBG,uCAAAA,sBAAsB,WAAW,qBAAqB;CAC9E,MAAM,cAAcC,yCAAAA,cAAc,UAAU,YAAY,aAAa,eAAe;CACpF,MAAM,YAAY,YAAY,gBAAgB,QAAQ,UAAU,cAAc,EAAE;CAChF,MAAM,cAAc,WAAW;CAG/B,MAAM,gBAAgB,WAAW,aAAa;CAG9C,MAAM,eAAe,YAAY,MAAK,UAAS,MAAM,OAAO;CAC5D,MAAM,mBAAmB,YAAY,MAAK,UAAS,MAAM,SAAS,KAAK;CACvE,MAAM,eAAA,GAAcF,MAAAA,QAAAA,OAAc,YAAY,SAAQ,UAAU,MAAM,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,CAAE,GAAG,CAAC,WAAW,CAAC;CAC/G,MAAM,wBAAA,GAAuBA,MAAAA,QAAAA,OACpB,cAAcG,uCAAAA,mBAAmB,aAAa,WAAW,IAAI,KAAA,GACpE,CAAC,aAAa,WAAW,CAC3B;CACA,MAAM,mBAAmB,QAAQ,eAAe,YAAY,SAAS,cAAc,oBAAoB;CACvG,MAAM,aAAaC,yCAAAA,cACjB,UACA,YACA,aACA,UAAU,YACV,oBAAoB,WAAW,SAAS,CAC1C;CACA,MAAM,QAAA,GAAOJ,MAAAA,QAAAA,OAAc;EACzB,IAAI,CAAC,wBAAwB,WAAW,WAAW,KAAK,CAAC,WAAW,MAAM,OAAO;EAEjF,MAAM,cAAcK,wCAAAA,sBAAsB,sBAAsB,WAAW,MAAM,UAAU;EAC3F,OAAOF,uCAAAA,mBAAmB,aAAa,CAAC,sBAAsB,WAAW,CAAC;CAC5E,GAAG;EAAC;EAAY,WAAW;EAAM;CAAoB,CAAC;CACtD,MAAM,gBAAA,GAAeH,MAAAA,QAAAA,OAAe,OAAOM,uCAAAA,wBAAwB,IAAI,IAAI,KAAA,GAAY,CAAC,IAAI,CAAC;CAC7F,MAAM,kBACJ,wBAAwB,kBAAkBC,wCAAAA,uBAAuB,sBAAsB,eAAe,IAAI,KAAA;CAC5G,MAAM,sBAAsB,aAAa,OAAO,QAAO,UAAS,MAAM,MAAM,SAAS,CAAC,CAAC,CAAC,UAAU;CAClG,MAAM,2BAA2B,uBAAuB,MAAK,WAAU,OAAO,WAAW,OAAO,WAAW,OAAO;CAClH,MAAM,qBACJ,eAAe,aACf,CAAC,eAAe,YACf,4BACC,CAAC,YACD,QAAQ,gBAAgB,CAAC,QAAQ,CAAC,gBAAgB,sBAAsB,EAAE;CAC9E,MAAM,gBAAgBC,sDAAAA,0BAA0B,UAAU,YAAY,kBAAkB;CACxF,MAAM,6BAA6B,WAAW,SAAS,MAAM,WAAW,cAAc,WAAW;CACjG,MAAM,sBAAsB,WAAW,SAAS,KAAK,WAAW;CAEhE,+CAAA,oBAAoB;EAClB;EACA,mBAAmB,oBAAoB;EACvC,cAAc;EACd,YAAW,YAAW;GACpB,IAAI,YAAY,KAAA,GAAW;IACzB,aAAa,KAAK;IAClB;GACF;GACA,gBAAgB,OAAO;EACzB;EACA,eAAe,UAAU;CAC3B,CAAC;CAED,MAAM,uBAAA,GAAsBC,sBAAAA,YAAAA,CAAY;EACtC,YAAY,OAAO,oBAAuC;GAcxD,MAAM,sBAAsB,CAAC,IAAG,MAbJ,YAAY,WAAW;IACjD,UAAU;KACR;KACA;KACA;KACA;KACA;KACA;KACA,UAAU,YAAY;KACtB,QAAQ,YAAY;IACtB;IACA,eAAeC,uCAAAA,oBAAoB,SAAS,UAAU,YAAY,iBAAiB,UAAU,MAAM;GACrG,CAAC,EAAA,CAC6C,SAAS,CAAC,CAAC,MAAM,MAAM,UAAU,KAAK,UAAU,MAAM,OAAO;GAC3G,MAAM,mBAAmB,oBAAoB,WAAU,cAAa,UAAU,YAAY,UAAU,OAAO;GAC3G,MAAM,oBAAoB,oBAAoB,IAAI,mBAAmB;GACrE,MAAM,eAAe,oBAAoB;GACzC,MAAM,QAAQ,IACZT,uCAAAA,sBAAsB,qBAAqB,iBAAiB,CAAC,CAAC,KAAI,eAChE,YAAY,WAAW;IACrB,UAAU;KAAC;KAAmB;KAAY;KAAY;KAAU;KAAc;KAAiB;IAAU;IACzG,eAAeU,uCAAAA,eAAe,SAAS,UAAU,YAAY,iBAAiB,UAAU;GAC1F,CAAC,CACH,CACF;GACA,IAAI,WAAW,SAAS,KAAK,gBAAgB,aAAa,cAAc,sBACtE,MAAM,YAAY,WAAW;IAC3B,UAAU;KACR;KACA;KACA;KACA;KACA;KACA;KACA,aAAa;IACf;IACA,eAAeC,uCAAAA,gBAAgB,SAAS,UAAU,YAAY,iBAAiB,aAAa,UAAU;GACxG,CAAC;GAEH,OAAO;IAAE;IAAiB,aAAa,cAAc;GAAW;EAClE;EACA,YAAY,EAAE,iBAAiB,kBAAkB;GAC/C,eAAe,eAAe;GAC9B,sBAAsB,KAAA,CAAS;GAE/B,IAAI,eAAe,gBAAgB,iBAAiB,gBAAgB,WAAW;EACjF;EACA,eAAe,sBAAsB,KAAA,CAAS;CAChD,CAAC;CAED,IAAI,eAAe,WACjB,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAAC,kBAAAA,UAAA,EAAA,UAAA,CACG,mBAAmB,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EAAK,WAAU;EAA8C,UAAA;CAAqB,CAAA,GACtG,iBAAA,GAAA,kBAAA,IAAA,CAACC,4CAAAA,wBAAD,CAAyB,CAAA,CACzB,EAAA,CAAA;CAIN,IAAI,eAAe,WAAW,gBAAgB,qBAC5C,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAAD,kBAAAA,UAAA,EAAA,UAAA,CACG,mBAAmB,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EAAK,WAAU;EAA8C,UAAA;CAAqB,CAAA,GACtG,iBAAA,GAAA,kBAAA,IAAA,CAACE,uCAAAA,mBAAD;EACE,SAAQ;EACR,eAAe;GACb,aAAa,KAAK;GAClB,eAAoB,QAAQ;GAC5B,QAAa,IAAI,YAAY,KAAI,UAAS,MAAM,QAAQ,CAAC,CAAC;GAC1D,IAAI,WAAW,SAAS,KAAK,kBAAkB,WAAgB,QAAQ;EACzE;EACA,SAAS,4BAA4B,cAAc,CAAC,CAAC,IAAI,KAAA;CAC1D,CAAA,CACD,EAAA,CAAA;CAIN,IAAI,CAAC,UACH,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAAF,kBAAAA,UAAA,EAAA,UAAA,CACG,mBAAmB,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EAAK,WAAU;EAA8C,UAAA;CAAqB,CAAA,GACtG,iBAAA,GAAA,kBAAA,IAAA,CAACG,oDAAAA,qBAAD;EACiB;EACf,UAAU,cAAc;EACxB,eAAe;EACf,cAAA;CACD,CAAA,CACD,EAAA,CAAA;CAIN,IAAI,eACF,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;EAAK,WAAU;EAAf,UAAA;GACG,mBAAmB,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;IAAK,WAAU;IAAoB,UAAA;GAAqB,CAAA;GAC5E,iBAAA,GAAA,kBAAA,IAAA,CAACC,qCAAAA,kBAAD;IACa;IACX,eAAe;IACC;IAChB,SAAS,WAAW,iBAAA,GAAA,kBAAA,IAAA,CAACC,oCAAAA,iBAAD;KAA2B;KAAU,MAAM,KAAA;IAAY,CAAA,IAAI,KAAA;IACpE;IACX,iBAAiB;IACjB,kBAAkB;GACnB,CAAA;GACD,iBAAA,GAAA,kBAAA,IAAA,CAACC,4CAAAA,6BAAD,CAA8B,CAAA;EAC3B;;CAIT,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,gBAAgB,sBAAsB,GAClE,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAAN,kBAAAA,UAAA,EAAA,UAAA,CACG,mBAAmB,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EAAK,WAAU;EAA8C,UAAA;CAAqB,CAAA,GACtG,iBAAA,GAAA,kBAAA,IAAA,CAACG,oDAAAA,qBAAD;EACiB;EACf,UAAU,cAAc;EACxB,eAAe;CAChB,CAAA,CACD,EAAA,CAAA;CAIN,MAAM,SAAS,KAAK;CACpB,MAAM,mBAAmB,cACvBI,wCAAAA,mBAAmB,MAAM,UAAU,OAAO,IAAI,UAAU,KAAK,MAAM,KAAA,KACnEC,wCAAAA,mBAAmB,MAAM,UAAU,OAAO,IAAI,UAAU,KAAK,MAAM,KAAA;CACrE,MAAM,mBAAmB,cAAwC;EAC/D,MAAM,gBACJD,wCAAAA,mBAAmB,MAAM,UAAU,OAAO,IAAI,UAAU,KAAK,KAC7DC,wCAAAA,mBAAmB,MAAM,UAAU,OAAO,IAAI,UAAU,KAAK;EAC/D,IAAI,CAAC,iBAAiB,WAAW,MAAK,WAAU,OAAO,eAAe,cAAc,UAAU,GAAG;EACjG,IAAI,cAAc,SAAS,SAAS;GAClC,mBAAmB,KAAA,CAAS;GAC5B,gBAAgB,aAAa;GAC7B,IAAI,kBAAkB,eAAc,YAAW,CAAC,GAAG,SAAS,aAAa,CAAC;EAC5E,OAAO;GACL,gBAAgB,KAAA,CAAS;GACzB,mBAAmB,cAAc,UAAU;EAC7C;CACF;CACA,MAAM,wBAAwB,mBAC1B,KAAA,IACA;CACJ,MAAM,iBAAiB,WAAW,SAAS,KAAK,WAAW,SAAS,KAAA,KAAa,KAAK,SAAS,eAAe;CAC9G,MAAM,2BAA2B,oBAAuC;EACtE,IAAI,oBAAoB,WAAW;EACnC,aAAa,KAAK;EAClB,gBAAgB,KAAA,CAAS;EACzB,mBAAmB,KAAA,CAAS;EAC5B,MAAM,oBAAoBC,wCAAAA,wBAAwB,aAAa,eAAe;EAC9E,sBAAsB,iBAAiB;EACvC,oBAAoB,OAAO,iBAAiB;CAC9C;CACA,MAAM,kBAAkB,WAAW,SAAS,KAAK,oBAAoB,WAAW,SAAS,KAAA;CACzF,MAAM,sBAAsB,mBAAmB,aAAa;CAC5D,MAAM,cAAc,kBAAkBC,wCAAAA,mBAAmB,MAAM,YAAY,eAAe,IAAI,KAAA;CAC9F,MAAM,aAAa,kBACfA,wCAAAA,mBAAmB,MAAM,YAAY,kBAAkB;EAAE,MAAM;EAAS,YAAY;CAAgB,IAAI,KAAA,CAAS,IACjH,KAAA;CACJ,MAAM,YAAYC,uCAAAA,sBAAsB,UAAU;CAClD,MAAM,qBAAqBC,qCAAAA,eAAe,wBAAwB,WAAW;CAC7E,MAAM,kBACJ,aAAa,SACT,6CAA6C,iBAAiB,mBAAmB,KAAI,SAAQC,qCAAAA,YAAY,wBAAwB,IAAI,CAAC,CAAC,kBAAkB,CAAC,CAAC,EAAE,kCAC7J,kBAAkB;CACxB,MAAM,iBAAiB,aAAa,QAAQ,KAAI,YAAW;EACzD,GAAG;EACH,OAAOA,qCAAAA,YAAY,wBAAwB,OAAO,EAAE;CACtD,EAAE;CAEF,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,8CAAAA,yBAAyB,UAA1B;EAAmC,OAAO;EACxC,UAAA,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;GAAK,WAAU;GAAf,UAAA;IACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;KAAK,WAAU;KAAf,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;MAAK,WAAU;MAAf,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,iBAAAA,MAAD;OACE,OAAO;OACP,YAAW;OACX,eAAe;OACf,WAAU;OAEV,UAAA,iBAAA,GAAA,kBAAA,KAAA,CAACC,iBAAAA,SAAD;QAAS,SAAQ;QAAjB,UAAA;SACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,iCAAAA,aAAD;UAAa,OAAM;UAAO,MAAM,iBAAA,GAAA,kBAAA,IAAA,CAACC,aAAAA,WAAD,CAAY,CAAA;UAAG,OAAM;SAAQ,CAAA;SAC7D,iBAAA,GAAA,kBAAA,IAAA,CAACD,iCAAAA,aAAD;UAAa,OAAM;UAAU,MAAM,iBAAA,GAAA,kBAAA,IAAA,CAACE,aAAAA,gBAAD,CAAiB,CAAA;UAAG,OAAM;SAAW,CAAA;SACxE,iBAAA,GAAA,kBAAA,IAAA,CAACF,iCAAAA,aAAD;UAAa,OAAM;UAAY,MAAM,iBAAA,GAAA,kBAAA,IAAA,CAACG,aAAAA,kBAAD,CAAmB,CAAA;UAAG,OAAM;SAAa,CAAA;QACvE;;MACL,CAAA,GACN,iBAAA,GAAA,kBAAA,IAAA,CAACC,gDAAAA,4BAAD,EAA4B,eAAe,uBAAyB,CAAA,CACjE;KACJ,CAAA,GAAA,eACE;;IACL,iBAAA,GAAA,kBAAA,IAAA,CAACC,YAAAA,KAAD;KAAK,SAAQ;KAAU,MAAK;KACzB,UAAA;IACE,CAAA;IACL,iBAAA,GAAA,kBAAA,IAAA,CAACC,kDAAAA,uBAAD;KAAuB,UAAU,cAAc;KAAM,eAAe;IAAyB,CAAA;IAC5F,aAAa,YACZ,iBAAA,GAAA,kBAAA,IAAA,CAACC,iCAAAA,cAAD;KACY;KACE;KACC;KACF;KACK;KAChB,eAAe;IAChB,CAAA,IACC,aAAa,cACf,iBAAA,GAAA,kBAAA,IAAA,CAACC,mCAAAA,gBAAD;KACY;KACE;KACC;KACF;KACK;KAChB,eAAe;KACf,kBAAkB;KAClB,eAAe;IAChB,CAAA,IAED,iBAAA,GAAA,kBAAA,KAAA,CAAAzB,kBAAAA,UAAA,EAAA,UAAA;KACE,iBAAA,GAAA,kBAAA,IAAA,CAACI,qCAAAA,kBAAD;MACa;MACX,eAAe;MACC;MAChB,SACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,oCAAAA,iBAAD;OACY;OACJ;OACN,QAAQ,WAAW,SAAS,IAAI,sBAAsB,KAAA;MACvD,CAAA;MAEQ;MACX,iBAAiB;MACjB,kBAAkB;KACnB,CAAA;KACA,WAAW,SAAS,IACnB,iBAAA,GAAA,kBAAA,IAAA,CAACqB,uCAAAA,mBAAD;MACE,YAAY;MACZ,oBAAoB,kBAAkB,KAAK,SAAS,aAAa,KAAA;MACjE,iBAAiB,YAAY,SAAS;MACtC,eAAe,CAAC;MAChB,gBAAe,cAAa;OAC1B,IAAI,UAAU,SAAS,SAAS;QAC9B,mBAAmB,KAAA,CAAS;QAC5B,gBAAgB,SAAS;OAC3B,OAAO;QACL,gBAAgB,KAAA,CAAS;QACzB,mBAAmB,UAAU,UAAU;OACzC;MACF;MACA,WAAU,eACR,eAAc,YAAW,QAAQ,QAAO,WAAU,OAAO,eAAe,UAAU,CAAC;MAErF,eAAe,cAAc,CAAC,CAAC;KAChC,CAAA,IACC;KACH,iBACC,iBAAA,GAAA,kBAAA,IAAA,CAAC,WAAD;MAAS,WAAU;MACjB,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACJ,YAAAA,KAAD;OAAK,IAAG;OAAO,SAAQ;OAAO,WAAU;OAAQ,UAAA;MAG3C,CAAA;KACE,CAAA,IACP,aAAa,QAAQ,WAAW,IAClC,iBAAA,GAAA,kBAAA,IAAA,CAAC,WAAD;MAAS,WAAU;MACjB,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACA,YAAAA,KAAD;OAAK,IAAG;OAAO,SAAQ;OAAO,WAAU;OAAQ,UAAA;MAG3C,CAAA;KACE,CAAA,IAET,iBAAA,GAAA,kBAAA,IAAA,CAACK,6BAAAA,UAAD;MACE,SAAS;MACT,SAAS,aAAa;MACd;MACA;MACR,aAAa;MACI;MACM;MACvB,eAAe;MACf,aAAa,sBAAsB;MACnC,iBAAiB,oBAAoB;KACtC,CAAA;KAEF,oBAAoB,YACnB,iBAAA,GAAA,kBAAA,IAAA,CAACL,YAAAA,KAAD;MAAK,SAAQ;MAAU,MAAK;MAAQ,MAAK;MAAS,UAAA;KAE7C,CAAA,IACH;KACH,oBAAoB,UACnB,iBAAA,GAAA,kBAAA,IAAA,CAACA,YAAAA,KAAD;MAAK,SAAQ;MAAU,WAAU;MAA8B,MAAK;MAAQ,UAAA;KAEvE,CAAA,IACH;IACJ,EAAA,CAAA;IAEJ,iBAAA,GAAA,kBAAA,IAAA,CAACM,sCAAAA,kBAAD;KAEY;KACE;KACZ,YAAY,SAAS;KACrB,eAAe,SAAS;KACxB,WAAW;KACX,SAAS;KACT,eAAe;KACf,eAAe,gBAAgB,KAAA,CAAS;IACzC,GATM,GAAG,SAAS,WAAW,GAAG,iBAAiB,cAAc,GAAG,GAAG,iBAAiB,WAAW,GAAG,GAAG,WASvG;IACD,iBAAA,GAAA,kBAAA,IAAA,CAACC,sCAAAA,kBAAD;KAEY;KACE;KACZ,YAAY,SAAS;KACrB,YAAY;KACZ,SAAS;KACT,eAAe;KACf,eAAe,mBAAmB,KAAA,CAAS;IAC5C,GARM,GAAG,SAAS,WAAW,GAAG,mBAAmB,GAAG,GAAG,WAQzD;GACE;;CAC4B,CAAA;AAEvC"}
@@ -1,29 +1,30 @@
1
- import { t as Txt } from "../../Txt-BM6TVV_c.js";
2
- import { n as Tabs, r as TabList } from "../../tabs-tab-CYTZevdV.js";
3
- import { orderedSignals, signalLabel } from "./signal-formatting.es.js";
4
1
  import { PendingSignalProgress } from "./components/signals-empty-state.es.js";
5
2
  import { SignalsOverviewPage } from "./components/signals-overview-page.es.js";
6
3
  import { fetchThemeFlow, fetchThemePaths, fetchThemeSnapshots, serializeThemeFilters } from "./entity-learning-api.es.js";
7
- import { TraceIntelligenceContext } from "./trace-intelligence-context.es.js";
8
- import { useTraceIntelligence } from "./use-trace-intelligence.es.js";
9
- import { useEntityLearningProgress } from "./hooks/use-entity-learning-progress.es.js";
10
- import { useThemePaths } from "./hooks/use-theme-paths.es.js";
11
- import { useThemeSnapshots } from "./hooks/use-theme-snapshots.es.js";
12
- import { buildSignalGraphSummary, selectFlowSnapshotIds, snapshotSummaryLabel, stabilizeThemeFlow } from "./sankey-signals-data.es.js";
13
4
  import { FlowCard } from "./flow-card.es.js";
5
+ import { useEntityLearningProgress } from "./hooks/use-entity-learning-progress.es.js";
14
6
  import { useSnapshotPlayback } from "./hooks/use-snapshot-playback.es.js";
15
7
  import { useThemeFlows } from "./hooks/use-theme-flows.es.js";
8
+ import { useThemePaths } from "./hooks/use-theme-paths.es.js";
9
+ import { useThemeSnapshots } from "./hooks/use-theme-snapshots.es.js";
16
10
  import { NoiseDetailPanel } from "./noise-detail-panel.es.js";
11
+ import { buildSignalGraphSummary, selectFlowSnapshotIds, stabilizeThemeFlow } from "./sankey-signals-data.es.js";
12
+ import { orderedSignals, signalLabel } from "./signal-formatting.es.js";
17
13
  import { SignalsErrorState } from "./signals-error-state.es.js";
18
14
  import { SignalsFrameLoadingSkeleton, SignalsLoadingSkeleton } from "./signals-loading-skeleton.es.js";
15
+ import { SnapshotSummary } from "./snapshot-summary.es.js";
19
16
  import { SnapshotTimeline } from "./snapshot-timeline.es.js";
20
17
  import { ThemeCompare } from "./theme-compare.es.js";
21
18
  import { ThemeDetailPanel } from "./theme-detail-panel.es.js";
22
19
  import { buildDrilledThemeFlow, findNoiseSelection, findSelectionStats, findThemeSelection, findThemeSelectionById, mergeVisibleSignalOrder } from "./theme-drilldown-data.es.js";
23
20
  import { ThemeFilterBanner } from "./theme-filter-banner.es.js";
24
21
  import { ThemeLifelines } from "./theme-lifelines.es.js";
22
+ import { TraceIntelligenceContext } from "./trace-intelligence-context.es.js";
25
23
  import { TraceIntelligenceExplainer } from "./trace-intelligence-explainer.es.js";
24
+ import { useTraceIntelligence } from "./use-trace-intelligence.es.js";
26
25
  import { ViewModeTab } from "./view-mode-tab.es.js";
26
+ import { n as Tabs, r as TabList } from "../../tabs-tab-BHs639jL.js";
27
+ import { t as Txt } from "../../Txt-5efBsb2p.js";
27
28
  import { useMemo, useState } from "react";
28
29
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
29
30
  import { ArrowLeftRight, ChartNoAxesGantt, Waypoints } from "lucide-react";
@@ -215,7 +216,10 @@ function SankeySignals({ entityId, entityType = "agent", signalNames: initialSig
215
216
  snapshots,
216
217
  selectedIndex: selectedSnapshotIndex,
217
218
  totalSnapshots,
218
- summary: snapshot ? snapshotSummaryLabel(snapshot, void 0) : "",
219
+ summary: snapshot ? /* @__PURE__ */ jsx(SnapshotSummary, {
220
+ snapshot,
221
+ flow: void 0
222
+ }) : void 0,
219
223
  isPlaying,
220
224
  onPlayingChange: handlePlayingChange,
221
225
  onSnapshotChange: selectSnapshot
@@ -257,6 +261,7 @@ function SankeySignals({ entityId, entityType = "agent", signalNames: initialSig
257
261
  perspectiveMutation.mutate(mergedSignalNames);
258
262
  };
259
263
  const filtersResolved = drillStack.length > 0 && drillInAvailable && pathsQuery.data !== void 0;
264
+ const filterSummaryPrefix = drillInAvailable ? "Filtered" : "Filters unavailable";
260
265
  const detailStats = filtersResolved ? findSelectionStats(flow, drillStack, detailSelection) : void 0;
261
266
  const noiseStats = filtersResolved ? findSelectionStats(flow, drillStack, noiseSignalName ? {
262
267
  kind: "noise",
@@ -336,7 +341,11 @@ function SankeySignals({ entityId, entityType = "agent", signalNames: initialSig
336
341
  snapshots,
337
342
  selectedIndex: selectedSnapshotIndex,
338
343
  totalSnapshots,
339
- summary: `${drillStack.length > 0 ? drillInAvailable ? "Filtered · " : "Filters unavailable · " : ""}${snapshotSummaryLabel(snapshot, flow)}`,
344
+ summary: /* @__PURE__ */ jsx(SnapshotSummary, {
345
+ snapshot,
346
+ flow,
347
+ prefix: drillStack.length > 0 ? filterSummaryPrefix : void 0
348
+ }),
340
349
  isPlaying,
341
350
  onPlayingChange: handlePlayingChange,
342
351
  onSnapshotChange: selectSnapshot
@@ -372,7 +381,7 @@ function SankeySignals({ entityId, entityType = "agent", signalNames: initialSig
372
381
  as: "span",
373
382
  variant: "body",
374
383
  className: "block",
375
- children: "No cross-signal flow for this snapshot — its trace signals have not overlapped on shared traces yet. Pick another snapshot from the timeline below."
384
+ children: "No cross-signal flow for this snapshot. Its trace signals have not overlapped on shared traces yet. Pick another snapshot from the timeline below."
376
385
  })
377
386
  }) : /* @__PURE__ */ jsx(FlowCard, {
378
387
  columns: labeledColumns,
@@ -1 +1 @@
1
- {"version":3,"file":"sankey-signals.es.js","names":["_Fragment","SignalsEmptyState"],"sources":["../../../src/ee/signals/sankey-signals.tsx"],"sourcesContent":["import { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { ArrowLeftRight, ChartNoAxesGantt, Waypoints } from 'lucide-react';\nimport { useMemo, useState } from 'react';\n\nimport { PendingSignalProgress } from './components/signals-empty-state';\nimport { SignalsOverviewPage as SignalsEmptyState } from './components/signals-overview-page';\nimport { fetchThemeFlow, fetchThemePaths, fetchThemeSnapshots, serializeThemeFilters } from './entity-learning-api';\nimport { FlowCard } from './flow-card';\nimport { useEntityLearningProgress } from './hooks/use-entity-learning-progress';\nimport { useSnapshotPlayback } from './hooks/use-snapshot-playback';\nimport { useThemeFlows } from './hooks/use-theme-flows';\nimport { useThemePaths } from './hooks/use-theme-paths';\nimport { useThemeSnapshots } from './hooks/use-theme-snapshots';\nimport { NoiseDetailPanel } from './noise-detail-panel';\nimport {\n buildSignalGraphSummary,\n selectFlowSnapshotIds,\n snapshotSummaryLabel,\n stabilizeThemeFlow,\n} from './sankey-signals-data';\nimport { orderedSignals, signalLabel } from './signal-formatting';\nimport { SignalsErrorState } from './signals-error-state';\nimport { SignalsFrameLoadingSkeleton, SignalsLoadingSkeleton } from './signals-loading-skeleton';\nimport { SnapshotTimeline } from './snapshot-timeline';\nimport { ThemeCompare } from './theme-compare';\nimport { ThemeDetailPanel } from './theme-detail-panel';\nimport {\n buildDrilledThemeFlow,\n findNoiseSelection,\n findSelectionStats,\n findThemeSelection,\n findThemeSelectionById,\n mergeVisibleSignalOrder,\n} from './theme-drilldown-data';\nimport type { SelectedTheme, ThemeSelection } from './theme-drilldown-data';\nimport { ThemeFilterBanner } from './theme-filter-banner';\nimport { ThemeLifelines } from './theme-lifelines';\nimport { TraceIntelligenceContext } from './trace-intelligence-context';\nimport { TraceIntelligenceExplainer } from './trace-intelligence-explainer';\nimport type { TraceSignalName } from './types';\nimport { useTraceIntelligence } from './use-trace-intelligence';\nimport { ViewModeTab } from './view-mode-tab';\nimport type { SignalsViewMode } from './view-mode-tab';\nimport type { SankeyChartNodeSelection } from '@/ds/components/SankeyChart';\nimport { TabList, Tabs } from '@/ds/components/Tabs';\nimport { Txt } from '@/ds/components/Txt';\n\nexport interface SankeySignalsProps {\n entityId: string;\n entityType?: string;\n signalNames: TraceSignalName[];\n dateFrom?: Date;\n dateTo?: Date;\n height?: number;\n selectedThemeId: string | undefined;\n onSelectedThemeIdChange: (themeId: string | undefined) => void;\n /** Snapshot id of the timeline frame currently displayed. The parent owns this state. */\n selectedFrameId: string;\n onFrameIdChange: (frameId: string) => void;\n /** Date range control rendered in line with the view mode tabs. */\n dateRangePicker?: React.ReactNode;\n}\n\nconst DRILL_IN_TRACE_LIMIT = 2000;\n\n/** One-line answer to \"what am I looking at?\" for each view, shown under the tabs. */\nconst VIEW_DESCRIPTIONS: Omit<Record<SignalsViewMode, string>, 'flow'> = {\n compare: 'Which themes grew, shrank, appeared, or disappeared between two points in time.',\n lifelines: \"Each theme's share of traces across the whole selected range.\",\n};\n\nfunction formatSignalList(labels: string[]): string {\n if (labels.length < 2) return labels[0] ?? 'trace signal';\n if (labels.length === 2) return labels.join(' and ');\n return `${labels.slice(0, -1).join(', ')}, and ${labels.at(-1)}`;\n}\n\nexport function SankeySignals({\n entityId,\n entityType = 'agent',\n signalNames: initialSignalNames,\n dateFrom,\n dateTo,\n height,\n selectedThemeId,\n onSelectedThemeIdChange,\n selectedFrameId,\n onFrameIdChange,\n dateRangePicker,\n}: SankeySignalsProps) {\n const queryClient = useQueryClient();\n const traceIntelligence = useTraceIntelligence();\n const { cacheScope, request, LinkComponent, signalCatalog } = traceIntelligence;\n const [signalNames, setSignalNames] = useState(() => initialSignalNames);\n const [pendingSignalNames, setPendingSignalNames] = useState<TraceSignalName[]>();\n const snapshotsQuery = useThemeSnapshots(entityId, entityType, signalNames, dateFrom, dateTo);\n const effectiveSignalCatalog = snapshotsQuery.data?.signalCatalog ?? signalCatalog;\n const traceIntelligenceContext = useMemo(\n () => ({ ...traceIntelligence, signalCatalog: effectiveSignalCatalog }),\n [effectiveSignalCatalog, traceIntelligence],\n );\n const snapshots = [...(snapshotsQuery.data?.snapshots ?? [])].sort((left, right) => left.ordinal - right.ordinal);\n const [isPlaying, setIsPlaying] = useState(false);\n const [viewMode, setViewMode] = useState<SignalsViewMode>('flow');\n const [drillStack, setDrillStack] = useState<ThemeSelection[]>([]);\n const [noiseSignalName, setNoiseSignalName] = useState<TraceSignalName>();\n // Pure derivation: the parent owns the frame. The index-0 fallback only covers\n // the transient render where a perspective change swapped the snapshot list.\n const matchedSnapshotIndex = snapshots.findIndex(snapshot => snapshot.snapshotId === selectedFrameId);\n const selectedSnapshotIndex = matchedSnapshotIndex >= 0 ? matchedSnapshotIndex : 0;\n const snapshot = snapshots[selectedSnapshotIndex];\n const totalSnapshots = snapshotsQuery.data?.totalSnapshots ?? snapshot?.total ?? 0;\n const selectSnapshot = (index: number) => {\n const id = snapshots[index]?.snapshotId;\n if (id) onFrameIdChange(id);\n };\n const handleViewModeChange = (nextViewMode: SignalsViewMode) => {\n if (nextViewMode !== 'flow') setIsPlaying(false);\n setViewMode(nextViewMode);\n };\n const handlePlayingChange = (nextIsPlaying: boolean) => {\n // Restart from the first landmark when play is pressed at the end.\n if (nextIsPlaying && selectedSnapshotIndex === snapshots.length - 1) selectSnapshot(0);\n setIsPlaying(nextIsPlaying);\n };\n const setThemeDetails = (selection: SelectedTheme | undefined) => {\n onSelectedThemeIdChange(selection?.themeId);\n };\n // Compare cards and lifeline points open details for the theme at the\n // landmark they were clicked on, so the panel's snapshot follows the click.\n const openThemeDetailsAt = (selection: ThemeSelection, snapshotIndex: number) => {\n if (selection.kind !== 'theme') return;\n selectSnapshot(snapshotIndex);\n setNoiseSignalName(undefined);\n setThemeDetails(selection);\n };\n\n // Undefined at the last landmark so playback stops instead of looping.\n const nextSnapshotId = snapshots[selectedSnapshotIndex + 1]?.snapshotId;\n const flowSnapshotIds = selectFlowSnapshotIds(snapshots, selectedSnapshotIndex);\n const flowQueries = useThemeFlows(entityId, entityType, signalNames, flowSnapshotIds);\n const flowQuery = flowQueries[flowSnapshotIds.indexOf(snapshot?.snapshotId ?? '')];\n const currentFlow = flowQuery?.data;\n // The loading skeleton tracks only the selected snapshot's flow; prefetched\n // neighbors warm the cache in the background without blocking the chart.\n const isFlowPending = flowQuery?.isPending ?? false;\n // Errors stay window-wide: a failed preload surfaces the retry state instead\n // of letting playback advance into a broken frame.\n const hasFlowError = flowQueries.some(query => query.isError);\n const isFlowWindowBusy = flowQueries.some(query => query.isPending) || hasFlowError;\n const windowFlows = useMemo(() => flowQueries.flatMap(query => (query.data ? [query.data] : [])), [flowQueries]);\n const stableUnfilteredFlow = useMemo(\n () => (currentFlow ? stabilizeThemeFlow(currentFlow, windowFlows) : undefined),\n [currentFlow, windowFlows],\n );\n const drillInAvailable = Boolean(currentFlow && currentFlow.snapshot.traceCount <= DRILL_IN_TRACE_LIMIT);\n const pathsQuery = useThemePaths(\n entityId,\n entityType,\n signalNames,\n snapshot?.snapshotId,\n drillInAvailable && drillStack.length > 0,\n );\n const flow = useMemo(() => {\n if (!stableUnfilteredFlow || drillStack.length === 0 || !pathsQuery.data) return stableUnfilteredFlow;\n\n const drilledFlow = buildDrilledThemeFlow(stableUnfilteredFlow, pathsQuery.data, drillStack);\n return stabilizeThemeFlow(drilledFlow, [stableUnfilteredFlow, drilledFlow]);\n }, [drillStack, pathsQuery.data, stableUnfilteredFlow]);\n const graphSummary = useMemo(() => (flow ? buildSignalGraphSummary(flow) : undefined), [flow]);\n const detailSelection =\n stableUnfilteredFlow && selectedThemeId ? findThemeSelectionById(stableUnfilteredFlow, selectedThemeId) : undefined;\n const populatedStageCount = currentFlow?.stages.filter(stage => stage.nodes.length > 0).length ?? 0;\n const hasPendingEnabledSignals = effectiveSignalCatalog.some(signal => signal.enabled && signal.status !== 'ready');\n const shouldLoadProgress =\n snapshotsQuery.isSuccess &&\n !snapshotsQuery.isError &&\n (hasPendingEnabledSignals ||\n !snapshot ||\n Boolean(currentFlow && (!flow || !graphSummary || populatedStageCount < 2)));\n const progressQuery = useEntityLearningProgress(entityId, entityType, shouldLoadProgress);\n const isPlaybackBlockedByDrillIn = drillStack.length > 0 && (pathsQuery.isFetching || pathsQuery.isError);\n const hasActivePathsError = drillStack.length > 0 && pathsQuery.isError;\n\n useSnapshotPlayback({\n isPlaying,\n isPlaybackBlocked: isFlowWindowBusy || isPlaybackBlockedByDrillIn,\n nextSnapshot: nextSnapshotId,\n onAdvance: frameId => {\n if (frameId === undefined) {\n setIsPlaying(false);\n return;\n }\n onFrameIdChange(frameId);\n },\n snapshotCount: snapshots.length,\n });\n\n const perspectiveMutation = useMutation({\n mutationFn: async (nextSignalNames: TraceSignalName[]) => {\n const nextSnapshots = await queryClient.fetchQuery({\n queryKey: [\n 'entity-learning',\n cacheScope,\n entityType,\n entityId,\n 'theme-snapshots',\n nextSignalNames,\n dateFrom?.toISOString(),\n dateTo?.toISOString(),\n ],\n queryFn: () => fetchThemeSnapshots(request, entityId, entityType, nextSignalNames, dateFrom, dateTo),\n });\n const sortedNextSnapshots = [...nextSnapshots.snapshots].sort((left, right) => left.ordinal - right.ordinal);\n const matchedNextIndex = sortedNextSnapshots.findIndex(candidate => candidate.ordinal === snapshot?.ordinal);\n const nextSelectedIndex = matchedNextIndex >= 0 ? matchedNextIndex : 0;\n const nextSnapshot = sortedNextSnapshots[nextSelectedIndex];\n await Promise.all(\n selectFlowSnapshotIds(sortedNextSnapshots, nextSelectedIndex).map(snapshotId =>\n queryClient.fetchQuery({\n queryKey: ['entity-learning', cacheScope, entityType, entityId, 'theme-flow', nextSignalNames, snapshotId],\n queryFn: () => fetchThemeFlow(request, entityId, entityType, nextSignalNames, snapshotId),\n }),\n ),\n );\n if (drillStack.length > 0 && nextSnapshot && nextSnapshot.traceCount <= DRILL_IN_TRACE_LIMIT) {\n await queryClient.fetchQuery({\n queryKey: [\n 'entity-learning',\n cacheScope,\n entityType,\n entityId,\n 'theme-paths',\n nextSignalNames,\n nextSnapshot.snapshotId,\n ],\n queryFn: () => fetchThemePaths(request, entityId, entityType, nextSignalNames, nextSnapshot.snapshotId),\n });\n }\n return { nextSignalNames, nextFrameId: nextSnapshot?.snapshotId };\n },\n onSuccess: ({ nextSignalNames, nextFrameId }) => {\n setSignalNames(nextSignalNames);\n setPendingSignalNames(undefined);\n // Keep the parent-owned frame pointing at a snapshot that exists in the new perspective.\n if (nextFrameId && nextFrameId !== selectedFrameId) onFrameIdChange(nextFrameId);\n },\n onError: () => setPendingSignalNames(undefined),\n });\n\n if (snapshotsQuery.isPending) {\n return (\n <>\n {dateRangePicker && <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>}\n <SignalsLoadingSkeleton />\n </>\n );\n }\n\n if (snapshotsQuery.isError || hasFlowError || hasActivePathsError) {\n return (\n <>\n {dateRangePicker && <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>}\n <SignalsErrorState\n message=\"Unable to load trace signal flow.\"\n onRetry={() => {\n setIsPlaying(false);\n void snapshotsQuery.refetch();\n void Promise.all(flowQueries.map(query => query.refetch()));\n if (drillStack.length > 0 && drillInAvailable) void pathsQuery.refetch();\n }}\n onClear={hasActivePathsError ? () => setDrillStack([]) : undefined}\n />\n </>\n );\n }\n\n if (!snapshot) {\n return (\n <>\n {dateRangePicker && <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>}\n <SignalsEmptyState\n LinkComponent={LinkComponent}\n progress={progressQuery.data}\n signalCatalog={effectiveSignalCatalog}\n isRangeEmpty\n />\n </>\n );\n }\n\n if (isFlowPending) {\n return (\n <div className=\"min-w-0 space-y-5 p-4 lg:p-6\">\n {dateRangePicker && <div className=\"flex justify-end\">{dateRangePicker}</div>}\n <SnapshotTimeline\n snapshots={snapshots}\n selectedIndex={selectedSnapshotIndex}\n totalSnapshots={totalSnapshots}\n summary={snapshot ? snapshotSummaryLabel(snapshot, undefined) : ''}\n isPlaying={isPlaying}\n onPlayingChange={handlePlayingChange}\n onSnapshotChange={selectSnapshot}\n />\n <SignalsFrameLoadingSkeleton />\n </div>\n );\n }\n\n if (!currentFlow || !flow || !graphSummary || populatedStageCount < 2) {\n return (\n <>\n {dateRangePicker && <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>}\n <SignalsEmptyState\n LinkComponent={LinkComponent}\n progress={progressQuery.data}\n signalCatalog={effectiveSignalCatalog}\n />\n </>\n );\n }\n\n const stages = flow.stages;\n const isNodeClickable = (selection: SankeyChartNodeSelection) =>\n findNoiseSelection(flow, selection.column.id, selection.value) !== undefined ||\n findThemeSelection(flow, selection.column.id, selection.value) !== undefined;\n const handleNodeClick = (selection: SankeyChartNodeSelection) => {\n const nextSelection =\n findNoiseSelection(flow, selection.column.id, selection.value) ??\n findThemeSelection(flow, selection.column.id, selection.value);\n if (!nextSelection || drillStack.some(filter => filter.signalName === nextSelection.signalName)) return;\n if (nextSelection.kind === 'theme') {\n setNoiseSignalName(undefined);\n setThemeDetails(nextSelection);\n if (drillInAvailable) setDrillStack(current => [...current, nextSelection]);\n } else {\n setThemeDetails(undefined);\n setNoiseSignalName(nextSelection.signalName);\n }\n };\n const drillInDisabledReason = drillInAvailable\n ? undefined\n : 'Drill-in is unavailable for snapshots with more than 2,000 traces.';\n const isDrilledEmpty = drillStack.length > 0 && pathsQuery.data !== undefined && flow.snapshot.traceCount === 0;\n const handleSignalOrderChange = (nextSignalNames: TraceSignalName[]) => {\n if (perspectiveMutation.isPending) return;\n setIsPlaying(false);\n setThemeDetails(undefined);\n setNoiseSignalName(undefined);\n const mergedSignalNames = mergeVisibleSignalOrder(signalNames, nextSignalNames);\n setPendingSignalNames(mergedSignalNames);\n perspectiveMutation.mutate(mergedSignalNames);\n };\n const filtersResolved = drillStack.length > 0 && drillInAvailable && pathsQuery.data !== undefined;\n const detailStats = filtersResolved ? findSelectionStats(flow, drillStack, detailSelection) : undefined;\n const noiseStats = filtersResolved\n ? findSelectionStats(flow, drillStack, noiseSignalName ? { kind: 'noise', signalName: noiseSignalName } : undefined)\n : undefined;\n const filterKey = serializeThemeFilters(drillStack);\n const catalogSignalNames = orderedSignals(effectiveSignalCatalog, signalNames);\n const viewDescription =\n viewMode === 'flow'\n ? `How this agent's traces distribute across ${formatSignalList(catalogSignalNames.map(name => signalLabel(effectiveSignalCatalog, name).toLocaleLowerCase()))} themes at this point in time.`\n : VIEW_DESCRIPTIONS[viewMode];\n const labeledColumns = graphSummary.columns.map(column => ({\n ...column,\n label: signalLabel(effectiveSignalCatalog, column.id),\n }));\n\n return (\n <TraceIntelligenceContext.Provider value={traceIntelligenceContext}>\n <div className=\"min-w-0 space-y-5 p-4 lg:p-6\">\n <div className=\"flex min-w-0 flex-wrap items-center justify-between gap-3\">\n <div className=\"flex min-w-0 flex-wrap items-center gap-4\">\n <Tabs<SignalsViewMode>\n value={viewMode}\n defaultTab=\"flow\"\n onValueChange={handleViewModeChange}\n className=\"w-fit\"\n >\n <TabList variant=\"pill-ghost\">\n <ViewModeTab value=\"flow\" icon={<Waypoints />} label=\"Flow\" />\n <ViewModeTab value=\"compare\" icon={<ArrowLeftRight />} label=\"Compare\" />\n <ViewModeTab value=\"lifelines\" icon={<ChartNoAxesGantt />} label=\"Lifelines\" />\n </TabList>\n </Tabs>\n <TraceIntelligenceExplainer signalCatalog={effectiveSignalCatalog} />\n </div>\n {dateRangePicker}\n </div>\n <Txt variant=\"caption\" tone=\"muted\">\n {viewDescription}\n </Txt>\n <PendingSignalProgress progress={progressQuery.data} signalCatalog={effectiveSignalCatalog} />\n {viewMode === 'compare' ? (\n <ThemeCompare\n entityId={entityId}\n entityType={entityType}\n signalNames={signalNames}\n snapshots={snapshots}\n totalSnapshots={totalSnapshots}\n onThemeSelect={openThemeDetailsAt}\n />\n ) : viewMode === 'lifelines' ? (\n <ThemeLifelines\n entityId={entityId}\n entityType={entityType}\n signalNames={signalNames}\n snapshots={snapshots}\n totalSnapshots={totalSnapshots}\n selectedIndex={selectedSnapshotIndex}\n onSnapshotSelect={selectSnapshot}\n onThemeSelect={openThemeDetailsAt}\n />\n ) : (\n <>\n <SnapshotTimeline\n snapshots={snapshots}\n selectedIndex={selectedSnapshotIndex}\n totalSnapshots={totalSnapshots}\n summary={`${drillStack.length > 0 ? (drillInAvailable ? 'Filtered · ' : 'Filters unavailable · ') : ''}${snapshotSummaryLabel(snapshot, flow)}`}\n isPlaying={isPlaying}\n onPlayingChange={handlePlayingChange}\n onSnapshotChange={selectSnapshot}\n />\n {drillStack.length > 0 ? (\n <ThemeFilterBanner\n selections={drillStack}\n filteredTraceCount={filtersResolved ? flow.snapshot.traceCount : undefined}\n totalTraceCount={currentFlow.snapshot.traceCount}\n isUnavailable={!drillInAvailable}\n onViewDetails={selection => {\n if (selection.kind === 'theme') {\n setNoiseSignalName(undefined);\n setThemeDetails(selection);\n } else {\n setThemeDetails(undefined);\n setNoiseSignalName(selection.signalName);\n }\n }}\n onRemove={signalName =>\n setDrillStack(current => current.filter(filter => filter.signalName !== signalName))\n }\n onClear={() => setDrillStack([])}\n />\n ) : null}\n {isDrilledEmpty ? (\n <section className=\"rounded-lg border border-border bg-background p-6 text-muted-foreground\">\n <Txt as=\"span\" variant=\"body\" className=\"block\">\n This theme is not present in the selected snapshot. Use the clear filter action above to return to the\n full flow.\n </Txt>\n </section>\n ) : graphSummary.records.length === 0 ? (\n <section className=\"rounded-lg border border-border bg-background p-6 text-muted-foreground\">\n <Txt as=\"span\" variant=\"body\" className=\"block\">\n No cross-signal flow for this snapshot — its trace signals have not overlapped on shared traces yet.\n Pick another snapshot from the timeline below.\n </Txt>\n </section>\n ) : (\n <FlowCard\n columns={labeledColumns}\n records={graphSummary.records}\n stages={stages}\n height={height}\n onNodeClick={handleNodeClick}\n isNodeClickable={isNodeClickable}\n drillInDisabledReason={drillInDisabledReason}\n onOrderChange={handleSignalOrderChange}\n signalOrder={pendingSignalNames ?? signalNames}\n reorderDisabled={perspectiveMutation.isPending}\n />\n )}\n {perspectiveMutation.isPending ? (\n <Txt variant=\"caption\" tone=\"muted\" role=\"status\">\n Reloading snapshots for new trace signal perspective…\n </Txt>\n ) : null}\n {perspectiveMutation.isError ? (\n <Txt variant=\"caption\" className=\"text-destructive-foreground\" role=\"alert\">\n Unable to load that trace signal perspective. Try reordering the columns again.\n </Txt>\n ) : null}\n </>\n )}\n <ThemeDetailPanel\n key={`${snapshot.snapshotId}:${detailSelection?.signalName ?? ''}:${detailSelection?.themeId ?? ''}:${filterKey}`}\n entityId={entityId}\n entityType={entityType}\n snapshotId={snapshot.snapshotId}\n snapshotTotal={snapshot.total}\n selection={detailSelection}\n filters={drillStack}\n filteredStats={detailStats}\n onClose={() => setThemeDetails(undefined)}\n />\n <NoiseDetailPanel\n key={`${snapshot.snapshotId}:${noiseSignalName ?? ''}:${filterKey}`}\n entityId={entityId}\n entityType={entityType}\n snapshotId={snapshot.snapshotId}\n signalName={noiseSignalName}\n filters={drillStack}\n filteredStats={noiseStats}\n onClose={() => setNoiseSignalName(undefined)}\n />\n </div>\n </TraceIntelligenceContext.Provider>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"sankey-signals.es.js","names":["_Fragment","SignalsEmptyState"],"sources":["../../../src/ee/signals/sankey-signals.tsx"],"sourcesContent":["import { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { ArrowLeftRight, ChartNoAxesGantt, Waypoints } from 'lucide-react';\nimport { useMemo, useState } from 'react';\n\nimport { PendingSignalProgress } from './components/signals-empty-state';\nimport { SignalsOverviewPage as SignalsEmptyState } from './components/signals-overview-page';\nimport { fetchThemeFlow, fetchThemePaths, fetchThemeSnapshots, serializeThemeFilters } from './entity-learning-api';\nimport { FlowCard } from './flow-card';\nimport { useEntityLearningProgress } from './hooks/use-entity-learning-progress';\nimport { useSnapshotPlayback } from './hooks/use-snapshot-playback';\nimport { useThemeFlows } from './hooks/use-theme-flows';\nimport { useThemePaths } from './hooks/use-theme-paths';\nimport { useThemeSnapshots } from './hooks/use-theme-snapshots';\nimport { NoiseDetailPanel } from './noise-detail-panel';\nimport { buildSignalGraphSummary, selectFlowSnapshotIds, stabilizeThemeFlow } from './sankey-signals-data';\nimport { orderedSignals, signalLabel } from './signal-formatting';\nimport { SignalsErrorState } from './signals-error-state';\nimport { SignalsFrameLoadingSkeleton, SignalsLoadingSkeleton } from './signals-loading-skeleton';\nimport { SnapshotSummary } from './snapshot-summary';\nimport { SnapshotTimeline } from './snapshot-timeline';\nimport { ThemeCompare } from './theme-compare';\nimport { ThemeDetailPanel } from './theme-detail-panel';\nimport {\n buildDrilledThemeFlow,\n findNoiseSelection,\n findSelectionStats,\n findThemeSelection,\n findThemeSelectionById,\n mergeVisibleSignalOrder,\n} from './theme-drilldown-data';\nimport type { SelectedTheme, ThemeSelection } from './theme-drilldown-data';\nimport { ThemeFilterBanner } from './theme-filter-banner';\nimport { ThemeLifelines } from './theme-lifelines';\nimport { TraceIntelligenceContext } from './trace-intelligence-context';\nimport { TraceIntelligenceExplainer } from './trace-intelligence-explainer';\nimport type { TraceSignalName } from './types';\nimport { useTraceIntelligence } from './use-trace-intelligence';\nimport { ViewModeTab } from './view-mode-tab';\nimport type { SignalsViewMode } from './view-mode-tab';\nimport type { SankeyChartNodeSelection } from '@/ds/components/SankeyChart';\nimport { TabList, Tabs } from '@/ds/components/Tabs';\nimport { Txt } from '@/ds/components/Txt';\n\nexport interface SankeySignalsProps {\n entityId: string;\n entityType?: string;\n signalNames: TraceSignalName[];\n dateFrom?: Date;\n dateTo?: Date;\n height?: number;\n selectedThemeId: string | undefined;\n onSelectedThemeIdChange: (themeId: string | undefined) => void;\n /** Snapshot id of the timeline frame currently displayed. The parent owns this state. */\n selectedFrameId: string;\n onFrameIdChange: (frameId: string) => void;\n /** Date range control rendered in line with the view mode tabs. */\n dateRangePicker?: React.ReactNode;\n}\n\nconst DRILL_IN_TRACE_LIMIT = 2000;\n\n/** One-line answer to \"what am I looking at?\" for each view, shown under the tabs. */\nconst VIEW_DESCRIPTIONS: Omit<Record<SignalsViewMode, string>, 'flow'> = {\n compare: 'Which themes grew, shrank, appeared, or disappeared between two points in time.',\n lifelines: \"Each theme's share of traces across the whole selected range.\",\n};\n\nfunction formatSignalList(labels: string[]): string {\n if (labels.length < 2) return labels[0] ?? 'trace signal';\n if (labels.length === 2) return labels.join(' and ');\n return `${labels.slice(0, -1).join(', ')}, and ${labels.at(-1)}`;\n}\n\nexport function SankeySignals({\n entityId,\n entityType = 'agent',\n signalNames: initialSignalNames,\n dateFrom,\n dateTo,\n height,\n selectedThemeId,\n onSelectedThemeIdChange,\n selectedFrameId,\n onFrameIdChange,\n dateRangePicker,\n}: SankeySignalsProps) {\n const queryClient = useQueryClient();\n const traceIntelligence = useTraceIntelligence();\n const { cacheScope, request, LinkComponent, signalCatalog } = traceIntelligence;\n const [signalNames, setSignalNames] = useState(() => initialSignalNames);\n const [pendingSignalNames, setPendingSignalNames] = useState<TraceSignalName[]>();\n const snapshotsQuery = useThemeSnapshots(entityId, entityType, signalNames, dateFrom, dateTo);\n const effectiveSignalCatalog = snapshotsQuery.data?.signalCatalog ?? signalCatalog;\n const traceIntelligenceContext = useMemo(\n () => ({ ...traceIntelligence, signalCatalog: effectiveSignalCatalog }),\n [effectiveSignalCatalog, traceIntelligence],\n );\n const snapshots = [...(snapshotsQuery.data?.snapshots ?? [])].sort((left, right) => left.ordinal - right.ordinal);\n const [isPlaying, setIsPlaying] = useState(false);\n const [viewMode, setViewMode] = useState<SignalsViewMode>('flow');\n const [drillStack, setDrillStack] = useState<ThemeSelection[]>([]);\n const [noiseSignalName, setNoiseSignalName] = useState<TraceSignalName>();\n // Pure derivation: the parent owns the frame. The index-0 fallback only covers\n // the transient render where a perspective change swapped the snapshot list.\n const matchedSnapshotIndex = snapshots.findIndex(snapshot => snapshot.snapshotId === selectedFrameId);\n const selectedSnapshotIndex = matchedSnapshotIndex >= 0 ? matchedSnapshotIndex : 0;\n const snapshot = snapshots[selectedSnapshotIndex];\n const totalSnapshots = snapshotsQuery.data?.totalSnapshots ?? snapshot?.total ?? 0;\n const selectSnapshot = (index: number) => {\n const id = snapshots[index]?.snapshotId;\n if (id) onFrameIdChange(id);\n };\n const handleViewModeChange = (nextViewMode: SignalsViewMode) => {\n if (nextViewMode !== 'flow') setIsPlaying(false);\n setViewMode(nextViewMode);\n };\n const handlePlayingChange = (nextIsPlaying: boolean) => {\n // Restart from the first landmark when play is pressed at the end.\n if (nextIsPlaying && selectedSnapshotIndex === snapshots.length - 1) selectSnapshot(0);\n setIsPlaying(nextIsPlaying);\n };\n const setThemeDetails = (selection: SelectedTheme | undefined) => {\n onSelectedThemeIdChange(selection?.themeId);\n };\n // Compare cards and lifeline points open details for the theme at the\n // landmark they were clicked on, so the panel's snapshot follows the click.\n const openThemeDetailsAt = (selection: ThemeSelection, snapshotIndex: number) => {\n if (selection.kind !== 'theme') return;\n selectSnapshot(snapshotIndex);\n setNoiseSignalName(undefined);\n setThemeDetails(selection);\n };\n\n // Undefined at the last landmark so playback stops instead of looping.\n const nextSnapshotId = snapshots[selectedSnapshotIndex + 1]?.snapshotId;\n const flowSnapshotIds = selectFlowSnapshotIds(snapshots, selectedSnapshotIndex);\n const flowQueries = useThemeFlows(entityId, entityType, signalNames, flowSnapshotIds);\n const flowQuery = flowQueries[flowSnapshotIds.indexOf(snapshot?.snapshotId ?? '')];\n const currentFlow = flowQuery?.data;\n // The loading skeleton tracks only the selected snapshot's flow; prefetched\n // neighbors warm the cache in the background without blocking the chart.\n const isFlowPending = flowQuery?.isPending ?? false;\n // Errors stay window-wide: a failed preload surfaces the retry state instead\n // of letting playback advance into a broken frame.\n const hasFlowError = flowQueries.some(query => query.isError);\n const isFlowWindowBusy = flowQueries.some(query => query.isPending) || hasFlowError;\n const windowFlows = useMemo(() => flowQueries.flatMap(query => (query.data ? [query.data] : [])), [flowQueries]);\n const stableUnfilteredFlow = useMemo(\n () => (currentFlow ? stabilizeThemeFlow(currentFlow, windowFlows) : undefined),\n [currentFlow, windowFlows],\n );\n const drillInAvailable = Boolean(currentFlow && currentFlow.snapshot.traceCount <= DRILL_IN_TRACE_LIMIT);\n const pathsQuery = useThemePaths(\n entityId,\n entityType,\n signalNames,\n snapshot?.snapshotId,\n drillInAvailable && drillStack.length > 0,\n );\n const flow = useMemo(() => {\n if (!stableUnfilteredFlow || drillStack.length === 0 || !pathsQuery.data) return stableUnfilteredFlow;\n\n const drilledFlow = buildDrilledThemeFlow(stableUnfilteredFlow, pathsQuery.data, drillStack);\n return stabilizeThemeFlow(drilledFlow, [stableUnfilteredFlow, drilledFlow]);\n }, [drillStack, pathsQuery.data, stableUnfilteredFlow]);\n const graphSummary = useMemo(() => (flow ? buildSignalGraphSummary(flow) : undefined), [flow]);\n const detailSelection =\n stableUnfilteredFlow && selectedThemeId ? findThemeSelectionById(stableUnfilteredFlow, selectedThemeId) : undefined;\n const populatedStageCount = currentFlow?.stages.filter(stage => stage.nodes.length > 0).length ?? 0;\n const hasPendingEnabledSignals = effectiveSignalCatalog.some(signal => signal.enabled && signal.status !== 'ready');\n const shouldLoadProgress =\n snapshotsQuery.isSuccess &&\n !snapshotsQuery.isError &&\n (hasPendingEnabledSignals ||\n !snapshot ||\n Boolean(currentFlow && (!flow || !graphSummary || populatedStageCount < 2)));\n const progressQuery = useEntityLearningProgress(entityId, entityType, shouldLoadProgress);\n const isPlaybackBlockedByDrillIn = drillStack.length > 0 && (pathsQuery.isFetching || pathsQuery.isError);\n const hasActivePathsError = drillStack.length > 0 && pathsQuery.isError;\n\n useSnapshotPlayback({\n isPlaying,\n isPlaybackBlocked: isFlowWindowBusy || isPlaybackBlockedByDrillIn,\n nextSnapshot: nextSnapshotId,\n onAdvance: frameId => {\n if (frameId === undefined) {\n setIsPlaying(false);\n return;\n }\n onFrameIdChange(frameId);\n },\n snapshotCount: snapshots.length,\n });\n\n const perspectiveMutation = useMutation({\n mutationFn: async (nextSignalNames: TraceSignalName[]) => {\n const nextSnapshots = await queryClient.fetchQuery({\n queryKey: [\n 'entity-learning',\n cacheScope,\n entityType,\n entityId,\n 'theme-snapshots',\n nextSignalNames,\n dateFrom?.toISOString(),\n dateTo?.toISOString(),\n ],\n queryFn: () => fetchThemeSnapshots(request, entityId, entityType, nextSignalNames, dateFrom, dateTo),\n });\n const sortedNextSnapshots = [...nextSnapshots.snapshots].sort((left, right) => left.ordinal - right.ordinal);\n const matchedNextIndex = sortedNextSnapshots.findIndex(candidate => candidate.ordinal === snapshot?.ordinal);\n const nextSelectedIndex = matchedNextIndex >= 0 ? matchedNextIndex : 0;\n const nextSnapshot = sortedNextSnapshots[nextSelectedIndex];\n await Promise.all(\n selectFlowSnapshotIds(sortedNextSnapshots, nextSelectedIndex).map(snapshotId =>\n queryClient.fetchQuery({\n queryKey: ['entity-learning', cacheScope, entityType, entityId, 'theme-flow', nextSignalNames, snapshotId],\n queryFn: () => fetchThemeFlow(request, entityId, entityType, nextSignalNames, snapshotId),\n }),\n ),\n );\n if (drillStack.length > 0 && nextSnapshot && nextSnapshot.traceCount <= DRILL_IN_TRACE_LIMIT) {\n await queryClient.fetchQuery({\n queryKey: [\n 'entity-learning',\n cacheScope,\n entityType,\n entityId,\n 'theme-paths',\n nextSignalNames,\n nextSnapshot.snapshotId,\n ],\n queryFn: () => fetchThemePaths(request, entityId, entityType, nextSignalNames, nextSnapshot.snapshotId),\n });\n }\n return { nextSignalNames, nextFrameId: nextSnapshot?.snapshotId };\n },\n onSuccess: ({ nextSignalNames, nextFrameId }) => {\n setSignalNames(nextSignalNames);\n setPendingSignalNames(undefined);\n // Keep the parent-owned frame pointing at a snapshot that exists in the new perspective.\n if (nextFrameId && nextFrameId !== selectedFrameId) onFrameIdChange(nextFrameId);\n },\n onError: () => setPendingSignalNames(undefined),\n });\n\n if (snapshotsQuery.isPending) {\n return (\n <>\n {dateRangePicker && <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>}\n <SignalsLoadingSkeleton />\n </>\n );\n }\n\n if (snapshotsQuery.isError || hasFlowError || hasActivePathsError) {\n return (\n <>\n {dateRangePicker && <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>}\n <SignalsErrorState\n message=\"Unable to load trace signal flow.\"\n onRetry={() => {\n setIsPlaying(false);\n void snapshotsQuery.refetch();\n void Promise.all(flowQueries.map(query => query.refetch()));\n if (drillStack.length > 0 && drillInAvailable) void pathsQuery.refetch();\n }}\n onClear={hasActivePathsError ? () => setDrillStack([]) : undefined}\n />\n </>\n );\n }\n\n if (!snapshot) {\n return (\n <>\n {dateRangePicker && <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>}\n <SignalsEmptyState\n LinkComponent={LinkComponent}\n progress={progressQuery.data}\n signalCatalog={effectiveSignalCatalog}\n isRangeEmpty\n />\n </>\n );\n }\n\n if (isFlowPending) {\n return (\n <div className=\"min-w-0 space-y-5 p-4 lg:p-6\">\n {dateRangePicker && <div className=\"flex justify-end\">{dateRangePicker}</div>}\n <SnapshotTimeline\n snapshots={snapshots}\n selectedIndex={selectedSnapshotIndex}\n totalSnapshots={totalSnapshots}\n summary={snapshot ? <SnapshotSummary snapshot={snapshot} flow={undefined} /> : undefined}\n isPlaying={isPlaying}\n onPlayingChange={handlePlayingChange}\n onSnapshotChange={selectSnapshot}\n />\n <SignalsFrameLoadingSkeleton />\n </div>\n );\n }\n\n if (!currentFlow || !flow || !graphSummary || populatedStageCount < 2) {\n return (\n <>\n {dateRangePicker && <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>}\n <SignalsEmptyState\n LinkComponent={LinkComponent}\n progress={progressQuery.data}\n signalCatalog={effectiveSignalCatalog}\n />\n </>\n );\n }\n\n const stages = flow.stages;\n const isNodeClickable = (selection: SankeyChartNodeSelection) =>\n findNoiseSelection(flow, selection.column.id, selection.value) !== undefined ||\n findThemeSelection(flow, selection.column.id, selection.value) !== undefined;\n const handleNodeClick = (selection: SankeyChartNodeSelection) => {\n const nextSelection =\n findNoiseSelection(flow, selection.column.id, selection.value) ??\n findThemeSelection(flow, selection.column.id, selection.value);\n if (!nextSelection || drillStack.some(filter => filter.signalName === nextSelection.signalName)) return;\n if (nextSelection.kind === 'theme') {\n setNoiseSignalName(undefined);\n setThemeDetails(nextSelection);\n if (drillInAvailable) setDrillStack(current => [...current, nextSelection]);\n } else {\n setThemeDetails(undefined);\n setNoiseSignalName(nextSelection.signalName);\n }\n };\n const drillInDisabledReason = drillInAvailable\n ? undefined\n : 'Drill-in is unavailable for snapshots with more than 2,000 traces.';\n const isDrilledEmpty = drillStack.length > 0 && pathsQuery.data !== undefined && flow.snapshot.traceCount === 0;\n const handleSignalOrderChange = (nextSignalNames: TraceSignalName[]) => {\n if (perspectiveMutation.isPending) return;\n setIsPlaying(false);\n setThemeDetails(undefined);\n setNoiseSignalName(undefined);\n const mergedSignalNames = mergeVisibleSignalOrder(signalNames, nextSignalNames);\n setPendingSignalNames(mergedSignalNames);\n perspectiveMutation.mutate(mergedSignalNames);\n };\n const filtersResolved = drillStack.length > 0 && drillInAvailable && pathsQuery.data !== undefined;\n const filterSummaryPrefix = drillInAvailable ? 'Filtered' : 'Filters unavailable';\n const detailStats = filtersResolved ? findSelectionStats(flow, drillStack, detailSelection) : undefined;\n const noiseStats = filtersResolved\n ? findSelectionStats(flow, drillStack, noiseSignalName ? { kind: 'noise', signalName: noiseSignalName } : undefined)\n : undefined;\n const filterKey = serializeThemeFilters(drillStack);\n const catalogSignalNames = orderedSignals(effectiveSignalCatalog, signalNames);\n const viewDescription =\n viewMode === 'flow'\n ? `How this agent's traces distribute across ${formatSignalList(catalogSignalNames.map(name => signalLabel(effectiveSignalCatalog, name).toLocaleLowerCase()))} themes at this point in time.`\n : VIEW_DESCRIPTIONS[viewMode];\n const labeledColumns = graphSummary.columns.map(column => ({\n ...column,\n label: signalLabel(effectiveSignalCatalog, column.id),\n }));\n\n return (\n <TraceIntelligenceContext.Provider value={traceIntelligenceContext}>\n <div className=\"min-w-0 space-y-5 p-4 lg:p-6\">\n <div className=\"flex min-w-0 flex-wrap items-center justify-between gap-3\">\n <div className=\"flex min-w-0 flex-wrap items-center gap-4\">\n <Tabs<SignalsViewMode>\n value={viewMode}\n defaultTab=\"flow\"\n onValueChange={handleViewModeChange}\n className=\"w-fit\"\n >\n <TabList variant=\"pill-ghost\">\n <ViewModeTab value=\"flow\" icon={<Waypoints />} label=\"Flow\" />\n <ViewModeTab value=\"compare\" icon={<ArrowLeftRight />} label=\"Compare\" />\n <ViewModeTab value=\"lifelines\" icon={<ChartNoAxesGantt />} label=\"Lifelines\" />\n </TabList>\n </Tabs>\n <TraceIntelligenceExplainer signalCatalog={effectiveSignalCatalog} />\n </div>\n {dateRangePicker}\n </div>\n <Txt variant=\"caption\" tone=\"muted\">\n {viewDescription}\n </Txt>\n <PendingSignalProgress progress={progressQuery.data} signalCatalog={effectiveSignalCatalog} />\n {viewMode === 'compare' ? (\n <ThemeCompare\n entityId={entityId}\n entityType={entityType}\n signalNames={signalNames}\n snapshots={snapshots}\n totalSnapshots={totalSnapshots}\n onThemeSelect={openThemeDetailsAt}\n />\n ) : viewMode === 'lifelines' ? (\n <ThemeLifelines\n entityId={entityId}\n entityType={entityType}\n signalNames={signalNames}\n snapshots={snapshots}\n totalSnapshots={totalSnapshots}\n selectedIndex={selectedSnapshotIndex}\n onSnapshotSelect={selectSnapshot}\n onThemeSelect={openThemeDetailsAt}\n />\n ) : (\n <>\n <SnapshotTimeline\n snapshots={snapshots}\n selectedIndex={selectedSnapshotIndex}\n totalSnapshots={totalSnapshots}\n summary={\n <SnapshotSummary\n snapshot={snapshot}\n flow={flow}\n prefix={drillStack.length > 0 ? filterSummaryPrefix : undefined}\n />\n }\n isPlaying={isPlaying}\n onPlayingChange={handlePlayingChange}\n onSnapshotChange={selectSnapshot}\n />\n {drillStack.length > 0 ? (\n <ThemeFilterBanner\n selections={drillStack}\n filteredTraceCount={filtersResolved ? flow.snapshot.traceCount : undefined}\n totalTraceCount={currentFlow.snapshot.traceCount}\n isUnavailable={!drillInAvailable}\n onViewDetails={selection => {\n if (selection.kind === 'theme') {\n setNoiseSignalName(undefined);\n setThemeDetails(selection);\n } else {\n setThemeDetails(undefined);\n setNoiseSignalName(selection.signalName);\n }\n }}\n onRemove={signalName =>\n setDrillStack(current => current.filter(filter => filter.signalName !== signalName))\n }\n onClear={() => setDrillStack([])}\n />\n ) : null}\n {isDrilledEmpty ? (\n <section className=\"rounded-lg border border-border bg-background p-6 text-muted-foreground\">\n <Txt as=\"span\" variant=\"body\" className=\"block\">\n This theme is not present in the selected snapshot. Use the clear filter action above to return to the\n full flow.\n </Txt>\n </section>\n ) : graphSummary.records.length === 0 ? (\n <section className=\"rounded-lg border border-border bg-background p-6 text-muted-foreground\">\n <Txt as=\"span\" variant=\"body\" className=\"block\">\n No cross-signal flow for this snapshot. Its trace signals have not overlapped on shared traces yet.\n Pick another snapshot from the timeline below.\n </Txt>\n </section>\n ) : (\n <FlowCard\n columns={labeledColumns}\n records={graphSummary.records}\n stages={stages}\n height={height}\n onNodeClick={handleNodeClick}\n isNodeClickable={isNodeClickable}\n drillInDisabledReason={drillInDisabledReason}\n onOrderChange={handleSignalOrderChange}\n signalOrder={pendingSignalNames ?? signalNames}\n reorderDisabled={perspectiveMutation.isPending}\n />\n )}\n {perspectiveMutation.isPending ? (\n <Txt variant=\"caption\" tone=\"muted\" role=\"status\">\n Reloading snapshots for new trace signal perspective…\n </Txt>\n ) : null}\n {perspectiveMutation.isError ? (\n <Txt variant=\"caption\" className=\"text-destructive-foreground\" role=\"alert\">\n Unable to load that trace signal perspective. Try reordering the columns again.\n </Txt>\n ) : null}\n </>\n )}\n <ThemeDetailPanel\n key={`${snapshot.snapshotId}:${detailSelection?.signalName ?? ''}:${detailSelection?.themeId ?? ''}:${filterKey}`}\n entityId={entityId}\n entityType={entityType}\n snapshotId={snapshot.snapshotId}\n snapshotTotal={snapshot.total}\n selection={detailSelection}\n filters={drillStack}\n filteredStats={detailStats}\n onClose={() => setThemeDetails(undefined)}\n />\n <NoiseDetailPanel\n key={`${snapshot.snapshotId}:${noiseSignalName ?? ''}:${filterKey}`}\n entityId={entityId}\n entityType={entityType}\n snapshotId={snapshot.snapshotId}\n signalName={noiseSignalName}\n filters={drillStack}\n filteredStats={noiseStats}\n onClose={() => setNoiseSignalName(undefined)}\n />\n </div>\n </TraceIntelligenceContext.Provider>\n );\n}\n"],"mappings":"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"}