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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1052) hide show
  1. package/dist/AgentIndicator-Bs2S8AWJ.js +847 -0
  2. package/dist/AgentIndicator-Bs2S8AWJ.js.map +1 -0
  3. package/dist/AgentIndicator-to30W73z.cjs +864 -0
  4. package/dist/AgentIndicator-to30W73z.cjs.map +1 -0
  5. package/dist/AgentIndicator.css +28 -0
  6. package/dist/{Arrival-NpBOyV52.js → Arrival-CJFEOXr5.js} +33 -3
  7. package/dist/Arrival-CJFEOXr5.js.map +1 -0
  8. package/dist/{Arrival-Dm6Vgn78.cjs → Arrival-Cs1oWjo4.cjs} +43 -1
  9. package/dist/Arrival-Cs1oWjo4.cjs.map +1 -0
  10. package/dist/{Comment-CUQvfikb.cjs → Comment-KYUQzeSu.cjs} +2 -2
  11. package/dist/{Comment-CUQvfikb.cjs.map → Comment-KYUQzeSu.cjs.map} +1 -1
  12. package/dist/{Comment-CPA3IyPS.js → Comment-VFJq2wRp.js} +2 -2
  13. package/dist/{Comment-CPA3IyPS.js.map → Comment-VFJq2wRp.js.map} +1 -1
  14. package/dist/{DataList-Ve3omCXT.js → DataList-2tIlQsLc.js} +95 -3
  15. package/dist/DataList-2tIlQsLc.js.map +1 -0
  16. package/dist/{DataList-Cmk08jUV.cjs → DataList-Czwmwyvp.cjs} +93 -1
  17. package/dist/DataList-Czwmwyvp.cjs.map +1 -0
  18. package/dist/{DateTimeRangePicker-ByMbLdom.js → DateTimeRangePicker-C_Lie_2P.js} +23 -2
  19. package/dist/DateTimeRangePicker-C_Lie_2P.js.map +1 -0
  20. package/dist/{DateTimeRangePicker-DGbH5WOn.cjs → DateTimeRangePicker-HmPOHwAQ.cjs} +23 -2
  21. package/dist/DateTimeRangePicker-HmPOHwAQ.cjs.map +1 -0
  22. package/dist/{FilterBar-Dk3QEuT6.js → FilterBar--4oguuVe.js} +4 -4
  23. package/dist/FilterBar--4oguuVe.js.map +1 -0
  24. package/dist/{FilterBar-gEvoWDXA.cjs → FilterBar-BUd4f7oi.cjs} +7 -7
  25. package/dist/FilterBar-BUd4f7oi.cjs.map +1 -0
  26. package/dist/GrainFill.css +2 -0
  27. package/dist/{MarkdownRenderer-BgqKfmRm.cjs → MarkdownRenderer-CS6u5drO.cjs} +2 -2
  28. package/dist/{MarkdownRenderer-BgqKfmRm.cjs.map → MarkdownRenderer-CS6u5drO.cjs.map} +1 -1
  29. package/dist/{MarkdownRenderer-DKCDXaLy.js → MarkdownRenderer-DME2xKTk.js} +2 -2
  30. package/dist/{MarkdownRenderer-DKCDXaLy.js.map → MarkdownRenderer-DME2xKTk.js.map} +1 -1
  31. package/dist/{Message-BF9cpYaw.cjs → Message-DsCNQpou.cjs} +2 -2
  32. package/dist/{Message-BF9cpYaw.cjs.map → Message-DsCNQpou.cjs.map} +1 -1
  33. package/dist/{Message-Bkf6Ro9H.js → Message-nVI6tMS3.js} +2 -2
  34. package/dist/{Message-Bkf6Ro9H.js.map → Message-nVI6tMS3.js.map} +1 -1
  35. package/dist/{MetricsCard-Dly_H3oX.cjs → MetricsCard-CEB-f2sv.cjs} +91 -109
  36. package/dist/MetricsCard-CEB-f2sv.cjs.map +1 -0
  37. package/dist/{MetricsCard-C9GWgT58.js → MetricsCard-M8awJ2B_.js} +91 -109
  38. package/dist/MetricsCard-M8awJ2B_.js.map +1 -0
  39. package/dist/{MetricsKpiCard-Uw0nyMgW.cjs → MetricsKpiCard-By_-sagx.cjs} +3 -2
  40. package/dist/{MetricsKpiCard-Uw0nyMgW.cjs.map → MetricsKpiCard-By_-sagx.cjs.map} +1 -1
  41. package/dist/{MetricsKpiCard-Idxjl-dn.js → MetricsKpiCard-OHbAElTl.js} +3 -2
  42. package/dist/{MetricsKpiCard-Idxjl-dn.js.map → MetricsKpiCard-OHbAElTl.js.map} +1 -1
  43. package/dist/{MetricsLineChart-DKzuRU2q.js → MetricsLineChart-BhHoduO0.js} +21 -39
  44. package/dist/MetricsLineChart-BhHoduO0.js.map +1 -0
  45. package/dist/{MetricsLineChart-2m4LVL1N.cjs → MetricsLineChart-CjBm4IXu.cjs} +21 -39
  46. package/dist/MetricsLineChart-CjBm4IXu.cjs.map +1 -0
  47. package/dist/{MetricsStackedBarChart-DJB4aByt.js → MetricsStackedBarChart-BRuA6MTE.js} +2 -3
  48. package/dist/MetricsStackedBarChart-BRuA6MTE.js.map +1 -0
  49. package/dist/{MetricsStackedBarChart-NATtwA_W.cjs → MetricsStackedBarChart-BdMlKv6G.cjs} +2 -3
  50. package/dist/MetricsStackedBarChart-BdMlKv6G.cjs.map +1 -0
  51. package/dist/Notice.css +2 -0
  52. package/dist/Shimmer.css +7 -0
  53. package/dist/{activity-ihrl0JtH.js → activity-CM34JyW-.js} +98 -33
  54. package/dist/activity-CM34JyW-.js.map +1 -0
  55. package/dist/{activity-QyLJcBKc.cjs → activity-DAK8tj7r.cjs} +108 -31
  56. package/dist/activity-DAK8tj7r.cjs.map +1 -0
  57. package/dist/chart-plot.css +15 -0
  58. package/dist/combobox-8kNAJFlj.cjs +309 -0
  59. package/dist/combobox-8kNAJFlj.cjs.map +1 -0
  60. package/dist/{combobox-C-E7_q4j.cjs → combobox-parts-BZVXwbG7.cjs} +7 -300
  61. package/dist/combobox-parts-BZVXwbG7.cjs.map +1 -0
  62. package/dist/{combobox-CDS2pBqz.js → combobox-parts-W7KRQUsV.js} +10 -297
  63. package/dist/combobox-parts-W7KRQUsV.js.map +1 -0
  64. package/dist/combobox-wFudhN8F.js +302 -0
  65. package/dist/combobox-wFudhN8F.js.map +1 -0
  66. package/dist/components/AgentIndicator.cjs.js +5 -0
  67. package/dist/components/AgentIndicator.d.ts +1 -0
  68. package/dist/components/AgentIndicator.es.js +1 -0
  69. package/dist/components/Arrival.cjs.js +3 -1
  70. package/dist/components/Arrival.es.js +1 -1
  71. package/dist/components/Combobox.cjs.js +24 -23
  72. package/dist/components/Combobox.es.js +2 -1
  73. package/dist/components/Comment.cjs.js +1 -1
  74. package/dist/components/Comment.es.js +1 -1
  75. package/dist/components/DataList.cjs.js +2 -2
  76. package/dist/components/DataList.es.js +2 -2
  77. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  78. package/dist/components/DateTimeRangePicker.es.js +1 -1
  79. package/dist/components/DiffStat.cjs.js +1 -1
  80. package/dist/components/DiffStat.es.js +1 -1
  81. package/dist/components/FilterBar.cjs.js +2 -2
  82. package/dist/components/FilterBar.es.js +2 -2
  83. package/dist/components/LogsDataList.cjs.js +1 -1
  84. package/dist/components/LogsDataList.es.js +1 -1
  85. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  86. package/dist/components/MarkdownRenderer.es.js +1 -1
  87. package/dist/components/Message.cjs.js +1 -1
  88. package/dist/components/Message.es.js +1 -1
  89. package/dist/components/MetricsCard.cjs.js +1 -1
  90. package/dist/components/MetricsCard.es.js +1 -1
  91. package/dist/components/MetricsKpiCard.cjs.js +1 -1
  92. package/dist/components/MetricsKpiCard.es.js +1 -1
  93. package/dist/components/MetricsLineChart.cjs.js +1 -1
  94. package/dist/components/MetricsLineChart.es.js +1 -1
  95. package/dist/components/MetricsStackedBarChart.cjs.js +1 -1
  96. package/dist/components/MetricsStackedBarChart.es.js +1 -1
  97. package/dist/components/PropertyFilter.cjs.js +1 -1
  98. package/dist/components/PropertyFilter.es.js +1 -1
  99. package/dist/components/SavedViews.cjs.js +27 -69
  100. package/dist/components/SavedViews.cjs.js.map +1 -1
  101. package/dist/components/SavedViews.es.js +26 -68
  102. package/dist/components/SavedViews.es.js.map +1 -1
  103. package/dist/components/ai/activity.cjs.js +3 -1
  104. package/dist/components/ai/activity.es.js +1 -1
  105. package/dist/components/ai/message-reveal.cjs.js +2 -1
  106. package/dist/components/ai/message-reveal.cjs.js.map +1 -1
  107. package/dist/components/ai/message-reveal.es.js +2 -1
  108. package/dist/components/ai/message-reveal.es.js.map +1 -1
  109. package/dist/components/ai/plan.cjs.js +1 -1
  110. package/dist/components/ai/plan.es.js +1 -1
  111. package/dist/components/ai/tool-approval.cjs.js +1 -1
  112. package/dist/components/ai/tool-approval.es.js +1 -1
  113. package/dist/components/ai/tool-call.cjs.js +2 -2
  114. package/dist/components/ai/tool-call.es.js +2 -2
  115. package/dist/domains/chat/activity/activity-stretch-line.cjs.js +6 -4
  116. package/dist/domains/chat/activity/activity-stretch-line.cjs.js.map +1 -1
  117. package/dist/domains/chat/activity/activity-stretch-line.es.js +6 -4
  118. package/dist/domains/chat/activity/activity-stretch-line.es.js.map +1 -1
  119. package/dist/domains/chat/activity/components/activity-fold.cjs.js +81 -28
  120. package/dist/domains/chat/activity/components/activity-fold.cjs.js.map +1 -1
  121. package/dist/domains/chat/activity/components/activity-fold.es.js +82 -29
  122. package/dist/domains/chat/activity/components/activity-fold.es.js.map +1 -1
  123. package/dist/domains/chat/activity/components/activity-timed-trigger.cjs.js +1 -1
  124. package/dist/domains/chat/activity/components/activity-timed-trigger.es.js +1 -1
  125. package/dist/domains/chat/activity/components/calls-panel.cjs.js +1 -1
  126. package/dist/domains/chat/activity/components/calls-panel.es.js +1 -1
  127. package/dist/domains/chat/activity/components/stretch-content.cjs.js +1 -1
  128. package/dist/domains/chat/activity/components/stretch-content.es.js +1 -1
  129. package/dist/domains/chat/activity/components/stretch-thought.cjs.js +1 -1
  130. package/dist/domains/chat/activity/components/stretch-thought.es.js +1 -1
  131. package/dist/domains/chat/activity/components/use-fading-edge.cjs.js +26 -0
  132. package/dist/domains/chat/activity/components/use-fading-edge.cjs.js.map +1 -0
  133. package/dist/domains/chat/activity/components/use-fading-edge.d.ts +1 -0
  134. package/dist/domains/chat/activity/components/use-fading-edge.es.js +25 -0
  135. package/dist/domains/chat/activity/components/use-fading-edge.es.js.map +1 -0
  136. package/dist/domains/chat/activity/components/use-rolling-words.cjs.js +123 -0
  137. package/dist/domains/chat/activity/components/use-rolling-words.cjs.js.map +1 -0
  138. package/dist/domains/chat/activity/components/use-rolling-words.d.ts +1 -0
  139. package/dist/domains/chat/activity/components/use-rolling-words.es.js +122 -0
  140. package/dist/domains/chat/activity/components/use-rolling-words.es.js.map +1 -0
  141. package/dist/domains/chat/activity/model/activity-segments.cjs.js +1 -1
  142. package/dist/domains/chat/activity/model/activity-segments.es.js +1 -1
  143. package/dist/domains/chat/activity/model/activity-words.cjs.js +16 -6
  144. package/dist/domains/chat/activity/model/activity-words.cjs.js.map +1 -1
  145. package/dist/domains/chat/activity/model/activity-words.es.js +15 -7
  146. package/dist/domains/chat/activity/model/activity-words.es.js.map +1 -1
  147. package/dist/domains/chat/activity.cjs.js +3 -0
  148. package/dist/domains/chat/activity.es.js +2 -1
  149. package/dist/domains/chat/components/badge-wrapper.cjs.js +1 -1
  150. package/dist/domains/chat/components/badge-wrapper.es.js +1 -1
  151. package/dist/domains/chat/messages/assistant-message-actions.cjs.js +1 -1
  152. package/dist/domains/chat/messages/assistant-message-actions.es.js +1 -1
  153. package/dist/domains/chat/messages/message-row.cjs.js +4 -4
  154. package/dist/domains/chat/messages/message-row.es.js +4 -4
  155. package/dist/domains/chat/messages/notification-signal-notice.cjs.js +1 -1
  156. package/dist/domains/chat/messages/notification-signal-notice.es.js +1 -1
  157. package/dist/domains/chat/messages/reasoning-content.cjs.js +1 -1
  158. package/dist/domains/chat/messages/reasoning-content.es.js +1 -1
  159. package/dist/domains/chat/messages/renderers/message-text.cjs.js +1 -1
  160. package/dist/domains/chat/messages/renderers/message-text.es.js +1 -1
  161. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
  162. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
  163. package/dist/domains/chat/messages/renderers/tool-part.cjs.js +18 -0
  164. package/dist/domains/chat/messages/renderers/tool-part.cjs.js.map +1 -1
  165. package/dist/domains/chat/messages/renderers/tool-part.es.js +18 -0
  166. package/dist/domains/chat/messages/renderers/tool-part.es.js.map +1 -1
  167. package/dist/domains/chat/messages/signal-badge.cjs.js +1 -1
  168. package/dist/domains/chat/messages/signal-badge.es.js +1 -1
  169. package/dist/domains/chat/messages/skill-message.cjs.js +10 -7
  170. package/dist/domains/chat/messages/skill-message.cjs.js.map +1 -1
  171. package/dist/domains/chat/messages/skill-message.es.js +10 -7
  172. package/dist/domains/chat/messages/skill-message.es.js.map +1 -1
  173. package/dist/domains/chat/messages/system-reminder-badge.cjs.js +1 -1
  174. package/dist/domains/chat/messages/system-reminder-badge.es.js +1 -1
  175. package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
  176. package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
  177. package/dist/domains/chat/tools/badges/agent-badge.cjs.js +1 -1
  178. package/dist/domains/chat/tools/badges/agent-badge.es.js +1 -1
  179. package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +2 -2
  180. package/dist/domains/chat/tools/badges/file-tree-badge.es.js +2 -2
  181. package/dist/domains/chat/tools/badges/mcp-task-chip.cjs.js +111 -0
  182. package/dist/domains/chat/tools/badges/mcp-task-chip.cjs.js.map +1 -0
  183. package/dist/domains/chat/tools/badges/mcp-task-chip.d.ts +1 -0
  184. package/dist/domains/chat/tools/badges/mcp-task-chip.es.js +109 -0
  185. package/dist/domains/chat/tools/badges/mcp-task-chip.es.js.map +1 -0
  186. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +8 -6
  187. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js.map +1 -1
  188. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +9 -7
  189. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js.map +1 -1
  190. package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +2 -3
  191. package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js.map +1 -1
  192. package/dist/domains/chat/tools/badges/observation-marker-details.es.js +2 -3
  193. package/dist/domains/chat/tools/badges/observation-marker-details.es.js.map +1 -1
  194. package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +1 -1
  195. package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
  196. package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js +2 -2
  197. package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js +2 -2
  198. package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +1 -1
  199. package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
  200. package/dist/domains/chat/tools/badges/tool-badge.cjs.js +10 -4
  201. package/dist/domains/chat/tools/badges/tool-badge.cjs.js.map +1 -1
  202. package/dist/domains/chat/tools/badges/tool-badge.es.js +10 -4
  203. package/dist/domains/chat/tools/badges/tool-badge.es.js.map +1 -1
  204. package/dist/domains/chat/tools/badges/use-mcp-task-progress.cjs.js +51 -0
  205. package/dist/domains/chat/tools/badges/use-mcp-task-progress.cjs.js.map +1 -0
  206. package/dist/domains/chat/tools/badges/use-mcp-task-progress.d.ts +1 -0
  207. package/dist/domains/chat/tools/badges/use-mcp-task-progress.es.js +49 -0
  208. package/dist/domains/chat/tools/badges/use-mcp-task-progress.es.js.map +1 -0
  209. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +1 -1
  210. package/dist/domains/chat/tools/badges/workflow-badge.es.js +1 -1
  211. package/dist/domains/chat/tools/tool-card-kind.cjs.js +1 -1
  212. package/dist/domains/chat/tools/tool-card-kind.es.js +1 -1
  213. package/dist/domains/chat/tools/tool-card.cjs.js +1 -1
  214. package/dist/domains/chat/tools/tool-card.es.js +1 -1
  215. package/dist/domains/chat/tools/tool-groups.cjs.js +1 -1
  216. package/dist/domains/chat/tools/tool-groups.es.js +1 -1
  217. package/dist/domains/dashboards/components/dashboard-grid.cjs.js +44 -0
  218. package/dist/domains/dashboards/components/dashboard-grid.cjs.js.map +1 -0
  219. package/dist/domains/dashboards/components/dashboard-grid.d.ts +1 -0
  220. package/dist/domains/dashboards/components/dashboard-grid.es.js +41 -0
  221. package/dist/domains/dashboards/components/dashboard-grid.es.js.map +1 -0
  222. package/dist/domains/dashboards/components/dashboard-renderer.cjs.js +72 -0
  223. package/dist/domains/dashboards/components/dashboard-renderer.cjs.js.map +1 -0
  224. package/dist/domains/dashboards/components/dashboard-renderer.d.ts +1 -0
  225. package/dist/domains/dashboards/components/dashboard-renderer.es.js +71 -0
  226. package/dist/domains/dashboards/components/dashboard-renderer.es.js.map +1 -0
  227. package/dist/domains/dashboards/components/view-gate.cjs.js +55 -0
  228. package/dist/domains/dashboards/components/view-gate.cjs.js.map +1 -0
  229. package/dist/domains/dashboards/components/view-gate.d.ts +1 -0
  230. package/dist/domains/dashboards/components/view-gate.es.js +54 -0
  231. package/dist/domains/dashboards/components/view-gate.es.js.map +1 -0
  232. package/dist/domains/dashboards/components/widget-chrome.cjs.js +16 -0
  233. package/dist/domains/dashboards/components/widget-chrome.cjs.js.map +1 -0
  234. package/dist/domains/dashboards/components/widget-chrome.d.ts +1 -0
  235. package/dist/domains/dashboards/components/widget-chrome.es.js +15 -0
  236. package/dist/domains/dashboards/components/widget-chrome.es.js.map +1 -0
  237. package/dist/domains/dashboards/components/widget-controls.cjs.js +21 -0
  238. package/dist/domains/dashboards/components/widget-controls.cjs.js.map +1 -0
  239. package/dist/domains/dashboards/components/widget-controls.d.ts +1 -0
  240. package/dist/domains/dashboards/components/widget-controls.es.js +20 -0
  241. package/dist/domains/dashboards/components/widget-controls.es.js.map +1 -0
  242. package/dist/domains/dashboards/components/widget-error.cjs.js +18 -0
  243. package/dist/domains/dashboards/components/widget-error.cjs.js.map +1 -0
  244. package/dist/domains/dashboards/components/widget-error.d.ts +1 -0
  245. package/dist/domains/dashboards/components/widget-error.es.js +17 -0
  246. package/dist/domains/dashboards/components/widget-error.es.js.map +1 -0
  247. package/dist/domains/dashboards/hooks/use-dashboard-requests.cjs.js +47 -0
  248. package/dist/domains/dashboards/hooks/use-dashboard-requests.cjs.js.map +1 -0
  249. package/dist/domains/dashboards/hooks/use-dashboard-requests.d.ts +1 -0
  250. package/dist/domains/dashboards/hooks/use-dashboard-requests.es.js +46 -0
  251. package/dist/domains/dashboards/hooks/use-dashboard-requests.es.js.map +1 -0
  252. package/dist/domains/dashboards/hooks/use-scorers.cjs.js +41 -0
  253. package/dist/domains/dashboards/hooks/use-scorers.cjs.js.map +1 -0
  254. package/dist/domains/dashboards/hooks/use-scorers.d.ts +1 -0
  255. package/dist/domains/dashboards/hooks/use-scorers.es.js +40 -0
  256. package/dist/domains/dashboards/hooks/use-scorers.es.js.map +1 -0
  257. package/dist/domains/dashboards/hooks/use-widget-views.cjs.js +35 -0
  258. package/dist/domains/dashboards/hooks/use-widget-views.cjs.js.map +1 -0
  259. package/dist/domains/dashboards/hooks/use-widget-views.d.ts +1 -0
  260. package/dist/domains/dashboards/hooks/use-widget-views.es.js +32 -0
  261. package/dist/domains/dashboards/hooks/use-widget-views.es.js.map +1 -0
  262. package/dist/domains/dashboards/kinds/kpis/kpis-widget.cjs.js +63 -0
  263. package/dist/domains/dashboards/kinds/kpis/kpis-widget.cjs.js.map +1 -0
  264. package/dist/domains/dashboards/kinds/kpis/kpis-widget.d.ts +1 -0
  265. package/dist/domains/dashboards/kinds/kpis/kpis-widget.es.js +62 -0
  266. package/dist/domains/dashboards/kinds/kpis/kpis-widget.es.js.map +1 -0
  267. package/dist/domains/dashboards/kinds/kpis/options.cjs.js +72 -0
  268. package/dist/domains/dashboards/kinds/kpis/options.cjs.js.map +1 -0
  269. package/dist/domains/dashboards/kinds/kpis/options.d.ts +1 -0
  270. package/dist/domains/dashboards/kinds/kpis/options.es.js +69 -0
  271. package/dist/domains/dashboards/kinds/kpis/options.es.js.map +1 -0
  272. package/dist/domains/dashboards/kinds/kpis.cjs.js +17 -0
  273. package/dist/domains/dashboards/kinds/kpis.cjs.js.map +1 -0
  274. package/dist/domains/dashboards/kinds/kpis.d.ts +1 -0
  275. package/dist/domains/dashboards/kinds/kpis.es.js +14 -0
  276. package/dist/domains/dashboards/kinds/kpis.es.js.map +1 -0
  277. package/dist/domains/dashboards/kinds/scores/options.cjs.js +30 -0
  278. package/dist/domains/dashboards/kinds/scores/options.cjs.js.map +1 -0
  279. package/dist/domains/dashboards/kinds/scores/options.d.ts +1 -0
  280. package/dist/domains/dashboards/kinds/scores/options.es.js +28 -0
  281. package/dist/domains/dashboards/kinds/scores/options.es.js.map +1 -0
  282. package/dist/domains/dashboards/kinds/scores/scores-widget.cjs.js +91 -0
  283. package/dist/domains/dashboards/kinds/scores/scores-widget.cjs.js.map +1 -0
  284. package/dist/domains/dashboards/kinds/scores/scores-widget.d.ts +1 -0
  285. package/dist/domains/dashboards/kinds/scores/scores-widget.es.js +90 -0
  286. package/dist/domains/dashboards/kinds/scores/scores-widget.es.js.map +1 -0
  287. package/dist/domains/dashboards/kinds/scores.cjs.js +16 -0
  288. package/dist/domains/dashboards/kinds/scores.cjs.js.map +1 -0
  289. package/dist/domains/dashboards/kinds/scores.d.ts +1 -0
  290. package/dist/domains/dashboards/kinds/scores.es.js +14 -0
  291. package/dist/domains/dashboards/kinds/scores.es.js.map +1 -0
  292. package/dist/domains/dashboards/kinds/table/table-cells.cjs.js +67 -0
  293. package/dist/domains/dashboards/kinds/table/table-cells.cjs.js.map +1 -0
  294. package/dist/domains/dashboards/kinds/table/table-cells.d.ts +1 -0
  295. package/dist/domains/dashboards/kinds/table/table-cells.es.js +63 -0
  296. package/dist/domains/dashboards/kinds/table/table-cells.es.js.map +1 -0
  297. package/dist/domains/dashboards/kinds/table/table-columns.cjs.js +72 -0
  298. package/dist/domains/dashboards/kinds/table/table-columns.cjs.js.map +1 -0
  299. package/dist/domains/dashboards/kinds/table/table-columns.d.ts +1 -0
  300. package/dist/domains/dashboards/kinds/table/table-columns.es.js +71 -0
  301. package/dist/domains/dashboards/kinds/table/table-columns.es.js.map +1 -0
  302. package/dist/domains/dashboards/kinds/table/table-frame.cjs.js +16 -0
  303. package/dist/domains/dashboards/kinds/table/table-frame.cjs.js.map +1 -0
  304. package/dist/domains/dashboards/kinds/table/table-frame.d.ts +1 -0
  305. package/dist/domains/dashboards/kinds/table/table-frame.es.js +15 -0
  306. package/dist/domains/dashboards/kinds/table/table-frame.es.js.map +1 -0
  307. package/dist/domains/dashboards/kinds/table/table-tabs.cjs.js +55 -0
  308. package/dist/domains/dashboards/kinds/table/table-tabs.cjs.js.map +1 -0
  309. package/dist/domains/dashboards/kinds/table/table-tabs.d.ts +1 -0
  310. package/dist/domains/dashboards/kinds/table/table-tabs.es.js +54 -0
  311. package/dist/domains/dashboards/kinds/table/table-tabs.es.js.map +1 -0
  312. package/dist/domains/dashboards/kinds/table/table-view.cjs.js +80 -0
  313. package/dist/domains/dashboards/kinds/table/table-view.cjs.js.map +1 -0
  314. package/dist/domains/dashboards/kinds/table/table-view.d.ts +1 -0
  315. package/dist/domains/dashboards/kinds/table/table-view.es.js +79 -0
  316. package/dist/domains/dashboards/kinds/table/table-view.es.js.map +1 -0
  317. package/dist/domains/dashboards/kinds/table/table-widget.cjs.js +30 -0
  318. package/dist/domains/dashboards/kinds/table/table-widget.cjs.js.map +1 -0
  319. package/dist/domains/dashboards/kinds/table/table-widget.d.ts +1 -0
  320. package/dist/domains/dashboards/kinds/table/table-widget.es.js +29 -0
  321. package/dist/domains/dashboards/kinds/table/table-widget.es.js.map +1 -0
  322. package/dist/domains/dashboards/kinds/table.cjs.js +17 -0
  323. package/dist/domains/dashboards/kinds/table.cjs.js.map +1 -0
  324. package/dist/domains/dashboards/kinds/table.d.ts +1 -0
  325. package/dist/domains/dashboards/kinds/table.es.js +14 -0
  326. package/dist/domains/dashboards/kinds/table.es.js.map +1 -0
  327. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.cjs.js +115 -0
  328. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.cjs.js.map +1 -0
  329. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.d.ts +1 -0
  330. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.es.js +114 -0
  331. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.es.js.map +1 -0
  332. package/dist/domains/dashboards/kinds/timeseries.cjs.js +15 -0
  333. package/dist/domains/dashboards/kinds/timeseries.cjs.js.map +1 -0
  334. package/dist/domains/dashboards/kinds/timeseries.d.ts +1 -0
  335. package/dist/domains/dashboards/kinds/timeseries.es.js +14 -0
  336. package/dist/domains/dashboards/kinds/timeseries.es.js.map +1 -0
  337. package/dist/domains/dashboards/kinds.cjs.js +20 -0
  338. package/dist/domains/dashboards/kinds.cjs.js.map +1 -0
  339. package/dist/domains/dashboards/kinds.d.ts +1 -0
  340. package/dist/domains/dashboards/kinds.es.js +15 -0
  341. package/dist/domains/dashboards/kinds.es.js.map +1 -0
  342. package/dist/domains/dashboards/lib/answers.cjs.js +42 -0
  343. package/dist/domains/dashboards/lib/answers.cjs.js.map +1 -0
  344. package/dist/domains/dashboards/lib/answers.d.ts +1 -0
  345. package/dist/domains/dashboards/lib/answers.es.js +37 -0
  346. package/dist/domains/dashboards/lib/answers.es.js.map +1 -0
  347. package/dist/domains/dashboards/lib/chrome.cjs.js +41 -0
  348. package/dist/domains/dashboards/lib/chrome.cjs.js.map +1 -0
  349. package/dist/domains/dashboards/lib/chrome.d.ts +1 -0
  350. package/dist/domains/dashboards/lib/chrome.es.js +37 -0
  351. package/dist/domains/dashboards/lib/chrome.es.js.map +1 -0
  352. package/dist/domains/dashboards/lib/definition.cjs.js +59 -0
  353. package/dist/domains/dashboards/lib/definition.cjs.js.map +1 -0
  354. package/dist/domains/dashboards/lib/definition.d.ts +1 -0
  355. package/dist/domains/dashboards/lib/definition.es.js +55 -0
  356. package/dist/domains/dashboards/lib/definition.es.js.map +1 -0
  357. package/dist/domains/dashboards/lib/filters.cjs.js +44 -0
  358. package/dist/domains/dashboards/lib/filters.cjs.js.map +1 -0
  359. package/dist/domains/dashboards/lib/filters.d.ts +1 -0
  360. package/dist/domains/dashboards/lib/filters.es.js +43 -0
  361. package/dist/domains/dashboards/lib/filters.es.js.map +1 -0
  362. package/dist/domains/dashboards/lib/format.cjs.js +32 -0
  363. package/dist/domains/dashboards/lib/format.cjs.js.map +1 -0
  364. package/dist/domains/dashboards/lib/format.d.ts +1 -0
  365. package/dist/domains/dashboards/lib/format.es.js +30 -0
  366. package/dist/domains/dashboards/lib/format.es.js.map +1 -0
  367. package/dist/domains/dashboards/lib/prepare-widget.cjs.js +77 -0
  368. package/dist/domains/dashboards/lib/prepare-widget.cjs.js.map +1 -0
  369. package/dist/domains/dashboards/lib/prepare-widget.d.ts +1 -0
  370. package/dist/domains/dashboards/lib/prepare-widget.es.js +75 -0
  371. package/dist/domains/dashboards/lib/prepare-widget.es.js.map +1 -0
  372. package/dist/domains/dashboards/lib/requests.cjs.js +279 -0
  373. package/dist/domains/dashboards/lib/requests.cjs.js.map +1 -0
  374. package/dist/domains/dashboards/lib/requests.d.ts +1 -0
  375. package/dist/domains/dashboards/lib/requests.es.js +273 -0
  376. package/dist/domains/dashboards/lib/requests.es.js.map +1 -0
  377. package/dist/domains/dashboards/lib/scores.cjs.js +58 -0
  378. package/dist/domains/dashboards/lib/scores.cjs.js.map +1 -0
  379. package/dist/domains/dashboards/lib/scores.d.ts +1 -0
  380. package/dist/domains/dashboards/lib/scores.es.js +53 -0
  381. package/dist/domains/dashboards/lib/scores.es.js.map +1 -0
  382. package/dist/domains/dashboards/lib/table.cjs.js +408 -0
  383. package/dist/domains/dashboards/lib/table.cjs.js.map +1 -0
  384. package/dist/domains/dashboards/lib/table.d.ts +1 -0
  385. package/dist/domains/dashboards/lib/table.es.js +388 -0
  386. package/dist/domains/dashboards/lib/table.es.js.map +1 -0
  387. package/dist/domains/dashboards/lib/timeseries.cjs.js +192 -0
  388. package/dist/domains/dashboards/lib/timeseries.cjs.js.map +1 -0
  389. package/dist/domains/dashboards/lib/timeseries.d.ts +1 -0
  390. package/dist/domains/dashboards/lib/timeseries.es.js +188 -0
  391. package/dist/domains/dashboards/lib/timeseries.es.js.map +1 -0
  392. package/dist/domains/dashboards/lib/values.cjs.js +155 -0
  393. package/dist/domains/dashboards/lib/values.cjs.js.map +1 -0
  394. package/dist/domains/dashboards/lib/values.d.ts +1 -0
  395. package/dist/domains/dashboards/lib/values.es.js +142 -0
  396. package/dist/domains/dashboards/lib/values.es.js.map +1 -0
  397. package/dist/domains/dashboards/metrics-dashboard.cjs.js +737 -0
  398. package/dist/domains/dashboards/metrics-dashboard.cjs.js.map +1 -0
  399. package/dist/domains/dashboards/metrics-dashboard.d.ts +1 -0
  400. package/dist/domains/dashboards/metrics-dashboard.es.js +736 -0
  401. package/dist/domains/dashboards/metrics-dashboard.es.js.map +1 -0
  402. package/dist/domains/dashboards/widget-kind.cjs.js +7 -0
  403. package/dist/domains/dashboards/widget-kind.cjs.js.map +1 -0
  404. package/dist/domains/dashboards/widget-kind.d.ts +1 -0
  405. package/dist/domains/dashboards/widget-kind.es.js +6 -0
  406. package/dist/domains/dashboards/widget-kind.es.js.map +1 -0
  407. package/dist/domains/dashboards.cjs.js +39 -0
  408. package/dist/domains/dashboards.d.ts +1 -0
  409. package/dist/domains/dashboards.es.js +18 -0
  410. package/dist/domains/logs/components/logs-list-view.cjs.js +1 -1
  411. package/dist/domains/logs/components/logs-list-view.es.js +1 -1
  412. package/dist/domains/logs/components/logs-saved-views.cjs.js +14 -0
  413. package/dist/domains/logs/components/logs-saved-views.cjs.js.map +1 -0
  414. package/dist/domains/logs/components/logs-saved-views.d.ts +1 -0
  415. package/dist/domains/logs/components/logs-saved-views.es.js +13 -0
  416. package/dist/domains/logs/components/logs-saved-views.es.js.map +1 -0
  417. package/dist/domains/logs/components.cjs.js +2 -0
  418. package/dist/domains/logs/components.es.js +2 -1
  419. package/dist/domains/logs/hooks/use-logs-url-state.cjs.js +1 -1
  420. package/dist/domains/logs/hooks/use-logs-url-state.cjs.js.map +1 -1
  421. package/dist/domains/logs/hooks/use-logs-url-state.es.js +2 -2
  422. package/dist/domains/logs/hooks/use-logs-url-state.es.js.map +1 -1
  423. package/dist/domains/logs/log-filters.cjs.js +11 -0
  424. package/dist/domains/logs/log-filters.cjs.js.map +1 -1
  425. package/dist/domains/logs/log-filters.es.js +9 -1
  426. package/dist/domains/logs/log-filters.es.js.map +1 -1
  427. package/dist/domains/logs.cjs.js +6 -1
  428. package/dist/domains/logs.es.js +3 -2
  429. package/dist/domains/metrics/components/agent-runs-card.cjs.js +38 -15
  430. package/dist/domains/metrics/components/agent-runs-card.cjs.js.map +1 -1
  431. package/dist/domains/metrics/components/agent-runs-card.es.js +38 -15
  432. package/dist/domains/metrics/components/agent-runs-card.es.js.map +1 -1
  433. package/dist/domains/metrics/components/breakdown/breakdown-change-cell.cjs.js +4 -11
  434. package/dist/domains/metrics/components/breakdown/breakdown-change-cell.cjs.js.map +1 -1
  435. package/dist/domains/metrics/components/breakdown/breakdown-change-cell.es.js +4 -11
  436. package/dist/domains/metrics/components/breakdown/breakdown-change-cell.es.js.map +1 -1
  437. package/dist/domains/metrics/components/breakdown/breakdown-cost-cell.cjs.js +2 -4
  438. package/dist/domains/metrics/components/breakdown/breakdown-cost-cell.cjs.js.map +1 -1
  439. package/dist/domains/metrics/components/breakdown/breakdown-cost-cell.es.js +2 -4
  440. package/dist/domains/metrics/components/breakdown/breakdown-cost-cell.es.js.map +1 -1
  441. package/dist/domains/metrics/components/breakdown/breakdown-entity-tab.cjs.js +1 -1
  442. package/dist/domains/metrics/components/breakdown/breakdown-entity-tab.es.js +1 -1
  443. package/dist/domains/metrics/components/breakdown/breakdown-frame.cjs.js +16 -27
  444. package/dist/domains/metrics/components/breakdown/breakdown-frame.cjs.js.map +1 -1
  445. package/dist/domains/metrics/components/breakdown/breakdown-frame.es.js +16 -27
  446. package/dist/domains/metrics/components/breakdown/breakdown-frame.es.js.map +1 -1
  447. package/dist/domains/metrics/components/breakdown/breakdown-models-tab.cjs.js +1 -1
  448. package/dist/domains/metrics/components/breakdown/breakdown-models-tab.es.js +1 -1
  449. package/dist/domains/metrics/components/breakdown/breakdown-name.cjs.js +22 -0
  450. package/dist/domains/metrics/components/breakdown/breakdown-name.cjs.js.map +1 -0
  451. package/dist/domains/metrics/components/breakdown/breakdown-name.d.ts +1 -0
  452. package/dist/domains/metrics/components/breakdown/breakdown-name.es.js +21 -0
  453. package/dist/domains/metrics/components/breakdown/breakdown-name.es.js.map +1 -0
  454. package/dist/domains/metrics/components/breakdown/breakdown-not-priced.cjs.js +13 -0
  455. package/dist/domains/metrics/components/breakdown/breakdown-not-priced.cjs.js.map +1 -0
  456. package/dist/domains/metrics/components/breakdown/breakdown-not-priced.d.ts +1 -0
  457. package/dist/domains/metrics/components/breakdown/breakdown-not-priced.es.js +12 -0
  458. package/dist/domains/metrics/components/breakdown/breakdown-not-priced.es.js.map +1 -0
  459. package/dist/domains/metrics/components/breakdown/breakdown-projects-first.cjs.js +1 -1
  460. package/dist/domains/metrics/components/breakdown/breakdown-projects-first.es.js +1 -1
  461. package/dist/domains/metrics/components/breakdown/breakdown-row-mark.cjs.js +26 -13
  462. package/dist/domains/metrics/components/breakdown/breakdown-row-mark.cjs.js.map +1 -1
  463. package/dist/domains/metrics/components/breakdown/breakdown-row-mark.es.js +25 -14
  464. package/dist/domains/metrics/components/breakdown/breakdown-row-mark.es.js.map +1 -1
  465. package/dist/domains/metrics/components/breakdown/breakdown-row-name.cjs.js +10 -13
  466. package/dist/domains/metrics/components/breakdown/breakdown-row-name.cjs.js.map +1 -1
  467. package/dist/domains/metrics/components/breakdown/breakdown-row-name.es.js +11 -14
  468. package/dist/domains/metrics/components/breakdown/breakdown-row-name.es.js.map +1 -1
  469. package/dist/domains/metrics/components/breakdown/breakdown-tab-body.cjs.js +1 -1
  470. package/dist/domains/metrics/components/breakdown/breakdown-tab-body.es.js +1 -1
  471. package/dist/domains/metrics/components/breakdown/breakdown-table.cjs.js +5 -5
  472. package/dist/domains/metrics/components/breakdown/breakdown-table.es.js +5 -5
  473. package/dist/domains/metrics/components/breakdown/breakdown-trace-tab.cjs.js +1 -1
  474. package/dist/domains/metrics/components/breakdown/breakdown-trace-tab.es.js +1 -1
  475. package/dist/domains/metrics/components/breakdown/breakdown-trend-text.cjs.js +25 -0
  476. package/dist/domains/metrics/components/breakdown/breakdown-trend-text.cjs.js.map +1 -0
  477. package/dist/domains/metrics/components/breakdown/breakdown-trend-text.d.ts +1 -0
  478. package/dist/domains/metrics/components/breakdown/breakdown-trend-text.es.js +24 -0
  479. package/dist/domains/metrics/components/breakdown/breakdown-trend-text.es.js.map +1 -0
  480. package/dist/domains/metrics/components/breakdown-card.cjs.js +3 -3
  481. package/dist/domains/metrics/components/breakdown-card.es.js +3 -3
  482. package/dist/domains/metrics/components/card-action-buttons.cjs.js +43 -3
  483. package/dist/domains/metrics/components/card-action-buttons.cjs.js.map +1 -1
  484. package/dist/domains/metrics/components/card-action-buttons.es.js +42 -5
  485. package/dist/domains/metrics/components/card-action-buttons.es.js.map +1 -1
  486. package/dist/domains/metrics/components/chart-area.cjs.js +1 -1
  487. package/dist/domains/metrics/components/chart-area.es.js +1 -1
  488. package/dist/domains/metrics/components/chart-card-error.cjs.js +1 -1
  489. package/dist/domains/metrics/components/chart-card-error.es.js +1 -1
  490. package/dist/domains/metrics/components/chart-card.cjs.js +39 -38
  491. package/dist/domains/metrics/components/chart-card.cjs.js.map +1 -1
  492. package/dist/domains/metrics/components/chart-card.es.js +39 -38
  493. package/dist/domains/metrics/components/chart-card.es.js.map +1 -1
  494. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  495. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  496. package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.cjs.js +15 -16
  497. package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.cjs.js.map +1 -1
  498. package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.es.js +16 -16
  499. package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.es.js.map +1 -1
  500. package/dist/domains/metrics/components/distinct-ids-card.cjs.js +0 -1
  501. package/dist/domains/metrics/components/distinct-ids-card.cjs.js.map +1 -1
  502. package/dist/domains/metrics/components/distinct-ids-card.es.js +1 -2
  503. package/dist/domains/metrics/components/distinct-ids-card.es.js.map +1 -1
  504. package/dist/domains/metrics/components/failure-rate-card.cjs.js +11 -14
  505. package/dist/domains/metrics/components/failure-rate-card.cjs.js.map +1 -1
  506. package/dist/domains/metrics/components/failure-rate-card.es.js +11 -14
  507. package/dist/domains/metrics/components/failure-rate-card.es.js.map +1 -1
  508. package/dist/domains/metrics/components/kpi-card.cjs.js +8 -5
  509. package/dist/domains/metrics/components/kpi-card.cjs.js.map +1 -1
  510. package/dist/domains/metrics/components/kpi-card.es.js +8 -5
  511. package/dist/domains/metrics/components/kpi-card.es.js.map +1 -1
  512. package/dist/domains/metrics/components/latency-card.cjs.js +33 -30
  513. package/dist/domains/metrics/components/latency-card.cjs.js.map +1 -1
  514. package/dist/domains/metrics/components/latency-card.es.js +34 -31
  515. package/dist/domains/metrics/components/latency-card.es.js.map +1 -1
  516. package/dist/domains/metrics/components/metrics-grid/metrics-grid.cjs.js +5 -2
  517. package/dist/domains/metrics/components/metrics-grid/metrics-grid.cjs.js.map +1 -1
  518. package/dist/domains/metrics/components/metrics-grid/metrics-grid.es.js +5 -2
  519. package/dist/domains/metrics/components/metrics-grid/metrics-grid.es.js.map +1 -1
  520. package/dist/domains/metrics/components/scores-card.cjs.js +7 -17
  521. package/dist/domains/metrics/components/scores-card.cjs.js.map +1 -1
  522. package/dist/domains/metrics/components/scores-card.es.js +7 -17
  523. package/dist/domains/metrics/components/scores-card.es.js.map +1 -1
  524. package/dist/domains/metrics/components/token-usage-card.cjs.js +29 -26
  525. package/dist/domains/metrics/components/token-usage-card.cjs.js.map +1 -1
  526. package/dist/domains/metrics/components/token-usage-card.es.js +30 -27
  527. package/dist/domains/metrics/components/token-usage-card.es.js.map +1 -1
  528. package/dist/domains/metrics/components/trace-aggregate-card.cjs.js +3 -2
  529. package/dist/domains/metrics/components/trace-aggregate-card.cjs.js.map +1 -1
  530. package/dist/domains/metrics/components/trace-aggregate-card.es.js +3 -2
  531. package/dist/domains/metrics/components/trace-aggregate-card.es.js.map +1 -1
  532. package/dist/domains/metrics/components/trace-volume-card.cjs.js +31 -35
  533. package/dist/domains/metrics/components/trace-volume-card.cjs.js.map +1 -1
  534. package/dist/domains/metrics/components/trace-volume-card.es.js +31 -35
  535. package/dist/domains/metrics/components/trace-volume-card.es.js.map +1 -1
  536. package/dist/domains/metrics/components/usage-card.cjs.js +29 -28
  537. package/dist/domains/metrics/components/usage-card.cjs.js.map +1 -1
  538. package/dist/domains/metrics/components/usage-card.es.js +30 -29
  539. package/dist/domains/metrics/components/usage-card.es.js.map +1 -1
  540. package/dist/domains/metrics/components.cjs.js +6 -5
  541. package/dist/domains/metrics/components.es.js +4 -5
  542. package/dist/domains/metrics/drilldown.cjs.js +1 -1
  543. package/dist/domains/metrics/drilldown.es.js +1 -1
  544. package/dist/domains/metrics/hooks/use-metrics-activity.cjs.js +1 -1
  545. package/dist/domains/metrics/hooks/use-metrics-activity.es.js +1 -1
  546. package/dist/domains/metrics/hooks/use-metrics-latency.cjs.js +1 -1
  547. package/dist/domains/metrics/hooks/use-metrics-latency.es.js +1 -1
  548. package/dist/domains/metrics/hooks/use-metrics-scores.cjs.js +1 -1
  549. package/dist/domains/metrics/hooks/use-metrics-scores.es.js +1 -1
  550. package/dist/domains/metrics/hooks/use-metrics-span-aggregate.cjs.js +1 -1
  551. package/dist/domains/metrics/hooks/use-metrics-span-aggregate.es.js +1 -1
  552. package/dist/domains/metrics/hooks.cjs.js +1 -1
  553. package/dist/domains/metrics/hooks.es.js +1 -1
  554. package/dist/domains/metrics/lib/breakdown-table.cjs.js +2 -2
  555. package/dist/domains/metrics/lib/breakdown-table.es.js +2 -2
  556. package/dist/domains/metrics/lib.cjs.js +2 -2
  557. package/dist/domains/metrics/lib.es.js +2 -2
  558. package/dist/domains/metrics/metrics-filters.cjs.js +1 -1
  559. package/dist/domains/metrics/metrics-filters.es.js +1 -1
  560. package/dist/domains/metrics.cjs.js +14 -13
  561. package/dist/domains/metrics.es.js +12 -13
  562. package/dist/domains/observability/components/observability-header-slot.cjs.js +13 -0
  563. package/dist/domains/observability/components/observability-header-slot.cjs.js.map +1 -0
  564. package/dist/domains/observability/components/observability-header-slot.d.ts +1 -0
  565. package/dist/domains/observability/components/observability-header-slot.es.js +11 -0
  566. package/dist/domains/observability/components/observability-header-slot.es.js.map +1 -0
  567. package/dist/domains/observability/components/observability-histogram.cjs.js +6 -2
  568. package/dist/domains/observability/components/observability-histogram.cjs.js.map +1 -1
  569. package/dist/domains/observability/components/observability-histogram.es.js +6 -2
  570. package/dist/domains/observability/components/observability-histogram.es.js.map +1 -1
  571. package/dist/domains/observability/components/observability-page-layout.cjs.js +19 -5
  572. package/dist/domains/observability/components/observability-page-layout.cjs.js.map +1 -1
  573. package/dist/domains/observability/components/observability-page-layout.es.js +20 -6
  574. package/dist/domains/observability/components/observability-page-layout.es.js.map +1 -1
  575. package/dist/domains/observability/hooks/use-observability-list-filters.cjs.js +75 -18
  576. package/dist/domains/observability/hooks/use-observability-list-filters.cjs.js.map +1 -1
  577. package/dist/domains/observability/hooks/use-observability-list-filters.es.js +76 -19
  578. package/dist/domains/observability/hooks/use-observability-list-filters.es.js.map +1 -1
  579. package/dist/domains/observability/lib/zoom-memory.cjs.js +24 -0
  580. package/dist/domains/observability/lib/zoom-memory.cjs.js.map +1 -0
  581. package/dist/domains/observability/lib/zoom-memory.d.ts +1 -0
  582. package/dist/domains/observability/lib/zoom-memory.es.js +22 -0
  583. package/dist/domains/observability/lib/zoom-memory.es.js.map +1 -0
  584. package/dist/domains/observability/observability-list-url-state.cjs.js +122 -0
  585. package/dist/domains/observability/observability-list-url-state.cjs.js.map +1 -0
  586. package/dist/domains/observability/observability-list-url-state.d.ts +1 -0
  587. package/dist/domains/observability/observability-list-url-state.es.js +111 -0
  588. package/dist/domains/observability/observability-list-url-state.es.js.map +1 -0
  589. package/dist/domains/observability/saved-view-state.cjs.js +292 -0
  590. package/dist/domains/observability/saved-view-state.cjs.js.map +1 -0
  591. package/dist/domains/observability/saved-view-state.d.ts +1 -0
  592. package/dist/domains/observability/saved-view-state.es.js +286 -0
  593. package/dist/domains/observability/saved-view-state.es.js.map +1 -0
  594. package/dist/domains/observability/saved-views/observability-saved-views.cjs.js +3 -0
  595. package/dist/domains/observability/saved-views/observability-saved-views.d.ts +1 -0
  596. package/dist/domains/observability/saved-views/observability-saved-views.es.js +1 -0
  597. package/dist/domains/observability/saved-views/saved-views-provider.cjs.js +18 -0
  598. package/dist/domains/observability/saved-views/saved-views-provider.cjs.js.map +1 -0
  599. package/dist/domains/observability/saved-views/saved-views-provider.d.ts +1 -0
  600. package/dist/domains/observability/saved-views/saved-views-provider.es.js +17 -0
  601. package/dist/domains/observability/saved-views/saved-views-provider.es.js.map +1 -0
  602. package/dist/domains/observability/saved-views/saved-views-source.cjs.js +23 -0
  603. package/dist/domains/observability/saved-views/saved-views-source.cjs.js.map +1 -0
  604. package/dist/domains/observability/saved-views/saved-views-source.d.ts +1 -0
  605. package/dist/domains/observability/saved-views/saved-views-source.es.js +19 -0
  606. package/dist/domains/observability/saved-views/saved-views-source.es.js.map +1 -0
  607. package/dist/domains/observability/saved-views/use-hosted-saved-views.cjs.js +235 -0
  608. package/dist/domains/observability/saved-views/use-hosted-saved-views.cjs.js.map +1 -0
  609. package/dist/domains/observability/saved-views/use-hosted-saved-views.d.ts +1 -0
  610. package/dist/domains/observability/saved-views/use-hosted-saved-views.es.js +232 -0
  611. package/dist/domains/observability/saved-views/use-hosted-saved-views.es.js.map +1 -0
  612. package/dist/domains/observability/saved-views.cjs.js +7 -0
  613. package/dist/domains/observability/saved-views.d.ts +1 -0
  614. package/dist/domains/observability/saved-views.es.js +4 -0
  615. package/dist/domains/observability.cjs.js +6 -0
  616. package/dist/domains/observability.es.js +4 -1
  617. package/dist/domains/scores/components/span-scoring.cjs.js +1 -1
  618. package/dist/domains/scores/components/span-scoring.es.js +1 -1
  619. package/dist/domains/scores/components/trace-scores-list.cjs.js +1 -1
  620. package/dist/domains/scores/components/trace-scores-list.es.js +1 -1
  621. package/dist/domains/scores/components/trace-scores-tab.cjs.js +1 -1
  622. package/dist/domains/scores/components/trace-scores-tab.es.js +1 -1
  623. package/dist/domains/skills/skill-simple-form.cjs.js +1 -1
  624. package/dist/domains/skills/skill-simple-form.es.js +1 -1
  625. package/dist/domains/spans/components/spans-explorer-body.cjs.js +64 -18
  626. package/dist/domains/spans/components/spans-explorer-body.cjs.js.map +1 -1
  627. package/dist/domains/spans/components/spans-explorer-body.es.js +64 -18
  628. package/dist/domains/spans/components/spans-explorer-body.es.js.map +1 -1
  629. package/dist/domains/spans/components/spans-filter-bar.cjs.js +6 -5
  630. package/dist/domains/spans/components/spans-filter-bar.cjs.js.map +1 -1
  631. package/dist/domains/spans/components/spans-filter-bar.es.js +6 -5
  632. package/dist/domains/spans/components/spans-filter-bar.es.js.map +1 -1
  633. package/dist/domains/spans/hooks/use-spans-filter-bar.cjs.js +15 -3
  634. package/dist/domains/spans/hooks/use-spans-filter-bar.cjs.js.map +1 -1
  635. package/dist/domains/spans/hooks/use-spans-filter-bar.es.js +15 -3
  636. package/dist/domains/spans/hooks/use-spans-filter-bar.es.js.map +1 -1
  637. package/dist/domains/spans/span-filters.cjs.js +53 -14
  638. package/dist/domains/spans/span-filters.cjs.js.map +1 -1
  639. package/dist/domains/spans/span-filters.es.js +52 -15
  640. package/dist/domains/spans/span-filters.es.js.map +1 -1
  641. package/dist/domains/spans/span-list-row.cjs.js +6 -1
  642. package/dist/domains/spans/span-list-row.cjs.js.map +1 -1
  643. package/dist/domains/spans/span-list-row.es.js +6 -1
  644. package/dist/domains/spans/span-list-row.es.js.map +1 -1
  645. package/dist/domains/threads/components/threads-explorer-body.cjs.js +45 -12
  646. package/dist/domains/threads/components/threads-explorer-body.cjs.js.map +1 -1
  647. package/dist/domains/threads/components/threads-explorer-body.es.js +46 -12
  648. package/dist/domains/threads/components/threads-explorer-body.es.js.map +1 -1
  649. package/dist/domains/threads/components/threads-filter-bar.cjs.js +3 -3
  650. package/dist/domains/threads/components/threads-filter-bar.es.js +3 -3
  651. package/dist/domains/threads/hooks/use-threads-filter-bar.cjs.js +14 -3
  652. package/dist/domains/threads/hooks/use-threads-filter-bar.cjs.js.map +1 -1
  653. package/dist/domains/threads/hooks/use-threads-filter-bar.es.js +14 -3
  654. package/dist/domains/threads/hooks/use-threads-filter-bar.es.js.map +1 -1
  655. package/dist/domains/threads/thread-filters.cjs.js +26 -13
  656. package/dist/domains/threads/thread-filters.cjs.js.map +1 -1
  657. package/dist/domains/threads/thread-filters.es.js +26 -13
  658. package/dist/domains/threads/thread-filters.es.js.map +1 -1
  659. package/dist/domains/threads/thread-list-row.cjs.js +2 -0
  660. package/dist/domains/threads/thread-list-row.cjs.js.map +1 -1
  661. package/dist/domains/threads/thread-list-row.es.js +2 -0
  662. package/dist/domains/threads/thread-list-row.es.js.map +1 -1
  663. package/dist/domains/traces/components/columns-menu/columns-menu.cjs.js +24 -19
  664. package/dist/domains/traces/components/columns-menu/columns-menu.cjs.js.map +1 -1
  665. package/dist/domains/traces/components/columns-menu/columns-menu.es.js +25 -20
  666. package/dist/domains/traces/components/columns-menu/columns-menu.es.js.map +1 -1
  667. package/dist/domains/traces/components/feedback-thread.cjs.js +1 -1
  668. package/dist/domains/traces/components/feedback-thread.es.js +1 -1
  669. package/dist/domains/traces/components/span-data-panel-view.cjs.js +12 -2
  670. package/dist/domains/traces/components/span-data-panel-view.cjs.js.map +1 -1
  671. package/dist/domains/traces/components/span-data-panel-view.es.js +12 -2
  672. package/dist/domains/traces/components/span-data-panel-view.es.js.map +1 -1
  673. package/dist/domains/traces/components/span-outcome.utils.cjs.js +1 -1
  674. package/dist/domains/traces/components/span-outcome.utils.es.js +1 -1
  675. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +1 -1
  676. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +1 -1
  677. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
  678. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
  679. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +2 -2
  680. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +2 -2
  681. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +3 -3
  682. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +3 -3
  683. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +1 -1
  684. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +1 -1
  685. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
  686. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
  687. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +1 -1
  688. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +1 -1
  689. package/dist/domains/traces/components/span-payload/span-processor-mutations.cjs.js +2 -2
  690. package/dist/domains/traces/components/span-payload/span-processor-mutations.es.js +2 -2
  691. package/dist/domains/traces/components/span-payload/span-tools-section.cjs.js +1 -1
  692. package/dist/domains/traces/components/span-payload/span-tools-section.es.js +1 -1
  693. package/dist/domains/traces/components/span-prompt-changes.cjs.js +1 -1
  694. package/dist/domains/traces/components/span-prompt-changes.es.js +1 -1
  695. package/dist/domains/traces/components/trace-columns-menu.cjs.js +2 -1
  696. package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
  697. package/dist/domains/traces/components/trace-columns-menu.es.js +2 -1
  698. package/dist/domains/traces/components/trace-columns-menu.es.js.map +1 -1
  699. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +9 -2
  700. package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
  701. package/dist/domains/traces/components/trace-data-panel-view.es.js +9 -2
  702. package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
  703. package/dist/domains/traces/components/trace-span-panel.cjs.js +2 -1
  704. package/dist/domains/traces/components/trace-span-panel.cjs.js.map +1 -1
  705. package/dist/domains/traces/components/trace-span-panel.es.js +2 -1
  706. package/dist/domains/traces/components/trace-span-panel.es.js.map +1 -1
  707. package/dist/domains/traces/components/trace-span-timeline-markers.cjs.js +120 -0
  708. package/dist/domains/traces/components/trace-span-timeline-markers.cjs.js.map +1 -0
  709. package/dist/domains/traces/components/trace-span-timeline-markers.d.ts +1 -0
  710. package/dist/domains/traces/components/trace-span-timeline-markers.es.js +119 -0
  711. package/dist/domains/traces/components/trace-span-timeline-markers.es.js.map +1 -0
  712. package/dist/domains/traces/components/trace-span-timeline.cjs.js +8 -5
  713. package/dist/domains/traces/components/trace-span-timeline.cjs.js.map +1 -1
  714. package/dist/domains/traces/components/trace-span-timeline.es.js +8 -5
  715. package/dist/domains/traces/components/trace-span-timeline.es.js.map +1 -1
  716. package/dist/domains/traces/components/trace-time-range-chip.cjs.js +5 -5
  717. package/dist/domains/traces/components/trace-time-range-chip.cjs.js.map +1 -1
  718. package/dist/domains/traces/components/trace-time-range-chip.es.js +5 -5
  719. package/dist/domains/traces/components/trace-time-range-chip.es.js.map +1 -1
  720. package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.cjs.js +15 -11
  721. package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.cjs.js.map +1 -1
  722. package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.es.js +15 -12
  723. package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.es.js.map +1 -1
  724. package/dist/domains/traces/components/traces-explorer/traces-explorer-context.cjs.js +4 -3
  725. package/dist/domains/traces/components/traces-explorer/traces-explorer-context.cjs.js.map +1 -1
  726. package/dist/domains/traces/components/traces-explorer/traces-explorer-context.es.js +4 -3
  727. package/dist/domains/traces/components/traces-explorer/traces-explorer-context.es.js.map +1 -1
  728. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.cjs.js +5 -4
  729. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.cjs.js.map +1 -1
  730. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.es.js +5 -4
  731. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.es.js.map +1 -1
  732. package/dist/domains/traces/components/traces-explorer/traces-explorer-histogram.cjs.js +13 -5
  733. package/dist/domains/traces/components/traces-explorer/traces-explorer-histogram.cjs.js.map +1 -1
  734. package/dist/domains/traces/components/traces-explorer/traces-explorer-histogram.es.js +13 -5
  735. package/dist/domains/traces/components/traces-explorer/traces-explorer-histogram.es.js.map +1 -1
  736. package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.cjs.js +5 -2
  737. package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.cjs.js.map +1 -1
  738. package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.es.js +5 -2
  739. package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.es.js.map +1 -1
  740. package/dist/domains/traces/components/traces-explorer/traces-explorer-list.cjs.js +7 -11
  741. package/dist/domains/traces/components/traces-explorer/traces-explorer-list.cjs.js.map +1 -1
  742. package/dist/domains/traces/components/traces-explorer/traces-explorer-list.es.js +7 -11
  743. package/dist/domains/traces/components/traces-explorer/traces-explorer-list.es.js.map +1 -1
  744. package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.cjs.js +3 -1
  745. package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.cjs.js.map +1 -1
  746. package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.es.js +3 -1
  747. package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.es.js.map +1 -1
  748. package/dist/domains/traces/components/traces-explorer/traces-explorer-root.cjs.js +51 -5
  749. package/dist/domains/traces/components/traces-explorer/traces-explorer-root.cjs.js.map +1 -1
  750. package/dist/domains/traces/components/traces-explorer/traces-explorer-root.es.js +51 -5
  751. package/dist/domains/traces/components/traces-explorer/traces-explorer-root.es.js.map +1 -1
  752. package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.cjs.js +20 -0
  753. package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.cjs.js.map +1 -0
  754. package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.d.ts +1 -0
  755. package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.es.js +19 -0
  756. package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.es.js.map +1 -0
  757. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.cjs.js +10 -4
  758. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.cjs.js.map +1 -1
  759. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.es.js +10 -4
  760. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.es.js.map +1 -1
  761. package/dist/domains/traces/components/traces-explorer.cjs.js +4 -1
  762. package/dist/domains/traces/components/traces-explorer.cjs.js.map +1 -1
  763. package/dist/domains/traces/components/traces-explorer.es.js +5 -3
  764. package/dist/domains/traces/components/traces-explorer.es.js.map +1 -1
  765. package/dist/domains/traces/components/traces-list-view-adapter.cjs.js +5 -1
  766. package/dist/domains/traces/components/traces-list-view-adapter.cjs.js.map +1 -1
  767. package/dist/domains/traces/components/traces-list-view-adapter.es.js +5 -1
  768. package/dist/domains/traces/components/traces-list-view-adapter.es.js.map +1 -1
  769. package/dist/domains/traces/components/traces-list-view.cjs.js +53 -18
  770. package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
  771. package/dist/domains/traces/components/traces-list-view.es.js +53 -18
  772. package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
  773. package/dist/domains/traces/components/traces-page-skeleton.cjs.js +1 -1
  774. package/dist/domains/traces/components/traces-page-skeleton.es.js +1 -1
  775. package/dist/domains/traces/trace-filters.cjs.js +5 -1
  776. package/dist/domains/traces/trace-filters.es.js +1 -1
  777. package/dist/domains/traces/trace-list-columns.cjs.js +48 -9
  778. package/dist/domains/traces/trace-list-columns.cjs.js.map +1 -1
  779. package/dist/domains/traces/trace-list-columns.es.js +48 -9
  780. package/dist/domains/traces/trace-list-columns.es.js.map +1 -1
  781. package/dist/domains/traces/trace-query-filters.cjs.js +1 -1
  782. package/dist/domains/traces/trace-query-filters.es.js +1 -1
  783. package/dist/domains/traces/utils/timeline-markers.cjs.js +34 -0
  784. package/dist/domains/traces/utils/timeline-markers.cjs.js.map +1 -0
  785. package/dist/domains/traces/utils/timeline-markers.d.ts +1 -0
  786. package/dist/domains/traces/utils/timeline-markers.es.js +33 -0
  787. package/dist/domains/traces/utils/timeline-markers.es.js.map +1 -0
  788. package/dist/domains/traces.cjs.js +5 -1
  789. package/dist/domains/traces.es.js +2 -2
  790. package/dist/domains/workflows/components/workflow-combobox.cjs.js +1 -1
  791. package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
  792. package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +1 -1
  793. package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +1 -1
  794. package/dist/domains/workflows/workflow/workflow-graph.cjs.js +1 -1
  795. package/dist/domains/workflows/workflow/workflow-graph.es.js +1 -1
  796. package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +1 -1
  797. package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +1 -1
  798. package/dist/domains/workspace/components/workspace-markdown-preview.cjs.js +1 -1
  799. package/dist/domains/workspace/components/workspace-markdown-preview.es.js +1 -1
  800. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +1 -1
  801. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +1 -1
  802. package/dist/{filter-bar-chip-B3pgpngW.js → filter-bar-chip-7O02P9Vk.js} +27 -9
  803. package/dist/filter-bar-chip-7O02P9Vk.js.map +1 -0
  804. package/dist/{filter-bar-chip-CyTAmjt6.cjs → filter-bar-chip-BUyMf8XQ.cjs} +40 -22
  805. package/dist/filter-bar-chip-BUyMf8XQ.cjs.map +1 -0
  806. package/dist/layout/tabbed-container.cjs.js +1 -1
  807. package/dist/layout/tabbed-container.es.js +1 -1
  808. package/dist/lib/form/json-schema-to-zod-runtime.cjs.js +4 -4
  809. package/dist/lib/form/json-schema-to-zod-runtime.cjs.js.map +1 -1
  810. package/dist/lib/form/json-schema-to-zod-runtime.es.js +4 -4
  811. package/dist/lib/form/json-schema-to-zod-runtime.es.js.map +1 -1
  812. package/dist/lib/form/zod-provider.cjs.js +5 -1
  813. package/dist/lib/form/zod-provider.cjs.js.map +1 -1
  814. package/dist/lib/form/zod-provider.es.js +5 -1
  815. package/dist/lib/form/zod-provider.es.js.map +1 -1
  816. package/dist/observability-saved-views-Bo5kLN20.js +297 -0
  817. package/dist/observability-saved-views-Bo5kLN20.js.map +1 -0
  818. package/dist/observability-saved-views-CwCii7hh.cjs +302 -0
  819. package/dist/observability-saved-views-CwCii7hh.cjs.map +1 -0
  820. package/dist/primitives/chart-axes.cjs.js +44 -0
  821. package/dist/primitives/chart-axes.cjs.js.map +1 -1
  822. package/dist/primitives/chart-axes.es.js +43 -1
  823. package/dist/primitives/chart-axes.es.js.map +1 -1
  824. package/dist/primitives/chart-frame.cjs.js +5 -3
  825. package/dist/primitives/chart-frame.cjs.js.map +1 -1
  826. package/dist/primitives/chart-frame.es.js +6 -4
  827. package/dist/primitives/chart-frame.es.js.map +1 -1
  828. package/dist/primitives/chart-time-tick.cjs.js +15 -11
  829. package/dist/primitives/chart-time-tick.cjs.js.map +1 -1
  830. package/dist/primitives/chart-time-tick.es.js +16 -12
  831. package/dist/primitives/chart-time-tick.es.js.map +1 -1
  832. package/dist/saved-view-schema-DRJYELfK.cjs +71 -0
  833. package/dist/saved-view-schema-DRJYELfK.cjs.map +1 -0
  834. package/dist/saved-view-schema-eJXlRRel.js +54 -0
  835. package/dist/saved-view-schema-eJXlRRel.js.map +1 -0
  836. package/dist/{span-payload-primitives-D3OO0u6u.cjs → span-payload-primitives-B10Xxmx7.cjs} +4 -4
  837. package/dist/{span-payload-primitives-D3OO0u6u.cjs.map → span-payload-primitives-B10Xxmx7.cjs.map} +1 -1
  838. package/dist/{span-payload-primitives-DTV7eUY-.js → span-payload-primitives-Dyhbqaa7.js} +4 -4
  839. package/dist/{span-payload-primitives-DTV7eUY-.js.map → span-payload-primitives-Dyhbqaa7.js.map} +1 -1
  840. package/dist/src/domains/chat/activity/activity-stretch-line.d.ts +4 -2
  841. package/dist/src/domains/chat/activity/components/activity-fold.d.ts +5 -4
  842. package/dist/src/domains/chat/activity/components/use-fading-edge.d.ts +6 -0
  843. package/dist/src/domains/chat/activity/components/use-rolling-words.d.ts +7 -0
  844. package/dist/src/domains/chat/activity/index.d.ts +2 -1
  845. package/dist/src/domains/chat/activity/model/activity-members.d.ts +1 -0
  846. package/dist/src/domains/chat/activity/model/activity-words.d.ts +3 -0
  847. package/dist/src/domains/chat/messages/renderers/tool-part.d.ts +4 -0
  848. package/dist/src/domains/chat/messages/skill-message.d.ts +3 -1
  849. package/dist/src/domains/chat/tools/badges/mcp-task-chip.d.ts +14 -0
  850. package/dist/src/domains/chat/tools/badges/tool-badge.d.ts +5 -1
  851. package/dist/src/domains/chat/tools/badges/use-mcp-task-progress.d.ts +27 -0
  852. package/dist/src/domains/chat/tools/tool-card.d.ts +5 -1
  853. package/dist/src/domains/dashboards/components/dashboard-grid.d.ts +18 -0
  854. package/dist/src/domains/dashboards/components/dashboard-renderer.d.ts +19 -0
  855. package/dist/src/domains/dashboards/components/view-gate.d.ts +30 -0
  856. package/dist/src/domains/dashboards/components/widget-chrome.d.ts +7 -0
  857. package/dist/src/domains/dashboards/components/widget-controls.d.ts +8 -0
  858. package/dist/src/domains/dashboards/components/widget-error.d.ts +6 -0
  859. package/dist/src/domains/dashboards/hooks/use-dashboard-requests.d.ts +10 -0
  860. package/dist/src/domains/dashboards/hooks/use-scorers.d.ts +66 -0
  861. package/dist/src/domains/dashboards/hooks/use-widget-views.d.ts +18 -0
  862. package/dist/src/domains/dashboards/index.d.ts +19 -0
  863. package/dist/src/domains/dashboards/kinds/index.d.ts +7 -0
  864. package/dist/src/domains/dashboards/kinds/kpis/index.d.ts +13 -0
  865. package/dist/src/domains/dashboards/kinds/kpis/kpis-widget.d.ts +3 -0
  866. package/dist/src/domains/dashboards/kinds/kpis/options.d.ts +35 -0
  867. package/dist/src/domains/dashboards/kinds/scores/index.d.ts +8 -0
  868. package/dist/src/domains/dashboards/kinds/scores/options.d.ts +13 -0
  869. package/dist/src/domains/dashboards/kinds/scores/scores-widget.d.ts +3 -0
  870. package/dist/src/domains/dashboards/kinds/table/index.d.ts +23 -0
  871. package/dist/src/domains/dashboards/kinds/table/table-cells.d.ts +26 -0
  872. package/dist/src/domains/dashboards/kinds/table/table-columns.d.ts +7 -0
  873. package/dist/src/domains/dashboards/kinds/table/table-frame.d.ts +13 -0
  874. package/dist/src/domains/dashboards/kinds/table/table-tabs.d.ts +10 -0
  875. package/dist/src/domains/dashboards/kinds/table/table-view.d.ts +5 -0
  876. package/dist/src/domains/dashboards/kinds/table/table-widget.d.ts +7 -0
  877. package/dist/src/domains/dashboards/kinds/timeseries/index.d.ts +30 -0
  878. package/dist/src/domains/dashboards/kinds/timeseries/timeseries-widget.d.ts +5 -0
  879. package/dist/src/domains/dashboards/lib/answers.d.ts +43 -0
  880. package/dist/src/domains/dashboards/lib/chrome.d.ts +14 -0
  881. package/dist/src/domains/dashboards/lib/definition.d.ts +27 -0
  882. package/dist/src/domains/dashboards/lib/filters.d.ts +6 -0
  883. package/dist/src/domains/dashboards/lib/format.d.ts +7 -0
  884. package/dist/src/domains/dashboards/lib/prepare-widget.d.ts +26 -0
  885. package/dist/src/domains/dashboards/lib/requests.d.ts +95 -0
  886. package/dist/src/domains/dashboards/lib/scores.d.ts +35 -0
  887. package/dist/src/domains/dashboards/lib/table.d.ts +188 -0
  888. package/dist/src/domains/dashboards/lib/timeseries.d.ts +119 -0
  889. package/dist/src/domains/dashboards/lib/values.d.ts +86 -0
  890. package/dist/src/domains/dashboards/metrics-dashboard.d.ts +7 -0
  891. package/dist/src/domains/dashboards/widget-kind.d.ts +31 -0
  892. package/dist/src/domains/logs/components/index.d.ts +1 -0
  893. package/dist/src/domains/logs/components/logs-saved-views.d.ts +4 -0
  894. package/dist/src/domains/logs/log-filters.d.ts +8 -0
  895. package/dist/src/domains/metrics/components/agent-runs-card.d.ts +10 -3
  896. package/dist/src/domains/metrics/components/breakdown/breakdown-name.d.ts +13 -0
  897. package/dist/src/domains/metrics/components/breakdown/breakdown-not-priced.d.ts +2 -0
  898. package/dist/src/domains/metrics/components/breakdown/breakdown-row-mark.d.ts +17 -4
  899. package/dist/src/domains/metrics/components/breakdown/breakdown-trend-text.d.ts +9 -0
  900. package/dist/src/domains/metrics/components/card-action-buttons.d.ts +9 -0
  901. package/dist/src/domains/metrics/components/chart-card.d.ts +33 -21
  902. package/dist/src/domains/metrics/components/distinct-ids/distinct-ids-chart.d.ts +0 -1
  903. package/dist/src/domains/metrics/components/failure-rate-card.d.ts +5 -2
  904. package/dist/src/domains/metrics/components/index.d.ts +1 -2
  905. package/dist/src/domains/metrics/components/metrics-grid/metrics-grid.d.ts +4 -1
  906. package/dist/src/domains/metrics/components/trace-aggregate-card.d.ts +1 -1
  907. package/dist/src/domains/observability/components/observability-header-slot.d.ts +6 -0
  908. package/dist/src/domains/observability/components/observability-histogram.d.ts +1 -1
  909. package/dist/src/domains/observability/hooks/use-observability-list-filters.d.ts +21 -5
  910. package/dist/src/domains/observability/index.d.ts +2 -0
  911. package/dist/src/domains/observability/lib/zoom-memory.d.ts +19 -0
  912. package/dist/src/domains/observability/observability-list-url-state.d.ts +39 -0
  913. package/dist/src/domains/observability/saved-view-state.d.ts +46 -0
  914. package/dist/src/domains/observability/saved-views/index.d.ts +7 -0
  915. package/dist/src/domains/observability/saved-views/observability-saved-views.d.ts +22 -0
  916. package/dist/src/domains/observability/saved-views/saved-views-provider.d.ts +15 -0
  917. package/dist/src/domains/observability/saved-views/saved-views-source.d.ts +41 -0
  918. package/dist/src/domains/observability/saved-views/use-hosted-saved-views.d.ts +34 -0
  919. package/dist/src/domains/spans/components/spans-explorer-body.d.ts +4 -1
  920. package/dist/src/domains/spans/components/spans-filter-bar.d.ts +3 -1
  921. package/dist/src/domains/spans/hooks/use-spans-filter-bar.d.ts +1 -1
  922. package/dist/src/domains/spans/hooks/use-spans-list-source.d.ts +3 -0
  923. package/dist/src/domains/spans/span-filters.d.ts +16 -5
  924. package/dist/src/domains/threads/components/threads-explorer-body.d.ts +4 -1
  925. package/dist/src/domains/threads/thread-filters.d.ts +6 -5
  926. package/dist/src/domains/traces/components/columns-menu/columns-menu.d.ts +3 -3
  927. package/dist/src/domains/traces/components/trace-data-panel-view.d.ts +7 -1
  928. package/dist/src/domains/traces/components/trace-span-panel.d.ts +2 -1
  929. package/dist/src/domains/traces/components/trace-span-timeline-markers.d.ts +5 -0
  930. package/dist/src/domains/traces/components/trace-span-timeline.d.ts +6 -1
  931. package/dist/src/domains/traces/components/trace-time-range-chip.d.ts +3 -1
  932. package/dist/src/domains/traces/components/traces-explorer/index.d.ts +4 -1
  933. package/dist/src/domains/traces/components/traces-explorer/traces-explorer-actions.d.ts +5 -5
  934. package/dist/src/domains/traces/components/traces-explorer/traces-explorer-context.d.ts +11 -1
  935. package/dist/src/domains/traces/components/traces-explorer/traces-explorer-saved-views.d.ts +7 -0
  936. package/dist/src/domains/traces/components/traces-list-view.d.ts +20 -7
  937. package/dist/src/domains/traces/hooks/use-traces-list-source.d.ts +5 -0
  938. package/dist/src/domains/traces/trace-filters.d.ts +27 -3
  939. package/dist/src/domains/traces/trace-list-columns.d.ts +16 -6
  940. package/dist/src/domains/traces/utils/timeline-markers.d.ts +25 -0
  941. package/dist/src/domains/workflows/context/use-persisted-workflow-run.d.ts +2 -0
  942. package/dist/src/domains/workflows/workflow/input/processor-input.d.ts +5 -535
  943. package/dist/src/domains/workflows/workflow/use-workflow-trigger.d.ts +1 -1
  944. package/dist/src/ds/components/AgentIndicator/agent-glyph.d.ts +4 -0
  945. package/dist/src/ds/components/AgentIndicator/agent-indicator.d.ts +8 -0
  946. package/dist/src/ds/components/AgentIndicator/animate.d.ts +5 -0
  947. package/dist/src/ds/components/AgentIndicator/index.d.ts +4 -0
  948. package/dist/src/ds/components/AgentIndicator/paint.d.ts +21 -0
  949. package/dist/src/ds/components/AgentIndicator/poses.d.ts +7 -0
  950. package/dist/src/ds/components/AgentIndicator/shapes.d.ts +41 -0
  951. package/dist/src/ds/components/Arrival/arrival.d.ts +11 -0
  952. package/dist/src/ds/components/Arrival/index.d.ts +1 -1
  953. package/dist/src/ds/components/DataList/TracesDataList/traces-data-list-cells.d.ts +12 -0
  954. package/dist/src/ds/components/DataList/TracesDataList/traces-data-list.d.ts +3 -1
  955. package/dist/src/ds/components/FilterBar/types.d.ts +2 -0
  956. package/dist/src/ds/components/MetricsCard/index.d.ts +1 -1
  957. package/dist/src/ds/components/MetricsCard/metrics-card-actions.d.ts +2 -1
  958. package/dist/src/ds/components/MetricsCard/metrics-card-headline.d.ts +13 -0
  959. package/dist/src/ds/components/MetricsCard/metrics-card-title-menu.d.ts +2 -0
  960. package/dist/src/ds/components/MetricsCard/metrics-card-title.d.ts +1 -3
  961. package/dist/src/ds/components/MetricsCard/metrics-card-toolbar.d.ts +3 -3
  962. package/dist/src/ds/components/MetricsCard/metrics-card-total.d.ts +11 -3
  963. package/dist/src/ds/components/MetricsCard/metrics-card.d.ts +2 -9
  964. package/dist/src/ds/components/MetricsCard/metrics-story-data.d.ts +0 -26
  965. package/dist/src/ds/components/MetricsKpiCard/metrics-kpi-card-root.d.ts +5 -2
  966. package/dist/src/ds/components/MetricsLineChart/metrics-line-chart-legend.d.ts +3 -4
  967. package/dist/src/ds/components/MetricsLineChart/metrics-line-chart.d.ts +2 -6
  968. package/dist/src/ds/components/SavedViews/saved-view-editor.d.ts +3 -1
  969. package/dist/src/ds/components/SavedViews/saved-view-picker.d.ts +21 -0
  970. package/dist/src/ds/components/SavedViews/use-saved-views.d.ts +6 -2
  971. package/dist/src/ds/components/ai/activity/activity.d.ts +12 -7
  972. package/dist/src/ds/components/ai/activity/index.d.ts +1 -0
  973. package/dist/src/ds/components/ai/activity/presets/signal-activity.d.ts +4 -1
  974. package/dist/src/ds/components/ai/activity/use-relative-paths.d.ts +3 -0
  975. package/dist/src/ds/components/ai/message-reveal/message-reveal.d.ts +2 -1
  976. package/dist/src/ds/components/ai/tool-call/tool-presentation.d.ts +4 -0
  977. package/dist/src/ds/primitives/chart-axes.d.ts +24 -0
  978. package/dist/src/ds/primitives/chart-frame.d.ts +2 -1
  979. package/dist/src/ds/primitives/chart-time-tick.d.ts +7 -4
  980. package/dist/src/lib/string.d.ts +1 -0
  981. package/dist/{string-OAgeMRQ5.js → string-CNKDIc_4.js} +6 -2
  982. package/dist/string-CNKDIc_4.js.map +1 -0
  983. package/dist/{string-CymY0aJ9.cjs → string-DdJJdCv2.cjs} +11 -1
  984. package/dist/string-DdJJdCv2.cjs.map +1 -0
  985. package/dist/style.css +67 -4
  986. package/dist/{tabbed-container-x2mfK07d.js → tabbed-container-BKUqfEKy.js} +2 -2
  987. package/dist/{tabbed-container-x2mfK07d.js.map → tabbed-container-BKUqfEKy.js.map} +1 -1
  988. package/dist/{tabbed-container-CBTb0LgE.cjs → tabbed-container-CFEImJOK.cjs} +2 -2
  989. package/dist/{tabbed-container-CBTb0LgE.cjs.map → tabbed-container-CFEImJOK.cjs.map} +1 -1
  990. package/dist/{tool-approval-6E73C0r6.cjs → tool-approval-BfjoSNOC.cjs} +4 -4
  991. package/dist/{tool-approval-6E73C0r6.cjs.map → tool-approval-BfjoSNOC.cjs.map} +1 -1
  992. package/dist/{tool-approval-BXlro6fV.js → tool-approval-FeuyUUcL.js} +4 -4
  993. package/dist/{tool-approval-BXlro6fV.js.map → tool-approval-FeuyUUcL.js.map} +1 -1
  994. package/dist/{tool-call-CItJ8KLA.js → tool-call-BxYXs9w0.js} +9 -7
  995. package/dist/{tool-call-CItJ8KLA.js.map → tool-call-BxYXs9w0.js.map} +1 -1
  996. package/dist/{tool-call-Dq9xF3WD.cjs → tool-call-CvilN9ti.cjs} +9 -7
  997. package/dist/{tool-call-Dq9xF3WD.cjs.map → tool-call-CvilN9ti.cjs.map} +1 -1
  998. package/dist/{tool-card-o5u4YCR0.cjs → tool-card-B7O8AsRl.cjs} +9 -5
  999. package/dist/tool-card-B7O8AsRl.cjs.map +1 -0
  1000. package/dist/{tool-card-Bd8weXze.js → tool-card-ELW898uw.js} +9 -5
  1001. package/dist/tool-card-ELW898uw.js.map +1 -0
  1002. package/dist/{tool-presentation-D2uUj1AB.cjs → tool-presentation-BLErsb7c.cjs} +38 -40
  1003. package/dist/tool-presentation-BLErsb7c.cjs.map +1 -0
  1004. package/dist/{tool-presentation-DKfIKLQy.js → tool-presentation-BSZYIWx2.js} +38 -40
  1005. package/dist/tool-presentation-BSZYIWx2.js.map +1 -0
  1006. package/dist/{trace-filters-C27yWcan.js → trace-filters-BJaebsxJ.js} +78 -11
  1007. package/dist/trace-filters-BJaebsxJ.js.map +1 -0
  1008. package/dist/{trace-filters-BpeBUjCb.cjs → trace-filters-BNEZ31HX.cjs} +100 -9
  1009. package/dist/trace-filters-BNEZ31HX.cjs.map +1 -0
  1010. package/dist/types-CP7wbYua.cjs.map +1 -1
  1011. package/dist/types-DiiL5mTO.js.map +1 -1
  1012. package/dist/utils/string.cjs.js +2 -1
  1013. package/dist/utils/string.es.js +1 -1
  1014. package/package.json +14 -14
  1015. package/dist/Arrival-Dm6Vgn78.cjs.map +0 -1
  1016. package/dist/Arrival-NpBOyV52.js.map +0 -1
  1017. package/dist/DataList-Cmk08jUV.cjs.map +0 -1
  1018. package/dist/DataList-Ve3omCXT.js.map +0 -1
  1019. package/dist/DateTimeRangePicker-ByMbLdom.js.map +0 -1
  1020. package/dist/DateTimeRangePicker-DGbH5WOn.cjs.map +0 -1
  1021. package/dist/FilterBar-Dk3QEuT6.js.map +0 -1
  1022. package/dist/FilterBar-gEvoWDXA.cjs.map +0 -1
  1023. package/dist/MetricsCard-C9GWgT58.js.map +0 -1
  1024. package/dist/MetricsCard-Dly_H3oX.cjs.map +0 -1
  1025. package/dist/MetricsLineChart-2m4LVL1N.cjs.map +0 -1
  1026. package/dist/MetricsLineChart-DKzuRU2q.js.map +0 -1
  1027. package/dist/MetricsStackedBarChart-DJB4aByt.js.map +0 -1
  1028. package/dist/MetricsStackedBarChart-NATtwA_W.cjs.map +0 -1
  1029. package/dist/activity-QyLJcBKc.cjs.map +0 -1
  1030. package/dist/activity-ihrl0JtH.js.map +0 -1
  1031. package/dist/combobox-C-E7_q4j.cjs.map +0 -1
  1032. package/dist/combobox-CDS2pBqz.js.map +0 -1
  1033. package/dist/domains/metrics/components/metrics-kpis.cjs.js +0 -106
  1034. package/dist/domains/metrics/components/metrics-kpis.cjs.js.map +0 -1
  1035. package/dist/domains/metrics/components/metrics-kpis.d.ts +0 -1
  1036. package/dist/domains/metrics/components/metrics-kpis.es.js +0 -105
  1037. package/dist/domains/metrics/components/metrics-kpis.es.js.map +0 -1
  1038. package/dist/filter-bar-chip-B3pgpngW.js.map +0 -1
  1039. package/dist/filter-bar-chip-CyTAmjt6.cjs.map +0 -1
  1040. package/dist/src/domains/metrics/components/metrics-kpis.d.ts +0 -2
  1041. package/dist/src/ds/components/MetricsCard/metrics-card-description.d.ts +0 -4
  1042. package/dist/src/ds/components/MetricsCard/metrics-card-summary.d.ts +0 -8
  1043. package/dist/src/ds/components/MetricsCard/metrics-card-tabs.d.ts +0 -16
  1044. package/dist/src/ds/components/MetricsCard/metrics-card-title-and-description.d.ts +0 -16
  1045. package/dist/string-CymY0aJ9.cjs.map +0 -1
  1046. package/dist/string-OAgeMRQ5.js.map +0 -1
  1047. package/dist/tool-card-Bd8weXze.js.map +0 -1
  1048. package/dist/tool-card-o5u4YCR0.cjs.map +0 -1
  1049. package/dist/tool-presentation-D2uUj1AB.cjs.map +0 -1
  1050. package/dist/tool-presentation-DKfIKLQy.js.map +0 -1
  1051. package/dist/trace-filters-BpeBUjCb.cjs.map +0 -1
  1052. package/dist/trace-filters-C27yWcan.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"thread-filters.es.js","names":[],"sources":["../../../src/domains/threads/thread-filters.ts"],"sourcesContent":["import { EntityType } from '@mastra/core/observability';\nimport type { TraceQueryScalarPredicate } from '@mastra/core/storage';\nimport { MessagesSquareIcon } from 'lucide-react';\nimport type { LucideIcon } from 'lucide-react';\nimport {\n isLegacyAnyValue,\n ROOT_ENTITY_TYPE_OPTIONS,\n TRACE_FILTER_BAR_LABELS,\n TRACE_NUMBER_OPERATORS,\n TRACE_REQUIRED_STRING_OPERATORS,\n TRACE_STATUS_OPTIONS,\n TRACE_STRING_OPERATORS,\n traceFilterFieldColor,\n traceFilterFieldIcon,\n} from '../traces/trace-filters';\nimport { isTraceFilterGroup, scalarPredicate } from '../traces/trace-query-filters';\nimport type { TraceFilterGroup, TraceFilterOperatorId, TraceFilterToken } from '../traces/trace-query-filters';\nimport type { FilterBarField, FilterBarOption } from '@/ds/components/FilterBar/types';\n\n/** Thread query fields the filter bar offers. `startedAt`/`endedAt` are left to the time-range chip. */\nexport const THREAD_FILTER_FIELD_IDS = [\n 'status',\n 'traceCount',\n 'timeToFirstChunkMs',\n 'entityType',\n 'entityId',\n 'entityName',\n 'entityVersionId',\n 'threadId',\n 'resourceId',\n 'userId',\n 'organizationId',\n 'runId',\n 'sessionId',\n 'requestId',\n 'serviceName',\n 'experimentId',\n 'environment',\n 'executionSource',\n] as const;\n\nconst FIELD_IDS: ReadonlySet<string> = new Set(THREAD_FILTER_FIELD_IDS);\nconst NUMBER_FIELD_IDS: ReadonlySet<string> = new Set(['traceCount', 'timeToFirstChunkMs']);\n/** Fields every thread row carries. On any other field, \"is not X\" must also keep threads where it is missing. */\nconst REQUIRED_FIELD_IDS: ReadonlySet<string> = new Set(['threadId', 'status', 'traceCount']);\n/** The thread query compares `traceCount` but has no set membership or presence check for it. */\nconst TRACE_COUNT_OPERATORS: TraceFilterOperatorId[] = ['is', 'isNot', 'gt', 'gte', 'lt', 'lte'];\n\nconst THREAD_FILTER_BAR_LABELS: Record<string, string> = {\n ...TRACE_FILTER_BAR_LABELS,\n traceCount: 'Messages',\n timeToFirstChunkMs: 'Time to first chunk (ms)',\n executionSource: 'Execution source',\n entityType: 'Primitive type',\n entityVersionId: 'Primitive version ID',\n};\n\n/** Thread fields without their own trace icon borrow the icon of the closest trace field. */\nconst THREAD_ICON_FIELD_ALIASES: Record<string, string> = {\n timeToFirstChunkMs: 'durationMs',\n executionSource: 'runId',\n entityType: 'rootEntityType',\n entityVersionId: 'entityId',\n};\n\n/** Thread fields with an icon of their own: Messages uses the Threads tab's icon. */\nconst THREAD_FILTER_BAR_ICONS: Record<string, LucideIcon> = {\n traceCount: MessagesSquareIcon,\n};\n\nconst threadFieldBase = (id: string) => ({\n id,\n label: THREAD_FILTER_BAR_LABELS[id] ?? id,\n icon: THREAD_FILTER_BAR_ICONS[id] ?? traceFilterFieldIcon(THREAD_ICON_FIELD_ALIASES[id] ?? id),\n color: traceFilterFieldColor(id),\n});\n\nconst humanize = (value: string) => {\n const words = value.replace(/_/g, ' ');\n return words.charAt(0).toUpperCase() + words.slice(1);\n};\n\nconst ENTITY_TYPE_LABELS: Record<string, string> = Object.fromEntries(\n ROOT_ENTITY_TYPE_OPTIONS.map(option => [option.entityType, option.label]),\n);\n\nconst ENTITY_TYPE_OPTIONS: FilterBarOption[] = Object.values(EntityType)\n .map(value => ({ value, label: ENTITY_TYPE_LABELS[value] ?? humanize(value) }))\n .sort((a, b) => a.label.localeCompare(b.label));\n\nconst STATUS_OPTIONS: FilterBarOption[] = TRACE_STATUS_OPTIONS.filter(option => option.value !== 'running').map(\n option => ({ value: option.value, label: option.label }),\n);\n\n/** FilterBar fields for the threads page: only paths and operators `queryTraceThreads()` accepts. */\nexport function createThreadFilterBarFields({\n entityNames,\n environments,\n}: {\n entityNames: readonly string[];\n environments: readonly string[];\n}): FilterBarField[] {\n const pick = (\n id: string,\n suggestions: FilterBarOption[],\n operators: TraceFilterOperatorId[] = TRACE_STRING_OPERATORS,\n ): FilterBarField => ({ ...threadFieldBase(id), operators, strict: true, suggestions });\n\n const field = (id: string): FilterBarField => {\n switch (id) {\n case 'status':\n return pick(id, STATUS_OPTIONS, TRACE_REQUIRED_STRING_OPERATORS);\n case 'entityType':\n return pick(id, ENTITY_TYPE_OPTIONS);\n case 'entityName':\n return pick(\n id,\n entityNames.map(value => ({ value })),\n );\n case 'environment':\n return pick(\n id,\n environments.map(value => ({ value })),\n );\n case 'traceCount':\n return { ...threadFieldBase(id), type: 'number', operators: TRACE_COUNT_OPERATORS };\n case 'timeToFirstChunkMs':\n return { ...threadFieldBase(id), type: 'number', operators: TRACE_NUMBER_OPERATORS };\n case 'threadId':\n return { ...threadFieldBase(id), operators: TRACE_REQUIRED_STRING_OPERATORS };\n default:\n return { ...threadFieldBase(id), operators: TRACE_STRING_OPERATORS };\n }\n };\n\n return THREAD_FILTER_FIELD_IDS.map(field).sort((a, b) => a.label.localeCompare(b.label));\n}\n\nfunction tokenToThreadQueryPredicate(token: TraceFilterToken): TraceQueryScalarPredicate | undefined {\n const { fieldId } = token;\n if (!FIELD_IDS.has(fieldId)) return undefined;\n const operatorId = token.operatorId ?? 'is';\n const isPresence = operatorId === 'exists' || operatorId === 'notExists';\n\n const rawValues = (Array.isArray(token.value) ? token.value : [token.value]).filter(\n (value): value is string =>\n typeof value === 'string' && Boolean(value.trim()) && !isLegacyAnyValue(value, operatorId),\n );\n if (!rawValues.length && !isPresence) return undefined;\n\n let values: (string | number)[] = rawValues;\n if (NUMBER_FIELD_IDS.has(fieldId)) {\n values = rawValues.map(Number).filter(value => !Number.isNaN(value));\n if (!values.length && !isPresence) return undefined;\n }\n if (fieldId === 'traceCount' && (isPresence || values.length > 1 || !TRACE_COUNT_OPERATORS.includes(operatorId))) {\n return undefined;\n }\n\n const predicate = scalarPredicate(operatorId, fieldId, values);\n if (!predicate) return undefined;\n if ((operatorId === 'isNot' || operatorId === 'notIn') && !REQUIRED_FIELD_IDS.has(fieldId)) {\n return { op: 'or', args: [predicate, { op: 'notExists', path: fieldId }] };\n }\n return predicate;\n}\n\nfunction groupToThreadQueryPredicate(group: TraceFilterGroup): TraceQueryScalarPredicate | undefined {\n const args = group.nodes\n .map(node => (isTraceFilterGroup(node) ? groupToThreadQueryPredicate(node) : tokenToThreadQueryPredicate(node)))\n .filter((predicate): predicate is TraceQueryScalarPredicate => Boolean(predicate));\n if (args.length === 0) return undefined;\n return args.length === 1 ? args[0] : { op: group.logic, args };\n}\n\n/**\n * The thread query `where` for the filter bar's tokens and groups, or `undefined` when nothing applies.\n * Conditions the thread query can't run (unknown fields, unusable values) are left out instead of\n * failing the request.\n */\nexport function buildThreadQueryWhere(\n tokens: TraceFilterToken[],\n groups: TraceFilterGroup[],\n): TraceQueryScalarPredicate | undefined {\n const args = [...tokens.map(tokenToThreadQueryPredicate), ...groups.map(groupToThreadQueryPredicate)].filter(\n (predicate): predicate is TraceQueryScalarPredicate => Boolean(predicate),\n );\n return args.length ? { op: 'and', args } : undefined;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"thread-filters.es.js","names":[],"sources":["../../../src/domains/threads/thread-filters.ts"],"sourcesContent":["import { EntityType } from '@mastra/core/observability';\nimport type { TraceQueryScalarPredicate } from '@mastra/core/storage';\nimport { MessagesSquareIcon } from 'lucide-react';\nimport type { LucideIcon } from 'lucide-react';\nimport {\n isLegacyAnyValue,\n ROOT_ENTITY_TYPE_OPTIONS,\n TRACE_FILTER_BAR_LABELS,\n TRACE_NUMBER_OPERATORS,\n TRACE_REQUIRED_STRING_OPERATORS,\n TRACE_STATUS_OPTIONS,\n TRACE_STRING_OPERATORS,\n traceFilterFieldColor,\n traceFilterFieldIcon,\n withoutUnrecordedStreamingTimings,\n} from '../traces/trace-filters';\nimport type { StreamingTimingSupport } from '../traces/trace-filters';\nimport { isTraceFilterGroup, scalarPredicate } from '../traces/trace-query-filters';\nimport type { TraceFilterGroup, TraceFilterOperatorId, TraceFilterToken } from '../traces/trace-query-filters';\nimport type { FilterBarField, FilterBarOption } from '@/ds/components/FilterBar/types';\n\n/** Thread query fields the filter bar offers. `startedAt`/`endedAt` are left to the time-range chip. */\nexport const THREAD_FILTER_FIELD_IDS = [\n 'status',\n 'traceCount',\n 'timeToFirstChunkMs',\n 'timeToFirstTokenMs',\n 'entityType',\n 'entityId',\n 'entityName',\n 'entityVersionId',\n 'threadId',\n 'resourceId',\n 'userId',\n 'organizationId',\n 'runId',\n 'sessionId',\n 'requestId',\n 'serviceName',\n 'experimentId',\n 'environment',\n 'executionSource',\n] as const;\n\nconst FIELD_IDS: ReadonlySet<string> = new Set(THREAD_FILTER_FIELD_IDS);\nconst NUMBER_FIELD_IDS: ReadonlySet<string> = new Set(['traceCount', 'timeToFirstChunkMs', 'timeToFirstTokenMs']);\n/** Fields every thread row carries. On any other field, \"is not X\" must also keep threads where it is missing. */\nconst REQUIRED_FIELD_IDS: ReadonlySet<string> = new Set(['threadId', 'status', 'traceCount']);\n/** The thread query compares `traceCount` but has no set membership or presence check for it. */\nconst TRACE_COUNT_OPERATORS: TraceFilterOperatorId[] = ['is', 'isNot', 'gt', 'gte', 'lt', 'lte'];\n\nconst THREAD_FILTER_BAR_LABELS: Record<string, string> = {\n ...TRACE_FILTER_BAR_LABELS,\n traceCount: 'Messages',\n timeToFirstChunkMs: 'Time to first chunk (ms)',\n timeToFirstTokenMs: 'Time to first token (ms)',\n executionSource: 'Execution source',\n entityType: 'Primitive type',\n entityVersionId: 'Primitive version ID',\n};\n\n/** Thread fields without their own trace icon borrow the icon of the closest trace field. */\nconst THREAD_ICON_FIELD_ALIASES: Record<string, string> = {\n timeToFirstChunkMs: 'durationMs',\n timeToFirstTokenMs: 'durationMs',\n executionSource: 'runId',\n entityType: 'rootEntityType',\n entityVersionId: 'entityId',\n};\n\n/** Thread fields with an icon of their own: Messages uses the Threads tab's icon. */\nconst THREAD_FILTER_BAR_ICONS: Record<string, LucideIcon> = {\n traceCount: MessagesSquareIcon,\n};\n\nconst threadFieldBase = (id: string) => ({\n id,\n label: THREAD_FILTER_BAR_LABELS[id] ?? id,\n icon: THREAD_FILTER_BAR_ICONS[id] ?? traceFilterFieldIcon(THREAD_ICON_FIELD_ALIASES[id] ?? id),\n color: traceFilterFieldColor(id),\n});\n\nconst humanize = (value: string) => {\n const words = value.replace(/_/g, ' ');\n return words.charAt(0).toUpperCase() + words.slice(1);\n};\n\nconst ENTITY_TYPE_LABELS: Record<string, string> = Object.fromEntries(\n ROOT_ENTITY_TYPE_OPTIONS.map(option => [option.entityType, option.label]),\n);\n\nconst ENTITY_TYPE_OPTIONS: FilterBarOption[] = Object.values(EntityType)\n .map(value => ({ value, label: ENTITY_TYPE_LABELS[value] ?? humanize(value) }))\n .sort((a, b) => a.label.localeCompare(b.label));\n\nconst STATUS_OPTIONS: FilterBarOption[] = TRACE_STATUS_OPTIONS.filter(option => option.value !== 'running').map(\n option => ({ value: option.value, label: option.label }),\n);\n\n/** FilterBar fields for the threads page: only paths and operators `queryTraceThreads()` accepts. */\nexport function createThreadFilterBarFields({\n withTimeToFirstChunk,\n withTimeToFirstToken,\n entityNames,\n environments,\n}: StreamingTimingSupport & {\n entityNames: readonly string[];\n environments: readonly string[];\n}): FilterBarField[] {\n const pick = (\n id: string,\n suggestions: FilterBarOption[],\n operators: TraceFilterOperatorId[] = TRACE_STRING_OPERATORS,\n ): FilterBarField => ({ ...threadFieldBase(id), operators, strict: true, suggestions });\n\n const field = (id: string): FilterBarField => {\n switch (id) {\n case 'status':\n return pick(id, STATUS_OPTIONS, TRACE_REQUIRED_STRING_OPERATORS);\n case 'entityType':\n return pick(id, ENTITY_TYPE_OPTIONS);\n case 'entityName':\n return pick(\n id,\n entityNames.map(value => ({ value })),\n );\n case 'environment':\n return pick(\n id,\n environments.map(value => ({ value })),\n );\n case 'traceCount':\n return { ...threadFieldBase(id), type: 'number', operators: TRACE_COUNT_OPERATORS };\n case 'timeToFirstChunkMs':\n case 'timeToFirstTokenMs':\n return { ...threadFieldBase(id), type: 'number', operators: TRACE_NUMBER_OPERATORS };\n case 'threadId':\n return { ...threadFieldBase(id), operators: TRACE_REQUIRED_STRING_OPERATORS };\n default:\n return { ...threadFieldBase(id), operators: TRACE_STRING_OPERATORS };\n }\n };\n\n const offered = withoutUnrecordedStreamingTimings(FIELD_IDS, { withTimeToFirstChunk, withTimeToFirstToken });\n return THREAD_FILTER_FIELD_IDS.filter(id => offered.has(id))\n .map(field)\n .sort((a, b) => a.label.localeCompare(b.label));\n}\n\nfunction tokenToThreadQueryPredicate(\n token: TraceFilterToken,\n allowedFieldIds: ReadonlySet<string>,\n): TraceQueryScalarPredicate | undefined {\n const { fieldId } = token;\n if (!allowedFieldIds.has(fieldId)) return undefined;\n const operatorId = token.operatorId ?? 'is';\n const isPresence = operatorId === 'exists' || operatorId === 'notExists';\n\n const rawValues = (Array.isArray(token.value) ? token.value : [token.value]).filter(\n (value): value is string =>\n typeof value === 'string' && Boolean(value.trim()) && !isLegacyAnyValue(value, operatorId),\n );\n if (!rawValues.length && !isPresence) return undefined;\n\n let values: (string | number)[] = rawValues;\n if (NUMBER_FIELD_IDS.has(fieldId)) {\n values = rawValues.map(Number).filter(value => !Number.isNaN(value));\n if (!values.length && !isPresence) return undefined;\n }\n if (fieldId === 'traceCount' && (isPresence || values.length > 1 || !TRACE_COUNT_OPERATORS.includes(operatorId))) {\n return undefined;\n }\n\n const predicate = scalarPredicate(operatorId, fieldId, values);\n if (!predicate) return undefined;\n if ((operatorId === 'isNot' || operatorId === 'notIn') && !REQUIRED_FIELD_IDS.has(fieldId)) {\n return { op: 'or', args: [predicate, { op: 'notExists', path: fieldId }] };\n }\n return predicate;\n}\n\nfunction groupToThreadQueryPredicate(\n group: TraceFilterGroup,\n allowedFieldIds: ReadonlySet<string>,\n): TraceQueryScalarPredicate | undefined {\n const args = group.nodes\n .map(node =>\n isTraceFilterGroup(node)\n ? groupToThreadQueryPredicate(node, allowedFieldIds)\n : tokenToThreadQueryPredicate(node, allowedFieldIds),\n )\n .filter((predicate): predicate is TraceQueryScalarPredicate => Boolean(predicate));\n if (args.length === 0) return undefined;\n return args.length === 1 ? args[0] : { op: group.logic, args };\n}\n\n/**\n * The thread query `where` for the filter bar's tokens and groups, or `undefined` when nothing applies.\n * Conditions the thread query can't run (unknown fields, streaming timings the store doesn't record,\n * unusable values) are left out instead of failing the request.\n */\nexport function buildThreadQueryWhere(\n tokens: TraceFilterToken[],\n groups: TraceFilterGroup[],\n support: StreamingTimingSupport,\n): TraceQueryScalarPredicate | undefined {\n const allowedFieldIds = withoutUnrecordedStreamingTimings(FIELD_IDS, support);\n const args = [\n ...tokens.map(token => tokenToThreadQueryPredicate(token, allowedFieldIds)),\n ...groups.map(group => groupToThreadQueryPredicate(group, allowedFieldIds)),\n ].filter((predicate): predicate is TraceQueryScalarPredicate => Boolean(predicate));\n return args.length ? { op: 'and', args } : undefined;\n}\n"],"mappings":"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"}
@@ -17,6 +17,8 @@ function threadToListRow(thread) {
17
17
  startedAt: thread.startedAt,
18
18
  endedAt: thread.endedAt,
19
19
  traceCount: thread.traceCount,
20
+ timeToFirstChunkMs: thread.timeToFirstChunkMs,
21
+ timeToFirstTokenMs: thread.timeToFirstTokenMs,
20
22
  createdAt: thread.startedAt
21
23
  };
22
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"thread-list-row.cjs.js","names":[],"sources":["../../../src/domains/threads/thread-list-row.ts"],"sourcesContent":["import type { ThreadRow } from '@mastra/react/hooks/traces';\nimport type { TracesListViewTrace } from '@/domains/traces/components/traces-list-view';\n\n// A thread spans several traces; its latest one keys the row, since it is unique per thread.\nexport function threadToListRow(thread: ThreadRow): TracesListViewTrace {\n return {\n traceId: thread.lastTraceId,\n name: thread.entityName ?? thread.threadId,\n entityType: thread.entityType,\n entityId: thread.entityId,\n entityName: thread.entityName,\n threadId: thread.threadId,\n resourceId: thread.resourceId,\n environment: thread.environment,\n status: thread.status,\n inputPreview: thread.inputPreview,\n outputPreview: thread.outputPreview ?? undefined,\n errorPreview: thread.errorPreview ?? undefined,\n startedAt: thread.startedAt,\n endedAt: thread.endedAt,\n traceCount: thread.traceCount,\n createdAt: thread.startedAt,\n };\n}\n"],"mappings":";;AAIA,SAAgB,gBAAgB,QAAwC;CACtE,OAAO;EACL,SAAS,OAAO;EAChB,MAAM,OAAO,cAAc,OAAO;EAClC,YAAY,OAAO;EACnB,UAAU,OAAO;EACjB,YAAY,OAAO;EACnB,UAAU,OAAO;EACjB,YAAY,OAAO;EACnB,aAAa,OAAO;EACpB,QAAQ,OAAO;EACf,cAAc,OAAO;EACrB,eAAe,OAAO,iBAAiB,KAAA;EACvC,cAAc,OAAO,gBAAgB,KAAA;EACrC,WAAW,OAAO;EAClB,SAAS,OAAO;EAChB,YAAY,OAAO;EACnB,WAAW,OAAO;CACpB;AACF"}
1
+ {"version":3,"file":"thread-list-row.cjs.js","names":[],"sources":["../../../src/domains/threads/thread-list-row.ts"],"sourcesContent":["import type { ThreadRow } from '@mastra/react/hooks/traces';\nimport type { TracesListViewTrace } from '@/domains/traces/components/traces-list-view';\n\n// A thread spans several traces; its latest one keys the row, since it is unique per thread.\nexport function threadToListRow(thread: ThreadRow): TracesListViewTrace {\n return {\n traceId: thread.lastTraceId,\n name: thread.entityName ?? thread.threadId,\n entityType: thread.entityType,\n entityId: thread.entityId,\n entityName: thread.entityName,\n threadId: thread.threadId,\n resourceId: thread.resourceId,\n environment: thread.environment,\n status: thread.status,\n inputPreview: thread.inputPreview,\n outputPreview: thread.outputPreview ?? undefined,\n errorPreview: thread.errorPreview ?? undefined,\n startedAt: thread.startedAt,\n endedAt: thread.endedAt,\n traceCount: thread.traceCount,\n timeToFirstChunkMs: thread.timeToFirstChunkMs,\n timeToFirstTokenMs: thread.timeToFirstTokenMs,\n createdAt: thread.startedAt,\n };\n}\n"],"mappings":";;AAIA,SAAgB,gBAAgB,QAAwC;CACtE,OAAO;EACL,SAAS,OAAO;EAChB,MAAM,OAAO,cAAc,OAAO;EAClC,YAAY,OAAO;EACnB,UAAU,OAAO;EACjB,YAAY,OAAO;EACnB,UAAU,OAAO;EACjB,YAAY,OAAO;EACnB,aAAa,OAAO;EACpB,QAAQ,OAAO;EACf,cAAc,OAAO;EACrB,eAAe,OAAO,iBAAiB,KAAA;EACvC,cAAc,OAAO,gBAAgB,KAAA;EACrC,WAAW,OAAO;EAClB,SAAS,OAAO;EAChB,YAAY,OAAO;EACnB,oBAAoB,OAAO;EAC3B,oBAAoB,OAAO;EAC3B,WAAW,OAAO;CACpB;AACF"}
@@ -16,6 +16,8 @@ function threadToListRow(thread) {
16
16
  startedAt: thread.startedAt,
17
17
  endedAt: thread.endedAt,
18
18
  traceCount: thread.traceCount,
19
+ timeToFirstChunkMs: thread.timeToFirstChunkMs,
20
+ timeToFirstTokenMs: thread.timeToFirstTokenMs,
19
21
  createdAt: thread.startedAt
20
22
  };
21
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"thread-list-row.es.js","names":[],"sources":["../../../src/domains/threads/thread-list-row.ts"],"sourcesContent":["import type { ThreadRow } from '@mastra/react/hooks/traces';\nimport type { TracesListViewTrace } from '@/domains/traces/components/traces-list-view';\n\n// A thread spans several traces; its latest one keys the row, since it is unique per thread.\nexport function threadToListRow(thread: ThreadRow): TracesListViewTrace {\n return {\n traceId: thread.lastTraceId,\n name: thread.entityName ?? thread.threadId,\n entityType: thread.entityType,\n entityId: thread.entityId,\n entityName: thread.entityName,\n threadId: thread.threadId,\n resourceId: thread.resourceId,\n environment: thread.environment,\n status: thread.status,\n inputPreview: thread.inputPreview,\n outputPreview: thread.outputPreview ?? undefined,\n errorPreview: thread.errorPreview ?? undefined,\n startedAt: thread.startedAt,\n endedAt: thread.endedAt,\n traceCount: thread.traceCount,\n createdAt: thread.startedAt,\n };\n}\n"],"mappings":";AAIA,SAAgB,gBAAgB,QAAwC;CACtE,OAAO;EACL,SAAS,OAAO;EAChB,MAAM,OAAO,cAAc,OAAO;EAClC,YAAY,OAAO;EACnB,UAAU,OAAO;EACjB,YAAY,OAAO;EACnB,UAAU,OAAO;EACjB,YAAY,OAAO;EACnB,aAAa,OAAO;EACpB,QAAQ,OAAO;EACf,cAAc,OAAO;EACrB,eAAe,OAAO,iBAAiB,KAAA;EACvC,cAAc,OAAO,gBAAgB,KAAA;EACrC,WAAW,OAAO;EAClB,SAAS,OAAO;EAChB,YAAY,OAAO;EACnB,WAAW,OAAO;CACpB;AACF"}
1
+ {"version":3,"file":"thread-list-row.es.js","names":[],"sources":["../../../src/domains/threads/thread-list-row.ts"],"sourcesContent":["import type { ThreadRow } from '@mastra/react/hooks/traces';\nimport type { TracesListViewTrace } from '@/domains/traces/components/traces-list-view';\n\n// A thread spans several traces; its latest one keys the row, since it is unique per thread.\nexport function threadToListRow(thread: ThreadRow): TracesListViewTrace {\n return {\n traceId: thread.lastTraceId,\n name: thread.entityName ?? thread.threadId,\n entityType: thread.entityType,\n entityId: thread.entityId,\n entityName: thread.entityName,\n threadId: thread.threadId,\n resourceId: thread.resourceId,\n environment: thread.environment,\n status: thread.status,\n inputPreview: thread.inputPreview,\n outputPreview: thread.outputPreview ?? undefined,\n errorPreview: thread.errorPreview ?? undefined,\n startedAt: thread.startedAt,\n endedAt: thread.endedAt,\n traceCount: thread.traceCount,\n timeToFirstChunkMs: thread.timeToFirstChunkMs,\n timeToFirstTokenMs: thread.timeToFirstTokenMs,\n createdAt: thread.startedAt,\n };\n}\n"],"mappings":";AAIA,SAAgB,gBAAgB,QAAwC;CACtE,OAAO;EACL,SAAS,OAAO;EAChB,MAAM,OAAO,cAAc,OAAO;EAClC,YAAY,OAAO;EACnB,UAAU,OAAO;EACjB,YAAY,OAAO;EACnB,UAAU,OAAO;EACjB,YAAY,OAAO;EACnB,aAAa,OAAO;EACpB,QAAQ,OAAO;EACf,cAAc,OAAO;EACrB,eAAe,OAAO,iBAAiB,KAAA;EACvC,cAAc,OAAO,gBAAgB,KAAA;EACrC,WAAW,OAAO;EAClB,SAAS,OAAO;EAChB,YAAY,OAAO;EACnB,oBAAoB,OAAO;EAC3B,oBAAoB,OAAO;EAC3B,WAAW,OAAO;CACpB;AACF"}
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_trace_filters = require("../../../../trace-filters-BpeBUjCb.cjs");
2
+ const require_trace_filters = require("../../../../trace-filters-BNEZ31HX.cjs");
3
3
  const require_domains_traces_trace_list_columns = require("../../trace-list-columns.cjs.js");
4
4
  const require_domains_traces_components_trace_columns_menu = require("../trace-columns-menu.cjs.js");
5
5
  const require_domains_traces_components_traces_explorer_traces_explorer_context = require("../traces-explorer/traces-explorer-context.cjs.js");
@@ -15,9 +15,17 @@ var UNSUPPORTED_METRICS = {
15
15
  function useQueryAvailable(scope) {
16
16
  const traceQuery = (0, _mastra_react_hooks_capabilities.useTraceQueryAvailable)();
17
17
  const spanQuery = (0, _mastra_react_hooks_capabilities.useSpanQueryAvailable)();
18
- return scope === "spans" ? spanQuery : traceQuery;
18
+ const threadQuery = (0, _mastra_react_hooks_capabilities.useThreadQueryAvailable)();
19
+ if (scope === "spans") return spanQuery;
20
+ if (scope === "threads") return threadQuery;
21
+ return traceQuery;
19
22
  }
20
- var ScopedColumnsMenu = (0, react.memo)(function ScopedColumnsMenu({ scope, value, onChange, discoveryTimeRange, metricsSupport = UNSUPPORTED_METRICS, queryEnabled = true }) {
23
+ /**
24
+ * The "Columns" picker for a trace-style list. Offers the scope's own column catalog, checks
25
+ * the scope's query capability, and (for traces) discovers the metadata keys observed in the
26
+ * time range on its own; the host only owns the selection.
27
+ */
28
+ var ColumnsMenu = (0, react.memo)(function ColumnsMenu({ scope, value, onChange, discoveryTimeRange, metricsSupport = UNSUPPORTED_METRICS, queryEnabled = true }) {
21
29
  const catalog = require_domains_traces_trace_list_columns.TRACE_COLUMN_CATALOGS[scope];
22
30
  const queryAvailable = useQueryAvailable(scope);
23
31
  const discoveryAvailable = (0, _mastra_react_hooks_capabilities.useTraceQueryDiscoveryAvailable)();
@@ -25,10 +33,19 @@ var ScopedColumnsMenu = (0, react.memo)(function ScopedColumnsMenu({ scope, valu
25
33
  const [defaultTimeRange] = (0, react.useState)(() => require_trace_filters.resolveTraceQueryTimeRange(void 0, void 0, /* @__PURE__ */ new Date()));
26
34
  const withQuery = queryAvailable.enabled && queryEnabled;
27
35
  const withTimeToFirstChunk = withQuery && (capabilities?.capabilities.traceQueryTimeToFirstChunk ?? false);
28
- const offeredCatalog = (0, react.useMemo)(() => withTimeToFirstChunk ? catalog : {
29
- ...catalog,
30
- standardColumns: catalog.standardColumns.filter((column) => column !== "timeToFirstChunk")
31
- }, [catalog, withTimeToFirstChunk]);
36
+ const withTimeToFirstToken = withQuery && (capabilities?.capabilities.traceQueryTimeToFirstToken ?? false);
37
+ const offeredCatalog = (0, react.useMemo)(() => {
38
+ if (withTimeToFirstChunk && withTimeToFirstToken) return catalog;
39
+ const standardColumns = catalog.standardColumns.filter((column) => (withTimeToFirstChunk || column !== "timeToFirstChunk") && (withTimeToFirstToken || column !== "timeToFirstToken"));
40
+ return {
41
+ ...catalog,
42
+ standardColumns
43
+ };
44
+ }, [
45
+ catalog,
46
+ withTimeToFirstChunk,
47
+ withTimeToFirstToken
48
+ ]);
32
49
  const { fields } = (0, _mastra_react_hooks_traces.useTraceMetadataFilterFields)({
33
50
  timeRange: discoveryTimeRange ?? defaultTimeRange,
34
51
  queryOptions: { enabled: catalog.metadata && withQuery && discoveryAvailable.enabled }
@@ -57,18 +74,6 @@ var ScopedColumnsMenu = (0, react.memo)(function ScopedColumnsMenu({ scope, valu
57
74
  onReset: () => onChange(catalog.defaults)
58
75
  });
59
76
  });
60
- /**
61
- * The "Columns" picker for a trace-style list. Offers the scope's own column catalog, checks
62
- * the scope's query capability, and (for traces) discovers the metadata keys observed in the
63
- * time range on its own; the host only owns the selection.
64
- */
65
- function ColumnsMenu({ scope, ...props }) {
66
- if (scope === "threads") return null;
67
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ScopedColumnsMenu, {
68
- scope,
69
- ...props
70
- });
71
- }
72
77
  exports.ColumnsMenu = ColumnsMenu;
73
78
 
74
79
  //# sourceMappingURL=columns-menu.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"columns-menu.cjs.js","names":["useTraceQueryAvailable","useSpanQueryAvailable","memo","TRACE_COLUMN_CATALOGS","useTraceQueryDiscoveryAvailable","useObservabilityCapabilities","useState","resolveTraceQueryTimeRange","useMemo","useTraceMetadataFilterFields","CHECKING_USAGE_REASON","UNSUPPORTED_USAGE_REASON","TraceColumnsMenu","toggleTraceColumn","addTraceCustomColumn","removeTraceCustomColumn","addTraceMetadataColumn","removeTraceMetadataColumn"],"sources":["../../../../../src/domains/traces/components/columns-menu/columns-menu.tsx"],"sourcesContent":["import { useTraceMetadataFilterFields } from '@mastra/react/hooks/traces';\nimport type { TraceQueryDiscoveryTimeRange } from '@mastra/react/hooks/traces';\nimport { memo, useMemo, useState } from 'react';\nimport {\n TRACE_COLUMN_CATALOGS,\n addTraceCustomColumn,\n addTraceMetadataColumn,\n removeTraceCustomColumn,\n removeTraceMetadataColumn,\n toggleTraceColumn,\n} from '../../trace-list-columns';\nimport type { TraceColumnPreferences, TraceColumnScope } from '../../trace-list-columns';\nimport { resolveTraceQueryTimeRange } from '../../trace-query-filters';\nimport { TraceColumnsMenu } from '../trace-columns-menu';\nimport { CHECKING_USAGE_REASON, UNSUPPORTED_USAGE_REASON } from '../traces-explorer/traces-explorer-context';\nimport type { TracesMetricsSupport } from '../traces-explorer/traces-explorer-context';\nimport {\n useObservabilityCapabilities,\n useSpanQueryAvailable,\n useTraceQueryAvailable,\n useTraceQueryDiscoveryAvailable,\n} from '@/domains/capabilities';\n\nexport type ColumnsMenuScope = TraceColumnScope | 'threads';\n\nexport type ColumnsMenuProps = {\n /** Which list the columns belong to. Each scope offers only the columns its rows carry; threads renders nothing. */\n scope: ColumnsMenuScope;\n /** The active column selection. The host owns it (and its persistence). */\n value: TraceColumnPreferences;\n /** Receives the whole next selection on every change. */\n onChange: (next: TraceColumnPreferences) => void;\n /** Window metadata keys are discovered in. Pass the list's range to share the filter bar's cached discovery. Defaults to the last seven days. */\n discoveryTimeRange?: TraceQueryDiscoveryTimeRange;\n /** Whether the store reports token and cost metrics (traces only). Usage columns are unavailable when omitted. */\n metricsSupport?: TracesMetricsSupport;\n /** Host-level switch for the query API. When false, metadata columns can't be added. Defaults to true. */\n queryEnabled?: boolean;\n};\n\ntype ScopedColumnsMenuProps = Omit<ColumnsMenuProps, 'scope'> & { scope: TraceColumnScope };\n\nconst UNSUPPORTED_METRICS: TracesMetricsSupport = { supported: false, isLoading: false };\n\nfunction useQueryAvailable(scope: TraceColumnScope) {\n const traceQuery = useTraceQueryAvailable();\n const spanQuery = useSpanQueryAvailable();\n return scope === 'spans' ? spanQuery : traceQuery;\n}\n\nconst ScopedColumnsMenu = memo(function ScopedColumnsMenu({\n scope,\n value,\n onChange,\n discoveryTimeRange,\n metricsSupport = UNSUPPORTED_METRICS,\n queryEnabled = true,\n}: ScopedColumnsMenuProps) {\n const catalog = TRACE_COLUMN_CATALOGS[scope];\n const queryAvailable = useQueryAvailable(scope);\n const discoveryAvailable = useTraceQueryDiscoveryAvailable();\n const { data: capabilities } = useObservabilityCapabilities();\n const [defaultTimeRange] = useState(() => resolveTraceQueryTimeRange(undefined, undefined, new Date()));\n\n const withQuery = queryAvailable.enabled && queryEnabled;\n const withTimeToFirstChunk = withQuery && (capabilities?.capabilities.traceQueryTimeToFirstChunk ?? false);\n const offeredCatalog = useMemo(\n () =>\n withTimeToFirstChunk\n ? catalog\n : { ...catalog, standardColumns: catalog.standardColumns.filter(column => column !== 'timeToFirstChunk') },\n [catalog, withTimeToFirstChunk],\n );\n const { fields } = useTraceMetadataFilterFields({\n timeRange: discoveryTimeRange ?? defaultTimeRange,\n queryOptions: { enabled: catalog.metadata && withQuery && discoveryAvailable.enabled },\n });\n\n // Metadata columns read top-level keys only, so nested paths collapse to their first segment.\n const availableMetadataKeys = useMemo(() => {\n const keys = new Set<string>();\n for (const field of fields) {\n const key = field.path.replace(/^metadata\\./, '').split('.')[0];\n if (key) keys.add(key);\n }\n return [...keys].sort();\n }, [fields]);\n\n const usageDisabledReason = metricsSupport.isLoading\n ? CHECKING_USAGE_REASON\n : metricsSupport.supported\n ? undefined\n : UNSUPPORTED_USAGE_REASON;\n\n return (\n <TraceColumnsMenu\n preferences={value}\n catalog={offeredCatalog}\n availableMetadataKeys={availableMetadataKeys}\n usageDisabledReason={usageDisabledReason}\n withQueryTrace={withQuery}\n disabled={queryAvailable.isLoading}\n onToggleColumn={column => onChange(toggleTraceColumn(value, column))}\n onAddCustomColumn={column => onChange(addTraceCustomColumn(value, column))}\n onRemoveCustomColumn={column => onChange(removeTraceCustomColumn(value, column))}\n onAddMetadataColumn={key => onChange(addTraceMetadataColumn(value, key))}\n onRemoveMetadataColumn={key => onChange(removeTraceMetadataColumn(value, key))}\n onReset={() => onChange(catalog.defaults)}\n />\n );\n});\n\n/**\n * The \"Columns\" picker for a trace-style list. Offers the scope's own column catalog, checks\n * the scope's query capability, and (for traces) discovers the metadata keys observed in the\n * time range on its own; the host only owns the selection.\n */\nexport function ColumnsMenu({ scope, ...props }: ColumnsMenuProps) {\n if (scope === 'threads') return null;\n return <ScopedColumnsMenu scope={scope} {...props} />;\n}\n"],"mappings":";;;;;;;;;;AA0CA,IAAM,sBAA4C;CAAE,WAAW;CAAO,WAAW;AAAM;AAEvF,SAAS,kBAAkB,OAAyB;CAClD,MAAM,cAAA,GAAaA,iCAAAA,uBAAAA,CAAuB;CAC1C,MAAM,aAAA,GAAYC,iCAAAA,sBAAAA,CAAsB;CACxC,OAAO,UAAU,UAAU,YAAY;AACzC;AAEA,IAAM,qBAAA,GAAoBC,MAAAA,KAAAA,CAAK,SAAS,kBAAkB,EACxD,OACA,OACA,UACA,oBACA,iBAAiB,qBACjB,eAAe,QACU;CACzB,MAAM,UAAUC,0CAAAA,sBAAsB;CACtC,MAAM,iBAAiB,kBAAkB,KAAK;CAC9C,MAAM,sBAAA,GAAqBC,iCAAAA,gCAAAA,CAAgC;CAC3D,MAAM,EAAE,MAAM,kBAAA,GAAiBC,iCAAAA,6BAAAA,CAA6B;CAC5D,MAAM,CAAC,qBAAA,GAAoBC,MAAAA,SAAAA,OAAeC,sBAAAA,2BAA2B,KAAA,GAAW,KAAA,mBAAW,IAAI,KAAK,CAAC,CAAC;CAEtG,MAAM,YAAY,eAAe,WAAW;CAC5C,MAAM,uBAAuB,cAAc,cAAc,aAAa,8BAA8B;CACpG,MAAM,kBAAA,GAAiBC,MAAAA,QAAAA,OAEnB,uBACI,UACA;EAAE,GAAG;EAAS,iBAAiB,QAAQ,gBAAgB,QAAO,WAAU,WAAW,kBAAkB;CAAE,GAC7G,CAAC,SAAS,oBAAoB,CAChC;CACA,MAAM,EAAE,YAAA,GAAWC,2BAAAA,6BAAAA,CAA6B;EAC9C,WAAW,sBAAsB;EACjC,cAAc,EAAE,SAAS,QAAQ,YAAY,aAAa,mBAAmB,QAAQ;CACvF,CAAC;CAGD,MAAM,yBAAA,GAAwBD,MAAAA,QAAAA,OAAc;EAC1C,MAAM,uBAAO,IAAI,IAAY;EAC7B,KAAK,MAAM,SAAS,QAAQ;GAC1B,MAAM,MAAM,MAAM,KAAK,QAAQ,eAAe,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;GAC7D,IAAI,KAAK,KAAK,IAAI,GAAG;EACvB;EACA,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK;CACxB,GAAG,CAAC,MAAM,CAAC;CAEX,MAAM,sBAAsB,eAAe,YACvCE,0EAAAA,wBACA,eAAe,YACb,KAAA,IACAC,0EAAAA;CAEN,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,qDAAAA,kBAAD;EACE,aAAa;EACb,SAAS;EACc;EACF;EACrB,gBAAgB;EAChB,UAAU,eAAe;EACzB,iBAAgB,WAAU,SAASC,0CAAAA,kBAAkB,OAAO,MAAM,CAAC;EACnE,oBAAmB,WAAU,SAASC,0CAAAA,qBAAqB,OAAO,MAAM,CAAC;EACzE,uBAAsB,WAAU,SAASC,0CAAAA,wBAAwB,OAAO,MAAM,CAAC;EAC/E,sBAAqB,QAAO,SAASC,0CAAAA,uBAAuB,OAAO,GAAG,CAAC;EACvE,yBAAwB,QAAO,SAASC,0CAAAA,0BAA0B,OAAO,GAAG,CAAC;EAC7E,eAAe,SAAS,QAAQ,QAAQ;CACzC,CAAA;AAEL,CAAC;;;;;;AAOD,SAAgB,YAAY,EAAE,OAAO,GAAG,SAA2B;CACjE,IAAI,UAAU,WAAW,OAAO;CAChC,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAAC,mBAAD;EAA0B;EAAO,GAAI;CAAQ,CAAA;AACtD"}
1
+ {"version":3,"file":"columns-menu.cjs.js","names":["useTraceQueryAvailable","useSpanQueryAvailable","useThreadQueryAvailable","memo","TRACE_COLUMN_CATALOGS","useTraceQueryDiscoveryAvailable","useObservabilityCapabilities","useState","resolveTraceQueryTimeRange","useMemo","useTraceMetadataFilterFields","CHECKING_USAGE_REASON","UNSUPPORTED_USAGE_REASON","TraceColumnsMenu","toggleTraceColumn","addTraceCustomColumn","removeTraceCustomColumn","addTraceMetadataColumn","removeTraceMetadataColumn"],"sources":["../../../../../src/domains/traces/components/columns-menu/columns-menu.tsx"],"sourcesContent":["import { useTraceMetadataFilterFields } from '@mastra/react/hooks/traces';\nimport type { TraceQueryDiscoveryTimeRange } from '@mastra/react/hooks/traces';\nimport { memo, useMemo, useState } from 'react';\nimport {\n TRACE_COLUMN_CATALOGS,\n addTraceCustomColumn,\n addTraceMetadataColumn,\n removeTraceCustomColumn,\n removeTraceMetadataColumn,\n toggleTraceColumn,\n} from '../../trace-list-columns';\nimport type { TraceColumnPreferences, TraceColumnScope } from '../../trace-list-columns';\nimport { resolveTraceQueryTimeRange } from '../../trace-query-filters';\nimport { TraceColumnsMenu } from '../trace-columns-menu';\nimport { CHECKING_USAGE_REASON, UNSUPPORTED_USAGE_REASON } from '../traces-explorer/traces-explorer-context';\nimport type { TracesMetricsSupport } from '../traces-explorer/traces-explorer-context';\nimport {\n useObservabilityCapabilities,\n useSpanQueryAvailable,\n useTraceQueryAvailable,\n useThreadQueryAvailable,\n useTraceQueryDiscoveryAvailable,\n} from '@/domains/capabilities';\n\nexport type ColumnsMenuScope = TraceColumnScope;\n\nexport type ColumnsMenuProps = {\n /** Which list the columns belong to. Each scope offers only the columns its rows carry. */\n scope: ColumnsMenuScope;\n /** The active column selection. The host owns it (and its persistence). */\n value: TraceColumnPreferences;\n /** Receives the whole next selection on every change. */\n onChange: (next: TraceColumnPreferences) => void;\n /** Window metadata keys are discovered in. Pass the list's range to share the filter bar's cached discovery. Defaults to the last seven days. */\n discoveryTimeRange?: TraceQueryDiscoveryTimeRange;\n /** Whether the store reports token and cost metrics (traces only). Usage columns are unavailable when omitted. */\n metricsSupport?: TracesMetricsSupport;\n /** Host-level switch for the query API. When false, metadata columns can't be added. Defaults to true. */\n queryEnabled?: boolean;\n};\n\nconst UNSUPPORTED_METRICS: TracesMetricsSupport = { supported: false, isLoading: false };\n\nfunction useQueryAvailable(scope: TraceColumnScope) {\n const traceQuery = useTraceQueryAvailable();\n const spanQuery = useSpanQueryAvailable();\n const threadQuery = useThreadQueryAvailable();\n if (scope === 'spans') return spanQuery;\n if (scope === 'threads') return threadQuery;\n return traceQuery;\n}\n\n/**\n * The \"Columns\" picker for a trace-style list. Offers the scope's own column catalog, checks\n * the scope's query capability, and (for traces) discovers the metadata keys observed in the\n * time range on its own; the host only owns the selection.\n */\nexport const ColumnsMenu = memo(function ColumnsMenu({\n scope,\n value,\n onChange,\n discoveryTimeRange,\n metricsSupport = UNSUPPORTED_METRICS,\n queryEnabled = true,\n}: ColumnsMenuProps) {\n const catalog = TRACE_COLUMN_CATALOGS[scope];\n const queryAvailable = useQueryAvailable(scope);\n const discoveryAvailable = useTraceQueryDiscoveryAvailable();\n const { data: capabilities } = useObservabilityCapabilities();\n const [defaultTimeRange] = useState(() => resolveTraceQueryTimeRange(undefined, undefined, new Date()));\n\n const withQuery = queryAvailable.enabled && queryEnabled;\n const withTimeToFirstChunk = withQuery && (capabilities?.capabilities.traceQueryTimeToFirstChunk ?? false);\n const withTimeToFirstToken = withQuery && (capabilities?.capabilities.traceQueryTimeToFirstToken ?? false);\n const offeredCatalog = useMemo(() => {\n if (withTimeToFirstChunk && withTimeToFirstToken) return catalog;\n const standardColumns = catalog.standardColumns.filter(\n column =>\n (withTimeToFirstChunk || column !== 'timeToFirstChunk') &&\n (withTimeToFirstToken || column !== 'timeToFirstToken'),\n );\n return { ...catalog, standardColumns };\n }, [catalog, withTimeToFirstChunk, withTimeToFirstToken]);\n const { fields } = useTraceMetadataFilterFields({\n timeRange: discoveryTimeRange ?? defaultTimeRange,\n queryOptions: { enabled: catalog.metadata && withQuery && discoveryAvailable.enabled },\n });\n\n // Metadata columns read top-level keys only, so nested paths collapse to their first segment.\n const availableMetadataKeys = useMemo(() => {\n const keys = new Set<string>();\n for (const field of fields) {\n const key = field.path.replace(/^metadata\\./, '').split('.')[0];\n if (key) keys.add(key);\n }\n return [...keys].sort();\n }, [fields]);\n\n const usageDisabledReason = metricsSupport.isLoading\n ? CHECKING_USAGE_REASON\n : metricsSupport.supported\n ? undefined\n : UNSUPPORTED_USAGE_REASON;\n\n return (\n <TraceColumnsMenu\n preferences={value}\n catalog={offeredCatalog}\n availableMetadataKeys={availableMetadataKeys}\n usageDisabledReason={usageDisabledReason}\n withQueryTrace={withQuery}\n disabled={queryAvailable.isLoading}\n onToggleColumn={column => onChange(toggleTraceColumn(value, column))}\n onAddCustomColumn={column => onChange(addTraceCustomColumn(value, column))}\n onRemoveCustomColumn={column => onChange(removeTraceCustomColumn(value, column))}\n onAddMetadataColumn={key => onChange(addTraceMetadataColumn(value, key))}\n onRemoveMetadataColumn={key => onChange(removeTraceMetadataColumn(value, key))}\n onReset={() => onChange(catalog.defaults)}\n />\n );\n});\n"],"mappings":";;;;;;;;;;AAyCA,IAAM,sBAA4C;CAAE,WAAW;CAAO,WAAW;AAAM;AAEvF,SAAS,kBAAkB,OAAyB;CAClD,MAAM,cAAA,GAAaA,iCAAAA,uBAAAA,CAAuB;CAC1C,MAAM,aAAA,GAAYC,iCAAAA,sBAAAA,CAAsB;CACxC,MAAM,eAAA,GAAcC,iCAAAA,wBAAAA,CAAwB;CAC5C,IAAI,UAAU,SAAS,OAAO;CAC9B,IAAI,UAAU,WAAW,OAAO;CAChC,OAAO;AACT;;;;;;AAOA,IAAa,eAAA,GAAcC,MAAAA,KAAAA,CAAK,SAAS,YAAY,EACnD,OACA,OACA,UACA,oBACA,iBAAiB,qBACjB,eAAe,QACI;CACnB,MAAM,UAAUC,0CAAAA,sBAAsB;CACtC,MAAM,iBAAiB,kBAAkB,KAAK;CAC9C,MAAM,sBAAA,GAAqBC,iCAAAA,gCAAAA,CAAgC;CAC3D,MAAM,EAAE,MAAM,kBAAA,GAAiBC,iCAAAA,6BAAAA,CAA6B;CAC5D,MAAM,CAAC,qBAAA,GAAoBC,MAAAA,SAAAA,OAAeC,sBAAAA,2BAA2B,KAAA,GAAW,KAAA,mBAAW,IAAI,KAAK,CAAC,CAAC;CAEtG,MAAM,YAAY,eAAe,WAAW;CAC5C,MAAM,uBAAuB,cAAc,cAAc,aAAa,8BAA8B;CACpG,MAAM,uBAAuB,cAAc,cAAc,aAAa,8BAA8B;CACpG,MAAM,kBAAA,GAAiBC,MAAAA,QAAAA,OAAc;EACnC,IAAI,wBAAwB,sBAAsB,OAAO;EACzD,MAAM,kBAAkB,QAAQ,gBAAgB,QAC9C,YACG,wBAAwB,WAAW,wBACnC,wBAAwB,WAAW,mBACxC;EACA,OAAO;GAAE,GAAG;GAAS;EAAgB;CACvC,GAAG;EAAC;EAAS;EAAsB;CAAoB,CAAC;CACxD,MAAM,EAAE,YAAA,GAAWC,2BAAAA,6BAAAA,CAA6B;EAC9C,WAAW,sBAAsB;EACjC,cAAc,EAAE,SAAS,QAAQ,YAAY,aAAa,mBAAmB,QAAQ;CACvF,CAAC;CAGD,MAAM,yBAAA,GAAwBD,MAAAA,QAAAA,OAAc;EAC1C,MAAM,uBAAO,IAAI,IAAY;EAC7B,KAAK,MAAM,SAAS,QAAQ;GAC1B,MAAM,MAAM,MAAM,KAAK,QAAQ,eAAe,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;GAC7D,IAAI,KAAK,KAAK,IAAI,GAAG;EACvB;EACA,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK;CACxB,GAAG,CAAC,MAAM,CAAC;CAEX,MAAM,sBAAsB,eAAe,YACvCE,0EAAAA,wBACA,eAAe,YACb,KAAA,IACAC,0EAAAA;CAEN,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,qDAAAA,kBAAD;EACE,aAAa;EACb,SAAS;EACc;EACF;EACrB,gBAAgB;EAChB,UAAU,eAAe;EACzB,iBAAgB,WAAU,SAASC,0CAAAA,kBAAkB,OAAO,MAAM,CAAC;EACnE,oBAAmB,WAAU,SAASC,0CAAAA,qBAAqB,OAAO,MAAM,CAAC;EACzE,uBAAsB,WAAU,SAASC,0CAAAA,wBAAwB,OAAO,MAAM,CAAC;EAC/E,sBAAqB,QAAO,SAASC,0CAAAA,uBAAuB,OAAO,GAAG,CAAC;EACvE,yBAAwB,QAAO,SAASC,0CAAAA,0BAA0B,OAAO,GAAG,CAAC;EAC7E,eAAe,SAAS,QAAQ,QAAQ;CACzC,CAAA;AAEL,CAAC"}
@@ -1,5 +1,5 @@
1
- import { useObservabilityCapabilities, useSpanQueryAvailable, useTraceQueryAvailable, useTraceQueryDiscoveryAvailable } from "../../../capabilities.es.js";
2
- import { ct as resolveTraceQueryTimeRange } from "../../../../trace-filters-C27yWcan.js";
1
+ import { useObservabilityCapabilities, useSpanQueryAvailable, useThreadQueryAvailable, useTraceQueryAvailable, useTraceQueryDiscoveryAvailable } from "../../../capabilities.es.js";
2
+ import { ft as resolveTraceQueryTimeRange } from "../../../../trace-filters-BJaebsxJ.js";
3
3
  import { TRACE_COLUMN_CATALOGS, addTraceCustomColumn, addTraceMetadataColumn, removeTraceCustomColumn, removeTraceMetadataColumn, toggleTraceColumn } from "../../trace-list-columns.es.js";
4
4
  import { TraceColumnsMenu } from "../trace-columns-menu.es.js";
5
5
  import { CHECKING_USAGE_REASON, UNSUPPORTED_USAGE_REASON } from "../traces-explorer/traces-explorer-context.es.js";
@@ -14,9 +14,17 @@ var UNSUPPORTED_METRICS = {
14
14
  function useQueryAvailable(scope) {
15
15
  const traceQuery = useTraceQueryAvailable();
16
16
  const spanQuery = useSpanQueryAvailable();
17
- return scope === "spans" ? spanQuery : traceQuery;
17
+ const threadQuery = useThreadQueryAvailable();
18
+ if (scope === "spans") return spanQuery;
19
+ if (scope === "threads") return threadQuery;
20
+ return traceQuery;
18
21
  }
19
- var ScopedColumnsMenu = memo(function ScopedColumnsMenu({ scope, value, onChange, discoveryTimeRange, metricsSupport = UNSUPPORTED_METRICS, queryEnabled = true }) {
22
+ /**
23
+ * The "Columns" picker for a trace-style list. Offers the scope's own column catalog, checks
24
+ * the scope's query capability, and (for traces) discovers the metadata keys observed in the
25
+ * time range on its own; the host only owns the selection.
26
+ */
27
+ var ColumnsMenu = memo(function ColumnsMenu({ scope, value, onChange, discoveryTimeRange, metricsSupport = UNSUPPORTED_METRICS, queryEnabled = true }) {
20
28
  const catalog = TRACE_COLUMN_CATALOGS[scope];
21
29
  const queryAvailable = useQueryAvailable(scope);
22
30
  const discoveryAvailable = useTraceQueryDiscoveryAvailable();
@@ -24,10 +32,19 @@ var ScopedColumnsMenu = memo(function ScopedColumnsMenu({ scope, value, onChange
24
32
  const [defaultTimeRange] = useState(() => resolveTraceQueryTimeRange(void 0, void 0, /* @__PURE__ */ new Date()));
25
33
  const withQuery = queryAvailable.enabled && queryEnabled;
26
34
  const withTimeToFirstChunk = withQuery && (capabilities?.capabilities.traceQueryTimeToFirstChunk ?? false);
27
- const offeredCatalog = useMemo(() => withTimeToFirstChunk ? catalog : {
28
- ...catalog,
29
- standardColumns: catalog.standardColumns.filter((column) => column !== "timeToFirstChunk")
30
- }, [catalog, withTimeToFirstChunk]);
35
+ const withTimeToFirstToken = withQuery && (capabilities?.capabilities.traceQueryTimeToFirstToken ?? false);
36
+ const offeredCatalog = useMemo(() => {
37
+ if (withTimeToFirstChunk && withTimeToFirstToken) return catalog;
38
+ const standardColumns = catalog.standardColumns.filter((column) => (withTimeToFirstChunk || column !== "timeToFirstChunk") && (withTimeToFirstToken || column !== "timeToFirstToken"));
39
+ return {
40
+ ...catalog,
41
+ standardColumns
42
+ };
43
+ }, [
44
+ catalog,
45
+ withTimeToFirstChunk,
46
+ withTimeToFirstToken
47
+ ]);
31
48
  const { fields } = useTraceMetadataFilterFields({
32
49
  timeRange: discoveryTimeRange ?? defaultTimeRange,
33
50
  queryOptions: { enabled: catalog.metadata && withQuery && discoveryAvailable.enabled }
@@ -56,18 +73,6 @@ var ScopedColumnsMenu = memo(function ScopedColumnsMenu({ scope, value, onChange
56
73
  onReset: () => onChange(catalog.defaults)
57
74
  });
58
75
  });
59
- /**
60
- * The "Columns" picker for a trace-style list. Offers the scope's own column catalog, checks
61
- * the scope's query capability, and (for traces) discovers the metadata keys observed in the
62
- * time range on its own; the host only owns the selection.
63
- */
64
- function ColumnsMenu({ scope, ...props }) {
65
- if (scope === "threads") return null;
66
- return /* @__PURE__ */ jsx(ScopedColumnsMenu, {
67
- scope,
68
- ...props
69
- });
70
- }
71
76
  export { ColumnsMenu };
72
77
 
73
78
  //# sourceMappingURL=columns-menu.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"columns-menu.es.js","names":[],"sources":["../../../../../src/domains/traces/components/columns-menu/columns-menu.tsx"],"sourcesContent":["import { useTraceMetadataFilterFields } from '@mastra/react/hooks/traces';\nimport type { TraceQueryDiscoveryTimeRange } from '@mastra/react/hooks/traces';\nimport { memo, useMemo, useState } from 'react';\nimport {\n TRACE_COLUMN_CATALOGS,\n addTraceCustomColumn,\n addTraceMetadataColumn,\n removeTraceCustomColumn,\n removeTraceMetadataColumn,\n toggleTraceColumn,\n} from '../../trace-list-columns';\nimport type { TraceColumnPreferences, TraceColumnScope } from '../../trace-list-columns';\nimport { resolveTraceQueryTimeRange } from '../../trace-query-filters';\nimport { TraceColumnsMenu } from '../trace-columns-menu';\nimport { CHECKING_USAGE_REASON, UNSUPPORTED_USAGE_REASON } from '../traces-explorer/traces-explorer-context';\nimport type { TracesMetricsSupport } from '../traces-explorer/traces-explorer-context';\nimport {\n useObservabilityCapabilities,\n useSpanQueryAvailable,\n useTraceQueryAvailable,\n useTraceQueryDiscoveryAvailable,\n} from '@/domains/capabilities';\n\nexport type ColumnsMenuScope = TraceColumnScope | 'threads';\n\nexport type ColumnsMenuProps = {\n /** Which list the columns belong to. Each scope offers only the columns its rows carry; threads renders nothing. */\n scope: ColumnsMenuScope;\n /** The active column selection. The host owns it (and its persistence). */\n value: TraceColumnPreferences;\n /** Receives the whole next selection on every change. */\n onChange: (next: TraceColumnPreferences) => void;\n /** Window metadata keys are discovered in. Pass the list's range to share the filter bar's cached discovery. Defaults to the last seven days. */\n discoveryTimeRange?: TraceQueryDiscoveryTimeRange;\n /** Whether the store reports token and cost metrics (traces only). Usage columns are unavailable when omitted. */\n metricsSupport?: TracesMetricsSupport;\n /** Host-level switch for the query API. When false, metadata columns can't be added. Defaults to true. */\n queryEnabled?: boolean;\n};\n\ntype ScopedColumnsMenuProps = Omit<ColumnsMenuProps, 'scope'> & { scope: TraceColumnScope };\n\nconst UNSUPPORTED_METRICS: TracesMetricsSupport = { supported: false, isLoading: false };\n\nfunction useQueryAvailable(scope: TraceColumnScope) {\n const traceQuery = useTraceQueryAvailable();\n const spanQuery = useSpanQueryAvailable();\n return scope === 'spans' ? spanQuery : traceQuery;\n}\n\nconst ScopedColumnsMenu = memo(function ScopedColumnsMenu({\n scope,\n value,\n onChange,\n discoveryTimeRange,\n metricsSupport = UNSUPPORTED_METRICS,\n queryEnabled = true,\n}: ScopedColumnsMenuProps) {\n const catalog = TRACE_COLUMN_CATALOGS[scope];\n const queryAvailable = useQueryAvailable(scope);\n const discoveryAvailable = useTraceQueryDiscoveryAvailable();\n const { data: capabilities } = useObservabilityCapabilities();\n const [defaultTimeRange] = useState(() => resolveTraceQueryTimeRange(undefined, undefined, new Date()));\n\n const withQuery = queryAvailable.enabled && queryEnabled;\n const withTimeToFirstChunk = withQuery && (capabilities?.capabilities.traceQueryTimeToFirstChunk ?? false);\n const offeredCatalog = useMemo(\n () =>\n withTimeToFirstChunk\n ? catalog\n : { ...catalog, standardColumns: catalog.standardColumns.filter(column => column !== 'timeToFirstChunk') },\n [catalog, withTimeToFirstChunk],\n );\n const { fields } = useTraceMetadataFilterFields({\n timeRange: discoveryTimeRange ?? defaultTimeRange,\n queryOptions: { enabled: catalog.metadata && withQuery && discoveryAvailable.enabled },\n });\n\n // Metadata columns read top-level keys only, so nested paths collapse to their first segment.\n const availableMetadataKeys = useMemo(() => {\n const keys = new Set<string>();\n for (const field of fields) {\n const key = field.path.replace(/^metadata\\./, '').split('.')[0];\n if (key) keys.add(key);\n }\n return [...keys].sort();\n }, [fields]);\n\n const usageDisabledReason = metricsSupport.isLoading\n ? CHECKING_USAGE_REASON\n : metricsSupport.supported\n ? undefined\n : UNSUPPORTED_USAGE_REASON;\n\n return (\n <TraceColumnsMenu\n preferences={value}\n catalog={offeredCatalog}\n availableMetadataKeys={availableMetadataKeys}\n usageDisabledReason={usageDisabledReason}\n withQueryTrace={withQuery}\n disabled={queryAvailable.isLoading}\n onToggleColumn={column => onChange(toggleTraceColumn(value, column))}\n onAddCustomColumn={column => onChange(addTraceCustomColumn(value, column))}\n onRemoveCustomColumn={column => onChange(removeTraceCustomColumn(value, column))}\n onAddMetadataColumn={key => onChange(addTraceMetadataColumn(value, key))}\n onRemoveMetadataColumn={key => onChange(removeTraceMetadataColumn(value, key))}\n onReset={() => onChange(catalog.defaults)}\n />\n );\n});\n\n/**\n * The \"Columns\" picker for a trace-style list. Offers the scope's own column catalog, checks\n * the scope's query capability, and (for traces) discovers the metadata keys observed in the\n * time range on its own; the host only owns the selection.\n */\nexport function ColumnsMenu({ scope, ...props }: ColumnsMenuProps) {\n if (scope === 'threads') return null;\n return <ScopedColumnsMenu scope={scope} {...props} />;\n}\n"],"mappings":";;;;;;;;;AA0CA,IAAM,sBAA4C;CAAE,WAAW;CAAO,WAAW;AAAM;AAEvF,SAAS,kBAAkB,OAAyB;CAClD,MAAM,aAAa,uBAAuB;CAC1C,MAAM,YAAY,sBAAsB;CACxC,OAAO,UAAU,UAAU,YAAY;AACzC;AAEA,IAAM,oBAAoB,KAAK,SAAS,kBAAkB,EACxD,OACA,OACA,UACA,oBACA,iBAAiB,qBACjB,eAAe,QACU;CACzB,MAAM,UAAU,sBAAsB;CACtC,MAAM,iBAAiB,kBAAkB,KAAK;CAC9C,MAAM,qBAAqB,gCAAgC;CAC3D,MAAM,EAAE,MAAM,iBAAiB,6BAA6B;CAC5D,MAAM,CAAC,oBAAoB,eAAe,2BAA2B,KAAA,GAAW,KAAA,mBAAW,IAAI,KAAK,CAAC,CAAC;CAEtG,MAAM,YAAY,eAAe,WAAW;CAC5C,MAAM,uBAAuB,cAAc,cAAc,aAAa,8BAA8B;CACpG,MAAM,iBAAiB,cAEnB,uBACI,UACA;EAAE,GAAG;EAAS,iBAAiB,QAAQ,gBAAgB,QAAO,WAAU,WAAW,kBAAkB;CAAE,GAC7G,CAAC,SAAS,oBAAoB,CAChC;CACA,MAAM,EAAE,WAAW,6BAA6B;EAC9C,WAAW,sBAAsB;EACjC,cAAc,EAAE,SAAS,QAAQ,YAAY,aAAa,mBAAmB,QAAQ;CACvF,CAAC;CAGD,MAAM,wBAAwB,cAAc;EAC1C,MAAM,uBAAO,IAAI,IAAY;EAC7B,KAAK,MAAM,SAAS,QAAQ;GAC1B,MAAM,MAAM,MAAM,KAAK,QAAQ,eAAe,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;GAC7D,IAAI,KAAK,KAAK,IAAI,GAAG;EACvB;EACA,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK;CACxB,GAAG,CAAC,MAAM,CAAC;CAEX,MAAM,sBAAsB,eAAe,YACvC,wBACA,eAAe,YACb,KAAA,IACA;CAEN,OACE,oBAAC,kBAAD;EACE,aAAa;EACb,SAAS;EACc;EACF;EACrB,gBAAgB;EAChB,UAAU,eAAe;EACzB,iBAAgB,WAAU,SAAS,kBAAkB,OAAO,MAAM,CAAC;EACnE,oBAAmB,WAAU,SAAS,qBAAqB,OAAO,MAAM,CAAC;EACzE,uBAAsB,WAAU,SAAS,wBAAwB,OAAO,MAAM,CAAC;EAC/E,sBAAqB,QAAO,SAAS,uBAAuB,OAAO,GAAG,CAAC;EACvE,yBAAwB,QAAO,SAAS,0BAA0B,OAAO,GAAG,CAAC;EAC7E,eAAe,SAAS,QAAQ,QAAQ;CACzC,CAAA;AAEL,CAAC;;;;;;AAOD,SAAgB,YAAY,EAAE,OAAO,GAAG,SAA2B;CACjE,IAAI,UAAU,WAAW,OAAO;CAChC,OAAO,oBAAC,mBAAD;EAA0B;EAAO,GAAI;CAAQ,CAAA;AACtD"}
1
+ {"version":3,"file":"columns-menu.es.js","names":[],"sources":["../../../../../src/domains/traces/components/columns-menu/columns-menu.tsx"],"sourcesContent":["import { useTraceMetadataFilterFields } from '@mastra/react/hooks/traces';\nimport type { TraceQueryDiscoveryTimeRange } from '@mastra/react/hooks/traces';\nimport { memo, useMemo, useState } from 'react';\nimport {\n TRACE_COLUMN_CATALOGS,\n addTraceCustomColumn,\n addTraceMetadataColumn,\n removeTraceCustomColumn,\n removeTraceMetadataColumn,\n toggleTraceColumn,\n} from '../../trace-list-columns';\nimport type { TraceColumnPreferences, TraceColumnScope } from '../../trace-list-columns';\nimport { resolveTraceQueryTimeRange } from '../../trace-query-filters';\nimport { TraceColumnsMenu } from '../trace-columns-menu';\nimport { CHECKING_USAGE_REASON, UNSUPPORTED_USAGE_REASON } from '../traces-explorer/traces-explorer-context';\nimport type { TracesMetricsSupport } from '../traces-explorer/traces-explorer-context';\nimport {\n useObservabilityCapabilities,\n useSpanQueryAvailable,\n useTraceQueryAvailable,\n useThreadQueryAvailable,\n useTraceQueryDiscoveryAvailable,\n} from '@/domains/capabilities';\n\nexport type ColumnsMenuScope = TraceColumnScope;\n\nexport type ColumnsMenuProps = {\n /** Which list the columns belong to. Each scope offers only the columns its rows carry. */\n scope: ColumnsMenuScope;\n /** The active column selection. The host owns it (and its persistence). */\n value: TraceColumnPreferences;\n /** Receives the whole next selection on every change. */\n onChange: (next: TraceColumnPreferences) => void;\n /** Window metadata keys are discovered in. Pass the list's range to share the filter bar's cached discovery. Defaults to the last seven days. */\n discoveryTimeRange?: TraceQueryDiscoveryTimeRange;\n /** Whether the store reports token and cost metrics (traces only). Usage columns are unavailable when omitted. */\n metricsSupport?: TracesMetricsSupport;\n /** Host-level switch for the query API. When false, metadata columns can't be added. Defaults to true. */\n queryEnabled?: boolean;\n};\n\nconst UNSUPPORTED_METRICS: TracesMetricsSupport = { supported: false, isLoading: false };\n\nfunction useQueryAvailable(scope: TraceColumnScope) {\n const traceQuery = useTraceQueryAvailable();\n const spanQuery = useSpanQueryAvailable();\n const threadQuery = useThreadQueryAvailable();\n if (scope === 'spans') return spanQuery;\n if (scope === 'threads') return threadQuery;\n return traceQuery;\n}\n\n/**\n * The \"Columns\" picker for a trace-style list. Offers the scope's own column catalog, checks\n * the scope's query capability, and (for traces) discovers the metadata keys observed in the\n * time range on its own; the host only owns the selection.\n */\nexport const ColumnsMenu = memo(function ColumnsMenu({\n scope,\n value,\n onChange,\n discoveryTimeRange,\n metricsSupport = UNSUPPORTED_METRICS,\n queryEnabled = true,\n}: ColumnsMenuProps) {\n const catalog = TRACE_COLUMN_CATALOGS[scope];\n const queryAvailable = useQueryAvailable(scope);\n const discoveryAvailable = useTraceQueryDiscoveryAvailable();\n const { data: capabilities } = useObservabilityCapabilities();\n const [defaultTimeRange] = useState(() => resolveTraceQueryTimeRange(undefined, undefined, new Date()));\n\n const withQuery = queryAvailable.enabled && queryEnabled;\n const withTimeToFirstChunk = withQuery && (capabilities?.capabilities.traceQueryTimeToFirstChunk ?? false);\n const withTimeToFirstToken = withQuery && (capabilities?.capabilities.traceQueryTimeToFirstToken ?? false);\n const offeredCatalog = useMemo(() => {\n if (withTimeToFirstChunk && withTimeToFirstToken) return catalog;\n const standardColumns = catalog.standardColumns.filter(\n column =>\n (withTimeToFirstChunk || column !== 'timeToFirstChunk') &&\n (withTimeToFirstToken || column !== 'timeToFirstToken'),\n );\n return { ...catalog, standardColumns };\n }, [catalog, withTimeToFirstChunk, withTimeToFirstToken]);\n const { fields } = useTraceMetadataFilterFields({\n timeRange: discoveryTimeRange ?? defaultTimeRange,\n queryOptions: { enabled: catalog.metadata && withQuery && discoveryAvailable.enabled },\n });\n\n // Metadata columns read top-level keys only, so nested paths collapse to their first segment.\n const availableMetadataKeys = useMemo(() => {\n const keys = new Set<string>();\n for (const field of fields) {\n const key = field.path.replace(/^metadata\\./, '').split('.')[0];\n if (key) keys.add(key);\n }\n return [...keys].sort();\n }, [fields]);\n\n const usageDisabledReason = metricsSupport.isLoading\n ? CHECKING_USAGE_REASON\n : metricsSupport.supported\n ? undefined\n : UNSUPPORTED_USAGE_REASON;\n\n return (\n <TraceColumnsMenu\n preferences={value}\n catalog={offeredCatalog}\n availableMetadataKeys={availableMetadataKeys}\n usageDisabledReason={usageDisabledReason}\n withQueryTrace={withQuery}\n disabled={queryAvailable.isLoading}\n onToggleColumn={column => onChange(toggleTraceColumn(value, column))}\n onAddCustomColumn={column => onChange(addTraceCustomColumn(value, column))}\n onRemoveCustomColumn={column => onChange(removeTraceCustomColumn(value, column))}\n onAddMetadataColumn={key => onChange(addTraceMetadataColumn(value, key))}\n onRemoveMetadataColumn={key => onChange(removeTraceMetadataColumn(value, key))}\n onReset={() => onChange(catalog.defaults)}\n />\n );\n});\n"],"mappings":";;;;;;;;;AAyCA,IAAM,sBAA4C;CAAE,WAAW;CAAO,WAAW;AAAM;AAEvF,SAAS,kBAAkB,OAAyB;CAClD,MAAM,aAAa,uBAAuB;CAC1C,MAAM,YAAY,sBAAsB;CACxC,MAAM,cAAc,wBAAwB;CAC5C,IAAI,UAAU,SAAS,OAAO;CAC9B,IAAI,UAAU,WAAW,OAAO;CAChC,OAAO;AACT;;;;;;AAOA,IAAa,cAAc,KAAK,SAAS,YAAY,EACnD,OACA,OACA,UACA,oBACA,iBAAiB,qBACjB,eAAe,QACI;CACnB,MAAM,UAAU,sBAAsB;CACtC,MAAM,iBAAiB,kBAAkB,KAAK;CAC9C,MAAM,qBAAqB,gCAAgC;CAC3D,MAAM,EAAE,MAAM,iBAAiB,6BAA6B;CAC5D,MAAM,CAAC,oBAAoB,eAAe,2BAA2B,KAAA,GAAW,KAAA,mBAAW,IAAI,KAAK,CAAC,CAAC;CAEtG,MAAM,YAAY,eAAe,WAAW;CAC5C,MAAM,uBAAuB,cAAc,cAAc,aAAa,8BAA8B;CACpG,MAAM,uBAAuB,cAAc,cAAc,aAAa,8BAA8B;CACpG,MAAM,iBAAiB,cAAc;EACnC,IAAI,wBAAwB,sBAAsB,OAAO;EACzD,MAAM,kBAAkB,QAAQ,gBAAgB,QAC9C,YACG,wBAAwB,WAAW,wBACnC,wBAAwB,WAAW,mBACxC;EACA,OAAO;GAAE,GAAG;GAAS;EAAgB;CACvC,GAAG;EAAC;EAAS;EAAsB;CAAoB,CAAC;CACxD,MAAM,EAAE,WAAW,6BAA6B;EAC9C,WAAW,sBAAsB;EACjC,cAAc,EAAE,SAAS,QAAQ,YAAY,aAAa,mBAAmB,QAAQ;CACvF,CAAC;CAGD,MAAM,wBAAwB,cAAc;EAC1C,MAAM,uBAAO,IAAI,IAAY;EAC7B,KAAK,MAAM,SAAS,QAAQ;GAC1B,MAAM,MAAM,MAAM,KAAK,QAAQ,eAAe,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;GAC7D,IAAI,KAAK,KAAK,IAAI,GAAG;EACvB;EACA,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK;CACxB,GAAG,CAAC,MAAM,CAAC;CAEX,MAAM,sBAAsB,eAAe,YACvC,wBACA,eAAe,YACb,KAAA,IACA;CAEN,OACE,oBAAC,kBAAD;EACE,aAAa;EACb,SAAS;EACc;EACF;EACrB,gBAAgB;EAChB,UAAU,eAAe;EACzB,iBAAgB,WAAU,SAAS,kBAAkB,OAAO,MAAM,CAAC;EACnE,oBAAmB,WAAU,SAAS,qBAAqB,OAAO,MAAM,CAAC;EACzE,uBAAsB,WAAU,SAAS,wBAAwB,OAAO,MAAM,CAAC;EAC/E,sBAAqB,QAAO,SAAS,uBAAuB,OAAO,GAAG,CAAC;EACvE,yBAAwB,QAAO,SAAS,0BAA0B,OAAO,GAAG,CAAC;EAC7E,eAAe,SAAS,QAAQ,QAAQ;CACzC,CAAA;AAEL,CAAC"}
@@ -9,7 +9,7 @@ const require_components_AlertDialog = require("../../../components/AlertDialog.
9
9
  const require_domains_review_components_review_status_badge = require("../../review/components/review-status-badge.cjs.js");
10
10
  const require_domains_traces_utils_feedback_author = require("../utils/feedback-author.cjs.js");
11
11
  const require_Avatar = require("../../../Avatar-Iiqjad9K.cjs");
12
- const require_Comment = require("../../../Comment-CUQvfikb.cjs");
12
+ const require_Comment = require("../../../Comment-KYUQzeSu.cjs");
13
13
  let react = require("react");
14
14
  let react_jsx_runtime = require("react/jsx-runtime");
15
15
  let lucide_react = require("lucide-react");
@@ -8,7 +8,7 @@ import { AlertDialog } from "../../../components/AlertDialog.es.js";
8
8
  import { ReviewStatusBadge } from "../../review/components/review-status-badge.es.js";
9
9
  import { feedbackAuthorLabel } from "../utils/feedback-author.es.js";
10
10
  import { t as Avatar } from "../../../Avatar-Dj8aP7OI.js";
11
- import { c as CommentItem, d as CommentItemAvatar, f as CommentItemBody, g as CommentList, h as CommentItemTimestamp, l as CommentItemActions, m as CommentItemHeader, p as CommentItemContent, s as Comment, u as CommentItemAuthor } from "../../../Comment-CPA3IyPS.js";
11
+ import { c as CommentItem, d as CommentItemAvatar, f as CommentItemBody, g as CommentList, h as CommentItemTimestamp, l as CommentItemActions, m as CommentItemHeader, p as CommentItemContent, s as Comment, u as CommentItemAuthor } from "../../../Comment-VFJq2wRp.js";
12
12
  import { useState } from "react";
13
13
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
14
14
  import { ArrowUp, ChevronLeft, ChevronRight, ClipboardCheck, EllipsisIcon, Trash2 } from "lucide-react";
@@ -279,9 +279,11 @@ function OutputTab({ span, view, onViewChange }) {
279
279
  }
280
280
  /** Everything looked up rather than read, grouped the same way for every span type. */
281
281
  function DetailsTab({ traceId, span }) {
282
- const { model, provider, finishReason, firstToken, speed } = require_domains_traces_components_span_token_usage_utils.getModelFacts(span);
282
+ const { finishReason, firstToken, speed, ...facts } = require_domains_traces_components_span_token_usage_utils.getModelFacts(span);
283
+ const model = span.model || facts.model;
284
+ const provider = span.provider || facts.provider;
283
285
  const usage = span.attributes?.usage;
284
- const hasModel = Boolean(model || finishReason || firstToken || speed);
286
+ const hasModel = Boolean(model || provider || finishReason || firstToken || speed);
285
287
  const durationMs = require_domains_traces_utils_span_utils.getSpanDurationMs(span.startedAt, span.endedAt);
286
288
  const ids = [
287
289
  ["Span", span.spanId],
@@ -349,6 +351,14 @@ function DetailsTab({ traceId, span }) {
349
351
  durationMs != null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Row, {
350
352
  label: "Duration",
351
353
  children: require_utils_duration.formatDurationPrecise(durationMs)
354
+ }),
355
+ span.timeToFirstChunkMs != null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Row, {
356
+ label: "Time to first chunk",
357
+ children: require_utils_duration.formatDurationPrecise(span.timeToFirstChunkMs)
358
+ }),
359
+ span.timeToFirstTokenMs != null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Row, {
360
+ label: "Time to first token",
361
+ children: require_utils_duration.formatDurationPrecise(span.timeToFirstTokenMs)
352
362
  })
353
363
  ] })
354
364
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"span-data-panel-view.cjs.js","names":["useState","InfoIcon","FileInputIcon","FileOutputIcon","MessageSquareReplyIcon","useId","cn","DataPanel","Button","ExternalLinkIcon","_Fragment","Tabs","TabList","Tab","Icon","getSpanSignal","describeSpanInput","asCoreSpan","getSpanDurationMs","SpanTypeBadge","getSpanTypeUi","Tooltip","TooltipTrigger","Txt","getModelFacts","TooltipContent","formatDuration","formatDurationPrecise","Badge","getSpanTools","hasSpanInputPreview","SpanPayloadProcessor","SpanInputRenderer","SpanToolList","getSpanOutputPayload","isTokenLimitExceeded","Notice","getTokenLimitMessage","hasSpanOutputPreview","SpanOutputRenderer","DataKeysAndValues","ProviderLogo","getTokenUsageRows","SpanTokenUsage","formatTimestampPrecise","getPromptChanges","runsAfterModel","SpanPromptChanges","getSpanOutcome","CircleXIcon","SpanErrorDetails","describeProcessorPipeline","SpanOutcomeSummary","useSpanToolCalls","SpanToolCallList","CopyButton","SpanPayloadJson","EyeIcon","BracesIcon"],"sources":["../../../../src/domains/traces/components/span-data-panel-view.tsx"],"sourcesContent":["import { describeProcessorPipeline, describeSpanInput } from '@mastra/core/observability';\nimport type { UsageStats } from '@mastra/core/observability';\nimport {\n BracesIcon,\n CircleXIcon,\n ExternalLinkIcon,\n EyeIcon,\n FileInputIcon,\n FileOutputIcon,\n InfoIcon,\n MessageSquareReplyIcon,\n} from 'lucide-react';\nimport { useId, useState } from 'react';\nimport type { ReactNode } from 'react';\nimport type { SpanRecord, SpanTab } from '../types';\nimport { getSpanSignal } from '../utils/span-signal';\nimport { getSpanDurationMs, getTokenLimitMessage, isTokenLimitExceeded } from '../utils/span-utils';\nimport { getSpanTypeUi } from './shared';\nimport { SpanOutcomeSummary } from './span-outcome';\nimport { getSpanOutcome } from './span-outcome.utils';\nimport {\n SpanErrorDetails,\n SpanInputRenderer,\n SpanOutputRenderer,\n SpanPayloadJson,\n SpanPayloadProcessor,\n getSpanOutputPayload,\n hasSpanInputPreview,\n hasSpanOutputPreview,\n} from './span-payload';\nimport { asCoreSpan, getSpanTools } from './span-payload/span-payload-registry';\nimport { SpanToolCallList, SpanToolList } from './span-payload/span-tools-section';\nimport { useSpanToolCalls } from './span-payload/use-span-tool-calls';\nimport { SpanPromptChanges } from './span-prompt-changes';\nimport { getPromptChanges, runsAfterModel } from './span-prompt-impact';\nimport { SpanTokenUsage } from './span-token-usage';\nimport { getModelFacts, getTokenUsageRows } from './span-token-usage.utils';\nimport { SpanTypeBadge } from './span-type-badge';\nimport { ProviderLogo } from '@/domains/llm';\nimport { Badge } from '@/ds/components/Badge';\nimport { Button } from '@/ds/components/Button';\nimport { CopyButton } from '@/ds/components/CopyButton';\nimport { DataKeysAndValues } from '@/ds/components/DataKeysAndValues';\nimport { DataPanel } from '@/ds/components/DataPanel';\nimport { Notice } from '@/ds/components/Notice';\nimport { Tab, TabList, Tabs } from '@/ds/components/Tabs';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { cn } from '@/lib/utils';\nimport { formatTimestampPrecise } from '@/utils/date-format';\nimport { formatDuration, formatDurationPrecise } from '@/utils/duration';\n\n// Mirrors `DataPanel.Content` without requiring the Drawer root (this view also renders standalone).\n// Sections bleed their hairlines through this padding, so the two must match.\nconst BODY_CLASS = 'min-h-0 flex-1 overflow-y-auto p-3';\n\ntype PayloadView = 'rich' | 'raw';\n\nexport interface SpanDataPanelViewProps {\n traceId: string;\n spanId: string;\n /** Full span record. Caller fetches via useSpanDetail. */\n span: SpanRecord | undefined;\n isLoading?: boolean;\n /** Previous/next buttons show only when one is provided; omit both where a span tree already navigates. */\n onPrevious?: () => void;\n onNext?: () => void;\n /** When provided, an × button in the header closes the span column. */\n onClose?: () => void;\n /**\n * When provided, a \"Go to trace\" button in the header calls it with the span's ids.\n * The caller decides where the trace opens (e.g. its own traces route).\n */\n onShowTrace?: (span: { traceId: string; spanId: string }) => void;\n /** Controls the open tab; the panel keeps its own when omitted. Defaults to Details. */\n activeTab?: SpanTab;\n onTabChange?: (tab: SpanTab) => void;\n /**\n * When provided, a \"Feedback\" tab appears; the slot receives the loaded span and renders\n * whatever feedback UI the consumer wants.\n */\n feedbackTabSlot?: (args: { span: SpanRecord; traceId: string; spanId: string }) => ReactNode;\n /** Optional indicator rendered after the \"Feedback\" tab label (e.g. a needs-review dot). */\n feedbackTabBadge?: ReactNode;\n /** Extra classes for the panel root (e.g. flattening the card when nested in the trace panel). */\n className?: string;\n}\n\n/**\n * The same rows for every span type: what ran and how long it took, then the tabs. The body is flat:\n * the tab says what it holds, so the payload isn't wrapped in a titled card again. The open tab and the\n * Preview/JSON choice are kept when another span is selected, so stepping through spans compares like for like.\n */\nexport function SpanDataPanelView({\n traceId,\n spanId,\n span,\n isLoading,\n onPrevious,\n onNext,\n onClose,\n onShowTrace,\n activeTab,\n onTabChange,\n feedbackTabSlot,\n feedbackTabBadge,\n className,\n}: SpanDataPanelViewProps) {\n const [ownTab, setOwnTab] = useState<SpanTab>('details');\n const [view, setView] = useState<PayloadView>('rich');\n\n const requested = activeTab ?? ownTab;\n // A feedback tab asked for by the URL means nothing where the consumer offers no feedback.\n const tab = requested === 'feedback' && !feedbackTabSlot ? 'details' : requested;\n const changeTab = (next: SpanTab) => {\n setOwnTab(next);\n onTabChange?.(next);\n };\n\n const tabs: Array<{ value: SpanTab; name: string; icon: ReactNode; attention?: boolean; badge?: ReactNode }> = [\n { value: 'details', name: 'Details', icon: <InfoIcon /> },\n { value: 'input', name: 'Input', icon: <FileInputIcon /> },\n { value: 'output', name: 'Output', icon: <FileOutputIcon />, attention: span?.error != null },\n ...(feedbackTabSlot\n ? [{ value: 'feedback' as const, name: 'Feedback', icon: <MessageSquareReplyIcon />, badge: feedbackTabBadge }]\n : []),\n ];\n\n const headingId = useId();\n\n // Not a DataPanel: this is the span column rendered inside `TraceDataPanelView`,\n // which already provides the panel chrome.\n return (\n <section\n aria-labelledby={headingId}\n data-slot=\"span-data-panel\"\n className={cn('flex min-h-0 flex-1 flex-col overflow-hidden', className)}\n >\n <DataPanel.Header className=\"flex-nowrap\">\n {span ? (\n <SpanIdentity span={span} headingId={headingId} />\n ) : (\n <DataPanel.HeaderContent>\n <DataPanel.Heading>\n <span id={headingId}>Span</span>\n </DataPanel.Heading>\n </DataPanel.HeaderContent>\n )}\n <DataPanel.HeaderActions>\n {onShowTrace && (\n <Button\n size=\"icon-sm\"\n variant=\"ghost\"\n aria-label=\"Go to trace\"\n tooltip=\"Go to trace\"\n className=\"shrink-0\"\n onClick={() => onShowTrace({ traceId, spanId })}\n >\n <ExternalLinkIcon />\n </Button>\n )}\n {(onPrevious || onNext) && (\n <DataPanel.NextPrevNav\n onPrevious={onPrevious}\n onNext={onNext}\n previousLabel=\"Go to previous span\"\n nextLabel=\"Go to next span\"\n />\n )}\n {onClose && <DataPanel.CloseButton icon=\"x\" onClick={onClose} label=\"Close span\" tooltip=\"Close span\" />}\n </DataPanel.HeaderActions>\n </DataPanel.Header>\n\n {isLoading ? (\n <DataPanel.LoadingData>Loading span details...</DataPanel.LoadingData>\n ) : !span ? (\n <DataPanel.NoData>Span not found.</DataPanel.NoData>\n ) : (\n <>\n <Tabs<SpanTab> defaultTab=\"details\" value={tab} onValueChange={changeTab}>\n <DataPanel.Header className=\"flex-nowrap border-b border-surface-rim\">\n <div className=\"min-w-0 flex-1\">\n <TabList variant=\"pill-ghost\" size=\"sm\">\n {tabs.map(item => (\n <Tab key={item.value} value={item.value} attention={item.attention}>\n <Icon size=\"xs\">{item.icon}</Icon>\n <span>{item.name}</span>\n {item.badge != null && <> ({item.badge})</>}\n </Tab>\n ))}\n </TabList>\n </div>\n </DataPanel.Header>\n </Tabs>\n\n <div role=\"tabpanel\" aria-label={tabs.find(item => item.value === tab)?.name} className={BODY_CLASS}>\n {tab === 'details' && <DetailsTab traceId={traceId} span={span} />}\n {tab === 'input' && <InputTab span={span} view={view} onViewChange={setView} />}\n {tab === 'output' && <OutputTab span={span} view={view} onViewChange={setView} />}\n {tab === 'feedback' && feedbackTabSlot?.({ span, traceId, spanId })}\n </div>\n </>\n )}\n </section>\n );\n}\n\n/* ------------------------------------------------------------------------------------------------\n * Header\n * ---------------------------------------------------------------------------------------------- */\n\nfunction getProcessorInput(span: SpanRecord) {\n if (getSpanSignal(span)) return undefined;\n const input = describeSpanInput(asCoreSpan(span));\n return input?.type === 'processor' ? input.value : undefined;\n}\n\n/** How many times a processor re-ran this step. Zero, the normal case, is not worth showing. */\nfunction getRetryCount(span: SpanRecord) {\n const data: Record<string, unknown> = getProcessorInput(span)?.data ?? {};\n const retryCount = data.retryCount;\n return typeof retryCount === 'number' && retryCount > 0 ? retryCount : 0;\n}\n\n/**\n * What ran and how long it took, on one row. Only the unusual is called out: a failure, a span still\n * running, or a processor that had to retry. A normal success says nothing extra.\n */\nfunction SpanIdentity({ span, headingId }: { span: SpanRecord; headingId: string }) {\n const durationMs = getSpanDurationMs(span.startedAt, span.endedAt);\n const retries = getRetryCount(span);\n\n return (\n <div className=\"flex min-w-0 flex-1 items-center gap-2 pl-1\">\n {/* Same type mark as the span's row in the trace tree, processors included. */}\n <SpanTypeBadge type={span.spanType ?? ''} spanUI={getSpanTypeUi(span.spanType ?? '')} />\n <Tooltip>\n <TooltipTrigger\n render={\n <Txt id={headingId} as=\"h2\" variant=\"card-title-strong\" className=\"min-w-0 truncate\">\n {getModelFacts(span).model ?? span.entityName ?? span.name}\n </Txt>\n }\n />\n <TooltipContent>{span.name}</TooltipContent>\n </Tooltip>\n <Tooltip>\n <TooltipTrigger\n render={\n <Txt as=\"span\" variant=\"body-sm\" tone=\"muted\" className=\"shrink-0 cursor-help tabular-nums\" tabIndex={0}>\n {durationMs == null ? 'Running' : formatDuration(durationMs)}\n </Txt>\n }\n />\n <TooltipContent>\n {durationMs == null ? 'Still running' : `Duration ${formatDurationPrecise(durationMs)}`}\n </TooltipContent>\n </Tooltip>\n {span.error != null && (\n <Badge size=\"xs\" variant=\"destructive\" className=\"shrink-0\">\n Failed\n </Badge>\n )}\n {retries > 0 && (\n <Badge size=\"xs\" variant=\"warning\" className=\"shrink-0 tabular-nums\">\n {retries === 1 ? 'Retried once' : `Retried ${retries}×`}\n </Badge>\n )}\n </div>\n );\n}\n\n/* ------------------------------------------------------------------------------------------------\n * Tab bodies\n * ---------------------------------------------------------------------------------------------- */\n\ntype PayloadTabProps = { span: SpanRecord; view: PayloadView; onViewChange: (view: PayloadView) => void };\n\n/**\n * Processor input keys the preview leaves out: tools have their own section, retries are a header badge,\n * and the step number repeats the `step › N` parent the span sits under in the tree.\n */\nconst PROCESSOR_INPUT_HIDDEN = ['tools', 'toolChoice', 'retryCount', 'stepNumber'];\n\nfunction InputTab({ span, view, onViewChange }: PayloadTabProps) {\n const tools = getSpanTools(span);\n const processorInput = getProcessorInput(span);\n return (\n <Stack>\n <Payload\n label=\"Input\"\n raw={span.input}\n hasPreview={hasSpanInputPreview(span, PROCESSOR_INPUT_HIDDEN)}\n view={view}\n onViewChange={onViewChange}\n empty=\"No input recorded.\"\n >\n {processorInput ? (\n <SpanPayloadProcessor value={processorInput} hidden={PROCESSOR_INPUT_HIDDEN} />\n ) : (\n <SpanInputRenderer span={span} />\n )}\n </Payload>\n {tools && (\n <Section title=\"Available tools\" count={tools.tools.length}>\n <SpanToolList tools={tools.tools} />\n </Section>\n )}\n </Stack>\n );\n}\n\nfunction OutputTab({ span, view, onViewChange }: PayloadTabProps) {\n const output = getSpanOutputPayload(span);\n return (\n <Stack>\n <SpanProblem span={span} />\n {isTokenLimitExceeded(span) && (\n <Notice variant=\"warning\" title=\"Token Limit Exceeded\">\n <Notice.Message>{getTokenLimitMessage(span)}</Notice.Message>\n </Notice>\n )}\n {(output != null || span.error == null) && (\n <Payload\n label=\"Output\"\n raw={output}\n hasPreview={hasSpanOutputPreview(span)}\n view={view}\n onViewChange={onViewChange}\n empty=\"No output recorded.\"\n >\n <SpanOutputRenderer span={span} />\n </Payload>\n )}\n <ToolCalls span={span} />\n </Stack>\n );\n}\n\n/** Everything looked up rather than read, grouped the same way for every span type. */\nfunction DetailsTab({ traceId, span }: { traceId: string; span: SpanRecord }) {\n const { model, provider, finishReason, firstToken, speed } = getModelFacts(span);\n // oxlint-disable-next-line typescript/no-unnecessary-type-assertion -- Built SDK declarations type attributes.usage as unknown.\n const usage = span.attributes?.usage as UsageStats | undefined;\n const hasModel = Boolean(model || finishReason || firstToken || speed);\n const durationMs = getSpanDurationMs(span.startedAt, span.endedAt);\n const ids: Array<[string, string | null | undefined]> = [\n ['Span', span.spanId],\n ['Trace', traceId],\n ['Parent span', span.parentSpanId],\n ['Run', span.runId],\n ['Session', span.sessionId],\n ['Thread', span.threadId],\n ['Request', span.requestId],\n ['User', span.userId],\n ['Organization', span.organizationId],\n ['Experiment', span.experimentId],\n ];\n\n return (\n <Stack>\n <PromptSection span={span} />\n\n {hasModel && (\n <Section title=\"Model\">\n <DataKeysAndValues>\n {model && (\n <Row label=\"Model\">\n <span className=\"inline-flex min-w-0 items-center gap-1.5\">\n {provider && <ProviderLogo providerId={provider} size=\"xs\" />}\n <span className=\"truncate\">{model}</span>\n </span>\n </Row>\n )}\n {provider && <Row label=\"Provider\">{provider}</Row>}\n {finishReason && <Row label=\"Finish reason\">{finishReason}</Row>}\n {firstToken && <Row label=\"First token\">{firstToken}</Row>}\n {speed && <Row label=\"Speed\">{speed}</Row>}\n </DataKeysAndValues>\n </Section>\n )}\n\n {usage && getTokenUsageRows(usage) && (\n <Section title=\"Token usage\">\n <SpanTokenUsage usage={usage} />\n </Section>\n )}\n\n <Section title=\"Timing\">\n <DataKeysAndValues>\n <Row label=\"Started\">{formatTimestampPrecise(span.startedAt)}</Row>\n {span.endedAt && <Row label=\"Ended\">{formatTimestampPrecise(span.endedAt)}</Row>}\n {durationMs != null && <Row label=\"Duration\">{formatDurationPrecise(durationMs)}</Row>}\n </DataKeysAndValues>\n </Section>\n\n <Section title=\"Identifiers\">\n <DataKeysAndValues>\n {ids.map(([label, value]) => (value ? <IdRow key={label} label={label} value={value} /> : null))}\n {span.tags && span.tags.length > 0 && (\n <Row label=\"Tags\">\n <span className=\"flex flex-wrap gap-1\">\n {span.tags.map(tag => (\n <Badge key={tag} size=\"xs\" variant=\"neutral\" emphasis=\"subtle\">\n {tag}\n </Badge>\n ))}\n </span>\n </Row>\n )}\n </DataKeysAndValues>\n </Section>\n\n <JsonSection title=\"Metadata\" value={span.metadata} />\n <JsonSection title=\"Attributes\" value={span.attributes} />\n </Stack>\n );\n}\n\n/**\n * What this span changed in the request, from its own recorded changes, as diff cards. Changes made\n * after the model answered get a short note: they can't have shaped this request. Nothing is shown\n * when the span changed nothing.\n */\nfunction PromptSection({ span }: { span: SpanRecord }) {\n if (getPromptChanges(span).length === 0) return null;\n\n return (\n <Section title=\"Prompt\">\n {runsAfterModel(span) && (\n <Txt as=\"p\" variant=\"body-sm\" tone=\"muted\">\n Ran after the model answered: its changes are kept for later turns and could not shape this request.\n </Txt>\n )}\n <SpanPromptChanges span={span} />\n </Section>\n );\n}\n\n/** Why the span failed or stopped, above whatever output it still produced. */\nfunction SpanProblem({ span }: { span: SpanRecord }) {\n const outcome = getSpanOutcome(span);\n if (outcome?.tone !== 'error' && outcome?.tone !== 'warning') return null;\n if (span.error != null) {\n return (\n <Notice variant=\"destructive\" icon={<CircleXIcon />} title={<h3>{outcome.headline}</h3>}>\n <SpanErrorDetails span={span} />\n </Notice>\n );\n }\n // A tripwire leaves no error: its reason is the only account of why the run stopped.\n const tripwire = describeProcessorPipeline(asCoreSpan(span))?.tripwireAbort;\n if (!tripwire) return <SpanOutcomeSummary outcome={outcome} showDetail />;\n return (\n <Notice variant=\"destructive\" icon={<CircleXIcon />} title={<h3>{outcome.headline}</h3>}>\n {tripwire.reason && <p className=\"break-words whitespace-pre-wrap\">{tripwire.reason}</p>}\n {tripwire.retry !== undefined && (\n <Txt as=\"p\" variant=\"body-sm\" tone=\"muted\">\n {tripwire.retry ? 'The model was asked to retry.' : 'Not retried.'}\n </Txt>\n )}\n </Notice>\n );\n}\n\nfunction ToolCalls({ span }: { span: SpanRecord }) {\n const toolCalls = useSpanToolCalls(span);\n if (toolCalls.length === 0) return null;\n return (\n <Section title=\"Tool calls\" count={toolCalls.length}>\n <SpanToolCallList toolCalls={toolCalls} />\n </Section>\n );\n}\n\n/* ------------------------------------------------------------------------------------------------\n * Building blocks\n * ---------------------------------------------------------------------------------------------- */\n\nfunction Stack({ children }: { children: ReactNode }) {\n return <div className=\"grid min-w-0 content-start gap-4\">{children}</div>;\n}\n\n/**\n * A hairline and a small heading between groups, instead of a titled card around each one.\n * The hairline runs edge to edge: it bleeds through the body padding.\n */\nfunction Section({\n title,\n label = title,\n count,\n children,\n}: {\n title?: string;\n /** Names the region for assistive tech when the heading is rendered by the children. */\n label?: string;\n count?: number;\n children: ReactNode;\n}) {\n return (\n <section\n aria-label={label}\n className=\"-mx-3 grid min-w-0 gap-3 border-t border-surface-rim px-3 pt-4 first:border-t-0 first:pt-0\"\n >\n {title && (\n <DataPanel.SectionHeading>\n {title}\n {count != null && <span className=\"tabular-nums\"> · {count}</span>}\n </DataPanel.SectionHeading>\n )}\n {children}\n </section>\n );\n}\n\n/**\n * Stored JSON that is rarely why someone opened the span. The heading always shows; the block opens\n * folded on its root, and unfolding it shows the top-level keys with their values still folded, so it\n * collapses through the code block's own fold markers instead of a second disclosure around it.\n */\nfunction JsonSection({ title, value }: { title: string; value: unknown }) {\n if (value == null || (typeof value === 'object' && Object.keys(value).length === 0)) return null;\n return (\n <Section label={title}>\n <div className=\"flex min-w-0 items-center justify-between gap-2\">\n <DataPanel.SectionHeading>{title}</DataPanel.SectionHeading>\n <CopyButton\n content={JSON.stringify(value, null, 2)}\n copyMessage={`${title} copied`}\n tooltip={`Copy ${title.toLowerCase()} as JSON`}\n variant=\"ghost\"\n />\n </div>\n <SpanPayloadJson value={value} foldRoot foldNested />\n </Section>\n );\n}\n\n/**\n * The payload, unframed. Its Preview/JSON switch and copy sit on a small toolbar inside the tab,\n * right above what they act on, so the tab bar stays the same for every tab.\n */\nfunction Payload({\n label,\n raw,\n hasPreview,\n view,\n onViewChange,\n empty,\n children,\n}: {\n label: string;\n raw: unknown;\n hasPreview: boolean;\n view: PayloadView;\n onViewChange: (view: PayloadView) => void;\n empty: string;\n children: ReactNode;\n}) {\n if (raw == null) {\n return (\n <Txt variant=\"body-sm\" tone=\"muted\">\n {empty}\n </Txt>\n );\n }\n const shown = hasPreview ? view : 'raw';\n return (\n <div role=\"group\" aria-label={label} data-view={shown} className=\"grid min-w-0 gap-3\">\n <div className=\"flex items-center justify-end gap-1\">\n {hasPreview && (\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-pressed={view === 'raw'}\n tooltip={view === 'raw' ? `Show ${label.toLowerCase()} preview` : `Show ${label.toLowerCase()} as JSON`}\n onClick={() => onViewChange(view === 'raw' ? 'rich' : 'raw')}\n >\n {view === 'raw' ? <EyeIcon /> : <BracesIcon />}\n </Button>\n )}\n <CopyButton\n content={JSON.stringify(raw, null, 2)}\n copyMessage={`${label} copied`}\n tooltip={`Copy ${label.toLowerCase()} as JSON`}\n variant=\"ghost\"\n />\n </div>\n <div className=\"min-w-0 [&_[data-slot=message]]:my-0\">\n {shown === 'rich' ? children : <SpanPayloadJson value={raw} foldNested />}\n </div>\n </div>\n );\n}\n\nfunction Row({ label, children }: { label: string; children: ReactNode }) {\n return (\n <>\n <DataKeysAndValues.Key>{label}</DataKeysAndValues.Key>\n <DataKeysAndValues.Value>{children}</DataKeysAndValues.Value>\n </>\n );\n}\n\nfunction IdRow({ label, value }: { label: string; value: string }) {\n return (\n <>\n <DataKeysAndValues.Key>{label}</DataKeysAndValues.Key>\n <DataKeysAndValues.ValueWithCopyBtn copyTooltip={`Copy ${label} id`} copyValue={value}>\n {value}\n </DataKeysAndValues.ValueWithCopyBtn>\n </>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuDA,IAAM,aAAa;;;;;;AAuCnB,SAAgB,kBAAkB,EAChC,SACA,QACA,MACA,WACA,YACA,QACA,SACA,aACA,WACA,aACA,iBACA,kBACA,aACyB;CACzB,MAAM,CAAC,QAAQ,cAAA,GAAaA,MAAAA,SAAAA,CAAkB,SAAS;CACvD,MAAM,CAAC,MAAM,YAAA,GAAWA,MAAAA,SAAAA,CAAsB,MAAM;CAEpD,MAAM,YAAY,aAAa;CAE/B,MAAM,MAAM,cAAc,cAAc,CAAC,kBAAkB,YAAY;CACvE,MAAM,aAAa,SAAkB;EACnC,UAAU,IAAI;EACd,cAAc,IAAI;CACpB;CAEA,MAAM,OAAyG;EAC7G;GAAE,OAAO;GAAW,MAAM;GAAW,MAAM,iBAAA,GAAA,kBAAA,IAAA,CAACC,aAAAA,UAAD,CAAW,CAAA;EAAE;EACxD;GAAE,OAAO;GAAS,MAAM;GAAS,MAAM,iBAAA,GAAA,kBAAA,IAAA,CAACC,aAAAA,eAAD,CAAgB,CAAA;EAAE;EACzD;GAAE,OAAO;GAAU,MAAM;GAAU,MAAM,iBAAA,GAAA,kBAAA,IAAA,CAACC,aAAAA,gBAAD,CAAiB,CAAA;GAAG,WAAW,MAAM,SAAS;EAAK;EAC5F,GAAI,kBACA,CAAC;GAAE,OAAO;GAAqB,MAAM;GAAY,MAAM,iBAAA,GAAA,kBAAA,IAAA,CAACC,aAAAA,wBAAD,CAAyB,CAAA;GAAG,OAAO;EAAiB,CAAC,IAC5G,CAAC;CACP;CAEA,MAAM,aAAA,GAAYC,MAAAA,MAAAA,CAAM;CAIxB,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,WAAD;EACE,mBAAiB;EACjB,aAAU;EACV,WAAWC,cAAAA,GAAG,gDAAgD,SAAS;EAHzE,UAAA,CAKE,iBAAA,GAAA,kBAAA,KAAA,CAACC,kBAAAA,UAAU,QAAX;GAAkB,WAAU;GAA5B,UAAA,CACG,OACC,iBAAA,GAAA,kBAAA,IAAA,CAAC,cAAD;IAAoB;IAAiB;GAAY,CAAA,IAEjD,iBAAA,GAAA,kBAAA,IAAA,CAACA,kBAAAA,UAAU,eAAX,EAAA,UACE,iBAAA,GAAA,kBAAA,IAAA,CAACA,kBAAAA,UAAU,SAAX,EAAA,UACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;IAAM,IAAI;IAAW,UAAA;GAAU,CAAA,EACd,CAAA,EACI,CAAA,GAE3B,iBAAA,GAAA,kBAAA,KAAA,CAACA,kBAAAA,UAAU,eAAX,EAAA,UAAA;IACG,eACC,iBAAA,GAAA,kBAAA,IAAA,CAACC,eAAAA,QAAD;KACE,MAAK;KACL,SAAQ;KACR,cAAW;KACX,SAAQ;KACR,WAAU;KACV,eAAe,YAAY;MAAE;MAAS;KAAO,CAAC;KAE9C,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,aAAAA,kBAAD,CAAmB,CAAA;IACb,CAAA;KAER,cAAc,WACd,iBAAA,GAAA,kBAAA,IAAA,CAACF,kBAAAA,UAAU,aAAX;KACc;KACJ;KACR,eAAc;KACd,WAAU;IACX,CAAA;IAEF,WAAW,iBAAA,GAAA,kBAAA,IAAA,CAACA,kBAAAA,UAAU,aAAX;KAAuB,MAAK;KAAI,SAAS;KAAS,OAAM;KAAa,SAAQ;IAAc,CAAA;GAChF,EAAA,CAAA,CACT;EAEjB,CAAA,GAAA,YACC,iBAAA,GAAA,kBAAA,IAAA,CAACA,kBAAAA,UAAU,aAAX,EAAA,UAAuB,0BAA8C,CAAA,IACnE,CAAC,OACH,iBAAA,GAAA,kBAAA,IAAA,CAACA,kBAAAA,UAAU,QAAX,EAAA,UAAkB,kBAAiC,CAAA,IAEnD,iBAAA,GAAA,kBAAA,KAAA,CAAAG,kBAAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,iBAAAA,MAAD;GAAe,YAAW;GAAU,OAAO;GAAK,eAAe;GAC7D,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACJ,kBAAAA,UAAU,QAAX;IAAkB,WAAU;IAC1B,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;KAAK,WAAU;KACb,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACK,iBAAAA,SAAD;MAAS,SAAQ;MAAa,MAAK;MAChC,UAAA,KAAK,KAAI,SACR,iBAAA,GAAA,kBAAA,KAAA,CAACC,iBAAAA,KAAD;OAAsB,OAAO,KAAK;OAAO,WAAW,KAAK;OAAzD,UAAA;QACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,mBAAAA,MAAD;SAAM,MAAK;SAAM,UAAA,KAAK;QAAW,CAAA;QACjC,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD,EAAA,UAAO,KAAK,KAAW,CAAA;QACtB,KAAK,SAAS,QAAQ,iBAAA,GAAA,kBAAA,KAAA,CAAAJ,kBAAAA,UAAA,EAAA,UAAA;SAAE;SAAG,KAAK;SAAM;QAAG,EAAA,CAAA;OACvC;MAJK,GAAA,KAAK,KAIV,CACN;KACM,CAAA;IACN,CAAA;GACW,CAAA;EACd,CAAA,GAEN,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;GAAK,MAAK;GAAW,cAAY,KAAK,MAAK,SAAQ,KAAK,UAAU,GAAG,CAAC,EAAE;GAAM,WAAW;GAAzF,UAAA;IACG,QAAQ,aAAa,iBAAA,GAAA,kBAAA,IAAA,CAAC,YAAD;KAAqB;KAAe;IAAO,CAAA;IAChE,QAAQ,WAAW,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;KAAgB;KAAY;KAAM,cAAc;IAAU,CAAA;IAC7E,QAAQ,YAAY,iBAAA,GAAA,kBAAA,IAAA,CAAC,WAAD;KAAiB;KAAY;KAAM,cAAc;IAAU,CAAA;IAC/E,QAAQ,cAAc,kBAAkB;KAAE;KAAM;KAAS;IAAO,CAAC;GAC/D;EACL,CAAA,CAAA,EAAA,CAAA,CAEG;;AAEb;AAMA,SAAS,kBAAkB,MAAkB;CAC3C,IAAIK,yCAAAA,cAAc,IAAI,GAAG,OAAO,KAAA;CAChC,MAAM,SAAA,GAAQC,2BAAAA,kBAAAA,CAAkBC,qEAAAA,WAAW,IAAI,CAAC;CAChD,OAAO,OAAO,SAAS,cAAc,MAAM,QAAQ,KAAA;AACrD;;AAGA,SAAS,cAAc,MAAkB;CAEvC,MAAM,cADgC,kBAAkB,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAA,CAChD;CACxB,OAAO,OAAO,eAAe,YAAY,aAAa,IAAI,aAAa;AACzE;;;;;AAMA,SAAS,aAAa,EAAE,MAAM,aAAsD;CAClF,MAAM,aAAaC,wCAAAA,kBAAkB,KAAK,WAAW,KAAK,OAAO;CACjE,MAAM,UAAU,cAAc,IAAI;CAElC,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;EAAK,WAAU;EAAf,UAAA;GAEE,iBAAA,GAAA,kBAAA,IAAA,CAACC,kDAAAA,eAAD;IAAe,MAAM,KAAK,YAAY;IAAI,QAAQC,yCAAAA,cAAc,KAAK,YAAY,EAAE;GAAI,CAAA;GACvF,iBAAA,GAAA,kBAAA,KAAA,CAACC,gBAAAA,SAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,gBAAAA,gBAAD,EACE,QACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,YAAAA,KAAD;IAAK,IAAI;IAAW,IAAG;IAAK,SAAQ;IAAoB,WAAU;IAC/D,UAAAC,yDAAAA,cAAc,IAAI,CAAC,CAAC,SAAS,KAAK,cAAc,KAAK;GACnD,CAAA,EAER,CAAA,GACD,iBAAA,GAAA,kBAAA,IAAA,CAACC,gBAAAA,gBAAD,EAAA,UAAiB,KAAK,KAAqB,CAAA,CACpC,EAAA,CAAA;GACT,iBAAA,GAAA,kBAAA,KAAA,CAACJ,gBAAAA,SAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,gBAAAA,gBAAD,EACE,QACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,YAAAA,KAAD;IAAK,IAAG;IAAO,SAAQ;IAAU,MAAK;IAAQ,WAAU;IAAoC,UAAU;IACnG,UAAA,cAAc,OAAO,YAAYG,uBAAAA,eAAe,UAAU;GACxD,CAAA,EAER,CAAA,GACD,iBAAA,GAAA,kBAAA,IAAA,CAACD,gBAAAA,gBAAD,EAAA,UACG,cAAc,OAAO,kBAAkB,YAAYE,uBAAAA,sBAAsB,UAAU,IACtE,CAAA,CACT,EAAA,CAAA;GACR,KAAK,SAAS,QACb,iBAAA,GAAA,kBAAA,IAAA,CAACC,cAAAA,OAAD;IAAO,MAAK;IAAK,SAAQ;IAAc,WAAU;IAAW,UAAA;GAErD,CAAA;GAER,UAAU,KACT,iBAAA,GAAA,kBAAA,IAAA,CAACA,cAAAA,OAAD;IAAO,MAAK;IAAK,SAAQ;IAAU,WAAU;IAC1C,UAAA,YAAY,IAAI,iBAAiB,WAAW,QAAQ;GAChD,CAAA;EAEN;;AAET;;;;;AAYA,IAAM,yBAAyB;CAAC;CAAS;CAAc;CAAc;AAAY;AAEjF,SAAS,SAAS,EAAE,MAAM,MAAM,gBAAiC;CAC/D,MAAM,QAAQC,qEAAAA,aAAa,IAAI;CAC/B,MAAM,iBAAiB,kBAAkB,IAAI;CAC7C,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,SAAD;EACE,OAAM;EACN,KAAK,KAAK;EACV,YAAYC,qEAAAA,oBAAoB,MAAM,sBAAsB;EACtD;EACQ;EACd,OAAM;EAEL,UAAA,iBACC,iBAAA,GAAA,kBAAA,IAAA,CAACC,sEAAAA,sBAAD;GAAsB,OAAO;GAAgB,QAAQ;EAAyB,CAAA,IAE9E,iBAAA,GAAA,kBAAA,IAAA,CAACC,oEAAAA,mBAAD,EAAyB,KAAO,CAAA;CAE3B,CAAA,GACR,SACC,iBAAA,GAAA,kBAAA,IAAA,CAAC,SAAD;EAAS,OAAM;EAAkB,OAAO,MAAM,MAAM;EAClD,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,kEAAAA,cAAD,EAAc,OAAO,MAAM,MAAQ,CAAA;CAC5B,CAAA,CAEN,EAAA,CAAA;AAEX;AAEA,SAAS,UAAU,EAAE,MAAM,MAAM,gBAAiC;CAChE,MAAM,SAASC,qEAAAA,qBAAqB,IAAI;CACxC,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD,EAAA,UAAA;EACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,aAAD,EAAmB,KAAO,CAAA;EACzBC,wCAAAA,qBAAqB,IAAI,KACxB,iBAAA,GAAA,kBAAA,IAAA,CAACC,eAAAA,QAAD;GAAQ,SAAQ;GAAU,OAAM;GAC9B,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACA,eAAAA,OAAO,SAAR,EAAA,UAAiBC,wCAAAA,qBAAqB,IAAI,EAAkB,CAAA;EACtD,CAAA;GAER,UAAU,QAAQ,KAAK,SAAS,SAChC,iBAAA,GAAA,kBAAA,IAAA,CAAC,SAAD;GACE,OAAM;GACN,KAAK;GACL,YAAYC,qEAAAA,qBAAqB,IAAI;GAC/B;GACQ;GACd,OAAM;GAEN,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,qEAAAA,oBAAD,EAA0B,KAAO,CAAA;EAC1B,CAAA;EAEX,iBAAA,GAAA,kBAAA,IAAA,CAAC,WAAD,EAAiB,KAAO,CAAA;CACnB,EAAA,CAAA;AAEX;;AAGA,SAAS,WAAW,EAAE,SAAS,QAA+C;CAC5E,MAAM,EAAE,OAAO,UAAU,cAAc,YAAY,UAAUf,yDAAAA,cAAc,IAAI;CAE/E,MAAM,QAAQ,KAAK,YAAY;CAC/B,MAAM,WAAW,QAAQ,SAAS,gBAAgB,cAAc,KAAK;CACrE,MAAM,aAAaN,wCAAAA,kBAAkB,KAAK,WAAW,KAAK,OAAO;CACjE,MAAM,MAAkD;EACtD,CAAC,QAAQ,KAAK,MAAM;EACpB,CAAC,SAAS,OAAO;EACjB,CAAC,eAAe,KAAK,YAAY;EACjC,CAAC,OAAO,KAAK,KAAK;EAClB,CAAC,WAAW,KAAK,SAAS;EAC1B,CAAC,UAAU,KAAK,QAAQ;EACxB,CAAC,WAAW,KAAK,SAAS;EAC1B,CAAC,QAAQ,KAAK,MAAM;EACpB,CAAC,gBAAgB,KAAK,cAAc;EACpC,CAAC,cAAc,KAAK,YAAY;CAClC;CAEA,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD,EAAA,UAAA;EACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,eAAD,EAAqB,KAAO,CAAA;EAE3B,YACC,iBAAA,GAAA,kBAAA,IAAA,CAAC,SAAD;GAAS,OAAM;GACb,UAAA,iBAAA,GAAA,kBAAA,KAAA,CAACsB,0BAAAA,mBAAD,EAAA,UAAA;IACG,SACC,iBAAA,GAAA,kBAAA,IAAA,CAAC,KAAD;KAAK,OAAM;KACT,UAAA,iBAAA,GAAA,kBAAA,KAAA,CAAC,QAAD;MAAM,WAAU;MAAhB,UAAA,CACG,YAAY,iBAAA,GAAA,kBAAA,IAAA,CAACC,kCAAAA,cAAD;OAAc,YAAY;OAAU,MAAK;MAAM,CAAA,GAC5D,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;OAAM,WAAU;OAAY,UAAA;MAAY,CAAA,CACpC;;IACH,CAAA;IAEN,YAAY,iBAAA,GAAA,kBAAA,IAAA,CAAC,KAAD;KAAK,OAAM;KAAY,UAAA;IAAc,CAAA;IACjD,gBAAgB,iBAAA,GAAA,kBAAA,IAAA,CAAC,KAAD;KAAK,OAAM;KAAiB,UAAA;IAAkB,CAAA;IAC9D,cAAc,iBAAA,GAAA,kBAAA,IAAA,CAAC,KAAD;KAAK,OAAM;KAAe,UAAA;IAAgB,CAAA;IACxD,SAAS,iBAAA,GAAA,kBAAA,IAAA,CAAC,KAAD;KAAK,OAAM;KAAS,UAAA;IAAW,CAAA;GACxB,EAAA,CAAA;EACZ,CAAA;EAGV,SAASC,yDAAAA,kBAAkB,KAAK,KAC/B,iBAAA,GAAA,kBAAA,IAAA,CAAC,SAAD;GAAS,OAAM;GACb,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,mDAAAA,gBAAD,EAAuB,MAAQ,CAAA;EACxB,CAAA;EAGX,iBAAA,GAAA,kBAAA,IAAA,CAAC,SAAD;GAAS,OAAM;GACb,UAAA,iBAAA,GAAA,kBAAA,KAAA,CAACH,0BAAAA,mBAAD,EAAA,UAAA;IACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,KAAD;KAAK,OAAM;KAAW,UAAAI,0BAAAA,uBAAuB,KAAK,SAAS;IAAO,CAAA;IACjE,KAAK,WAAW,iBAAA,GAAA,kBAAA,IAAA,CAAC,KAAD;KAAK,OAAM;KAAS,UAAAA,0BAAAA,uBAAuB,KAAK,OAAO;IAAO,CAAA;IAC9E,cAAc,QAAQ,iBAAA,GAAA,kBAAA,IAAA,CAAC,KAAD;KAAK,OAAM;KAAY,UAAAjB,uBAAAA,sBAAsB,UAAU;IAAO,CAAA;GACpE,EAAA,CAAA;EACZ,CAAA;EAET,iBAAA,GAAA,kBAAA,IAAA,CAAC,SAAD;GAAS,OAAM;GACb,UAAA,iBAAA,GAAA,kBAAA,KAAA,CAACa,0BAAAA,mBAAD,EAAA,UAAA,CACG,IAAI,KAAK,CAAC,OAAO,WAAY,QAAQ,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;IAA0B;IAAc;GAAQ,GAApC,KAAoC,IAAI,IAAK,GAC9F,KAAK,QAAQ,KAAK,KAAK,SAAS,KAC/B,iBAAA,GAAA,kBAAA,IAAA,CAAC,KAAD;IAAK,OAAM;IACT,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;KAAM,WAAU;KACb,UAAA,KAAK,KAAK,KAAI,QACb,iBAAA,GAAA,kBAAA,IAAA,CAACZ,cAAAA,OAAD;MAAiB,MAAK;MAAK,SAAQ;MAAU,UAAS;MACnD,UAAA;KACI,GAFK,GAEL,CACR;IACG,CAAA;GACH,CAAA,CAEU,EAAA,CAAA;EACZ,CAAA;EAET,iBAAA,GAAA,kBAAA,IAAA,CAAC,aAAD;GAAa,OAAM;GAAW,OAAO,KAAK;EAAW,CAAA;EACrD,iBAAA,GAAA,kBAAA,IAAA,CAAC,aAAD;GAAa,OAAM;GAAa,OAAO,KAAK;EAAa,CAAA;CACpD,EAAA,CAAA;AAEX;;;;;;AAOA,SAAS,cAAc,EAAE,QAA8B;CACrD,IAAIiB,qDAAAA,iBAAiB,IAAI,CAAC,CAAC,WAAW,GAAG,OAAO;CAEhD,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,SAAD;EAAS,OAAM;EAAf,UAAA,CACGC,qDAAAA,eAAe,IAAI,KAClB,iBAAA,GAAA,kBAAA,IAAA,CAACvB,YAAAA,KAAD;GAAK,IAAG;GAAI,SAAQ;GAAU,MAAK;GAAQ,UAAA;EAEtC,CAAA,GAEP,iBAAA,GAAA,kBAAA,IAAA,CAACwB,sDAAAA,mBAAD,EAAyB,KAAO,CAAA,CACzB;;AAEb;;AAGA,SAAS,YAAY,EAAE,QAA8B;CACnD,MAAM,UAAUC,qDAAAA,eAAe,IAAI;CACnC,IAAI,SAAS,SAAS,WAAW,SAAS,SAAS,WAAW,OAAO;CACrE,IAAI,KAAK,SAAS,MAChB,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACZ,eAAAA,QAAD;EAAQ,SAAQ;EAAc,MAAM,iBAAA,GAAA,kBAAA,IAAA,CAACa,aAAAA,aAAD,CAAc,CAAA;EAAG,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAAC,MAAD,EAAA,UAAK,QAAQ,SAAa,CAAA;EACpF,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,mEAAAA,kBAAD,EAAwB,KAAO,CAAA;CACzB,CAAA;CAIZ,MAAM,YAAA,GAAWC,2BAAAA,0BAAAA,CAA0BlC,qEAAAA,WAAW,IAAI,CAAC,CAAC,EAAE;CAC9D,IAAI,CAAC,UAAU,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAACmC,+CAAAA,oBAAD;EAA6B;EAAS,YAAA;CAAY,CAAA;CACxE,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAChB,eAAAA,QAAD;EAAQ,SAAQ;EAAc,MAAM,iBAAA,GAAA,kBAAA,IAAA,CAACa,aAAAA,aAAD,CAAc,CAAA;EAAG,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAAC,MAAD,EAAA,UAAK,QAAQ,SAAa,CAAA;EAAtF,UAAA,CACG,SAAS,UAAU,iBAAA,GAAA,kBAAA,IAAA,CAAC,KAAD;GAAG,WAAU;GAAmC,UAAA,SAAS;EAAU,CAAA,GACtF,SAAS,UAAU,KAAA,KAClB,iBAAA,GAAA,kBAAA,IAAA,CAAC1B,YAAAA,KAAD;GAAK,IAAG;GAAI,SAAQ;GAAU,MAAK;GAChC,UAAA,SAAS,QAAQ,kCAAkC;EACjD,CAAA,CAED;;AAEZ;AAEA,SAAS,UAAU,EAAE,QAA8B;CACjD,MAAM,YAAY8B,mEAAAA,iBAAiB,IAAI;CACvC,IAAI,UAAU,WAAW,GAAG,OAAO;CACnC,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,SAAD;EAAS,OAAM;EAAa,OAAO,UAAU;EAC3C,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,kEAAAA,kBAAD,EAA6B,UAAY,CAAA;CAClC,CAAA;AAEb;AAMA,SAAS,MAAM,EAAE,YAAqC;CACpD,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EAAK,WAAU;EAAoC;CAAc,CAAA;AAC1E;;;;;AAMA,SAAS,QAAQ,EACf,OACA,QAAQ,OACR,OACA,YAOC;CACD,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,WAAD;EACE,cAAY;EACZ,WAAU;EAFZ,UAAA,CAIG,SACC,iBAAA,GAAA,kBAAA,KAAA,CAAC/C,kBAAAA,UAAU,gBAAX,EAAA,UAAA,CACG,OACA,SAAS,QAAQ,iBAAA,GAAA,kBAAA,KAAA,CAAC,QAAD;GAAM,WAAU;GAAhB,UAAA,CAA+B,OAAI,KAAY;EACzC,CAAA,CAAA,EAAA,CAAA,GAE3B,QACM;;AAEb;;;;;;AAOA,SAAS,YAAY,EAAE,OAAO,SAA4C;CACxE,IAAI,SAAS,QAAS,OAAO,UAAU,YAAY,OAAO,KAAK,KAAK,CAAC,CAAC,WAAW,GAAI,OAAO;CAC5F,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,SAAD;EAAS,OAAO;EAAhB,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACA,kBAAAA,UAAU,gBAAX,EAAA,UAA2B,MAAgC,CAAA,GAC3D,iBAAA,GAAA,kBAAA,IAAA,CAACgD,oBAAAA,YAAD;IACE,SAAS,KAAK,UAAU,OAAO,MAAM,CAAC;IACtC,aAAa,GAAG,MAAM;IACtB,SAAS,QAAQ,MAAM,YAAY,EAAE;IACrC,SAAQ;GACT,CAAA,CACE;EACL,CAAA,GAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,iEAAAA,iBAAD;GAAwB;GAAO,UAAA;GAAS,YAAA;EAAY,CAAA,CAC7C;;AAEb;;;;;AAMA,SAAS,QAAQ,EACf,OACA,KACA,YACA,MACA,cACA,OACA,YASC;CACD,IAAI,OAAO,MACT,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACjC,YAAAA,KAAD;EAAK,SAAQ;EAAU,MAAK;EACzB,UAAA;CACE,CAAA;CAGT,MAAM,QAAQ,aAAa,OAAO;CAClC,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;EAAK,MAAK;EAAQ,cAAY;EAAO,aAAW;EAAO,WAAU;EAAjE,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACG,cACC,iBAAA,GAAA,kBAAA,IAAA,CAACf,eAAAA,QAAD;IACE,SAAQ;IACR,MAAK;IACL,gBAAc,SAAS;IACvB,SAAS,SAAS,QAAQ,QAAQ,MAAM,YAAY,EAAE,YAAY,QAAQ,MAAM,YAAY,EAAE;IAC9F,eAAe,aAAa,SAAS,QAAQ,SAAS,KAAK;IAE1D,UAAA,SAAS,QAAQ,iBAAA,GAAA,kBAAA,IAAA,CAACiD,aAAAA,SAAD,CAAU,CAAA,IAAI,iBAAA,GAAA,kBAAA,IAAA,CAACC,aAAAA,YAAD,CAAa,CAAA;GACvC,CAAA,GAEV,iBAAA,GAAA,kBAAA,IAAA,CAACH,oBAAAA,YAAD;IACE,SAAS,KAAK,UAAU,KAAK,MAAM,CAAC;IACpC,aAAa,GAAG,MAAM;IACtB,SAAS,QAAQ,MAAM,YAAY,EAAE;IACrC,SAAQ;GACT,CAAA,CACE;EACL,CAAA,GAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;GAAK,WAAU;GACZ,UAAA,UAAU,SAAS,WAAW,iBAAA,GAAA,kBAAA,IAAA,CAACC,iEAAAA,iBAAD;IAAiB,OAAO;IAAK,YAAA;GAAY,CAAA;EACrE,CAAA,CACF;;AAET;AAEA,SAAS,IAAI,EAAE,OAAO,YAAoD;CACxE,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAA9C,kBAAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAAC8B,0BAAAA,kBAAkB,KAAnB,EAAA,UAAwB,MAA6B,CAAA,GACrD,iBAAA,GAAA,kBAAA,IAAA,CAACA,0BAAAA,kBAAkB,OAAnB,EAA0B,SAAkC,CAAA,CAC5D,EAAA,CAAA;AAEN;AAEA,SAAS,MAAM,EAAE,OAAO,SAA2C;CACjE,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAA9B,kBAAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAAC8B,0BAAAA,kBAAkB,KAAnB,EAAA,UAAwB,MAA6B,CAAA,GACrD,iBAAA,GAAA,kBAAA,IAAA,CAACA,0BAAAA,kBAAkB,kBAAnB;EAAoC,aAAa,QAAQ,MAAM;EAAM,WAAW;EAC7E,UAAA;CACiC,CAAA,CACpC,EAAA,CAAA;AAEN"}
1
+ {"version":3,"file":"span-data-panel-view.cjs.js","names":["useState","InfoIcon","FileInputIcon","FileOutputIcon","MessageSquareReplyIcon","useId","cn","DataPanel","Button","ExternalLinkIcon","_Fragment","Tabs","TabList","Tab","Icon","getSpanSignal","describeSpanInput","asCoreSpan","getSpanDurationMs","SpanTypeBadge","getSpanTypeUi","Tooltip","TooltipTrigger","Txt","getModelFacts","TooltipContent","formatDuration","formatDurationPrecise","Badge","getSpanTools","hasSpanInputPreview","SpanPayloadProcessor","SpanInputRenderer","SpanToolList","getSpanOutputPayload","isTokenLimitExceeded","Notice","getTokenLimitMessage","hasSpanOutputPreview","SpanOutputRenderer","DataKeysAndValues","ProviderLogo","getTokenUsageRows","SpanTokenUsage","formatTimestampPrecise","getPromptChanges","runsAfterModel","SpanPromptChanges","getSpanOutcome","CircleXIcon","SpanErrorDetails","describeProcessorPipeline","SpanOutcomeSummary","useSpanToolCalls","SpanToolCallList","CopyButton","SpanPayloadJson","EyeIcon","BracesIcon"],"sources":["../../../../src/domains/traces/components/span-data-panel-view.tsx"],"sourcesContent":["import { describeProcessorPipeline, describeSpanInput } from '@mastra/core/observability';\nimport type { UsageStats } from '@mastra/core/observability';\nimport {\n BracesIcon,\n CircleXIcon,\n ExternalLinkIcon,\n EyeIcon,\n FileInputIcon,\n FileOutputIcon,\n InfoIcon,\n MessageSquareReplyIcon,\n} from 'lucide-react';\nimport { useId, useState } from 'react';\nimport type { ReactNode } from 'react';\nimport type { SpanRecord, SpanTab } from '../types';\nimport { getSpanSignal } from '../utils/span-signal';\nimport { getSpanDurationMs, getTokenLimitMessage, isTokenLimitExceeded } from '../utils/span-utils';\nimport { getSpanTypeUi } from './shared';\nimport { SpanOutcomeSummary } from './span-outcome';\nimport { getSpanOutcome } from './span-outcome.utils';\nimport {\n SpanErrorDetails,\n SpanInputRenderer,\n SpanOutputRenderer,\n SpanPayloadJson,\n SpanPayloadProcessor,\n getSpanOutputPayload,\n hasSpanInputPreview,\n hasSpanOutputPreview,\n} from './span-payload';\nimport { asCoreSpan, getSpanTools } from './span-payload/span-payload-registry';\nimport { SpanToolCallList, SpanToolList } from './span-payload/span-tools-section';\nimport { useSpanToolCalls } from './span-payload/use-span-tool-calls';\nimport { SpanPromptChanges } from './span-prompt-changes';\nimport { getPromptChanges, runsAfterModel } from './span-prompt-impact';\nimport { SpanTokenUsage } from './span-token-usage';\nimport { getModelFacts, getTokenUsageRows } from './span-token-usage.utils';\nimport { SpanTypeBadge } from './span-type-badge';\nimport { ProviderLogo } from '@/domains/llm';\nimport { Badge } from '@/ds/components/Badge';\nimport { Button } from '@/ds/components/Button';\nimport { CopyButton } from '@/ds/components/CopyButton';\nimport { DataKeysAndValues } from '@/ds/components/DataKeysAndValues';\nimport { DataPanel } from '@/ds/components/DataPanel';\nimport { Notice } from '@/ds/components/Notice';\nimport { Tab, TabList, Tabs } from '@/ds/components/Tabs';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { cn } from '@/lib/utils';\nimport { formatTimestampPrecise } from '@/utils/date-format';\nimport { formatDuration, formatDurationPrecise } from '@/utils/duration';\n\n// Mirrors `DataPanel.Content` without requiring the Drawer root (this view also renders standalone).\n// Sections bleed their hairlines through this padding, so the two must match.\nconst BODY_CLASS = 'min-h-0 flex-1 overflow-y-auto p-3';\n\ntype PayloadView = 'rich' | 'raw';\n\nexport interface SpanDataPanelViewProps {\n traceId: string;\n spanId: string;\n /** Full span record. Caller fetches via useSpanDetail. */\n span: SpanRecord | undefined;\n isLoading?: boolean;\n /** Previous/next buttons show only when one is provided; omit both where a span tree already navigates. */\n onPrevious?: () => void;\n onNext?: () => void;\n /** When provided, an × button in the header closes the span column. */\n onClose?: () => void;\n /**\n * When provided, a \"Go to trace\" button in the header calls it with the span's ids.\n * The caller decides where the trace opens (e.g. its own traces route).\n */\n onShowTrace?: (span: { traceId: string; spanId: string }) => void;\n /** Controls the open tab; the panel keeps its own when omitted. Defaults to Details. */\n activeTab?: SpanTab;\n onTabChange?: (tab: SpanTab) => void;\n /**\n * When provided, a \"Feedback\" tab appears; the slot receives the loaded span and renders\n * whatever feedback UI the consumer wants.\n */\n feedbackTabSlot?: (args: { span: SpanRecord; traceId: string; spanId: string }) => ReactNode;\n /** Optional indicator rendered after the \"Feedback\" tab label (e.g. a needs-review dot). */\n feedbackTabBadge?: ReactNode;\n /** Extra classes for the panel root (e.g. flattening the card when nested in the trace panel). */\n className?: string;\n}\n\n/**\n * The same rows for every span type: what ran and how long it took, then the tabs. The body is flat:\n * the tab says what it holds, so the payload isn't wrapped in a titled card again. The open tab and the\n * Preview/JSON choice are kept when another span is selected, so stepping through spans compares like for like.\n */\nexport function SpanDataPanelView({\n traceId,\n spanId,\n span,\n isLoading,\n onPrevious,\n onNext,\n onClose,\n onShowTrace,\n activeTab,\n onTabChange,\n feedbackTabSlot,\n feedbackTabBadge,\n className,\n}: SpanDataPanelViewProps) {\n const [ownTab, setOwnTab] = useState<SpanTab>('details');\n const [view, setView] = useState<PayloadView>('rich');\n\n const requested = activeTab ?? ownTab;\n // A feedback tab asked for by the URL means nothing where the consumer offers no feedback.\n const tab = requested === 'feedback' && !feedbackTabSlot ? 'details' : requested;\n const changeTab = (next: SpanTab) => {\n setOwnTab(next);\n onTabChange?.(next);\n };\n\n const tabs: Array<{ value: SpanTab; name: string; icon: ReactNode; attention?: boolean; badge?: ReactNode }> = [\n { value: 'details', name: 'Details', icon: <InfoIcon /> },\n { value: 'input', name: 'Input', icon: <FileInputIcon /> },\n { value: 'output', name: 'Output', icon: <FileOutputIcon />, attention: span?.error != null },\n ...(feedbackTabSlot\n ? [{ value: 'feedback' as const, name: 'Feedback', icon: <MessageSquareReplyIcon />, badge: feedbackTabBadge }]\n : []),\n ];\n\n const headingId = useId();\n\n // Not a DataPanel: this is the span column rendered inside `TraceDataPanelView`,\n // which already provides the panel chrome.\n return (\n <section\n aria-labelledby={headingId}\n data-slot=\"span-data-panel\"\n className={cn('flex min-h-0 flex-1 flex-col overflow-hidden', className)}\n >\n <DataPanel.Header className=\"flex-nowrap\">\n {span ? (\n <SpanIdentity span={span} headingId={headingId} />\n ) : (\n <DataPanel.HeaderContent>\n <DataPanel.Heading>\n <span id={headingId}>Span</span>\n </DataPanel.Heading>\n </DataPanel.HeaderContent>\n )}\n <DataPanel.HeaderActions>\n {onShowTrace && (\n <Button\n size=\"icon-sm\"\n variant=\"ghost\"\n aria-label=\"Go to trace\"\n tooltip=\"Go to trace\"\n className=\"shrink-0\"\n onClick={() => onShowTrace({ traceId, spanId })}\n >\n <ExternalLinkIcon />\n </Button>\n )}\n {(onPrevious || onNext) && (\n <DataPanel.NextPrevNav\n onPrevious={onPrevious}\n onNext={onNext}\n previousLabel=\"Go to previous span\"\n nextLabel=\"Go to next span\"\n />\n )}\n {onClose && <DataPanel.CloseButton icon=\"x\" onClick={onClose} label=\"Close span\" tooltip=\"Close span\" />}\n </DataPanel.HeaderActions>\n </DataPanel.Header>\n\n {isLoading ? (\n <DataPanel.LoadingData>Loading span details...</DataPanel.LoadingData>\n ) : !span ? (\n <DataPanel.NoData>Span not found.</DataPanel.NoData>\n ) : (\n <>\n <Tabs<SpanTab> defaultTab=\"details\" value={tab} onValueChange={changeTab}>\n <DataPanel.Header className=\"flex-nowrap border-b border-surface-rim\">\n <div className=\"min-w-0 flex-1\">\n <TabList variant=\"pill-ghost\" size=\"sm\">\n {tabs.map(item => (\n <Tab key={item.value} value={item.value} attention={item.attention}>\n <Icon size=\"xs\">{item.icon}</Icon>\n <span>{item.name}</span>\n {item.badge != null && <> ({item.badge})</>}\n </Tab>\n ))}\n </TabList>\n </div>\n </DataPanel.Header>\n </Tabs>\n\n <div role=\"tabpanel\" aria-label={tabs.find(item => item.value === tab)?.name} className={BODY_CLASS}>\n {tab === 'details' && <DetailsTab traceId={traceId} span={span} />}\n {tab === 'input' && <InputTab span={span} view={view} onViewChange={setView} />}\n {tab === 'output' && <OutputTab span={span} view={view} onViewChange={setView} />}\n {tab === 'feedback' && feedbackTabSlot?.({ span, traceId, spanId })}\n </div>\n </>\n )}\n </section>\n );\n}\n\n/* ------------------------------------------------------------------------------------------------\n * Header\n * ---------------------------------------------------------------------------------------------- */\n\nfunction getProcessorInput(span: SpanRecord) {\n if (getSpanSignal(span)) return undefined;\n const input = describeSpanInput(asCoreSpan(span));\n return input?.type === 'processor' ? input.value : undefined;\n}\n\n/** How many times a processor re-ran this step. Zero, the normal case, is not worth showing. */\nfunction getRetryCount(span: SpanRecord) {\n const data: Record<string, unknown> = getProcessorInput(span)?.data ?? {};\n const retryCount = data.retryCount;\n return typeof retryCount === 'number' && retryCount > 0 ? retryCount : 0;\n}\n\n/**\n * What ran and how long it took, on one row. Only the unusual is called out: a failure, a span still\n * running, or a processor that had to retry. A normal success says nothing extra.\n */\nfunction SpanIdentity({ span, headingId }: { span: SpanRecord; headingId: string }) {\n const durationMs = getSpanDurationMs(span.startedAt, span.endedAt);\n const retries = getRetryCount(span);\n\n return (\n <div className=\"flex min-w-0 flex-1 items-center gap-2 pl-1\">\n {/* Same type mark as the span's row in the trace tree, processors included. */}\n <SpanTypeBadge type={span.spanType ?? ''} spanUI={getSpanTypeUi(span.spanType ?? '')} />\n <Tooltip>\n <TooltipTrigger\n render={\n <Txt id={headingId} as=\"h2\" variant=\"card-title-strong\" className=\"min-w-0 truncate\">\n {getModelFacts(span).model ?? span.entityName ?? span.name}\n </Txt>\n }\n />\n <TooltipContent>{span.name}</TooltipContent>\n </Tooltip>\n <Tooltip>\n <TooltipTrigger\n render={\n <Txt as=\"span\" variant=\"body-sm\" tone=\"muted\" className=\"shrink-0 cursor-help tabular-nums\" tabIndex={0}>\n {durationMs == null ? 'Running' : formatDuration(durationMs)}\n </Txt>\n }\n />\n <TooltipContent>\n {durationMs == null ? 'Still running' : `Duration ${formatDurationPrecise(durationMs)}`}\n </TooltipContent>\n </Tooltip>\n {span.error != null && (\n <Badge size=\"xs\" variant=\"destructive\" className=\"shrink-0\">\n Failed\n </Badge>\n )}\n {retries > 0 && (\n <Badge size=\"xs\" variant=\"warning\" className=\"shrink-0 tabular-nums\">\n {retries === 1 ? 'Retried once' : `Retried ${retries}×`}\n </Badge>\n )}\n </div>\n );\n}\n\n/* ------------------------------------------------------------------------------------------------\n * Tab bodies\n * ---------------------------------------------------------------------------------------------- */\n\ntype PayloadTabProps = { span: SpanRecord; view: PayloadView; onViewChange: (view: PayloadView) => void };\n\n/**\n * Processor input keys the preview leaves out: tools have their own section, retries are a header badge,\n * and the step number repeats the `step › N` parent the span sits under in the tree.\n */\nconst PROCESSOR_INPUT_HIDDEN = ['tools', 'toolChoice', 'retryCount', 'stepNumber'];\n\nfunction InputTab({ span, view, onViewChange }: PayloadTabProps) {\n const tools = getSpanTools(span);\n const processorInput = getProcessorInput(span);\n return (\n <Stack>\n <Payload\n label=\"Input\"\n raw={span.input}\n hasPreview={hasSpanInputPreview(span, PROCESSOR_INPUT_HIDDEN)}\n view={view}\n onViewChange={onViewChange}\n empty=\"No input recorded.\"\n >\n {processorInput ? (\n <SpanPayloadProcessor value={processorInput} hidden={PROCESSOR_INPUT_HIDDEN} />\n ) : (\n <SpanInputRenderer span={span} />\n )}\n </Payload>\n {tools && (\n <Section title=\"Available tools\" count={tools.tools.length}>\n <SpanToolList tools={tools.tools} />\n </Section>\n )}\n </Stack>\n );\n}\n\nfunction OutputTab({ span, view, onViewChange }: PayloadTabProps) {\n const output = getSpanOutputPayload(span);\n return (\n <Stack>\n <SpanProblem span={span} />\n {isTokenLimitExceeded(span) && (\n <Notice variant=\"warning\" title=\"Token Limit Exceeded\">\n <Notice.Message>{getTokenLimitMessage(span)}</Notice.Message>\n </Notice>\n )}\n {(output != null || span.error == null) && (\n <Payload\n label=\"Output\"\n raw={output}\n hasPreview={hasSpanOutputPreview(span)}\n view={view}\n onViewChange={onViewChange}\n empty=\"No output recorded.\"\n >\n <SpanOutputRenderer span={span} />\n </Payload>\n )}\n <ToolCalls span={span} />\n </Stack>\n );\n}\n\n/** Everything looked up rather than read, grouped the same way for every span type. */\nfunction DetailsTab({ traceId, span }: { traceId: string; span: SpanRecord }) {\n const { finishReason, firstToken, speed, ...facts } = getModelFacts(span);\n // Agent runs and model steps record the model they ran natively, not only model-call spans.\n const model = span.model || facts.model;\n const provider = span.provider || facts.provider;\n // oxlint-disable-next-line typescript/no-unnecessary-type-assertion -- Built SDK declarations type attributes.usage as unknown.\n const usage = span.attributes?.usage as UsageStats | undefined;\n const hasModel = Boolean(model || provider || finishReason || firstToken || speed);\n const durationMs = getSpanDurationMs(span.startedAt, span.endedAt);\n const ids: Array<[string, string | null | undefined]> = [\n ['Span', span.spanId],\n ['Trace', traceId],\n ['Parent span', span.parentSpanId],\n ['Run', span.runId],\n ['Session', span.sessionId],\n ['Thread', span.threadId],\n ['Request', span.requestId],\n ['User', span.userId],\n ['Organization', span.organizationId],\n ['Experiment', span.experimentId],\n ];\n\n return (\n <Stack>\n <PromptSection span={span} />\n\n {hasModel && (\n <Section title=\"Model\">\n <DataKeysAndValues>\n {model && (\n <Row label=\"Model\">\n <span className=\"inline-flex min-w-0 items-center gap-1.5\">\n {provider && <ProviderLogo providerId={provider} size=\"xs\" />}\n <span className=\"truncate\">{model}</span>\n </span>\n </Row>\n )}\n {provider && <Row label=\"Provider\">{provider}</Row>}\n {finishReason && <Row label=\"Finish reason\">{finishReason}</Row>}\n {firstToken && <Row label=\"First token\">{firstToken}</Row>}\n {speed && <Row label=\"Speed\">{speed}</Row>}\n </DataKeysAndValues>\n </Section>\n )}\n\n {usage && getTokenUsageRows(usage) && (\n <Section title=\"Token usage\">\n <SpanTokenUsage usage={usage} />\n </Section>\n )}\n\n <Section title=\"Timing\">\n <DataKeysAndValues>\n <Row label=\"Started\">{formatTimestampPrecise(span.startedAt)}</Row>\n {span.endedAt && <Row label=\"Ended\">{formatTimestampPrecise(span.endedAt)}</Row>}\n {durationMs != null && <Row label=\"Duration\">{formatDurationPrecise(durationMs)}</Row>}\n {span.timeToFirstChunkMs != null && (\n <Row label=\"Time to first chunk\">{formatDurationPrecise(span.timeToFirstChunkMs)}</Row>\n )}\n {span.timeToFirstTokenMs != null && (\n <Row label=\"Time to first token\">{formatDurationPrecise(span.timeToFirstTokenMs)}</Row>\n )}\n </DataKeysAndValues>\n </Section>\n\n <Section title=\"Identifiers\">\n <DataKeysAndValues>\n {ids.map(([label, value]) => (value ? <IdRow key={label} label={label} value={value} /> : null))}\n {span.tags && span.tags.length > 0 && (\n <Row label=\"Tags\">\n <span className=\"flex flex-wrap gap-1\">\n {span.tags.map(tag => (\n <Badge key={tag} size=\"xs\" variant=\"neutral\" emphasis=\"subtle\">\n {tag}\n </Badge>\n ))}\n </span>\n </Row>\n )}\n </DataKeysAndValues>\n </Section>\n\n <JsonSection title=\"Metadata\" value={span.metadata} />\n <JsonSection title=\"Attributes\" value={span.attributes} />\n </Stack>\n );\n}\n\n/**\n * What this span changed in the request, from its own recorded changes, as diff cards. Changes made\n * after the model answered get a short note: they can't have shaped this request. Nothing is shown\n * when the span changed nothing.\n */\nfunction PromptSection({ span }: { span: SpanRecord }) {\n if (getPromptChanges(span).length === 0) return null;\n\n return (\n <Section title=\"Prompt\">\n {runsAfterModel(span) && (\n <Txt as=\"p\" variant=\"body-sm\" tone=\"muted\">\n Ran after the model answered: its changes are kept for later turns and could not shape this request.\n </Txt>\n )}\n <SpanPromptChanges span={span} />\n </Section>\n );\n}\n\n/** Why the span failed or stopped, above whatever output it still produced. */\nfunction SpanProblem({ span }: { span: SpanRecord }) {\n const outcome = getSpanOutcome(span);\n if (outcome?.tone !== 'error' && outcome?.tone !== 'warning') return null;\n if (span.error != null) {\n return (\n <Notice variant=\"destructive\" icon={<CircleXIcon />} title={<h3>{outcome.headline}</h3>}>\n <SpanErrorDetails span={span} />\n </Notice>\n );\n }\n // A tripwire leaves no error: its reason is the only account of why the run stopped.\n const tripwire = describeProcessorPipeline(asCoreSpan(span))?.tripwireAbort;\n if (!tripwire) return <SpanOutcomeSummary outcome={outcome} showDetail />;\n return (\n <Notice variant=\"destructive\" icon={<CircleXIcon />} title={<h3>{outcome.headline}</h3>}>\n {tripwire.reason && <p className=\"break-words whitespace-pre-wrap\">{tripwire.reason}</p>}\n {tripwire.retry !== undefined && (\n <Txt as=\"p\" variant=\"body-sm\" tone=\"muted\">\n {tripwire.retry ? 'The model was asked to retry.' : 'Not retried.'}\n </Txt>\n )}\n </Notice>\n );\n}\n\nfunction ToolCalls({ span }: { span: SpanRecord }) {\n const toolCalls = useSpanToolCalls(span);\n if (toolCalls.length === 0) return null;\n return (\n <Section title=\"Tool calls\" count={toolCalls.length}>\n <SpanToolCallList toolCalls={toolCalls} />\n </Section>\n );\n}\n\n/* ------------------------------------------------------------------------------------------------\n * Building blocks\n * ---------------------------------------------------------------------------------------------- */\n\nfunction Stack({ children }: { children: ReactNode }) {\n return <div className=\"grid min-w-0 content-start gap-4\">{children}</div>;\n}\n\n/**\n * A hairline and a small heading between groups, instead of a titled card around each one.\n * The hairline runs edge to edge: it bleeds through the body padding.\n */\nfunction Section({\n title,\n label = title,\n count,\n children,\n}: {\n title?: string;\n /** Names the region for assistive tech when the heading is rendered by the children. */\n label?: string;\n count?: number;\n children: ReactNode;\n}) {\n return (\n <section\n aria-label={label}\n className=\"-mx-3 grid min-w-0 gap-3 border-t border-surface-rim px-3 pt-4 first:border-t-0 first:pt-0\"\n >\n {title && (\n <DataPanel.SectionHeading>\n {title}\n {count != null && <span className=\"tabular-nums\"> · {count}</span>}\n </DataPanel.SectionHeading>\n )}\n {children}\n </section>\n );\n}\n\n/**\n * Stored JSON that is rarely why someone opened the span. The heading always shows; the block opens\n * folded on its root, and unfolding it shows the top-level keys with their values still folded, so it\n * collapses through the code block's own fold markers instead of a second disclosure around it.\n */\nfunction JsonSection({ title, value }: { title: string; value: unknown }) {\n if (value == null || (typeof value === 'object' && Object.keys(value).length === 0)) return null;\n return (\n <Section label={title}>\n <div className=\"flex min-w-0 items-center justify-between gap-2\">\n <DataPanel.SectionHeading>{title}</DataPanel.SectionHeading>\n <CopyButton\n content={JSON.stringify(value, null, 2)}\n copyMessage={`${title} copied`}\n tooltip={`Copy ${title.toLowerCase()} as JSON`}\n variant=\"ghost\"\n />\n </div>\n <SpanPayloadJson value={value} foldRoot foldNested />\n </Section>\n );\n}\n\n/**\n * The payload, unframed. Its Preview/JSON switch and copy sit on a small toolbar inside the tab,\n * right above what they act on, so the tab bar stays the same for every tab.\n */\nfunction Payload({\n label,\n raw,\n hasPreview,\n view,\n onViewChange,\n empty,\n children,\n}: {\n label: string;\n raw: unknown;\n hasPreview: boolean;\n view: PayloadView;\n onViewChange: (view: PayloadView) => void;\n empty: string;\n children: ReactNode;\n}) {\n if (raw == null) {\n return (\n <Txt variant=\"body-sm\" tone=\"muted\">\n {empty}\n </Txt>\n );\n }\n const shown = hasPreview ? view : 'raw';\n return (\n <div role=\"group\" aria-label={label} data-view={shown} className=\"grid min-w-0 gap-3\">\n <div className=\"flex items-center justify-end gap-1\">\n {hasPreview && (\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-pressed={view === 'raw'}\n tooltip={view === 'raw' ? `Show ${label.toLowerCase()} preview` : `Show ${label.toLowerCase()} as JSON`}\n onClick={() => onViewChange(view === 'raw' ? 'rich' : 'raw')}\n >\n {view === 'raw' ? <EyeIcon /> : <BracesIcon />}\n </Button>\n )}\n <CopyButton\n content={JSON.stringify(raw, null, 2)}\n copyMessage={`${label} copied`}\n tooltip={`Copy ${label.toLowerCase()} as JSON`}\n variant=\"ghost\"\n />\n </div>\n <div className=\"min-w-0 [&_[data-slot=message]]:my-0\">\n {shown === 'rich' ? children : <SpanPayloadJson value={raw} foldNested />}\n </div>\n </div>\n );\n}\n\nfunction Row({ label, children }: { label: string; children: ReactNode }) {\n return (\n <>\n <DataKeysAndValues.Key>{label}</DataKeysAndValues.Key>\n <DataKeysAndValues.Value>{children}</DataKeysAndValues.Value>\n </>\n );\n}\n\nfunction IdRow({ label, value }: { label: string; value: string }) {\n return (\n <>\n <DataKeysAndValues.Key>{label}</DataKeysAndValues.Key>\n <DataKeysAndValues.ValueWithCopyBtn copyTooltip={`Copy ${label} id`} copyValue={value}>\n {value}\n </DataKeysAndValues.ValueWithCopyBtn>\n </>\n );\n}\n"],"mappings":"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"}