@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
@@ -0,0 +1,119 @@
1
+ import { t as cn } from "../../../utils-DQx8TpNT.js";
2
+ import { formatDuration } from "../../../utils/duration.es.js";
3
+ import { t as Txt } from "../../../Txt-BM6TVV_c.js";
4
+ import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "../../../components/Collapsible.es.js";
5
+ import { DisclosureChevron } from "../../../components/DisclosureChevron.es.js";
6
+ import { TIMELINE_TRACK_PADDING } from "../utils/span-timeline.es.js";
7
+ import { SPAN_TREE_PAD_Y } from "./span-tree-rail.es.js";
8
+ import { TimelineGridlines } from "./span-timeline-row.es.js";
9
+ import { jsx, jsxs } from "react/jsx-runtime";
10
+ import { TimerIcon } from "lucide-react";
11
+ // src/domains/traces/components/trace-span-timeline-markers.tsx
12
+ var SUBGRID_PANEL_STYLE = {
13
+ gridColumn: "1 / -1",
14
+ display: "grid",
15
+ gridTemplateColumns: "subgrid"
16
+ };
17
+ /** A "Metrics" row, closed by default, revealing one row per streaming timing laid out like the span rows. */
18
+ function TimelineTimingRows({ layout }) {
19
+ return /* @__PURE__ */ jsxs(Collapsible, {
20
+ className: "col-span-2 grid grid-cols-subgrid",
21
+ children: [/* @__PURE__ */ jsxs("div", {
22
+ className: "col-span-2 grid grid-cols-subgrid items-stretch",
23
+ children: [/* @__PURE__ */ jsx("div", {
24
+ className: "flex min-w-0 items-center pl-1",
25
+ style: { paddingBlock: SPAN_TREE_PAD_Y },
26
+ children: /* @__PURE__ */ jsxs(CollapsibleTrigger, {
27
+ className: "flex min-w-0 items-center rounded-sm text-muted-foreground",
28
+ children: [/* @__PURE__ */ jsx("span", {
29
+ "aria-hidden": true,
30
+ className: "flex shrink-0 items-center justify-center",
31
+ style: {
32
+ width: 24,
33
+ height: 20
34
+ },
35
+ children: /* @__PURE__ */ jsx(DisclosureChevron, {
36
+ direction: "right",
37
+ className: "size-3"
38
+ })
39
+ }), /* @__PURE__ */ jsx(Txt, {
40
+ as: "span",
41
+ variant: "body-sm",
42
+ className: "min-w-0 truncate px-2",
43
+ children: "Metrics"
44
+ })]
45
+ })
46
+ }), /* @__PURE__ */ jsx("div", {
47
+ className: cn("flex min-w-0", TIMELINE_TRACK_PADDING),
48
+ children: /* @__PURE__ */ jsx("div", {
49
+ className: "relative flex-1",
50
+ children: /* @__PURE__ */ jsx(TimelineGridlines, {})
51
+ })
52
+ })]
53
+ }), /* @__PURE__ */ jsxs(CollapsibleContent, {
54
+ style: SUBGRID_PANEL_STYLE,
55
+ className: "col-span-2 grid grid-cols-subgrid gap-y-px",
56
+ children: [/* @__PURE__ */ jsx(TimingRow, {
57
+ name: "Time to first chunk",
58
+ bar: layout.firstChunk
59
+ }), layout.firstToken && /* @__PURE__ */ jsx(TimingRow, {
60
+ name: "Time to first token",
61
+ bar: layout.firstToken
62
+ })]
63
+ })]
64
+ });
65
+ }
66
+ function TimingRow({ name, bar }) {
67
+ const { durationMs, leftPercent, widthPercent } = bar;
68
+ return /* @__PURE__ */ jsxs("div", {
69
+ role: "group",
70
+ "aria-label": name,
71
+ className: "col-span-2 grid grid-cols-subgrid items-stretch",
72
+ children: [/* @__PURE__ */ jsxs("div", {
73
+ className: "flex min-w-0 items-center pl-1",
74
+ style: { paddingBlock: SPAN_TREE_PAD_Y },
75
+ children: [/* @__PURE__ */ jsx("span", {
76
+ "aria-hidden": true,
77
+ className: "flex shrink-0 items-center justify-center text-muted-foreground [&>svg]:size-3.5",
78
+ style: {
79
+ width: 24,
80
+ height: 20
81
+ },
82
+ children: /* @__PURE__ */ jsx(TimerIcon, {})
83
+ }), /* @__PURE__ */ jsx(Txt, {
84
+ as: "span",
85
+ variant: "body-sm",
86
+ tone: "muted",
87
+ className: "min-w-0 truncate px-2",
88
+ children: name
89
+ })]
90
+ }), /* @__PURE__ */ jsx("div", {
91
+ className: cn("flex min-w-0", TIMELINE_TRACK_PADDING),
92
+ children: /* @__PURE__ */ jsxs("div", {
93
+ className: "relative flex-1",
94
+ children: [
95
+ /* @__PURE__ */ jsx(TimelineGridlines, {}),
96
+ /* @__PURE__ */ jsx("div", {
97
+ "data-testid": "streaming-timing-bar",
98
+ className: "absolute top-1/2 h-3 -translate-y-1/2 rounded-sm border border-dashed border-muted-foreground bg-fill-subtle",
99
+ style: {
100
+ left: `${leftPercent}%`,
101
+ width: widthPercent ? `${widthPercent}%` : "2px"
102
+ }
103
+ }),
104
+ /* @__PURE__ */ jsx(Txt, {
105
+ as: "span",
106
+ variant: "body-sm",
107
+ tone: "muted",
108
+ className: "absolute top-1/2 ml-1.5 -translate-y-1/2 whitespace-nowrap tabular-nums",
109
+ style: { left: `${leftPercent + widthPercent}%` },
110
+ children: formatDuration(durationMs)
111
+ })
112
+ ]
113
+ })
114
+ })]
115
+ });
116
+ }
117
+ export { TimelineTimingRows };
118
+
119
+ //# sourceMappingURL=trace-span-timeline-markers.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-span-timeline-markers.es.js","names":[],"sources":["../../../../src/domains/traces/components/trace-span-timeline-markers.tsx"],"sourcesContent":["import { TimerIcon } from 'lucide-react';\nimport { TIMELINE_TRACK_PADDING } from '../utils/span-timeline';\nimport type { TimelineMarkersLayout, TimelineTimingBar } from '../utils/timeline-markers';\nimport { TimelineGridlines } from './span-timeline-row';\nimport { SPAN_TREE_INDENT, SPAN_TREE_LINE, SPAN_TREE_PAD_Y } from './span-tree-rail';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/ds/components/Collapsible';\nimport { DisclosureChevron } from '@/ds/components/DisclosureChevron';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\nimport { formatDuration } from '@/utils/duration';\n\n// The panel sits in the timeline grid, so it spans both columns and hands them down to the rows.\nconst SUBGRID_PANEL_STYLE = { gridColumn: '1 / -1', display: 'grid', gridTemplateColumns: 'subgrid' } as const;\n\n/** A \"Metrics\" row, closed by default, revealing one row per streaming timing laid out like the span rows. */\nexport function TimelineTimingRows({ layout }: { layout: TimelineMarkersLayout }) {\n return (\n <Collapsible className=\"col-span-2 grid grid-cols-subgrid\">\n <div className=\"col-span-2 grid grid-cols-subgrid items-stretch\">\n <div className=\"flex min-w-0 items-center pl-1\" style={{ paddingBlock: SPAN_TREE_PAD_Y }}>\n <CollapsibleTrigger className=\"flex min-w-0 items-center rounded-sm text-muted-foreground\">\n <span\n aria-hidden\n className=\"flex shrink-0 items-center justify-center\"\n style={{ width: SPAN_TREE_INDENT, height: SPAN_TREE_LINE }}\n >\n <DisclosureChevron direction=\"right\" className=\"size-3\" />\n </span>\n <Txt as=\"span\" variant=\"body-sm\" className=\"min-w-0 truncate px-2\">\n Metrics\n </Txt>\n </CollapsibleTrigger>\n </div>\n <div className={cn('flex min-w-0', TIMELINE_TRACK_PADDING)}>\n <div className=\"relative flex-1\">\n <TimelineGridlines />\n </div>\n </div>\n </div>\n <CollapsibleContent style={SUBGRID_PANEL_STYLE} className=\"col-span-2 grid grid-cols-subgrid gap-y-px\">\n <TimingRow name=\"Time to first chunk\" bar={layout.firstChunk} />\n {layout.firstToken && <TimingRow name=\"Time to first token\" bar={layout.firstToken} />}\n </CollapsibleContent>\n </Collapsible>\n );\n}\n\nfunction TimingRow({ name, bar }: { name: string; bar: TimelineTimingBar }) {\n const { durationMs, leftPercent, widthPercent } = bar;\n\n return (\n <div role=\"group\" aria-label={name} className=\"col-span-2 grid grid-cols-subgrid items-stretch\">\n <div className=\"flex min-w-0 items-center pl-1\" style={{ paddingBlock: SPAN_TREE_PAD_Y }}>\n <span\n aria-hidden\n className=\"flex shrink-0 items-center justify-center text-muted-foreground [&>svg]:size-3.5\"\n style={{ width: SPAN_TREE_INDENT, height: SPAN_TREE_LINE }}\n >\n <TimerIcon />\n </span>\n <Txt as=\"span\" variant=\"body-sm\" tone=\"muted\" className=\"min-w-0 truncate px-2\">\n {name}\n </Txt>\n </div>\n\n <div className={cn('flex min-w-0', TIMELINE_TRACK_PADDING)}>\n <div className=\"relative flex-1\">\n <TimelineGridlines />\n <div\n data-testid=\"streaming-timing-bar\"\n className=\"absolute top-1/2 h-3 -translate-y-1/2 rounded-sm border border-dashed border-muted-foreground bg-fill-subtle\"\n style={{ left: `${leftPercent}%`, width: widthPercent ? `${widthPercent}%` : '2px' }}\n />\n <Txt\n as=\"span\"\n variant=\"body-sm\"\n tone=\"muted\"\n className=\"absolute top-1/2 ml-1.5 -translate-y-1/2 whitespace-nowrap tabular-nums\"\n style={{ left: `${leftPercent + widthPercent}%` }}\n >\n {formatDuration(durationMs)}\n </Txt>\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;AAYA,IAAM,sBAAsB;CAAE,YAAY;CAAU,SAAS;CAAQ,qBAAqB;AAAU;;AAGpG,SAAgB,mBAAmB,EAAE,UAA6C;CAChF,OACE,qBAAC,aAAD;EAAa,WAAU;EAAvB,UAAA,CACE,qBAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACE,oBAAC,OAAD;IAAK,WAAU;IAAiC,OAAO,EAAE,cAAc,gBAAgB;IACrF,UAAA,qBAAC,oBAAD;KAAoB,WAAU;KAA9B,UAAA,CACE,oBAAC,QAAD;MACE,eAAA;MACA,WAAU;MACV,OAAO;OAAE,OAAA;OAAyB,QAAA;MAAuB;MAEzD,UAAA,oBAAC,mBAAD;OAAmB,WAAU;OAAQ,WAAU;MAAU,CAAA;KACrD,CAAA,GACN,oBAAC,KAAD;MAAK,IAAG;MAAO,SAAQ;MAAU,WAAU;MAAwB,UAAA;KAE9D,CAAA,CACa;;GACjB,CAAA,GACL,oBAAC,OAAD;IAAK,WAAW,GAAG,gBAAgB,sBAAsB;IACvD,UAAA,oBAAC,OAAD;KAAK,WAAU;KACb,UAAA,oBAAC,mBAAD,CAAoB,CAAA;IACjB,CAAA;GACF,CAAA,CACF;EACL,CAAA,GAAA,qBAAC,oBAAD;GAAoB,OAAO;GAAqB,WAAU;GAA1D,UAAA,CACE,oBAAC,WAAD;IAAW,MAAK;IAAsB,KAAK,OAAO;GAAa,CAAA,GAC9D,OAAO,cAAc,oBAAC,WAAD;IAAW,MAAK;IAAsB,KAAK,OAAO;GAAa,CAAA,CACnE;EACT,CAAA,CAAA;;AAEjB;AAEA,SAAS,UAAU,EAAE,MAAM,OAAiD;CAC1E,MAAM,EAAE,YAAY,aAAa,iBAAiB;CAElD,OACE,qBAAC,OAAD;EAAK,MAAK;EAAQ,cAAY;EAAM,WAAU;EAA9C,UAAA,CACE,qBAAC,OAAD;GAAK,WAAU;GAAiC,OAAO,EAAE,cAAc,gBAAgB;GAAvF,UAAA,CACE,oBAAC,QAAD;IACE,eAAA;IACA,WAAU;IACV,OAAO;KAAE,OAAA;KAAyB,QAAA;IAAuB;IAEzD,UAAA,oBAAC,WAAD,CAAY,CAAA;GACR,CAAA,GACN,oBAAC,KAAD;IAAK,IAAG;IAAO,SAAQ;IAAU,MAAK;IAAQ,WAAU;IACrD,UAAA;GACE,CAAA,CACF;EAEL,CAAA,GAAA,oBAAC,OAAD;GAAK,WAAW,GAAG,gBAAgB,sBAAsB;GACvD,UAAA,qBAAC,OAAD;IAAK,WAAU;IAAf,UAAA;KACE,oBAAC,mBAAD,CAAoB,CAAA;KACpB,oBAAC,OAAD;MACE,eAAY;MACZ,WAAU;MACV,OAAO;OAAE,MAAM,GAAG,YAAY;OAAI,OAAO,eAAe,GAAG,aAAa,KAAK;MAAM;KACpF,CAAA;KACD,oBAAC,KAAD;MACE,IAAG;MACH,SAAQ;MACR,MAAK;MACL,WAAU;MACV,OAAO,EAAE,MAAM,GAAG,cAAc,aAAa,GAAG;MAE/C,UAAA,eAAe,UAAU;KACvB,CAAA;IACF;;EACF,CAAA,CACF;;AAET"}
@@ -6,9 +6,10 @@ const require_domains_traces_components_span_rows = require("./span-rows.cjs.js"
6
6
  const require_domains_traces_utils_span_timeline = require("../utils/span-timeline.cjs.js");
7
7
  const require_domains_traces_components_trace_span_tree = require("./trace-span-tree.cjs.js");
8
8
  const require_domains_traces_components_span_timeline_row = require("./span-timeline-row.cjs.js");
9
+ const require_domains_traces_utils_timeline_markers = require("../utils/timeline-markers.cjs.js");
10
+ const require_domains_traces_components_trace_span_timeline_markers = require("./trace-span-timeline-markers.cjs.js");
9
11
  let react_jsx_runtime = require("react/jsx-runtime");
10
12
  // src/domains/traces/components/trace-span-timeline.tsx
11
- /** Axis ticks are approximate gridline marks, so two decimals are enough: `250 ms`, `3.74 s`. */
12
13
  function formatTick(durationMs) {
13
14
  return durationMs < 1e3 ? `${Math.round(durationMs)} ms` : `${(durationMs / 1e3).toFixed(2)} s`;
14
15
  }
@@ -17,18 +18,19 @@ function formatTick(durationMs) {
17
18
  * but each row is a compact name cell plus a bar on a shared time axis. Rendered with its
18
19
  * own row component (`SpanTimelineRow`), independent from the tree's rows.
19
20
  */
20
- function TraceSpanTimeline({ hierarchicalSpans = [], onSpanClick, selectedSpanId, isLoading, fadedTypes, expandedSpanIds, setExpandedSpanIds, featuredSpanIds, revealSpanId, leadingSlot }) {
21
+ function TraceSpanTimeline({ hierarchicalSpans = [], onSpanClick, selectedSpanId, isLoading, fadedTypes, expandedSpanIds, setExpandedSpanIds, featuredSpanIds, revealSpanId, leadingSlot, streamingTimings }) {
21
22
  if (isLoading) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_domains_traces_components_trace_span_tree.TraceSpanTreeLoading, {});
22
23
  const overallLatency = require_domains_traces_utils_span_timing.getOverallLatency(hierarchicalSpans);
24
+ const markers = require_domains_traces_utils_timeline_markers.getTimelineMarkersLayout(hierarchicalSpans, overallLatency, streamingTimings);
23
25
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [leadingSlot, /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
24
26
  className: "grid grid-cols-[minmax(12rem,2fr)_minmax(12rem,3fr)] content-start gap-y-px overflow-hidden py-1",
25
27
  children: [
26
28
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {}),
27
29
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
28
- "aria-label": "Trace time axis",
29
- className: require_utils.cn("flex", require_domains_traces_utils_span_timeline.TIMELINE_TRACK_PADDING),
30
+ className: require_domains_traces_utils_span_timeline.TIMELINE_TRACK_PADDING,
30
31
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
31
- className: "relative h-6 flex-1 tabular-nums",
32
+ "aria-label": "Trace time axis",
33
+ className: "relative h-6 tabular-nums",
32
34
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_domains_traces_components_span_timeline_row.TimelineGridlines, {}), require_domains_traces_utils_span_timeline.TIMELINE_TICKS.map((tick, index) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Txt.Txt, {
33
35
  tone: "muted",
34
36
  as: "span",
@@ -39,6 +41,7 @@ function TraceSpanTimeline({ hierarchicalSpans = [], onSpanClick, selectedSpanId
39
41
  }, tick))]
40
42
  })
41
43
  }),
44
+ markers && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_domains_traces_components_trace_span_timeline_markers.TimelineTimingRows, { layout: markers }),
42
45
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_domains_traces_components_span_rows.SpanRows, {
43
46
  spans: hierarchicalSpans,
44
47
  onSpanClick,
@@ -1 +1 @@
1
- {"version":3,"file":"trace-span-timeline.cjs.js","names":["TraceSpanTreeLoading","getOverallLatency","_Fragment","cn","TIMELINE_TRACK_PADDING","TimelineGridlines","TIMELINE_TICKS","Txt","SpanRows","SpanTimelineRow"],"sources":["../../../../src/domains/traces/components/trace-span-timeline.tsx"],"sourcesContent":["import type { Dispatch, ReactNode, SetStateAction } from 'react';\nimport type { UISpan } from '../types';\nimport { TIMELINE_TICKS, TIMELINE_TRACK_PADDING } from '../utils/span-timeline';\nimport { getOverallLatency } from '../utils/span-timing';\nimport { SpanRows } from './span-rows';\nimport { SpanTimelineRow, TimelineGridlines } from './span-timeline-row';\nimport { TraceSpanTreeLoading } from './trace-span-tree';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\n/** Axis ticks are approximate gridline marks, so two decimals are enough: `250 ms`, `3.74 s`. */\nfunction formatTick(durationMs: number) {\n return durationMs < 1_000 ? `${Math.round(durationMs)} ms` : `${(durationMs / 1_000).toFixed(2)} s`;\n}\n\nexport type TraceSpanTimelineProps = {\n hierarchicalSpans: UISpan[];\n onSpanClick: (id: string) => void;\n selectedSpanId?: string;\n isLoading?: boolean;\n fadedTypes?: string[];\n expandedSpanIds?: string[];\n setExpandedSpanIds?: Dispatch<SetStateAction<string[]>>;\n featuredSpanIds?: string[];\n /** Row scrolled into view once it is mounted (ancestors auto-expand when the span is featured). */\n revealSpanId?: string;\n /** Rendered full-width above the span rows. */\n leadingSlot?: ReactNode;\n};\n\n/**\n * Gantt-style view of a trace: the same hierarchy and expansion state as `TraceSpanTree`,\n * but each row is a compact name cell plus a bar on a shared time axis. Rendered with its\n * own row component (`SpanTimelineRow`), independent from the tree's rows.\n */\nexport function TraceSpanTimeline({\n hierarchicalSpans = [],\n onSpanClick,\n selectedSpanId,\n isLoading,\n fadedTypes,\n expandedSpanIds,\n setExpandedSpanIds,\n featuredSpanIds,\n revealSpanId,\n leadingSlot,\n}: TraceSpanTimelineProps) {\n if (isLoading) return <TraceSpanTreeLoading />;\n\n const overallLatency = getOverallLatency(hierarchicalSpans);\n\n return (\n <>\n {leadingSlot}\n <div className=\"grid grid-cols-[minmax(12rem,2fr)_minmax(12rem,3fr)] content-start gap-y-px overflow-hidden py-1\">\n {/* Header row: empty name cell, then the axis on the same track as the bars. */}\n <div />\n <div aria-label=\"Trace time axis\" className={cn('flex', TIMELINE_TRACK_PADDING)}>\n <div className=\"relative h-6 flex-1 tabular-nums\">\n <TimelineGridlines />\n {TIMELINE_TICKS.map((tick, index) => (\n <Txt\n tone=\"muted\"\n as=\"span\"\n variant=\"meta\"\n key={tick}\n style={{ left: `${tick * 100}%` }}\n // Each label sits just after its gridline; the last one lands in the track's right padding.\n className={cn(\n 'absolute top-0.5 px-1.5 whitespace-nowrap',\n index > 0 && index < TIMELINE_TICKS.length - 1 && 'hidden sm:inline',\n )}\n >\n {formatTick(overallLatency * tick)}\n </Txt>\n ))}\n </div>\n </div>\n <SpanRows\n spans={hierarchicalSpans}\n onSpanClick={onSpanClick}\n selectedSpanId={selectedSpanId}\n revealSpanId={revealSpanId}\n fadedTypes={fadedTypes}\n featuredSpanIds={featuredSpanIds}\n expandedSpanIds={expandedSpanIds}\n setExpandedSpanIds={setExpandedSpanIds}\n renderRow={ctx => <SpanTimelineRow ctx={ctx} />}\n />\n </div>\n </>\n );\n}\n"],"mappings":";;;;;;;;;;;AAWA,SAAS,WAAW,YAAoB;CACtC,OAAO,aAAa,MAAQ,GAAG,KAAK,MAAM,UAAU,EAAE,OAAO,IAAI,aAAa,IAAA,CAAO,QAAQ,CAAC,EAAE;AAClG;;;;;;AAsBA,SAAgB,kBAAkB,EAChC,oBAAoB,CAAC,GACrB,aACA,gBACA,WACA,YACA,iBACA,oBACA,iBACA,cACA,eACyB;CACzB,IAAI,WAAW,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAACA,kDAAAA,sBAAD,CAAuB,CAAA;CAE7C,MAAM,iBAAiBC,yCAAAA,kBAAkB,iBAAiB;CAE1D,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAAC,kBAAAA,UAAA,EAAA,UAAA,CACG,aACD,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;EAAK,WAAU;EAAf,UAAA;GAEE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD,CAAM,CAAA;GACN,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;IAAK,cAAW;IAAkB,WAAWC,cAAAA,GAAG,QAAQC,2CAAAA,sBAAsB;IAC5E,UAAA,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;KAAK,WAAU;KAAf,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,oDAAAA,mBAAD,CAAoB,CAAA,GACnBC,2CAAAA,eAAe,KAAK,MAAM,UACzB,iBAAA,GAAA,kBAAA,IAAA,CAACC,YAAAA,KAAD;MACE,MAAK;MACL,IAAG;MACH,SAAQ;MAER,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI,GAAG;MAEhC,WAAWJ,cAAAA,GACT,6CACA,QAAQ,KAAK,QAAQG,2CAAAA,eAAe,SAAS,KAAK,kBACpD;MAEC,UAAA,WAAW,iBAAiB,IAAI;KAC9B,GATE,IASF,CACN,CACE;;GACF,CAAA;GACL,iBAAA,GAAA,kBAAA,IAAA,CAACE,4CAAAA,UAAD;IACE,OAAO;IACM;IACG;IACF;IACF;IACK;IACA;IACG;IACpB,YAAW,QAAO,iBAAA,GAAA,kBAAA,IAAA,CAACC,oDAAAA,iBAAD,EAAsB,IAAM,CAAA;GAC/C,CAAA;EACE;CACL,CAAA,CAAA,EAAA,CAAA;AAEN"}
1
+ {"version":3,"file":"trace-span-timeline.cjs.js","names":["TraceSpanTreeLoading","getOverallLatency","getTimelineMarkersLayout","_Fragment","TIMELINE_TRACK_PADDING","TimelineGridlines","TIMELINE_TICKS","Txt","cn","TimelineTimingRows","SpanRows","SpanTimelineRow"],"sources":["../../../../src/domains/traces/components/trace-span-timeline.tsx"],"sourcesContent":["import type { Dispatch, ReactNode, SetStateAction } from 'react';\nimport type { UISpan } from '../types';\nimport { TIMELINE_TICKS, TIMELINE_TRACK_PADDING } from '../utils/span-timeline';\nimport { getOverallLatency } from '../utils/span-timing';\nimport { getTimelineMarkersLayout } from '../utils/timeline-markers';\nimport type { TraceStreamingTimings } from '../utils/timeline-markers';\nimport { SpanRows } from './span-rows';\nimport { SpanTimelineRow, TimelineGridlines } from './span-timeline-row';\nimport { TimelineTimingRows } from './trace-span-timeline-markers';\nimport { TraceSpanTreeLoading } from './trace-span-tree';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\n/** Axis ticks are approximate gridline marks, so two decimals are enough: `250 ms`, `3.74 s`. */\nexport type { TraceStreamingTimings };\n\nfunction formatTick(durationMs: number) {\n return durationMs < 1_000 ? `${Math.round(durationMs)} ms` : `${(durationMs / 1_000).toFixed(2)} s`;\n}\n\nexport type TraceSpanTimelineProps = {\n hierarchicalSpans: UISpan[];\n onSpanClick: (id: string) => void;\n selectedSpanId?: string;\n isLoading?: boolean;\n fadedTypes?: string[];\n expandedSpanIds?: string[];\n setExpandedSpanIds?: Dispatch<SetStateAction<string[]>>;\n featuredSpanIds?: string[];\n /** Row scrolled into view once it is mounted (ancestors auto-expand when the span is featured). */\n revealSpanId?: string;\n /** Rendered full-width above the span rows. */\n leadingSlot?: ReactNode;\n /** Adds a collapsed \"Metrics\" row above the spans, revealing a row per streaming timing. */\n streamingTimings?: TraceStreamingTimings;\n};\n\n/**\n * Gantt-style view of a trace: the same hierarchy and expansion state as `TraceSpanTree`,\n * but each row is a compact name cell plus a bar on a shared time axis. Rendered with its\n * own row component (`SpanTimelineRow`), independent from the tree's rows.\n */\nexport function TraceSpanTimeline({\n hierarchicalSpans = [],\n onSpanClick,\n selectedSpanId,\n isLoading,\n fadedTypes,\n expandedSpanIds,\n setExpandedSpanIds,\n featuredSpanIds,\n revealSpanId,\n leadingSlot,\n streamingTimings,\n}: TraceSpanTimelineProps) {\n if (isLoading) return <TraceSpanTreeLoading />;\n\n const overallLatency = getOverallLatency(hierarchicalSpans);\n const markers = getTimelineMarkersLayout(hierarchicalSpans, overallLatency, streamingTimings);\n\n return (\n <>\n {leadingSlot}\n <div className=\"grid grid-cols-[minmax(12rem,2fr)_minmax(12rem,3fr)] content-start gap-y-px overflow-hidden py-1\">\n {/* Header row: empty name cell, then the axis on the same track as the bars. */}\n <div />\n <div className={TIMELINE_TRACK_PADDING}>\n <div aria-label=\"Trace time axis\" className=\"relative h-6 tabular-nums\">\n <TimelineGridlines />\n {TIMELINE_TICKS.map((tick, index) => (\n <Txt\n tone=\"muted\"\n as=\"span\"\n variant=\"meta\"\n key={tick}\n style={{ left: `${tick * 100}%` }}\n // Each label sits just after its gridline; the last one lands in the track's right padding.\n className={cn(\n 'absolute top-0.5 px-1.5 whitespace-nowrap',\n index > 0 && index < TIMELINE_TICKS.length - 1 && 'hidden sm:inline',\n )}\n >\n {formatTick(overallLatency * tick)}\n </Txt>\n ))}\n </div>\n </div>\n {markers && <TimelineTimingRows layout={markers} />}\n <SpanRows\n spans={hierarchicalSpans}\n onSpanClick={onSpanClick}\n selectedSpanId={selectedSpanId}\n revealSpanId={revealSpanId}\n fadedTypes={fadedTypes}\n featuredSpanIds={featuredSpanIds}\n expandedSpanIds={expandedSpanIds}\n setExpandedSpanIds={setExpandedSpanIds}\n renderRow={ctx => <SpanTimelineRow ctx={ctx} />}\n />\n </div>\n </>\n );\n}\n"],"mappings":";;;;;;;;;;;;AAgBA,SAAS,WAAW,YAAoB;CACtC,OAAO,aAAa,MAAQ,GAAG,KAAK,MAAM,UAAU,EAAE,OAAO,IAAI,aAAa,IAAA,CAAO,QAAQ,CAAC,EAAE;AAClG;;;;;;AAwBA,SAAgB,kBAAkB,EAChC,oBAAoB,CAAC,GACrB,aACA,gBACA,WACA,YACA,iBACA,oBACA,iBACA,cACA,aACA,oBACyB;CACzB,IAAI,WAAW,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAACA,kDAAAA,sBAAD,CAAuB,CAAA;CAE7C,MAAM,iBAAiBC,yCAAAA,kBAAkB,iBAAiB;CAC1D,MAAM,UAAUC,8CAAAA,yBAAyB,mBAAmB,gBAAgB,gBAAgB;CAE5F,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAAC,kBAAAA,UAAA,EAAA,UAAA,CACG,aACD,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;EAAK,WAAU;EAAf,UAAA;GAEE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD,CAAM,CAAA;GACN,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;IAAK,WAAWC,2CAAAA;IACd,UAAA,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;KAAK,cAAW;KAAkB,WAAU;KAA5C,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,oDAAAA,mBAAD,CAAoB,CAAA,GACnBC,2CAAAA,eAAe,KAAK,MAAM,UACzB,iBAAA,GAAA,kBAAA,IAAA,CAACC,YAAAA,KAAD;MACE,MAAK;MACL,IAAG;MACH,SAAQ;MAER,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI,GAAG;MAEhC,WAAWC,cAAAA,GACT,6CACA,QAAQ,KAAK,QAAQF,2CAAAA,eAAe,SAAS,KAAK,kBACpD;MAEC,UAAA,WAAW,iBAAiB,IAAI;KAC9B,GATE,IASF,CACN,CACE;;GACF,CAAA;GACJ,WAAW,iBAAA,GAAA,kBAAA,IAAA,CAACG,8DAAAA,oBAAD,EAAoB,QAAQ,QAAU,CAAA;GAClD,iBAAA,GAAA,kBAAA,IAAA,CAACC,4CAAAA,UAAD;IACE,OAAO;IACM;IACG;IACF;IACF;IACK;IACA;IACG;IACpB,YAAW,QAAO,iBAAA,GAAA,kBAAA,IAAA,CAACC,oDAAAA,iBAAD,EAAsB,IAAM,CAAA;GAC/C,CAAA;EACE;CACL,CAAA,CAAA,EAAA,CAAA;AAEN"}
@@ -5,9 +5,10 @@ import { SpanRows } from "./span-rows.es.js";
5
5
  import { TIMELINE_TICKS, TIMELINE_TRACK_PADDING } from "../utils/span-timeline.es.js";
6
6
  import { TraceSpanTreeLoading } from "./trace-span-tree.es.js";
7
7
  import { SpanTimelineRow, TimelineGridlines } from "./span-timeline-row.es.js";
8
+ import { getTimelineMarkersLayout } from "../utils/timeline-markers.es.js";
9
+ import { TimelineTimingRows } from "./trace-span-timeline-markers.es.js";
8
10
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
9
11
  // src/domains/traces/components/trace-span-timeline.tsx
10
- /** Axis ticks are approximate gridline marks, so two decimals are enough: `250 ms`, `3.74 s`. */
11
12
  function formatTick(durationMs) {
12
13
  return durationMs < 1e3 ? `${Math.round(durationMs)} ms` : `${(durationMs / 1e3).toFixed(2)} s`;
13
14
  }
@@ -16,18 +17,19 @@ function formatTick(durationMs) {
16
17
  * but each row is a compact name cell plus a bar on a shared time axis. Rendered with its
17
18
  * own row component (`SpanTimelineRow`), independent from the tree's rows.
18
19
  */
19
- function TraceSpanTimeline({ hierarchicalSpans = [], onSpanClick, selectedSpanId, isLoading, fadedTypes, expandedSpanIds, setExpandedSpanIds, featuredSpanIds, revealSpanId, leadingSlot }) {
20
+ function TraceSpanTimeline({ hierarchicalSpans = [], onSpanClick, selectedSpanId, isLoading, fadedTypes, expandedSpanIds, setExpandedSpanIds, featuredSpanIds, revealSpanId, leadingSlot, streamingTimings }) {
20
21
  if (isLoading) return /* @__PURE__ */ jsx(TraceSpanTreeLoading, {});
21
22
  const overallLatency = getOverallLatency(hierarchicalSpans);
23
+ const markers = getTimelineMarkersLayout(hierarchicalSpans, overallLatency, streamingTimings);
22
24
  return /* @__PURE__ */ jsxs(Fragment, { children: [leadingSlot, /* @__PURE__ */ jsxs("div", {
23
25
  className: "grid grid-cols-[minmax(12rem,2fr)_minmax(12rem,3fr)] content-start gap-y-px overflow-hidden py-1",
24
26
  children: [
25
27
  /* @__PURE__ */ jsx("div", {}),
26
28
  /* @__PURE__ */ jsx("div", {
27
- "aria-label": "Trace time axis",
28
- className: cn("flex", TIMELINE_TRACK_PADDING),
29
+ className: TIMELINE_TRACK_PADDING,
29
30
  children: /* @__PURE__ */ jsxs("div", {
30
- className: "relative h-6 flex-1 tabular-nums",
31
+ "aria-label": "Trace time axis",
32
+ className: "relative h-6 tabular-nums",
31
33
  children: [/* @__PURE__ */ jsx(TimelineGridlines, {}), TIMELINE_TICKS.map((tick, index) => /* @__PURE__ */ jsx(Txt, {
32
34
  tone: "muted",
33
35
  as: "span",
@@ -38,6 +40,7 @@ function TraceSpanTimeline({ hierarchicalSpans = [], onSpanClick, selectedSpanId
38
40
  }, tick))]
39
41
  })
40
42
  }),
43
+ markers && /* @__PURE__ */ jsx(TimelineTimingRows, { layout: markers }),
41
44
  /* @__PURE__ */ jsx(SpanRows, {
42
45
  spans: hierarchicalSpans,
43
46
  onSpanClick,
@@ -1 +1 @@
1
- {"version":3,"file":"trace-span-timeline.es.js","names":["_Fragment"],"sources":["../../../../src/domains/traces/components/trace-span-timeline.tsx"],"sourcesContent":["import type { Dispatch, ReactNode, SetStateAction } from 'react';\nimport type { UISpan } from '../types';\nimport { TIMELINE_TICKS, TIMELINE_TRACK_PADDING } from '../utils/span-timeline';\nimport { getOverallLatency } from '../utils/span-timing';\nimport { SpanRows } from './span-rows';\nimport { SpanTimelineRow, TimelineGridlines } from './span-timeline-row';\nimport { TraceSpanTreeLoading } from './trace-span-tree';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\n/** Axis ticks are approximate gridline marks, so two decimals are enough: `250 ms`, `3.74 s`. */\nfunction formatTick(durationMs: number) {\n return durationMs < 1_000 ? `${Math.round(durationMs)} ms` : `${(durationMs / 1_000).toFixed(2)} s`;\n}\n\nexport type TraceSpanTimelineProps = {\n hierarchicalSpans: UISpan[];\n onSpanClick: (id: string) => void;\n selectedSpanId?: string;\n isLoading?: boolean;\n fadedTypes?: string[];\n expandedSpanIds?: string[];\n setExpandedSpanIds?: Dispatch<SetStateAction<string[]>>;\n featuredSpanIds?: string[];\n /** Row scrolled into view once it is mounted (ancestors auto-expand when the span is featured). */\n revealSpanId?: string;\n /** Rendered full-width above the span rows. */\n leadingSlot?: ReactNode;\n};\n\n/**\n * Gantt-style view of a trace: the same hierarchy and expansion state as `TraceSpanTree`,\n * but each row is a compact name cell plus a bar on a shared time axis. Rendered with its\n * own row component (`SpanTimelineRow`), independent from the tree's rows.\n */\nexport function TraceSpanTimeline({\n hierarchicalSpans = [],\n onSpanClick,\n selectedSpanId,\n isLoading,\n fadedTypes,\n expandedSpanIds,\n setExpandedSpanIds,\n featuredSpanIds,\n revealSpanId,\n leadingSlot,\n}: TraceSpanTimelineProps) {\n if (isLoading) return <TraceSpanTreeLoading />;\n\n const overallLatency = getOverallLatency(hierarchicalSpans);\n\n return (\n <>\n {leadingSlot}\n <div className=\"grid grid-cols-[minmax(12rem,2fr)_minmax(12rem,3fr)] content-start gap-y-px overflow-hidden py-1\">\n {/* Header row: empty name cell, then the axis on the same track as the bars. */}\n <div />\n <div aria-label=\"Trace time axis\" className={cn('flex', TIMELINE_TRACK_PADDING)}>\n <div className=\"relative h-6 flex-1 tabular-nums\">\n <TimelineGridlines />\n {TIMELINE_TICKS.map((tick, index) => (\n <Txt\n tone=\"muted\"\n as=\"span\"\n variant=\"meta\"\n key={tick}\n style={{ left: `${tick * 100}%` }}\n // Each label sits just after its gridline; the last one lands in the track's right padding.\n className={cn(\n 'absolute top-0.5 px-1.5 whitespace-nowrap',\n index > 0 && index < TIMELINE_TICKS.length - 1 && 'hidden sm:inline',\n )}\n >\n {formatTick(overallLatency * tick)}\n </Txt>\n ))}\n </div>\n </div>\n <SpanRows\n spans={hierarchicalSpans}\n onSpanClick={onSpanClick}\n selectedSpanId={selectedSpanId}\n revealSpanId={revealSpanId}\n fadedTypes={fadedTypes}\n featuredSpanIds={featuredSpanIds}\n expandedSpanIds={expandedSpanIds}\n setExpandedSpanIds={setExpandedSpanIds}\n renderRow={ctx => <SpanTimelineRow ctx={ctx} />}\n />\n </div>\n </>\n );\n}\n"],"mappings":";;;;;;;;;;AAWA,SAAS,WAAW,YAAoB;CACtC,OAAO,aAAa,MAAQ,GAAG,KAAK,MAAM,UAAU,EAAE,OAAO,IAAI,aAAa,IAAA,CAAO,QAAQ,CAAC,EAAE;AAClG;;;;;;AAsBA,SAAgB,kBAAkB,EAChC,oBAAoB,CAAC,GACrB,aACA,gBACA,WACA,YACA,iBACA,oBACA,iBACA,cACA,eACyB;CACzB,IAAI,WAAW,OAAO,oBAAC,sBAAD,CAAuB,CAAA;CAE7C,MAAM,iBAAiB,kBAAkB,iBAAiB;CAE1D,OACE,qBAAAA,UAAA,EAAA,UAAA,CACG,aACD,qBAAC,OAAD;EAAK,WAAU;EAAf,UAAA;GAEE,oBAAC,OAAD,CAAM,CAAA;GACN,oBAAC,OAAD;IAAK,cAAW;IAAkB,WAAW,GAAG,QAAQ,sBAAsB;IAC5E,UAAA,qBAAC,OAAD;KAAK,WAAU;KAAf,UAAA,CACE,oBAAC,mBAAD,CAAoB,CAAA,GACnB,eAAe,KAAK,MAAM,UACzB,oBAAC,KAAD;MACE,MAAK;MACL,IAAG;MACH,SAAQ;MAER,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI,GAAG;MAEhC,WAAW,GACT,6CACA,QAAQ,KAAK,QAAQ,eAAe,SAAS,KAAK,kBACpD;MAEC,UAAA,WAAW,iBAAiB,IAAI;KAC9B,GATE,IASF,CACN,CACE;;GACF,CAAA;GACL,oBAAC,UAAD;IACE,OAAO;IACM;IACG;IACF;IACF;IACK;IACA;IACG;IACpB,YAAW,QAAO,oBAAC,iBAAD,EAAsB,IAAM,CAAA;GAC/C,CAAA;EACE;CACL,CAAA,CAAA,EAAA,CAAA;AAEN"}
1
+ {"version":3,"file":"trace-span-timeline.es.js","names":["_Fragment"],"sources":["../../../../src/domains/traces/components/trace-span-timeline.tsx"],"sourcesContent":["import type { Dispatch, ReactNode, SetStateAction } from 'react';\nimport type { UISpan } from '../types';\nimport { TIMELINE_TICKS, TIMELINE_TRACK_PADDING } from '../utils/span-timeline';\nimport { getOverallLatency } from '../utils/span-timing';\nimport { getTimelineMarkersLayout } from '../utils/timeline-markers';\nimport type { TraceStreamingTimings } from '../utils/timeline-markers';\nimport { SpanRows } from './span-rows';\nimport { SpanTimelineRow, TimelineGridlines } from './span-timeline-row';\nimport { TimelineTimingRows } from './trace-span-timeline-markers';\nimport { TraceSpanTreeLoading } from './trace-span-tree';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\n/** Axis ticks are approximate gridline marks, so two decimals are enough: `250 ms`, `3.74 s`. */\nexport type { TraceStreamingTimings };\n\nfunction formatTick(durationMs: number) {\n return durationMs < 1_000 ? `${Math.round(durationMs)} ms` : `${(durationMs / 1_000).toFixed(2)} s`;\n}\n\nexport type TraceSpanTimelineProps = {\n hierarchicalSpans: UISpan[];\n onSpanClick: (id: string) => void;\n selectedSpanId?: string;\n isLoading?: boolean;\n fadedTypes?: string[];\n expandedSpanIds?: string[];\n setExpandedSpanIds?: Dispatch<SetStateAction<string[]>>;\n featuredSpanIds?: string[];\n /** Row scrolled into view once it is mounted (ancestors auto-expand when the span is featured). */\n revealSpanId?: string;\n /** Rendered full-width above the span rows. */\n leadingSlot?: ReactNode;\n /** Adds a collapsed \"Metrics\" row above the spans, revealing a row per streaming timing. */\n streamingTimings?: TraceStreamingTimings;\n};\n\n/**\n * Gantt-style view of a trace: the same hierarchy and expansion state as `TraceSpanTree`,\n * but each row is a compact name cell plus a bar on a shared time axis. Rendered with its\n * own row component (`SpanTimelineRow`), independent from the tree's rows.\n */\nexport function TraceSpanTimeline({\n hierarchicalSpans = [],\n onSpanClick,\n selectedSpanId,\n isLoading,\n fadedTypes,\n expandedSpanIds,\n setExpandedSpanIds,\n featuredSpanIds,\n revealSpanId,\n leadingSlot,\n streamingTimings,\n}: TraceSpanTimelineProps) {\n if (isLoading) return <TraceSpanTreeLoading />;\n\n const overallLatency = getOverallLatency(hierarchicalSpans);\n const markers = getTimelineMarkersLayout(hierarchicalSpans, overallLatency, streamingTimings);\n\n return (\n <>\n {leadingSlot}\n <div className=\"grid grid-cols-[minmax(12rem,2fr)_minmax(12rem,3fr)] content-start gap-y-px overflow-hidden py-1\">\n {/* Header row: empty name cell, then the axis on the same track as the bars. */}\n <div />\n <div className={TIMELINE_TRACK_PADDING}>\n <div aria-label=\"Trace time axis\" className=\"relative h-6 tabular-nums\">\n <TimelineGridlines />\n {TIMELINE_TICKS.map((tick, index) => (\n <Txt\n tone=\"muted\"\n as=\"span\"\n variant=\"meta\"\n key={tick}\n style={{ left: `${tick * 100}%` }}\n // Each label sits just after its gridline; the last one lands in the track's right padding.\n className={cn(\n 'absolute top-0.5 px-1.5 whitespace-nowrap',\n index > 0 && index < TIMELINE_TICKS.length - 1 && 'hidden sm:inline',\n )}\n >\n {formatTick(overallLatency * tick)}\n </Txt>\n ))}\n </div>\n </div>\n {markers && <TimelineTimingRows layout={markers} />}\n <SpanRows\n spans={hierarchicalSpans}\n onSpanClick={onSpanClick}\n selectedSpanId={selectedSpanId}\n revealSpanId={revealSpanId}\n fadedTypes={fadedTypes}\n featuredSpanIds={featuredSpanIds}\n expandedSpanIds={expandedSpanIds}\n setExpandedSpanIds={setExpandedSpanIds}\n renderRow={ctx => <SpanTimelineRow ctx={ctx} />}\n />\n </div>\n </>\n );\n}\n"],"mappings":";;;;;;;;;;;AAgBA,SAAS,WAAW,YAAoB;CACtC,OAAO,aAAa,MAAQ,GAAG,KAAK,MAAM,UAAU,EAAE,OAAO,IAAI,aAAa,IAAA,CAAO,QAAQ,CAAC,EAAE;AAClG;;;;;;AAwBA,SAAgB,kBAAkB,EAChC,oBAAoB,CAAC,GACrB,aACA,gBACA,WACA,YACA,iBACA,oBACA,iBACA,cACA,aACA,oBACyB;CACzB,IAAI,WAAW,OAAO,oBAAC,sBAAD,CAAuB,CAAA;CAE7C,MAAM,iBAAiB,kBAAkB,iBAAiB;CAC1D,MAAM,UAAU,yBAAyB,mBAAmB,gBAAgB,gBAAgB;CAE5F,OACE,qBAAAA,UAAA,EAAA,UAAA,CACG,aACD,qBAAC,OAAD;EAAK,WAAU;EAAf,UAAA;GAEE,oBAAC,OAAD,CAAM,CAAA;GACN,oBAAC,OAAD;IAAK,WAAW;IACd,UAAA,qBAAC,OAAD;KAAK,cAAW;KAAkB,WAAU;KAA5C,UAAA,CACE,oBAAC,mBAAD,CAAoB,CAAA,GACnB,eAAe,KAAK,MAAM,UACzB,oBAAC,KAAD;MACE,MAAK;MACL,IAAG;MACH,SAAQ;MAER,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI,GAAG;MAEhC,WAAW,GACT,6CACA,QAAQ,KAAK,QAAQ,eAAe,SAAS,KAAK,kBACpD;MAEC,UAAA,WAAW,iBAAiB,IAAI;KAC9B,GATE,IASF,CACN,CACE;;GACF,CAAA;GACJ,WAAW,oBAAC,oBAAD,EAAoB,QAAQ,QAAU,CAAA;GAClD,oBAAC,UAAD;IACE,OAAO;IACM;IACG;IACF;IACF;IACK;IACA;IACG;IACpB,YAAW,QAAO,oBAAC,iBAAD,EAAsB,IAAM,CAAA;GAC/C,CAAA;EACE;CACL,CAAA,CAAA,EAAA,CAAA;AAEN"}
@@ -1,8 +1,8 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_utils = require("../../../utils-uDc1ofX1.cjs");
3
- const require_trace_filters = require("../../../trace-filters-BpeBUjCb.cjs");
4
- const require_DateTimeRangePicker = require("../../../DateTimeRangePicker-DGbH5WOn.cjs");
5
- const require_filter_bar_chip = require("../../../filter-bar-chip-CyTAmjt6.cjs");
3
+ const require_trace_filters = require("../../../trace-filters-BNEZ31HX.cjs");
4
+ const require_DateTimeRangePicker = require("../../../DateTimeRangePicker-HmPOHwAQ.cjs");
5
+ const require_filter_bar_chip = require("../../../filter-bar-chip-BUyMf8XQ.cjs");
6
6
  let react_jsx_runtime = require("react/jsx-runtime");
7
7
  let lucide_react = require("lucide-react");
8
8
  // src/domains/traces/components/trace-time-range-chip.tsx
@@ -33,7 +33,7 @@ var isSegment = (target) => target instanceof HTMLElement && target.hasAttribute
33
33
  * present and non-removable; the value segment opens the regular DateTimeRangePicker
34
34
  * menu/popover. With `defaultPreset`, a trailing × resets the range to it.
35
35
  */
36
- function TraceTimeRangeChip({ defaultPreset, ...props }) {
36
+ function TraceTimeRangeChip({ defaultPreset, onReset, ...props }) {
37
37
  const ctx = require_filter_bar_chip.useFilterBarContext();
38
38
  const canReset = defaultPreset !== void 0 && props.preset !== defaultPreset;
39
39
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_filter_bar_chip.FilterBarChip, {
@@ -76,7 +76,7 @@ function TraceTimeRangeChip({ defaultPreset, ...props }) {
76
76
  "aria-label": "Reset time range",
77
77
  title: "Reset time range",
78
78
  className: require_filter_bar_chip.removeSegmentClass,
79
- onClick: () => props.onPresetChange?.(defaultPreset),
79
+ onClick: () => onReset ? onReset() : props.onPresetChange?.(defaultPreset),
80
80
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.XIcon, { className: "size-[1.1em]" })
81
81
  })
82
82
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"trace-time-range-chip.cjs.js","names":["traceFilterFieldIcon","traceFilterFieldColor","useFilterBarContext","FilterBarChip","cn","segmentClass","fieldSegmentAccentStyle","FilterBarFieldLabel","DateTimeRangePicker","editableSegmentClass","removeSegmentClass","XIcon"],"sources":["../../../../src/domains/traces/components/trace-time-range-chip.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\nimport { XIcon } from 'lucide-react';\nimport type { KeyboardEvent } from 'react';\nimport { traceFilterFieldColor, traceFilterFieldIcon } from '../trace-filters';\nimport type { DateRangePreset, DateTimeRangePickerProps } from '@/ds/components/DateTimeRangePicker';\nimport { DateTimeRangePicker } from '@/ds/components/DateTimeRangePicker';\nimport {\n FilterBarChip,\n FilterBarFieldLabel,\n editableSegmentClass,\n fieldSegmentAccentStyle,\n removeSegmentClass,\n segmentClass,\n} from '@/ds/components/FilterBar/filter-bar-chip';\nimport { useFilterBarContext } from '@/ds/components/FilterBar/filter-bar-context';\nimport type { FilterBarField, FilterBarItem } from '@/ds/components/FilterBar/types';\nimport { cn } from '@/lib/utils';\n\nexport const TRACE_TIME_RANGE_FIELD_ID = 'timeRange';\n\n/**\n * Synthetic FilterBar field backing the always-present time-range chip. Hidden from the\n * input's field step (the chip cannot be added twice) but registered so the chip resolves\n * its label and takes part in keyboard navigation.\n */\nexport const TRACE_TIME_RANGE_FIELD: FilterBarField = {\n id: TRACE_TIME_RANGE_FIELD_ID,\n label: 'Time',\n icon: traceFilterFieldIcon(TRACE_TIME_RANGE_FIELD_ID),\n color: traceFilterFieldColor(TRACE_TIME_RANGE_FIELD_ID),\n type: 'text',\n operators: ['is'],\n hidden: true,\n};\n\nexport const TRACE_TIME_RANGE_ITEM: FilterBarItem = {\n id: TRACE_TIME_RANGE_FIELD_ID,\n fieldId: TRACE_TIME_RANGE_FIELD_ID,\n operatorId: 'is',\n value: '',\n};\n\nexport type TraceTimeRangeChipProps = Pick<\n DateTimeRangePickerProps,\n | 'preset'\n | 'onPresetChange'\n | 'dateFrom'\n | 'dateTo'\n | 'onDateChange'\n | 'onDateRangeChange'\n | 'disabled'\n | 'maxRangeMs'\n | 'minDate'\n | 'presets'\n> & {\n /** Shows a × that switches back to this preset whenever another range is selected. */\n defaultPreset?: DateRangePreset;\n};\n\nconst isSegment = (target: EventTarget | null) =>\n target instanceof HTMLElement && target.hasAttribute('data-filter-bar-segment');\n\n/**\n * The trace list's date range rendered as a FilterBar chip: `Time <preset>`. Always\n * present and non-removable; the value segment opens the regular DateTimeRangePicker\n * menu/popover. With `defaultPreset`, a trailing × resets the range to it.\n */\nexport function TraceTimeRangeChip({ defaultPreset, ...props }: TraceTimeRangeChipProps) {\n const ctx = useFilterBarContext();\n const canReset = defaultPreset !== undefined && props.preset !== defaultPreset;\n return (\n <FilterBarChip item={TRACE_TIME_RANGE_ITEM} removable={false}>\n <span className={cn(segmentClass, 'text-foreground')} style={fieldSegmentAccentStyle(TRACE_TIME_RANGE_FIELD)}>\n <FilterBarFieldLabel field={TRACE_TIME_RANGE_FIELD} />\n </span>\n {/* The picker popup is portaled but bubbles React events through here — keep its\n keystrokes from reaching the chip's arrow-key navigation. */}\n <div\n className=\"contents\"\n onKeyDown={(event: KeyboardEvent<HTMLDivElement>) => {\n if (!isSegment(event.target)) event.stopPropagation();\n }}\n >\n <DateTimeRangePicker\n {...props}\n renderTrigger={({ label, disabled }) => (\n <button\n type=\"button\"\n ref={el => ctx.registerSegment(TRACE_TIME_RANGE_ITEM.id, 'value', el)}\n data-filter-bar-segment=\"\"\n disabled={disabled}\n aria-label={`Value: ${label}`}\n title={label}\n className={editableSegmentClass}\n >\n <span className=\"truncate\">{label}</span>\n </button>\n )}\n />\n </div>\n {canReset && (\n <button\n type=\"button\"\n data-filter-bar-segment=\"\"\n tabIndex={-1}\n ref={el => ctx.registerSegment(TRACE_TIME_RANGE_ITEM.id, 'remove', el)}\n disabled={props.disabled}\n aria-label=\"Reset time range\"\n title=\"Reset time range\"\n className={removeSegmentClass}\n onClick={() => props.onPresetChange?.(defaultPreset)}\n >\n <XIcon className=\"size-[1.1em]\" />\n </button>\n )}\n </FilterBarChip>\n );\n}\n"],"mappings":";;;;;;;;AAkBA,IAAa,4BAA4B;;;;;;AAOzC,IAAa,yBAAyC;CACpD,IAAI;CACJ,OAAO;CACP,MAAMA,sBAAAA,qBAAqB,yBAAyB;CACpD,OAAOC,sBAAAA,sBAAsB,yBAAyB;CACtD,MAAM;CACN,WAAW,CAAC,IAAI;CAChB,QAAQ;AACV;AAEA,IAAa,wBAAuC;CAClD,IAAI;CACJ,SAAS;CACT,YAAY;CACZ,OAAO;AACT;AAmBA,IAAM,aAAa,WACjB,kBAAkB,eAAe,OAAO,aAAa,yBAAyB;;;;;;AAOhF,SAAgB,mBAAmB,EAAE,eAAe,GAAG,SAAkC;CACvF,MAAM,MAAMC,wBAAAA,oBAAoB;CAChC,MAAM,WAAW,kBAAkB,KAAA,KAAa,MAAM,WAAW;CACjE,OACE,iBAAA,GAAA,kBAAA,KAAA,CAACC,wBAAAA,eAAD;EAAe,MAAM;EAAuB,WAAW;EAAvD,UAAA;GACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;IAAM,WAAWC,cAAAA,GAAGC,wBAAAA,cAAc,iBAAiB;IAAG,OAAOC,wBAAAA,wBAAwB,sBAAsB;IACzG,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,wBAAAA,qBAAD,EAAqB,OAAO,uBAAyB,CAAA;GACjD,CAAA;GAGN,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;IACE,WAAU;IACV,YAAY,UAAyC;KACnD,IAAI,CAAC,UAAU,MAAM,MAAM,GAAG,MAAM,gBAAgB;IACtD;IAEA,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,4BAAAA,qBAAD;KACE,GAAI;KACJ,gBAAgB,EAAE,OAAO,eACvB,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;MACE,MAAK;MACL,MAAK,OAAM,IAAI,gBAAgB,sBAAsB,IAAI,SAAS,EAAE;MACpE,2BAAwB;MACd;MACV,cAAY,UAAU;MACtB,OAAO;MACP,WAAWC,wBAAAA;MAEX,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;OAAM,WAAU;OAAY,UAAA;MAAY,CAAA;KAClC,CAAA;IAEX,CAAA;GACE,CAAA;GACJ,YACC,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;IACE,MAAK;IACL,2BAAwB;IACxB,UAAU;IACV,MAAK,OAAM,IAAI,gBAAgB,sBAAsB,IAAI,UAAU,EAAE;IACrE,UAAU,MAAM;IAChB,cAAW;IACX,OAAM;IACN,WAAWC,wBAAAA;IACX,eAAe,MAAM,iBAAiB,aAAa;IAEnD,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,aAAAA,OAAD,EAAO,WAAU,eAAgB,CAAA;GAC3B,CAAA;EAEG;;AAEnB"}
1
+ {"version":3,"file":"trace-time-range-chip.cjs.js","names":["traceFilterFieldIcon","traceFilterFieldColor","useFilterBarContext","FilterBarChip","cn","segmentClass","fieldSegmentAccentStyle","FilterBarFieldLabel","DateTimeRangePicker","editableSegmentClass","removeSegmentClass","XIcon"],"sources":["../../../../src/domains/traces/components/trace-time-range-chip.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\nimport { XIcon } from 'lucide-react';\nimport type { KeyboardEvent } from 'react';\nimport { traceFilterFieldColor, traceFilterFieldIcon } from '../trace-filters';\nimport type { DateRangePreset, DateTimeRangePickerProps } from '@/ds/components/DateTimeRangePicker';\nimport { DateTimeRangePicker } from '@/ds/components/DateTimeRangePicker';\nimport {\n FilterBarChip,\n FilterBarFieldLabel,\n editableSegmentClass,\n fieldSegmentAccentStyle,\n removeSegmentClass,\n segmentClass,\n} from '@/ds/components/FilterBar/filter-bar-chip';\nimport { useFilterBarContext } from '@/ds/components/FilterBar/filter-bar-context';\nimport type { FilterBarField, FilterBarItem } from '@/ds/components/FilterBar/types';\nimport { cn } from '@/lib/utils';\n\nexport const TRACE_TIME_RANGE_FIELD_ID = 'timeRange';\n\n/**\n * Synthetic FilterBar field backing the always-present time-range chip. Hidden from the\n * input's field step (the chip cannot be added twice) but registered so the chip resolves\n * its label and takes part in keyboard navigation.\n */\nexport const TRACE_TIME_RANGE_FIELD: FilterBarField = {\n id: TRACE_TIME_RANGE_FIELD_ID,\n label: 'Time',\n icon: traceFilterFieldIcon(TRACE_TIME_RANGE_FIELD_ID),\n color: traceFilterFieldColor(TRACE_TIME_RANGE_FIELD_ID),\n type: 'text',\n operators: ['is'],\n hidden: true,\n};\n\nexport const TRACE_TIME_RANGE_ITEM: FilterBarItem = {\n id: TRACE_TIME_RANGE_FIELD_ID,\n fieldId: TRACE_TIME_RANGE_FIELD_ID,\n operatorId: 'is',\n value: '',\n};\n\nexport type TraceTimeRangeChipProps = Pick<\n DateTimeRangePickerProps,\n | 'preset'\n | 'onPresetChange'\n | 'dateFrom'\n | 'dateTo'\n | 'onDateChange'\n | 'onDateRangeChange'\n | 'disabled'\n | 'maxRangeMs'\n | 'minDate'\n | 'presets'\n> & {\n /** Shows a × that switches back to this preset whenever another range is selected. */\n defaultPreset?: DateRangePreset;\n /** Replaces what the × does, e.g. to undo a histogram zoom before falling back to `defaultPreset`. */\n onReset?: () => void;\n};\n\nconst isSegment = (target: EventTarget | null) =>\n target instanceof HTMLElement && target.hasAttribute('data-filter-bar-segment');\n\n/**\n * The trace list's date range rendered as a FilterBar chip: `Time <preset>`. Always\n * present and non-removable; the value segment opens the regular DateTimeRangePicker\n * menu/popover. With `defaultPreset`, a trailing × resets the range to it.\n */\nexport function TraceTimeRangeChip({ defaultPreset, onReset, ...props }: TraceTimeRangeChipProps) {\n const ctx = useFilterBarContext();\n const canReset = defaultPreset !== undefined && props.preset !== defaultPreset;\n return (\n <FilterBarChip item={TRACE_TIME_RANGE_ITEM} removable={false}>\n <span className={cn(segmentClass, 'text-foreground')} style={fieldSegmentAccentStyle(TRACE_TIME_RANGE_FIELD)}>\n <FilterBarFieldLabel field={TRACE_TIME_RANGE_FIELD} />\n </span>\n {/* The picker popup is portaled but bubbles React events through here — keep its\n keystrokes from reaching the chip's arrow-key navigation. */}\n <div\n className=\"contents\"\n onKeyDown={(event: KeyboardEvent<HTMLDivElement>) => {\n if (!isSegment(event.target)) event.stopPropagation();\n }}\n >\n <DateTimeRangePicker\n {...props}\n renderTrigger={({ label, disabled }) => (\n <button\n type=\"button\"\n ref={el => ctx.registerSegment(TRACE_TIME_RANGE_ITEM.id, 'value', el)}\n data-filter-bar-segment=\"\"\n disabled={disabled}\n aria-label={`Value: ${label}`}\n title={label}\n className={editableSegmentClass}\n >\n <span className=\"truncate\">{label}</span>\n </button>\n )}\n />\n </div>\n {canReset && (\n <button\n type=\"button\"\n data-filter-bar-segment=\"\"\n tabIndex={-1}\n ref={el => ctx.registerSegment(TRACE_TIME_RANGE_ITEM.id, 'remove', el)}\n disabled={props.disabled}\n aria-label=\"Reset time range\"\n title=\"Reset time range\"\n className={removeSegmentClass}\n onClick={() => (onReset ? onReset() : props.onPresetChange?.(defaultPreset))}\n >\n <XIcon className=\"size-[1.1em]\" />\n </button>\n )}\n </FilterBarChip>\n );\n}\n"],"mappings":";;;;;;;;AAkBA,IAAa,4BAA4B;;;;;;AAOzC,IAAa,yBAAyC;CACpD,IAAI;CACJ,OAAO;CACP,MAAMA,sBAAAA,qBAAqB,yBAAyB;CACpD,OAAOC,sBAAAA,sBAAsB,yBAAyB;CACtD,MAAM;CACN,WAAW,CAAC,IAAI;CAChB,QAAQ;AACV;AAEA,IAAa,wBAAuC;CAClD,IAAI;CACJ,SAAS;CACT,YAAY;CACZ,OAAO;AACT;AAqBA,IAAM,aAAa,WACjB,kBAAkB,eAAe,OAAO,aAAa,yBAAyB;;;;;;AAOhF,SAAgB,mBAAmB,EAAE,eAAe,SAAS,GAAG,SAAkC;CAChG,MAAM,MAAMC,wBAAAA,oBAAoB;CAChC,MAAM,WAAW,kBAAkB,KAAA,KAAa,MAAM,WAAW;CACjE,OACE,iBAAA,GAAA,kBAAA,KAAA,CAACC,wBAAAA,eAAD;EAAe,MAAM;EAAuB,WAAW;EAAvD,UAAA;GACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;IAAM,WAAWC,cAAAA,GAAGC,wBAAAA,cAAc,iBAAiB;IAAG,OAAOC,wBAAAA,wBAAwB,sBAAsB;IACzG,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,wBAAAA,qBAAD,EAAqB,OAAO,uBAAyB,CAAA;GACjD,CAAA;GAGN,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;IACE,WAAU;IACV,YAAY,UAAyC;KACnD,IAAI,CAAC,UAAU,MAAM,MAAM,GAAG,MAAM,gBAAgB;IACtD;IAEA,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,4BAAAA,qBAAD;KACE,GAAI;KACJ,gBAAgB,EAAE,OAAO,eACvB,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;MACE,MAAK;MACL,MAAK,OAAM,IAAI,gBAAgB,sBAAsB,IAAI,SAAS,EAAE;MACpE,2BAAwB;MACd;MACV,cAAY,UAAU;MACtB,OAAO;MACP,WAAWC,wBAAAA;MAEX,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;OAAM,WAAU;OAAY,UAAA;MAAY,CAAA;KAClC,CAAA;IAEX,CAAA;GACE,CAAA;GACJ,YACC,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;IACE,MAAK;IACL,2BAAwB;IACxB,UAAU;IACV,MAAK,OAAM,IAAI,gBAAgB,sBAAsB,IAAI,UAAU,EAAE;IACrE,UAAU,MAAM;IAChB,cAAW;IACX,OAAM;IACN,WAAWC,wBAAAA;IACX,eAAgB,UAAU,QAAQ,IAAI,MAAM,iBAAiB,aAAa;IAE1E,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,aAAAA,OAAD,EAAO,WAAU,eAAgB,CAAA;GAC3B,CAAA;EAEG;;AAEnB"}
@@ -1,7 +1,7 @@
1
1
  import { t as cn } from "../../../utils-DQx8TpNT.js";
2
- import { X as traceFilterFieldIcon, Y as traceFilterFieldColor } from "../../../trace-filters-C27yWcan.js";
3
- import { t as DateTimeRangePicker } from "../../../DateTimeRangePicker-ByMbLdom.js";
4
- import { b as useFilterBarContext, f as removeSegmentClass, l as editableSegmentClass, o as FilterBarFieldLabel, p as segmentClass, t as FilterBarChip, u as fieldSegmentAccentStyle } from "../../../filter-bar-chip-B3pgpngW.js";
2
+ import { Q as traceFilterFieldIcon, Z as traceFilterFieldColor } from "../../../trace-filters-BJaebsxJ.js";
3
+ import { t as DateTimeRangePicker } from "../../../DateTimeRangePicker-C_Lie_2P.js";
4
+ import { b as useFilterBarContext, f as removeSegmentClass, l as editableSegmentClass, o as FilterBarFieldLabel, p as segmentClass, t as FilterBarChip, u as fieldSegmentAccentStyle } from "../../../filter-bar-chip-7O02P9Vk.js";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
6
  import { XIcon } from "lucide-react";
7
7
  // src/domains/traces/components/trace-time-range-chip.tsx
@@ -32,7 +32,7 @@ var isSegment = (target) => target instanceof HTMLElement && target.hasAttribute
32
32
  * present and non-removable; the value segment opens the regular DateTimeRangePicker
33
33
  * menu/popover. With `defaultPreset`, a trailing × resets the range to it.
34
34
  */
35
- function TraceTimeRangeChip({ defaultPreset, ...props }) {
35
+ function TraceTimeRangeChip({ defaultPreset, onReset, ...props }) {
36
36
  const ctx = useFilterBarContext();
37
37
  const canReset = defaultPreset !== void 0 && props.preset !== defaultPreset;
38
38
  return /* @__PURE__ */ jsxs(FilterBarChip, {
@@ -75,7 +75,7 @@ function TraceTimeRangeChip({ defaultPreset, ...props }) {
75
75
  "aria-label": "Reset time range",
76
76
  title: "Reset time range",
77
77
  className: removeSegmentClass,
78
- onClick: () => props.onPresetChange?.(defaultPreset),
78
+ onClick: () => onReset ? onReset() : props.onPresetChange?.(defaultPreset),
79
79
  children: /* @__PURE__ */ jsx(XIcon, { className: "size-[1.1em]" })
80
80
  })
81
81
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"trace-time-range-chip.es.js","names":[],"sources":["../../../../src/domains/traces/components/trace-time-range-chip.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\nimport { XIcon } from 'lucide-react';\nimport type { KeyboardEvent } from 'react';\nimport { traceFilterFieldColor, traceFilterFieldIcon } from '../trace-filters';\nimport type { DateRangePreset, DateTimeRangePickerProps } from '@/ds/components/DateTimeRangePicker';\nimport { DateTimeRangePicker } from '@/ds/components/DateTimeRangePicker';\nimport {\n FilterBarChip,\n FilterBarFieldLabel,\n editableSegmentClass,\n fieldSegmentAccentStyle,\n removeSegmentClass,\n segmentClass,\n} from '@/ds/components/FilterBar/filter-bar-chip';\nimport { useFilterBarContext } from '@/ds/components/FilterBar/filter-bar-context';\nimport type { FilterBarField, FilterBarItem } from '@/ds/components/FilterBar/types';\nimport { cn } from '@/lib/utils';\n\nexport const TRACE_TIME_RANGE_FIELD_ID = 'timeRange';\n\n/**\n * Synthetic FilterBar field backing the always-present time-range chip. Hidden from the\n * input's field step (the chip cannot be added twice) but registered so the chip resolves\n * its label and takes part in keyboard navigation.\n */\nexport const TRACE_TIME_RANGE_FIELD: FilterBarField = {\n id: TRACE_TIME_RANGE_FIELD_ID,\n label: 'Time',\n icon: traceFilterFieldIcon(TRACE_TIME_RANGE_FIELD_ID),\n color: traceFilterFieldColor(TRACE_TIME_RANGE_FIELD_ID),\n type: 'text',\n operators: ['is'],\n hidden: true,\n};\n\nexport const TRACE_TIME_RANGE_ITEM: FilterBarItem = {\n id: TRACE_TIME_RANGE_FIELD_ID,\n fieldId: TRACE_TIME_RANGE_FIELD_ID,\n operatorId: 'is',\n value: '',\n};\n\nexport type TraceTimeRangeChipProps = Pick<\n DateTimeRangePickerProps,\n | 'preset'\n | 'onPresetChange'\n | 'dateFrom'\n | 'dateTo'\n | 'onDateChange'\n | 'onDateRangeChange'\n | 'disabled'\n | 'maxRangeMs'\n | 'minDate'\n | 'presets'\n> & {\n /** Shows a × that switches back to this preset whenever another range is selected. */\n defaultPreset?: DateRangePreset;\n};\n\nconst isSegment = (target: EventTarget | null) =>\n target instanceof HTMLElement && target.hasAttribute('data-filter-bar-segment');\n\n/**\n * The trace list's date range rendered as a FilterBar chip: `Time <preset>`. Always\n * present and non-removable; the value segment opens the regular DateTimeRangePicker\n * menu/popover. With `defaultPreset`, a trailing × resets the range to it.\n */\nexport function TraceTimeRangeChip({ defaultPreset, ...props }: TraceTimeRangeChipProps) {\n const ctx = useFilterBarContext();\n const canReset = defaultPreset !== undefined && props.preset !== defaultPreset;\n return (\n <FilterBarChip item={TRACE_TIME_RANGE_ITEM} removable={false}>\n <span className={cn(segmentClass, 'text-foreground')} style={fieldSegmentAccentStyle(TRACE_TIME_RANGE_FIELD)}>\n <FilterBarFieldLabel field={TRACE_TIME_RANGE_FIELD} />\n </span>\n {/* The picker popup is portaled but bubbles React events through here — keep its\n keystrokes from reaching the chip's arrow-key navigation. */}\n <div\n className=\"contents\"\n onKeyDown={(event: KeyboardEvent<HTMLDivElement>) => {\n if (!isSegment(event.target)) event.stopPropagation();\n }}\n >\n <DateTimeRangePicker\n {...props}\n renderTrigger={({ label, disabled }) => (\n <button\n type=\"button\"\n ref={el => ctx.registerSegment(TRACE_TIME_RANGE_ITEM.id, 'value', el)}\n data-filter-bar-segment=\"\"\n disabled={disabled}\n aria-label={`Value: ${label}`}\n title={label}\n className={editableSegmentClass}\n >\n <span className=\"truncate\">{label}</span>\n </button>\n )}\n />\n </div>\n {canReset && (\n <button\n type=\"button\"\n data-filter-bar-segment=\"\"\n tabIndex={-1}\n ref={el => ctx.registerSegment(TRACE_TIME_RANGE_ITEM.id, 'remove', el)}\n disabled={props.disabled}\n aria-label=\"Reset time range\"\n title=\"Reset time range\"\n className={removeSegmentClass}\n onClick={() => props.onPresetChange?.(defaultPreset)}\n >\n <XIcon className=\"size-[1.1em]\" />\n </button>\n )}\n </FilterBarChip>\n );\n}\n"],"mappings":";;;;;;;AAkBA,IAAa,4BAA4B;;;;;;AAOzC,IAAa,yBAAyC;CACpD,IAAI;CACJ,OAAO;CACP,MAAM,qBAAqB,yBAAyB;CACpD,OAAO,sBAAsB,yBAAyB;CACtD,MAAM;CACN,WAAW,CAAC,IAAI;CAChB,QAAQ;AACV;AAEA,IAAa,wBAAuC;CAClD,IAAI;CACJ,SAAS;CACT,YAAY;CACZ,OAAO;AACT;AAmBA,IAAM,aAAa,WACjB,kBAAkB,eAAe,OAAO,aAAa,yBAAyB;;;;;;AAOhF,SAAgB,mBAAmB,EAAE,eAAe,GAAG,SAAkC;CACvF,MAAM,MAAM,oBAAoB;CAChC,MAAM,WAAW,kBAAkB,KAAA,KAAa,MAAM,WAAW;CACjE,OACE,qBAAC,eAAD;EAAe,MAAM;EAAuB,WAAW;EAAvD,UAAA;GACE,oBAAC,QAAD;IAAM,WAAW,GAAG,cAAc,iBAAiB;IAAG,OAAO,wBAAwB,sBAAsB;IACzG,UAAA,oBAAC,qBAAD,EAAqB,OAAO,uBAAyB,CAAA;GACjD,CAAA;GAGN,oBAAC,OAAD;IACE,WAAU;IACV,YAAY,UAAyC;KACnD,IAAI,CAAC,UAAU,MAAM,MAAM,GAAG,MAAM,gBAAgB;IACtD;IAEA,UAAA,oBAAC,qBAAD;KACE,GAAI;KACJ,gBAAgB,EAAE,OAAO,eACvB,oBAAC,UAAD;MACE,MAAK;MACL,MAAK,OAAM,IAAI,gBAAgB,sBAAsB,IAAI,SAAS,EAAE;MACpE,2BAAwB;MACd;MACV,cAAY,UAAU;MACtB,OAAO;MACP,WAAW;MAEX,UAAA,oBAAC,QAAD;OAAM,WAAU;OAAY,UAAA;MAAY,CAAA;KAClC,CAAA;IAEX,CAAA;GACE,CAAA;GACJ,YACC,oBAAC,UAAD;IACE,MAAK;IACL,2BAAwB;IACxB,UAAU;IACV,MAAK,OAAM,IAAI,gBAAgB,sBAAsB,IAAI,UAAU,EAAE;IACrE,UAAU,MAAM;IAChB,cAAW;IACX,OAAM;IACN,WAAW;IACX,eAAe,MAAM,iBAAiB,aAAa;IAEnD,UAAA,oBAAC,OAAD,EAAO,WAAU,eAAgB,CAAA;GAC3B,CAAA;EAEG;;AAEnB"}
1
+ {"version":3,"file":"trace-time-range-chip.es.js","names":[],"sources":["../../../../src/domains/traces/components/trace-time-range-chip.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\nimport { XIcon } from 'lucide-react';\nimport type { KeyboardEvent } from 'react';\nimport { traceFilterFieldColor, traceFilterFieldIcon } from '../trace-filters';\nimport type { DateRangePreset, DateTimeRangePickerProps } from '@/ds/components/DateTimeRangePicker';\nimport { DateTimeRangePicker } from '@/ds/components/DateTimeRangePicker';\nimport {\n FilterBarChip,\n FilterBarFieldLabel,\n editableSegmentClass,\n fieldSegmentAccentStyle,\n removeSegmentClass,\n segmentClass,\n} from '@/ds/components/FilterBar/filter-bar-chip';\nimport { useFilterBarContext } from '@/ds/components/FilterBar/filter-bar-context';\nimport type { FilterBarField, FilterBarItem } from '@/ds/components/FilterBar/types';\nimport { cn } from '@/lib/utils';\n\nexport const TRACE_TIME_RANGE_FIELD_ID = 'timeRange';\n\n/**\n * Synthetic FilterBar field backing the always-present time-range chip. Hidden from the\n * input's field step (the chip cannot be added twice) but registered so the chip resolves\n * its label and takes part in keyboard navigation.\n */\nexport const TRACE_TIME_RANGE_FIELD: FilterBarField = {\n id: TRACE_TIME_RANGE_FIELD_ID,\n label: 'Time',\n icon: traceFilterFieldIcon(TRACE_TIME_RANGE_FIELD_ID),\n color: traceFilterFieldColor(TRACE_TIME_RANGE_FIELD_ID),\n type: 'text',\n operators: ['is'],\n hidden: true,\n};\n\nexport const TRACE_TIME_RANGE_ITEM: FilterBarItem = {\n id: TRACE_TIME_RANGE_FIELD_ID,\n fieldId: TRACE_TIME_RANGE_FIELD_ID,\n operatorId: 'is',\n value: '',\n};\n\nexport type TraceTimeRangeChipProps = Pick<\n DateTimeRangePickerProps,\n | 'preset'\n | 'onPresetChange'\n | 'dateFrom'\n | 'dateTo'\n | 'onDateChange'\n | 'onDateRangeChange'\n | 'disabled'\n | 'maxRangeMs'\n | 'minDate'\n | 'presets'\n> & {\n /** Shows a × that switches back to this preset whenever another range is selected. */\n defaultPreset?: DateRangePreset;\n /** Replaces what the × does, e.g. to undo a histogram zoom before falling back to `defaultPreset`. */\n onReset?: () => void;\n};\n\nconst isSegment = (target: EventTarget | null) =>\n target instanceof HTMLElement && target.hasAttribute('data-filter-bar-segment');\n\n/**\n * The trace list's date range rendered as a FilterBar chip: `Time <preset>`. Always\n * present and non-removable; the value segment opens the regular DateTimeRangePicker\n * menu/popover. With `defaultPreset`, a trailing × resets the range to it.\n */\nexport function TraceTimeRangeChip({ defaultPreset, onReset, ...props }: TraceTimeRangeChipProps) {\n const ctx = useFilterBarContext();\n const canReset = defaultPreset !== undefined && props.preset !== defaultPreset;\n return (\n <FilterBarChip item={TRACE_TIME_RANGE_ITEM} removable={false}>\n <span className={cn(segmentClass, 'text-foreground')} style={fieldSegmentAccentStyle(TRACE_TIME_RANGE_FIELD)}>\n <FilterBarFieldLabel field={TRACE_TIME_RANGE_FIELD} />\n </span>\n {/* The picker popup is portaled but bubbles React events through here — keep its\n keystrokes from reaching the chip's arrow-key navigation. */}\n <div\n className=\"contents\"\n onKeyDown={(event: KeyboardEvent<HTMLDivElement>) => {\n if (!isSegment(event.target)) event.stopPropagation();\n }}\n >\n <DateTimeRangePicker\n {...props}\n renderTrigger={({ label, disabled }) => (\n <button\n type=\"button\"\n ref={el => ctx.registerSegment(TRACE_TIME_RANGE_ITEM.id, 'value', el)}\n data-filter-bar-segment=\"\"\n disabled={disabled}\n aria-label={`Value: ${label}`}\n title={label}\n className={editableSegmentClass}\n >\n <span className=\"truncate\">{label}</span>\n </button>\n )}\n />\n </div>\n {canReset && (\n <button\n type=\"button\"\n data-filter-bar-segment=\"\"\n tabIndex={-1}\n ref={el => ctx.registerSegment(TRACE_TIME_RANGE_ITEM.id, 'remove', el)}\n disabled={props.disabled}\n aria-label=\"Reset time range\"\n title=\"Reset time range\"\n className={removeSegmentClass}\n onClick={() => (onReset ? onReset() : props.onPresetChange?.(defaultPreset))}\n >\n <XIcon className=\"size-[1.1em]\" />\n </button>\n )}\n </FilterBarChip>\n );\n}\n"],"mappings":";;;;;;;AAkBA,IAAa,4BAA4B;;;;;;AAOzC,IAAa,yBAAyC;CACpD,IAAI;CACJ,OAAO;CACP,MAAM,qBAAqB,yBAAyB;CACpD,OAAO,sBAAsB,yBAAyB;CACtD,MAAM;CACN,WAAW,CAAC,IAAI;CAChB,QAAQ;AACV;AAEA,IAAa,wBAAuC;CAClD,IAAI;CACJ,SAAS;CACT,YAAY;CACZ,OAAO;AACT;AAqBA,IAAM,aAAa,WACjB,kBAAkB,eAAe,OAAO,aAAa,yBAAyB;;;;;;AAOhF,SAAgB,mBAAmB,EAAE,eAAe,SAAS,GAAG,SAAkC;CAChG,MAAM,MAAM,oBAAoB;CAChC,MAAM,WAAW,kBAAkB,KAAA,KAAa,MAAM,WAAW;CACjE,OACE,qBAAC,eAAD;EAAe,MAAM;EAAuB,WAAW;EAAvD,UAAA;GACE,oBAAC,QAAD;IAAM,WAAW,GAAG,cAAc,iBAAiB;IAAG,OAAO,wBAAwB,sBAAsB;IACzG,UAAA,oBAAC,qBAAD,EAAqB,OAAO,uBAAyB,CAAA;GACjD,CAAA;GAGN,oBAAC,OAAD;IACE,WAAU;IACV,YAAY,UAAyC;KACnD,IAAI,CAAC,UAAU,MAAM,MAAM,GAAG,MAAM,gBAAgB;IACtD;IAEA,UAAA,oBAAC,qBAAD;KACE,GAAI;KACJ,gBAAgB,EAAE,OAAO,eACvB,oBAAC,UAAD;MACE,MAAK;MACL,MAAK,OAAM,IAAI,gBAAgB,sBAAsB,IAAI,SAAS,EAAE;MACpE,2BAAwB;MACd;MACV,cAAY,UAAU;MACtB,OAAO;MACP,WAAW;MAEX,UAAA,oBAAC,QAAD;OAAM,WAAU;OAAY,UAAA;MAAY,CAAA;KAClC,CAAA;IAEX,CAAA;GACE,CAAA;GACJ,YACC,oBAAC,UAAD;IACE,MAAK;IACL,2BAAwB;IACxB,UAAU;IACV,MAAK,OAAM,IAAI,gBAAgB,sBAAsB,IAAI,UAAU,EAAE;IACrE,UAAU,MAAM;IAChB,cAAW;IACX,OAAM;IACN,WAAW;IACX,eAAgB,UAAU,QAAQ,IAAI,MAAM,iBAAiB,aAAa;IAE1E,UAAA,oBAAC,OAAD,EAAO,WAAU,eAAgB,CAAA;GAC3B,CAAA;EAEG;;AAEnB"}
@@ -1,6 +1,12 @@
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
  // src/domains/traces/components/traces-explorer/traces-explorer-actions.ts
4
+ /** Fields the traces list can be sorted by, named like the trace query's `orderBy` fields. */
5
+ var TRACES_SORT_FIELDS = [
6
+ "startedAt",
7
+ "timeToFirstChunkMs",
8
+ "timeToFirstTokenMs"
9
+ ];
4
10
  var DEFAULT_TRACES_SORT = {
5
11
  field: "startedAt",
6
12
  direction: "desc"
@@ -96,22 +102,19 @@ var applyDateRange = (filters, dateFrom, dateTo) => filters.datePreset === "cust
96
102
  dateFrom,
97
103
  dateTo
98
104
  } : filters;
99
- var ROOT_DURATION_FIELD_IDS = /* @__PURE__ */ new Set(["durationMs"]);
100
- var NO_FIELD_IDS = /* @__PURE__ */ new Set();
101
- /** Fields this server can't query on top of the always-unsupported ones: root duration needs its capability. */
102
- var serverUnqueryableFieldIds = (withRootDuration) => withRootDuration ? NO_FIELD_IDS : ROOT_DURATION_FIELD_IDS;
103
- var isQueryableToken = (token, withRootDuration) => {
105
+ var isQueryableToken = (token, unqueryableFieldIds) => {
104
106
  if (token.fieldId === "status" && token.value === "running") return false;
105
107
  if (require_trace_filters.TRACE_QUERY_UNSUPPORTED_FILTER_FIELDS.has(token.fieldId)) return false;
106
- return !serverUnqueryableFieldIds(withRootDuration).has(token.fieldId);
108
+ return !unqueryableFieldIds.has(token.fieldId);
107
109
  };
108
110
  /**
109
111
  * Drops the top-level tokens the trace query can't run, so no chip advertises a filter with no effect.
110
112
  * Groups pass through and stay visible in the bar: `buildTracesQueryRequest` leaves their unqueryable
111
113
  * conditions out of the query. Returns the same object when nothing is dropped.
112
114
  */
113
- var sanitizeTracesFilters = (filters, withRootDuration) => {
114
- const tokens = filters.tokens.filter((token) => isQueryableToken(token, withRootDuration));
115
+ var sanitizeTracesFilters = (filters, support) => {
116
+ const unqueryableFieldIds = require_trace_filters.traceQueryUnqueryableFieldIds(support);
117
+ const tokens = filters.tokens.filter((token) => isQueryableToken(token, unqueryableFieldIds));
115
118
  return tokens.length === filters.tokens.length ? filters : {
116
119
  ...filters,
117
120
  tokens
@@ -137,14 +140,14 @@ var getSelectedStatus = (tokens) => {
137
140
  return value && require_trace_filters.TRACE_STATUS_VALUES.has(value) ? value : void 0;
138
141
  };
139
142
  /** The trace query for the (sanitized) filters and the resolved date window. */
140
- var buildTracesQueryRequest = ({ filters, dateFrom, dateTo, withRootDuration, now }) => require_trace_filters.buildTraceQueryRequest({
143
+ var buildTracesQueryRequest = ({ filters, dateFrom, dateTo, now, ...support }) => require_trace_filters.buildTraceQueryRequest({
141
144
  rootEntityType: getSelectedEntityOption(filters.tokens)?.entityType,
142
145
  status: getSelectedStatus(filters.tokens),
143
146
  dateFrom,
144
147
  dateTo,
145
148
  tokens: filters.tokens,
146
149
  groups: filters.groups,
147
- excludedFieldIds: serverUnqueryableFieldIds(withRootDuration),
150
+ excludedFieldIds: require_trace_filters.traceQueryUnqueryableFieldIds(support),
148
151
  now
149
152
  });
150
153
  /** The `listTracesLight` filters for servers without the trace query API (no groups there). */
@@ -170,6 +173,7 @@ var resolveTracesDateWindow = (datePreset, dateFrom, dateTo) => {
170
173
  exports.DEFAULT_TRACES_FILTERS = DEFAULT_TRACES_FILTERS;
171
174
  exports.DEFAULT_TRACES_SORT = DEFAULT_TRACES_SORT;
172
175
  exports.EMPTY_TRACES_SELECTION = EMPTY_TRACES_SELECTION;
176
+ exports.TRACES_SORT_FIELDS = TRACES_SORT_FIELDS;
173
177
  exports.applyDate = applyDate;
174
178
  exports.applyDatePreset = applyDatePreset;
175
179
  exports.applyDateRange = applyDateRange;
@@ -1 +1 @@
1
- {"version":3,"file":"traces-explorer-actions.cjs.js","names":["TRACE_QUERY_UNSUPPORTED_FILTER_FIELDS","ROOT_ENTITY_TYPE_OPTIONS","TRACE_STATUS_VALUES","buildTraceQueryRequest","buildTraceListFilters"],"sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-actions.ts"],"sourcesContent":["import { buildTraceListFilters, ROOT_ENTITY_TYPE_OPTIONS, TRACE_STATUS_VALUES } from '../../trace-filters';\nimport type { EntityOptions, TraceFilterGroup, TraceFilterToken, TraceStatusFilter } from '../../trace-filters';\nimport { buildTraceQueryRequest, TRACE_QUERY_UNSUPPORTED_FILTER_FIELDS } from '../../trace-query-filters';\nimport type { SpanTab, TraceDatePreset } from '../../types';\nimport type { TraceSpanView } from '../trace-data-panel-view';\n\nexport type TracesSelection = {\n traceId?: string;\n spanId?: string;\n spanTab?: SpanTab;\n spanView: TraceSpanView;\n scoreId?: string;\n highlightSpanIds: string[];\n};\n\n/** `rootEntityType` and `status` are tokens too (`fieldId: 'rootEntityType' | 'status'`), like every other filter. */\nexport type TracesFilters = {\n datePreset: TraceDatePreset;\n /** Only read when `datePreset` is `custom`. */\n dateFrom?: Date;\n /** Only read when `datePreset` is `custom`. */\n dateTo?: Date;\n tokens: TraceFilterToken[];\n groups: TraceFilterGroup[];\n};\n\nexport type TracesSortDirection = 'asc' | 'desc';\n\n/** Fields the traces list can be sorted by, named like the trace query's `orderBy` fields. */\nexport type TracesSortField = 'startedAt' | 'timeToFirstChunkMs';\n\nexport type TracesSort = { field: TracesSortField; direction: TracesSortDirection };\n\nexport const DEFAULT_TRACES_SORT: TracesSort = { field: 'startedAt', direction: 'desc' };\n\n/** What the explorer emits on every change: filters and selection move together (a filter edit clears the selection). */\nexport type TracesExplorerState = { selection: TracesSelection; filters: TracesFilters };\n\nexport const EMPTY_TRACES_SELECTION: TracesSelection = { spanView: 'tree', highlightSpanIds: [] };\n\nexport const DEFAULT_TRACES_FILTERS: TracesFilters = { datePreset: 'last-7d', tokens: [], groups: [] };\n\nconst DAY_MS = 24 * 60 * 60 * 1000;\nconst PRESET_MS: Partial<Record<TraceDatePreset, number>> = {\n 'last-24h': DAY_MS,\n 'last-3d': 3 * DAY_MS,\n 'last-7d': 7 * DAY_MS,\n 'last-14d': 14 * DAY_MS,\n 'last-30d': 30 * DAY_MS,\n};\n\nexport const isSelectionEmpty = (selection: TracesSelection) =>\n !selection.traceId &&\n !selection.spanId &&\n !selection.spanTab &&\n !selection.scoreId &&\n selection.highlightSpanIds.length === 0;\n\n/** Keeps the span view: it is a display preference, not part of what is selected. */\nexport const clearSelection = (selection: TracesSelection): TracesSelection => ({\n spanView: selection.spanView,\n highlightSpanIds: [],\n});\n\nexport const selectTrace = (selection: TracesSelection, traceId: string | null): TracesSelection =>\n traceId ? { traceId, spanView: selection.spanView, highlightSpanIds: [] } : clearSelection(selection);\n\n/**\n * The open tab stays, so stepping through spans compares the same tab; the score belongs to the\n * previous span and is dropped with it.\n */\nexport const selectSpan = (selection: TracesSelection, spanId: string | null): TracesSelection => {\n if ((spanId ?? undefined) === selection.spanId) return selection;\n return { ...selection, spanId: spanId ?? undefined, scoreId: undefined };\n};\n\nexport const setSpanTab = (selection: TracesSelection, tab: SpanTab): TracesSelection => {\n if (tab === selection.spanTab) return selection;\n return { ...selection, spanTab: tab === 'details' ? undefined : tab, scoreId: undefined };\n};\n\nexport const setSpanView = (selection: TracesSelection, spanView: TraceSpanView): TracesSelection =>\n spanView === selection.spanView ? selection : { ...selection, spanView };\n\nexport const selectScore = (selection: TracesSelection, scoreId: string | null): TracesSelection =>\n (scoreId ?? undefined) === selection.scoreId ? selection : { ...selection, scoreId: scoreId ?? undefined };\n\nexport const highlightSpans = (selection: TracesSelection, spanIds: string[]): TracesSelection => {\n const unchanged =\n spanIds.length === selection.highlightSpanIds.length &&\n spanIds.every((id, index) => id === selection.highlightSpanIds[index]);\n return unchanged ? selection : { ...selection, highlightSpanIds: spanIds };\n};\n\nexport const applyFilterTokens = (\n filters: TracesFilters,\n tokens: TraceFilterToken[],\n groups: TraceFilterGroup[],\n): TracesFilters => ({ ...filters, tokens, groups });\n\n/** Switching to `custom` keeps the current dates so the picker opens on them; any other preset drops them. */\nexport const applyDatePreset = (filters: TracesFilters, datePreset: TraceDatePreset): TracesFilters =>\n datePreset === 'custom' ? { ...filters, datePreset } : { datePreset, tokens: filters.tokens, groups: filters.groups };\n\n// The picker can report a date right after switching away from `custom`; those are ignored.\nexport const applyDate = (filters: TracesFilters, date: Date | undefined, end: 'from' | 'to'): TracesFilters => {\n if (filters.datePreset !== 'custom') return filters;\n return end === 'from' ? { ...filters, dateFrom: date } : { ...filters, dateTo: date };\n};\n\nexport const applyDateRange = (\n filters: TracesFilters,\n dateFrom: Date | undefined,\n dateTo: Date | undefined,\n): TracesFilters => (filters.datePreset === 'custom' ? { ...filters, dateFrom, dateTo } : filters);\n\nconst ROOT_DURATION_FIELD_IDS: ReadonlySet<string> = new Set(['durationMs']);\nconst NO_FIELD_IDS: ReadonlySet<string> = new Set();\n\n/** Fields this server can't query on top of the always-unsupported ones: root duration needs its capability. */\nconst serverUnqueryableFieldIds = (withRootDuration: boolean) =>\n withRootDuration ? NO_FIELD_IDS : ROOT_DURATION_FIELD_IDS;\n\nconst isQueryableToken = (token: TraceFilterToken, withRootDuration: boolean) => {\n if (token.fieldId === 'status' && token.value === 'running') return false;\n if (TRACE_QUERY_UNSUPPORTED_FILTER_FIELDS.has(token.fieldId)) return false;\n return !serverUnqueryableFieldIds(withRootDuration).has(token.fieldId);\n};\n\n/**\n * Drops the top-level tokens the trace query can't run, so no chip advertises a filter with no effect.\n * Groups pass through and stay visible in the bar: `buildTracesQueryRequest` leaves their unqueryable\n * conditions out of the query. Returns the same object when nothing is dropped.\n */\nexport const sanitizeTracesFilters = (filters: TracesFilters, withRootDuration: boolean): TracesFilters => {\n const tokens = filters.tokens.filter(token => isQueryableToken(token, withRootDuration));\n return tokens.length === filters.tokens.length ? filters : { ...filters, tokens };\n};\n\nconst selectsRunning = (node: TraceFilterGroup | TraceFilterToken): boolean => {\n if ('nodes' in node) return node.nodes.some(selectsRunning);\n if (node.fieldId !== 'status') return false;\n return Array.isArray(node.value) ? node.value.includes('running') : node.value === 'running';\n};\n\n/** Whether a status filter asks for `running`, which the trace query can't express and drops. */\nexport const selectsRunningStatus = (filters: TracesFilters): boolean =>\n filters.tokens.some(selectsRunning) || filters.groups.some(selectsRunning);\n\nconst tokenValue = (tokens: TraceFilterToken[], fieldId: string) => {\n const value = tokens.find(token => token.fieldId === fieldId)?.value;\n return typeof value === 'string' ? value : undefined;\n};\n\nexport const getSelectedEntityOption = (tokens: TraceFilterToken[]): EntityOptions | undefined => {\n const value = tokenValue(tokens, 'rootEntityType');\n return ROOT_ENTITY_TYPE_OPTIONS.find(option => option.entityType === value);\n};\n\nexport const getSelectedStatus = (tokens: TraceFilterToken[]): TraceStatusFilter | undefined => {\n const value = tokenValue(tokens, 'status');\n return value && TRACE_STATUS_VALUES.has(value as TraceStatusFilter) ? (value as TraceStatusFilter) : undefined;\n};\n\ntype TracesQueryWindow = { filters: TracesFilters; dateFrom?: Date; dateTo?: Date };\n\n/** The trace query for the (sanitized) filters and the resolved date window. */\nexport const buildTracesQueryRequest = ({\n filters,\n dateFrom,\n dateTo,\n withRootDuration,\n now,\n}: TracesQueryWindow & { withRootDuration: boolean; now: Date }) =>\n buildTraceQueryRequest({\n rootEntityType: getSelectedEntityOption(filters.tokens)?.entityType,\n status: getSelectedStatus(filters.tokens),\n dateFrom,\n dateTo,\n tokens: filters.tokens,\n groups: filters.groups,\n excludedFieldIds: serverUnqueryableFieldIds(withRootDuration),\n now,\n });\n\n/** The `listTracesLight` filters for servers without the trace query API (no groups there). */\nexport const buildTracesLegacyFilters = ({ filters, dateFrom, dateTo }: TracesQueryWindow) =>\n buildTraceListFilters({\n rootEntityType: getSelectedEntityOption(filters.tokens)?.entityType,\n status: getSelectedStatus(filters.tokens),\n dateFrom,\n dateTo,\n tokens: filters.tokens,\n });\n\n/** Rolling presets start `PRESET_MS` before now and stay open-ended; `all` is open on both ends. */\nexport const resolveTracesDateWindow = (\n datePreset: TraceDatePreset,\n dateFrom: Date | undefined,\n dateTo: Date | undefined,\n): { dateFrom?: Date; dateTo?: Date } => {\n if (datePreset === 'custom') return { dateFrom, dateTo };\n const ms = PRESET_MS[datePreset];\n return { dateFrom: ms ? new Date(Date.now() - ms) : undefined, dateTo: undefined };\n};\n"],"mappings":";;;AAiCA,IAAa,sBAAkC;CAAE,OAAO;CAAa,WAAW;AAAO;AAKvF,IAAa,yBAA0C;CAAE,UAAU;CAAQ,kBAAkB,CAAC;AAAE;AAEhG,IAAa,yBAAwC;CAAE,YAAY;CAAW,QAAQ,CAAC;CAAG,QAAQ,CAAC;AAAE;AAErG,IAAM,SAAS;AACf,IAAM,YAAsD;CAC1D,YAAY;CACZ,WAAW,IAAI;CACf,WAAW,IAAI;CACf,YAAY,KAAK;CACjB,YAAY,KAAK;AACnB;AAEA,IAAa,oBAAoB,cAC/B,CAAC,UAAU,WACX,CAAC,UAAU,UACX,CAAC,UAAU,WACX,CAAC,UAAU,WACX,UAAU,iBAAiB,WAAW;;AAGxC,IAAa,kBAAkB,eAAiD;CAC9E,UAAU,UAAU;CACpB,kBAAkB,CAAC;AACrB;AAEA,IAAa,eAAe,WAA4B,YACtD,UAAU;CAAE;CAAS,UAAU,UAAU;CAAU,kBAAkB,CAAC;AAAE,IAAI,eAAe,SAAS;;;;;AAMtG,IAAa,cAAc,WAA4B,WAA2C;CAChG,KAAK,UAAU,KAAA,OAAe,UAAU,QAAQ,OAAO;CACvD,OAAO;EAAE,GAAG;EAAW,QAAQ,UAAU,KAAA;EAAW,SAAS,KAAA;CAAU;AACzE;AAEA,IAAa,cAAc,WAA4B,QAAkC;CACvF,IAAI,QAAQ,UAAU,SAAS,OAAO;CACtC,OAAO;EAAE,GAAG;EAAW,SAAS,QAAQ,YAAY,KAAA,IAAY;EAAK,SAAS,KAAA;CAAU;AAC1F;AAEA,IAAa,eAAe,WAA4B,aACtD,aAAa,UAAU,WAAW,YAAY;CAAE,GAAG;CAAW;AAAS;AAEzE,IAAa,eAAe,WAA4B,aACrD,WAAW,KAAA,OAAe,UAAU,UAAU,YAAY;CAAE,GAAG;CAAW,SAAS,WAAW,KAAA;AAAU;AAE3G,IAAa,kBAAkB,WAA4B,YAAuC;CAIhG,OAFE,QAAQ,WAAW,UAAU,iBAAiB,UAC9C,QAAQ,OAAO,IAAI,UAAU,OAAO,UAAU,iBAAiB,MAAM,IACpD,YAAY;EAAE,GAAG;EAAW,kBAAkB;CAAQ;AAC3E;AAEA,IAAa,qBACX,SACA,QACA,YACmB;CAAE,GAAG;CAAS;CAAQ;AAAO;;AAGlD,IAAa,mBAAmB,SAAwB,eACtD,eAAe,WAAW;CAAE,GAAG;CAAS;AAAW,IAAI;CAAE;CAAY,QAAQ,QAAQ;CAAQ,QAAQ,QAAQ;AAAO;AAGtH,IAAa,aAAa,SAAwB,MAAwB,QAAsC;CAC9G,IAAI,QAAQ,eAAe,UAAU,OAAO;CAC5C,OAAO,QAAQ,SAAS;EAAE,GAAG;EAAS,UAAU;CAAK,IAAI;EAAE,GAAG;EAAS,QAAQ;CAAK;AACtF;AAEA,IAAa,kBACX,SACA,UACA,WACmB,QAAQ,eAAe,WAAW;CAAE,GAAG;CAAS;CAAU;AAAO,IAAI;AAE1F,IAAM,0CAA+C,IAAI,IAAI,CAAC,YAAY,CAAC;AAC3E,IAAM,+BAAoC,IAAI,IAAI;;AAGlD,IAAM,6BAA6B,qBACjC,mBAAmB,eAAe;AAEpC,IAAM,oBAAoB,OAAyB,qBAA8B;CAC/E,IAAI,MAAM,YAAY,YAAY,MAAM,UAAU,WAAW,OAAO;CACpE,IAAIA,sBAAAA,sCAAsC,IAAI,MAAM,OAAO,GAAG,OAAO;CACrE,OAAO,CAAC,0BAA0B,gBAAgB,CAAC,CAAC,IAAI,MAAM,OAAO;AACvE;;;;;;AAOA,IAAa,yBAAyB,SAAwB,qBAA6C;CACzG,MAAM,SAAS,QAAQ,OAAO,QAAO,UAAS,iBAAiB,OAAO,gBAAgB,CAAC;CACvF,OAAO,OAAO,WAAW,QAAQ,OAAO,SAAS,UAAU;EAAE,GAAG;EAAS;CAAO;AAClF;AAEA,IAAM,kBAAkB,SAAuD;CAC7E,IAAI,WAAW,MAAM,OAAO,KAAK,MAAM,KAAK,cAAc;CAC1D,IAAI,KAAK,YAAY,UAAU,OAAO;CACtC,OAAO,MAAM,QAAQ,KAAK,KAAK,IAAI,KAAK,MAAM,SAAS,SAAS,IAAI,KAAK,UAAU;AACrF;;AAGA,IAAa,wBAAwB,YACnC,QAAQ,OAAO,KAAK,cAAc,KAAK,QAAQ,OAAO,KAAK,cAAc;AAE3E,IAAM,cAAc,QAA4B,YAAoB;CAClE,MAAM,QAAQ,OAAO,MAAK,UAAS,MAAM,YAAY,OAAO,CAAC,EAAE;CAC/D,OAAO,OAAO,UAAU,WAAW,QAAQ,KAAA;AAC7C;AAEA,IAAa,2BAA2B,WAA0D;CAChG,MAAM,QAAQ,WAAW,QAAQ,gBAAgB;CACjD,OAAOC,sBAAAA,yBAAyB,MAAK,WAAU,OAAO,eAAe,KAAK;AAC5E;AAEA,IAAa,qBAAqB,WAA8D;CAC9F,MAAM,QAAQ,WAAW,QAAQ,QAAQ;CACzC,OAAO,SAASC,sBAAAA,oBAAoB,IAAI,KAA0B,IAAK,QAA8B,KAAA;AACvG;;AAKA,IAAa,2BAA2B,EACtC,SACA,UACA,QACA,kBACA,UAEAC,sBAAAA,uBAAuB;CACrB,gBAAgB,wBAAwB,QAAQ,MAAM,CAAC,EAAE;CACzD,QAAQ,kBAAkB,QAAQ,MAAM;CACxC;CACA;CACA,QAAQ,QAAQ;CAChB,QAAQ,QAAQ;CAChB,kBAAkB,0BAA0B,gBAAgB;CAC5D;AACF,CAAC;;AAGH,IAAa,4BAA4B,EAAE,SAAS,UAAU,aAC5DC,sBAAAA,sBAAsB;CACpB,gBAAgB,wBAAwB,QAAQ,MAAM,CAAC,EAAE;CACzD,QAAQ,kBAAkB,QAAQ,MAAM;CACxC;CACA;CACA,QAAQ,QAAQ;AAClB,CAAC;;AAGH,IAAa,2BACX,YACA,UACA,WACuC;CACvC,IAAI,eAAe,UAAU,OAAO;EAAE;EAAU;CAAO;CACvD,MAAM,KAAK,UAAU;CACrB,OAAO;EAAE,UAAU,KAAK,IAAI,KAAK,KAAK,IAAI,IAAI,EAAE,IAAI,KAAA;EAAW,QAAQ,KAAA;CAAU;AACnF"}
1
+ {"version":3,"file":"traces-explorer-actions.cjs.js","names":["TRACE_QUERY_UNSUPPORTED_FILTER_FIELDS","traceQueryUnqueryableFieldIds","ROOT_ENTITY_TYPE_OPTIONS","TRACE_STATUS_VALUES","buildTraceQueryRequest","buildTraceListFilters"],"sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-actions.ts"],"sourcesContent":["import {\n buildTraceListFilters,\n ROOT_ENTITY_TYPE_OPTIONS,\n TRACE_STATUS_VALUES,\n traceQueryUnqueryableFieldIds,\n} from '../../trace-filters';\nimport type {\n EntityOptions,\n TraceFilterGroup,\n TraceFilterToken,\n TraceQueryFieldSupport,\n TraceStatusFilter,\n} from '../../trace-filters';\nimport { buildTraceQueryRequest, TRACE_QUERY_UNSUPPORTED_FILTER_FIELDS } from '../../trace-query-filters';\nimport type { SpanTab, TraceDatePreset } from '../../types';\nimport type { TraceSpanView } from '../trace-data-panel-view';\n\nexport type TracesSelection = {\n traceId?: string;\n spanId?: string;\n spanTab?: SpanTab;\n spanView: TraceSpanView;\n scoreId?: string;\n highlightSpanIds: string[];\n};\n\n/** `rootEntityType` and `status` are tokens too (`fieldId: 'rootEntityType' | 'status'`), like every other filter. */\nexport type TracesFilters = {\n datePreset: TraceDatePreset;\n /** Only read when `datePreset` is `custom`. */\n dateFrom?: Date;\n /** Only read when `datePreset` is `custom`. */\n dateTo?: Date;\n tokens: TraceFilterToken[];\n groups: TraceFilterGroup[];\n};\n\nexport type TracesSortDirection = 'asc' | 'desc';\n\n/** Fields the traces list can be sorted by, named like the trace query's `orderBy` fields. */\nexport const TRACES_SORT_FIELDS = ['startedAt', 'timeToFirstChunkMs', 'timeToFirstTokenMs'] as const;\nexport type TracesSortField = (typeof TRACES_SORT_FIELDS)[number];\n\nexport type TracesSort = { field: TracesSortField; direction: TracesSortDirection };\n\nexport const DEFAULT_TRACES_SORT: TracesSort = { field: 'startedAt', direction: 'desc' };\n\n/** What the explorer emits on every change: filters and selection move together (a filter edit clears the selection). */\nexport type TracesExplorerState = { selection: TracesSelection; filters: TracesFilters };\n\nexport const EMPTY_TRACES_SELECTION: TracesSelection = { spanView: 'tree', highlightSpanIds: [] };\n\nexport const DEFAULT_TRACES_FILTERS: TracesFilters = { datePreset: 'last-7d', tokens: [], groups: [] };\n\nconst DAY_MS = 24 * 60 * 60 * 1000;\nconst PRESET_MS: Partial<Record<TraceDatePreset, number>> = {\n 'last-24h': DAY_MS,\n 'last-3d': 3 * DAY_MS,\n 'last-7d': 7 * DAY_MS,\n 'last-14d': 14 * DAY_MS,\n 'last-30d': 30 * DAY_MS,\n};\n\nexport const isSelectionEmpty = (selection: TracesSelection) =>\n !selection.traceId &&\n !selection.spanId &&\n !selection.spanTab &&\n !selection.scoreId &&\n selection.highlightSpanIds.length === 0;\n\n/** Keeps the span view: it is a display preference, not part of what is selected. */\nexport const clearSelection = (selection: TracesSelection): TracesSelection => ({\n spanView: selection.spanView,\n highlightSpanIds: [],\n});\n\nexport const selectTrace = (selection: TracesSelection, traceId: string | null): TracesSelection =>\n traceId ? { traceId, spanView: selection.spanView, highlightSpanIds: [] } : clearSelection(selection);\n\n/**\n * The open tab stays, so stepping through spans compares the same tab; the score belongs to the\n * previous span and is dropped with it.\n */\nexport const selectSpan = (selection: TracesSelection, spanId: string | null): TracesSelection => {\n if ((spanId ?? undefined) === selection.spanId) return selection;\n return { ...selection, spanId: spanId ?? undefined, scoreId: undefined };\n};\n\nexport const setSpanTab = (selection: TracesSelection, tab: SpanTab): TracesSelection => {\n if (tab === selection.spanTab) return selection;\n return { ...selection, spanTab: tab === 'details' ? undefined : tab, scoreId: undefined };\n};\n\nexport const setSpanView = (selection: TracesSelection, spanView: TraceSpanView): TracesSelection =>\n spanView === selection.spanView ? selection : { ...selection, spanView };\n\nexport const selectScore = (selection: TracesSelection, scoreId: string | null): TracesSelection =>\n (scoreId ?? undefined) === selection.scoreId ? selection : { ...selection, scoreId: scoreId ?? undefined };\n\nexport const highlightSpans = (selection: TracesSelection, spanIds: string[]): TracesSelection => {\n const unchanged =\n spanIds.length === selection.highlightSpanIds.length &&\n spanIds.every((id, index) => id === selection.highlightSpanIds[index]);\n return unchanged ? selection : { ...selection, highlightSpanIds: spanIds };\n};\n\nexport const applyFilterTokens = (\n filters: TracesFilters,\n tokens: TraceFilterToken[],\n groups: TraceFilterGroup[],\n): TracesFilters => ({ ...filters, tokens, groups });\n\n/** Switching to `custom` keeps the current dates so the picker opens on them; any other preset drops them. */\nexport const applyDatePreset = (filters: TracesFilters, datePreset: TraceDatePreset): TracesFilters =>\n datePreset === 'custom' ? { ...filters, datePreset } : { datePreset, tokens: filters.tokens, groups: filters.groups };\n\n// The picker can report a date right after switching away from `custom`; those are ignored.\nexport const applyDate = (filters: TracesFilters, date: Date | undefined, end: 'from' | 'to'): TracesFilters => {\n if (filters.datePreset !== 'custom') return filters;\n return end === 'from' ? { ...filters, dateFrom: date } : { ...filters, dateTo: date };\n};\n\nexport const applyDateRange = (\n filters: TracesFilters,\n dateFrom: Date | undefined,\n dateTo: Date | undefined,\n): TracesFilters => (filters.datePreset === 'custom' ? { ...filters, dateFrom, dateTo } : filters);\n\nconst isQueryableToken = (token: TraceFilterToken, unqueryableFieldIds: ReadonlySet<string>) => {\n if (token.fieldId === 'status' && token.value === 'running') return false;\n if (TRACE_QUERY_UNSUPPORTED_FILTER_FIELDS.has(token.fieldId)) return false;\n return !unqueryableFieldIds.has(token.fieldId);\n};\n\n/**\n * Drops the top-level tokens the trace query can't run, so no chip advertises a filter with no effect.\n * Groups pass through and stay visible in the bar: `buildTracesQueryRequest` leaves their unqueryable\n * conditions out of the query. Returns the same object when nothing is dropped.\n */\nexport const sanitizeTracesFilters = (filters: TracesFilters, support: TraceQueryFieldSupport): TracesFilters => {\n const unqueryableFieldIds = traceQueryUnqueryableFieldIds(support);\n const tokens = filters.tokens.filter(token => isQueryableToken(token, unqueryableFieldIds));\n return tokens.length === filters.tokens.length ? filters : { ...filters, tokens };\n};\n\nconst selectsRunning = (node: TraceFilterGroup | TraceFilterToken): boolean => {\n if ('nodes' in node) return node.nodes.some(selectsRunning);\n if (node.fieldId !== 'status') return false;\n return Array.isArray(node.value) ? node.value.includes('running') : node.value === 'running';\n};\n\n/** Whether a status filter asks for `running`, which the trace query can't express and drops. */\nexport const selectsRunningStatus = (filters: TracesFilters): boolean =>\n filters.tokens.some(selectsRunning) || filters.groups.some(selectsRunning);\n\nconst tokenValue = (tokens: TraceFilterToken[], fieldId: string) => {\n const value = tokens.find(token => token.fieldId === fieldId)?.value;\n return typeof value === 'string' ? value : undefined;\n};\n\nexport const getSelectedEntityOption = (tokens: TraceFilterToken[]): EntityOptions | undefined => {\n const value = tokenValue(tokens, 'rootEntityType');\n return ROOT_ENTITY_TYPE_OPTIONS.find(option => option.entityType === value);\n};\n\nexport const getSelectedStatus = (tokens: TraceFilterToken[]): TraceStatusFilter | undefined => {\n const value = tokenValue(tokens, 'status');\n return value && TRACE_STATUS_VALUES.has(value as TraceStatusFilter) ? (value as TraceStatusFilter) : undefined;\n};\n\ntype TracesQueryWindow = { filters: TracesFilters; dateFrom?: Date; dateTo?: Date };\n\n/** The trace query for the (sanitized) filters and the resolved date window. */\nexport const buildTracesQueryRequest = ({\n filters,\n dateFrom,\n dateTo,\n now,\n ...support\n}: TracesQueryWindow & TraceQueryFieldSupport & { now: Date }) =>\n buildTraceQueryRequest({\n rootEntityType: getSelectedEntityOption(filters.tokens)?.entityType,\n status: getSelectedStatus(filters.tokens),\n dateFrom,\n dateTo,\n tokens: filters.tokens,\n groups: filters.groups,\n excludedFieldIds: traceQueryUnqueryableFieldIds(support),\n now,\n });\n\n/** The `listTracesLight` filters for servers without the trace query API (no groups there). */\nexport const buildTracesLegacyFilters = ({ filters, dateFrom, dateTo }: TracesQueryWindow) =>\n buildTraceListFilters({\n rootEntityType: getSelectedEntityOption(filters.tokens)?.entityType,\n status: getSelectedStatus(filters.tokens),\n dateFrom,\n dateTo,\n tokens: filters.tokens,\n });\n\n/** Rolling presets start `PRESET_MS` before now and stay open-ended; `all` is open on both ends. */\nexport const resolveTracesDateWindow = (\n datePreset: TraceDatePreset,\n dateFrom: Date | undefined,\n dateTo: Date | undefined,\n): { dateFrom?: Date; dateTo?: Date } => {\n if (datePreset === 'custom') return { dateFrom, dateTo };\n const ms = PRESET_MS[datePreset];\n return { dateFrom: ms ? new Date(Date.now() - ms) : undefined, dateTo: undefined };\n};\n"],"mappings":";;;;AAwCA,IAAa,qBAAqB;CAAC;CAAa;CAAsB;AAAoB;AAK1F,IAAa,sBAAkC;CAAE,OAAO;CAAa,WAAW;AAAO;AAKvF,IAAa,yBAA0C;CAAE,UAAU;CAAQ,kBAAkB,CAAC;AAAE;AAEhG,IAAa,yBAAwC;CAAE,YAAY;CAAW,QAAQ,CAAC;CAAG,QAAQ,CAAC;AAAE;AAErG,IAAM,SAAS;AACf,IAAM,YAAsD;CAC1D,YAAY;CACZ,WAAW,IAAI;CACf,WAAW,IAAI;CACf,YAAY,KAAK;CACjB,YAAY,KAAK;AACnB;AAEA,IAAa,oBAAoB,cAC/B,CAAC,UAAU,WACX,CAAC,UAAU,UACX,CAAC,UAAU,WACX,CAAC,UAAU,WACX,UAAU,iBAAiB,WAAW;;AAGxC,IAAa,kBAAkB,eAAiD;CAC9E,UAAU,UAAU;CACpB,kBAAkB,CAAC;AACrB;AAEA,IAAa,eAAe,WAA4B,YACtD,UAAU;CAAE;CAAS,UAAU,UAAU;CAAU,kBAAkB,CAAC;AAAE,IAAI,eAAe,SAAS;;;;;AAMtG,IAAa,cAAc,WAA4B,WAA2C;CAChG,KAAK,UAAU,KAAA,OAAe,UAAU,QAAQ,OAAO;CACvD,OAAO;EAAE,GAAG;EAAW,QAAQ,UAAU,KAAA;EAAW,SAAS,KAAA;CAAU;AACzE;AAEA,IAAa,cAAc,WAA4B,QAAkC;CACvF,IAAI,QAAQ,UAAU,SAAS,OAAO;CACtC,OAAO;EAAE,GAAG;EAAW,SAAS,QAAQ,YAAY,KAAA,IAAY;EAAK,SAAS,KAAA;CAAU;AAC1F;AAEA,IAAa,eAAe,WAA4B,aACtD,aAAa,UAAU,WAAW,YAAY;CAAE,GAAG;CAAW;AAAS;AAEzE,IAAa,eAAe,WAA4B,aACrD,WAAW,KAAA,OAAe,UAAU,UAAU,YAAY;CAAE,GAAG;CAAW,SAAS,WAAW,KAAA;AAAU;AAE3G,IAAa,kBAAkB,WAA4B,YAAuC;CAIhG,OAFE,QAAQ,WAAW,UAAU,iBAAiB,UAC9C,QAAQ,OAAO,IAAI,UAAU,OAAO,UAAU,iBAAiB,MAAM,IACpD,YAAY;EAAE,GAAG;EAAW,kBAAkB;CAAQ;AAC3E;AAEA,IAAa,qBACX,SACA,QACA,YACmB;CAAE,GAAG;CAAS;CAAQ;AAAO;;AAGlD,IAAa,mBAAmB,SAAwB,eACtD,eAAe,WAAW;CAAE,GAAG;CAAS;AAAW,IAAI;CAAE;CAAY,QAAQ,QAAQ;CAAQ,QAAQ,QAAQ;AAAO;AAGtH,IAAa,aAAa,SAAwB,MAAwB,QAAsC;CAC9G,IAAI,QAAQ,eAAe,UAAU,OAAO;CAC5C,OAAO,QAAQ,SAAS;EAAE,GAAG;EAAS,UAAU;CAAK,IAAI;EAAE,GAAG;EAAS,QAAQ;CAAK;AACtF;AAEA,IAAa,kBACX,SACA,UACA,WACmB,QAAQ,eAAe,WAAW;CAAE,GAAG;CAAS;CAAU;AAAO,IAAI;AAE1F,IAAM,oBAAoB,OAAyB,wBAA6C;CAC9F,IAAI,MAAM,YAAY,YAAY,MAAM,UAAU,WAAW,OAAO;CACpE,IAAIA,sBAAAA,sCAAsC,IAAI,MAAM,OAAO,GAAG,OAAO;CACrE,OAAO,CAAC,oBAAoB,IAAI,MAAM,OAAO;AAC/C;;;;;;AAOA,IAAa,yBAAyB,SAAwB,YAAmD;CAC/G,MAAM,sBAAsBC,sBAAAA,8BAA8B,OAAO;CACjE,MAAM,SAAS,QAAQ,OAAO,QAAO,UAAS,iBAAiB,OAAO,mBAAmB,CAAC;CAC1F,OAAO,OAAO,WAAW,QAAQ,OAAO,SAAS,UAAU;EAAE,GAAG;EAAS;CAAO;AAClF;AAEA,IAAM,kBAAkB,SAAuD;CAC7E,IAAI,WAAW,MAAM,OAAO,KAAK,MAAM,KAAK,cAAc;CAC1D,IAAI,KAAK,YAAY,UAAU,OAAO;CACtC,OAAO,MAAM,QAAQ,KAAK,KAAK,IAAI,KAAK,MAAM,SAAS,SAAS,IAAI,KAAK,UAAU;AACrF;;AAGA,IAAa,wBAAwB,YACnC,QAAQ,OAAO,KAAK,cAAc,KAAK,QAAQ,OAAO,KAAK,cAAc;AAE3E,IAAM,cAAc,QAA4B,YAAoB;CAClE,MAAM,QAAQ,OAAO,MAAK,UAAS,MAAM,YAAY,OAAO,CAAC,EAAE;CAC/D,OAAO,OAAO,UAAU,WAAW,QAAQ,KAAA;AAC7C;AAEA,IAAa,2BAA2B,WAA0D;CAChG,MAAM,QAAQ,WAAW,QAAQ,gBAAgB;CACjD,OAAOC,sBAAAA,yBAAyB,MAAK,WAAU,OAAO,eAAe,KAAK;AAC5E;AAEA,IAAa,qBAAqB,WAA8D;CAC9F,MAAM,QAAQ,WAAW,QAAQ,QAAQ;CACzC,OAAO,SAASC,sBAAAA,oBAAoB,IAAI,KAA0B,IAAK,QAA8B,KAAA;AACvG;;AAKA,IAAa,2BAA2B,EACtC,SACA,UACA,QACA,KACA,GAAG,cAEHC,sBAAAA,uBAAuB;CACrB,gBAAgB,wBAAwB,QAAQ,MAAM,CAAC,EAAE;CACzD,QAAQ,kBAAkB,QAAQ,MAAM;CACxC;CACA;CACA,QAAQ,QAAQ;CAChB,QAAQ,QAAQ;CAChB,kBAAkBH,sBAAAA,8BAA8B,OAAO;CACvD;AACF,CAAC;;AAGH,IAAa,4BAA4B,EAAE,SAAS,UAAU,aAC5DI,sBAAAA,sBAAsB;CACpB,gBAAgB,wBAAwB,QAAQ,MAAM,CAAC,EAAE;CACzD,QAAQ,kBAAkB,QAAQ,MAAM;CACxC;CACA;CACA,QAAQ,QAAQ;AAClB,CAAC;;AAGH,IAAa,2BACX,YACA,UACA,WACuC;CACvC,IAAI,eAAe,UAAU,OAAO;EAAE;EAAU;CAAO;CACvD,MAAM,KAAK,UAAU;CACrB,OAAO;EAAE,UAAU,KAAK,IAAI,KAAK,KAAK,IAAI,IAAI,EAAE,IAAI,KAAA;EAAW,QAAQ,KAAA;CAAU;AACnF"}
@@ -1,5 +1,11 @@
1
- import { E as TRACE_STATUS_VALUES, M as buildTraceListFilters, at as buildTraceQueryRequest, it as TRACE_QUERY_UNSUPPORTED_FILTER_FIELDS, r as ROOT_ENTITY_TYPE_OPTIONS } from "../../../../trace-filters-C27yWcan.js";
1
+ import { E as TRACE_STATUS_VALUES, N as buildTraceListFilters, ct as TRACE_QUERY_UNSUPPORTED_FILTER_FIELDS, lt as buildTraceQueryRequest, nt as traceQueryUnqueryableFieldIds, r as ROOT_ENTITY_TYPE_OPTIONS } from "../../../../trace-filters-BJaebsxJ.js";
2
2
  // src/domains/traces/components/traces-explorer/traces-explorer-actions.ts
3
+ /** Fields the traces list can be sorted by, named like the trace query's `orderBy` fields. */
4
+ var TRACES_SORT_FIELDS = [
5
+ "startedAt",
6
+ "timeToFirstChunkMs",
7
+ "timeToFirstTokenMs"
8
+ ];
3
9
  var DEFAULT_TRACES_SORT = {
4
10
  field: "startedAt",
5
11
  direction: "desc"
@@ -95,22 +101,19 @@ var applyDateRange = (filters, dateFrom, dateTo) => filters.datePreset === "cust
95
101
  dateFrom,
96
102
  dateTo
97
103
  } : filters;
98
- var ROOT_DURATION_FIELD_IDS = /* @__PURE__ */ new Set(["durationMs"]);
99
- var NO_FIELD_IDS = /* @__PURE__ */ new Set();
100
- /** Fields this server can't query on top of the always-unsupported ones: root duration needs its capability. */
101
- var serverUnqueryableFieldIds = (withRootDuration) => withRootDuration ? NO_FIELD_IDS : ROOT_DURATION_FIELD_IDS;
102
- var isQueryableToken = (token, withRootDuration) => {
104
+ var isQueryableToken = (token, unqueryableFieldIds) => {
103
105
  if (token.fieldId === "status" && token.value === "running") return false;
104
106
  if (TRACE_QUERY_UNSUPPORTED_FILTER_FIELDS.has(token.fieldId)) return false;
105
- return !serverUnqueryableFieldIds(withRootDuration).has(token.fieldId);
107
+ return !unqueryableFieldIds.has(token.fieldId);
106
108
  };
107
109
  /**
108
110
  * Drops the top-level tokens the trace query can't run, so no chip advertises a filter with no effect.
109
111
  * Groups pass through and stay visible in the bar: `buildTracesQueryRequest` leaves their unqueryable
110
112
  * conditions out of the query. Returns the same object when nothing is dropped.
111
113
  */
112
- var sanitizeTracesFilters = (filters, withRootDuration) => {
113
- const tokens = filters.tokens.filter((token) => isQueryableToken(token, withRootDuration));
114
+ var sanitizeTracesFilters = (filters, support) => {
115
+ const unqueryableFieldIds = traceQueryUnqueryableFieldIds(support);
116
+ const tokens = filters.tokens.filter((token) => isQueryableToken(token, unqueryableFieldIds));
114
117
  return tokens.length === filters.tokens.length ? filters : {
115
118
  ...filters,
116
119
  tokens
@@ -136,14 +139,14 @@ var getSelectedStatus = (tokens) => {
136
139
  return value && TRACE_STATUS_VALUES.has(value) ? value : void 0;
137
140
  };
138
141
  /** The trace query for the (sanitized) filters and the resolved date window. */
139
- var buildTracesQueryRequest = ({ filters, dateFrom, dateTo, withRootDuration, now }) => buildTraceQueryRequest({
142
+ var buildTracesQueryRequest = ({ filters, dateFrom, dateTo, now, ...support }) => buildTraceQueryRequest({
140
143
  rootEntityType: getSelectedEntityOption(filters.tokens)?.entityType,
141
144
  status: getSelectedStatus(filters.tokens),
142
145
  dateFrom,
143
146
  dateTo,
144
147
  tokens: filters.tokens,
145
148
  groups: filters.groups,
146
- excludedFieldIds: serverUnqueryableFieldIds(withRootDuration),
149
+ excludedFieldIds: traceQueryUnqueryableFieldIds(support),
147
150
  now
148
151
  });
149
152
  /** The `listTracesLight` filters for servers without the trace query API (no groups there). */
@@ -166,6 +169,6 @@ var resolveTracesDateWindow = (datePreset, dateFrom, dateTo) => {
166
169
  dateTo: void 0
167
170
  };
168
171
  };
169
- export { DEFAULT_TRACES_FILTERS, DEFAULT_TRACES_SORT, EMPTY_TRACES_SELECTION, applyDate, applyDatePreset, applyDateRange, applyFilterTokens, buildTracesLegacyFilters, buildTracesQueryRequest, clearSelection, getSelectedEntityOption, getSelectedStatus, highlightSpans, isSelectionEmpty, resolveTracesDateWindow, sanitizeTracesFilters, selectScore, selectSpan, selectTrace, selectsRunningStatus, setSpanTab, setSpanView };
172
+ export { DEFAULT_TRACES_FILTERS, DEFAULT_TRACES_SORT, EMPTY_TRACES_SELECTION, TRACES_SORT_FIELDS, applyDate, applyDatePreset, applyDateRange, applyFilterTokens, buildTracesLegacyFilters, buildTracesQueryRequest, clearSelection, getSelectedEntityOption, getSelectedStatus, highlightSpans, isSelectionEmpty, resolveTracesDateWindow, sanitizeTracesFilters, selectScore, selectSpan, selectTrace, selectsRunningStatus, setSpanTab, setSpanView };
170
173
 
171
174
  //# sourceMappingURL=traces-explorer-actions.es.js.map