@mastra/playground-ui 66.1.0-alpha.2 → 67.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1052) hide show
  1. package/dist/AgentIndicator-Bs2S8AWJ.js +847 -0
  2. package/dist/AgentIndicator-Bs2S8AWJ.js.map +1 -0
  3. package/dist/AgentIndicator-to30W73z.cjs +864 -0
  4. package/dist/AgentIndicator-to30W73z.cjs.map +1 -0
  5. package/dist/AgentIndicator.css +28 -0
  6. package/dist/{Arrival-NpBOyV52.js → Arrival-CJFEOXr5.js} +33 -3
  7. package/dist/Arrival-CJFEOXr5.js.map +1 -0
  8. package/dist/{Arrival-Dm6Vgn78.cjs → Arrival-Cs1oWjo4.cjs} +43 -1
  9. package/dist/Arrival-Cs1oWjo4.cjs.map +1 -0
  10. package/dist/{Comment-CUQvfikb.cjs → Comment-KYUQzeSu.cjs} +2 -2
  11. package/dist/{Comment-CUQvfikb.cjs.map → Comment-KYUQzeSu.cjs.map} +1 -1
  12. package/dist/{Comment-CPA3IyPS.js → Comment-VFJq2wRp.js} +2 -2
  13. package/dist/{Comment-CPA3IyPS.js.map → Comment-VFJq2wRp.js.map} +1 -1
  14. package/dist/{DataList-Ve3omCXT.js → DataList-2tIlQsLc.js} +95 -3
  15. package/dist/DataList-2tIlQsLc.js.map +1 -0
  16. package/dist/{DataList-Cmk08jUV.cjs → DataList-Czwmwyvp.cjs} +93 -1
  17. package/dist/DataList-Czwmwyvp.cjs.map +1 -0
  18. package/dist/{DateTimeRangePicker-ByMbLdom.js → DateTimeRangePicker-C_Lie_2P.js} +23 -2
  19. package/dist/DateTimeRangePicker-C_Lie_2P.js.map +1 -0
  20. package/dist/{DateTimeRangePicker-DGbH5WOn.cjs → DateTimeRangePicker-HmPOHwAQ.cjs} +23 -2
  21. package/dist/DateTimeRangePicker-HmPOHwAQ.cjs.map +1 -0
  22. package/dist/{FilterBar-Dk3QEuT6.js → FilterBar--4oguuVe.js} +4 -4
  23. package/dist/FilterBar--4oguuVe.js.map +1 -0
  24. package/dist/{FilterBar-gEvoWDXA.cjs → FilterBar-BUd4f7oi.cjs} +7 -7
  25. package/dist/FilterBar-BUd4f7oi.cjs.map +1 -0
  26. package/dist/GrainFill.css +2 -0
  27. package/dist/{MarkdownRenderer-BgqKfmRm.cjs → MarkdownRenderer-CS6u5drO.cjs} +2 -2
  28. package/dist/{MarkdownRenderer-BgqKfmRm.cjs.map → MarkdownRenderer-CS6u5drO.cjs.map} +1 -1
  29. package/dist/{MarkdownRenderer-DKCDXaLy.js → MarkdownRenderer-DME2xKTk.js} +2 -2
  30. package/dist/{MarkdownRenderer-DKCDXaLy.js.map → MarkdownRenderer-DME2xKTk.js.map} +1 -1
  31. package/dist/{Message-BF9cpYaw.cjs → Message-DsCNQpou.cjs} +2 -2
  32. package/dist/{Message-BF9cpYaw.cjs.map → Message-DsCNQpou.cjs.map} +1 -1
  33. package/dist/{Message-Bkf6Ro9H.js → Message-nVI6tMS3.js} +2 -2
  34. package/dist/{Message-Bkf6Ro9H.js.map → Message-nVI6tMS3.js.map} +1 -1
  35. package/dist/{MetricsCard-Dly_H3oX.cjs → MetricsCard-CEB-f2sv.cjs} +91 -109
  36. package/dist/MetricsCard-CEB-f2sv.cjs.map +1 -0
  37. package/dist/{MetricsCard-C9GWgT58.js → MetricsCard-M8awJ2B_.js} +91 -109
  38. package/dist/MetricsCard-M8awJ2B_.js.map +1 -0
  39. package/dist/{MetricsKpiCard-Uw0nyMgW.cjs → MetricsKpiCard-By_-sagx.cjs} +3 -2
  40. package/dist/{MetricsKpiCard-Uw0nyMgW.cjs.map → MetricsKpiCard-By_-sagx.cjs.map} +1 -1
  41. package/dist/{MetricsKpiCard-Idxjl-dn.js → MetricsKpiCard-OHbAElTl.js} +3 -2
  42. package/dist/{MetricsKpiCard-Idxjl-dn.js.map → MetricsKpiCard-OHbAElTl.js.map} +1 -1
  43. package/dist/{MetricsLineChart-DKzuRU2q.js → MetricsLineChart-BhHoduO0.js} +21 -39
  44. package/dist/MetricsLineChart-BhHoduO0.js.map +1 -0
  45. package/dist/{MetricsLineChart-2m4LVL1N.cjs → MetricsLineChart-CjBm4IXu.cjs} +21 -39
  46. package/dist/MetricsLineChart-CjBm4IXu.cjs.map +1 -0
  47. package/dist/{MetricsStackedBarChart-DJB4aByt.js → MetricsStackedBarChart-BRuA6MTE.js} +2 -3
  48. package/dist/MetricsStackedBarChart-BRuA6MTE.js.map +1 -0
  49. package/dist/{MetricsStackedBarChart-NATtwA_W.cjs → MetricsStackedBarChart-BdMlKv6G.cjs} +2 -3
  50. package/dist/MetricsStackedBarChart-BdMlKv6G.cjs.map +1 -0
  51. package/dist/Notice.css +2 -0
  52. package/dist/Shimmer.css +7 -0
  53. package/dist/{activity-ihrl0JtH.js → activity-CM34JyW-.js} +98 -33
  54. package/dist/activity-CM34JyW-.js.map +1 -0
  55. package/dist/{activity-QyLJcBKc.cjs → activity-DAK8tj7r.cjs} +108 -31
  56. package/dist/activity-DAK8tj7r.cjs.map +1 -0
  57. package/dist/chart-plot.css +15 -0
  58. package/dist/combobox-8kNAJFlj.cjs +309 -0
  59. package/dist/combobox-8kNAJFlj.cjs.map +1 -0
  60. package/dist/{combobox-C-E7_q4j.cjs → combobox-parts-BZVXwbG7.cjs} +7 -300
  61. package/dist/combobox-parts-BZVXwbG7.cjs.map +1 -0
  62. package/dist/{combobox-CDS2pBqz.js → combobox-parts-W7KRQUsV.js} +10 -297
  63. package/dist/combobox-parts-W7KRQUsV.js.map +1 -0
  64. package/dist/combobox-wFudhN8F.js +302 -0
  65. package/dist/combobox-wFudhN8F.js.map +1 -0
  66. package/dist/components/AgentIndicator.cjs.js +5 -0
  67. package/dist/components/AgentIndicator.d.ts +1 -0
  68. package/dist/components/AgentIndicator.es.js +1 -0
  69. package/dist/components/Arrival.cjs.js +3 -1
  70. package/dist/components/Arrival.es.js +1 -1
  71. package/dist/components/Combobox.cjs.js +24 -23
  72. package/dist/components/Combobox.es.js +2 -1
  73. package/dist/components/Comment.cjs.js +1 -1
  74. package/dist/components/Comment.es.js +1 -1
  75. package/dist/components/DataList.cjs.js +2 -2
  76. package/dist/components/DataList.es.js +2 -2
  77. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  78. package/dist/components/DateTimeRangePicker.es.js +1 -1
  79. package/dist/components/DiffStat.cjs.js +1 -1
  80. package/dist/components/DiffStat.es.js +1 -1
  81. package/dist/components/FilterBar.cjs.js +2 -2
  82. package/dist/components/FilterBar.es.js +2 -2
  83. package/dist/components/LogsDataList.cjs.js +1 -1
  84. package/dist/components/LogsDataList.es.js +1 -1
  85. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  86. package/dist/components/MarkdownRenderer.es.js +1 -1
  87. package/dist/components/Message.cjs.js +1 -1
  88. package/dist/components/Message.es.js +1 -1
  89. package/dist/components/MetricsCard.cjs.js +1 -1
  90. package/dist/components/MetricsCard.es.js +1 -1
  91. package/dist/components/MetricsKpiCard.cjs.js +1 -1
  92. package/dist/components/MetricsKpiCard.es.js +1 -1
  93. package/dist/components/MetricsLineChart.cjs.js +1 -1
  94. package/dist/components/MetricsLineChart.es.js +1 -1
  95. package/dist/components/MetricsStackedBarChart.cjs.js +1 -1
  96. package/dist/components/MetricsStackedBarChart.es.js +1 -1
  97. package/dist/components/PropertyFilter.cjs.js +1 -1
  98. package/dist/components/PropertyFilter.es.js +1 -1
  99. package/dist/components/SavedViews.cjs.js +27 -69
  100. package/dist/components/SavedViews.cjs.js.map +1 -1
  101. package/dist/components/SavedViews.es.js +26 -68
  102. package/dist/components/SavedViews.es.js.map +1 -1
  103. package/dist/components/ai/activity.cjs.js +3 -1
  104. package/dist/components/ai/activity.es.js +1 -1
  105. package/dist/components/ai/message-reveal.cjs.js +2 -1
  106. package/dist/components/ai/message-reveal.cjs.js.map +1 -1
  107. package/dist/components/ai/message-reveal.es.js +2 -1
  108. package/dist/components/ai/message-reveal.es.js.map +1 -1
  109. package/dist/components/ai/plan.cjs.js +1 -1
  110. package/dist/components/ai/plan.es.js +1 -1
  111. package/dist/components/ai/tool-approval.cjs.js +1 -1
  112. package/dist/components/ai/tool-approval.es.js +1 -1
  113. package/dist/components/ai/tool-call.cjs.js +2 -2
  114. package/dist/components/ai/tool-call.es.js +2 -2
  115. package/dist/domains/chat/activity/activity-stretch-line.cjs.js +6 -4
  116. package/dist/domains/chat/activity/activity-stretch-line.cjs.js.map +1 -1
  117. package/dist/domains/chat/activity/activity-stretch-line.es.js +6 -4
  118. package/dist/domains/chat/activity/activity-stretch-line.es.js.map +1 -1
  119. package/dist/domains/chat/activity/components/activity-fold.cjs.js +81 -28
  120. package/dist/domains/chat/activity/components/activity-fold.cjs.js.map +1 -1
  121. package/dist/domains/chat/activity/components/activity-fold.es.js +82 -29
  122. package/dist/domains/chat/activity/components/activity-fold.es.js.map +1 -1
  123. package/dist/domains/chat/activity/components/activity-timed-trigger.cjs.js +1 -1
  124. package/dist/domains/chat/activity/components/activity-timed-trigger.es.js +1 -1
  125. package/dist/domains/chat/activity/components/calls-panel.cjs.js +1 -1
  126. package/dist/domains/chat/activity/components/calls-panel.es.js +1 -1
  127. package/dist/domains/chat/activity/components/stretch-content.cjs.js +1 -1
  128. package/dist/domains/chat/activity/components/stretch-content.es.js +1 -1
  129. package/dist/domains/chat/activity/components/stretch-thought.cjs.js +1 -1
  130. package/dist/domains/chat/activity/components/stretch-thought.es.js +1 -1
  131. package/dist/domains/chat/activity/components/use-fading-edge.cjs.js +26 -0
  132. package/dist/domains/chat/activity/components/use-fading-edge.cjs.js.map +1 -0
  133. package/dist/domains/chat/activity/components/use-fading-edge.d.ts +1 -0
  134. package/dist/domains/chat/activity/components/use-fading-edge.es.js +25 -0
  135. package/dist/domains/chat/activity/components/use-fading-edge.es.js.map +1 -0
  136. package/dist/domains/chat/activity/components/use-rolling-words.cjs.js +123 -0
  137. package/dist/domains/chat/activity/components/use-rolling-words.cjs.js.map +1 -0
  138. package/dist/domains/chat/activity/components/use-rolling-words.d.ts +1 -0
  139. package/dist/domains/chat/activity/components/use-rolling-words.es.js +122 -0
  140. package/dist/domains/chat/activity/components/use-rolling-words.es.js.map +1 -0
  141. package/dist/domains/chat/activity/model/activity-segments.cjs.js +1 -1
  142. package/dist/domains/chat/activity/model/activity-segments.es.js +1 -1
  143. package/dist/domains/chat/activity/model/activity-words.cjs.js +16 -6
  144. package/dist/domains/chat/activity/model/activity-words.cjs.js.map +1 -1
  145. package/dist/domains/chat/activity/model/activity-words.es.js +15 -7
  146. package/dist/domains/chat/activity/model/activity-words.es.js.map +1 -1
  147. package/dist/domains/chat/activity.cjs.js +3 -0
  148. package/dist/domains/chat/activity.es.js +2 -1
  149. package/dist/domains/chat/components/badge-wrapper.cjs.js +1 -1
  150. package/dist/domains/chat/components/badge-wrapper.es.js +1 -1
  151. package/dist/domains/chat/messages/assistant-message-actions.cjs.js +1 -1
  152. package/dist/domains/chat/messages/assistant-message-actions.es.js +1 -1
  153. package/dist/domains/chat/messages/message-row.cjs.js +4 -4
  154. package/dist/domains/chat/messages/message-row.es.js +4 -4
  155. package/dist/domains/chat/messages/notification-signal-notice.cjs.js +1 -1
  156. package/dist/domains/chat/messages/notification-signal-notice.es.js +1 -1
  157. package/dist/domains/chat/messages/reasoning-content.cjs.js +1 -1
  158. package/dist/domains/chat/messages/reasoning-content.es.js +1 -1
  159. package/dist/domains/chat/messages/renderers/message-text.cjs.js +1 -1
  160. package/dist/domains/chat/messages/renderers/message-text.es.js +1 -1
  161. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
  162. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
  163. package/dist/domains/chat/messages/renderers/tool-part.cjs.js +18 -0
  164. package/dist/domains/chat/messages/renderers/tool-part.cjs.js.map +1 -1
  165. package/dist/domains/chat/messages/renderers/tool-part.es.js +18 -0
  166. package/dist/domains/chat/messages/renderers/tool-part.es.js.map +1 -1
  167. package/dist/domains/chat/messages/signal-badge.cjs.js +1 -1
  168. package/dist/domains/chat/messages/signal-badge.es.js +1 -1
  169. package/dist/domains/chat/messages/skill-message.cjs.js +10 -7
  170. package/dist/domains/chat/messages/skill-message.cjs.js.map +1 -1
  171. package/dist/domains/chat/messages/skill-message.es.js +10 -7
  172. package/dist/domains/chat/messages/skill-message.es.js.map +1 -1
  173. package/dist/domains/chat/messages/system-reminder-badge.cjs.js +1 -1
  174. package/dist/domains/chat/messages/system-reminder-badge.es.js +1 -1
  175. package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
  176. package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
  177. package/dist/domains/chat/tools/badges/agent-badge.cjs.js +1 -1
  178. package/dist/domains/chat/tools/badges/agent-badge.es.js +1 -1
  179. package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +2 -2
  180. package/dist/domains/chat/tools/badges/file-tree-badge.es.js +2 -2
  181. package/dist/domains/chat/tools/badges/mcp-task-chip.cjs.js +111 -0
  182. package/dist/domains/chat/tools/badges/mcp-task-chip.cjs.js.map +1 -0
  183. package/dist/domains/chat/tools/badges/mcp-task-chip.d.ts +1 -0
  184. package/dist/domains/chat/tools/badges/mcp-task-chip.es.js +109 -0
  185. package/dist/domains/chat/tools/badges/mcp-task-chip.es.js.map +1 -0
  186. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +8 -6
  187. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js.map +1 -1
  188. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +9 -7
  189. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js.map +1 -1
  190. package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +2 -3
  191. package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js.map +1 -1
  192. package/dist/domains/chat/tools/badges/observation-marker-details.es.js +2 -3
  193. package/dist/domains/chat/tools/badges/observation-marker-details.es.js.map +1 -1
  194. package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +1 -1
  195. package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
  196. package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js +2 -2
  197. package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js +2 -2
  198. package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +1 -1
  199. package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
  200. package/dist/domains/chat/tools/badges/tool-badge.cjs.js +10 -4
  201. package/dist/domains/chat/tools/badges/tool-badge.cjs.js.map +1 -1
  202. package/dist/domains/chat/tools/badges/tool-badge.es.js +10 -4
  203. package/dist/domains/chat/tools/badges/tool-badge.es.js.map +1 -1
  204. package/dist/domains/chat/tools/badges/use-mcp-task-progress.cjs.js +51 -0
  205. package/dist/domains/chat/tools/badges/use-mcp-task-progress.cjs.js.map +1 -0
  206. package/dist/domains/chat/tools/badges/use-mcp-task-progress.d.ts +1 -0
  207. package/dist/domains/chat/tools/badges/use-mcp-task-progress.es.js +49 -0
  208. package/dist/domains/chat/tools/badges/use-mcp-task-progress.es.js.map +1 -0
  209. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +1 -1
  210. package/dist/domains/chat/tools/badges/workflow-badge.es.js +1 -1
  211. package/dist/domains/chat/tools/tool-card-kind.cjs.js +1 -1
  212. package/dist/domains/chat/tools/tool-card-kind.es.js +1 -1
  213. package/dist/domains/chat/tools/tool-card.cjs.js +1 -1
  214. package/dist/domains/chat/tools/tool-card.es.js +1 -1
  215. package/dist/domains/chat/tools/tool-groups.cjs.js +1 -1
  216. package/dist/domains/chat/tools/tool-groups.es.js +1 -1
  217. package/dist/domains/dashboards/components/dashboard-grid.cjs.js +44 -0
  218. package/dist/domains/dashboards/components/dashboard-grid.cjs.js.map +1 -0
  219. package/dist/domains/dashboards/components/dashboard-grid.d.ts +1 -0
  220. package/dist/domains/dashboards/components/dashboard-grid.es.js +41 -0
  221. package/dist/domains/dashboards/components/dashboard-grid.es.js.map +1 -0
  222. package/dist/domains/dashboards/components/dashboard-renderer.cjs.js +72 -0
  223. package/dist/domains/dashboards/components/dashboard-renderer.cjs.js.map +1 -0
  224. package/dist/domains/dashboards/components/dashboard-renderer.d.ts +1 -0
  225. package/dist/domains/dashboards/components/dashboard-renderer.es.js +71 -0
  226. package/dist/domains/dashboards/components/dashboard-renderer.es.js.map +1 -0
  227. package/dist/domains/dashboards/components/view-gate.cjs.js +55 -0
  228. package/dist/domains/dashboards/components/view-gate.cjs.js.map +1 -0
  229. package/dist/domains/dashboards/components/view-gate.d.ts +1 -0
  230. package/dist/domains/dashboards/components/view-gate.es.js +54 -0
  231. package/dist/domains/dashboards/components/view-gate.es.js.map +1 -0
  232. package/dist/domains/dashboards/components/widget-chrome.cjs.js +16 -0
  233. package/dist/domains/dashboards/components/widget-chrome.cjs.js.map +1 -0
  234. package/dist/domains/dashboards/components/widget-chrome.d.ts +1 -0
  235. package/dist/domains/dashboards/components/widget-chrome.es.js +15 -0
  236. package/dist/domains/dashboards/components/widget-chrome.es.js.map +1 -0
  237. package/dist/domains/dashboards/components/widget-controls.cjs.js +21 -0
  238. package/dist/domains/dashboards/components/widget-controls.cjs.js.map +1 -0
  239. package/dist/domains/dashboards/components/widget-controls.d.ts +1 -0
  240. package/dist/domains/dashboards/components/widget-controls.es.js +20 -0
  241. package/dist/domains/dashboards/components/widget-controls.es.js.map +1 -0
  242. package/dist/domains/dashboards/components/widget-error.cjs.js +18 -0
  243. package/dist/domains/dashboards/components/widget-error.cjs.js.map +1 -0
  244. package/dist/domains/dashboards/components/widget-error.d.ts +1 -0
  245. package/dist/domains/dashboards/components/widget-error.es.js +17 -0
  246. package/dist/domains/dashboards/components/widget-error.es.js.map +1 -0
  247. package/dist/domains/dashboards/hooks/use-dashboard-requests.cjs.js +47 -0
  248. package/dist/domains/dashboards/hooks/use-dashboard-requests.cjs.js.map +1 -0
  249. package/dist/domains/dashboards/hooks/use-dashboard-requests.d.ts +1 -0
  250. package/dist/domains/dashboards/hooks/use-dashboard-requests.es.js +46 -0
  251. package/dist/domains/dashboards/hooks/use-dashboard-requests.es.js.map +1 -0
  252. package/dist/domains/dashboards/hooks/use-scorers.cjs.js +41 -0
  253. package/dist/domains/dashboards/hooks/use-scorers.cjs.js.map +1 -0
  254. package/dist/domains/dashboards/hooks/use-scorers.d.ts +1 -0
  255. package/dist/domains/dashboards/hooks/use-scorers.es.js +40 -0
  256. package/dist/domains/dashboards/hooks/use-scorers.es.js.map +1 -0
  257. package/dist/domains/dashboards/hooks/use-widget-views.cjs.js +35 -0
  258. package/dist/domains/dashboards/hooks/use-widget-views.cjs.js.map +1 -0
  259. package/dist/domains/dashboards/hooks/use-widget-views.d.ts +1 -0
  260. package/dist/domains/dashboards/hooks/use-widget-views.es.js +32 -0
  261. package/dist/domains/dashboards/hooks/use-widget-views.es.js.map +1 -0
  262. package/dist/domains/dashboards/kinds/kpis/kpis-widget.cjs.js +63 -0
  263. package/dist/domains/dashboards/kinds/kpis/kpis-widget.cjs.js.map +1 -0
  264. package/dist/domains/dashboards/kinds/kpis/kpis-widget.d.ts +1 -0
  265. package/dist/domains/dashboards/kinds/kpis/kpis-widget.es.js +62 -0
  266. package/dist/domains/dashboards/kinds/kpis/kpis-widget.es.js.map +1 -0
  267. package/dist/domains/dashboards/kinds/kpis/options.cjs.js +72 -0
  268. package/dist/domains/dashboards/kinds/kpis/options.cjs.js.map +1 -0
  269. package/dist/domains/dashboards/kinds/kpis/options.d.ts +1 -0
  270. package/dist/domains/dashboards/kinds/kpis/options.es.js +69 -0
  271. package/dist/domains/dashboards/kinds/kpis/options.es.js.map +1 -0
  272. package/dist/domains/dashboards/kinds/kpis.cjs.js +17 -0
  273. package/dist/domains/dashboards/kinds/kpis.cjs.js.map +1 -0
  274. package/dist/domains/dashboards/kinds/kpis.d.ts +1 -0
  275. package/dist/domains/dashboards/kinds/kpis.es.js +14 -0
  276. package/dist/domains/dashboards/kinds/kpis.es.js.map +1 -0
  277. package/dist/domains/dashboards/kinds/scores/options.cjs.js +30 -0
  278. package/dist/domains/dashboards/kinds/scores/options.cjs.js.map +1 -0
  279. package/dist/domains/dashboards/kinds/scores/options.d.ts +1 -0
  280. package/dist/domains/dashboards/kinds/scores/options.es.js +28 -0
  281. package/dist/domains/dashboards/kinds/scores/options.es.js.map +1 -0
  282. package/dist/domains/dashboards/kinds/scores/scores-widget.cjs.js +91 -0
  283. package/dist/domains/dashboards/kinds/scores/scores-widget.cjs.js.map +1 -0
  284. package/dist/domains/dashboards/kinds/scores/scores-widget.d.ts +1 -0
  285. package/dist/domains/dashboards/kinds/scores/scores-widget.es.js +90 -0
  286. package/dist/domains/dashboards/kinds/scores/scores-widget.es.js.map +1 -0
  287. package/dist/domains/dashboards/kinds/scores.cjs.js +16 -0
  288. package/dist/domains/dashboards/kinds/scores.cjs.js.map +1 -0
  289. package/dist/domains/dashboards/kinds/scores.d.ts +1 -0
  290. package/dist/domains/dashboards/kinds/scores.es.js +14 -0
  291. package/dist/domains/dashboards/kinds/scores.es.js.map +1 -0
  292. package/dist/domains/dashboards/kinds/table/table-cells.cjs.js +67 -0
  293. package/dist/domains/dashboards/kinds/table/table-cells.cjs.js.map +1 -0
  294. package/dist/domains/dashboards/kinds/table/table-cells.d.ts +1 -0
  295. package/dist/domains/dashboards/kinds/table/table-cells.es.js +63 -0
  296. package/dist/domains/dashboards/kinds/table/table-cells.es.js.map +1 -0
  297. package/dist/domains/dashboards/kinds/table/table-columns.cjs.js +72 -0
  298. package/dist/domains/dashboards/kinds/table/table-columns.cjs.js.map +1 -0
  299. package/dist/domains/dashboards/kinds/table/table-columns.d.ts +1 -0
  300. package/dist/domains/dashboards/kinds/table/table-columns.es.js +71 -0
  301. package/dist/domains/dashboards/kinds/table/table-columns.es.js.map +1 -0
  302. package/dist/domains/dashboards/kinds/table/table-frame.cjs.js +16 -0
  303. package/dist/domains/dashboards/kinds/table/table-frame.cjs.js.map +1 -0
  304. package/dist/domains/dashboards/kinds/table/table-frame.d.ts +1 -0
  305. package/dist/domains/dashboards/kinds/table/table-frame.es.js +15 -0
  306. package/dist/domains/dashboards/kinds/table/table-frame.es.js.map +1 -0
  307. package/dist/domains/dashboards/kinds/table/table-tabs.cjs.js +55 -0
  308. package/dist/domains/dashboards/kinds/table/table-tabs.cjs.js.map +1 -0
  309. package/dist/domains/dashboards/kinds/table/table-tabs.d.ts +1 -0
  310. package/dist/domains/dashboards/kinds/table/table-tabs.es.js +54 -0
  311. package/dist/domains/dashboards/kinds/table/table-tabs.es.js.map +1 -0
  312. package/dist/domains/dashboards/kinds/table/table-view.cjs.js +80 -0
  313. package/dist/domains/dashboards/kinds/table/table-view.cjs.js.map +1 -0
  314. package/dist/domains/dashboards/kinds/table/table-view.d.ts +1 -0
  315. package/dist/domains/dashboards/kinds/table/table-view.es.js +79 -0
  316. package/dist/domains/dashboards/kinds/table/table-view.es.js.map +1 -0
  317. package/dist/domains/dashboards/kinds/table/table-widget.cjs.js +30 -0
  318. package/dist/domains/dashboards/kinds/table/table-widget.cjs.js.map +1 -0
  319. package/dist/domains/dashboards/kinds/table/table-widget.d.ts +1 -0
  320. package/dist/domains/dashboards/kinds/table/table-widget.es.js +29 -0
  321. package/dist/domains/dashboards/kinds/table/table-widget.es.js.map +1 -0
  322. package/dist/domains/dashboards/kinds/table.cjs.js +17 -0
  323. package/dist/domains/dashboards/kinds/table.cjs.js.map +1 -0
  324. package/dist/domains/dashboards/kinds/table.d.ts +1 -0
  325. package/dist/domains/dashboards/kinds/table.es.js +14 -0
  326. package/dist/domains/dashboards/kinds/table.es.js.map +1 -0
  327. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.cjs.js +115 -0
  328. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.cjs.js.map +1 -0
  329. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.d.ts +1 -0
  330. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.es.js +114 -0
  331. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.es.js.map +1 -0
  332. package/dist/domains/dashboards/kinds/timeseries.cjs.js +15 -0
  333. package/dist/domains/dashboards/kinds/timeseries.cjs.js.map +1 -0
  334. package/dist/domains/dashboards/kinds/timeseries.d.ts +1 -0
  335. package/dist/domains/dashboards/kinds/timeseries.es.js +14 -0
  336. package/dist/domains/dashboards/kinds/timeseries.es.js.map +1 -0
  337. package/dist/domains/dashboards/kinds.cjs.js +20 -0
  338. package/dist/domains/dashboards/kinds.cjs.js.map +1 -0
  339. package/dist/domains/dashboards/kinds.d.ts +1 -0
  340. package/dist/domains/dashboards/kinds.es.js +15 -0
  341. package/dist/domains/dashboards/kinds.es.js.map +1 -0
  342. package/dist/domains/dashboards/lib/answers.cjs.js +42 -0
  343. package/dist/domains/dashboards/lib/answers.cjs.js.map +1 -0
  344. package/dist/domains/dashboards/lib/answers.d.ts +1 -0
  345. package/dist/domains/dashboards/lib/answers.es.js +37 -0
  346. package/dist/domains/dashboards/lib/answers.es.js.map +1 -0
  347. package/dist/domains/dashboards/lib/chrome.cjs.js +41 -0
  348. package/dist/domains/dashboards/lib/chrome.cjs.js.map +1 -0
  349. package/dist/domains/dashboards/lib/chrome.d.ts +1 -0
  350. package/dist/domains/dashboards/lib/chrome.es.js +37 -0
  351. package/dist/domains/dashboards/lib/chrome.es.js.map +1 -0
  352. package/dist/domains/dashboards/lib/definition.cjs.js +59 -0
  353. package/dist/domains/dashboards/lib/definition.cjs.js.map +1 -0
  354. package/dist/domains/dashboards/lib/definition.d.ts +1 -0
  355. package/dist/domains/dashboards/lib/definition.es.js +55 -0
  356. package/dist/domains/dashboards/lib/definition.es.js.map +1 -0
  357. package/dist/domains/dashboards/lib/filters.cjs.js +44 -0
  358. package/dist/domains/dashboards/lib/filters.cjs.js.map +1 -0
  359. package/dist/domains/dashboards/lib/filters.d.ts +1 -0
  360. package/dist/domains/dashboards/lib/filters.es.js +43 -0
  361. package/dist/domains/dashboards/lib/filters.es.js.map +1 -0
  362. package/dist/domains/dashboards/lib/format.cjs.js +32 -0
  363. package/dist/domains/dashboards/lib/format.cjs.js.map +1 -0
  364. package/dist/domains/dashboards/lib/format.d.ts +1 -0
  365. package/dist/domains/dashboards/lib/format.es.js +30 -0
  366. package/dist/domains/dashboards/lib/format.es.js.map +1 -0
  367. package/dist/domains/dashboards/lib/prepare-widget.cjs.js +77 -0
  368. package/dist/domains/dashboards/lib/prepare-widget.cjs.js.map +1 -0
  369. package/dist/domains/dashboards/lib/prepare-widget.d.ts +1 -0
  370. package/dist/domains/dashboards/lib/prepare-widget.es.js +75 -0
  371. package/dist/domains/dashboards/lib/prepare-widget.es.js.map +1 -0
  372. package/dist/domains/dashboards/lib/requests.cjs.js +279 -0
  373. package/dist/domains/dashboards/lib/requests.cjs.js.map +1 -0
  374. package/dist/domains/dashboards/lib/requests.d.ts +1 -0
  375. package/dist/domains/dashboards/lib/requests.es.js +273 -0
  376. package/dist/domains/dashboards/lib/requests.es.js.map +1 -0
  377. package/dist/domains/dashboards/lib/scores.cjs.js +58 -0
  378. package/dist/domains/dashboards/lib/scores.cjs.js.map +1 -0
  379. package/dist/domains/dashboards/lib/scores.d.ts +1 -0
  380. package/dist/domains/dashboards/lib/scores.es.js +53 -0
  381. package/dist/domains/dashboards/lib/scores.es.js.map +1 -0
  382. package/dist/domains/dashboards/lib/table.cjs.js +408 -0
  383. package/dist/domains/dashboards/lib/table.cjs.js.map +1 -0
  384. package/dist/domains/dashboards/lib/table.d.ts +1 -0
  385. package/dist/domains/dashboards/lib/table.es.js +388 -0
  386. package/dist/domains/dashboards/lib/table.es.js.map +1 -0
  387. package/dist/domains/dashboards/lib/timeseries.cjs.js +192 -0
  388. package/dist/domains/dashboards/lib/timeseries.cjs.js.map +1 -0
  389. package/dist/domains/dashboards/lib/timeseries.d.ts +1 -0
  390. package/dist/domains/dashboards/lib/timeseries.es.js +188 -0
  391. package/dist/domains/dashboards/lib/timeseries.es.js.map +1 -0
  392. package/dist/domains/dashboards/lib/values.cjs.js +155 -0
  393. package/dist/domains/dashboards/lib/values.cjs.js.map +1 -0
  394. package/dist/domains/dashboards/lib/values.d.ts +1 -0
  395. package/dist/domains/dashboards/lib/values.es.js +142 -0
  396. package/dist/domains/dashboards/lib/values.es.js.map +1 -0
  397. package/dist/domains/dashboards/metrics-dashboard.cjs.js +737 -0
  398. package/dist/domains/dashboards/metrics-dashboard.cjs.js.map +1 -0
  399. package/dist/domains/dashboards/metrics-dashboard.d.ts +1 -0
  400. package/dist/domains/dashboards/metrics-dashboard.es.js +736 -0
  401. package/dist/domains/dashboards/metrics-dashboard.es.js.map +1 -0
  402. package/dist/domains/dashboards/widget-kind.cjs.js +7 -0
  403. package/dist/domains/dashboards/widget-kind.cjs.js.map +1 -0
  404. package/dist/domains/dashboards/widget-kind.d.ts +1 -0
  405. package/dist/domains/dashboards/widget-kind.es.js +6 -0
  406. package/dist/domains/dashboards/widget-kind.es.js.map +1 -0
  407. package/dist/domains/dashboards.cjs.js +39 -0
  408. package/dist/domains/dashboards.d.ts +1 -0
  409. package/dist/domains/dashboards.es.js +18 -0
  410. package/dist/domains/logs/components/logs-list-view.cjs.js +1 -1
  411. package/dist/domains/logs/components/logs-list-view.es.js +1 -1
  412. package/dist/domains/logs/components/logs-saved-views.cjs.js +14 -0
  413. package/dist/domains/logs/components/logs-saved-views.cjs.js.map +1 -0
  414. package/dist/domains/logs/components/logs-saved-views.d.ts +1 -0
  415. package/dist/domains/logs/components/logs-saved-views.es.js +13 -0
  416. package/dist/domains/logs/components/logs-saved-views.es.js.map +1 -0
  417. package/dist/domains/logs/components.cjs.js +2 -0
  418. package/dist/domains/logs/components.es.js +2 -1
  419. package/dist/domains/logs/hooks/use-logs-url-state.cjs.js +1 -1
  420. package/dist/domains/logs/hooks/use-logs-url-state.cjs.js.map +1 -1
  421. package/dist/domains/logs/hooks/use-logs-url-state.es.js +2 -2
  422. package/dist/domains/logs/hooks/use-logs-url-state.es.js.map +1 -1
  423. package/dist/domains/logs/log-filters.cjs.js +11 -0
  424. package/dist/domains/logs/log-filters.cjs.js.map +1 -1
  425. package/dist/domains/logs/log-filters.es.js +9 -1
  426. package/dist/domains/logs/log-filters.es.js.map +1 -1
  427. package/dist/domains/logs.cjs.js +6 -1
  428. package/dist/domains/logs.es.js +3 -2
  429. package/dist/domains/metrics/components/agent-runs-card.cjs.js +38 -15
  430. package/dist/domains/metrics/components/agent-runs-card.cjs.js.map +1 -1
  431. package/dist/domains/metrics/components/agent-runs-card.es.js +38 -15
  432. package/dist/domains/metrics/components/agent-runs-card.es.js.map +1 -1
  433. package/dist/domains/metrics/components/breakdown/breakdown-change-cell.cjs.js +4 -11
  434. package/dist/domains/metrics/components/breakdown/breakdown-change-cell.cjs.js.map +1 -1
  435. package/dist/domains/metrics/components/breakdown/breakdown-change-cell.es.js +4 -11
  436. package/dist/domains/metrics/components/breakdown/breakdown-change-cell.es.js.map +1 -1
  437. package/dist/domains/metrics/components/breakdown/breakdown-cost-cell.cjs.js +2 -4
  438. package/dist/domains/metrics/components/breakdown/breakdown-cost-cell.cjs.js.map +1 -1
  439. package/dist/domains/metrics/components/breakdown/breakdown-cost-cell.es.js +2 -4
  440. package/dist/domains/metrics/components/breakdown/breakdown-cost-cell.es.js.map +1 -1
  441. package/dist/domains/metrics/components/breakdown/breakdown-entity-tab.cjs.js +1 -1
  442. package/dist/domains/metrics/components/breakdown/breakdown-entity-tab.es.js +1 -1
  443. package/dist/domains/metrics/components/breakdown/breakdown-frame.cjs.js +16 -27
  444. package/dist/domains/metrics/components/breakdown/breakdown-frame.cjs.js.map +1 -1
  445. package/dist/domains/metrics/components/breakdown/breakdown-frame.es.js +16 -27
  446. package/dist/domains/metrics/components/breakdown/breakdown-frame.es.js.map +1 -1
  447. package/dist/domains/metrics/components/breakdown/breakdown-models-tab.cjs.js +1 -1
  448. package/dist/domains/metrics/components/breakdown/breakdown-models-tab.es.js +1 -1
  449. package/dist/domains/metrics/components/breakdown/breakdown-name.cjs.js +22 -0
  450. package/dist/domains/metrics/components/breakdown/breakdown-name.cjs.js.map +1 -0
  451. package/dist/domains/metrics/components/breakdown/breakdown-name.d.ts +1 -0
  452. package/dist/domains/metrics/components/breakdown/breakdown-name.es.js +21 -0
  453. package/dist/domains/metrics/components/breakdown/breakdown-name.es.js.map +1 -0
  454. package/dist/domains/metrics/components/breakdown/breakdown-not-priced.cjs.js +13 -0
  455. package/dist/domains/metrics/components/breakdown/breakdown-not-priced.cjs.js.map +1 -0
  456. package/dist/domains/metrics/components/breakdown/breakdown-not-priced.d.ts +1 -0
  457. package/dist/domains/metrics/components/breakdown/breakdown-not-priced.es.js +12 -0
  458. package/dist/domains/metrics/components/breakdown/breakdown-not-priced.es.js.map +1 -0
  459. package/dist/domains/metrics/components/breakdown/breakdown-projects-first.cjs.js +1 -1
  460. package/dist/domains/metrics/components/breakdown/breakdown-projects-first.es.js +1 -1
  461. package/dist/domains/metrics/components/breakdown/breakdown-row-mark.cjs.js +26 -13
  462. package/dist/domains/metrics/components/breakdown/breakdown-row-mark.cjs.js.map +1 -1
  463. package/dist/domains/metrics/components/breakdown/breakdown-row-mark.es.js +25 -14
  464. package/dist/domains/metrics/components/breakdown/breakdown-row-mark.es.js.map +1 -1
  465. package/dist/domains/metrics/components/breakdown/breakdown-row-name.cjs.js +10 -13
  466. package/dist/domains/metrics/components/breakdown/breakdown-row-name.cjs.js.map +1 -1
  467. package/dist/domains/metrics/components/breakdown/breakdown-row-name.es.js +11 -14
  468. package/dist/domains/metrics/components/breakdown/breakdown-row-name.es.js.map +1 -1
  469. package/dist/domains/metrics/components/breakdown/breakdown-tab-body.cjs.js +1 -1
  470. package/dist/domains/metrics/components/breakdown/breakdown-tab-body.es.js +1 -1
  471. package/dist/domains/metrics/components/breakdown/breakdown-table.cjs.js +5 -5
  472. package/dist/domains/metrics/components/breakdown/breakdown-table.es.js +5 -5
  473. package/dist/domains/metrics/components/breakdown/breakdown-trace-tab.cjs.js +1 -1
  474. package/dist/domains/metrics/components/breakdown/breakdown-trace-tab.es.js +1 -1
  475. package/dist/domains/metrics/components/breakdown/breakdown-trend-text.cjs.js +25 -0
  476. package/dist/domains/metrics/components/breakdown/breakdown-trend-text.cjs.js.map +1 -0
  477. package/dist/domains/metrics/components/breakdown/breakdown-trend-text.d.ts +1 -0
  478. package/dist/domains/metrics/components/breakdown/breakdown-trend-text.es.js +24 -0
  479. package/dist/domains/metrics/components/breakdown/breakdown-trend-text.es.js.map +1 -0
  480. package/dist/domains/metrics/components/breakdown-card.cjs.js +3 -3
  481. package/dist/domains/metrics/components/breakdown-card.es.js +3 -3
  482. package/dist/domains/metrics/components/card-action-buttons.cjs.js +43 -3
  483. package/dist/domains/metrics/components/card-action-buttons.cjs.js.map +1 -1
  484. package/dist/domains/metrics/components/card-action-buttons.es.js +42 -5
  485. package/dist/domains/metrics/components/card-action-buttons.es.js.map +1 -1
  486. package/dist/domains/metrics/components/chart-area.cjs.js +1 -1
  487. package/dist/domains/metrics/components/chart-area.es.js +1 -1
  488. package/dist/domains/metrics/components/chart-card-error.cjs.js +1 -1
  489. package/dist/domains/metrics/components/chart-card-error.es.js +1 -1
  490. package/dist/domains/metrics/components/chart-card.cjs.js +39 -38
  491. package/dist/domains/metrics/components/chart-card.cjs.js.map +1 -1
  492. package/dist/domains/metrics/components/chart-card.es.js +39 -38
  493. package/dist/domains/metrics/components/chart-card.es.js.map +1 -1
  494. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  495. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  496. package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.cjs.js +15 -16
  497. package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.cjs.js.map +1 -1
  498. package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.es.js +16 -16
  499. package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.es.js.map +1 -1
  500. package/dist/domains/metrics/components/distinct-ids-card.cjs.js +0 -1
  501. package/dist/domains/metrics/components/distinct-ids-card.cjs.js.map +1 -1
  502. package/dist/domains/metrics/components/distinct-ids-card.es.js +1 -2
  503. package/dist/domains/metrics/components/distinct-ids-card.es.js.map +1 -1
  504. package/dist/domains/metrics/components/failure-rate-card.cjs.js +11 -14
  505. package/dist/domains/metrics/components/failure-rate-card.cjs.js.map +1 -1
  506. package/dist/domains/metrics/components/failure-rate-card.es.js +11 -14
  507. package/dist/domains/metrics/components/failure-rate-card.es.js.map +1 -1
  508. package/dist/domains/metrics/components/kpi-card.cjs.js +8 -5
  509. package/dist/domains/metrics/components/kpi-card.cjs.js.map +1 -1
  510. package/dist/domains/metrics/components/kpi-card.es.js +8 -5
  511. package/dist/domains/metrics/components/kpi-card.es.js.map +1 -1
  512. package/dist/domains/metrics/components/latency-card.cjs.js +33 -30
  513. package/dist/domains/metrics/components/latency-card.cjs.js.map +1 -1
  514. package/dist/domains/metrics/components/latency-card.es.js +34 -31
  515. package/dist/domains/metrics/components/latency-card.es.js.map +1 -1
  516. package/dist/domains/metrics/components/metrics-grid/metrics-grid.cjs.js +5 -2
  517. package/dist/domains/metrics/components/metrics-grid/metrics-grid.cjs.js.map +1 -1
  518. package/dist/domains/metrics/components/metrics-grid/metrics-grid.es.js +5 -2
  519. package/dist/domains/metrics/components/metrics-grid/metrics-grid.es.js.map +1 -1
  520. package/dist/domains/metrics/components/scores-card.cjs.js +7 -17
  521. package/dist/domains/metrics/components/scores-card.cjs.js.map +1 -1
  522. package/dist/domains/metrics/components/scores-card.es.js +7 -17
  523. package/dist/domains/metrics/components/scores-card.es.js.map +1 -1
  524. package/dist/domains/metrics/components/token-usage-card.cjs.js +29 -26
  525. package/dist/domains/metrics/components/token-usage-card.cjs.js.map +1 -1
  526. package/dist/domains/metrics/components/token-usage-card.es.js +30 -27
  527. package/dist/domains/metrics/components/token-usage-card.es.js.map +1 -1
  528. package/dist/domains/metrics/components/trace-aggregate-card.cjs.js +3 -2
  529. package/dist/domains/metrics/components/trace-aggregate-card.cjs.js.map +1 -1
  530. package/dist/domains/metrics/components/trace-aggregate-card.es.js +3 -2
  531. package/dist/domains/metrics/components/trace-aggregate-card.es.js.map +1 -1
  532. package/dist/domains/metrics/components/trace-volume-card.cjs.js +31 -35
  533. package/dist/domains/metrics/components/trace-volume-card.cjs.js.map +1 -1
  534. package/dist/domains/metrics/components/trace-volume-card.es.js +31 -35
  535. package/dist/domains/metrics/components/trace-volume-card.es.js.map +1 -1
  536. package/dist/domains/metrics/components/usage-card.cjs.js +29 -28
  537. package/dist/domains/metrics/components/usage-card.cjs.js.map +1 -1
  538. package/dist/domains/metrics/components/usage-card.es.js +30 -29
  539. package/dist/domains/metrics/components/usage-card.es.js.map +1 -1
  540. package/dist/domains/metrics/components.cjs.js +6 -5
  541. package/dist/domains/metrics/components.es.js +4 -5
  542. package/dist/domains/metrics/drilldown.cjs.js +1 -1
  543. package/dist/domains/metrics/drilldown.es.js +1 -1
  544. package/dist/domains/metrics/hooks/use-metrics-activity.cjs.js +1 -1
  545. package/dist/domains/metrics/hooks/use-metrics-activity.es.js +1 -1
  546. package/dist/domains/metrics/hooks/use-metrics-latency.cjs.js +1 -1
  547. package/dist/domains/metrics/hooks/use-metrics-latency.es.js +1 -1
  548. package/dist/domains/metrics/hooks/use-metrics-scores.cjs.js +1 -1
  549. package/dist/domains/metrics/hooks/use-metrics-scores.es.js +1 -1
  550. package/dist/domains/metrics/hooks/use-metrics-span-aggregate.cjs.js +1 -1
  551. package/dist/domains/metrics/hooks/use-metrics-span-aggregate.es.js +1 -1
  552. package/dist/domains/metrics/hooks.cjs.js +1 -1
  553. package/dist/domains/metrics/hooks.es.js +1 -1
  554. package/dist/domains/metrics/lib/breakdown-table.cjs.js +2 -2
  555. package/dist/domains/metrics/lib/breakdown-table.es.js +2 -2
  556. package/dist/domains/metrics/lib.cjs.js +2 -2
  557. package/dist/domains/metrics/lib.es.js +2 -2
  558. package/dist/domains/metrics/metrics-filters.cjs.js +1 -1
  559. package/dist/domains/metrics/metrics-filters.es.js +1 -1
  560. package/dist/domains/metrics.cjs.js +14 -13
  561. package/dist/domains/metrics.es.js +12 -13
  562. package/dist/domains/observability/components/observability-header-slot.cjs.js +13 -0
  563. package/dist/domains/observability/components/observability-header-slot.cjs.js.map +1 -0
  564. package/dist/domains/observability/components/observability-header-slot.d.ts +1 -0
  565. package/dist/domains/observability/components/observability-header-slot.es.js +11 -0
  566. package/dist/domains/observability/components/observability-header-slot.es.js.map +1 -0
  567. package/dist/domains/observability/components/observability-histogram.cjs.js +6 -2
  568. package/dist/domains/observability/components/observability-histogram.cjs.js.map +1 -1
  569. package/dist/domains/observability/components/observability-histogram.es.js +6 -2
  570. package/dist/domains/observability/components/observability-histogram.es.js.map +1 -1
  571. package/dist/domains/observability/components/observability-page-layout.cjs.js +19 -5
  572. package/dist/domains/observability/components/observability-page-layout.cjs.js.map +1 -1
  573. package/dist/domains/observability/components/observability-page-layout.es.js +20 -6
  574. package/dist/domains/observability/components/observability-page-layout.es.js.map +1 -1
  575. package/dist/domains/observability/hooks/use-observability-list-filters.cjs.js +75 -18
  576. package/dist/domains/observability/hooks/use-observability-list-filters.cjs.js.map +1 -1
  577. package/dist/domains/observability/hooks/use-observability-list-filters.es.js +76 -19
  578. package/dist/domains/observability/hooks/use-observability-list-filters.es.js.map +1 -1
  579. package/dist/domains/observability/lib/zoom-memory.cjs.js +24 -0
  580. package/dist/domains/observability/lib/zoom-memory.cjs.js.map +1 -0
  581. package/dist/domains/observability/lib/zoom-memory.d.ts +1 -0
  582. package/dist/domains/observability/lib/zoom-memory.es.js +22 -0
  583. package/dist/domains/observability/lib/zoom-memory.es.js.map +1 -0
  584. package/dist/domains/observability/observability-list-url-state.cjs.js +122 -0
  585. package/dist/domains/observability/observability-list-url-state.cjs.js.map +1 -0
  586. package/dist/domains/observability/observability-list-url-state.d.ts +1 -0
  587. package/dist/domains/observability/observability-list-url-state.es.js +111 -0
  588. package/dist/domains/observability/observability-list-url-state.es.js.map +1 -0
  589. package/dist/domains/observability/saved-view-state.cjs.js +292 -0
  590. package/dist/domains/observability/saved-view-state.cjs.js.map +1 -0
  591. package/dist/domains/observability/saved-view-state.d.ts +1 -0
  592. package/dist/domains/observability/saved-view-state.es.js +286 -0
  593. package/dist/domains/observability/saved-view-state.es.js.map +1 -0
  594. package/dist/domains/observability/saved-views/observability-saved-views.cjs.js +3 -0
  595. package/dist/domains/observability/saved-views/observability-saved-views.d.ts +1 -0
  596. package/dist/domains/observability/saved-views/observability-saved-views.es.js +1 -0
  597. package/dist/domains/observability/saved-views/saved-views-provider.cjs.js +18 -0
  598. package/dist/domains/observability/saved-views/saved-views-provider.cjs.js.map +1 -0
  599. package/dist/domains/observability/saved-views/saved-views-provider.d.ts +1 -0
  600. package/dist/domains/observability/saved-views/saved-views-provider.es.js +17 -0
  601. package/dist/domains/observability/saved-views/saved-views-provider.es.js.map +1 -0
  602. package/dist/domains/observability/saved-views/saved-views-source.cjs.js +23 -0
  603. package/dist/domains/observability/saved-views/saved-views-source.cjs.js.map +1 -0
  604. package/dist/domains/observability/saved-views/saved-views-source.d.ts +1 -0
  605. package/dist/domains/observability/saved-views/saved-views-source.es.js +19 -0
  606. package/dist/domains/observability/saved-views/saved-views-source.es.js.map +1 -0
  607. package/dist/domains/observability/saved-views/use-hosted-saved-views.cjs.js +235 -0
  608. package/dist/domains/observability/saved-views/use-hosted-saved-views.cjs.js.map +1 -0
  609. package/dist/domains/observability/saved-views/use-hosted-saved-views.d.ts +1 -0
  610. package/dist/domains/observability/saved-views/use-hosted-saved-views.es.js +232 -0
  611. package/dist/domains/observability/saved-views/use-hosted-saved-views.es.js.map +1 -0
  612. package/dist/domains/observability/saved-views.cjs.js +7 -0
  613. package/dist/domains/observability/saved-views.d.ts +1 -0
  614. package/dist/domains/observability/saved-views.es.js +4 -0
  615. package/dist/domains/observability.cjs.js +6 -0
  616. package/dist/domains/observability.es.js +4 -1
  617. package/dist/domains/scores/components/span-scoring.cjs.js +1 -1
  618. package/dist/domains/scores/components/span-scoring.es.js +1 -1
  619. package/dist/domains/scores/components/trace-scores-list.cjs.js +1 -1
  620. package/dist/domains/scores/components/trace-scores-list.es.js +1 -1
  621. package/dist/domains/scores/components/trace-scores-tab.cjs.js +1 -1
  622. package/dist/domains/scores/components/trace-scores-tab.es.js +1 -1
  623. package/dist/domains/skills/skill-simple-form.cjs.js +1 -1
  624. package/dist/domains/skills/skill-simple-form.es.js +1 -1
  625. package/dist/domains/spans/components/spans-explorer-body.cjs.js +64 -18
  626. package/dist/domains/spans/components/spans-explorer-body.cjs.js.map +1 -1
  627. package/dist/domains/spans/components/spans-explorer-body.es.js +64 -18
  628. package/dist/domains/spans/components/spans-explorer-body.es.js.map +1 -1
  629. package/dist/domains/spans/components/spans-filter-bar.cjs.js +6 -5
  630. package/dist/domains/spans/components/spans-filter-bar.cjs.js.map +1 -1
  631. package/dist/domains/spans/components/spans-filter-bar.es.js +6 -5
  632. package/dist/domains/spans/components/spans-filter-bar.es.js.map +1 -1
  633. package/dist/domains/spans/hooks/use-spans-filter-bar.cjs.js +15 -3
  634. package/dist/domains/spans/hooks/use-spans-filter-bar.cjs.js.map +1 -1
  635. package/dist/domains/spans/hooks/use-spans-filter-bar.es.js +15 -3
  636. package/dist/domains/spans/hooks/use-spans-filter-bar.es.js.map +1 -1
  637. package/dist/domains/spans/span-filters.cjs.js +53 -14
  638. package/dist/domains/spans/span-filters.cjs.js.map +1 -1
  639. package/dist/domains/spans/span-filters.es.js +52 -15
  640. package/dist/domains/spans/span-filters.es.js.map +1 -1
  641. package/dist/domains/spans/span-list-row.cjs.js +6 -1
  642. package/dist/domains/spans/span-list-row.cjs.js.map +1 -1
  643. package/dist/domains/spans/span-list-row.es.js +6 -1
  644. package/dist/domains/spans/span-list-row.es.js.map +1 -1
  645. package/dist/domains/threads/components/threads-explorer-body.cjs.js +45 -12
  646. package/dist/domains/threads/components/threads-explorer-body.cjs.js.map +1 -1
  647. package/dist/domains/threads/components/threads-explorer-body.es.js +46 -12
  648. package/dist/domains/threads/components/threads-explorer-body.es.js.map +1 -1
  649. package/dist/domains/threads/components/threads-filter-bar.cjs.js +3 -3
  650. package/dist/domains/threads/components/threads-filter-bar.es.js +3 -3
  651. package/dist/domains/threads/hooks/use-threads-filter-bar.cjs.js +14 -3
  652. package/dist/domains/threads/hooks/use-threads-filter-bar.cjs.js.map +1 -1
  653. package/dist/domains/threads/hooks/use-threads-filter-bar.es.js +14 -3
  654. package/dist/domains/threads/hooks/use-threads-filter-bar.es.js.map +1 -1
  655. package/dist/domains/threads/thread-filters.cjs.js +26 -13
  656. package/dist/domains/threads/thread-filters.cjs.js.map +1 -1
  657. package/dist/domains/threads/thread-filters.es.js +26 -13
  658. package/dist/domains/threads/thread-filters.es.js.map +1 -1
  659. package/dist/domains/threads/thread-list-row.cjs.js +2 -0
  660. package/dist/domains/threads/thread-list-row.cjs.js.map +1 -1
  661. package/dist/domains/threads/thread-list-row.es.js +2 -0
  662. package/dist/domains/threads/thread-list-row.es.js.map +1 -1
  663. package/dist/domains/traces/components/columns-menu/columns-menu.cjs.js +24 -19
  664. package/dist/domains/traces/components/columns-menu/columns-menu.cjs.js.map +1 -1
  665. package/dist/domains/traces/components/columns-menu/columns-menu.es.js +25 -20
  666. package/dist/domains/traces/components/columns-menu/columns-menu.es.js.map +1 -1
  667. package/dist/domains/traces/components/feedback-thread.cjs.js +1 -1
  668. package/dist/domains/traces/components/feedback-thread.es.js +1 -1
  669. package/dist/domains/traces/components/span-data-panel-view.cjs.js +12 -2
  670. package/dist/domains/traces/components/span-data-panel-view.cjs.js.map +1 -1
  671. package/dist/domains/traces/components/span-data-panel-view.es.js +12 -2
  672. package/dist/domains/traces/components/span-data-panel-view.es.js.map +1 -1
  673. package/dist/domains/traces/components/span-outcome.utils.cjs.js +1 -1
  674. package/dist/domains/traces/components/span-outcome.utils.es.js +1 -1
  675. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +1 -1
  676. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +1 -1
  677. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
  678. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
  679. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +2 -2
  680. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +2 -2
  681. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +3 -3
  682. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +3 -3
  683. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +1 -1
  684. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +1 -1
  685. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
  686. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
  687. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +1 -1
  688. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +1 -1
  689. package/dist/domains/traces/components/span-payload/span-processor-mutations.cjs.js +2 -2
  690. package/dist/domains/traces/components/span-payload/span-processor-mutations.es.js +2 -2
  691. package/dist/domains/traces/components/span-payload/span-tools-section.cjs.js +1 -1
  692. package/dist/domains/traces/components/span-payload/span-tools-section.es.js +1 -1
  693. package/dist/domains/traces/components/span-prompt-changes.cjs.js +1 -1
  694. package/dist/domains/traces/components/span-prompt-changes.es.js +1 -1
  695. package/dist/domains/traces/components/trace-columns-menu.cjs.js +2 -1
  696. package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
  697. package/dist/domains/traces/components/trace-columns-menu.es.js +2 -1
  698. package/dist/domains/traces/components/trace-columns-menu.es.js.map +1 -1
  699. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +9 -2
  700. package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
  701. package/dist/domains/traces/components/trace-data-panel-view.es.js +9 -2
  702. package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
  703. package/dist/domains/traces/components/trace-span-panel.cjs.js +2 -1
  704. package/dist/domains/traces/components/trace-span-panel.cjs.js.map +1 -1
  705. package/dist/domains/traces/components/trace-span-panel.es.js +2 -1
  706. package/dist/domains/traces/components/trace-span-panel.es.js.map +1 -1
  707. package/dist/domains/traces/components/trace-span-timeline-markers.cjs.js +120 -0
  708. package/dist/domains/traces/components/trace-span-timeline-markers.cjs.js.map +1 -0
  709. package/dist/domains/traces/components/trace-span-timeline-markers.d.ts +1 -0
  710. package/dist/domains/traces/components/trace-span-timeline-markers.es.js +119 -0
  711. package/dist/domains/traces/components/trace-span-timeline-markers.es.js.map +1 -0
  712. package/dist/domains/traces/components/trace-span-timeline.cjs.js +8 -5
  713. package/dist/domains/traces/components/trace-span-timeline.cjs.js.map +1 -1
  714. package/dist/domains/traces/components/trace-span-timeline.es.js +8 -5
  715. package/dist/domains/traces/components/trace-span-timeline.es.js.map +1 -1
  716. package/dist/domains/traces/components/trace-time-range-chip.cjs.js +5 -5
  717. package/dist/domains/traces/components/trace-time-range-chip.cjs.js.map +1 -1
  718. package/dist/domains/traces/components/trace-time-range-chip.es.js +5 -5
  719. package/dist/domains/traces/components/trace-time-range-chip.es.js.map +1 -1
  720. package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.cjs.js +15 -11
  721. package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.cjs.js.map +1 -1
  722. package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.es.js +15 -12
  723. package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.es.js.map +1 -1
  724. package/dist/domains/traces/components/traces-explorer/traces-explorer-context.cjs.js +4 -3
  725. package/dist/domains/traces/components/traces-explorer/traces-explorer-context.cjs.js.map +1 -1
  726. package/dist/domains/traces/components/traces-explorer/traces-explorer-context.es.js +4 -3
  727. package/dist/domains/traces/components/traces-explorer/traces-explorer-context.es.js.map +1 -1
  728. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.cjs.js +5 -4
  729. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.cjs.js.map +1 -1
  730. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.es.js +5 -4
  731. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.es.js.map +1 -1
  732. package/dist/domains/traces/components/traces-explorer/traces-explorer-histogram.cjs.js +13 -5
  733. package/dist/domains/traces/components/traces-explorer/traces-explorer-histogram.cjs.js.map +1 -1
  734. package/dist/domains/traces/components/traces-explorer/traces-explorer-histogram.es.js +13 -5
  735. package/dist/domains/traces/components/traces-explorer/traces-explorer-histogram.es.js.map +1 -1
  736. package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.cjs.js +5 -2
  737. package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.cjs.js.map +1 -1
  738. package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.es.js +5 -2
  739. package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.es.js.map +1 -1
  740. package/dist/domains/traces/components/traces-explorer/traces-explorer-list.cjs.js +7 -11
  741. package/dist/domains/traces/components/traces-explorer/traces-explorer-list.cjs.js.map +1 -1
  742. package/dist/domains/traces/components/traces-explorer/traces-explorer-list.es.js +7 -11
  743. package/dist/domains/traces/components/traces-explorer/traces-explorer-list.es.js.map +1 -1
  744. package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.cjs.js +3 -1
  745. package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.cjs.js.map +1 -1
  746. package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.es.js +3 -1
  747. package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.es.js.map +1 -1
  748. package/dist/domains/traces/components/traces-explorer/traces-explorer-root.cjs.js +51 -5
  749. package/dist/domains/traces/components/traces-explorer/traces-explorer-root.cjs.js.map +1 -1
  750. package/dist/domains/traces/components/traces-explorer/traces-explorer-root.es.js +51 -5
  751. package/dist/domains/traces/components/traces-explorer/traces-explorer-root.es.js.map +1 -1
  752. package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.cjs.js +20 -0
  753. package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.cjs.js.map +1 -0
  754. package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.d.ts +1 -0
  755. package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.es.js +19 -0
  756. package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.es.js.map +1 -0
  757. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.cjs.js +10 -4
  758. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.cjs.js.map +1 -1
  759. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.es.js +10 -4
  760. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.es.js.map +1 -1
  761. package/dist/domains/traces/components/traces-explorer.cjs.js +4 -1
  762. package/dist/domains/traces/components/traces-explorer.cjs.js.map +1 -1
  763. package/dist/domains/traces/components/traces-explorer.es.js +5 -3
  764. package/dist/domains/traces/components/traces-explorer.es.js.map +1 -1
  765. package/dist/domains/traces/components/traces-list-view-adapter.cjs.js +5 -1
  766. package/dist/domains/traces/components/traces-list-view-adapter.cjs.js.map +1 -1
  767. package/dist/domains/traces/components/traces-list-view-adapter.es.js +5 -1
  768. package/dist/domains/traces/components/traces-list-view-adapter.es.js.map +1 -1
  769. package/dist/domains/traces/components/traces-list-view.cjs.js +53 -18
  770. package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
  771. package/dist/domains/traces/components/traces-list-view.es.js +53 -18
  772. package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
  773. package/dist/domains/traces/components/traces-page-skeleton.cjs.js +1 -1
  774. package/dist/domains/traces/components/traces-page-skeleton.es.js +1 -1
  775. package/dist/domains/traces/trace-filters.cjs.js +5 -1
  776. package/dist/domains/traces/trace-filters.es.js +1 -1
  777. package/dist/domains/traces/trace-list-columns.cjs.js +48 -9
  778. package/dist/domains/traces/trace-list-columns.cjs.js.map +1 -1
  779. package/dist/domains/traces/trace-list-columns.es.js +48 -9
  780. package/dist/domains/traces/trace-list-columns.es.js.map +1 -1
  781. package/dist/domains/traces/trace-query-filters.cjs.js +1 -1
  782. package/dist/domains/traces/trace-query-filters.es.js +1 -1
  783. package/dist/domains/traces/utils/timeline-markers.cjs.js +34 -0
  784. package/dist/domains/traces/utils/timeline-markers.cjs.js.map +1 -0
  785. package/dist/domains/traces/utils/timeline-markers.d.ts +1 -0
  786. package/dist/domains/traces/utils/timeline-markers.es.js +33 -0
  787. package/dist/domains/traces/utils/timeline-markers.es.js.map +1 -0
  788. package/dist/domains/traces.cjs.js +5 -1
  789. package/dist/domains/traces.es.js +2 -2
  790. package/dist/domains/workflows/components/workflow-combobox.cjs.js +1 -1
  791. package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
  792. package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +1 -1
  793. package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +1 -1
  794. package/dist/domains/workflows/workflow/workflow-graph.cjs.js +1 -1
  795. package/dist/domains/workflows/workflow/workflow-graph.es.js +1 -1
  796. package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +1 -1
  797. package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +1 -1
  798. package/dist/domains/workspace/components/workspace-markdown-preview.cjs.js +1 -1
  799. package/dist/domains/workspace/components/workspace-markdown-preview.es.js +1 -1
  800. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +1 -1
  801. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +1 -1
  802. package/dist/{filter-bar-chip-B3pgpngW.js → filter-bar-chip-7O02P9Vk.js} +27 -9
  803. package/dist/filter-bar-chip-7O02P9Vk.js.map +1 -0
  804. package/dist/{filter-bar-chip-CyTAmjt6.cjs → filter-bar-chip-BUyMf8XQ.cjs} +40 -22
  805. package/dist/filter-bar-chip-BUyMf8XQ.cjs.map +1 -0
  806. package/dist/layout/tabbed-container.cjs.js +1 -1
  807. package/dist/layout/tabbed-container.es.js +1 -1
  808. package/dist/lib/form/json-schema-to-zod-runtime.cjs.js +4 -4
  809. package/dist/lib/form/json-schema-to-zod-runtime.cjs.js.map +1 -1
  810. package/dist/lib/form/json-schema-to-zod-runtime.es.js +4 -4
  811. package/dist/lib/form/json-schema-to-zod-runtime.es.js.map +1 -1
  812. package/dist/lib/form/zod-provider.cjs.js +5 -1
  813. package/dist/lib/form/zod-provider.cjs.js.map +1 -1
  814. package/dist/lib/form/zod-provider.es.js +5 -1
  815. package/dist/lib/form/zod-provider.es.js.map +1 -1
  816. package/dist/observability-saved-views-Bo5kLN20.js +297 -0
  817. package/dist/observability-saved-views-Bo5kLN20.js.map +1 -0
  818. package/dist/observability-saved-views-CwCii7hh.cjs +302 -0
  819. package/dist/observability-saved-views-CwCii7hh.cjs.map +1 -0
  820. package/dist/primitives/chart-axes.cjs.js +44 -0
  821. package/dist/primitives/chart-axes.cjs.js.map +1 -1
  822. package/dist/primitives/chart-axes.es.js +43 -1
  823. package/dist/primitives/chart-axes.es.js.map +1 -1
  824. package/dist/primitives/chart-frame.cjs.js +5 -3
  825. package/dist/primitives/chart-frame.cjs.js.map +1 -1
  826. package/dist/primitives/chart-frame.es.js +6 -4
  827. package/dist/primitives/chart-frame.es.js.map +1 -1
  828. package/dist/primitives/chart-time-tick.cjs.js +15 -11
  829. package/dist/primitives/chart-time-tick.cjs.js.map +1 -1
  830. package/dist/primitives/chart-time-tick.es.js +16 -12
  831. package/dist/primitives/chart-time-tick.es.js.map +1 -1
  832. package/dist/saved-view-schema-DRJYELfK.cjs +71 -0
  833. package/dist/saved-view-schema-DRJYELfK.cjs.map +1 -0
  834. package/dist/saved-view-schema-eJXlRRel.js +54 -0
  835. package/dist/saved-view-schema-eJXlRRel.js.map +1 -0
  836. package/dist/{span-payload-primitives-D3OO0u6u.cjs → span-payload-primitives-B10Xxmx7.cjs} +4 -4
  837. package/dist/{span-payload-primitives-D3OO0u6u.cjs.map → span-payload-primitives-B10Xxmx7.cjs.map} +1 -1
  838. package/dist/{span-payload-primitives-DTV7eUY-.js → span-payload-primitives-Dyhbqaa7.js} +4 -4
  839. package/dist/{span-payload-primitives-DTV7eUY-.js.map → span-payload-primitives-Dyhbqaa7.js.map} +1 -1
  840. package/dist/src/domains/chat/activity/activity-stretch-line.d.ts +4 -2
  841. package/dist/src/domains/chat/activity/components/activity-fold.d.ts +5 -4
  842. package/dist/src/domains/chat/activity/components/use-fading-edge.d.ts +6 -0
  843. package/dist/src/domains/chat/activity/components/use-rolling-words.d.ts +7 -0
  844. package/dist/src/domains/chat/activity/index.d.ts +2 -1
  845. package/dist/src/domains/chat/activity/model/activity-members.d.ts +1 -0
  846. package/dist/src/domains/chat/activity/model/activity-words.d.ts +3 -0
  847. package/dist/src/domains/chat/messages/renderers/tool-part.d.ts +4 -0
  848. package/dist/src/domains/chat/messages/skill-message.d.ts +3 -1
  849. package/dist/src/domains/chat/tools/badges/mcp-task-chip.d.ts +14 -0
  850. package/dist/src/domains/chat/tools/badges/tool-badge.d.ts +5 -1
  851. package/dist/src/domains/chat/tools/badges/use-mcp-task-progress.d.ts +27 -0
  852. package/dist/src/domains/chat/tools/tool-card.d.ts +5 -1
  853. package/dist/src/domains/dashboards/components/dashboard-grid.d.ts +18 -0
  854. package/dist/src/domains/dashboards/components/dashboard-renderer.d.ts +19 -0
  855. package/dist/src/domains/dashboards/components/view-gate.d.ts +30 -0
  856. package/dist/src/domains/dashboards/components/widget-chrome.d.ts +7 -0
  857. package/dist/src/domains/dashboards/components/widget-controls.d.ts +8 -0
  858. package/dist/src/domains/dashboards/components/widget-error.d.ts +6 -0
  859. package/dist/src/domains/dashboards/hooks/use-dashboard-requests.d.ts +10 -0
  860. package/dist/src/domains/dashboards/hooks/use-scorers.d.ts +66 -0
  861. package/dist/src/domains/dashboards/hooks/use-widget-views.d.ts +18 -0
  862. package/dist/src/domains/dashboards/index.d.ts +19 -0
  863. package/dist/src/domains/dashboards/kinds/index.d.ts +7 -0
  864. package/dist/src/domains/dashboards/kinds/kpis/index.d.ts +13 -0
  865. package/dist/src/domains/dashboards/kinds/kpis/kpis-widget.d.ts +3 -0
  866. package/dist/src/domains/dashboards/kinds/kpis/options.d.ts +35 -0
  867. package/dist/src/domains/dashboards/kinds/scores/index.d.ts +8 -0
  868. package/dist/src/domains/dashboards/kinds/scores/options.d.ts +13 -0
  869. package/dist/src/domains/dashboards/kinds/scores/scores-widget.d.ts +3 -0
  870. package/dist/src/domains/dashboards/kinds/table/index.d.ts +23 -0
  871. package/dist/src/domains/dashboards/kinds/table/table-cells.d.ts +26 -0
  872. package/dist/src/domains/dashboards/kinds/table/table-columns.d.ts +7 -0
  873. package/dist/src/domains/dashboards/kinds/table/table-frame.d.ts +13 -0
  874. package/dist/src/domains/dashboards/kinds/table/table-tabs.d.ts +10 -0
  875. package/dist/src/domains/dashboards/kinds/table/table-view.d.ts +5 -0
  876. package/dist/src/domains/dashboards/kinds/table/table-widget.d.ts +7 -0
  877. package/dist/src/domains/dashboards/kinds/timeseries/index.d.ts +30 -0
  878. package/dist/src/domains/dashboards/kinds/timeseries/timeseries-widget.d.ts +5 -0
  879. package/dist/src/domains/dashboards/lib/answers.d.ts +43 -0
  880. package/dist/src/domains/dashboards/lib/chrome.d.ts +14 -0
  881. package/dist/src/domains/dashboards/lib/definition.d.ts +27 -0
  882. package/dist/src/domains/dashboards/lib/filters.d.ts +6 -0
  883. package/dist/src/domains/dashboards/lib/format.d.ts +7 -0
  884. package/dist/src/domains/dashboards/lib/prepare-widget.d.ts +26 -0
  885. package/dist/src/domains/dashboards/lib/requests.d.ts +95 -0
  886. package/dist/src/domains/dashboards/lib/scores.d.ts +35 -0
  887. package/dist/src/domains/dashboards/lib/table.d.ts +188 -0
  888. package/dist/src/domains/dashboards/lib/timeseries.d.ts +119 -0
  889. package/dist/src/domains/dashboards/lib/values.d.ts +86 -0
  890. package/dist/src/domains/dashboards/metrics-dashboard.d.ts +7 -0
  891. package/dist/src/domains/dashboards/widget-kind.d.ts +31 -0
  892. package/dist/src/domains/logs/components/index.d.ts +1 -0
  893. package/dist/src/domains/logs/components/logs-saved-views.d.ts +4 -0
  894. package/dist/src/domains/logs/log-filters.d.ts +8 -0
  895. package/dist/src/domains/metrics/components/agent-runs-card.d.ts +10 -3
  896. package/dist/src/domains/metrics/components/breakdown/breakdown-name.d.ts +13 -0
  897. package/dist/src/domains/metrics/components/breakdown/breakdown-not-priced.d.ts +2 -0
  898. package/dist/src/domains/metrics/components/breakdown/breakdown-row-mark.d.ts +17 -4
  899. package/dist/src/domains/metrics/components/breakdown/breakdown-trend-text.d.ts +9 -0
  900. package/dist/src/domains/metrics/components/card-action-buttons.d.ts +9 -0
  901. package/dist/src/domains/metrics/components/chart-card.d.ts +33 -21
  902. package/dist/src/domains/metrics/components/distinct-ids/distinct-ids-chart.d.ts +0 -1
  903. package/dist/src/domains/metrics/components/failure-rate-card.d.ts +5 -2
  904. package/dist/src/domains/metrics/components/index.d.ts +1 -2
  905. package/dist/src/domains/metrics/components/metrics-grid/metrics-grid.d.ts +4 -1
  906. package/dist/src/domains/metrics/components/trace-aggregate-card.d.ts +1 -1
  907. package/dist/src/domains/observability/components/observability-header-slot.d.ts +6 -0
  908. package/dist/src/domains/observability/components/observability-histogram.d.ts +1 -1
  909. package/dist/src/domains/observability/hooks/use-observability-list-filters.d.ts +21 -5
  910. package/dist/src/domains/observability/index.d.ts +2 -0
  911. package/dist/src/domains/observability/lib/zoom-memory.d.ts +19 -0
  912. package/dist/src/domains/observability/observability-list-url-state.d.ts +39 -0
  913. package/dist/src/domains/observability/saved-view-state.d.ts +46 -0
  914. package/dist/src/domains/observability/saved-views/index.d.ts +7 -0
  915. package/dist/src/domains/observability/saved-views/observability-saved-views.d.ts +22 -0
  916. package/dist/src/domains/observability/saved-views/saved-views-provider.d.ts +15 -0
  917. package/dist/src/domains/observability/saved-views/saved-views-source.d.ts +41 -0
  918. package/dist/src/domains/observability/saved-views/use-hosted-saved-views.d.ts +34 -0
  919. package/dist/src/domains/spans/components/spans-explorer-body.d.ts +4 -1
  920. package/dist/src/domains/spans/components/spans-filter-bar.d.ts +3 -1
  921. package/dist/src/domains/spans/hooks/use-spans-filter-bar.d.ts +1 -1
  922. package/dist/src/domains/spans/hooks/use-spans-list-source.d.ts +3 -0
  923. package/dist/src/domains/spans/span-filters.d.ts +16 -5
  924. package/dist/src/domains/threads/components/threads-explorer-body.d.ts +4 -1
  925. package/dist/src/domains/threads/thread-filters.d.ts +6 -5
  926. package/dist/src/domains/traces/components/columns-menu/columns-menu.d.ts +3 -3
  927. package/dist/src/domains/traces/components/trace-data-panel-view.d.ts +7 -1
  928. package/dist/src/domains/traces/components/trace-span-panel.d.ts +2 -1
  929. package/dist/src/domains/traces/components/trace-span-timeline-markers.d.ts +5 -0
  930. package/dist/src/domains/traces/components/trace-span-timeline.d.ts +6 -1
  931. package/dist/src/domains/traces/components/trace-time-range-chip.d.ts +3 -1
  932. package/dist/src/domains/traces/components/traces-explorer/index.d.ts +4 -1
  933. package/dist/src/domains/traces/components/traces-explorer/traces-explorer-actions.d.ts +5 -5
  934. package/dist/src/domains/traces/components/traces-explorer/traces-explorer-context.d.ts +11 -1
  935. package/dist/src/domains/traces/components/traces-explorer/traces-explorer-saved-views.d.ts +7 -0
  936. package/dist/src/domains/traces/components/traces-list-view.d.ts +20 -7
  937. package/dist/src/domains/traces/hooks/use-traces-list-source.d.ts +5 -0
  938. package/dist/src/domains/traces/trace-filters.d.ts +27 -3
  939. package/dist/src/domains/traces/trace-list-columns.d.ts +16 -6
  940. package/dist/src/domains/traces/utils/timeline-markers.d.ts +25 -0
  941. package/dist/src/domains/workflows/context/use-persisted-workflow-run.d.ts +2 -0
  942. package/dist/src/domains/workflows/workflow/input/processor-input.d.ts +5 -535
  943. package/dist/src/domains/workflows/workflow/use-workflow-trigger.d.ts +1 -1
  944. package/dist/src/ds/components/AgentIndicator/agent-glyph.d.ts +4 -0
  945. package/dist/src/ds/components/AgentIndicator/agent-indicator.d.ts +8 -0
  946. package/dist/src/ds/components/AgentIndicator/animate.d.ts +5 -0
  947. package/dist/src/ds/components/AgentIndicator/index.d.ts +4 -0
  948. package/dist/src/ds/components/AgentIndicator/paint.d.ts +21 -0
  949. package/dist/src/ds/components/AgentIndicator/poses.d.ts +7 -0
  950. package/dist/src/ds/components/AgentIndicator/shapes.d.ts +41 -0
  951. package/dist/src/ds/components/Arrival/arrival.d.ts +11 -0
  952. package/dist/src/ds/components/Arrival/index.d.ts +1 -1
  953. package/dist/src/ds/components/DataList/TracesDataList/traces-data-list-cells.d.ts +12 -0
  954. package/dist/src/ds/components/DataList/TracesDataList/traces-data-list.d.ts +3 -1
  955. package/dist/src/ds/components/FilterBar/types.d.ts +2 -0
  956. package/dist/src/ds/components/MetricsCard/index.d.ts +1 -1
  957. package/dist/src/ds/components/MetricsCard/metrics-card-actions.d.ts +2 -1
  958. package/dist/src/ds/components/MetricsCard/metrics-card-headline.d.ts +13 -0
  959. package/dist/src/ds/components/MetricsCard/metrics-card-title-menu.d.ts +2 -0
  960. package/dist/src/ds/components/MetricsCard/metrics-card-title.d.ts +1 -3
  961. package/dist/src/ds/components/MetricsCard/metrics-card-toolbar.d.ts +3 -3
  962. package/dist/src/ds/components/MetricsCard/metrics-card-total.d.ts +11 -3
  963. package/dist/src/ds/components/MetricsCard/metrics-card.d.ts +2 -9
  964. package/dist/src/ds/components/MetricsCard/metrics-story-data.d.ts +0 -26
  965. package/dist/src/ds/components/MetricsKpiCard/metrics-kpi-card-root.d.ts +5 -2
  966. package/dist/src/ds/components/MetricsLineChart/metrics-line-chart-legend.d.ts +3 -4
  967. package/dist/src/ds/components/MetricsLineChart/metrics-line-chart.d.ts +2 -6
  968. package/dist/src/ds/components/SavedViews/saved-view-editor.d.ts +3 -1
  969. package/dist/src/ds/components/SavedViews/saved-view-picker.d.ts +21 -0
  970. package/dist/src/ds/components/SavedViews/use-saved-views.d.ts +6 -2
  971. package/dist/src/ds/components/ai/activity/activity.d.ts +12 -7
  972. package/dist/src/ds/components/ai/activity/index.d.ts +1 -0
  973. package/dist/src/ds/components/ai/activity/presets/signal-activity.d.ts +4 -1
  974. package/dist/src/ds/components/ai/activity/use-relative-paths.d.ts +3 -0
  975. package/dist/src/ds/components/ai/message-reveal/message-reveal.d.ts +2 -1
  976. package/dist/src/ds/components/ai/tool-call/tool-presentation.d.ts +4 -0
  977. package/dist/src/ds/primitives/chart-axes.d.ts +24 -0
  978. package/dist/src/ds/primitives/chart-frame.d.ts +2 -1
  979. package/dist/src/ds/primitives/chart-time-tick.d.ts +7 -4
  980. package/dist/src/lib/string.d.ts +1 -0
  981. package/dist/{string-OAgeMRQ5.js → string-CNKDIc_4.js} +6 -2
  982. package/dist/string-CNKDIc_4.js.map +1 -0
  983. package/dist/{string-CymY0aJ9.cjs → string-DdJJdCv2.cjs} +11 -1
  984. package/dist/string-DdJJdCv2.cjs.map +1 -0
  985. package/dist/style.css +67 -4
  986. package/dist/{tabbed-container-x2mfK07d.js → tabbed-container-BKUqfEKy.js} +2 -2
  987. package/dist/{tabbed-container-x2mfK07d.js.map → tabbed-container-BKUqfEKy.js.map} +1 -1
  988. package/dist/{tabbed-container-CBTb0LgE.cjs → tabbed-container-CFEImJOK.cjs} +2 -2
  989. package/dist/{tabbed-container-CBTb0LgE.cjs.map → tabbed-container-CFEImJOK.cjs.map} +1 -1
  990. package/dist/{tool-approval-6E73C0r6.cjs → tool-approval-BfjoSNOC.cjs} +4 -4
  991. package/dist/{tool-approval-6E73C0r6.cjs.map → tool-approval-BfjoSNOC.cjs.map} +1 -1
  992. package/dist/{tool-approval-BXlro6fV.js → tool-approval-FeuyUUcL.js} +4 -4
  993. package/dist/{tool-approval-BXlro6fV.js.map → tool-approval-FeuyUUcL.js.map} +1 -1
  994. package/dist/{tool-call-CItJ8KLA.js → tool-call-BxYXs9w0.js} +9 -7
  995. package/dist/{tool-call-CItJ8KLA.js.map → tool-call-BxYXs9w0.js.map} +1 -1
  996. package/dist/{tool-call-Dq9xF3WD.cjs → tool-call-CvilN9ti.cjs} +9 -7
  997. package/dist/{tool-call-Dq9xF3WD.cjs.map → tool-call-CvilN9ti.cjs.map} +1 -1
  998. package/dist/{tool-card-o5u4YCR0.cjs → tool-card-B7O8AsRl.cjs} +9 -5
  999. package/dist/tool-card-B7O8AsRl.cjs.map +1 -0
  1000. package/dist/{tool-card-Bd8weXze.js → tool-card-ELW898uw.js} +9 -5
  1001. package/dist/tool-card-ELW898uw.js.map +1 -0
  1002. package/dist/{tool-presentation-D2uUj1AB.cjs → tool-presentation-BLErsb7c.cjs} +38 -40
  1003. package/dist/tool-presentation-BLErsb7c.cjs.map +1 -0
  1004. package/dist/{tool-presentation-DKfIKLQy.js → tool-presentation-BSZYIWx2.js} +38 -40
  1005. package/dist/tool-presentation-BSZYIWx2.js.map +1 -0
  1006. package/dist/{trace-filters-C27yWcan.js → trace-filters-BJaebsxJ.js} +78 -11
  1007. package/dist/trace-filters-BJaebsxJ.js.map +1 -0
  1008. package/dist/{trace-filters-BpeBUjCb.cjs → trace-filters-BNEZ31HX.cjs} +100 -9
  1009. package/dist/trace-filters-BNEZ31HX.cjs.map +1 -0
  1010. package/dist/types-CP7wbYua.cjs.map +1 -1
  1011. package/dist/types-DiiL5mTO.js.map +1 -1
  1012. package/dist/utils/string.cjs.js +2 -1
  1013. package/dist/utils/string.es.js +1 -1
  1014. package/package.json +14 -14
  1015. package/dist/Arrival-Dm6Vgn78.cjs.map +0 -1
  1016. package/dist/Arrival-NpBOyV52.js.map +0 -1
  1017. package/dist/DataList-Cmk08jUV.cjs.map +0 -1
  1018. package/dist/DataList-Ve3omCXT.js.map +0 -1
  1019. package/dist/DateTimeRangePicker-ByMbLdom.js.map +0 -1
  1020. package/dist/DateTimeRangePicker-DGbH5WOn.cjs.map +0 -1
  1021. package/dist/FilterBar-Dk3QEuT6.js.map +0 -1
  1022. package/dist/FilterBar-gEvoWDXA.cjs.map +0 -1
  1023. package/dist/MetricsCard-C9GWgT58.js.map +0 -1
  1024. package/dist/MetricsCard-Dly_H3oX.cjs.map +0 -1
  1025. package/dist/MetricsLineChart-2m4LVL1N.cjs.map +0 -1
  1026. package/dist/MetricsLineChart-DKzuRU2q.js.map +0 -1
  1027. package/dist/MetricsStackedBarChart-DJB4aByt.js.map +0 -1
  1028. package/dist/MetricsStackedBarChart-NATtwA_W.cjs.map +0 -1
  1029. package/dist/activity-QyLJcBKc.cjs.map +0 -1
  1030. package/dist/activity-ihrl0JtH.js.map +0 -1
  1031. package/dist/combobox-C-E7_q4j.cjs.map +0 -1
  1032. package/dist/combobox-CDS2pBqz.js.map +0 -1
  1033. package/dist/domains/metrics/components/metrics-kpis.cjs.js +0 -106
  1034. package/dist/domains/metrics/components/metrics-kpis.cjs.js.map +0 -1
  1035. package/dist/domains/metrics/components/metrics-kpis.d.ts +0 -1
  1036. package/dist/domains/metrics/components/metrics-kpis.es.js +0 -105
  1037. package/dist/domains/metrics/components/metrics-kpis.es.js.map +0 -1
  1038. package/dist/filter-bar-chip-B3pgpngW.js.map +0 -1
  1039. package/dist/filter-bar-chip-CyTAmjt6.cjs.map +0 -1
  1040. package/dist/src/domains/metrics/components/metrics-kpis.d.ts +0 -2
  1041. package/dist/src/ds/components/MetricsCard/metrics-card-description.d.ts +0 -4
  1042. package/dist/src/ds/components/MetricsCard/metrics-card-summary.d.ts +0 -8
  1043. package/dist/src/ds/components/MetricsCard/metrics-card-tabs.d.ts +0 -16
  1044. package/dist/src/ds/components/MetricsCard/metrics-card-title-and-description.d.ts +0 -16
  1045. package/dist/string-CymY0aJ9.cjs.map +0 -1
  1046. package/dist/string-OAgeMRQ5.js.map +0 -1
  1047. package/dist/tool-card-Bd8weXze.js.map +0 -1
  1048. package/dist/tool-card-o5u4YCR0.cjs.map +0 -1
  1049. package/dist/tool-presentation-D2uUj1AB.cjs.map +0 -1
  1050. package/dist/tool-presentation-DKfIKLQy.js.map +0 -1
  1051. package/dist/trace-filters-BpeBUjCb.cjs.map +0 -1
  1052. package/dist/trace-filters-C27yWcan.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"traces-explorer-list-provider.es.js","names":[],"sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-list-provider.tsx"],"sourcesContent":["import { memo, useMemo } from 'react';\nimport type { ReactNode } from 'react';\nimport { useTracesListSource } from '../../hooks/use-traces-list-source';\nimport { hasTraceColumn } from '../../trace-list-columns';\nimport { buildTracesLegacyFilters, buildTracesQueryRequest, DEFAULT_TRACES_SORT } from './traces-explorer-actions';\nimport type { TracesSort } from './traces-explorer-actions';\nimport {\n TracesListContext,\n TracesListFetchingContext,\n useTraceUsageColumns,\n useTracesConfig,\n useTracesFilters,\n} from './traces-explorer-context';\nimport type { TracesListContextValue } from './traces-explorer-context';\n\ntype TracesListProviderProps = {\n sort: TracesSort;\n onSortChange: (next: TracesSort) => void;\n children: ReactNode;\n};\n\n/**\n * Owns the list query and its poll clock. Its own memoized component so a poll tick re-renders\n * only list consumers, and a selection change doesn't re-run the list query hooks.\n */\nexport const TracesListProvider = memo(function TracesListProvider({\n sort: hostSort,\n onSortChange,\n children,\n}: TracesListProviderProps) {\n const { withQueryTrace, withRootDuration, withTimeToFirstChunkSort, withDeltaPolling, isCapabilitiesLoading } =\n useTracesConfig();\n const { filters, dateFrom, dateTo } = useTracesFilters();\n const { displayedPreferences } = useTraceUsageColumns();\n // A TTFC sort the store can't run, or on a column that isn't shown, lists newest first instead.\n // The host keeps its raw value, like filters the server can't query.\n const sortable =\n hostSort.field !== 'timeToFirstChunkMs' ||\n (withTimeToFirstChunkSort && hasTraceColumn(displayedPreferences, 'timeToFirstChunk'));\n const sort = sortable ? hostSort : DEFAULT_TRACES_SORT;\n const list = useTracesListSource({\n rolling: !dateTo,\n query: now => buildTracesQueryRequest({ filters, dateFrom, dateTo, withRootDuration, now }),\n orderBy: [sort],\n withQueryTrace,\n withDeltaPolling,\n enabled: !isCapabilitiesLoading,\n legacyFilters: buildTracesLegacyFilters({ filters, dateFrom, dateTo }),\n });\n\n const {\n rows,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n error,\n refetch,\n isFetching,\n autoRefetch,\n } = list;\n const value = useMemo<TracesListContextValue>(\n () => ({\n rows,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n error,\n refetch,\n autoRefetch,\n sort,\n onSortChange,\n }),\n [\n rows,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n error,\n refetch,\n autoRefetch,\n sort,\n onSortChange,\n ],\n );\n\n return (\n <TracesListContext.Provider value={value}>\n <TracesListFetchingContext.Provider value={isFetching}>{children}</TracesListFetchingContext.Provider>\n </TracesListContext.Provider>\n );\n});\n"],"mappings":";;;;;;;;;;;AAyBA,IAAa,qBAAqB,KAAK,SAAS,mBAAmB,EACjE,MAAM,UACN,cACA,YAC0B;CAC1B,MAAM,EAAE,gBAAgB,kBAAkB,0BAA0B,kBAAkB,0BACpF,gBAAgB;CAClB,MAAM,EAAE,SAAS,UAAU,WAAW,iBAAiB;CACvD,MAAM,EAAE,yBAAyB,qBAAqB;CAMtD,MAAM,OAFJ,SAAS,UAAU,wBAClB,4BAA4B,eAAe,sBAAsB,kBAAkB,IAC9D,WAAW;CAWnC,MAAM,EACJ,MACA,WACA,oBACA,aACA,qBACA,OACA,SACA,YACA,gBAnBW,oBAAoB;EAC/B,SAAS,CAAC;EACV,QAAO,QAAO,wBAAwB;GAAE;GAAS;GAAU;GAAQ;GAAkB;EAAI,CAAC;EAC1F,SAAS,CAAC,IAAI;EACd;EACA;EACA,SAAS,CAAC;EACV,eAAe,yBAAyB;GAAE;GAAS;GAAU;EAAO,CAAC;CACvE,CAYI;CACJ,MAAM,QAAQ,eACL;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,IACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CACF;CAEA,OACE,oBAAC,kBAAkB,UAAnB;EAAmC;EACjC,UAAA,oBAAC,0BAA0B,UAA3B;GAAoC,OAAO;GAAa;EAA6C,CAAA;CAC3E,CAAA;AAEhC,CAAC"}
1
+ {"version":3,"file":"traces-explorer-list-provider.es.js","names":[],"sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-list-provider.tsx"],"sourcesContent":["import { memo, useMemo } from 'react';\nimport type { ReactNode } from 'react';\nimport { useTracesListSource } from '../../hooks/use-traces-list-source';\nimport { hasTraceColumn } from '../../trace-list-columns';\nimport { buildTracesLegacyFilters, buildTracesQueryRequest, DEFAULT_TRACES_SORT } from './traces-explorer-actions';\nimport type { TracesSort } from './traces-explorer-actions';\nimport {\n TracesListContext,\n TracesListFetchingContext,\n useTraceUsageColumns,\n useTracesConfig,\n useTracesFilters,\n} from './traces-explorer-context';\nimport type { TracesListContextValue } from './traces-explorer-context';\n\ntype TracesListProviderProps = {\n sort: TracesSort;\n onSortChange: (next: TracesSort) => void;\n children: ReactNode;\n};\n\n/**\n * Owns the list query and its poll clock. Its own memoized component so a poll tick re-renders\n * only list consumers, and a selection change doesn't re-run the list query hooks.\n */\nexport const TracesListProvider = memo(function TracesListProvider({\n sort: hostSort,\n onSortChange,\n children,\n}: TracesListProviderProps) {\n const {\n withQueryTrace,\n withRootDuration,\n withTimeToFirstChunk,\n withTimeToFirstToken,\n withTimeToFirstChunkSort,\n withTimeToFirstTokenSort,\n withOutcomeFields,\n withDeltaPolling,\n isCapabilitiesLoading,\n } = useTracesConfig();\n const { filters, dateFrom, dateTo } = useTracesFilters();\n const { displayedPreferences } = useTraceUsageColumns();\n // A TTFC/TTFT sort the store can't run, or on a column that isn't shown, lists newest first instead.\n // The host keeps its raw value, like filters the server can't query.\n const sortable =\n hostSort.field === 'startedAt' ||\n (hostSort.field === 'timeToFirstChunkMs' &&\n withTimeToFirstChunkSort &&\n hasTraceColumn(displayedPreferences, 'timeToFirstChunk')) ||\n (hostSort.field === 'timeToFirstTokenMs' &&\n withTimeToFirstTokenSort &&\n hasTraceColumn(displayedPreferences, 'timeToFirstToken'));\n const sort = sortable ? hostSort : DEFAULT_TRACES_SORT;\n const list = useTracesListSource({\n rolling: !dateTo,\n query: now =>\n buildTracesQueryRequest({\n filters,\n dateFrom,\n dateTo,\n withRootDuration,\n withTimeToFirstChunk,\n withTimeToFirstToken,\n withOutcomeFields,\n now,\n }),\n orderBy: [sort],\n withQueryTrace,\n withDeltaPolling,\n enabled: !isCapabilitiesLoading,\n legacyFilters: buildTracesLegacyFilters({ filters, dateFrom, dateTo }),\n });\n\n const {\n rows,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n error,\n refetch,\n isFetching,\n autoRefetch,\n } = list;\n const value = useMemo<TracesListContextValue>(\n () => ({\n rows,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n error,\n refetch,\n autoRefetch,\n sort,\n onSortChange,\n }),\n [\n rows,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n error,\n refetch,\n autoRefetch,\n sort,\n onSortChange,\n ],\n );\n\n return (\n <TracesListContext.Provider value={value}>\n <TracesListFetchingContext.Provider value={isFetching}>{children}</TracesListFetchingContext.Provider>\n </TracesListContext.Provider>\n );\n});\n"],"mappings":";;;;;;;;;;;AAyBA,IAAa,qBAAqB,KAAK,SAAS,mBAAmB,EACjE,MAAM,UACN,cACA,YAC0B;CAC1B,MAAM,EACJ,gBACA,kBACA,sBACA,sBACA,0BACA,0BACA,mBACA,kBACA,0BACE,gBAAgB;CACpB,MAAM,EAAE,SAAS,UAAU,WAAW,iBAAiB;CACvD,MAAM,EAAE,yBAAyB,qBAAqB;CAWtD,MAAM,OAPJ,SAAS,UAAU,eAClB,SAAS,UAAU,wBAClB,4BACA,eAAe,sBAAsB,kBAAkB,KACxD,SAAS,UAAU,wBAClB,4BACA,eAAe,sBAAsB,kBAAkB,IACnC,WAAW;CAqBnC,MAAM,EACJ,MACA,WACA,oBACA,aACA,qBACA,OACA,SACA,YACA,gBA7BW,oBAAoB;EAC/B,SAAS,CAAC;EACV,QAAO,QACL,wBAAwB;GACtB;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF,CAAC;EACH,SAAS,CAAC,IAAI;EACd;EACA;EACA,SAAS,CAAC;EACV,eAAe,yBAAyB;GAAE;GAAS;GAAU;EAAO,CAAC;CACvE,CAYI;CACJ,MAAM,QAAQ,eACL;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,IACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CACF;CAEA,OACE,oBAAC,kBAAkB,UAAnB;EAAmC;EACjC,UAAA,oBAAC,0BAA0B,UAA3B;GAAoC,OAAO;GAAa;EAA6C,CAAA;CAC3E,CAAA;AAEhC,CAAC"}
@@ -6,12 +6,15 @@ let react_jsx_runtime = require("react/jsx-runtime");
6
6
  let _mastra_react_hooks_traces = require("@mastra/react/hooks/traces");
7
7
  // src/domains/traces/components/traces-explorer/traces-explorer-list.tsx
8
8
  function TracesExplorerList() {
9
- const { listId, withTimeToFirstChunkSort } = require_domains_traces_components_traces_explorer_traces_explorer_context.useTracesConfig();
9
+ const { listId, withTimeToFirstChunkSort, withTimeToFirstTokenSort } = require_domains_traces_components_traces_explorer_traces_explorer_context.useTracesConfig();
10
10
  const { rows, isLoading, isFetchingNextPage, hasNextPage, setEndOfListElement, autoRefetch, sort, onSortChange } = require_domains_traces_components_traces_explorer_traces_explorer_context.useTracesList();
11
11
  const { filtersApplied } = require_domains_traces_components_traces_explorer_traces_explorer_context.useTracesFilters();
12
12
  const { onFilterByField } = require_domains_traces_components_traces_explorer_use_traces_filter_bar.useTracesFilterBar();
13
13
  const { selectedTraceId, selectTrace, closeTrace } = require_domains_traces_components_traces_explorer_traces_explorer_context.useTracesSelection();
14
14
  const { displayedPreferences, usageEnabled } = require_domains_traces_components_traces_explorer_traces_explorer_context.useTraceUsageColumns();
15
+ const sortableFields = ["startedAt"];
16
+ if (withTimeToFirstChunkSort) sortableFields.push("timeToFirstChunkMs");
17
+ if (withTimeToFirstTokenSort) sortableFields.push("timeToFirstTokenMs");
15
18
  const { data: usageByTraceId } = (0, _mastra_react_hooks_traces.useTraceUsage)({
16
19
  traceIds: rows.map((row) => row.traceId),
17
20
  enabled: usageEnabled,
@@ -32,16 +35,9 @@ function TracesExplorerList() {
32
35
  featuredTraceId: selectedTraceId,
33
36
  columnPreferences: displayedPreferences,
34
37
  usageByTraceId,
35
- createdSort: sort.field === "startedAt" ? sort.direction : void 0,
36
- onSortChange: (direction) => onSortChange({
37
- field: "startedAt",
38
- direction
39
- }),
40
- timeToFirstChunkSort: sort.field === "timeToFirstChunkMs" ? sort.direction : void 0,
41
- onTimeToFirstChunkSortChange: withTimeToFirstChunkSort ? (direction) => onSortChange({
42
- field: "timeToFirstChunkMs",
43
- direction
44
- }) : void 0,
38
+ sort,
39
+ sortableFields,
40
+ onSortChange,
45
41
  onFilterByField,
46
42
  onTraceClick: handleTraceClick
47
43
  });
@@ -1 +1 @@
1
- {"version":3,"file":"traces-explorer-list.cjs.js","names":["useTracesConfig","useTracesList","useTracesFilters","useTracesFilterBar","useTracesSelection","useTraceUsageColumns","useTraceUsage","TracesListView"],"sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-list.tsx"],"sourcesContent":["import { useTraceUsage } from '@mastra/react/hooks/traces';\nimport { TracesListView } from '../traces-list-view';\nimport type { TracesListViewTrace } from '../traces-list-view';\nimport {\n useTraceUsageColumns,\n useTracesConfig,\n useTracesFilters,\n useTracesList,\n useTracesSelection,\n} from './traces-explorer-context';\nimport { useTracesFilterBar } from './use-traces-filter-bar';\n\nexport function TracesExplorerList() {\n const { listId, withTimeToFirstChunkSort } = useTracesConfig();\n const { rows, isLoading, isFetchingNextPage, hasNextPage, setEndOfListElement, autoRefetch, sort, onSortChange } =\n useTracesList();\n const { filtersApplied } = useTracesFilters();\n const { onFilterByField } = useTracesFilterBar();\n const { selectedTraceId, selectTrace, closeTrace } = useTracesSelection();\n const { displayedPreferences, usageEnabled } = useTraceUsageColumns();\n\n const { data: usageByTraceId } = useTraceUsage({\n traceIds: rows.map(row => row.traceId),\n enabled: usageEnabled,\n autoRefetch,\n });\n\n // Clicking the open row closes it; any other row opens.\n const handleTraceClick = (trace: TracesListViewTrace) => {\n if (trace.traceId === selectedTraceId) closeTrace();\n else selectTrace(trace.traceId);\n };\n\n return (\n <TracesListView\n listId={listId}\n traces={rows}\n isLoading={isLoading}\n isFetchingNextPage={isFetchingNextPage}\n hasNextPage={hasNextPage}\n setEndOfListElement={setEndOfListElement}\n filtersApplied={filtersApplied}\n featuredTraceId={selectedTraceId}\n columnPreferences={displayedPreferences}\n usageByTraceId={usageByTraceId}\n createdSort={sort.field === 'startedAt' ? sort.direction : undefined}\n onSortChange={direction => onSortChange({ field: 'startedAt', direction })}\n timeToFirstChunkSort={sort.field === 'timeToFirstChunkMs' ? sort.direction : undefined}\n onTimeToFirstChunkSortChange={\n withTimeToFirstChunkSort ? direction => onSortChange({ field: 'timeToFirstChunkMs', direction }) : undefined\n }\n onFilterByField={onFilterByField}\n onTraceClick={handleTraceClick}\n />\n );\n}\n"],"mappings":";;;;;;;AAYA,SAAgB,qBAAqB;CACnC,MAAM,EAAE,QAAQ,6BAA6BA,0EAAAA,gBAAgB;CAC7D,MAAM,EAAE,MAAM,WAAW,oBAAoB,aAAa,qBAAqB,aAAa,MAAM,iBAChGC,0EAAAA,cAAc;CAChB,MAAM,EAAE,mBAAmBC,0EAAAA,iBAAiB;CAC5C,MAAM,EAAE,oBAAoBC,wEAAAA,mBAAmB;CAC/C,MAAM,EAAE,iBAAiB,aAAa,eAAeC,0EAAAA,mBAAmB;CACxE,MAAM,EAAE,sBAAsB,iBAAiBC,0EAAAA,qBAAqB;CAEpE,MAAM,EAAE,MAAM,oBAAA,GAAmBC,2BAAAA,cAAAA,CAAc;EAC7C,UAAU,KAAK,KAAI,QAAO,IAAI,OAAO;EACrC,SAAS;EACT;CACF,CAAC;CAGD,MAAM,oBAAoB,UAA+B;EACvD,IAAI,MAAM,YAAY,iBAAiB,WAAW;OAC7C,YAAY,MAAM,OAAO;CAChC;CAEA,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,mDAAAA,gBAAD;EACU;EACR,QAAQ;EACG;EACS;EACP;EACQ;EACL;EAChB,iBAAiB;EACjB,mBAAmB;EACH;EAChB,aAAa,KAAK,UAAU,cAAc,KAAK,YAAY,KAAA;EAC3D,eAAc,cAAa,aAAa;GAAE,OAAO;GAAa;EAAU,CAAC;EACzE,sBAAsB,KAAK,UAAU,uBAAuB,KAAK,YAAY,KAAA;EAC7E,8BACE,4BAA2B,cAAa,aAAa;GAAE,OAAO;GAAsB;EAAU,CAAC,IAAI,KAAA;EAEpF;EACjB,cAAc;CACf,CAAA;AAEL"}
1
+ {"version":3,"file":"traces-explorer-list.cjs.js","names":["useTracesConfig","useTracesList","useTracesFilters","useTracesFilterBar","useTracesSelection","useTraceUsageColumns","useTraceUsage","TracesListView"],"sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-list.tsx"],"sourcesContent":["import { useTraceUsage } from '@mastra/react/hooks/traces';\nimport { TracesListView } from '../traces-list-view';\nimport type { TracesListViewTrace } from '../traces-list-view';\nimport type { TracesSortField } from './traces-explorer-actions';\nimport {\n useTraceUsageColumns,\n useTracesConfig,\n useTracesFilters,\n useTracesList,\n useTracesSelection,\n} from './traces-explorer-context';\nimport { useTracesFilterBar } from './use-traces-filter-bar';\n\nexport function TracesExplorerList() {\n const { listId, withTimeToFirstChunkSort, withTimeToFirstTokenSort } = useTracesConfig();\n const { rows, isLoading, isFetchingNextPage, hasNextPage, setEndOfListElement, autoRefetch, sort, onSortChange } =\n useTracesList();\n const { filtersApplied } = useTracesFilters();\n const { onFilterByField } = useTracesFilterBar();\n const { selectedTraceId, selectTrace, closeTrace } = useTracesSelection();\n const { displayedPreferences, usageEnabled } = useTraceUsageColumns();\n const sortableFields: TracesSortField[] = ['startedAt'];\n if (withTimeToFirstChunkSort) sortableFields.push('timeToFirstChunkMs');\n if (withTimeToFirstTokenSort) sortableFields.push('timeToFirstTokenMs');\n\n const { data: usageByTraceId } = useTraceUsage({\n traceIds: rows.map(row => row.traceId),\n enabled: usageEnabled,\n autoRefetch,\n });\n\n // Clicking the open row closes it; any other row opens.\n const handleTraceClick = (trace: TracesListViewTrace) => {\n if (trace.traceId === selectedTraceId) closeTrace();\n else selectTrace(trace.traceId);\n };\n\n return (\n <TracesListView\n listId={listId}\n traces={rows}\n isLoading={isLoading}\n isFetchingNextPage={isFetchingNextPage}\n hasNextPage={hasNextPage}\n setEndOfListElement={setEndOfListElement}\n filtersApplied={filtersApplied}\n featuredTraceId={selectedTraceId}\n columnPreferences={displayedPreferences}\n usageByTraceId={usageByTraceId}\n sort={sort}\n sortableFields={sortableFields}\n onSortChange={onSortChange}\n onFilterByField={onFilterByField}\n onTraceClick={handleTraceClick}\n />\n );\n}\n"],"mappings":";;;;;;;AAaA,SAAgB,qBAAqB;CACnC,MAAM,EAAE,QAAQ,0BAA0B,6BAA6BA,0EAAAA,gBAAgB;CACvF,MAAM,EAAE,MAAM,WAAW,oBAAoB,aAAa,qBAAqB,aAAa,MAAM,iBAChGC,0EAAAA,cAAc;CAChB,MAAM,EAAE,mBAAmBC,0EAAAA,iBAAiB;CAC5C,MAAM,EAAE,oBAAoBC,wEAAAA,mBAAmB;CAC/C,MAAM,EAAE,iBAAiB,aAAa,eAAeC,0EAAAA,mBAAmB;CACxE,MAAM,EAAE,sBAAsB,iBAAiBC,0EAAAA,qBAAqB;CACpE,MAAM,iBAAoC,CAAC,WAAW;CACtD,IAAI,0BAA0B,eAAe,KAAK,oBAAoB;CACtE,IAAI,0BAA0B,eAAe,KAAK,oBAAoB;CAEtE,MAAM,EAAE,MAAM,oBAAA,GAAmBC,2BAAAA,cAAAA,CAAc;EAC7C,UAAU,KAAK,KAAI,QAAO,IAAI,OAAO;EACrC,SAAS;EACT;CACF,CAAC;CAGD,MAAM,oBAAoB,UAA+B;EACvD,IAAI,MAAM,YAAY,iBAAiB,WAAW;OAC7C,YAAY,MAAM,OAAO;CAChC;CAEA,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,mDAAAA,gBAAD;EACU;EACR,QAAQ;EACG;EACS;EACP;EACQ;EACL;EAChB,iBAAiB;EACjB,mBAAmB;EACH;EACV;EACU;EACF;EACG;EACjB,cAAc;CACf,CAAA;AAEL"}
@@ -5,12 +5,15 @@ import { jsx } from "react/jsx-runtime";
5
5
  import { useTraceUsage } from "@mastra/react/hooks/traces";
6
6
  // src/domains/traces/components/traces-explorer/traces-explorer-list.tsx
7
7
  function TracesExplorerList() {
8
- const { listId, withTimeToFirstChunkSort } = useTracesConfig();
8
+ const { listId, withTimeToFirstChunkSort, withTimeToFirstTokenSort } = useTracesConfig();
9
9
  const { rows, isLoading, isFetchingNextPage, hasNextPage, setEndOfListElement, autoRefetch, sort, onSortChange } = useTracesList();
10
10
  const { filtersApplied } = useTracesFilters();
11
11
  const { onFilterByField } = useTracesFilterBar();
12
12
  const { selectedTraceId, selectTrace, closeTrace } = useTracesSelection();
13
13
  const { displayedPreferences, usageEnabled } = useTraceUsageColumns();
14
+ const sortableFields = ["startedAt"];
15
+ if (withTimeToFirstChunkSort) sortableFields.push("timeToFirstChunkMs");
16
+ if (withTimeToFirstTokenSort) sortableFields.push("timeToFirstTokenMs");
14
17
  const { data: usageByTraceId } = useTraceUsage({
15
18
  traceIds: rows.map((row) => row.traceId),
16
19
  enabled: usageEnabled,
@@ -31,16 +34,9 @@ function TracesExplorerList() {
31
34
  featuredTraceId: selectedTraceId,
32
35
  columnPreferences: displayedPreferences,
33
36
  usageByTraceId,
34
- createdSort: sort.field === "startedAt" ? sort.direction : void 0,
35
- onSortChange: (direction) => onSortChange({
36
- field: "startedAt",
37
- direction
38
- }),
39
- timeToFirstChunkSort: sort.field === "timeToFirstChunkMs" ? sort.direction : void 0,
40
- onTimeToFirstChunkSortChange: withTimeToFirstChunkSort ? (direction) => onSortChange({
41
- field: "timeToFirstChunkMs",
42
- direction
43
- }) : void 0,
37
+ sort,
38
+ sortableFields,
39
+ onSortChange,
44
40
  onFilterByField,
45
41
  onTraceClick: handleTraceClick
46
42
  });
@@ -1 +1 @@
1
- {"version":3,"file":"traces-explorer-list.es.js","names":[],"sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-list.tsx"],"sourcesContent":["import { useTraceUsage } from '@mastra/react/hooks/traces';\nimport { TracesListView } from '../traces-list-view';\nimport type { TracesListViewTrace } from '../traces-list-view';\nimport {\n useTraceUsageColumns,\n useTracesConfig,\n useTracesFilters,\n useTracesList,\n useTracesSelection,\n} from './traces-explorer-context';\nimport { useTracesFilterBar } from './use-traces-filter-bar';\n\nexport function TracesExplorerList() {\n const { listId, withTimeToFirstChunkSort } = useTracesConfig();\n const { rows, isLoading, isFetchingNextPage, hasNextPage, setEndOfListElement, autoRefetch, sort, onSortChange } =\n useTracesList();\n const { filtersApplied } = useTracesFilters();\n const { onFilterByField } = useTracesFilterBar();\n const { selectedTraceId, selectTrace, closeTrace } = useTracesSelection();\n const { displayedPreferences, usageEnabled } = useTraceUsageColumns();\n\n const { data: usageByTraceId } = useTraceUsage({\n traceIds: rows.map(row => row.traceId),\n enabled: usageEnabled,\n autoRefetch,\n });\n\n // Clicking the open row closes it; any other row opens.\n const handleTraceClick = (trace: TracesListViewTrace) => {\n if (trace.traceId === selectedTraceId) closeTrace();\n else selectTrace(trace.traceId);\n };\n\n return (\n <TracesListView\n listId={listId}\n traces={rows}\n isLoading={isLoading}\n isFetchingNextPage={isFetchingNextPage}\n hasNextPage={hasNextPage}\n setEndOfListElement={setEndOfListElement}\n filtersApplied={filtersApplied}\n featuredTraceId={selectedTraceId}\n columnPreferences={displayedPreferences}\n usageByTraceId={usageByTraceId}\n createdSort={sort.field === 'startedAt' ? sort.direction : undefined}\n onSortChange={direction => onSortChange({ field: 'startedAt', direction })}\n timeToFirstChunkSort={sort.field === 'timeToFirstChunkMs' ? sort.direction : undefined}\n onTimeToFirstChunkSortChange={\n withTimeToFirstChunkSort ? direction => onSortChange({ field: 'timeToFirstChunkMs', direction }) : undefined\n }\n onFilterByField={onFilterByField}\n onTraceClick={handleTraceClick}\n />\n );\n}\n"],"mappings":";;;;;;AAYA,SAAgB,qBAAqB;CACnC,MAAM,EAAE,QAAQ,6BAA6B,gBAAgB;CAC7D,MAAM,EAAE,MAAM,WAAW,oBAAoB,aAAa,qBAAqB,aAAa,MAAM,iBAChG,cAAc;CAChB,MAAM,EAAE,mBAAmB,iBAAiB;CAC5C,MAAM,EAAE,oBAAoB,mBAAmB;CAC/C,MAAM,EAAE,iBAAiB,aAAa,eAAe,mBAAmB;CACxE,MAAM,EAAE,sBAAsB,iBAAiB,qBAAqB;CAEpE,MAAM,EAAE,MAAM,mBAAmB,cAAc;EAC7C,UAAU,KAAK,KAAI,QAAO,IAAI,OAAO;EACrC,SAAS;EACT;CACF,CAAC;CAGD,MAAM,oBAAoB,UAA+B;EACvD,IAAI,MAAM,YAAY,iBAAiB,WAAW;OAC7C,YAAY,MAAM,OAAO;CAChC;CAEA,OACE,oBAAC,gBAAD;EACU;EACR,QAAQ;EACG;EACS;EACP;EACQ;EACL;EAChB,iBAAiB;EACjB,mBAAmB;EACH;EAChB,aAAa,KAAK,UAAU,cAAc,KAAK,YAAY,KAAA;EAC3D,eAAc,cAAa,aAAa;GAAE,OAAO;GAAa;EAAU,CAAC;EACzE,sBAAsB,KAAK,UAAU,uBAAuB,KAAK,YAAY,KAAA;EAC7E,8BACE,4BAA2B,cAAa,aAAa;GAAE,OAAO;GAAsB;EAAU,CAAC,IAAI,KAAA;EAEpF;EACjB,cAAc;CACf,CAAA;AAEL"}
1
+ {"version":3,"file":"traces-explorer-list.es.js","names":[],"sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-list.tsx"],"sourcesContent":["import { useTraceUsage } from '@mastra/react/hooks/traces';\nimport { TracesListView } from '../traces-list-view';\nimport type { TracesListViewTrace } from '../traces-list-view';\nimport type { TracesSortField } from './traces-explorer-actions';\nimport {\n useTraceUsageColumns,\n useTracesConfig,\n useTracesFilters,\n useTracesList,\n useTracesSelection,\n} from './traces-explorer-context';\nimport { useTracesFilterBar } from './use-traces-filter-bar';\n\nexport function TracesExplorerList() {\n const { listId, withTimeToFirstChunkSort, withTimeToFirstTokenSort } = useTracesConfig();\n const { rows, isLoading, isFetchingNextPage, hasNextPage, setEndOfListElement, autoRefetch, sort, onSortChange } =\n useTracesList();\n const { filtersApplied } = useTracesFilters();\n const { onFilterByField } = useTracesFilterBar();\n const { selectedTraceId, selectTrace, closeTrace } = useTracesSelection();\n const { displayedPreferences, usageEnabled } = useTraceUsageColumns();\n const sortableFields: TracesSortField[] = ['startedAt'];\n if (withTimeToFirstChunkSort) sortableFields.push('timeToFirstChunkMs');\n if (withTimeToFirstTokenSort) sortableFields.push('timeToFirstTokenMs');\n\n const { data: usageByTraceId } = useTraceUsage({\n traceIds: rows.map(row => row.traceId),\n enabled: usageEnabled,\n autoRefetch,\n });\n\n // Clicking the open row closes it; any other row opens.\n const handleTraceClick = (trace: TracesListViewTrace) => {\n if (trace.traceId === selectedTraceId) closeTrace();\n else selectTrace(trace.traceId);\n };\n\n return (\n <TracesListView\n listId={listId}\n traces={rows}\n isLoading={isLoading}\n isFetchingNextPage={isFetchingNextPage}\n hasNextPage={hasNextPage}\n setEndOfListElement={setEndOfListElement}\n filtersApplied={filtersApplied}\n featuredTraceId={selectedTraceId}\n columnPreferences={displayedPreferences}\n usageByTraceId={usageByTraceId}\n sort={sort}\n sortableFields={sortableFields}\n onSortChange={onSortChange}\n onFilterByField={onFilterByField}\n onTraceClick={handleTraceClick}\n />\n );\n}\n"],"mappings":";;;;;;AAaA,SAAgB,qBAAqB;CACnC,MAAM,EAAE,QAAQ,0BAA0B,6BAA6B,gBAAgB;CACvF,MAAM,EAAE,MAAM,WAAW,oBAAoB,aAAa,qBAAqB,aAAa,MAAM,iBAChG,cAAc;CAChB,MAAM,EAAE,mBAAmB,iBAAiB;CAC5C,MAAM,EAAE,oBAAoB,mBAAmB;CAC/C,MAAM,EAAE,iBAAiB,aAAa,eAAe,mBAAmB;CACxE,MAAM,EAAE,sBAAsB,iBAAiB,qBAAqB;CACpE,MAAM,iBAAoC,CAAC,WAAW;CACtD,IAAI,0BAA0B,eAAe,KAAK,oBAAoB;CACtE,IAAI,0BAA0B,eAAe,KAAK,oBAAoB;CAEtE,MAAM,EAAE,MAAM,mBAAmB,cAAc;EAC7C,UAAU,KAAK,KAAI,QAAO,IAAI,OAAO;EACrC,SAAS;EACT;CACF,CAAC;CAGD,MAAM,oBAAoB,UAA+B;EACvD,IAAI,MAAM,YAAY,iBAAiB,WAAW;OAC7C,YAAY,MAAM,OAAO;CAChC;CAEA,OACE,oBAAC,gBAAD;EACU;EACR,QAAQ;EACG;EACS;EACP;EACQ;EACL;EAChB,iBAAiB;EACjB,mBAAmB;EACH;EACV;EACU;EACF;EACG;EACjB,cAAc;CACf,CAAA;AAEL"}
@@ -54,7 +54,8 @@ function TracesExplorerPanel({ onOpenScore, renderCreateDatasetDialog, headerAct
54
54
  const { handlePreviousTrace, handleNextTrace } = require_domains_traces_hooks_use_trace_list_navigation.useTraceListNavigation(rows, traceId, null, selectTrace);
55
55
  const isFullThreadOpen = !!traceId && fullThreadTraceId === traceId;
56
56
  const depth = isFullThreadOpen ? 3 : 2;
57
- const entityType = rows.find((row) => row.traceId === traceId)?.entityType ?? anchorSpan?.entityType;
57
+ const listedRow = rows.find((row) => row.traceId === traceId);
58
+ const entityType = listedRow?.entityType ?? anchorSpan?.entityType;
58
59
  const isAgent = entityType === _mastra_core_observability.EntityType.AGENT;
59
60
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
60
61
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_domains_traces_components_trace_span_panel.TraceSpanPanel, {
@@ -65,6 +66,7 @@ function TracesExplorerPanel({ onOpenScore, renderCreateDatasetDialog, headerAct
65
66
  anchorSpanId,
66
67
  entityType,
67
68
  usage,
69
+ rootStreamingTimings: listedRow,
68
70
  isLoadingSpans,
69
71
  selectedSpanId: spanId ?? null,
70
72
  onClose: () => {
@@ -1 +1 @@
1
- {"version":3,"file":"traces-explorer-panel.cjs.js","names":["useTracesConfig","useTracesList","useTracesSelection","useTraceUsageColumns","useState","useTraceFeedback","useSpanFeedback","useTraceOrBranchSpans","useTraceSpanScores","useTraceUsage","useTraceListNavigation","EntityType","_Fragment","TraceSpanPanel","TraceFeedbackTab","TraceScoresList","SpanFeedbackTab","ScoreDataPanel","TraceAsItemDialog"],"sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-panel.tsx"],"sourcesContent":["import { EntityType } from '@mastra/core/observability';\nimport { useTraceSpanScores } from '@mastra/react/hooks/scores';\nimport { useSpanFeedback, useTraceFeedback, useTraceOrBranchSpans, useTraceUsage } from '@mastra/react/hooks/traces';\nimport { useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { useTraceListNavigation } from '../../hooks/use-trace-list-navigation';\nimport { SpanFeedbackTab } from '../span-feedback-tab';\nimport { TraceFeedbackTab } from '../trace-feedback-tab';\nimport { TraceSpanPanel } from '../trace-span-panel';\nimport type { TraceSpanPanelProps } from '../trace-span-panel';\nimport { useTraceUsageColumns, useTracesConfig, useTracesList, useTracesSelection } from './traces-explorer-context';\nimport { TraceAsItemDialog } from '@/domains/observability/components/trace-as-item-dialog';\nimport { ScoreDataPanel, TraceScoresList } from '@/domains/scores';\n\nexport type TracesExplorerPanelProps = {\n /** Opens a score of one of the full thread's traces (the host owns routing). */\n onOpenScore: (traceId: string, scoreId: string) => void;\n renderCreateDatasetDialog?: ComponentProps<typeof TraceAsItemDialog>['renderCreateDatasetDialog'];\n /** Host integration actions rendered alongside the trace controls. */\n headerActionsSlot?: (args: { traceId: string; spans: TraceSpanPanelProps['spans'] }) => ReactNode;\n /** Builds the href of the dedicated trace page; without it the drawer offers no \"Open trace page\" link. */\n traceHref?: (traceId: string) => string;\n /** Shows the \"Add to dataset\" button next to \"Score trace\". Defaults to `true`. */\n withAddTraceToDataset?: boolean;\n};\n\ntype DatasetDialogTarget = { traceId: string; rootSpanId: string | undefined };\n\nexport function TracesExplorerPanel({\n onOpenScore,\n renderCreateDatasetDialog,\n headerActionsSlot,\n traceHref,\n withAddTraceToDataset = true,\n}: TracesExplorerPanelProps) {\n const { withQueryTrace, withFeedback } = useTracesConfig();\n const { rows, autoRefetch, isLoading: isListLoading } = useTracesList();\n const { selection, selectTrace, closeTrace, selectSpan, setSpanTab, setSpanView, selectScore, highlightSpans } =\n useTracesSelection();\n const { usageEnabled } = useTraceUsageColumns();\n const traceId = selection.traceId;\n const spanId = selection.spanId;\n\n const [datasetDialogTarget, setDatasetDialogTarget] = useState<DatasetDialogTarget | null>(null);\n // Keyed by trace id so selecting another trace (row click, prev/next) falls back to the trace panel.\n const [fullThreadTraceId, setFullThreadTraceId] = useState<string | null>(null);\n\n // Tab badge counts; the tab bodies re-use these first-page queries through React Query's cache.\n const { data: traceFeedbackData } = useTraceFeedback({\n traceId,\n queryOptions: { enabled: withFeedback && !!traceId },\n });\n const { data: spanFeedbackData } = useSpanFeedback({\n traceId,\n spanId,\n queryOptions: { enabled: withFeedback && !!traceId && !!spanId },\n });\n\n const {\n spans,\n anchorSpanId,\n isLoading: isLoadingSpans,\n } = useTraceOrBranchSpans({ traceId: traceId ?? null, listMode: 'traces', anchorSpanId: null });\n const anchorSpan = anchorSpanId\n ? spans?.find(s => s.spanId === anchorSpanId)\n : spans?.find(s => s.parentSpanId == null);\n\n const { data: spanScoresData } = useTraceSpanScores({\n traceId,\n spanId: anchorSpan?.spanId,\n queryOptions: { enabled: !!traceId && !!anchorSpan?.spanId },\n });\n const featuredScore = selection.scoreId\n ? spanScoresData?.scores?.find(score => score.id === selection.scoreId)\n : undefined;\n\n // Same key as the list's usage query when the trace is listed, so React Query serves it from cache.\n // Waits for the list so a deep-linked trace doesn't fetch its own usage before the rows arrive.\n const rowIds = rows.map(row => row.traceId);\n const isListed = !!traceId && rowIds.includes(traceId);\n const { data: usageByTraceId } = useTraceUsage({\n traceIds: isListed ? rowIds : traceId ? [traceId] : [],\n enabled: usageEnabled && !isListLoading,\n autoRefetch,\n });\n const usage = traceId ? usageByTraceId?.get(traceId) : undefined;\n\n const { handlePreviousTrace, handleNextTrace } = useTraceListNavigation(rows, traceId, null, selectTrace);\n\n const isFullThreadOpen = !!traceId && fullThreadTraceId === traceId;\n const depth = isFullThreadOpen ? 3 : 2;\n\n // Only agent traces carry the Messages column, so other traces open the drawer one size\n // smaller, with or without a span open. The listed row knows the entity on click; the root\n // span covers deep-linked traces outside the list.\n const entityType = rows.find(row => row.traceId === traceId)?.entityType ?? anchorSpan?.entityType;\n const isAgent = entityType === EntityType.AGENT;\n const panelSize = spanId ? (isAgent ? 'full' : 'wide') : isAgent ? 'wide' : 'half';\n\n return (\n <>\n <TraceSpanPanel\n title=\"Trace details\"\n size={panelSize}\n traceId={traceId}\n spans={spans}\n anchorSpanId={anchorSpanId}\n entityType={entityType}\n usage={usage}\n isLoadingSpans={isLoadingSpans}\n selectedSpanId={spanId ?? null}\n onClose={() => {\n setFullThreadTraceId(null);\n closeTrace();\n }}\n isFullThreadOpen={isFullThreadOpen}\n withQueryTrace={withQueryTrace}\n withFeedback={withFeedback}\n onOpenScore={onOpenScore}\n onFullThreadOpenChange={open => setFullThreadTraceId(open ? (traceId ?? null) : null)}\n onSpanSelect={id => selectSpan(id ?? null)}\n onSaveAsDatasetItem={withAddTraceToDataset ? setDatasetDialogTarget : undefined}\n initialSpanId={spanId}\n onPrevious={handlePreviousTrace}\n onNext={handleNextTrace}\n showPartialThread\n featuredSpanIds={selection.highlightSpanIds}\n onHighlightSpans={highlightSpans}\n feedbackTabBadge={withFeedback ? (traceFeedbackData?.pagination?.total ?? undefined) : undefined}\n feedbackTabSlot={withFeedback ? ({ traceId: tid }) => <TraceFeedbackTab traceId={tid} /> : undefined}\n scoresTabBadge={spanScoresData?.pagination?.total ?? undefined}\n scoresTabSlot={({ traceId: tid, rootSpanId }) =>\n rootSpanId ? <TraceScoresList traceId={tid} spanId={rootSpanId} onScoreSelect={selectScore} /> : null\n }\n spanView={selection.spanView}\n onSpanViewChange={setSpanView}\n spanActiveTab={selection.spanTab ?? 'details'}\n onSpanTabChange={setSpanTab}\n spanFeedbackTabBadge={withFeedback ? (spanFeedbackData?.pagination?.total ?? undefined) : undefined}\n spanFeedbackTabSlot={\n withFeedback\n ? ({ traceId: tid, spanId: sid }) =>\n tid && sid ? <SpanFeedbackTab key={`${tid}:${sid}`} traceId={tid} spanId={sid} /> : null\n : undefined\n }\n headerActionsSlot={traceId && headerActionsSlot ? headerActionsSlot({ traceId, spans }) : undefined}\n traceHref={traceId && traceHref ? traceHref(traceId) : undefined}\n />\n <ScoreDataPanel depth={depth} score={featuredScore} onClose={() => selectScore(null)} />\n {withAddTraceToDataset && (\n <TraceAsItemDialog\n rootSpanId={datasetDialogTarget?.rootSpanId}\n traceId={datasetDialogTarget?.traceId}\n isOpen={!!datasetDialogTarget}\n onClose={() => setDatasetDialogTarget(null)}\n renderCreateDatasetDialog={renderCreateDatasetDialog}\n />\n )}\n </>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"traces-explorer-panel.cjs.js","names":["useTracesConfig","useTracesList","useTracesSelection","useTraceUsageColumns","useState","useTraceFeedback","useSpanFeedback","useTraceOrBranchSpans","useTraceSpanScores","useTraceUsage","useTraceListNavigation","EntityType","_Fragment","TraceSpanPanel","TraceFeedbackTab","TraceScoresList","SpanFeedbackTab","ScoreDataPanel","TraceAsItemDialog"],"sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-panel.tsx"],"sourcesContent":["import { EntityType } from '@mastra/core/observability';\nimport { useTraceSpanScores } from '@mastra/react/hooks/scores';\nimport { useSpanFeedback, useTraceFeedback, useTraceOrBranchSpans, useTraceUsage } from '@mastra/react/hooks/traces';\nimport { useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { useTraceListNavigation } from '../../hooks/use-trace-list-navigation';\nimport { SpanFeedbackTab } from '../span-feedback-tab';\nimport { TraceFeedbackTab } from '../trace-feedback-tab';\nimport { TraceSpanPanel } from '../trace-span-panel';\nimport type { TraceSpanPanelProps } from '../trace-span-panel';\nimport { useTraceUsageColumns, useTracesConfig, useTracesList, useTracesSelection } from './traces-explorer-context';\nimport { TraceAsItemDialog } from '@/domains/observability/components/trace-as-item-dialog';\nimport { ScoreDataPanel, TraceScoresList } from '@/domains/scores';\n\nexport type TracesExplorerPanelProps = {\n /** Opens a score of one of the full thread's traces (the host owns routing). */\n onOpenScore: (traceId: string, scoreId: string) => void;\n renderCreateDatasetDialog?: ComponentProps<typeof TraceAsItemDialog>['renderCreateDatasetDialog'];\n /** Host integration actions rendered alongside the trace controls. */\n headerActionsSlot?: (args: { traceId: string; spans: TraceSpanPanelProps['spans'] }) => ReactNode;\n /** Builds the href of the dedicated trace page; without it the drawer offers no \"Open trace page\" link. */\n traceHref?: (traceId: string) => string;\n /** Shows the \"Add to dataset\" button next to \"Score trace\". Defaults to `true`. */\n withAddTraceToDataset?: boolean;\n};\n\ntype DatasetDialogTarget = { traceId: string; rootSpanId: string | undefined };\n\nexport function TracesExplorerPanel({\n onOpenScore,\n renderCreateDatasetDialog,\n headerActionsSlot,\n traceHref,\n withAddTraceToDataset = true,\n}: TracesExplorerPanelProps) {\n const { withQueryTrace, withFeedback } = useTracesConfig();\n const { rows, autoRefetch, isLoading: isListLoading } = useTracesList();\n const { selection, selectTrace, closeTrace, selectSpan, setSpanTab, setSpanView, selectScore, highlightSpans } =\n useTracesSelection();\n const { usageEnabled } = useTraceUsageColumns();\n const traceId = selection.traceId;\n const spanId = selection.spanId;\n\n const [datasetDialogTarget, setDatasetDialogTarget] = useState<DatasetDialogTarget | null>(null);\n // Keyed by trace id so selecting another trace (row click, prev/next) falls back to the trace panel.\n const [fullThreadTraceId, setFullThreadTraceId] = useState<string | null>(null);\n\n // Tab badge counts; the tab bodies re-use these first-page queries through React Query's cache.\n const { data: traceFeedbackData } = useTraceFeedback({\n traceId,\n queryOptions: { enabled: withFeedback && !!traceId },\n });\n const { data: spanFeedbackData } = useSpanFeedback({\n traceId,\n spanId,\n queryOptions: { enabled: withFeedback && !!traceId && !!spanId },\n });\n\n const {\n spans,\n anchorSpanId,\n isLoading: isLoadingSpans,\n } = useTraceOrBranchSpans({ traceId: traceId ?? null, listMode: 'traces', anchorSpanId: null });\n const anchorSpan = anchorSpanId\n ? spans?.find(s => s.spanId === anchorSpanId)\n : spans?.find(s => s.parentSpanId == null);\n\n const { data: spanScoresData } = useTraceSpanScores({\n traceId,\n spanId: anchorSpan?.spanId,\n queryOptions: { enabled: !!traceId && !!anchorSpan?.spanId },\n });\n const featuredScore = selection.scoreId\n ? spanScoresData?.scores?.find(score => score.id === selection.scoreId)\n : undefined;\n\n // Same key as the list's usage query when the trace is listed, so React Query serves it from cache.\n // Waits for the list so a deep-linked trace doesn't fetch its own usage before the rows arrive.\n const rowIds = rows.map(row => row.traceId);\n const isListed = !!traceId && rowIds.includes(traceId);\n const { data: usageByTraceId } = useTraceUsage({\n traceIds: isListed ? rowIds : traceId ? [traceId] : [],\n enabled: usageEnabled && !isListLoading,\n autoRefetch,\n });\n const usage = traceId ? usageByTraceId?.get(traceId) : undefined;\n\n const { handlePreviousTrace, handleNextTrace } = useTraceListNavigation(rows, traceId, null, selectTrace);\n\n const isFullThreadOpen = !!traceId && fullThreadTraceId === traceId;\n const depth = isFullThreadOpen ? 3 : 2;\n\n // Only agent traces carry the Messages column, so other traces open the drawer one size\n // smaller, with or without a span open. The listed row knows the entity on click; the root\n // span covers deep-linked traces outside the list.\n const listedRow = rows.find(row => row.traceId === traceId);\n const entityType = listedRow?.entityType ?? anchorSpan?.entityType;\n const isAgent = entityType === EntityType.AGENT;\n const panelSize = spanId ? (isAgent ? 'full' : 'wide') : isAgent ? 'wide' : 'half';\n\n return (\n <>\n <TraceSpanPanel\n title=\"Trace details\"\n size={panelSize}\n traceId={traceId}\n spans={spans}\n anchorSpanId={anchorSpanId}\n entityType={entityType}\n usage={usage}\n rootStreamingTimings={listedRow}\n isLoadingSpans={isLoadingSpans}\n selectedSpanId={spanId ?? null}\n onClose={() => {\n setFullThreadTraceId(null);\n closeTrace();\n }}\n isFullThreadOpen={isFullThreadOpen}\n withQueryTrace={withQueryTrace}\n withFeedback={withFeedback}\n onOpenScore={onOpenScore}\n onFullThreadOpenChange={open => setFullThreadTraceId(open ? (traceId ?? null) : null)}\n onSpanSelect={id => selectSpan(id ?? null)}\n onSaveAsDatasetItem={withAddTraceToDataset ? setDatasetDialogTarget : undefined}\n initialSpanId={spanId}\n onPrevious={handlePreviousTrace}\n onNext={handleNextTrace}\n showPartialThread\n featuredSpanIds={selection.highlightSpanIds}\n onHighlightSpans={highlightSpans}\n feedbackTabBadge={withFeedback ? (traceFeedbackData?.pagination?.total ?? undefined) : undefined}\n feedbackTabSlot={withFeedback ? ({ traceId: tid }) => <TraceFeedbackTab traceId={tid} /> : undefined}\n scoresTabBadge={spanScoresData?.pagination?.total ?? undefined}\n scoresTabSlot={({ traceId: tid, rootSpanId }) =>\n rootSpanId ? <TraceScoresList traceId={tid} spanId={rootSpanId} onScoreSelect={selectScore} /> : null\n }\n spanView={selection.spanView}\n onSpanViewChange={setSpanView}\n spanActiveTab={selection.spanTab ?? 'details'}\n onSpanTabChange={setSpanTab}\n spanFeedbackTabBadge={withFeedback ? (spanFeedbackData?.pagination?.total ?? undefined) : undefined}\n spanFeedbackTabSlot={\n withFeedback\n ? ({ traceId: tid, spanId: sid }) =>\n tid && sid ? <SpanFeedbackTab key={`${tid}:${sid}`} traceId={tid} spanId={sid} /> : null\n : undefined\n }\n headerActionsSlot={traceId && headerActionsSlot ? headerActionsSlot({ traceId, spans }) : undefined}\n traceHref={traceId && traceHref ? traceHref(traceId) : undefined}\n />\n <ScoreDataPanel depth={depth} score={featuredScore} onClose={() => selectScore(null)} />\n {withAddTraceToDataset && (\n <TraceAsItemDialog\n rootSpanId={datasetDialogTarget?.rootSpanId}\n traceId={datasetDialogTarget?.traceId}\n isOpen={!!datasetDialogTarget}\n onClose={() => setDatasetDialogTarget(null)}\n renderCreateDatasetDialog={renderCreateDatasetDialog}\n />\n )}\n </>\n );\n}\n"],"mappings":"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"}
@@ -53,7 +53,8 @@ function TracesExplorerPanel({ onOpenScore, renderCreateDatasetDialog, headerAct
53
53
  const { handlePreviousTrace, handleNextTrace } = useTraceListNavigation(rows, traceId, null, selectTrace);
54
54
  const isFullThreadOpen = !!traceId && fullThreadTraceId === traceId;
55
55
  const depth = isFullThreadOpen ? 3 : 2;
56
- const entityType = rows.find((row) => row.traceId === traceId)?.entityType ?? anchorSpan?.entityType;
56
+ const listedRow = rows.find((row) => row.traceId === traceId);
57
+ const entityType = listedRow?.entityType ?? anchorSpan?.entityType;
57
58
  const isAgent = entityType === EntityType.AGENT;
58
59
  return /* @__PURE__ */ jsxs(Fragment$1, { children: [
59
60
  /* @__PURE__ */ jsx(TraceSpanPanel, {
@@ -64,6 +65,7 @@ function TracesExplorerPanel({ onOpenScore, renderCreateDatasetDialog, headerAct
64
65
  anchorSpanId,
65
66
  entityType,
66
67
  usage,
68
+ rootStreamingTimings: listedRow,
67
69
  isLoadingSpans,
68
70
  selectedSpanId: spanId ?? null,
69
71
  onClose: () => {
@@ -1 +1 @@
1
- {"version":3,"file":"traces-explorer-panel.es.js","names":["_Fragment"],"sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-panel.tsx"],"sourcesContent":["import { EntityType } from '@mastra/core/observability';\nimport { useTraceSpanScores } from '@mastra/react/hooks/scores';\nimport { useSpanFeedback, useTraceFeedback, useTraceOrBranchSpans, useTraceUsage } from '@mastra/react/hooks/traces';\nimport { useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { useTraceListNavigation } from '../../hooks/use-trace-list-navigation';\nimport { SpanFeedbackTab } from '../span-feedback-tab';\nimport { TraceFeedbackTab } from '../trace-feedback-tab';\nimport { TraceSpanPanel } from '../trace-span-panel';\nimport type { TraceSpanPanelProps } from '../trace-span-panel';\nimport { useTraceUsageColumns, useTracesConfig, useTracesList, useTracesSelection } from './traces-explorer-context';\nimport { TraceAsItemDialog } from '@/domains/observability/components/trace-as-item-dialog';\nimport { ScoreDataPanel, TraceScoresList } from '@/domains/scores';\n\nexport type TracesExplorerPanelProps = {\n /** Opens a score of one of the full thread's traces (the host owns routing). */\n onOpenScore: (traceId: string, scoreId: string) => void;\n renderCreateDatasetDialog?: ComponentProps<typeof TraceAsItemDialog>['renderCreateDatasetDialog'];\n /** Host integration actions rendered alongside the trace controls. */\n headerActionsSlot?: (args: { traceId: string; spans: TraceSpanPanelProps['spans'] }) => ReactNode;\n /** Builds the href of the dedicated trace page; without it the drawer offers no \"Open trace page\" link. */\n traceHref?: (traceId: string) => string;\n /** Shows the \"Add to dataset\" button next to \"Score trace\". Defaults to `true`. */\n withAddTraceToDataset?: boolean;\n};\n\ntype DatasetDialogTarget = { traceId: string; rootSpanId: string | undefined };\n\nexport function TracesExplorerPanel({\n onOpenScore,\n renderCreateDatasetDialog,\n headerActionsSlot,\n traceHref,\n withAddTraceToDataset = true,\n}: TracesExplorerPanelProps) {\n const { withQueryTrace, withFeedback } = useTracesConfig();\n const { rows, autoRefetch, isLoading: isListLoading } = useTracesList();\n const { selection, selectTrace, closeTrace, selectSpan, setSpanTab, setSpanView, selectScore, highlightSpans } =\n useTracesSelection();\n const { usageEnabled } = useTraceUsageColumns();\n const traceId = selection.traceId;\n const spanId = selection.spanId;\n\n const [datasetDialogTarget, setDatasetDialogTarget] = useState<DatasetDialogTarget | null>(null);\n // Keyed by trace id so selecting another trace (row click, prev/next) falls back to the trace panel.\n const [fullThreadTraceId, setFullThreadTraceId] = useState<string | null>(null);\n\n // Tab badge counts; the tab bodies re-use these first-page queries through React Query's cache.\n const { data: traceFeedbackData } = useTraceFeedback({\n traceId,\n queryOptions: { enabled: withFeedback && !!traceId },\n });\n const { data: spanFeedbackData } = useSpanFeedback({\n traceId,\n spanId,\n queryOptions: { enabled: withFeedback && !!traceId && !!spanId },\n });\n\n const {\n spans,\n anchorSpanId,\n isLoading: isLoadingSpans,\n } = useTraceOrBranchSpans({ traceId: traceId ?? null, listMode: 'traces', anchorSpanId: null });\n const anchorSpan = anchorSpanId\n ? spans?.find(s => s.spanId === anchorSpanId)\n : spans?.find(s => s.parentSpanId == null);\n\n const { data: spanScoresData } = useTraceSpanScores({\n traceId,\n spanId: anchorSpan?.spanId,\n queryOptions: { enabled: !!traceId && !!anchorSpan?.spanId },\n });\n const featuredScore = selection.scoreId\n ? spanScoresData?.scores?.find(score => score.id === selection.scoreId)\n : undefined;\n\n // Same key as the list's usage query when the trace is listed, so React Query serves it from cache.\n // Waits for the list so a deep-linked trace doesn't fetch its own usage before the rows arrive.\n const rowIds = rows.map(row => row.traceId);\n const isListed = !!traceId && rowIds.includes(traceId);\n const { data: usageByTraceId } = useTraceUsage({\n traceIds: isListed ? rowIds : traceId ? [traceId] : [],\n enabled: usageEnabled && !isListLoading,\n autoRefetch,\n });\n const usage = traceId ? usageByTraceId?.get(traceId) : undefined;\n\n const { handlePreviousTrace, handleNextTrace } = useTraceListNavigation(rows, traceId, null, selectTrace);\n\n const isFullThreadOpen = !!traceId && fullThreadTraceId === traceId;\n const depth = isFullThreadOpen ? 3 : 2;\n\n // Only agent traces carry the Messages column, so other traces open the drawer one size\n // smaller, with or without a span open. The listed row knows the entity on click; the root\n // span covers deep-linked traces outside the list.\n const entityType = rows.find(row => row.traceId === traceId)?.entityType ?? anchorSpan?.entityType;\n const isAgent = entityType === EntityType.AGENT;\n const panelSize = spanId ? (isAgent ? 'full' : 'wide') : isAgent ? 'wide' : 'half';\n\n return (\n <>\n <TraceSpanPanel\n title=\"Trace details\"\n size={panelSize}\n traceId={traceId}\n spans={spans}\n anchorSpanId={anchorSpanId}\n entityType={entityType}\n usage={usage}\n isLoadingSpans={isLoadingSpans}\n selectedSpanId={spanId ?? null}\n onClose={() => {\n setFullThreadTraceId(null);\n closeTrace();\n }}\n isFullThreadOpen={isFullThreadOpen}\n withQueryTrace={withQueryTrace}\n withFeedback={withFeedback}\n onOpenScore={onOpenScore}\n onFullThreadOpenChange={open => setFullThreadTraceId(open ? (traceId ?? null) : null)}\n onSpanSelect={id => selectSpan(id ?? null)}\n onSaveAsDatasetItem={withAddTraceToDataset ? setDatasetDialogTarget : undefined}\n initialSpanId={spanId}\n onPrevious={handlePreviousTrace}\n onNext={handleNextTrace}\n showPartialThread\n featuredSpanIds={selection.highlightSpanIds}\n onHighlightSpans={highlightSpans}\n feedbackTabBadge={withFeedback ? (traceFeedbackData?.pagination?.total ?? undefined) : undefined}\n feedbackTabSlot={withFeedback ? ({ traceId: tid }) => <TraceFeedbackTab traceId={tid} /> : undefined}\n scoresTabBadge={spanScoresData?.pagination?.total ?? undefined}\n scoresTabSlot={({ traceId: tid, rootSpanId }) =>\n rootSpanId ? <TraceScoresList traceId={tid} spanId={rootSpanId} onScoreSelect={selectScore} /> : null\n }\n spanView={selection.spanView}\n onSpanViewChange={setSpanView}\n spanActiveTab={selection.spanTab ?? 'details'}\n onSpanTabChange={setSpanTab}\n spanFeedbackTabBadge={withFeedback ? (spanFeedbackData?.pagination?.total ?? undefined) : undefined}\n spanFeedbackTabSlot={\n withFeedback\n ? ({ traceId: tid, spanId: sid }) =>\n tid && sid ? <SpanFeedbackTab key={`${tid}:${sid}`} traceId={tid} spanId={sid} /> : null\n : undefined\n }\n headerActionsSlot={traceId && headerActionsSlot ? headerActionsSlot({ traceId, spans }) : undefined}\n traceHref={traceId && traceHref ? traceHref(traceId) : undefined}\n />\n <ScoreDataPanel depth={depth} score={featuredScore} onClose={() => selectScore(null)} />\n {withAddTraceToDataset && (\n <TraceAsItemDialog\n rootSpanId={datasetDialogTarget?.rootSpanId}\n traceId={datasetDialogTarget?.traceId}\n isOpen={!!datasetDialogTarget}\n onClose={() => setDatasetDialogTarget(null)}\n renderCreateDatasetDialog={renderCreateDatasetDialog}\n />\n )}\n </>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"traces-explorer-panel.es.js","names":["_Fragment"],"sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-panel.tsx"],"sourcesContent":["import { EntityType } from '@mastra/core/observability';\nimport { useTraceSpanScores } from '@mastra/react/hooks/scores';\nimport { useSpanFeedback, useTraceFeedback, useTraceOrBranchSpans, useTraceUsage } from '@mastra/react/hooks/traces';\nimport { useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { useTraceListNavigation } from '../../hooks/use-trace-list-navigation';\nimport { SpanFeedbackTab } from '../span-feedback-tab';\nimport { TraceFeedbackTab } from '../trace-feedback-tab';\nimport { TraceSpanPanel } from '../trace-span-panel';\nimport type { TraceSpanPanelProps } from '../trace-span-panel';\nimport { useTraceUsageColumns, useTracesConfig, useTracesList, useTracesSelection } from './traces-explorer-context';\nimport { TraceAsItemDialog } from '@/domains/observability/components/trace-as-item-dialog';\nimport { ScoreDataPanel, TraceScoresList } from '@/domains/scores';\n\nexport type TracesExplorerPanelProps = {\n /** Opens a score of one of the full thread's traces (the host owns routing). */\n onOpenScore: (traceId: string, scoreId: string) => void;\n renderCreateDatasetDialog?: ComponentProps<typeof TraceAsItemDialog>['renderCreateDatasetDialog'];\n /** Host integration actions rendered alongside the trace controls. */\n headerActionsSlot?: (args: { traceId: string; spans: TraceSpanPanelProps['spans'] }) => ReactNode;\n /** Builds the href of the dedicated trace page; without it the drawer offers no \"Open trace page\" link. */\n traceHref?: (traceId: string) => string;\n /** Shows the \"Add to dataset\" button next to \"Score trace\". Defaults to `true`. */\n withAddTraceToDataset?: boolean;\n};\n\ntype DatasetDialogTarget = { traceId: string; rootSpanId: string | undefined };\n\nexport function TracesExplorerPanel({\n onOpenScore,\n renderCreateDatasetDialog,\n headerActionsSlot,\n traceHref,\n withAddTraceToDataset = true,\n}: TracesExplorerPanelProps) {\n const { withQueryTrace, withFeedback } = useTracesConfig();\n const { rows, autoRefetch, isLoading: isListLoading } = useTracesList();\n const { selection, selectTrace, closeTrace, selectSpan, setSpanTab, setSpanView, selectScore, highlightSpans } =\n useTracesSelection();\n const { usageEnabled } = useTraceUsageColumns();\n const traceId = selection.traceId;\n const spanId = selection.spanId;\n\n const [datasetDialogTarget, setDatasetDialogTarget] = useState<DatasetDialogTarget | null>(null);\n // Keyed by trace id so selecting another trace (row click, prev/next) falls back to the trace panel.\n const [fullThreadTraceId, setFullThreadTraceId] = useState<string | null>(null);\n\n // Tab badge counts; the tab bodies re-use these first-page queries through React Query's cache.\n const { data: traceFeedbackData } = useTraceFeedback({\n traceId,\n queryOptions: { enabled: withFeedback && !!traceId },\n });\n const { data: spanFeedbackData } = useSpanFeedback({\n traceId,\n spanId,\n queryOptions: { enabled: withFeedback && !!traceId && !!spanId },\n });\n\n const {\n spans,\n anchorSpanId,\n isLoading: isLoadingSpans,\n } = useTraceOrBranchSpans({ traceId: traceId ?? null, listMode: 'traces', anchorSpanId: null });\n const anchorSpan = anchorSpanId\n ? spans?.find(s => s.spanId === anchorSpanId)\n : spans?.find(s => s.parentSpanId == null);\n\n const { data: spanScoresData } = useTraceSpanScores({\n traceId,\n spanId: anchorSpan?.spanId,\n queryOptions: { enabled: !!traceId && !!anchorSpan?.spanId },\n });\n const featuredScore = selection.scoreId\n ? spanScoresData?.scores?.find(score => score.id === selection.scoreId)\n : undefined;\n\n // Same key as the list's usage query when the trace is listed, so React Query serves it from cache.\n // Waits for the list so a deep-linked trace doesn't fetch its own usage before the rows arrive.\n const rowIds = rows.map(row => row.traceId);\n const isListed = !!traceId && rowIds.includes(traceId);\n const { data: usageByTraceId } = useTraceUsage({\n traceIds: isListed ? rowIds : traceId ? [traceId] : [],\n enabled: usageEnabled && !isListLoading,\n autoRefetch,\n });\n const usage = traceId ? usageByTraceId?.get(traceId) : undefined;\n\n const { handlePreviousTrace, handleNextTrace } = useTraceListNavigation(rows, traceId, null, selectTrace);\n\n const isFullThreadOpen = !!traceId && fullThreadTraceId === traceId;\n const depth = isFullThreadOpen ? 3 : 2;\n\n // Only agent traces carry the Messages column, so other traces open the drawer one size\n // smaller, with or without a span open. The listed row knows the entity on click; the root\n // span covers deep-linked traces outside the list.\n const listedRow = rows.find(row => row.traceId === traceId);\n const entityType = listedRow?.entityType ?? anchorSpan?.entityType;\n const isAgent = entityType === EntityType.AGENT;\n const panelSize = spanId ? (isAgent ? 'full' : 'wide') : isAgent ? 'wide' : 'half';\n\n return (\n <>\n <TraceSpanPanel\n title=\"Trace details\"\n size={panelSize}\n traceId={traceId}\n spans={spans}\n anchorSpanId={anchorSpanId}\n entityType={entityType}\n usage={usage}\n rootStreamingTimings={listedRow}\n isLoadingSpans={isLoadingSpans}\n selectedSpanId={spanId ?? null}\n onClose={() => {\n setFullThreadTraceId(null);\n closeTrace();\n }}\n isFullThreadOpen={isFullThreadOpen}\n withQueryTrace={withQueryTrace}\n withFeedback={withFeedback}\n onOpenScore={onOpenScore}\n onFullThreadOpenChange={open => setFullThreadTraceId(open ? (traceId ?? null) : null)}\n onSpanSelect={id => selectSpan(id ?? null)}\n onSaveAsDatasetItem={withAddTraceToDataset ? setDatasetDialogTarget : undefined}\n initialSpanId={spanId}\n onPrevious={handlePreviousTrace}\n onNext={handleNextTrace}\n showPartialThread\n featuredSpanIds={selection.highlightSpanIds}\n onHighlightSpans={highlightSpans}\n feedbackTabBadge={withFeedback ? (traceFeedbackData?.pagination?.total ?? undefined) : undefined}\n feedbackTabSlot={withFeedback ? ({ traceId: tid }) => <TraceFeedbackTab traceId={tid} /> : undefined}\n scoresTabBadge={spanScoresData?.pagination?.total ?? undefined}\n scoresTabSlot={({ traceId: tid, rootSpanId }) =>\n rootSpanId ? <TraceScoresList traceId={tid} spanId={rootSpanId} onScoreSelect={selectScore} /> : null\n }\n spanView={selection.spanView}\n onSpanViewChange={setSpanView}\n spanActiveTab={selection.spanTab ?? 'details'}\n onSpanTabChange={setSpanTab}\n spanFeedbackTabBadge={withFeedback ? (spanFeedbackData?.pagination?.total ?? undefined) : undefined}\n spanFeedbackTabSlot={\n withFeedback\n ? ({ traceId: tid, spanId: sid }) =>\n tid && sid ? <SpanFeedbackTab key={`${tid}:${sid}`} traceId={tid} spanId={sid} /> : null\n : undefined\n }\n headerActionsSlot={traceId && headerActionsSlot ? headerActionsSlot({ traceId, spans }) : undefined}\n traceHref={traceId && traceHref ? traceHref(traceId) : undefined}\n />\n <ScoreDataPanel depth={depth} score={featuredScore} onClose={() => selectScore(null)} />\n {withAddTraceToDataset && (\n <TraceAsItemDialog\n rootSpanId={datasetDialogTarget?.rootSpanId}\n traceId={datasetDialogTarget?.traceId}\n isOpen={!!datasetDialogTarget}\n onClose={() => setDatasetDialogTarget(null)}\n renderCreateDatasetDialog={renderCreateDatasetDialog}\n />\n )}\n </>\n );\n}\n"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_trace_filters = require("../../../../trace-filters-BpeBUjCb.cjs");
2
+ const require_trace_filters = require("../../../../trace-filters-BNEZ31HX.cjs");
3
3
  const require_domains_traces_components_traces_explorer_traces_explorer_actions = require("./traces-explorer-actions.cjs.js");
4
+ const require_domains_observability_lib_zoom_memory = require("../../../observability/lib/zoom-memory.cjs.js");
4
5
  const require_domains_traces_components_traces_explorer_traces_explorer_context = require("./traces-explorer-context.cjs.js");
5
6
  const require_domains_traces_components_traces_explorer_traces_explorer_columns_provider = require("./traces-explorer-columns-provider.cjs.js");
6
7
  const require_domains_traces_components_traces_explorer_traces_explorer_list_provider = require("./traces-explorer-list-provider.cjs.js");
@@ -30,7 +31,21 @@ function TracesExplorerRoot({ selection, filters: rawFilters, onChange, sort, on
30
31
  const { data: capabilities } = (0, _mastra_react_hooks_capabilities.useObservabilityCapabilities)();
31
32
  const withTimeToFirstChunk = withQueryTrace && (capabilities?.capabilities.traceQueryTimeToFirstChunk ?? false);
32
33
  const withTimeToFirstChunkSort = withTimeToFirstChunk && (capabilities?.capabilities.traceQueryTimeToFirstChunkSort ?? false);
33
- const filters = (0, react.useMemo)(() => require_domains_traces_components_traces_explorer_traces_explorer_actions.sanitizeTracesFilters(rawFilters, withRootDuration), [rawFilters, withRootDuration]);
34
+ const withTimeToFirstToken = withQueryTrace && (capabilities?.capabilities.traceQueryTimeToFirstToken ?? false);
35
+ const withTimeToFirstTokenSort = withTimeToFirstToken && (capabilities?.capabilities.traceQueryTimeToFirstTokenSort ?? false);
36
+ const withOutcomeFields = withQueryTrace && (capabilities?.capabilities.traceQueryOutcomeFields ?? false);
37
+ const filters = (0, react.useMemo)(() => require_domains_traces_components_traces_explorer_traces_explorer_actions.sanitizeTracesFilters(rawFilters, {
38
+ withRootDuration,
39
+ withTimeToFirstChunk,
40
+ withTimeToFirstToken,
41
+ withOutcomeFields
42
+ }), [
43
+ rawFilters,
44
+ withRootDuration,
45
+ withTimeToFirstChunk,
46
+ withTimeToFirstToken,
47
+ withOutcomeFields
48
+ ]);
34
49
  const isScoped = !!scope;
35
50
  const scopedFieldIds = isScoped ? SCOPED_FIELD_IDS : NO_FIELD_IDS;
36
51
  const hiddenFieldIds = isScoped ? HIDDEN_SCOPED_FIELD_IDS : NO_HIDDEN_FIELD_IDS;
@@ -50,6 +65,7 @@ function TracesExplorerRoot({ selection, filters: rawFilters, onChange, sort, on
50
65
  };
51
66
  const latest = (0, react.useRef)(current);
52
67
  latest.current = current;
68
+ const zoomMemory = (0, react.useRef)(void 0);
53
69
  const { selectionActions, filtersActions, onSortChange } = (0, react.useMemo)(() => {
54
70
  const emit = (next) => {
55
71
  latest.current.selection = next.selection;
@@ -80,15 +96,39 @@ function TracesExplorerRoot({ selection, filters: rawFilters, onChange, sort, on
80
96
  selectScore: (scoreId) => updateSelection(require_domains_traces_components_traces_explorer_traces_explorer_actions.selectScore(latest.current.selection, scoreId)),
81
97
  highlightSpans: (spanIds) => updateSelection(require_domains_traces_components_traces_explorer_traces_explorer_actions.highlightSpans(latest.current.selection, spanIds))
82
98
  };
99
+ const pickRange = (next) => {
100
+ zoomMemory.current = void 0;
101
+ updateFilters(next);
102
+ };
83
103
  const filtersActions = {
84
104
  setFilterTokens: (tokens, groups) => {
85
105
  const { filters: base, scopedFieldIds: scoped } = latest.current;
86
106
  const scopeTokens = base.tokens.filter((token) => scoped.has(token.fieldId));
87
107
  updateFilters(require_domains_traces_components_traces_explorer_traces_explorer_actions.applyFilterTokens(base, [...scopeTokens, ...tokens], groups));
88
108
  },
89
- setDatePreset: (preset) => updateFilters(require_domains_traces_components_traces_explorer_traces_explorer_actions.applyDatePreset(latest.current.filters, preset)),
90
- setDate: (value, end) => updateFilters(require_domains_traces_components_traces_explorer_traces_explorer_actions.applyDate(latest.current.filters, value, end)),
91
- setDateRange: (from, to) => updateFilters(require_domains_traces_components_traces_explorer_traces_explorer_actions.applyDateRange(latest.current.filters, from, to))
109
+ setDatePreset: (preset) => pickRange(require_domains_traces_components_traces_explorer_traces_explorer_actions.applyDatePreset(latest.current.filters, preset)),
110
+ setDate: (value, end) => pickRange(require_domains_traces_components_traces_explorer_traces_explorer_actions.applyDate(latest.current.filters, value, end)),
111
+ setDateRange: (from, to) => pickRange(require_domains_traces_components_traces_explorer_traces_explorer_actions.applyDateRange(latest.current.filters, from, to)),
112
+ zoomDateRange: (from, to) => {
113
+ const base = latest.current.filters;
114
+ zoomMemory.current = require_domains_observability_lib_zoom_memory.rememberZoom(zoomMemory.current, base, from, to);
115
+ updateFilters({
116
+ ...base,
117
+ datePreset: "custom",
118
+ dateFrom: from,
119
+ dateTo: to
120
+ });
121
+ },
122
+ resetDateRange: (defaultPreset) => {
123
+ const base = latest.current.filters;
124
+ const before = require_domains_observability_lib_zoom_memory.rangeBeforeZoom(zoomMemory.current, base);
125
+ zoomMemory.current = void 0;
126
+ updateFilters({
127
+ tokens: base.tokens,
128
+ groups: base.groups,
129
+ ...before ?? { datePreset: defaultPreset }
130
+ });
131
+ }
92
132
  };
93
133
  const onSortChange = (next) => latest.current.onSortChange(next);
94
134
  return {
@@ -113,8 +153,11 @@ function TracesExplorerRoot({ selection, filters: rawFilters, onChange, sort, on
113
153
  withSpanQuery,
114
154
  withThreadQuery,
115
155
  withRootDuration,
156
+ withOutcomeFields,
116
157
  withTimeToFirstChunk,
117
158
  withTimeToFirstChunkSort,
159
+ withTimeToFirstToken,
160
+ withTimeToFirstTokenSort,
118
161
  withDeltaPolling,
119
162
  withDiscovery,
120
163
  isCapabilitiesLoading: traceQuery.isLoading,
@@ -129,8 +172,11 @@ function TracesExplorerRoot({ selection, filters: rawFilters, onChange, sort, on
129
172
  withSpanQuery,
130
173
  withThreadQuery,
131
174
  withRootDuration,
175
+ withOutcomeFields,
132
176
  withTimeToFirstChunk,
133
177
  withTimeToFirstChunkSort,
178
+ withTimeToFirstToken,
179
+ withTimeToFirstTokenSort,
134
180
  withDeltaPolling,
135
181
  withDiscovery,
136
182
  traceQuery.isLoading,
@@ -1 +1 @@
1
- {"version":3,"file":"traces-explorer-root.cjs.js","names":["EntityType","DEFAULT_TRACES_FILTERS","useTraceQueryAvailable","useFeedbackAvailable","useSpanQueryAvailable","useThreadQueryAvailable","useTraceQueryRootDurationAvailable","useTraceQueryDeltaPollingAvailable","useTraceQueryDiscoveryAvailable","useObservabilityCapabilities","useMemo","sanitizeTracesFilters","resolveTracesDateWindow","useRef","isSelectionEmpty","clearSelection","selectTrace","selectSpan","setSpanTab","setSpanView","selectScore","highlightSpans","applyFilterTokens","applyDatePreset","applyDate","applyDateRange","useState","resolveTraceQueryTimeRange","selectsRunningStatus","TracesConfigContext","TracesFiltersContext","TracesSelectionContext","TracesColumnsProvider","TracesListProvider"],"sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-root.tsx"],"sourcesContent":["import { EntityType } from '@mastra/core/observability';\nimport { useMemo, useRef, useState } from 'react';\nimport type { ReactNode } from 'react';\nimport { resolveTraceQueryTimeRange } from '../../trace-query-filters';\nimport {\n applyDate,\n applyDatePreset,\n applyDateRange,\n applyFilterTokens,\n clearSelection,\n DEFAULT_TRACES_FILTERS,\n highlightSpans,\n isSelectionEmpty,\n resolveTracesDateWindow,\n sanitizeTracesFilters,\n selectsRunningStatus,\n selectScore,\n selectSpan,\n selectTrace,\n setSpanTab,\n setSpanView,\n} from './traces-explorer-actions';\nimport type { TracesExplorerState, TracesFilters, TracesSelection, TracesSort } from './traces-explorer-actions';\nimport { TracesColumnsProvider } from './traces-explorer-columns-provider';\nimport { TracesConfigContext, TracesFiltersContext, TracesSelectionContext } from './traces-explorer-context';\nimport type {\n TracesConfigContextValue,\n TracesExplorerFeatures,\n TracesExplorerScope,\n TracesFiltersActions,\n TracesFiltersContextValue,\n TracesMetricsSupport,\n TracesSelectionActions,\n TracesSelectionContextValue,\n} from './traces-explorer-context';\nimport { TracesListProvider } from './traces-explorer-list-provider';\nimport {\n useFeedbackAvailable,\n useObservabilityCapabilities,\n useSpanQueryAvailable,\n useThreadQueryAvailable,\n useTraceQueryAvailable,\n useTraceQueryDeltaPollingAvailable,\n useTraceQueryDiscoveryAvailable,\n useTraceQueryRootDurationAvailable,\n} from '@/domains/capabilities';\n\nexport type TracesExplorerRootProps = {\n selection: TracesSelection;\n filters: TracesFilters;\n /** Receives the full next state once per user action, so a filter edit and the selection it clears land together. */\n onChange: (next: TracesExplorerState) => void;\n sort: TracesSort;\n onSortChange: (next: TracesSort) => void;\n /** Pins the explorer to one entity: its fields stay in the filters but never surface as chips. */\n scope?: TracesExplorerScope;\n /** Resolved by the host, which may know better than the storage capabilities (e.g. hosted deployments). */\n metricsSupport: TracesMetricsSupport;\n /** Host switches combined with the server capabilities; a feature runs only when both allow it. */\n features?: TracesExplorerFeatures;\n /** The host's default filters. Filters matching them don't count as applied (e.g. in empty states). */\n initialFilters?: TracesFilters;\n children: ReactNode;\n};\n\nconst SCOPED_FIELD_IDS: ReadonlySet<string> = new Set(['rootEntityType', 'entityId']);\nconst HIDDEN_SCOPED_FIELD_IDS: readonly string[] = ['rootEntityType', 'entityId', 'entityName'];\nconst NO_FIELD_IDS: ReadonlySet<string> = new Set();\nconst NO_HIDDEN_FIELD_IDS: readonly string[] = [];\n\nconst listIdForScope = (scope?: TracesExplorerScope) =>\n scope?.entityType === EntityType.AGENT\n ? 'agent-traces'\n : scope?.entityType === EntityType.WORKFLOW_RUN\n ? 'workflows-traces'\n : 'all-traces';\n\ntype Latest = Pick<TracesExplorerRootProps, 'selection' | 'filters' | 'onChange' | 'onSortChange'> & {\n scopedFieldIds: ReadonlySet<string>;\n};\n\nexport function TracesExplorerRoot({\n selection,\n filters: rawFilters,\n onChange,\n sort,\n onSortChange: onHostSortChange,\n scope,\n metricsSupport,\n features,\n initialFilters = DEFAULT_TRACES_FILTERS,\n children,\n}: TracesExplorerRootProps) {\n // Servers without the trace-query API list through `listTracesLight` and don't expose feedback.\n const traceQuery = useTraceQueryAvailable();\n const withQueryTrace = traceQuery.enabled && features?.traceQuery !== false;\n const withFeedback = useFeedbackAvailable().enabled && features?.feedback !== false;\n // Opt-in: span queries need both the server capability and the host turning them on.\n const withSpanQuery = useSpanQueryAvailable().enabled && features?.spanQuery === true;\n // Opt-in like span queries: thread rows need the server capability and the host turning them on.\n const withThreadQuery = useThreadQueryAvailable().enabled && features?.threadQuery === true;\n const { enabled: withRootDuration } = useTraceQueryRootDurationAvailable();\n const { enabled: withDeltaPolling } = useTraceQueryDeltaPollingAvailable();\n const withDiscovery = useTraceQueryDiscoveryAvailable().enabled && withQueryTrace;\n // `listTracesLight` rows never carry it, so it needs the trace query API as well.\n const { data: capabilities } = useObservabilityCapabilities();\n const withTimeToFirstChunk = withQueryTrace && (capabilities?.capabilities.traceQueryTimeToFirstChunk ?? false);\n const withTimeToFirstChunkSort =\n withTimeToFirstChunk && (capabilities?.capabilities.traceQueryTimeToFirstChunkSort ?? false);\n\n // Entries the server can't query are ignored, never written back: the host keeps its raw value.\n const filters = useMemo(() => sanitizeTracesFilters(rawFilters, withRootDuration), [rawFilters, withRootDuration]);\n\n const isScoped = !!scope;\n const scopedFieldIds = isScoped ? SCOPED_FIELD_IDS : NO_FIELD_IDS;\n const hiddenFieldIds = isScoped ? HIDDEN_SCOPED_FIELD_IDS : NO_HIDDEN_FIELD_IDS;\n\n // Rolling presets pin their start when the preset (or custom bound) changes, not on every render.\n const fromMs = rawFilters.dateFrom?.getTime();\n const toMs = rawFilters.dateTo?.getTime();\n const { dateFrom, dateTo } = useMemo(\n () =>\n resolveTracesDateWindow(\n rawFilters.datePreset,\n fromMs === undefined ? undefined : new Date(fromMs),\n toMs === undefined ? undefined : new Date(toMs),\n ),\n [rawFilters.datePreset, fromMs, toMs],\n );\n\n // Actions read the latest props when they run, so the host doesn't need stable callbacks.\n // `latest` is written as soon as a change is emitted, so a second action in the same tick\n // (the date picker fires a preset then its dates) builds on the first instead of the stale props.\n const current: Latest = { selection, filters: rawFilters, onChange, onSortChange: onHostSortChange, scopedFieldIds };\n const latest = useRef(current);\n latest.current = current;\n\n const actions = useMemo(() => {\n const emit = (next: TracesExplorerState) => {\n latest.current.selection = next.selection;\n latest.current.filters = next.filters;\n latest.current.onChange(next);\n };\n const updateSelection = (next: TracesSelection) => {\n if (next === latest.current.selection) return;\n emit({ selection: next, filters: latest.current.filters });\n };\n // A filter change invalidates whatever is selected: the selected row may no longer be listed.\n const updateFilters = (next: TracesFilters) => {\n const { selection: currentSelection, filters: currentFilters } = latest.current;\n if (next === currentFilters) return;\n emit({\n filters: next,\n selection: isSelectionEmpty(currentSelection) ? currentSelection : clearSelection(currentSelection),\n });\n };\n\n const selectionActions: TracesSelectionActions = {\n selectTrace: traceId => updateSelection(selectTrace(latest.current.selection, traceId)),\n closeTrace: () => updateSelection(selectTrace(latest.current.selection, null)),\n selectSpan: spanId => updateSelection(selectSpan(latest.current.selection, spanId)),\n setSpanTab: tab => updateSelection(setSpanTab(latest.current.selection, tab)),\n setSpanView: view => updateSelection(setSpanView(latest.current.selection, view)),\n selectScore: scoreId => updateSelection(selectScore(latest.current.selection, scoreId)),\n highlightSpans: spanIds => updateSelection(highlightSpans(latest.current.selection, spanIds)),\n };\n const filtersActions: TracesFiltersActions = {\n // Re-inject the scope tokens so \"Clear filters\" (which drops every removable item) and any\n // other edit can never drop the scope.\n setFilterTokens: (tokens, groups) => {\n const { filters: base, scopedFieldIds: scoped } = latest.current;\n const scopeTokens = base.tokens.filter(token => scoped.has(token.fieldId));\n updateFilters(applyFilterTokens(base, [...scopeTokens, ...tokens], groups));\n },\n setDatePreset: preset => updateFilters(applyDatePreset(latest.current.filters, preset)),\n setDate: (value, end) => updateFilters(applyDate(latest.current.filters, value, end)),\n setDateRange: (from, to) => updateFilters(applyDateRange(latest.current.filters, from, to)),\n };\n const onSortChange = (next: TracesSort) => latest.current.onSortChange(next);\n return { selectionActions, filtersActions, onSortChange };\n }, []);\n const { selectionActions, filtersActions, onSortChange } = actions;\n\n // Discovery is keyed off the date window with a mount-time `now`, not the list's rolling one,\n // so its query key (and the skeleton) doesn't churn on every auto-refresh tick.\n const [discoveryNow] = useState(() => new Date());\n const discoveryTimeRange = useMemo(\n () => resolveTraceQueryTimeRange(dateFrom, dateTo, discoveryNow),\n [dateFrom, dateTo, discoveryNow],\n );\n\n const listId = listIdForScope(scope);\n const configValue = useMemo<TracesConfigContextValue>(\n () => ({\n listId,\n scopedFieldIds,\n hiddenFieldIds,\n withQueryTrace,\n withFeedback,\n withSpanQuery,\n withThreadQuery,\n withRootDuration,\n withTimeToFirstChunk,\n withTimeToFirstChunkSort,\n withDeltaPolling,\n withDiscovery,\n isCapabilitiesLoading: traceQuery.isLoading,\n metricsSupport,\n discoveryTimeRange,\n }),\n [\n listId,\n scopedFieldIds,\n hiddenFieldIds,\n withQueryTrace,\n withFeedback,\n withSpanQuery,\n withThreadQuery,\n withRootDuration,\n withTimeToFirstChunk,\n withTimeToFirstChunkSort,\n withDeltaPolling,\n withDiscovery,\n traceQuery.isLoading,\n metricsSupport,\n discoveryTimeRange,\n ],\n );\n\n const contentFiltersApplied = filters.tokens.length > 0 || filters.groups.length > 0;\n const filtersApplied = contentFiltersApplied || filters.datePreset !== initialFilters.datePreset || !!dateTo;\n const runningSelected = useMemo(() => selectsRunningStatus(rawFilters), [rawFilters]);\n const filtersValue = useMemo<TracesFiltersContextValue>(\n () => ({\n ...filtersActions,\n filters,\n dateFrom,\n dateTo,\n filtersApplied,\n contentFiltersApplied,\n runningSelected,\n }),\n [filtersActions, filters, dateFrom, dateTo, filtersApplied, contentFiltersApplied, runningSelected],\n );\n\n // Not memoized: the selection consumers (Layout, List, Panel) also re-render on filter and list\n // changes, which are what re-render Root while the selection stays the same.\n const selectionValue: TracesSelectionContextValue = {\n ...selectionActions,\n selection,\n selectedTraceId: selection.traceId,\n };\n\n return (\n <TracesConfigContext.Provider value={configValue}>\n <TracesFiltersContext.Provider value={filtersValue}>\n <TracesSelectionContext.Provider value={selectionValue}>\n <TracesColumnsProvider>\n <TracesListProvider sort={sort} onSortChange={onSortChange}>\n {children}\n </TracesListProvider>\n </TracesColumnsProvider>\n </TracesSelectionContext.Provider>\n </TracesFiltersContext.Provider>\n </TracesConfigContext.Provider>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"traces-explorer-root.cjs.js","names":["EntityType","DEFAULT_TRACES_FILTERS","useTraceQueryAvailable","useFeedbackAvailable","useSpanQueryAvailable","useThreadQueryAvailable","useTraceQueryRootDurationAvailable","useTraceQueryDeltaPollingAvailable","useTraceQueryDiscoveryAvailable","useObservabilityCapabilities","useMemo","sanitizeTracesFilters","resolveTracesDateWindow","useRef","isSelectionEmpty","clearSelection","selectTrace","selectSpan","setSpanTab","setSpanView","selectScore","highlightSpans","applyFilterTokens","applyDatePreset","applyDate","applyDateRange","rememberZoom","rangeBeforeZoom","useState","resolveTraceQueryTimeRange","selectsRunningStatus","TracesConfigContext","TracesFiltersContext","TracesSelectionContext","TracesColumnsProvider","TracesListProvider"],"sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-root.tsx"],"sourcesContent":["import { EntityType } from '@mastra/core/observability';\nimport { useMemo, useRef, useState } from 'react';\nimport type { ReactNode } from 'react';\nimport { resolveTraceQueryTimeRange } from '../../trace-query-filters';\nimport {\n applyDate,\n applyDatePreset,\n applyDateRange,\n applyFilterTokens,\n clearSelection,\n DEFAULT_TRACES_FILTERS,\n highlightSpans,\n isSelectionEmpty,\n resolveTracesDateWindow,\n sanitizeTracesFilters,\n selectsRunningStatus,\n selectScore,\n selectSpan,\n selectTrace,\n setSpanTab,\n setSpanView,\n} from './traces-explorer-actions';\nimport type { TracesExplorerState, TracesFilters, TracesSelection, TracesSort } from './traces-explorer-actions';\nimport { TracesColumnsProvider } from './traces-explorer-columns-provider';\nimport { TracesConfigContext, TracesFiltersContext, TracesSelectionContext } from './traces-explorer-context';\nimport type {\n TracesConfigContextValue,\n TracesExplorerFeatures,\n TracesExplorerScope,\n TracesFiltersActions,\n TracesFiltersContextValue,\n TracesMetricsSupport,\n TracesSelectionActions,\n TracesSelectionContextValue,\n} from './traces-explorer-context';\nimport { TracesListProvider } from './traces-explorer-list-provider';\nimport {\n useFeedbackAvailable,\n useObservabilityCapabilities,\n useSpanQueryAvailable,\n useThreadQueryAvailable,\n useTraceQueryAvailable,\n useTraceQueryDeltaPollingAvailable,\n useTraceQueryDiscoveryAvailable,\n useTraceQueryRootDurationAvailable,\n} from '@/domains/capabilities';\nimport { rangeBeforeZoom, rememberZoom } from '@/domains/observability/lib/zoom-memory';\nimport type { ZoomMemory } from '@/domains/observability/lib/zoom-memory';\n\nexport type TracesExplorerRootProps = {\n selection: TracesSelection;\n filters: TracesFilters;\n /** Receives the full next state once per user action, so a filter edit and the selection it clears land together. */\n onChange: (next: TracesExplorerState) => void;\n sort: TracesSort;\n onSortChange: (next: TracesSort) => void;\n /** Pins the explorer to one entity: its fields stay in the filters but never surface as chips. */\n scope?: TracesExplorerScope;\n /** Resolved by the host, which may know better than the storage capabilities (e.g. hosted deployments). */\n metricsSupport: TracesMetricsSupport;\n /** Host switches combined with the server capabilities; a feature runs only when both allow it. */\n features?: TracesExplorerFeatures;\n /** The host's default filters. Filters matching them don't count as applied (e.g. in empty states). */\n initialFilters?: TracesFilters;\n children: ReactNode;\n};\n\nconst SCOPED_FIELD_IDS: ReadonlySet<string> = new Set(['rootEntityType', 'entityId']);\nconst HIDDEN_SCOPED_FIELD_IDS: readonly string[] = ['rootEntityType', 'entityId', 'entityName'];\nconst NO_FIELD_IDS: ReadonlySet<string> = new Set();\nconst NO_HIDDEN_FIELD_IDS: readonly string[] = [];\n\nconst listIdForScope = (scope?: TracesExplorerScope) =>\n scope?.entityType === EntityType.AGENT\n ? 'agent-traces'\n : scope?.entityType === EntityType.WORKFLOW_RUN\n ? 'workflows-traces'\n : 'all-traces';\n\ntype Latest = Pick<TracesExplorerRootProps, 'selection' | 'filters' | 'onChange' | 'onSortChange'> & {\n scopedFieldIds: ReadonlySet<string>;\n};\n\nexport function TracesExplorerRoot({\n selection,\n filters: rawFilters,\n onChange,\n sort,\n onSortChange: onHostSortChange,\n scope,\n metricsSupport,\n features,\n initialFilters = DEFAULT_TRACES_FILTERS,\n children,\n}: TracesExplorerRootProps) {\n // Servers without the trace-query API list through `listTracesLight` and don't expose feedback.\n const traceQuery = useTraceQueryAvailable();\n const withQueryTrace = traceQuery.enabled && features?.traceQuery !== false;\n const withFeedback = useFeedbackAvailable().enabled && features?.feedback !== false;\n // Opt-in: span queries need both the server capability and the host turning them on.\n const withSpanQuery = useSpanQueryAvailable().enabled && features?.spanQuery === true;\n // Opt-in like span queries: thread rows need the server capability and the host turning them on.\n const withThreadQuery = useThreadQueryAvailable().enabled && features?.threadQuery === true;\n const { enabled: withRootDuration } = useTraceQueryRootDurationAvailable();\n const { enabled: withDeltaPolling } = useTraceQueryDeltaPollingAvailable();\n const withDiscovery = useTraceQueryDiscoveryAvailable().enabled && withQueryTrace;\n // `listTracesLight` rows never carry it, so it needs the trace query API as well.\n const { data: capabilities } = useObservabilityCapabilities();\n const withTimeToFirstChunk = withQueryTrace && (capabilities?.capabilities.traceQueryTimeToFirstChunk ?? false);\n const withTimeToFirstChunkSort =\n withTimeToFirstChunk && (capabilities?.capabilities.traceQueryTimeToFirstChunkSort ?? false);\n const withTimeToFirstToken = withQueryTrace && (capabilities?.capabilities.traceQueryTimeToFirstToken ?? false);\n const withTimeToFirstTokenSort =\n withTimeToFirstToken && (capabilities?.capabilities.traceQueryTimeToFirstTokenSort ?? false);\n const withOutcomeFields = withQueryTrace && (capabilities?.capabilities.traceQueryOutcomeFields ?? false);\n\n // Entries the server can't query are ignored, never written back: the host keeps its raw value.\n const filters = useMemo(\n () =>\n sanitizeTracesFilters(rawFilters, {\n withRootDuration,\n withTimeToFirstChunk,\n withTimeToFirstToken,\n withOutcomeFields,\n }),\n [rawFilters, withRootDuration, withTimeToFirstChunk, withTimeToFirstToken, withOutcomeFields],\n );\n\n const isScoped = !!scope;\n const scopedFieldIds = isScoped ? SCOPED_FIELD_IDS : NO_FIELD_IDS;\n const hiddenFieldIds = isScoped ? HIDDEN_SCOPED_FIELD_IDS : NO_HIDDEN_FIELD_IDS;\n\n // Rolling presets pin their start when the preset (or custom bound) changes, not on every render.\n const fromMs = rawFilters.dateFrom?.getTime();\n const toMs = rawFilters.dateTo?.getTime();\n const { dateFrom, dateTo } = useMemo(\n () =>\n resolveTracesDateWindow(\n rawFilters.datePreset,\n fromMs === undefined ? undefined : new Date(fromMs),\n toMs === undefined ? undefined : new Date(toMs),\n ),\n [rawFilters.datePreset, fromMs, toMs],\n );\n\n // Actions read the latest props when they run, so the host doesn't need stable callbacks.\n // `latest` is written as soon as a change is emitted, so a second action in the same tick\n // (the date picker fires a preset then its dates) builds on the first instead of the stale props.\n const current: Latest = { selection, filters: rawFilters, onChange, onSortChange: onHostSortChange, scopedFieldIds };\n const latest = useRef(current);\n latest.current = current;\n // Not part of the host's filters: a shared or reloaded link has no zoom to undo.\n const zoomMemory = useRef<ZoomMemory | undefined>(undefined);\n\n const actions = useMemo(() => {\n const emit = (next: TracesExplorerState) => {\n latest.current.selection = next.selection;\n latest.current.filters = next.filters;\n latest.current.onChange(next);\n };\n const updateSelection = (next: TracesSelection) => {\n if (next === latest.current.selection) return;\n emit({ selection: next, filters: latest.current.filters });\n };\n // A filter change invalidates whatever is selected: the selected row may no longer be listed.\n const updateFilters = (next: TracesFilters) => {\n const { selection: currentSelection, filters: currentFilters } = latest.current;\n if (next === currentFilters) return;\n emit({\n filters: next,\n selection: isSelectionEmpty(currentSelection) ? currentSelection : clearSelection(currentSelection),\n });\n };\n\n const selectionActions: TracesSelectionActions = {\n selectTrace: traceId => updateSelection(selectTrace(latest.current.selection, traceId)),\n closeTrace: () => updateSelection(selectTrace(latest.current.selection, null)),\n selectSpan: spanId => updateSelection(selectSpan(latest.current.selection, spanId)),\n setSpanTab: tab => updateSelection(setSpanTab(latest.current.selection, tab)),\n setSpanView: view => updateSelection(setSpanView(latest.current.selection, view)),\n selectScore: scoreId => updateSelection(selectScore(latest.current.selection, scoreId)),\n highlightSpans: spanIds => updateSelection(highlightSpans(latest.current.selection, spanIds)),\n };\n // A range picked by hand drops the zoom memory, even one that matches the zoomed bounds.\n const pickRange = (next: TracesFilters) => {\n zoomMemory.current = undefined;\n updateFilters(next);\n };\n const filtersActions: TracesFiltersActions = {\n // Re-inject the scope tokens so \"Clear filters\" (which drops every removable item) and any\n // other edit can never drop the scope.\n setFilterTokens: (tokens, groups) => {\n const { filters: base, scopedFieldIds: scoped } = latest.current;\n const scopeTokens = base.tokens.filter(token => scoped.has(token.fieldId));\n updateFilters(applyFilterTokens(base, [...scopeTokens, ...tokens], groups));\n },\n setDatePreset: preset => pickRange(applyDatePreset(latest.current.filters, preset)),\n setDate: (value, end) => pickRange(applyDate(latest.current.filters, value, end)),\n setDateRange: (from, to) => pickRange(applyDateRange(latest.current.filters, from, to)),\n zoomDateRange: (from, to) => {\n const base = latest.current.filters;\n zoomMemory.current = rememberZoom(zoomMemory.current, base, from, to);\n updateFilters({ ...base, datePreset: 'custom', dateFrom: from, dateTo: to });\n },\n resetDateRange: defaultPreset => {\n const base = latest.current.filters;\n const before = rangeBeforeZoom(zoomMemory.current, base);\n zoomMemory.current = undefined;\n updateFilters({ tokens: base.tokens, groups: base.groups, ...(before ?? { datePreset: defaultPreset }) });\n },\n };\n const onSortChange = (next: TracesSort) => latest.current.onSortChange(next);\n return { selectionActions, filtersActions, onSortChange };\n }, []);\n const { selectionActions, filtersActions, onSortChange } = actions;\n\n // Discovery is keyed off the date window with a mount-time `now`, not the list's rolling one,\n // so its query key (and the skeleton) doesn't churn on every auto-refresh tick.\n const [discoveryNow] = useState(() => new Date());\n const discoveryTimeRange = useMemo(\n () => resolveTraceQueryTimeRange(dateFrom, dateTo, discoveryNow),\n [dateFrom, dateTo, discoveryNow],\n );\n\n const listId = listIdForScope(scope);\n const configValue = useMemo<TracesConfigContextValue>(\n () => ({\n listId,\n scopedFieldIds,\n hiddenFieldIds,\n withQueryTrace,\n withFeedback,\n withSpanQuery,\n withThreadQuery,\n withRootDuration,\n withOutcomeFields,\n withTimeToFirstChunk,\n withTimeToFirstChunkSort,\n withTimeToFirstToken,\n withTimeToFirstTokenSort,\n withDeltaPolling,\n withDiscovery,\n isCapabilitiesLoading: traceQuery.isLoading,\n metricsSupport,\n discoveryTimeRange,\n }),\n [\n listId,\n scopedFieldIds,\n hiddenFieldIds,\n withQueryTrace,\n withFeedback,\n withSpanQuery,\n withThreadQuery,\n withRootDuration,\n withOutcomeFields,\n withTimeToFirstChunk,\n withTimeToFirstChunkSort,\n withTimeToFirstToken,\n withTimeToFirstTokenSort,\n withDeltaPolling,\n withDiscovery,\n traceQuery.isLoading,\n metricsSupport,\n discoveryTimeRange,\n ],\n );\n\n const contentFiltersApplied = filters.tokens.length > 0 || filters.groups.length > 0;\n const filtersApplied = contentFiltersApplied || filters.datePreset !== initialFilters.datePreset || !!dateTo;\n const runningSelected = useMemo(() => selectsRunningStatus(rawFilters), [rawFilters]);\n const filtersValue = useMemo<TracesFiltersContextValue>(\n () => ({\n ...filtersActions,\n filters,\n dateFrom,\n dateTo,\n filtersApplied,\n contentFiltersApplied,\n runningSelected,\n }),\n [filtersActions, filters, dateFrom, dateTo, filtersApplied, contentFiltersApplied, runningSelected],\n );\n\n // Not memoized: the selection consumers (Layout, List, Panel) also re-render on filter and list\n // changes, which are what re-render Root while the selection stays the same.\n const selectionValue: TracesSelectionContextValue = {\n ...selectionActions,\n selection,\n selectedTraceId: selection.traceId,\n };\n\n return (\n <TracesConfigContext.Provider value={configValue}>\n <TracesFiltersContext.Provider value={filtersValue}>\n <TracesSelectionContext.Provider value={selectionValue}>\n <TracesColumnsProvider>\n <TracesListProvider sort={sort} onSortChange={onSortChange}>\n {children}\n </TracesListProvider>\n </TracesColumnsProvider>\n </TracesSelectionContext.Provider>\n </TracesFiltersContext.Provider>\n </TracesConfigContext.Provider>\n );\n}\n"],"mappings":";;;;;;;;;;;;AAmEA,IAAM,mCAAwC,IAAI,IAAI,CAAC,kBAAkB,UAAU,CAAC;AACpF,IAAM,0BAA6C;CAAC;CAAkB;CAAY;AAAY;AAC9F,IAAM,+BAAoC,IAAI,IAAI;AAClD,IAAM,sBAAyC,CAAC;AAEhD,IAAM,kBAAkB,UACtB,OAAO,eAAeA,2BAAAA,WAAW,QAC7B,iBACA,OAAO,eAAeA,2BAAAA,WAAW,eAC/B,qBACA;AAMR,SAAgB,mBAAmB,EACjC,WACA,SAAS,YACT,UACA,MACA,cAAc,kBACd,OACA,gBACA,UACA,iBAAiBC,0EAAAA,wBACjB,YAC0B;CAE1B,MAAM,cAAA,GAAaC,iCAAAA,uBAAAA,CAAuB;CAC1C,MAAM,iBAAiB,WAAW,WAAW,UAAU,eAAe;CACtE,MAAM,gBAAA,GAAeC,iCAAAA,qBAAAA,CAAqB,CAAC,CAAC,WAAW,UAAU,aAAa;CAE9E,MAAM,iBAAA,GAAgBC,iCAAAA,sBAAAA,CAAsB,CAAC,CAAC,WAAW,UAAU,cAAc;CAEjF,MAAM,mBAAA,GAAkBC,iCAAAA,wBAAAA,CAAwB,CAAC,CAAC,WAAW,UAAU,gBAAgB;CACvF,MAAM,EAAE,SAAS,sBAAA,GAAqBC,iCAAAA,mCAAAA,CAAmC;CACzE,MAAM,EAAE,SAAS,sBAAA,GAAqBC,iCAAAA,mCAAAA,CAAmC;CACzE,MAAM,iBAAA,GAAgBC,iCAAAA,gCAAAA,CAAgC,CAAC,CAAC,WAAW;CAEnE,MAAM,EAAE,MAAM,kBAAA,GAAiBC,iCAAAA,6BAAAA,CAA6B;CAC5D,MAAM,uBAAuB,mBAAmB,cAAc,aAAa,8BAA8B;CACzG,MAAM,2BACJ,yBAAyB,cAAc,aAAa,kCAAkC;CACxF,MAAM,uBAAuB,mBAAmB,cAAc,aAAa,8BAA8B;CACzG,MAAM,2BACJ,yBAAyB,cAAc,aAAa,kCAAkC;CACxF,MAAM,oBAAoB,mBAAmB,cAAc,aAAa,2BAA2B;CAGnG,MAAM,WAAA,GAAUC,MAAAA,QAAAA,OAEZC,0EAAAA,sBAAsB,YAAY;EAChC;EACA;EACA;EACA;CACF,CAAC,GACH;EAAC;EAAY;EAAkB;EAAsB;EAAsB;CAAiB,CAC9F;CAEA,MAAM,WAAW,CAAC,CAAC;CACnB,MAAM,iBAAiB,WAAW,mBAAmB;CACrD,MAAM,iBAAiB,WAAW,0BAA0B;CAG5D,MAAM,SAAS,WAAW,UAAU,QAAQ;CAC5C,MAAM,OAAO,WAAW,QAAQ,QAAQ;CACxC,MAAM,EAAE,UAAU,YAAA,GAAWD,MAAAA,QAAAA,OAEzBE,0EAAAA,wBACE,WAAW,YACX,WAAW,KAAA,IAAY,KAAA,IAAY,IAAI,KAAK,MAAM,GAClD,SAAS,KAAA,IAAY,KAAA,IAAY,IAAI,KAAK,IAAI,CAChD,GACF;EAAC,WAAW;EAAY;EAAQ;CAAI,CACtC;CAKA,MAAM,UAAkB;EAAE;EAAW,SAAS;EAAY;EAAU,cAAc;EAAkB;CAAe;CACnH,MAAM,UAAA,GAASC,MAAAA,OAAAA,CAAO,OAAO;CAC7B,OAAO,UAAU;CAEjB,MAAM,cAAA,GAAaA,MAAAA,OAAAA,CAA+B,KAAA,CAAS;CA8D3D,MAAM,EAAE,kBAAkB,gBAAgB,kBAAA,GA5D1BH,MAAAA,QAAAA,OAAc;EAC5B,MAAM,QAAQ,SAA8B;GAC1C,OAAO,QAAQ,YAAY,KAAK;GAChC,OAAO,QAAQ,UAAU,KAAK;GAC9B,OAAO,QAAQ,SAAS,IAAI;EAC9B;EACA,MAAM,mBAAmB,SAA0B;GACjD,IAAI,SAAS,OAAO,QAAQ,WAAW;GACvC,KAAK;IAAE,WAAW;IAAM,SAAS,OAAO,QAAQ;GAAQ,CAAC;EAC3D;EAEA,MAAM,iBAAiB,SAAwB;GAC7C,MAAM,EAAE,WAAW,kBAAkB,SAAS,mBAAmB,OAAO;GACxE,IAAI,SAAS,gBAAgB;GAC7B,KAAK;IACH,SAAS;IACT,WAAWI,0EAAAA,iBAAiB,gBAAgB,IAAI,mBAAmBC,0EAAAA,eAAe,gBAAgB;GACpG,CAAC;EACH;EAEA,MAAM,mBAA2C;GAC/C,cAAa,YAAW,gBAAgBC,0EAAAA,YAAY,OAAO,QAAQ,WAAW,OAAO,CAAC;GACtF,kBAAkB,gBAAgBA,0EAAAA,YAAY,OAAO,QAAQ,WAAW,IAAI,CAAC;GAC7E,aAAY,WAAU,gBAAgBC,0EAAAA,WAAW,OAAO,QAAQ,WAAW,MAAM,CAAC;GAClF,aAAY,QAAO,gBAAgBC,0EAAAA,WAAW,OAAO,QAAQ,WAAW,GAAG,CAAC;GAC5E,cAAa,SAAQ,gBAAgBC,0EAAAA,YAAY,OAAO,QAAQ,WAAW,IAAI,CAAC;GAChF,cAAa,YAAW,gBAAgBC,0EAAAA,YAAY,OAAO,QAAQ,WAAW,OAAO,CAAC;GACtF,iBAAgB,YAAW,gBAAgBC,0EAAAA,eAAe,OAAO,QAAQ,WAAW,OAAO,CAAC;EAC9F;EAEA,MAAM,aAAa,SAAwB;GACzC,WAAW,UAAU,KAAA;GACrB,cAAc,IAAI;EACpB;EACA,MAAM,iBAAuC;GAG3C,kBAAkB,QAAQ,WAAW;IACnC,MAAM,EAAE,SAAS,MAAM,gBAAgB,WAAW,OAAO;IACzD,MAAM,cAAc,KAAK,OAAO,QAAO,UAAS,OAAO,IAAI,MAAM,OAAO,CAAC;IACzE,cAAcC,0EAAAA,kBAAkB,MAAM,CAAC,GAAG,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;GAC5E;GACA,gBAAe,WAAU,UAAUC,0EAAAA,gBAAgB,OAAO,QAAQ,SAAS,MAAM,CAAC;GAClF,UAAU,OAAO,QAAQ,UAAUC,0EAAAA,UAAU,OAAO,QAAQ,SAAS,OAAO,GAAG,CAAC;GAChF,eAAe,MAAM,OAAO,UAAUC,0EAAAA,eAAe,OAAO,QAAQ,SAAS,MAAM,EAAE,CAAC;GACtF,gBAAgB,MAAM,OAAO;IAC3B,MAAM,OAAO,OAAO,QAAQ;IAC5B,WAAW,UAAUC,8CAAAA,aAAa,WAAW,SAAS,MAAM,MAAM,EAAE;IACpE,cAAc;KAAE,GAAG;KAAM,YAAY;KAAU,UAAU;KAAM,QAAQ;IAAG,CAAC;GAC7E;GACA,iBAAgB,kBAAiB;IAC/B,MAAM,OAAO,OAAO,QAAQ;IAC5B,MAAM,SAASC,8CAAAA,gBAAgB,WAAW,SAAS,IAAI;IACvD,WAAW,UAAU,KAAA;IACrB,cAAc;KAAE,QAAQ,KAAK;KAAQ,QAAQ,KAAK;KAAQ,GAAI,UAAU,EAAE,YAAY,cAAc;IAAG,CAAC;GAC1G;EACF;EACA,MAAM,gBAAgB,SAAqB,OAAO,QAAQ,aAAa,IAAI;EAC3E,OAAO;GAAE;GAAkB;GAAgB;EAAa;CAC1D,GAAG,CAAC,CACuD;CAI3D,MAAM,CAAC,iBAAA,GAAgBC,MAAAA,SAAAA,uBAAe,IAAI,KAAK,CAAC;CAChD,MAAM,sBAAA,GAAqBlB,MAAAA,QAAAA,OACnBmB,sBAAAA,2BAA2B,UAAU,QAAQ,YAAY,GAC/D;EAAC;EAAU;EAAQ;CAAY,CACjC;CAEA,MAAM,SAAS,eAAe,KAAK;CACnC,MAAM,eAAA,GAAcnB,MAAAA,QAAAA,QACX;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,uBAAuB,WAAW;EAClC;EACA;CACF,IACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,WAAW;EACX;EACA;CACF,CACF;CAEA,MAAM,wBAAwB,QAAQ,OAAO,SAAS,KAAK,QAAQ,OAAO,SAAS;CACnF,MAAM,iBAAiB,yBAAyB,QAAQ,eAAe,eAAe,cAAc,CAAC,CAAC;CACtG,MAAM,mBAAA,GAAkBA,MAAAA,QAAAA,OAAcoB,0EAAAA,qBAAqB,UAAU,GAAG,CAAC,UAAU,CAAC;CACpF,MAAM,gBAAA,GAAepB,MAAAA,QAAAA,QACZ;EACL,GAAG;EACH;EACA;EACA;EACA;EACA;EACA;CACF,IACA;EAAC;EAAgB;EAAS;EAAU;EAAQ;EAAgB;EAAuB;CAAe,CACpG;CAIA,MAAM,iBAA8C;EAClD,GAAG;EACH;EACA,iBAAiB,UAAU;CAC7B;CAEA,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACqB,0EAAAA,oBAAoB,UAArB;EAA8B,OAAO;EACnC,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,0EAAAA,qBAAqB,UAAtB;GAA+B,OAAO;GACpC,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,0EAAAA,uBAAuB,UAAxB;IAAiC,OAAO;IACtC,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,mFAAAA,uBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,gFAAAA,oBAAD;KAA0B;KAAoB;KAC3C;IACiB,CAAA,EACC,CAAA;GACQ,CAAA;EACJ,CAAA;CACH,CAAA;AAElC"}
@@ -1,6 +1,7 @@
1
1
  import { useFeedbackAvailable, useObservabilityCapabilities, useSpanQueryAvailable, useThreadQueryAvailable, useTraceQueryAvailable, useTraceQueryDeltaPollingAvailable, useTraceQueryDiscoveryAvailable, useTraceQueryRootDurationAvailable } from "../../../capabilities.es.js";
2
- import { ct as resolveTraceQueryTimeRange } from "../../../../trace-filters-C27yWcan.js";
2
+ import { ft as resolveTraceQueryTimeRange } from "../../../../trace-filters-BJaebsxJ.js";
3
3
  import { DEFAULT_TRACES_FILTERS, applyDate, applyDatePreset, applyDateRange, applyFilterTokens, clearSelection, highlightSpans, isSelectionEmpty, resolveTracesDateWindow, sanitizeTracesFilters, selectScore, selectSpan, selectTrace, selectsRunningStatus, setSpanTab, setSpanView } from "./traces-explorer-actions.es.js";
4
+ import { rangeBeforeZoom, rememberZoom } from "../../../observability/lib/zoom-memory.es.js";
4
5
  import { TracesConfigContext, TracesFiltersContext, TracesSelectionContext } from "./traces-explorer-context.es.js";
5
6
  import { TracesColumnsProvider } from "./traces-explorer-columns-provider.es.js";
6
7
  import { TracesListProvider } from "./traces-explorer-list-provider.es.js";
@@ -29,7 +30,21 @@ function TracesExplorerRoot({ selection, filters: rawFilters, onChange, sort, on
29
30
  const { data: capabilities } = useObservabilityCapabilities();
30
31
  const withTimeToFirstChunk = withQueryTrace && (capabilities?.capabilities.traceQueryTimeToFirstChunk ?? false);
31
32
  const withTimeToFirstChunkSort = withTimeToFirstChunk && (capabilities?.capabilities.traceQueryTimeToFirstChunkSort ?? false);
32
- const filters = useMemo(() => sanitizeTracesFilters(rawFilters, withRootDuration), [rawFilters, withRootDuration]);
33
+ const withTimeToFirstToken = withQueryTrace && (capabilities?.capabilities.traceQueryTimeToFirstToken ?? false);
34
+ const withTimeToFirstTokenSort = withTimeToFirstToken && (capabilities?.capabilities.traceQueryTimeToFirstTokenSort ?? false);
35
+ const withOutcomeFields = withQueryTrace && (capabilities?.capabilities.traceQueryOutcomeFields ?? false);
36
+ const filters = useMemo(() => sanitizeTracesFilters(rawFilters, {
37
+ withRootDuration,
38
+ withTimeToFirstChunk,
39
+ withTimeToFirstToken,
40
+ withOutcomeFields
41
+ }), [
42
+ rawFilters,
43
+ withRootDuration,
44
+ withTimeToFirstChunk,
45
+ withTimeToFirstToken,
46
+ withOutcomeFields
47
+ ]);
33
48
  const isScoped = !!scope;
34
49
  const scopedFieldIds = isScoped ? SCOPED_FIELD_IDS : NO_FIELD_IDS;
35
50
  const hiddenFieldIds = isScoped ? HIDDEN_SCOPED_FIELD_IDS : NO_HIDDEN_FIELD_IDS;
@@ -49,6 +64,7 @@ function TracesExplorerRoot({ selection, filters: rawFilters, onChange, sort, on
49
64
  };
50
65
  const latest = useRef(current);
51
66
  latest.current = current;
67
+ const zoomMemory = useRef(void 0);
52
68
  const { selectionActions, filtersActions, onSortChange } = useMemo(() => {
53
69
  const emit = (next) => {
54
70
  latest.current.selection = next.selection;
@@ -79,15 +95,39 @@ function TracesExplorerRoot({ selection, filters: rawFilters, onChange, sort, on
79
95
  selectScore: (scoreId) => updateSelection(selectScore(latest.current.selection, scoreId)),
80
96
  highlightSpans: (spanIds) => updateSelection(highlightSpans(latest.current.selection, spanIds))
81
97
  };
98
+ const pickRange = (next) => {
99
+ zoomMemory.current = void 0;
100
+ updateFilters(next);
101
+ };
82
102
  const filtersActions = {
83
103
  setFilterTokens: (tokens, groups) => {
84
104
  const { filters: base, scopedFieldIds: scoped } = latest.current;
85
105
  const scopeTokens = base.tokens.filter((token) => scoped.has(token.fieldId));
86
106
  updateFilters(applyFilterTokens(base, [...scopeTokens, ...tokens], groups));
87
107
  },
88
- setDatePreset: (preset) => updateFilters(applyDatePreset(latest.current.filters, preset)),
89
- setDate: (value, end) => updateFilters(applyDate(latest.current.filters, value, end)),
90
- setDateRange: (from, to) => updateFilters(applyDateRange(latest.current.filters, from, to))
108
+ setDatePreset: (preset) => pickRange(applyDatePreset(latest.current.filters, preset)),
109
+ setDate: (value, end) => pickRange(applyDate(latest.current.filters, value, end)),
110
+ setDateRange: (from, to) => pickRange(applyDateRange(latest.current.filters, from, to)),
111
+ zoomDateRange: (from, to) => {
112
+ const base = latest.current.filters;
113
+ zoomMemory.current = rememberZoom(zoomMemory.current, base, from, to);
114
+ updateFilters({
115
+ ...base,
116
+ datePreset: "custom",
117
+ dateFrom: from,
118
+ dateTo: to
119
+ });
120
+ },
121
+ resetDateRange: (defaultPreset) => {
122
+ const base = latest.current.filters;
123
+ const before = rangeBeforeZoom(zoomMemory.current, base);
124
+ zoomMemory.current = void 0;
125
+ updateFilters({
126
+ tokens: base.tokens,
127
+ groups: base.groups,
128
+ ...before ?? { datePreset: defaultPreset }
129
+ });
130
+ }
91
131
  };
92
132
  const onSortChange = (next) => latest.current.onSortChange(next);
93
133
  return {
@@ -112,8 +152,11 @@ function TracesExplorerRoot({ selection, filters: rawFilters, onChange, sort, on
112
152
  withSpanQuery,
113
153
  withThreadQuery,
114
154
  withRootDuration,
155
+ withOutcomeFields,
115
156
  withTimeToFirstChunk,
116
157
  withTimeToFirstChunkSort,
158
+ withTimeToFirstToken,
159
+ withTimeToFirstTokenSort,
117
160
  withDeltaPolling,
118
161
  withDiscovery,
119
162
  isCapabilitiesLoading: traceQuery.isLoading,
@@ -128,8 +171,11 @@ function TracesExplorerRoot({ selection, filters: rawFilters, onChange, sort, on
128
171
  withSpanQuery,
129
172
  withThreadQuery,
130
173
  withRootDuration,
174
+ withOutcomeFields,
131
175
  withTimeToFirstChunk,
132
176
  withTimeToFirstChunkSort,
177
+ withTimeToFirstToken,
178
+ withTimeToFirstTokenSort,
133
179
  withDeltaPolling,
134
180
  withDiscovery,
135
181
  traceQuery.isLoading,