@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":"span-filters.cjs.js","names":["TRACE_FILTER_BAR_LABELS","traceFilterFieldIcon","traceFilterFieldColor","ROOT_ENTITY_TYPE_OPTIONS","SpanType","EntityType","TRACE_STATUS_OPTIONS","TRACE_STRING_OPERATORS","TRACE_SYNTHETIC_OPERATORS","TRACE_REQUIRED_STRING_OPERATORS","TRACE_TEXT_OPERATORS","TRACE_PRESENCE_OPERATORS","TRACE_NUMBER_OPERATORS","isLegacyAnyValue","scalarPredicate","isTraceFilterGroup"],"sources":["../../../src/domains/spans/span-filters.ts"],"sourcesContent":["import { EntityType, SpanType } from '@mastra/core/observability';\nimport type { TraceQueryScalarPredicate } from '@mastra/core/storage';\nimport {\n isLegacyAnyValue,\n ROOT_ENTITY_TYPE_OPTIONS,\n TRACE_FILTER_BAR_LABELS,\n TRACE_NUMBER_OPERATORS,\n TRACE_PRESENCE_OPERATORS,\n TRACE_REQUIRED_STRING_OPERATORS,\n TRACE_STATUS_OPTIONS,\n TRACE_STRING_OPERATORS,\n TRACE_SYNTHETIC_OPERATORS,\n TRACE_TEXT_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, FilterBarSuggestionsResolver } from '@/ds/components/FilterBar/types';\n\n/** Span query fields every store accepts. `startedAt`/`endedAt` are left to the time-range chip. */\nexport const SPAN_CORE_FILTER_FIELD_IDS = [\n 'name',\n 'spanType',\n 'status',\n 'error',\n 'durationMs',\n 'timeToFirstChunkMs',\n 'entityType',\n 'entityId',\n 'entityName',\n 'entityVersionId',\n 'parentEntityVersionId',\n 'rootEntityVersionId',\n 'runId',\n 'sessionId',\n 'userId',\n 'organizationId',\n] as const;\n\n/** Span query fields the server only accepts when the store declares `spanQueryContextFields`. */\nexport const SPAN_CONTEXT_FILTER_FIELD_IDS = [\n 'traceId',\n 'spanId',\n 'parentSpanId',\n 'threadId',\n 'resourceId',\n 'requestId',\n 'serviceName',\n 'experimentId',\n 'environment',\n 'executionSource',\n 'parentEntityType',\n 'parentEntityId',\n 'parentEntityName',\n 'rootEntityType',\n 'rootEntityId',\n 'rootEntityName',\n] as const;\n\nconst CORE_FIELD_IDS: ReadonlySet<string> = new Set(SPAN_CORE_FILTER_FIELD_IDS);\nconst ALL_FIELD_IDS: ReadonlySet<string> = new Set([...SPAN_CORE_FILTER_FIELD_IDS, ...SPAN_CONTEXT_FILTER_FIELD_IDS]);\n\nconst NUMBER_FIELD_IDS: ReadonlySet<string> = new Set(['durationMs', 'timeToFirstChunkMs']);\n/** The query can only test `error` for presence; any other operator is rejected. */\nconst PRESENCE_ONLY_FIELD_IDS: ReadonlySet<string> = new Set(['error']);\n/** Fields every span carries. On any other field, \"is not X\" must also keep spans where it is missing. */\nconst REQUIRED_FIELD_IDS: ReadonlySet<string> = new Set([\n 'name',\n 'spanType',\n 'status',\n 'traceId',\n 'spanId',\n 'durationMs',\n]);\n\nconst SPAN_FILTER_BAR_LABELS: Record<string, string> = {\n ...TRACE_FILTER_BAR_LABELS,\n name: 'Span name',\n spanType: 'Span type',\n spanId: 'Span ID',\n parentSpanId: 'Parent span ID',\n error: 'Error',\n timeToFirstChunkMs: 'Time to first chunk (ms)',\n executionSource: 'Execution source',\n entityType: 'Primitive type',\n entityVersionId: 'Primitive version ID',\n parentEntityType: 'Parent primitive type',\n parentEntityId: 'Parent primitive ID',\n parentEntityName: 'Parent primitive name',\n parentEntityVersionId: 'Parent primitive version ID',\n rootEntityType: 'Root primitive type',\n rootEntityId: 'Root primitive ID',\n rootEntityName: 'Root primitive name',\n rootEntityVersionId: 'Root primitive version ID',\n};\n\n/** Span fields without their own trace icon borrow the icon of the closest trace field. */\nconst SPAN_ICON_FIELD_ALIASES: Record<string, string> = {\n name: 'spans.name',\n spanType: 'spans.spanType',\n error: 'spans.error',\n timeToFirstChunkMs: 'durationMs',\n spanId: 'traceId',\n parentSpanId: 'traceId',\n executionSource: 'runId',\n entityType: 'rootEntityType',\n parentEntityType: 'rootEntityType',\n entityVersionId: 'entityId',\n parentEntityId: 'entityId',\n parentEntityVersionId: 'entityId',\n rootEntityId: 'entityId',\n rootEntityVersionId: 'entityId',\n parentEntityName: 'entityName',\n rootEntityName: 'entityName',\n};\n\nconst spanFieldBase = (id: string) => ({\n id,\n label: SPAN_FILTER_BAR_LABELS[id] ?? id,\n icon: traceFilterFieldIcon(SPAN_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 byLabel = (a: { label?: string; value: string }, b: { label?: string; value: string }) =>\n (a.label ?? a.value).localeCompare(b.label ?? b.value);\n\nconst ENTITY_TYPE_LABELS: Record<string, string> = Object.fromEntries(\n ROOT_ENTITY_TYPE_OPTIONS.map(option => [option.entityType, option.label]),\n);\n\nconst SPAN_TYPE_OPTIONS: FilterBarOption[] = Object.values(SpanType)\n .map(value => ({ value, label: humanize(value) }))\n .sort(byLabel);\n\nconst ENTITY_TYPE_OPTIONS: FilterBarOption[] = Object.values(EntityType)\n .map(value => ({ value, label: ENTITY_TYPE_LABELS[value] ?? humanize(value) }))\n .sort(byLabel);\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 spans page: only paths and operators `querySpans()` accepts. */\nexport function createSpanFilterBarFields({\n withContextFields,\n entityNames,\n environments,\n valueSuggestions,\n}: {\n /** Offer the context fields. Only when the server declares `spanQueryContextFields`. */\n withContextFields: boolean;\n entityNames: readonly string[];\n environments: readonly string[];\n /** Builds a lazy value resolver for a span field. Absent → free text. */\n valueSuggestions?: (path: string) => FilterBarSuggestionsResolver;\n}): FilterBarField[] {\n const pick = (\n id: string,\n suggestions: FilterBarOption[],\n operators: TraceFilterOperatorId[] = TRACE_STRING_OPERATORS,\n ): FilterBarField => ({ ...spanFieldBase(id), operators, strict: true, suggestions });\n const names = entityNames.map(value => ({ value }));\n\n const field = (id: string): FilterBarField => {\n switch (id) {\n case 'status':\n return pick(id, STATUS_OPTIONS, TRACE_SYNTHETIC_OPERATORS);\n case 'spanType':\n return pick(id, SPAN_TYPE_OPTIONS, TRACE_REQUIRED_STRING_OPERATORS);\n case 'entityType':\n case 'parentEntityType':\n case 'rootEntityType':\n return pick(id, ENTITY_TYPE_OPTIONS);\n case 'entityName':\n case 'rootEntityName':\n return pick(id, names);\n case 'environment':\n return pick(\n id,\n environments.map(value => ({ value })),\n );\n case 'name': {\n const resolver = valueSuggestions?.(id);\n return {\n ...spanFieldBase(id),\n operators: TRACE_TEXT_OPERATORS,\n ...(resolver ? { strict: true, suggestions: resolver } : {}),\n };\n }\n case 'error':\n return { ...spanFieldBase(id), operators: TRACE_PRESENCE_OPERATORS };\n case 'durationMs':\n case 'timeToFirstChunkMs':\n return { ...spanFieldBase(id), type: 'number', operators: TRACE_NUMBER_OPERATORS };\n case 'traceId':\n case 'spanId':\n return { ...spanFieldBase(id), operators: TRACE_REQUIRED_STRING_OPERATORS };\n default:\n return { ...spanFieldBase(id), operators: TRACE_STRING_OPERATORS };\n }\n };\n\n const sortFields = (ids: readonly string[]) => ids.map(field).sort((a, b) => a.label.localeCompare(b.label));\n return [\n ...sortFields(SPAN_CORE_FILTER_FIELD_IDS),\n ...(withContextFields ? sortFields(SPAN_CONTEXT_FILTER_FIELD_IDS) : []),\n ];\n}\n\nfunction tokenToSpanQueryPredicate(\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 if (PRESENCE_ONLY_FIELD_IDS.has(fieldId) && !isPresence) return undefined;\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 (operatorId === 'matches' || operatorId === 'notMatches') {\n // The query rejects a text literal with no letters or digits.\n values = values.filter(value => /[\\p{L}\\p{M}\\p{N}]/u.test(String(value)));\n if (!values.length) 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 groupToSpanQueryPredicate(\n group: TraceFilterGroup,\n allowedFieldIds: ReadonlySet<string>,\n): TraceQueryScalarPredicate | undefined {\n const args = group.nodes\n .map(node =>\n isTraceFilterGroup(node)\n ? groupToSpanQueryPredicate(node, allowedFieldIds)\n : tokenToSpanQueryPredicate(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 span query `where` for the filter bar's tokens and groups, or `undefined` when nothing applies.\n * Conditions the span query can't run (unknown fields, context fields without the capability,\n * unusable values) are left out instead of failing the request.\n */\nexport function buildSpanQueryWhere(\n tokens: TraceFilterToken[],\n groups: TraceFilterGroup[],\n { withContextFields }: { withContextFields: boolean },\n): TraceQueryScalarPredicate | undefined {\n const allowedFieldIds = withContextFields ? ALL_FIELD_IDS : CORE_FIELD_IDS;\n const args = [\n ...tokens.map(token => tokenToSpanQueryPredicate(token, allowedFieldIds)),\n ...groups.map(group => groupToSpanQueryPredicate(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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"}
1
+ {"version":3,"file":"span-filters.cjs.js","names":["TRACE_FILTER_BAR_LABELS","traceFilterFieldIcon","traceFilterFieldColor","ROOT_ENTITY_TYPE_OPTIONS","SpanType","EntityType","TRACE_STATUS_OPTIONS","TRACE_STRING_OPERATORS","TRACE_SYNTHETIC_OPERATORS","TRACE_REQUIRED_STRING_OPERATORS","TRACE_TEXT_OPERATORS","TRACE_PRESENCE_OPERATORS","TRACE_NUMBER_OPERATORS","withoutUnrecordedStreamingTimings","createOutcomeFilterBarFields","isLegacyAnyValue","scalarPredicate","isTraceFilterGroup"],"sources":["../../../src/domains/spans/span-filters.ts"],"sourcesContent":["import { EntityType, SpanType } from '@mastra/core/observability';\nimport type { TraceQueryScalarPredicate } from '@mastra/core/storage';\nimport {\n isLegacyAnyValue,\n ROOT_ENTITY_TYPE_OPTIONS,\n TRACE_FILTER_BAR_LABELS,\n TRACE_NUMBER_OPERATORS,\n TRACE_PRESENCE_OPERATORS,\n TRACE_REQUIRED_STRING_OPERATORS,\n TRACE_STATUS_OPTIONS,\n TRACE_STRING_OPERATORS,\n TRACE_SYNTHETIC_OPERATORS,\n TRACE_TEXT_OPERATORS,\n createOutcomeFilterBarFields,\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, FilterBarSuggestionsResolver } from '@/ds/components/FilterBar/types';\n\n/** Span query fields every store accepts. `startedAt`/`endedAt` are left to the time-range chip. */\nexport const SPAN_CORE_FILTER_FIELD_IDS = [\n 'name',\n 'spanType',\n 'status',\n 'error',\n 'durationMs',\n 'timeToFirstChunkMs',\n 'timeToFirstTokenMs',\n 'entityType',\n 'entityId',\n 'entityName',\n 'entityVersionId',\n 'parentEntityVersionId',\n 'rootEntityVersionId',\n 'runId',\n 'sessionId',\n 'userId',\n 'organizationId',\n] as const;\n\n/** Span query fields the server only accepts when the store declares `spanQueryContextFields`. */\nexport const SPAN_CONTEXT_FILTER_FIELD_IDS = [\n 'traceId',\n 'spanId',\n 'parentSpanId',\n 'threadId',\n 'resourceId',\n 'requestId',\n 'serviceName',\n 'experimentId',\n 'environment',\n 'executionSource',\n 'parentEntityType',\n 'parentEntityId',\n 'parentEntityName',\n 'rootEntityType',\n 'rootEntityId',\n 'rootEntityName',\n] as const;\n\n/** Span query fields the server only accepts when the store declares `spanQueryOutcomeFields`. */\nexport const SPAN_OUTCOME_FILTER_FIELD_IDS = ['outcome', 'stopReason'] as const;\n\n/** Span query fields the server only accepts when the store declares `spanQueryModelFields`. */\nexport const SPAN_MODEL_FILTER_FIELD_IDS = ['model', 'provider'] as const;\n\nconst NUMBER_FIELD_IDS: ReadonlySet<string> = new Set(['durationMs', 'timeToFirstChunkMs', 'timeToFirstTokenMs']);\n/** The query can only test `error` for presence; any other operator is rejected. */\nconst PRESENCE_ONLY_FIELD_IDS: ReadonlySet<string> = new Set(['error']);\n/** Fields every span carries. On any other field, \"is not X\" must also keep spans where it is missing. */\nconst REQUIRED_FIELD_IDS: ReadonlySet<string> = new Set([\n 'name',\n 'spanType',\n 'status',\n 'traceId',\n 'spanId',\n 'durationMs',\n]);\n\nconst SPAN_FILTER_BAR_LABELS: Record<string, string> = {\n ...TRACE_FILTER_BAR_LABELS,\n name: 'Span name',\n spanType: 'Span type',\n spanId: 'Span ID',\n parentSpanId: 'Parent span ID',\n error: 'Error',\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 parentEntityType: 'Parent primitive type',\n parentEntityId: 'Parent primitive ID',\n parentEntityName: 'Parent primitive name',\n parentEntityVersionId: 'Parent primitive version ID',\n rootEntityType: 'Root primitive type',\n rootEntityId: 'Root primitive ID',\n rootEntityName: 'Root primitive name',\n rootEntityVersionId: 'Root primitive version ID',\n model: 'Model',\n provider: 'Provider',\n};\n\n/** Span fields without their own trace icon borrow the icon of the closest trace field. */\nconst SPAN_ICON_FIELD_ALIASES: Record<string, string> = {\n name: 'spans.name',\n spanType: 'spans.spanType',\n error: 'spans.error',\n timeToFirstChunkMs: 'durationMs',\n timeToFirstTokenMs: 'durationMs',\n spanId: 'traceId',\n parentSpanId: 'traceId',\n executionSource: 'runId',\n entityType: 'rootEntityType',\n parentEntityType: 'rootEntityType',\n entityVersionId: 'entityId',\n parentEntityId: 'entityId',\n parentEntityVersionId: 'entityId',\n rootEntityId: 'entityId',\n rootEntityVersionId: 'entityId',\n parentEntityName: 'entityName',\n rootEntityName: 'entityName',\n model: 'spans.model',\n provider: 'spans.provider',\n};\n\nconst spanFieldBase = (id: string) => ({\n id,\n label: SPAN_FILTER_BAR_LABELS[id] ?? id,\n icon: traceFilterFieldIcon(SPAN_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 byLabel = (a: { label?: string; value: string }, b: { label?: string; value: string }) =>\n (a.label ?? a.value).localeCompare(b.label ?? b.value);\n\nconst ENTITY_TYPE_LABELS: Record<string, string> = Object.fromEntries(\n ROOT_ENTITY_TYPE_OPTIONS.map(option => [option.entityType, option.label]),\n);\n\nconst SPAN_TYPE_OPTIONS: FilterBarOption[] = Object.values(SpanType)\n .map(value => ({ value, label: humanize(value) }))\n .sort(byLabel);\n\nconst ENTITY_TYPE_OPTIONS: FilterBarOption[] = Object.values(EntityType)\n .map(value => ({ value, label: ENTITY_TYPE_LABELS[value] ?? humanize(value) }))\n .sort(byLabel);\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 spans page: only paths and operators `querySpans()` accepts. */\nexport function createSpanFilterBarFields({\n withContextFields,\n withTimeToFirstChunk,\n withTimeToFirstToken,\n withOutcomeFields = false,\n withModelFields = false,\n entityNames,\n environments,\n valueSuggestions,\n}: StreamingTimingSupport & {\n /** Offer the context fields. Only when the server declares `spanQueryContextFields`. */\n withContextFields: boolean;\n /** Offer `outcome` and `stopReason`. Only when the server declares `spanQueryOutcomeFields`. */\n withOutcomeFields?: boolean;\n /** Offer `model` and `provider`. Only when the server declares `spanQueryModelFields`. */\n withModelFields?: boolean;\n entityNames: readonly string[];\n environments: readonly string[];\n /** Builds a lazy value resolver for a span field. Absent → free text. */\n valueSuggestions?: (path: string) => FilterBarSuggestionsResolver;\n}): FilterBarField[] {\n const pick = (\n id: string,\n suggestions: FilterBarOption[],\n operators: TraceFilterOperatorId[] = TRACE_STRING_OPERATORS,\n ): FilterBarField => ({ ...spanFieldBase(id), operators, strict: true, suggestions });\n const names = entityNames.map(value => ({ value }));\n\n const field = (id: string): FilterBarField => {\n switch (id) {\n case 'status':\n return pick(id, STATUS_OPTIONS, TRACE_SYNTHETIC_OPERATORS);\n case 'spanType':\n return pick(id, SPAN_TYPE_OPTIONS, TRACE_REQUIRED_STRING_OPERATORS);\n case 'entityType':\n case 'parentEntityType':\n case 'rootEntityType':\n return pick(id, ENTITY_TYPE_OPTIONS);\n case 'entityName':\n case 'rootEntityName':\n return pick(id, names);\n case 'environment':\n return pick(\n id,\n environments.map(value => ({ value })),\n );\n case 'name': {\n const resolver = valueSuggestions?.(id);\n return {\n ...spanFieldBase(id),\n operators: TRACE_TEXT_OPERATORS,\n ...(resolver ? { strict: true, suggestions: resolver } : {}),\n };\n }\n case 'error':\n return { ...spanFieldBase(id), operators: TRACE_PRESENCE_OPERATORS };\n case 'durationMs':\n case 'timeToFirstChunkMs':\n case 'timeToFirstTokenMs':\n return { ...spanFieldBase(id), type: 'number', operators: TRACE_NUMBER_OPERATORS };\n case 'traceId':\n case 'spanId':\n return { ...spanFieldBase(id), operators: TRACE_REQUIRED_STRING_OPERATORS };\n case 'model':\n case 'provider': {\n const resolver = valueSuggestions?.(id);\n return {\n ...spanFieldBase(id),\n operators: TRACE_STRING_OPERATORS,\n ...(resolver ? { suggestions: resolver } : {}),\n };\n }\n default:\n return { ...spanFieldBase(id), operators: TRACE_STRING_OPERATORS };\n }\n };\n\n const offered = withoutUnrecordedStreamingTimings(\n new Set([...SPAN_CORE_FILTER_FIELD_IDS, ...SPAN_CONTEXT_FILTER_FIELD_IDS]),\n {\n withTimeToFirstChunk,\n withTimeToFirstToken,\n },\n );\n const sortFields = (ids: readonly string[]) =>\n ids\n .filter(id => offered.has(id))\n .map(field)\n .sort((a, b) => a.label.localeCompare(b.label));\n return [\n ...sortFields(SPAN_CORE_FILTER_FIELD_IDS),\n ...(withContextFields ? sortFields(SPAN_CONTEXT_FILTER_FIELD_IDS) : []),\n ...(withModelFields ? SPAN_MODEL_FILTER_FIELD_IDS.map(field) : []),\n ...(withOutcomeFields ? createOutcomeFilterBarFields(spanFieldBase, valueSuggestions) : []),\n ];\n}\n\nfunction tokenToSpanQueryPredicate(\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 if (PRESENCE_ONLY_FIELD_IDS.has(fieldId) && !isPresence) return undefined;\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 (operatorId === 'matches' || operatorId === 'notMatches') {\n // The query rejects a text literal with no letters or digits.\n values = values.filter(value => /[\\p{L}\\p{M}\\p{N}]/u.test(String(value)));\n if (!values.length) 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 groupToSpanQueryPredicate(\n group: TraceFilterGroup,\n allowedFieldIds: ReadonlySet<string>,\n): TraceQueryScalarPredicate | undefined {\n const args = group.nodes\n .map(node =>\n isTraceFilterGroup(node)\n ? groupToSpanQueryPredicate(node, allowedFieldIds)\n : tokenToSpanQueryPredicate(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 span query `where` for the filter bar's tokens and groups, or `undefined` when nothing applies.\n * Conditions the span query can't run (unknown fields, context, model or outcome fields or streaming timings without\n * the capability, unusable values) are left out instead of failing the request.\n */\nexport function buildSpanQueryWhere(\n tokens: TraceFilterToken[],\n groups: TraceFilterGroup[],\n {\n withContextFields,\n withOutcomeFields = false,\n withModelFields = false,\n ...support\n }: StreamingTimingSupport & { withContextFields: boolean; withOutcomeFields?: boolean; withModelFields?: boolean },\n): TraceQueryScalarPredicate | undefined {\n const allowedFieldIds = withoutUnrecordedStreamingTimings(\n new Set([\n ...SPAN_CORE_FILTER_FIELD_IDS,\n ...(withContextFields ? SPAN_CONTEXT_FILTER_FIELD_IDS : []),\n ...(withOutcomeFields ? SPAN_OUTCOME_FILTER_FIELD_IDS : []),\n ...(withModelFields ? SPAN_MODEL_FILTER_FIELD_IDS : []),\n ]),\n support,\n );\n const args = [\n ...tokens.map(token => tokenToSpanQueryPredicate(token, allowedFieldIds)),\n ...groups.map(group => groupToSpanQueryPredicate(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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"}
@@ -1,4 +1,4 @@
1
- import { A as TRACE_TEXT_OPERATORS, D as TRACE_STRING_OPERATORS, S as TRACE_REQUIRED_STRING_OPERATORS, V as isLegacyAnyValue, X as traceFilterFieldIcon, Y as traceFilterFieldColor, k as TRACE_SYNTHETIC_OPERATORS, l as TRACE_FILTER_BAR_LABELS, lt as scalarPredicate, ot as isTraceFilterGroup, r as ROOT_ENTITY_TYPE_OPTIONS, v as TRACE_NUMBER_OPERATORS, w as TRACE_STATUS_OPTIONS, y as TRACE_PRESENCE_OPERATORS } from "../../trace-filters-C27yWcan.js";
1
+ import { D as TRACE_STRING_OPERATORS, F as createOutcomeFilterBarFields, Q as traceFilterFieldIcon, S as TRACE_REQUIRED_STRING_OPERATORS, U as isLegacyAnyValue, Z as traceFilterFieldColor, it as withoutUnrecordedStreamingTimings, j as TRACE_TEXT_OPERATORS, k as TRACE_SYNTHETIC_OPERATORS, l as TRACE_FILTER_BAR_LABELS, pt as scalarPredicate, r as ROOT_ENTITY_TYPE_OPTIONS, ut as isTraceFilterGroup, v as TRACE_NUMBER_OPERATORS, w as TRACE_STATUS_OPTIONS, y as TRACE_PRESENCE_OPERATORS } from "../../trace-filters-BJaebsxJ.js";
2
2
  import { EntityType, SpanType } from "@mastra/core/observability";
3
3
  // src/domains/spans/span-filters.ts
4
4
  /** Span query fields every store accepts. `startedAt`/`endedAt` are left to the time-range chip. */
@@ -9,6 +9,7 @@ var SPAN_CORE_FILTER_FIELD_IDS = [
9
9
  "error",
10
10
  "durationMs",
11
11
  "timeToFirstChunkMs",
12
+ "timeToFirstTokenMs",
12
13
  "entityType",
13
14
  "entityId",
14
15
  "entityName",
@@ -39,9 +40,15 @@ var SPAN_CONTEXT_FILTER_FIELD_IDS = [
39
40
  "rootEntityId",
40
41
  "rootEntityName"
41
42
  ];
42
- var CORE_FIELD_IDS = new Set(SPAN_CORE_FILTER_FIELD_IDS);
43
- var ALL_FIELD_IDS = /* @__PURE__ */ new Set([...SPAN_CORE_FILTER_FIELD_IDS, ...SPAN_CONTEXT_FILTER_FIELD_IDS]);
44
- var NUMBER_FIELD_IDS = /* @__PURE__ */ new Set(["durationMs", "timeToFirstChunkMs"]);
43
+ /** Span query fields the server only accepts when the store declares `spanQueryOutcomeFields`. */
44
+ var SPAN_OUTCOME_FILTER_FIELD_IDS = ["outcome", "stopReason"];
45
+ /** Span query fields the server only accepts when the store declares `spanQueryModelFields`. */
46
+ var SPAN_MODEL_FILTER_FIELD_IDS = ["model", "provider"];
47
+ var NUMBER_FIELD_IDS = /* @__PURE__ */ new Set([
48
+ "durationMs",
49
+ "timeToFirstChunkMs",
50
+ "timeToFirstTokenMs"
51
+ ]);
45
52
  /** The query can only test `error` for presence; any other operator is rejected. */
46
53
  var PRESENCE_ONLY_FIELD_IDS = /* @__PURE__ */ new Set(["error"]);
47
54
  /** Fields every span carries. On any other field, "is not X" must also keep spans where it is missing. */
@@ -61,6 +68,7 @@ var SPAN_FILTER_BAR_LABELS = {
61
68
  parentSpanId: "Parent span ID",
62
69
  error: "Error",
63
70
  timeToFirstChunkMs: "Time to first chunk (ms)",
71
+ timeToFirstTokenMs: "Time to first token (ms)",
64
72
  executionSource: "Execution source",
65
73
  entityType: "Primitive type",
66
74
  entityVersionId: "Primitive version ID",
@@ -71,7 +79,9 @@ var SPAN_FILTER_BAR_LABELS = {
71
79
  rootEntityType: "Root primitive type",
72
80
  rootEntityId: "Root primitive ID",
73
81
  rootEntityName: "Root primitive name",
74
- rootEntityVersionId: "Root primitive version ID"
82
+ rootEntityVersionId: "Root primitive version ID",
83
+ model: "Model",
84
+ provider: "Provider"
75
85
  };
76
86
  /** Span fields without their own trace icon borrow the icon of the closest trace field. */
77
87
  var SPAN_ICON_FIELD_ALIASES = {
@@ -79,6 +89,7 @@ var SPAN_ICON_FIELD_ALIASES = {
79
89
  spanType: "spans.spanType",
80
90
  error: "spans.error",
81
91
  timeToFirstChunkMs: "durationMs",
92
+ timeToFirstTokenMs: "durationMs",
82
93
  spanId: "traceId",
83
94
  parentSpanId: "traceId",
84
95
  executionSource: "runId",
@@ -90,7 +101,9 @@ var SPAN_ICON_FIELD_ALIASES = {
90
101
  rootEntityId: "entityId",
91
102
  rootEntityVersionId: "entityId",
92
103
  parentEntityName: "entityName",
93
- rootEntityName: "entityName"
104
+ rootEntityName: "entityName",
105
+ model: "spans.model",
106
+ provider: "spans.provider"
94
107
  };
95
108
  var spanFieldBase = (id) => ({
96
109
  id,
@@ -117,7 +130,7 @@ var STATUS_OPTIONS = TRACE_STATUS_OPTIONS.filter((option) => option.value !== "r
117
130
  label: option.label
118
131
  }));
119
132
  /** FilterBar fields for the spans page: only paths and operators `querySpans()` accepts. */
120
- function createSpanFilterBarFields({ withContextFields, entityNames, environments, valueSuggestions }) {
133
+ function createSpanFilterBarFields({ withContextFields, withTimeToFirstChunk, withTimeToFirstToken, withOutcomeFields = false, withModelFields = false, entityNames, environments, valueSuggestions }) {
121
134
  const pick = (id, suggestions, operators = TRACE_STRING_OPERATORS) => ({
122
135
  ...spanFieldBase(id),
123
136
  operators,
@@ -151,7 +164,8 @@ function createSpanFilterBarFields({ withContextFields, entityNames, environment
151
164
  operators: TRACE_PRESENCE_OPERATORS
152
165
  };
153
166
  case "durationMs":
154
- case "timeToFirstChunkMs": return {
167
+ case "timeToFirstChunkMs":
168
+ case "timeToFirstTokenMs": return {
155
169
  ...spanFieldBase(id),
156
170
  type: "number",
157
171
  operators: TRACE_NUMBER_OPERATORS
@@ -161,14 +175,32 @@ function createSpanFilterBarFields({ withContextFields, entityNames, environment
161
175
  ...spanFieldBase(id),
162
176
  operators: TRACE_REQUIRED_STRING_OPERATORS
163
177
  };
178
+ case "model":
179
+ case "provider": {
180
+ const resolver = valueSuggestions?.(id);
181
+ return {
182
+ ...spanFieldBase(id),
183
+ operators: TRACE_STRING_OPERATORS,
184
+ ...resolver ? { suggestions: resolver } : {}
185
+ };
186
+ }
164
187
  default: return {
165
188
  ...spanFieldBase(id),
166
189
  operators: TRACE_STRING_OPERATORS
167
190
  };
168
191
  }
169
192
  };
170
- const sortFields = (ids) => ids.map(field).sort((a, b) => a.label.localeCompare(b.label));
171
- return [...sortFields(SPAN_CORE_FILTER_FIELD_IDS), ...withContextFields ? sortFields(SPAN_CONTEXT_FILTER_FIELD_IDS) : []];
193
+ const offered = withoutUnrecordedStreamingTimings(/* @__PURE__ */ new Set([...SPAN_CORE_FILTER_FIELD_IDS, ...SPAN_CONTEXT_FILTER_FIELD_IDS]), {
194
+ withTimeToFirstChunk,
195
+ withTimeToFirstToken
196
+ });
197
+ const sortFields = (ids) => ids.filter((id) => offered.has(id)).map(field).sort((a, b) => a.label.localeCompare(b.label));
198
+ return [
199
+ ...sortFields(SPAN_CORE_FILTER_FIELD_IDS),
200
+ ...withContextFields ? sortFields(SPAN_CONTEXT_FILTER_FIELD_IDS) : [],
201
+ ...withModelFields ? SPAN_MODEL_FILTER_FIELD_IDS.map(field) : [],
202
+ ...withOutcomeFields ? createOutcomeFilterBarFields(spanFieldBase, valueSuggestions) : []
203
+ ];
172
204
  }
173
205
  function tokenToSpanQueryPredicate(token, allowedFieldIds) {
174
206
  const { fieldId } = token;
@@ -208,17 +240,22 @@ function groupToSpanQueryPredicate(group, allowedFieldIds) {
208
240
  }
209
241
  /**
210
242
  * The span query `where` for the filter bar's tokens and groups, or `undefined` when nothing applies.
211
- * Conditions the span query can't run (unknown fields, context fields without the capability,
212
- * unusable values) are left out instead of failing the request.
243
+ * Conditions the span query can't run (unknown fields, context, model or outcome fields or streaming timings without
244
+ * the capability, unusable values) are left out instead of failing the request.
213
245
  */
214
- function buildSpanQueryWhere(tokens, groups, { withContextFields }) {
215
- const allowedFieldIds = withContextFields ? ALL_FIELD_IDS : CORE_FIELD_IDS;
246
+ function buildSpanQueryWhere(tokens, groups, { withContextFields, withOutcomeFields = false, withModelFields = false, ...support }) {
247
+ const allowedFieldIds = withoutUnrecordedStreamingTimings(/* @__PURE__ */ new Set([
248
+ ...SPAN_CORE_FILTER_FIELD_IDS,
249
+ ...withContextFields ? SPAN_CONTEXT_FILTER_FIELD_IDS : [],
250
+ ...withOutcomeFields ? SPAN_OUTCOME_FILTER_FIELD_IDS : [],
251
+ ...withModelFields ? SPAN_MODEL_FILTER_FIELD_IDS : []
252
+ ]), support);
216
253
  const args = [...tokens.map((token) => tokenToSpanQueryPredicate(token, allowedFieldIds)), ...groups.map((group) => groupToSpanQueryPredicate(group, allowedFieldIds))].filter((predicate) => Boolean(predicate));
217
254
  return args.length ? {
218
255
  op: "and",
219
256
  args
220
257
  } : void 0;
221
258
  }
222
- export { SPAN_CONTEXT_FILTER_FIELD_IDS, SPAN_CORE_FILTER_FIELD_IDS, buildSpanQueryWhere, createSpanFilterBarFields };
259
+ export { SPAN_CONTEXT_FILTER_FIELD_IDS, SPAN_CORE_FILTER_FIELD_IDS, SPAN_MODEL_FILTER_FIELD_IDS, SPAN_OUTCOME_FILTER_FIELD_IDS, buildSpanQueryWhere, createSpanFilterBarFields };
223
260
 
224
261
  //# sourceMappingURL=span-filters.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"span-filters.es.js","names":[],"sources":["../../../src/domains/spans/span-filters.ts"],"sourcesContent":["import { EntityType, SpanType } from '@mastra/core/observability';\nimport type { TraceQueryScalarPredicate } from '@mastra/core/storage';\nimport {\n isLegacyAnyValue,\n ROOT_ENTITY_TYPE_OPTIONS,\n TRACE_FILTER_BAR_LABELS,\n TRACE_NUMBER_OPERATORS,\n TRACE_PRESENCE_OPERATORS,\n TRACE_REQUIRED_STRING_OPERATORS,\n TRACE_STATUS_OPTIONS,\n TRACE_STRING_OPERATORS,\n TRACE_SYNTHETIC_OPERATORS,\n TRACE_TEXT_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, FilterBarSuggestionsResolver } from '@/ds/components/FilterBar/types';\n\n/** Span query fields every store accepts. `startedAt`/`endedAt` are left to the time-range chip. */\nexport const SPAN_CORE_FILTER_FIELD_IDS = [\n 'name',\n 'spanType',\n 'status',\n 'error',\n 'durationMs',\n 'timeToFirstChunkMs',\n 'entityType',\n 'entityId',\n 'entityName',\n 'entityVersionId',\n 'parentEntityVersionId',\n 'rootEntityVersionId',\n 'runId',\n 'sessionId',\n 'userId',\n 'organizationId',\n] as const;\n\n/** Span query fields the server only accepts when the store declares `spanQueryContextFields`. */\nexport const SPAN_CONTEXT_FILTER_FIELD_IDS = [\n 'traceId',\n 'spanId',\n 'parentSpanId',\n 'threadId',\n 'resourceId',\n 'requestId',\n 'serviceName',\n 'experimentId',\n 'environment',\n 'executionSource',\n 'parentEntityType',\n 'parentEntityId',\n 'parentEntityName',\n 'rootEntityType',\n 'rootEntityId',\n 'rootEntityName',\n] as const;\n\nconst CORE_FIELD_IDS: ReadonlySet<string> = new Set(SPAN_CORE_FILTER_FIELD_IDS);\nconst ALL_FIELD_IDS: ReadonlySet<string> = new Set([...SPAN_CORE_FILTER_FIELD_IDS, ...SPAN_CONTEXT_FILTER_FIELD_IDS]);\n\nconst NUMBER_FIELD_IDS: ReadonlySet<string> = new Set(['durationMs', 'timeToFirstChunkMs']);\n/** The query can only test `error` for presence; any other operator is rejected. */\nconst PRESENCE_ONLY_FIELD_IDS: ReadonlySet<string> = new Set(['error']);\n/** Fields every span carries. On any other field, \"is not X\" must also keep spans where it is missing. */\nconst REQUIRED_FIELD_IDS: ReadonlySet<string> = new Set([\n 'name',\n 'spanType',\n 'status',\n 'traceId',\n 'spanId',\n 'durationMs',\n]);\n\nconst SPAN_FILTER_BAR_LABELS: Record<string, string> = {\n ...TRACE_FILTER_BAR_LABELS,\n name: 'Span name',\n spanType: 'Span type',\n spanId: 'Span ID',\n parentSpanId: 'Parent span ID',\n error: 'Error',\n timeToFirstChunkMs: 'Time to first chunk (ms)',\n executionSource: 'Execution source',\n entityType: 'Primitive type',\n entityVersionId: 'Primitive version ID',\n parentEntityType: 'Parent primitive type',\n parentEntityId: 'Parent primitive ID',\n parentEntityName: 'Parent primitive name',\n parentEntityVersionId: 'Parent primitive version ID',\n rootEntityType: 'Root primitive type',\n rootEntityId: 'Root primitive ID',\n rootEntityName: 'Root primitive name',\n rootEntityVersionId: 'Root primitive version ID',\n};\n\n/** Span fields without their own trace icon borrow the icon of the closest trace field. */\nconst SPAN_ICON_FIELD_ALIASES: Record<string, string> = {\n name: 'spans.name',\n spanType: 'spans.spanType',\n error: 'spans.error',\n timeToFirstChunkMs: 'durationMs',\n spanId: 'traceId',\n parentSpanId: 'traceId',\n executionSource: 'runId',\n entityType: 'rootEntityType',\n parentEntityType: 'rootEntityType',\n entityVersionId: 'entityId',\n parentEntityId: 'entityId',\n parentEntityVersionId: 'entityId',\n rootEntityId: 'entityId',\n rootEntityVersionId: 'entityId',\n parentEntityName: 'entityName',\n rootEntityName: 'entityName',\n};\n\nconst spanFieldBase = (id: string) => ({\n id,\n label: SPAN_FILTER_BAR_LABELS[id] ?? id,\n icon: traceFilterFieldIcon(SPAN_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 byLabel = (a: { label?: string; value: string }, b: { label?: string; value: string }) =>\n (a.label ?? a.value).localeCompare(b.label ?? b.value);\n\nconst ENTITY_TYPE_LABELS: Record<string, string> = Object.fromEntries(\n ROOT_ENTITY_TYPE_OPTIONS.map(option => [option.entityType, option.label]),\n);\n\nconst SPAN_TYPE_OPTIONS: FilterBarOption[] = Object.values(SpanType)\n .map(value => ({ value, label: humanize(value) }))\n .sort(byLabel);\n\nconst ENTITY_TYPE_OPTIONS: FilterBarOption[] = Object.values(EntityType)\n .map(value => ({ value, label: ENTITY_TYPE_LABELS[value] ?? humanize(value) }))\n .sort(byLabel);\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 spans page: only paths and operators `querySpans()` accepts. */\nexport function createSpanFilterBarFields({\n withContextFields,\n entityNames,\n environments,\n valueSuggestions,\n}: {\n /** Offer the context fields. Only when the server declares `spanQueryContextFields`. */\n withContextFields: boolean;\n entityNames: readonly string[];\n environments: readonly string[];\n /** Builds a lazy value resolver for a span field. Absent → free text. */\n valueSuggestions?: (path: string) => FilterBarSuggestionsResolver;\n}): FilterBarField[] {\n const pick = (\n id: string,\n suggestions: FilterBarOption[],\n operators: TraceFilterOperatorId[] = TRACE_STRING_OPERATORS,\n ): FilterBarField => ({ ...spanFieldBase(id), operators, strict: true, suggestions });\n const names = entityNames.map(value => ({ value }));\n\n const field = (id: string): FilterBarField => {\n switch (id) {\n case 'status':\n return pick(id, STATUS_OPTIONS, TRACE_SYNTHETIC_OPERATORS);\n case 'spanType':\n return pick(id, SPAN_TYPE_OPTIONS, TRACE_REQUIRED_STRING_OPERATORS);\n case 'entityType':\n case 'parentEntityType':\n case 'rootEntityType':\n return pick(id, ENTITY_TYPE_OPTIONS);\n case 'entityName':\n case 'rootEntityName':\n return pick(id, names);\n case 'environment':\n return pick(\n id,\n environments.map(value => ({ value })),\n );\n case 'name': {\n const resolver = valueSuggestions?.(id);\n return {\n ...spanFieldBase(id),\n operators: TRACE_TEXT_OPERATORS,\n ...(resolver ? { strict: true, suggestions: resolver } : {}),\n };\n }\n case 'error':\n return { ...spanFieldBase(id), operators: TRACE_PRESENCE_OPERATORS };\n case 'durationMs':\n case 'timeToFirstChunkMs':\n return { ...spanFieldBase(id), type: 'number', operators: TRACE_NUMBER_OPERATORS };\n case 'traceId':\n case 'spanId':\n return { ...spanFieldBase(id), operators: TRACE_REQUIRED_STRING_OPERATORS };\n default:\n return { ...spanFieldBase(id), operators: TRACE_STRING_OPERATORS };\n }\n };\n\n const sortFields = (ids: readonly string[]) => ids.map(field).sort((a, b) => a.label.localeCompare(b.label));\n return [\n ...sortFields(SPAN_CORE_FILTER_FIELD_IDS),\n ...(withContextFields ? sortFields(SPAN_CONTEXT_FILTER_FIELD_IDS) : []),\n ];\n}\n\nfunction tokenToSpanQueryPredicate(\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 if (PRESENCE_ONLY_FIELD_IDS.has(fieldId) && !isPresence) return undefined;\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 (operatorId === 'matches' || operatorId === 'notMatches') {\n // The query rejects a text literal with no letters or digits.\n values = values.filter(value => /[\\p{L}\\p{M}\\p{N}]/u.test(String(value)));\n if (!values.length) 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 groupToSpanQueryPredicate(\n group: TraceFilterGroup,\n allowedFieldIds: ReadonlySet<string>,\n): TraceQueryScalarPredicate | undefined {\n const args = group.nodes\n .map(node =>\n isTraceFilterGroup(node)\n ? groupToSpanQueryPredicate(node, allowedFieldIds)\n : tokenToSpanQueryPredicate(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 span query `where` for the filter bar's tokens and groups, or `undefined` when nothing applies.\n * Conditions the span query can't run (unknown fields, context fields without the capability,\n * unusable values) are left out instead of failing the request.\n */\nexport function buildSpanQueryWhere(\n tokens: TraceFilterToken[],\n groups: TraceFilterGroup[],\n { withContextFields }: { withContextFields: boolean },\n): TraceQueryScalarPredicate | undefined {\n const allowedFieldIds = withContextFields ? ALL_FIELD_IDS : CORE_FIELD_IDS;\n const args = [\n ...tokens.map(token => tokenToSpanQueryPredicate(token, allowedFieldIds)),\n ...groups.map(group => groupToSpanQueryPredicate(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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"}
1
+ {"version":3,"file":"span-filters.es.js","names":[],"sources":["../../../src/domains/spans/span-filters.ts"],"sourcesContent":["import { EntityType, SpanType } from '@mastra/core/observability';\nimport type { TraceQueryScalarPredicate } from '@mastra/core/storage';\nimport {\n isLegacyAnyValue,\n ROOT_ENTITY_TYPE_OPTIONS,\n TRACE_FILTER_BAR_LABELS,\n TRACE_NUMBER_OPERATORS,\n TRACE_PRESENCE_OPERATORS,\n TRACE_REQUIRED_STRING_OPERATORS,\n TRACE_STATUS_OPTIONS,\n TRACE_STRING_OPERATORS,\n TRACE_SYNTHETIC_OPERATORS,\n TRACE_TEXT_OPERATORS,\n createOutcomeFilterBarFields,\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, FilterBarSuggestionsResolver } from '@/ds/components/FilterBar/types';\n\n/** Span query fields every store accepts. `startedAt`/`endedAt` are left to the time-range chip. */\nexport const SPAN_CORE_FILTER_FIELD_IDS = [\n 'name',\n 'spanType',\n 'status',\n 'error',\n 'durationMs',\n 'timeToFirstChunkMs',\n 'timeToFirstTokenMs',\n 'entityType',\n 'entityId',\n 'entityName',\n 'entityVersionId',\n 'parentEntityVersionId',\n 'rootEntityVersionId',\n 'runId',\n 'sessionId',\n 'userId',\n 'organizationId',\n] as const;\n\n/** Span query fields the server only accepts when the store declares `spanQueryContextFields`. */\nexport const SPAN_CONTEXT_FILTER_FIELD_IDS = [\n 'traceId',\n 'spanId',\n 'parentSpanId',\n 'threadId',\n 'resourceId',\n 'requestId',\n 'serviceName',\n 'experimentId',\n 'environment',\n 'executionSource',\n 'parentEntityType',\n 'parentEntityId',\n 'parentEntityName',\n 'rootEntityType',\n 'rootEntityId',\n 'rootEntityName',\n] as const;\n\n/** Span query fields the server only accepts when the store declares `spanQueryOutcomeFields`. */\nexport const SPAN_OUTCOME_FILTER_FIELD_IDS = ['outcome', 'stopReason'] as const;\n\n/** Span query fields the server only accepts when the store declares `spanQueryModelFields`. */\nexport const SPAN_MODEL_FILTER_FIELD_IDS = ['model', 'provider'] as const;\n\nconst NUMBER_FIELD_IDS: ReadonlySet<string> = new Set(['durationMs', 'timeToFirstChunkMs', 'timeToFirstTokenMs']);\n/** The query can only test `error` for presence; any other operator is rejected. */\nconst PRESENCE_ONLY_FIELD_IDS: ReadonlySet<string> = new Set(['error']);\n/** Fields every span carries. On any other field, \"is not X\" must also keep spans where it is missing. */\nconst REQUIRED_FIELD_IDS: ReadonlySet<string> = new Set([\n 'name',\n 'spanType',\n 'status',\n 'traceId',\n 'spanId',\n 'durationMs',\n]);\n\nconst SPAN_FILTER_BAR_LABELS: Record<string, string> = {\n ...TRACE_FILTER_BAR_LABELS,\n name: 'Span name',\n spanType: 'Span type',\n spanId: 'Span ID',\n parentSpanId: 'Parent span ID',\n error: 'Error',\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 parentEntityType: 'Parent primitive type',\n parentEntityId: 'Parent primitive ID',\n parentEntityName: 'Parent primitive name',\n parentEntityVersionId: 'Parent primitive version ID',\n rootEntityType: 'Root primitive type',\n rootEntityId: 'Root primitive ID',\n rootEntityName: 'Root primitive name',\n rootEntityVersionId: 'Root primitive version ID',\n model: 'Model',\n provider: 'Provider',\n};\n\n/** Span fields without their own trace icon borrow the icon of the closest trace field. */\nconst SPAN_ICON_FIELD_ALIASES: Record<string, string> = {\n name: 'spans.name',\n spanType: 'spans.spanType',\n error: 'spans.error',\n timeToFirstChunkMs: 'durationMs',\n timeToFirstTokenMs: 'durationMs',\n spanId: 'traceId',\n parentSpanId: 'traceId',\n executionSource: 'runId',\n entityType: 'rootEntityType',\n parentEntityType: 'rootEntityType',\n entityVersionId: 'entityId',\n parentEntityId: 'entityId',\n parentEntityVersionId: 'entityId',\n rootEntityId: 'entityId',\n rootEntityVersionId: 'entityId',\n parentEntityName: 'entityName',\n rootEntityName: 'entityName',\n model: 'spans.model',\n provider: 'spans.provider',\n};\n\nconst spanFieldBase = (id: string) => ({\n id,\n label: SPAN_FILTER_BAR_LABELS[id] ?? id,\n icon: traceFilterFieldIcon(SPAN_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 byLabel = (a: { label?: string; value: string }, b: { label?: string; value: string }) =>\n (a.label ?? a.value).localeCompare(b.label ?? b.value);\n\nconst ENTITY_TYPE_LABELS: Record<string, string> = Object.fromEntries(\n ROOT_ENTITY_TYPE_OPTIONS.map(option => [option.entityType, option.label]),\n);\n\nconst SPAN_TYPE_OPTIONS: FilterBarOption[] = Object.values(SpanType)\n .map(value => ({ value, label: humanize(value) }))\n .sort(byLabel);\n\nconst ENTITY_TYPE_OPTIONS: FilterBarOption[] = Object.values(EntityType)\n .map(value => ({ value, label: ENTITY_TYPE_LABELS[value] ?? humanize(value) }))\n .sort(byLabel);\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 spans page: only paths and operators `querySpans()` accepts. */\nexport function createSpanFilterBarFields({\n withContextFields,\n withTimeToFirstChunk,\n withTimeToFirstToken,\n withOutcomeFields = false,\n withModelFields = false,\n entityNames,\n environments,\n valueSuggestions,\n}: StreamingTimingSupport & {\n /** Offer the context fields. Only when the server declares `spanQueryContextFields`. */\n withContextFields: boolean;\n /** Offer `outcome` and `stopReason`. Only when the server declares `spanQueryOutcomeFields`. */\n withOutcomeFields?: boolean;\n /** Offer `model` and `provider`. Only when the server declares `spanQueryModelFields`. */\n withModelFields?: boolean;\n entityNames: readonly string[];\n environments: readonly string[];\n /** Builds a lazy value resolver for a span field. Absent → free text. */\n valueSuggestions?: (path: string) => FilterBarSuggestionsResolver;\n}): FilterBarField[] {\n const pick = (\n id: string,\n suggestions: FilterBarOption[],\n operators: TraceFilterOperatorId[] = TRACE_STRING_OPERATORS,\n ): FilterBarField => ({ ...spanFieldBase(id), operators, strict: true, suggestions });\n const names = entityNames.map(value => ({ value }));\n\n const field = (id: string): FilterBarField => {\n switch (id) {\n case 'status':\n return pick(id, STATUS_OPTIONS, TRACE_SYNTHETIC_OPERATORS);\n case 'spanType':\n return pick(id, SPAN_TYPE_OPTIONS, TRACE_REQUIRED_STRING_OPERATORS);\n case 'entityType':\n case 'parentEntityType':\n case 'rootEntityType':\n return pick(id, ENTITY_TYPE_OPTIONS);\n case 'entityName':\n case 'rootEntityName':\n return pick(id, names);\n case 'environment':\n return pick(\n id,\n environments.map(value => ({ value })),\n );\n case 'name': {\n const resolver = valueSuggestions?.(id);\n return {\n ...spanFieldBase(id),\n operators: TRACE_TEXT_OPERATORS,\n ...(resolver ? { strict: true, suggestions: resolver } : {}),\n };\n }\n case 'error':\n return { ...spanFieldBase(id), operators: TRACE_PRESENCE_OPERATORS };\n case 'durationMs':\n case 'timeToFirstChunkMs':\n case 'timeToFirstTokenMs':\n return { ...spanFieldBase(id), type: 'number', operators: TRACE_NUMBER_OPERATORS };\n case 'traceId':\n case 'spanId':\n return { ...spanFieldBase(id), operators: TRACE_REQUIRED_STRING_OPERATORS };\n case 'model':\n case 'provider': {\n const resolver = valueSuggestions?.(id);\n return {\n ...spanFieldBase(id),\n operators: TRACE_STRING_OPERATORS,\n ...(resolver ? { suggestions: resolver } : {}),\n };\n }\n default:\n return { ...spanFieldBase(id), operators: TRACE_STRING_OPERATORS };\n }\n };\n\n const offered = withoutUnrecordedStreamingTimings(\n new Set([...SPAN_CORE_FILTER_FIELD_IDS, ...SPAN_CONTEXT_FILTER_FIELD_IDS]),\n {\n withTimeToFirstChunk,\n withTimeToFirstToken,\n },\n );\n const sortFields = (ids: readonly string[]) =>\n ids\n .filter(id => offered.has(id))\n .map(field)\n .sort((a, b) => a.label.localeCompare(b.label));\n return [\n ...sortFields(SPAN_CORE_FILTER_FIELD_IDS),\n ...(withContextFields ? sortFields(SPAN_CONTEXT_FILTER_FIELD_IDS) : []),\n ...(withModelFields ? SPAN_MODEL_FILTER_FIELD_IDS.map(field) : []),\n ...(withOutcomeFields ? createOutcomeFilterBarFields(spanFieldBase, valueSuggestions) : []),\n ];\n}\n\nfunction tokenToSpanQueryPredicate(\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 if (PRESENCE_ONLY_FIELD_IDS.has(fieldId) && !isPresence) return undefined;\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 (operatorId === 'matches' || operatorId === 'notMatches') {\n // The query rejects a text literal with no letters or digits.\n values = values.filter(value => /[\\p{L}\\p{M}\\p{N}]/u.test(String(value)));\n if (!values.length) 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 groupToSpanQueryPredicate(\n group: TraceFilterGroup,\n allowedFieldIds: ReadonlySet<string>,\n): TraceQueryScalarPredicate | undefined {\n const args = group.nodes\n .map(node =>\n isTraceFilterGroup(node)\n ? groupToSpanQueryPredicate(node, allowedFieldIds)\n : tokenToSpanQueryPredicate(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 span query `where` for the filter bar's tokens and groups, or `undefined` when nothing applies.\n * Conditions the span query can't run (unknown fields, context, model or outcome fields or streaming timings without\n * the capability, unusable values) are left out instead of failing the request.\n */\nexport function buildSpanQueryWhere(\n tokens: TraceFilterToken[],\n groups: TraceFilterGroup[],\n {\n withContextFields,\n withOutcomeFields = false,\n withModelFields = false,\n ...support\n }: StreamingTimingSupport & { withContextFields: boolean; withOutcomeFields?: boolean; withModelFields?: boolean },\n): TraceQueryScalarPredicate | undefined {\n const allowedFieldIds = withoutUnrecordedStreamingTimings(\n new Set([\n ...SPAN_CORE_FILTER_FIELD_IDS,\n ...(withContextFields ? SPAN_CONTEXT_FILTER_FIELD_IDS : []),\n ...(withOutcomeFields ? SPAN_OUTCOME_FILTER_FIELD_IDS : []),\n ...(withModelFields ? SPAN_MODEL_FILTER_FIELD_IDS : []),\n ]),\n support,\n );\n const args = [\n ...tokens.map(token => tokenToSpanQueryPredicate(token, allowedFieldIds)),\n ...groups.map(group => groupToSpanQueryPredicate(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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"}
@@ -14,12 +14,17 @@ function spanToListRow(span) {
14
14
  model: span.model,
15
15
  provider: span.provider,
16
16
  status: span.status,
17
+ outcome: span.outcome,
18
+ stopReason: span.stopReason,
19
+ stopReasonContext: span.stopReasonContext,
17
20
  inputPreview: span.inputPreview,
18
21
  outputPreview: span.outputPreview ?? void 0,
19
22
  errorPreview: span.errorPreview ?? void 0,
20
23
  startedAt: span.startedAt,
21
24
  endedAt: span.endedAt,
22
- createdAt: span.startedAt
25
+ createdAt: span.startedAt,
26
+ timeToFirstChunkMs: span.timeToFirstChunkMs,
27
+ timeToFirstTokenMs: span.timeToFirstTokenMs
23
28
  };
24
29
  }
25
30
  exports.spanToListRow = spanToListRow;
@@ -1 +1 @@
1
- {"version":3,"file":"span-list-row.cjs.js","names":[],"sources":["../../../src/domains/spans/span-list-row.ts"],"sourcesContent":["import type { SpanRow } from '@mastra/react/hooks/traces';\nimport type { TracesListViewTrace } from '@/domains/traces/components/traces-list-view';\n\n// `entityName` is left out: the list's Name column prefers it over `name`, which would label every\n// span of an agent with the agent's name instead of the span's own name.\nexport function spanToListRow(span: SpanRow): TracesListViewTrace {\n return {\n traceId: span.traceId,\n spanId: span.spanId,\n parentSpanId: span.parentSpanId,\n name: span.name,\n entityType: span.entityType,\n entityId: span.entityId,\n threadId: span.threadId,\n resourceId: span.resourceId,\n environment: span.environment,\n model: span.model,\n provider: span.provider,\n status: span.status,\n inputPreview: span.inputPreview,\n outputPreview: span.outputPreview ?? undefined,\n errorPreview: span.errorPreview ?? undefined,\n startedAt: span.startedAt,\n endedAt: span.endedAt,\n createdAt: span.startedAt,\n };\n}\n"],"mappings":";;AAKA,SAAgB,cAAc,MAAoC;CAChE,OAAO;EACL,SAAS,KAAK;EACd,QAAQ,KAAK;EACb,cAAc,KAAK;EACnB,MAAM,KAAK;EACX,YAAY,KAAK;EACjB,UAAU,KAAK;EACf,UAAU,KAAK;EACf,YAAY,KAAK;EACjB,aAAa,KAAK;EAClB,OAAO,KAAK;EACZ,UAAU,KAAK;EACf,QAAQ,KAAK;EACb,cAAc,KAAK;EACnB,eAAe,KAAK,iBAAiB,KAAA;EACrC,cAAc,KAAK,gBAAgB,KAAA;EACnC,WAAW,KAAK;EAChB,SAAS,KAAK;EACd,WAAW,KAAK;CAClB;AACF"}
1
+ {"version":3,"file":"span-list-row.cjs.js","names":[],"sources":["../../../src/domains/spans/span-list-row.ts"],"sourcesContent":["import type { SpanRow } from '@mastra/react/hooks/traces';\nimport type { TracesListViewTrace } from '@/domains/traces/components/traces-list-view';\n\n// `entityName` is left out: the list's Name column prefers it over `name`, which would label every\n// span of an agent with the agent's name instead of the span's own name.\nexport function spanToListRow(span: SpanRow): TracesListViewTrace {\n return {\n traceId: span.traceId,\n spanId: span.spanId,\n parentSpanId: span.parentSpanId,\n name: span.name,\n entityType: span.entityType,\n entityId: span.entityId,\n threadId: span.threadId,\n resourceId: span.resourceId,\n environment: span.environment,\n model: span.model,\n provider: span.provider,\n status: span.status,\n outcome: span.outcome,\n stopReason: span.stopReason,\n stopReasonContext: span.stopReasonContext,\n inputPreview: span.inputPreview,\n outputPreview: span.outputPreview ?? undefined,\n errorPreview: span.errorPreview ?? undefined,\n startedAt: span.startedAt,\n endedAt: span.endedAt,\n createdAt: span.startedAt,\n timeToFirstChunkMs: span.timeToFirstChunkMs,\n timeToFirstTokenMs: span.timeToFirstTokenMs,\n };\n}\n"],"mappings":";;AAKA,SAAgB,cAAc,MAAoC;CAChE,OAAO;EACL,SAAS,KAAK;EACd,QAAQ,KAAK;EACb,cAAc,KAAK;EACnB,MAAM,KAAK;EACX,YAAY,KAAK;EACjB,UAAU,KAAK;EACf,UAAU,KAAK;EACf,YAAY,KAAK;EACjB,aAAa,KAAK;EAClB,OAAO,KAAK;EACZ,UAAU,KAAK;EACf,QAAQ,KAAK;EACb,SAAS,KAAK;EACd,YAAY,KAAK;EACjB,mBAAmB,KAAK;EACxB,cAAc,KAAK;EACnB,eAAe,KAAK,iBAAiB,KAAA;EACrC,cAAc,KAAK,gBAAgB,KAAA;EACnC,WAAW,KAAK;EAChB,SAAS,KAAK;EACd,WAAW,KAAK;EAChB,oBAAoB,KAAK;EACzB,oBAAoB,KAAK;CAC3B;AACF"}
@@ -13,12 +13,17 @@ function spanToListRow(span) {
13
13
  model: span.model,
14
14
  provider: span.provider,
15
15
  status: span.status,
16
+ outcome: span.outcome,
17
+ stopReason: span.stopReason,
18
+ stopReasonContext: span.stopReasonContext,
16
19
  inputPreview: span.inputPreview,
17
20
  outputPreview: span.outputPreview ?? void 0,
18
21
  errorPreview: span.errorPreview ?? void 0,
19
22
  startedAt: span.startedAt,
20
23
  endedAt: span.endedAt,
21
- createdAt: span.startedAt
24
+ createdAt: span.startedAt,
25
+ timeToFirstChunkMs: span.timeToFirstChunkMs,
26
+ timeToFirstTokenMs: span.timeToFirstTokenMs
22
27
  };
23
28
  }
24
29
  export { spanToListRow };
@@ -1 +1 @@
1
- {"version":3,"file":"span-list-row.es.js","names":[],"sources":["../../../src/domains/spans/span-list-row.ts"],"sourcesContent":["import type { SpanRow } from '@mastra/react/hooks/traces';\nimport type { TracesListViewTrace } from '@/domains/traces/components/traces-list-view';\n\n// `entityName` is left out: the list's Name column prefers it over `name`, which would label every\n// span of an agent with the agent's name instead of the span's own name.\nexport function spanToListRow(span: SpanRow): TracesListViewTrace {\n return {\n traceId: span.traceId,\n spanId: span.spanId,\n parentSpanId: span.parentSpanId,\n name: span.name,\n entityType: span.entityType,\n entityId: span.entityId,\n threadId: span.threadId,\n resourceId: span.resourceId,\n environment: span.environment,\n model: span.model,\n provider: span.provider,\n status: span.status,\n inputPreview: span.inputPreview,\n outputPreview: span.outputPreview ?? undefined,\n errorPreview: span.errorPreview ?? undefined,\n startedAt: span.startedAt,\n endedAt: span.endedAt,\n createdAt: span.startedAt,\n };\n}\n"],"mappings":";AAKA,SAAgB,cAAc,MAAoC;CAChE,OAAO;EACL,SAAS,KAAK;EACd,QAAQ,KAAK;EACb,cAAc,KAAK;EACnB,MAAM,KAAK;EACX,YAAY,KAAK;EACjB,UAAU,KAAK;EACf,UAAU,KAAK;EACf,YAAY,KAAK;EACjB,aAAa,KAAK;EAClB,OAAO,KAAK;EACZ,UAAU,KAAK;EACf,QAAQ,KAAK;EACb,cAAc,KAAK;EACnB,eAAe,KAAK,iBAAiB,KAAA;EACrC,cAAc,KAAK,gBAAgB,KAAA;EACnC,WAAW,KAAK;EAChB,SAAS,KAAK;EACd,WAAW,KAAK;CAClB;AACF"}
1
+ {"version":3,"file":"span-list-row.es.js","names":[],"sources":["../../../src/domains/spans/span-list-row.ts"],"sourcesContent":["import type { SpanRow } from '@mastra/react/hooks/traces';\nimport type { TracesListViewTrace } from '@/domains/traces/components/traces-list-view';\n\n// `entityName` is left out: the list's Name column prefers it over `name`, which would label every\n// span of an agent with the agent's name instead of the span's own name.\nexport function spanToListRow(span: SpanRow): TracesListViewTrace {\n return {\n traceId: span.traceId,\n spanId: span.spanId,\n parentSpanId: span.parentSpanId,\n name: span.name,\n entityType: span.entityType,\n entityId: span.entityId,\n threadId: span.threadId,\n resourceId: span.resourceId,\n environment: span.environment,\n model: span.model,\n provider: span.provider,\n status: span.status,\n outcome: span.outcome,\n stopReason: span.stopReason,\n stopReasonContext: span.stopReasonContext,\n inputPreview: span.inputPreview,\n outputPreview: span.outputPreview ?? undefined,\n errorPreview: span.errorPreview ?? undefined,\n startedAt: span.startedAt,\n endedAt: span.endedAt,\n createdAt: span.startedAt,\n timeToFirstChunkMs: span.timeToFirstChunkMs,\n timeToFirstTokenMs: span.timeToFirstTokenMs,\n };\n}\n"],"mappings":";AAKA,SAAgB,cAAc,MAAoC;CAChE,OAAO;EACL,SAAS,KAAK;EACd,QAAQ,KAAK;EACb,cAAc,KAAK;EACnB,MAAM,KAAK;EACX,YAAY,KAAK;EACjB,UAAU,KAAK;EACf,UAAU,KAAK;EACf,YAAY,KAAK;EACjB,aAAa,KAAK;EAClB,OAAO,KAAK;EACZ,UAAU,KAAK;EACf,QAAQ,KAAK;EACb,SAAS,KAAK;EACd,YAAY,KAAK;EACjB,mBAAmB,KAAK;EACxB,cAAc,KAAK;EACnB,eAAe,KAAK,iBAAiB,KAAA;EACrC,cAAc,KAAK,gBAAgB,KAAA;EACnC,WAAW,KAAK;EAChB,SAAS,KAAK;EACd,WAAW,KAAK;EAChB,oBAAoB,KAAK;EACzB,oBAAoB,KAAK;CAC3B;AACF"}
@@ -1,13 +1,16 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_domains_threads_thread_filters = require("../thread-filters.cjs.js");
3
+ const require_domains_traces_trace_list_columns = require("../../traces/trace-list-columns.cjs.js");
4
+ const require_observability_saved_views = require("../../../observability-saved-views-CwCii7hh.cjs");
2
5
  const require_domains_observability_components_observability_list_body = require("../../observability/components/observability-list-body.cjs.js");
3
6
  const require_domains_observability_hooks_use_observability_list_filters = require("../../observability/hooks/use-observability-list-filters.cjs.js");
4
- const require_domains_traces_trace_list_columns = require("../../traces/trace-list-columns.cjs.js");
7
+ const require_domains_traces_components_columns_menu_columns_menu = require("../../traces/components/columns-menu/columns-menu.cjs.js");
5
8
  const require_domains_traces_components_no_traces_info = require("../../traces/components/no-traces-info.cjs.js");
6
9
  const require_domains_traces_components_traces_error_content = require("../../traces/components/traces-error-content.cjs.js");
7
10
  const require_domains_traces_components_traces_list_view = require("../../traces/components/traces-list-view.cjs.js");
11
+ const require_domains_traces_hooks_use_trace_column_preferences = require("../../traces/hooks/use-trace-column-preferences.cjs.js");
8
12
  const require_ActionRow = require("../../../ActionRow-BfK77pCT.cjs");
9
13
  const require_domains_threads_hooks_use_threads_list_source = require("../hooks/use-threads-list-source.cjs.js");
10
- const require_domains_threads_thread_filters = require("../thread-filters.cjs.js");
11
14
  const require_domains_threads_thread_list_row = require("../thread-list-row.cjs.js");
12
15
  const require_domains_threads_components_threads_filter_bar = require("./threads-filter-bar.cjs.js");
13
16
  const require_domains_traces_components_trace_thread_panel = require("../../traces/components/trace-thread-panel.cjs.js");
@@ -16,18 +19,34 @@ let react_jsx_runtime = require("react/jsx-runtime");
16
19
  let _mastra_react_hooks_capabilities = require("@mastra/react/hooks/capabilities");
17
20
  // src/domains/threads/components/threads-explorer-body.tsx
18
21
  /** The threads page body: filter bar, thread list and the thread drawer. Router-agnostic. */
19
- function ThreadsExplorerBody({ selectedThreadId, onSelectedThreadChange, onOpenScore }) {
20
- const filters = require_domains_observability_hooks_use_observability_list_filters.useObservabilityListFilters();
22
+ function ThreadsExplorerBody({ selectedThreadId, onSelectedThreadChange, onOpenScore, urlState }) {
23
+ const filters = require_domains_observability_hooks_use_observability_list_filters.useObservabilityListFilters(urlState);
21
24
  const { timeRange, tokens, groups, sort } = filters;
22
25
  const withQueryTrace = (0, _mastra_react_hooks_capabilities.useTraceQueryAvailable)().enabled;
23
26
  const withFeedback = (0, _mastra_react_hooks_capabilities.useFeedbackAvailable)().enabled;
27
+ const columns = require_domains_traces_hooks_use_trace_column_preferences.useTraceColumnPreferences({ scope: "threads" });
28
+ const { data: capabilities, isLoading: isCapabilitiesLoading } = (0, _mastra_react_hooks_capabilities.useObservabilityCapabilities)();
29
+ const withTimeToFirstChunk = capabilities?.capabilities.traceQueryTimeToFirstChunk ?? false;
30
+ const withTimeToFirstToken = capabilities?.capabilities.traceQueryTimeToFirstToken ?? false;
31
+ const displayedColumns = (0, react.useMemo)(() => isCapabilitiesLoading ? columns.preferences : require_domains_traces_trace_list_columns.withoutUnrecordedStreamingColumns(columns.preferences, {
32
+ withTimeToFirstChunk,
33
+ withTimeToFirstToken
34
+ }), [
35
+ columns.preferences,
36
+ isCapabilitiesLoading,
37
+ withTimeToFirstChunk,
38
+ withTimeToFirstToken
39
+ ]);
24
40
  const query = (0, react.useMemo)(() => {
25
- const where = require_domains_threads_thread_filters.buildThreadQueryWhere(tokens, groups);
41
+ const where = require_domains_threads_thread_filters.buildThreadQueryWhere(tokens, groups, {
42
+ withTimeToFirstChunk,
43
+ withTimeToFirstToken
44
+ });
26
45
  return {
27
46
  timeRange: { traces: timeRange },
28
47
  orderBy: [{
29
48
  field: "startedAt",
30
- direction: sort
49
+ direction: sort.direction
31
50
  }],
32
51
  ...where ? { where } : {}
33
52
  };
@@ -35,7 +54,9 @@ function ThreadsExplorerBody({ selectedThreadId, onSelectedThreadChange, onOpenS
35
54
  timeRange,
36
55
  sort,
37
56
  tokens,
38
- groups
57
+ groups,
58
+ withTimeToFirstChunk,
59
+ withTimeToFirstToken
39
60
  ]);
40
61
  const { threads, hasNextPage, isFetchingNextPage, setEndOfListElement, isLoading, isError, error } = require_domains_threads_hooks_use_threads_list_source.useThreadsListSource({
41
62
  query,
@@ -53,7 +74,15 @@ function ThreadsExplorerBody({ selectedThreadId, onSelectedThreadChange, onOpenS
53
74
  children: "Threads"
54
75
  }),
55
76
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_domains_observability_components_observability_list_body.ObservabilityListBody, {
56
- toolbar: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ActionRow.ActionRow, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ActionRow.ActionRow.Start, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_domains_threads_components_threads_filter_bar.ThreadsFilterBar, {
77
+ toolbar: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [urlState && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_observability_saved_views.ObservabilitySavedViews, {
78
+ page: "threads",
79
+ ...urlState,
80
+ columns
81
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ActionRow.ActionRow, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_ActionRow.ActionRow.Start, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_domains_traces_components_columns_menu_columns_menu.ColumnsMenu, {
82
+ scope: "threads",
83
+ value: columns.preferences,
84
+ onChange: columns.setPreferences
85
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_domains_threads_components_threads_filter_bar.ThreadsFilterBar, {
57
86
  datePreset: filters.datePreset,
58
87
  dateFrom: filters.dateFrom,
59
88
  dateTo: filters.dateTo,
@@ -64,7 +93,7 @@ function ThreadsExplorerBody({ selectedThreadId, onSelectedThreadChange, onOpenS
64
93
  onDateRangeChange: filters.onDateRangeChange,
65
94
  onFiltersChange: filters.onFiltersChange,
66
95
  disabled: isLoading
67
- }) }) }),
96
+ })] }) })] }),
68
97
  error: isError ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_domains_traces_components_traces_error_content.TracesErrorContent, {
69
98
  error,
70
99
  resource: "threads",
@@ -78,7 +107,8 @@ function ThreadsExplorerBody({ selectedThreadId, onSelectedThreadChange, onOpenS
78
107
  }) : void 0,
79
108
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_domains_traces_components_traces_list_view.TracesListView, {
80
109
  listId: "all-threads",
81
- columnPreferences: require_domains_traces_trace_list_columns.THREAD_LIST_COLUMN_PREFERENCES,
110
+ columnPreferences: displayedColumns,
111
+ outcomeColumn: false,
82
112
  traces: rows,
83
113
  isLoading,
84
114
  isFetchingNextPage,
@@ -86,8 +116,11 @@ function ThreadsExplorerBody({ selectedThreadId, onSelectedThreadChange, onOpenS
86
116
  setEndOfListElement,
87
117
  filtersApplied: filters.filtersApplied,
88
118
  resource: "threads",
89
- createdSort: sort,
90
- onSortChange: filters.setSort,
119
+ sort,
120
+ onSortChange: (next) => filters.setSort({
121
+ field: "startedAt",
122
+ direction: next.direction
123
+ }),
91
124
  featuredTraceId: selectedRow?.traceId,
92
125
  onTraceClick: handleThreadClick
93
126
  })
@@ -1 +1 @@
1
- {"version":3,"file":"threads-explorer-body.cjs.js","names":["useObservabilityListFilters","useTraceQueryAvailable","useFeedbackAvailable","useMemo","buildThreadQueryWhere","useThreadsListSource","threadToListRow","_Fragment","ObservabilityListBody","ActionRow","ThreadsFilterBar","TracesErrorContent","NoTracesInfo","TracesListView","THREAD_LIST_COLUMN_PREFERENCES","TraceThreadPanel"],"sources":["../../../../src/domains/threads/components/threads-explorer-body.tsx"],"sourcesContent":["import type { ThreadQueryArgs } from '@mastra/react/hooks/traces';\nimport { useMemo } from 'react';\nimport { useThreadsListSource } from '../hooks/use-threads-list-source';\nimport { buildThreadQueryWhere } from '../thread-filters';\nimport { threadToListRow } from '../thread-list-row';\nimport { ThreadsFilterBar } from './threads-filter-bar';\nimport { useFeedbackAvailable, useTraceQueryAvailable } from '@/domains/capabilities';\nimport { ObservabilityListBody } from '@/domains/observability/components/observability-list-body';\nimport { useObservabilityListFilters } from '@/domains/observability/hooks/use-observability-list-filters';\nimport { NoTracesInfo } from '@/domains/traces/components/no-traces-info';\nimport { TraceThreadPanel } from '@/domains/traces/components/trace-thread-panel';\nimport { TracesErrorContent } from '@/domains/traces/components/traces-error-content';\nimport { TracesListView } from '@/domains/traces/components/traces-list-view';\nimport type { TracesListViewTrace } from '@/domains/traces/components/traces-list-view';\nimport { THREAD_LIST_COLUMN_PREFERENCES } from '@/domains/traces/trace-list-columns';\nimport { ActionRow } from '@/ds/components/ActionRow';\n\nexport type ThreadsExplorerBodyProps = {\n /** The open thread. The host keeps it (e.g. in the URL) so it survives a reload. */\n selectedThreadId: string | undefined;\n onSelectedThreadChange: (threadId: string | undefined) => void;\n /** Opens a score from the thread drawer; scores live on host routes. */\n onOpenScore: (traceId: string, scoreId: string) => void;\n};\n\n/** The threads page body: filter bar, thread list and the thread drawer. Router-agnostic. */\nexport function ThreadsExplorerBody({\n selectedThreadId,\n onSelectedThreadChange,\n onOpenScore,\n}: ThreadsExplorerBodyProps) {\n const filters = useObservabilityListFilters();\n const { timeRange, tokens, groups, sort } = filters;\n const withQueryTrace = useTraceQueryAvailable().enabled;\n const withFeedback = useFeedbackAvailable().enabled;\n\n // Threads with trace activity in the window, like the traces list for the same chip.\n const query = useMemo<ThreadQueryArgs>(() => {\n const where = buildThreadQueryWhere(tokens, groups);\n return {\n timeRange: { traces: timeRange },\n orderBy: [{ field: 'startedAt', direction: sort }],\n ...(where ? { where } : {}),\n };\n }, [timeRange, sort, tokens, groups]);\n\n const { threads, hasNextPage, isFetchingNextPage, setEndOfListElement, isLoading, isError, error } =\n useThreadsListSource({ query, rolling: filters.rolling });\n\n const rows = useMemo(() => (threads ?? []).map(threadToListRow), [threads]);\n const selectedRow = rows.find(row => row.threadId === selectedThreadId);\n\n // The drawer is modal, so the list behind it cannot be clicked while a thread is open.\n const handleThreadClick = (row: TracesListViewTrace) => {\n if (row.threadId) onSelectedThreadChange(row.threadId);\n };\n\n // Same rule as /traces: an empty window without filters gets the full-page empty state.\n const showEmptyState =\n !isLoading && !isError && rows.length === 0 && !filters.contentFiltersApplied && !selectedThreadId;\n\n return (\n <>\n <h1 className=\"sr-only\">Threads</h1>\n <ObservabilityListBody\n toolbar={\n <ActionRow>\n <ActionRow.Start>\n <ThreadsFilterBar\n datePreset={filters.datePreset}\n dateFrom={filters.dateFrom}\n dateTo={filters.dateTo}\n tokens={tokens}\n groups={groups}\n onDatePresetChange={filters.onDatePresetChange}\n onDateChange={filters.onDateChange}\n onDateRangeChange={filters.onDateRangeChange}\n onFiltersChange={filters.onFiltersChange}\n disabled={isLoading}\n />\n </ActionRow.Start>\n </ActionRow>\n }\n error={\n isError ? (\n <TracesErrorContent error={error} resource=\"threads\" errorTitle=\"Failed to load threads\" />\n ) : undefined\n }\n empty={\n showEmptyState ? (\n <NoTracesInfo\n resource=\"threads\"\n datePreset={filters.datePreset}\n dateFrom={filters.dateFrom}\n dateTo={filters.dateTo}\n />\n ) : undefined\n }\n >\n <TracesListView\n listId=\"all-threads\"\n columnPreferences={THREAD_LIST_COLUMN_PREFERENCES}\n traces={rows}\n isLoading={isLoading}\n isFetchingNextPage={isFetchingNextPage}\n hasNextPage={hasNextPage}\n setEndOfListElement={setEndOfListElement}\n filtersApplied={filters.filtersApplied}\n resource=\"threads\"\n createdSort={sort}\n onSortChange={filters.setSort}\n featuredTraceId={selectedRow?.traceId}\n onTraceClick={handleThreadClick}\n />\n </ObservabilityListBody>\n <TraceThreadPanel\n open={!!selectedThreadId}\n threadId={selectedThreadId ?? ''}\n depth={1}\n closeLabel=\"Close\"\n withQueryTrace={withQueryTrace}\n withFeedback={withFeedback}\n onOpenScore={onOpenScore}\n onClose={() => onSelectedThreadChange(undefined)}\n />\n </>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AA0BA,SAAgB,oBAAoB,EAClC,kBACA,wBACA,eAC2B;CAC3B,MAAM,UAAUA,mEAAAA,4BAA4B;CAC5C,MAAM,EAAE,WAAW,QAAQ,QAAQ,SAAS;CAC5C,MAAM,kBAAA,GAAiBC,iCAAAA,uBAAAA,CAAuB,CAAC,CAAC;CAChD,MAAM,gBAAA,GAAeC,iCAAAA,qBAAAA,CAAqB,CAAC,CAAC;CAG5C,MAAM,SAAA,GAAQC,MAAAA,QAAAA,OAA+B;EAC3C,MAAM,QAAQC,uCAAAA,sBAAsB,QAAQ,MAAM;EAClD,OAAO;GACL,WAAW,EAAE,QAAQ,UAAU;GAC/B,SAAS,CAAC;IAAE,OAAO;IAAa,WAAW;GAAK,CAAC;GACjD,GAAI,QAAQ,EAAE,MAAM,IAAI,CAAC;EAC3B;CACF,GAAG;EAAC;EAAW;EAAM;EAAQ;CAAM,CAAC;CAEpC,MAAM,EAAE,SAAS,aAAa,oBAAoB,qBAAqB,WAAW,SAAS,UACzFC,sDAAAA,qBAAqB;EAAE;EAAO,SAAS,QAAQ;CAAQ,CAAC;CAE1D,MAAM,QAAA,GAAOF,MAAAA,QAAAA,QAAe,WAAW,CAAC,EAAA,CAAG,IAAIG,wCAAAA,eAAe,GAAG,CAAC,OAAO,CAAC;CAC1E,MAAM,cAAc,KAAK,MAAK,QAAO,IAAI,aAAa,gBAAgB;CAGtE,MAAM,qBAAqB,QAA6B;EACtD,IAAI,IAAI,UAAU,uBAAuB,IAAI,QAAQ;CACvD;CAGA,MAAM,iBACJ,CAAC,aAAa,CAAC,WAAW,KAAK,WAAW,KAAK,CAAC,QAAQ,yBAAyB,CAAC;CAEpF,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAAC,kBAAAA,UAAA,EAAA,UAAA;EACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,MAAD;GAAI,WAAU;GAAU,UAAA;EAAW,CAAA;EACnC,iBAAA,GAAA,kBAAA,IAAA,CAACC,iEAAAA,uBAAD;GACE,SACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,kBAAAA,WAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,IAAA,CAACA,kBAAAA,UAAU,OAAX,EAAA,UACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,sDAAAA,kBAAD;IACE,YAAY,QAAQ;IACpB,UAAU,QAAQ;IAClB,QAAQ,QAAQ;IACR;IACA;IACR,oBAAoB,QAAQ;IAC5B,cAAc,QAAQ;IACtB,mBAAmB,QAAQ;IAC3B,iBAAiB,QAAQ;IACzB,UAAU;GACX,CAAA,EACc,CAAA,EACR,CAAA;GAEb,OACE,UACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,uDAAAA,oBAAD;IAA2B;IAAO,UAAS;IAAU,YAAW;GAA0B,CAAA,IACxF,KAAA;GAEN,OACE,iBACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,iDAAAA,cAAD;IACE,UAAS;IACT,YAAY,QAAQ;IACpB,UAAU,QAAQ;IAClB,QAAQ,QAAQ;GACjB,CAAA,IACC,KAAA;GAGN,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,mDAAAA,gBAAD;IACE,QAAO;IACP,mBAAmBC,0CAAAA;IACnB,QAAQ;IACG;IACS;IACP;IACQ;IACrB,gBAAgB,QAAQ;IACxB,UAAS;IACT,aAAa;IACb,cAAc,QAAQ;IACtB,iBAAiB,aAAa;IAC9B,cAAc;GACf,CAAA;EACoB,CAAA;EACvB,iBAAA,GAAA,kBAAA,IAAA,CAACC,qDAAAA,kBAAD;GACE,MAAM,CAAC,CAAC;GACR,UAAU,oBAAoB;GAC9B,OAAO;GACP,YAAW;GACK;GACF;GACD;GACb,eAAe,uBAAuB,KAAA,CAAS;EAChD,CAAA;CACD,EAAA,CAAA;AAEN"}
1
+ {"version":3,"file":"threads-explorer-body.cjs.js","names":["useObservabilityListFilters","useTraceQueryAvailable","useFeedbackAvailable","useTraceColumnPreferences","useObservabilityCapabilities","useMemo","withoutUnrecordedStreamingColumns","buildThreadQueryWhere","useThreadsListSource","threadToListRow","_Fragment","ObservabilityListBody","ObservabilitySavedViews","ActionRow","ColumnsMenu","ThreadsFilterBar","TracesErrorContent","NoTracesInfo","TracesListView","TraceThreadPanel"],"sources":["../../../../src/domains/threads/components/threads-explorer-body.tsx"],"sourcesContent":["import { useObservabilityCapabilities } from '@mastra/react/hooks/capabilities';\nimport type { ThreadQueryArgs } from '@mastra/react/hooks/traces';\nimport { useMemo } from 'react';\nimport { useThreadsListSource } from '../hooks/use-threads-list-source';\nimport { buildThreadQueryWhere } from '../thread-filters';\nimport { threadToListRow } from '../thread-list-row';\nimport { ThreadsFilterBar } from './threads-filter-bar';\nimport { useFeedbackAvailable, useTraceQueryAvailable } from '@/domains/capabilities';\nimport { ObservabilityListBody } from '@/domains/observability/components/observability-list-body';\nimport { useObservabilityListFilters } from '@/domains/observability/hooks/use-observability-list-filters';\nimport type { ObservabilityListUrlState } from '@/domains/observability/hooks/use-observability-list-filters';\nimport { ObservabilitySavedViews } from '@/domains/observability/saved-views';\nimport { ColumnsMenu } from '@/domains/traces/components/columns-menu';\nimport { NoTracesInfo } from '@/domains/traces/components/no-traces-info';\nimport { TraceThreadPanel } from '@/domains/traces/components/trace-thread-panel';\nimport { TracesErrorContent } from '@/domains/traces/components/traces-error-content';\nimport { TracesListView } from '@/domains/traces/components/traces-list-view';\nimport type { TracesListViewTrace } from '@/domains/traces/components/traces-list-view';\nimport { useTraceColumnPreferences } from '@/domains/traces/hooks/use-trace-column-preferences';\nimport { withoutUnrecordedStreamingColumns } from '@/domains/traces/trace-list-columns';\nimport { ActionRow } from '@/ds/components/ActionRow';\n\nexport type ThreadsExplorerBodyProps = {\n /** The open thread. The host keeps it (e.g. in the URL) so it survives a reload. */\n selectedThreadId: string | undefined;\n onSelectedThreadChange: (threadId: string | undefined) => void;\n /** Opens a score from the thread drawer; scores live on host routes. */\n onOpenScore: (traceId: string, scoreId: string) => void;\n /** The host's search params, so the time range, filters and sort survive a reload. Omitted: kept in memory. */\n urlState?: ObservabilityListUrlState;\n};\n\n/** The threads page body: filter bar, thread list and the thread drawer. Router-agnostic. */\nexport function ThreadsExplorerBody({\n selectedThreadId,\n onSelectedThreadChange,\n onOpenScore,\n urlState,\n}: ThreadsExplorerBodyProps) {\n const filters = useObservabilityListFilters(urlState);\n const { timeRange, tokens, groups, sort } = filters;\n const withQueryTrace = useTraceQueryAvailable().enabled;\n const withFeedback = useFeedbackAvailable().enabled;\n const columns = useTraceColumnPreferences({ scope: 'threads' });\n const { data: capabilities, isLoading: isCapabilitiesLoading } = useObservabilityCapabilities();\n const withTimeToFirstChunk = capabilities?.capabilities.traceQueryTimeToFirstChunk ?? false;\n const withTimeToFirstToken = capabilities?.capabilities.traceQueryTimeToFirstToken ?? false;\n\n // Stored columns the store can't fill stay saved but aren't drawn, so they come back on a store that can.\n const displayedColumns = useMemo(\n () =>\n isCapabilitiesLoading\n ? columns.preferences\n : withoutUnrecordedStreamingColumns(columns.preferences, { withTimeToFirstChunk, withTimeToFirstToken }),\n [columns.preferences, isCapabilitiesLoading, withTimeToFirstChunk, withTimeToFirstToken],\n );\n\n // Threads with trace activity in the window, like the traces list for the same chip.\n const query = useMemo<ThreadQueryArgs>(() => {\n const where = buildThreadQueryWhere(tokens, groups, { withTimeToFirstChunk, withTimeToFirstToken });\n return {\n timeRange: { traces: timeRange },\n orderBy: [{ field: 'startedAt', direction: sort.direction }],\n ...(where ? { where } : {}),\n };\n }, [timeRange, sort, tokens, groups, withTimeToFirstChunk, withTimeToFirstToken]);\n\n const { threads, hasNextPage, isFetchingNextPage, setEndOfListElement, isLoading, isError, error } =\n useThreadsListSource({ query, rolling: filters.rolling });\n\n const rows = useMemo(() => (threads ?? []).map(threadToListRow), [threads]);\n const selectedRow = rows.find(row => row.threadId === selectedThreadId);\n\n // The drawer is modal, so the list behind it cannot be clicked while a thread is open.\n const handleThreadClick = (row: TracesListViewTrace) => {\n if (row.threadId) onSelectedThreadChange(row.threadId);\n };\n\n // Same rule as /traces: an empty window without filters gets the full-page empty state.\n const showEmptyState =\n !isLoading && !isError && rows.length === 0 && !filters.contentFiltersApplied && !selectedThreadId;\n\n return (\n <>\n <h1 className=\"sr-only\">Threads</h1>\n <ObservabilityListBody\n toolbar={\n <>\n {urlState && <ObservabilitySavedViews page=\"threads\" {...urlState} columns={columns} />}\n <ActionRow>\n <ActionRow.Start>\n <ColumnsMenu scope=\"threads\" value={columns.preferences} onChange={columns.setPreferences} />\n <ThreadsFilterBar\n datePreset={filters.datePreset}\n dateFrom={filters.dateFrom}\n dateTo={filters.dateTo}\n tokens={tokens}\n groups={groups}\n onDatePresetChange={filters.onDatePresetChange}\n onDateChange={filters.onDateChange}\n onDateRangeChange={filters.onDateRangeChange}\n onFiltersChange={filters.onFiltersChange}\n disabled={isLoading}\n />\n </ActionRow.Start>\n </ActionRow>\n </>\n }\n error={\n isError ? (\n <TracesErrorContent error={error} resource=\"threads\" errorTitle=\"Failed to load threads\" />\n ) : undefined\n }\n empty={\n showEmptyState ? (\n <NoTracesInfo\n resource=\"threads\"\n datePreset={filters.datePreset}\n dateFrom={filters.dateFrom}\n dateTo={filters.dateTo}\n />\n ) : undefined\n }\n >\n <TracesListView\n listId=\"all-threads\"\n columnPreferences={displayedColumns}\n outcomeColumn={false}\n traces={rows}\n isLoading={isLoading}\n isFetchingNextPage={isFetchingNextPage}\n hasNextPage={hasNextPage}\n setEndOfListElement={setEndOfListElement}\n filtersApplied={filters.filtersApplied}\n resource=\"threads\"\n sort={sort}\n onSortChange={next => filters.setSort({ field: 'startedAt', direction: next.direction })}\n featuredTraceId={selectedRow?.traceId}\n onTraceClick={handleThreadClick}\n />\n </ObservabilityListBody>\n <TraceThreadPanel\n open={!!selectedThreadId}\n threadId={selectedThreadId ?? ''}\n depth={1}\n closeLabel=\"Close\"\n withQueryTrace={withQueryTrace}\n withFeedback={withFeedback}\n onOpenScore={onOpenScore}\n onClose={() => onSelectedThreadChange(undefined)}\n />\n </>\n );\n}\n"],"mappings":"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"}