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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1052) hide show
  1. package/dist/AgentIndicator-Bs2S8AWJ.js +847 -0
  2. package/dist/AgentIndicator-Bs2S8AWJ.js.map +1 -0
  3. package/dist/AgentIndicator-to30W73z.cjs +864 -0
  4. package/dist/AgentIndicator-to30W73z.cjs.map +1 -0
  5. package/dist/AgentIndicator.css +28 -0
  6. package/dist/{Arrival-NpBOyV52.js → Arrival-CJFEOXr5.js} +33 -3
  7. package/dist/Arrival-CJFEOXr5.js.map +1 -0
  8. package/dist/{Arrival-Dm6Vgn78.cjs → Arrival-Cs1oWjo4.cjs} +43 -1
  9. package/dist/Arrival-Cs1oWjo4.cjs.map +1 -0
  10. package/dist/{Comment-CUQvfikb.cjs → Comment-KYUQzeSu.cjs} +2 -2
  11. package/dist/{Comment-CUQvfikb.cjs.map → Comment-KYUQzeSu.cjs.map} +1 -1
  12. package/dist/{Comment-CPA3IyPS.js → Comment-VFJq2wRp.js} +2 -2
  13. package/dist/{Comment-CPA3IyPS.js.map → Comment-VFJq2wRp.js.map} +1 -1
  14. package/dist/{DataList-Ve3omCXT.js → DataList-2tIlQsLc.js} +95 -3
  15. package/dist/DataList-2tIlQsLc.js.map +1 -0
  16. package/dist/{DataList-Cmk08jUV.cjs → DataList-Czwmwyvp.cjs} +93 -1
  17. package/dist/DataList-Czwmwyvp.cjs.map +1 -0
  18. package/dist/{DateTimeRangePicker-ByMbLdom.js → DateTimeRangePicker-C_Lie_2P.js} +23 -2
  19. package/dist/DateTimeRangePicker-C_Lie_2P.js.map +1 -0
  20. package/dist/{DateTimeRangePicker-DGbH5WOn.cjs → DateTimeRangePicker-HmPOHwAQ.cjs} +23 -2
  21. package/dist/DateTimeRangePicker-HmPOHwAQ.cjs.map +1 -0
  22. package/dist/{FilterBar-Dk3QEuT6.js → FilterBar--4oguuVe.js} +4 -4
  23. package/dist/FilterBar--4oguuVe.js.map +1 -0
  24. package/dist/{FilterBar-gEvoWDXA.cjs → FilterBar-BUd4f7oi.cjs} +7 -7
  25. package/dist/FilterBar-BUd4f7oi.cjs.map +1 -0
  26. package/dist/GrainFill.css +2 -0
  27. package/dist/{MarkdownRenderer-BgqKfmRm.cjs → MarkdownRenderer-CS6u5drO.cjs} +2 -2
  28. package/dist/{MarkdownRenderer-BgqKfmRm.cjs.map → MarkdownRenderer-CS6u5drO.cjs.map} +1 -1
  29. package/dist/{MarkdownRenderer-DKCDXaLy.js → MarkdownRenderer-DME2xKTk.js} +2 -2
  30. package/dist/{MarkdownRenderer-DKCDXaLy.js.map → MarkdownRenderer-DME2xKTk.js.map} +1 -1
  31. package/dist/{Message-BF9cpYaw.cjs → Message-DsCNQpou.cjs} +2 -2
  32. package/dist/{Message-BF9cpYaw.cjs.map → Message-DsCNQpou.cjs.map} +1 -1
  33. package/dist/{Message-Bkf6Ro9H.js → Message-nVI6tMS3.js} +2 -2
  34. package/dist/{Message-Bkf6Ro9H.js.map → Message-nVI6tMS3.js.map} +1 -1
  35. package/dist/{MetricsCard-Dly_H3oX.cjs → MetricsCard-CEB-f2sv.cjs} +91 -109
  36. package/dist/MetricsCard-CEB-f2sv.cjs.map +1 -0
  37. package/dist/{MetricsCard-C9GWgT58.js → MetricsCard-M8awJ2B_.js} +91 -109
  38. package/dist/MetricsCard-M8awJ2B_.js.map +1 -0
  39. package/dist/{MetricsKpiCard-Uw0nyMgW.cjs → MetricsKpiCard-By_-sagx.cjs} +3 -2
  40. package/dist/{MetricsKpiCard-Uw0nyMgW.cjs.map → MetricsKpiCard-By_-sagx.cjs.map} +1 -1
  41. package/dist/{MetricsKpiCard-Idxjl-dn.js → MetricsKpiCard-OHbAElTl.js} +3 -2
  42. package/dist/{MetricsKpiCard-Idxjl-dn.js.map → MetricsKpiCard-OHbAElTl.js.map} +1 -1
  43. package/dist/{MetricsLineChart-DKzuRU2q.js → MetricsLineChart-BhHoduO0.js} +21 -39
  44. package/dist/MetricsLineChart-BhHoduO0.js.map +1 -0
  45. package/dist/{MetricsLineChart-2m4LVL1N.cjs → MetricsLineChart-CjBm4IXu.cjs} +21 -39
  46. package/dist/MetricsLineChart-CjBm4IXu.cjs.map +1 -0
  47. package/dist/{MetricsStackedBarChart-DJB4aByt.js → MetricsStackedBarChart-BRuA6MTE.js} +2 -3
  48. package/dist/MetricsStackedBarChart-BRuA6MTE.js.map +1 -0
  49. package/dist/{MetricsStackedBarChart-NATtwA_W.cjs → MetricsStackedBarChart-BdMlKv6G.cjs} +2 -3
  50. package/dist/MetricsStackedBarChart-BdMlKv6G.cjs.map +1 -0
  51. package/dist/Notice.css +2 -0
  52. package/dist/Shimmer.css +7 -0
  53. package/dist/{activity-ihrl0JtH.js → activity-CM34JyW-.js} +98 -33
  54. package/dist/activity-CM34JyW-.js.map +1 -0
  55. package/dist/{activity-QyLJcBKc.cjs → activity-DAK8tj7r.cjs} +108 -31
  56. package/dist/activity-DAK8tj7r.cjs.map +1 -0
  57. package/dist/chart-plot.css +15 -0
  58. package/dist/combobox-8kNAJFlj.cjs +309 -0
  59. package/dist/combobox-8kNAJFlj.cjs.map +1 -0
  60. package/dist/{combobox-C-E7_q4j.cjs → combobox-parts-BZVXwbG7.cjs} +7 -300
  61. package/dist/combobox-parts-BZVXwbG7.cjs.map +1 -0
  62. package/dist/{combobox-CDS2pBqz.js → combobox-parts-W7KRQUsV.js} +10 -297
  63. package/dist/combobox-parts-W7KRQUsV.js.map +1 -0
  64. package/dist/combobox-wFudhN8F.js +302 -0
  65. package/dist/combobox-wFudhN8F.js.map +1 -0
  66. package/dist/components/AgentIndicator.cjs.js +5 -0
  67. package/dist/components/AgentIndicator.d.ts +1 -0
  68. package/dist/components/AgentIndicator.es.js +1 -0
  69. package/dist/components/Arrival.cjs.js +3 -1
  70. package/dist/components/Arrival.es.js +1 -1
  71. package/dist/components/Combobox.cjs.js +24 -23
  72. package/dist/components/Combobox.es.js +2 -1
  73. package/dist/components/Comment.cjs.js +1 -1
  74. package/dist/components/Comment.es.js +1 -1
  75. package/dist/components/DataList.cjs.js +2 -2
  76. package/dist/components/DataList.es.js +2 -2
  77. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  78. package/dist/components/DateTimeRangePicker.es.js +1 -1
  79. package/dist/components/DiffStat.cjs.js +1 -1
  80. package/dist/components/DiffStat.es.js +1 -1
  81. package/dist/components/FilterBar.cjs.js +2 -2
  82. package/dist/components/FilterBar.es.js +2 -2
  83. package/dist/components/LogsDataList.cjs.js +1 -1
  84. package/dist/components/LogsDataList.es.js +1 -1
  85. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  86. package/dist/components/MarkdownRenderer.es.js +1 -1
  87. package/dist/components/Message.cjs.js +1 -1
  88. package/dist/components/Message.es.js +1 -1
  89. package/dist/components/MetricsCard.cjs.js +1 -1
  90. package/dist/components/MetricsCard.es.js +1 -1
  91. package/dist/components/MetricsKpiCard.cjs.js +1 -1
  92. package/dist/components/MetricsKpiCard.es.js +1 -1
  93. package/dist/components/MetricsLineChart.cjs.js +1 -1
  94. package/dist/components/MetricsLineChart.es.js +1 -1
  95. package/dist/components/MetricsStackedBarChart.cjs.js +1 -1
  96. package/dist/components/MetricsStackedBarChart.es.js +1 -1
  97. package/dist/components/PropertyFilter.cjs.js +1 -1
  98. package/dist/components/PropertyFilter.es.js +1 -1
  99. package/dist/components/SavedViews.cjs.js +27 -69
  100. package/dist/components/SavedViews.cjs.js.map +1 -1
  101. package/dist/components/SavedViews.es.js +26 -68
  102. package/dist/components/SavedViews.es.js.map +1 -1
  103. package/dist/components/ai/activity.cjs.js +3 -1
  104. package/dist/components/ai/activity.es.js +1 -1
  105. package/dist/components/ai/message-reveal.cjs.js +2 -1
  106. package/dist/components/ai/message-reveal.cjs.js.map +1 -1
  107. package/dist/components/ai/message-reveal.es.js +2 -1
  108. package/dist/components/ai/message-reveal.es.js.map +1 -1
  109. package/dist/components/ai/plan.cjs.js +1 -1
  110. package/dist/components/ai/plan.es.js +1 -1
  111. package/dist/components/ai/tool-approval.cjs.js +1 -1
  112. package/dist/components/ai/tool-approval.es.js +1 -1
  113. package/dist/components/ai/tool-call.cjs.js +2 -2
  114. package/dist/components/ai/tool-call.es.js +2 -2
  115. package/dist/domains/chat/activity/activity-stretch-line.cjs.js +6 -4
  116. package/dist/domains/chat/activity/activity-stretch-line.cjs.js.map +1 -1
  117. package/dist/domains/chat/activity/activity-stretch-line.es.js +6 -4
  118. package/dist/domains/chat/activity/activity-stretch-line.es.js.map +1 -1
  119. package/dist/domains/chat/activity/components/activity-fold.cjs.js +81 -28
  120. package/dist/domains/chat/activity/components/activity-fold.cjs.js.map +1 -1
  121. package/dist/domains/chat/activity/components/activity-fold.es.js +82 -29
  122. package/dist/domains/chat/activity/components/activity-fold.es.js.map +1 -1
  123. package/dist/domains/chat/activity/components/activity-timed-trigger.cjs.js +1 -1
  124. package/dist/domains/chat/activity/components/activity-timed-trigger.es.js +1 -1
  125. package/dist/domains/chat/activity/components/calls-panel.cjs.js +1 -1
  126. package/dist/domains/chat/activity/components/calls-panel.es.js +1 -1
  127. package/dist/domains/chat/activity/components/stretch-content.cjs.js +1 -1
  128. package/dist/domains/chat/activity/components/stretch-content.es.js +1 -1
  129. package/dist/domains/chat/activity/components/stretch-thought.cjs.js +1 -1
  130. package/dist/domains/chat/activity/components/stretch-thought.es.js +1 -1
  131. package/dist/domains/chat/activity/components/use-fading-edge.cjs.js +26 -0
  132. package/dist/domains/chat/activity/components/use-fading-edge.cjs.js.map +1 -0
  133. package/dist/domains/chat/activity/components/use-fading-edge.d.ts +1 -0
  134. package/dist/domains/chat/activity/components/use-fading-edge.es.js +25 -0
  135. package/dist/domains/chat/activity/components/use-fading-edge.es.js.map +1 -0
  136. package/dist/domains/chat/activity/components/use-rolling-words.cjs.js +123 -0
  137. package/dist/domains/chat/activity/components/use-rolling-words.cjs.js.map +1 -0
  138. package/dist/domains/chat/activity/components/use-rolling-words.d.ts +1 -0
  139. package/dist/domains/chat/activity/components/use-rolling-words.es.js +122 -0
  140. package/dist/domains/chat/activity/components/use-rolling-words.es.js.map +1 -0
  141. package/dist/domains/chat/activity/model/activity-segments.cjs.js +1 -1
  142. package/dist/domains/chat/activity/model/activity-segments.es.js +1 -1
  143. package/dist/domains/chat/activity/model/activity-words.cjs.js +16 -6
  144. package/dist/domains/chat/activity/model/activity-words.cjs.js.map +1 -1
  145. package/dist/domains/chat/activity/model/activity-words.es.js +15 -7
  146. package/dist/domains/chat/activity/model/activity-words.es.js.map +1 -1
  147. package/dist/domains/chat/activity.cjs.js +3 -0
  148. package/dist/domains/chat/activity.es.js +2 -1
  149. package/dist/domains/chat/components/badge-wrapper.cjs.js +1 -1
  150. package/dist/domains/chat/components/badge-wrapper.es.js +1 -1
  151. package/dist/domains/chat/messages/assistant-message-actions.cjs.js +1 -1
  152. package/dist/domains/chat/messages/assistant-message-actions.es.js +1 -1
  153. package/dist/domains/chat/messages/message-row.cjs.js +4 -4
  154. package/dist/domains/chat/messages/message-row.es.js +4 -4
  155. package/dist/domains/chat/messages/notification-signal-notice.cjs.js +1 -1
  156. package/dist/domains/chat/messages/notification-signal-notice.es.js +1 -1
  157. package/dist/domains/chat/messages/reasoning-content.cjs.js +1 -1
  158. package/dist/domains/chat/messages/reasoning-content.es.js +1 -1
  159. package/dist/domains/chat/messages/renderers/message-text.cjs.js +1 -1
  160. package/dist/domains/chat/messages/renderers/message-text.es.js +1 -1
  161. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
  162. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
  163. package/dist/domains/chat/messages/renderers/tool-part.cjs.js +18 -0
  164. package/dist/domains/chat/messages/renderers/tool-part.cjs.js.map +1 -1
  165. package/dist/domains/chat/messages/renderers/tool-part.es.js +18 -0
  166. package/dist/domains/chat/messages/renderers/tool-part.es.js.map +1 -1
  167. package/dist/domains/chat/messages/signal-badge.cjs.js +1 -1
  168. package/dist/domains/chat/messages/signal-badge.es.js +1 -1
  169. package/dist/domains/chat/messages/skill-message.cjs.js +10 -7
  170. package/dist/domains/chat/messages/skill-message.cjs.js.map +1 -1
  171. package/dist/domains/chat/messages/skill-message.es.js +10 -7
  172. package/dist/domains/chat/messages/skill-message.es.js.map +1 -1
  173. package/dist/domains/chat/messages/system-reminder-badge.cjs.js +1 -1
  174. package/dist/domains/chat/messages/system-reminder-badge.es.js +1 -1
  175. package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
  176. package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
  177. package/dist/domains/chat/tools/badges/agent-badge.cjs.js +1 -1
  178. package/dist/domains/chat/tools/badges/agent-badge.es.js +1 -1
  179. package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +2 -2
  180. package/dist/domains/chat/tools/badges/file-tree-badge.es.js +2 -2
  181. package/dist/domains/chat/tools/badges/mcp-task-chip.cjs.js +111 -0
  182. package/dist/domains/chat/tools/badges/mcp-task-chip.cjs.js.map +1 -0
  183. package/dist/domains/chat/tools/badges/mcp-task-chip.d.ts +1 -0
  184. package/dist/domains/chat/tools/badges/mcp-task-chip.es.js +109 -0
  185. package/dist/domains/chat/tools/badges/mcp-task-chip.es.js.map +1 -0
  186. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +8 -6
  187. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js.map +1 -1
  188. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +9 -7
  189. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js.map +1 -1
  190. package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +2 -3
  191. package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js.map +1 -1
  192. package/dist/domains/chat/tools/badges/observation-marker-details.es.js +2 -3
  193. package/dist/domains/chat/tools/badges/observation-marker-details.es.js.map +1 -1
  194. package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +1 -1
  195. package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
  196. package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js +2 -2
  197. package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js +2 -2
  198. package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +1 -1
  199. package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
  200. package/dist/domains/chat/tools/badges/tool-badge.cjs.js +10 -4
  201. package/dist/domains/chat/tools/badges/tool-badge.cjs.js.map +1 -1
  202. package/dist/domains/chat/tools/badges/tool-badge.es.js +10 -4
  203. package/dist/domains/chat/tools/badges/tool-badge.es.js.map +1 -1
  204. package/dist/domains/chat/tools/badges/use-mcp-task-progress.cjs.js +51 -0
  205. package/dist/domains/chat/tools/badges/use-mcp-task-progress.cjs.js.map +1 -0
  206. package/dist/domains/chat/tools/badges/use-mcp-task-progress.d.ts +1 -0
  207. package/dist/domains/chat/tools/badges/use-mcp-task-progress.es.js +49 -0
  208. package/dist/domains/chat/tools/badges/use-mcp-task-progress.es.js.map +1 -0
  209. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +1 -1
  210. package/dist/domains/chat/tools/badges/workflow-badge.es.js +1 -1
  211. package/dist/domains/chat/tools/tool-card-kind.cjs.js +1 -1
  212. package/dist/domains/chat/tools/tool-card-kind.es.js +1 -1
  213. package/dist/domains/chat/tools/tool-card.cjs.js +1 -1
  214. package/dist/domains/chat/tools/tool-card.es.js +1 -1
  215. package/dist/domains/chat/tools/tool-groups.cjs.js +1 -1
  216. package/dist/domains/chat/tools/tool-groups.es.js +1 -1
  217. package/dist/domains/dashboards/components/dashboard-grid.cjs.js +44 -0
  218. package/dist/domains/dashboards/components/dashboard-grid.cjs.js.map +1 -0
  219. package/dist/domains/dashboards/components/dashboard-grid.d.ts +1 -0
  220. package/dist/domains/dashboards/components/dashboard-grid.es.js +41 -0
  221. package/dist/domains/dashboards/components/dashboard-grid.es.js.map +1 -0
  222. package/dist/domains/dashboards/components/dashboard-renderer.cjs.js +72 -0
  223. package/dist/domains/dashboards/components/dashboard-renderer.cjs.js.map +1 -0
  224. package/dist/domains/dashboards/components/dashboard-renderer.d.ts +1 -0
  225. package/dist/domains/dashboards/components/dashboard-renderer.es.js +71 -0
  226. package/dist/domains/dashboards/components/dashboard-renderer.es.js.map +1 -0
  227. package/dist/domains/dashboards/components/view-gate.cjs.js +55 -0
  228. package/dist/domains/dashboards/components/view-gate.cjs.js.map +1 -0
  229. package/dist/domains/dashboards/components/view-gate.d.ts +1 -0
  230. package/dist/domains/dashboards/components/view-gate.es.js +54 -0
  231. package/dist/domains/dashboards/components/view-gate.es.js.map +1 -0
  232. package/dist/domains/dashboards/components/widget-chrome.cjs.js +16 -0
  233. package/dist/domains/dashboards/components/widget-chrome.cjs.js.map +1 -0
  234. package/dist/domains/dashboards/components/widget-chrome.d.ts +1 -0
  235. package/dist/domains/dashboards/components/widget-chrome.es.js +15 -0
  236. package/dist/domains/dashboards/components/widget-chrome.es.js.map +1 -0
  237. package/dist/domains/dashboards/components/widget-controls.cjs.js +21 -0
  238. package/dist/domains/dashboards/components/widget-controls.cjs.js.map +1 -0
  239. package/dist/domains/dashboards/components/widget-controls.d.ts +1 -0
  240. package/dist/domains/dashboards/components/widget-controls.es.js +20 -0
  241. package/dist/domains/dashboards/components/widget-controls.es.js.map +1 -0
  242. package/dist/domains/dashboards/components/widget-error.cjs.js +18 -0
  243. package/dist/domains/dashboards/components/widget-error.cjs.js.map +1 -0
  244. package/dist/domains/dashboards/components/widget-error.d.ts +1 -0
  245. package/dist/domains/dashboards/components/widget-error.es.js +17 -0
  246. package/dist/domains/dashboards/components/widget-error.es.js.map +1 -0
  247. package/dist/domains/dashboards/hooks/use-dashboard-requests.cjs.js +47 -0
  248. package/dist/domains/dashboards/hooks/use-dashboard-requests.cjs.js.map +1 -0
  249. package/dist/domains/dashboards/hooks/use-dashboard-requests.d.ts +1 -0
  250. package/dist/domains/dashboards/hooks/use-dashboard-requests.es.js +46 -0
  251. package/dist/domains/dashboards/hooks/use-dashboard-requests.es.js.map +1 -0
  252. package/dist/domains/dashboards/hooks/use-scorers.cjs.js +41 -0
  253. package/dist/domains/dashboards/hooks/use-scorers.cjs.js.map +1 -0
  254. package/dist/domains/dashboards/hooks/use-scorers.d.ts +1 -0
  255. package/dist/domains/dashboards/hooks/use-scorers.es.js +40 -0
  256. package/dist/domains/dashboards/hooks/use-scorers.es.js.map +1 -0
  257. package/dist/domains/dashboards/hooks/use-widget-views.cjs.js +35 -0
  258. package/dist/domains/dashboards/hooks/use-widget-views.cjs.js.map +1 -0
  259. package/dist/domains/dashboards/hooks/use-widget-views.d.ts +1 -0
  260. package/dist/domains/dashboards/hooks/use-widget-views.es.js +32 -0
  261. package/dist/domains/dashboards/hooks/use-widget-views.es.js.map +1 -0
  262. package/dist/domains/dashboards/kinds/kpis/kpis-widget.cjs.js +63 -0
  263. package/dist/domains/dashboards/kinds/kpis/kpis-widget.cjs.js.map +1 -0
  264. package/dist/domains/dashboards/kinds/kpis/kpis-widget.d.ts +1 -0
  265. package/dist/domains/dashboards/kinds/kpis/kpis-widget.es.js +62 -0
  266. package/dist/domains/dashboards/kinds/kpis/kpis-widget.es.js.map +1 -0
  267. package/dist/domains/dashboards/kinds/kpis/options.cjs.js +72 -0
  268. package/dist/domains/dashboards/kinds/kpis/options.cjs.js.map +1 -0
  269. package/dist/domains/dashboards/kinds/kpis/options.d.ts +1 -0
  270. package/dist/domains/dashboards/kinds/kpis/options.es.js +69 -0
  271. package/dist/domains/dashboards/kinds/kpis/options.es.js.map +1 -0
  272. package/dist/domains/dashboards/kinds/kpis.cjs.js +17 -0
  273. package/dist/domains/dashboards/kinds/kpis.cjs.js.map +1 -0
  274. package/dist/domains/dashboards/kinds/kpis.d.ts +1 -0
  275. package/dist/domains/dashboards/kinds/kpis.es.js +14 -0
  276. package/dist/domains/dashboards/kinds/kpis.es.js.map +1 -0
  277. package/dist/domains/dashboards/kinds/scores/options.cjs.js +30 -0
  278. package/dist/domains/dashboards/kinds/scores/options.cjs.js.map +1 -0
  279. package/dist/domains/dashboards/kinds/scores/options.d.ts +1 -0
  280. package/dist/domains/dashboards/kinds/scores/options.es.js +28 -0
  281. package/dist/domains/dashboards/kinds/scores/options.es.js.map +1 -0
  282. package/dist/domains/dashboards/kinds/scores/scores-widget.cjs.js +91 -0
  283. package/dist/domains/dashboards/kinds/scores/scores-widget.cjs.js.map +1 -0
  284. package/dist/domains/dashboards/kinds/scores/scores-widget.d.ts +1 -0
  285. package/dist/domains/dashboards/kinds/scores/scores-widget.es.js +90 -0
  286. package/dist/domains/dashboards/kinds/scores/scores-widget.es.js.map +1 -0
  287. package/dist/domains/dashboards/kinds/scores.cjs.js +16 -0
  288. package/dist/domains/dashboards/kinds/scores.cjs.js.map +1 -0
  289. package/dist/domains/dashboards/kinds/scores.d.ts +1 -0
  290. package/dist/domains/dashboards/kinds/scores.es.js +14 -0
  291. package/dist/domains/dashboards/kinds/scores.es.js.map +1 -0
  292. package/dist/domains/dashboards/kinds/table/table-cells.cjs.js +67 -0
  293. package/dist/domains/dashboards/kinds/table/table-cells.cjs.js.map +1 -0
  294. package/dist/domains/dashboards/kinds/table/table-cells.d.ts +1 -0
  295. package/dist/domains/dashboards/kinds/table/table-cells.es.js +63 -0
  296. package/dist/domains/dashboards/kinds/table/table-cells.es.js.map +1 -0
  297. package/dist/domains/dashboards/kinds/table/table-columns.cjs.js +72 -0
  298. package/dist/domains/dashboards/kinds/table/table-columns.cjs.js.map +1 -0
  299. package/dist/domains/dashboards/kinds/table/table-columns.d.ts +1 -0
  300. package/dist/domains/dashboards/kinds/table/table-columns.es.js +71 -0
  301. package/dist/domains/dashboards/kinds/table/table-columns.es.js.map +1 -0
  302. package/dist/domains/dashboards/kinds/table/table-frame.cjs.js +16 -0
  303. package/dist/domains/dashboards/kinds/table/table-frame.cjs.js.map +1 -0
  304. package/dist/domains/dashboards/kinds/table/table-frame.d.ts +1 -0
  305. package/dist/domains/dashboards/kinds/table/table-frame.es.js +15 -0
  306. package/dist/domains/dashboards/kinds/table/table-frame.es.js.map +1 -0
  307. package/dist/domains/dashboards/kinds/table/table-tabs.cjs.js +55 -0
  308. package/dist/domains/dashboards/kinds/table/table-tabs.cjs.js.map +1 -0
  309. package/dist/domains/dashboards/kinds/table/table-tabs.d.ts +1 -0
  310. package/dist/domains/dashboards/kinds/table/table-tabs.es.js +54 -0
  311. package/dist/domains/dashboards/kinds/table/table-tabs.es.js.map +1 -0
  312. package/dist/domains/dashboards/kinds/table/table-view.cjs.js +80 -0
  313. package/dist/domains/dashboards/kinds/table/table-view.cjs.js.map +1 -0
  314. package/dist/domains/dashboards/kinds/table/table-view.d.ts +1 -0
  315. package/dist/domains/dashboards/kinds/table/table-view.es.js +79 -0
  316. package/dist/domains/dashboards/kinds/table/table-view.es.js.map +1 -0
  317. package/dist/domains/dashboards/kinds/table/table-widget.cjs.js +30 -0
  318. package/dist/domains/dashboards/kinds/table/table-widget.cjs.js.map +1 -0
  319. package/dist/domains/dashboards/kinds/table/table-widget.d.ts +1 -0
  320. package/dist/domains/dashboards/kinds/table/table-widget.es.js +29 -0
  321. package/dist/domains/dashboards/kinds/table/table-widget.es.js.map +1 -0
  322. package/dist/domains/dashboards/kinds/table.cjs.js +17 -0
  323. package/dist/domains/dashboards/kinds/table.cjs.js.map +1 -0
  324. package/dist/domains/dashboards/kinds/table.d.ts +1 -0
  325. package/dist/domains/dashboards/kinds/table.es.js +14 -0
  326. package/dist/domains/dashboards/kinds/table.es.js.map +1 -0
  327. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.cjs.js +115 -0
  328. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.cjs.js.map +1 -0
  329. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.d.ts +1 -0
  330. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.es.js +114 -0
  331. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.es.js.map +1 -0
  332. package/dist/domains/dashboards/kinds/timeseries.cjs.js +15 -0
  333. package/dist/domains/dashboards/kinds/timeseries.cjs.js.map +1 -0
  334. package/dist/domains/dashboards/kinds/timeseries.d.ts +1 -0
  335. package/dist/domains/dashboards/kinds/timeseries.es.js +14 -0
  336. package/dist/domains/dashboards/kinds/timeseries.es.js.map +1 -0
  337. package/dist/domains/dashboards/kinds.cjs.js +20 -0
  338. package/dist/domains/dashboards/kinds.cjs.js.map +1 -0
  339. package/dist/domains/dashboards/kinds.d.ts +1 -0
  340. package/dist/domains/dashboards/kinds.es.js +15 -0
  341. package/dist/domains/dashboards/kinds.es.js.map +1 -0
  342. package/dist/domains/dashboards/lib/answers.cjs.js +42 -0
  343. package/dist/domains/dashboards/lib/answers.cjs.js.map +1 -0
  344. package/dist/domains/dashboards/lib/answers.d.ts +1 -0
  345. package/dist/domains/dashboards/lib/answers.es.js +37 -0
  346. package/dist/domains/dashboards/lib/answers.es.js.map +1 -0
  347. package/dist/domains/dashboards/lib/chrome.cjs.js +41 -0
  348. package/dist/domains/dashboards/lib/chrome.cjs.js.map +1 -0
  349. package/dist/domains/dashboards/lib/chrome.d.ts +1 -0
  350. package/dist/domains/dashboards/lib/chrome.es.js +37 -0
  351. package/dist/domains/dashboards/lib/chrome.es.js.map +1 -0
  352. package/dist/domains/dashboards/lib/definition.cjs.js +59 -0
  353. package/dist/domains/dashboards/lib/definition.cjs.js.map +1 -0
  354. package/dist/domains/dashboards/lib/definition.d.ts +1 -0
  355. package/dist/domains/dashboards/lib/definition.es.js +55 -0
  356. package/dist/domains/dashboards/lib/definition.es.js.map +1 -0
  357. package/dist/domains/dashboards/lib/filters.cjs.js +44 -0
  358. package/dist/domains/dashboards/lib/filters.cjs.js.map +1 -0
  359. package/dist/domains/dashboards/lib/filters.d.ts +1 -0
  360. package/dist/domains/dashboards/lib/filters.es.js +43 -0
  361. package/dist/domains/dashboards/lib/filters.es.js.map +1 -0
  362. package/dist/domains/dashboards/lib/format.cjs.js +32 -0
  363. package/dist/domains/dashboards/lib/format.cjs.js.map +1 -0
  364. package/dist/domains/dashboards/lib/format.d.ts +1 -0
  365. package/dist/domains/dashboards/lib/format.es.js +30 -0
  366. package/dist/domains/dashboards/lib/format.es.js.map +1 -0
  367. package/dist/domains/dashboards/lib/prepare-widget.cjs.js +77 -0
  368. package/dist/domains/dashboards/lib/prepare-widget.cjs.js.map +1 -0
  369. package/dist/domains/dashboards/lib/prepare-widget.d.ts +1 -0
  370. package/dist/domains/dashboards/lib/prepare-widget.es.js +75 -0
  371. package/dist/domains/dashboards/lib/prepare-widget.es.js.map +1 -0
  372. package/dist/domains/dashboards/lib/requests.cjs.js +279 -0
  373. package/dist/domains/dashboards/lib/requests.cjs.js.map +1 -0
  374. package/dist/domains/dashboards/lib/requests.d.ts +1 -0
  375. package/dist/domains/dashboards/lib/requests.es.js +273 -0
  376. package/dist/domains/dashboards/lib/requests.es.js.map +1 -0
  377. package/dist/domains/dashboards/lib/scores.cjs.js +58 -0
  378. package/dist/domains/dashboards/lib/scores.cjs.js.map +1 -0
  379. package/dist/domains/dashboards/lib/scores.d.ts +1 -0
  380. package/dist/domains/dashboards/lib/scores.es.js +53 -0
  381. package/dist/domains/dashboards/lib/scores.es.js.map +1 -0
  382. package/dist/domains/dashboards/lib/table.cjs.js +408 -0
  383. package/dist/domains/dashboards/lib/table.cjs.js.map +1 -0
  384. package/dist/domains/dashboards/lib/table.d.ts +1 -0
  385. package/dist/domains/dashboards/lib/table.es.js +388 -0
  386. package/dist/domains/dashboards/lib/table.es.js.map +1 -0
  387. package/dist/domains/dashboards/lib/timeseries.cjs.js +192 -0
  388. package/dist/domains/dashboards/lib/timeseries.cjs.js.map +1 -0
  389. package/dist/domains/dashboards/lib/timeseries.d.ts +1 -0
  390. package/dist/domains/dashboards/lib/timeseries.es.js +188 -0
  391. package/dist/domains/dashboards/lib/timeseries.es.js.map +1 -0
  392. package/dist/domains/dashboards/lib/values.cjs.js +155 -0
  393. package/dist/domains/dashboards/lib/values.cjs.js.map +1 -0
  394. package/dist/domains/dashboards/lib/values.d.ts +1 -0
  395. package/dist/domains/dashboards/lib/values.es.js +142 -0
  396. package/dist/domains/dashboards/lib/values.es.js.map +1 -0
  397. package/dist/domains/dashboards/metrics-dashboard.cjs.js +737 -0
  398. package/dist/domains/dashboards/metrics-dashboard.cjs.js.map +1 -0
  399. package/dist/domains/dashboards/metrics-dashboard.d.ts +1 -0
  400. package/dist/domains/dashboards/metrics-dashboard.es.js +736 -0
  401. package/dist/domains/dashboards/metrics-dashboard.es.js.map +1 -0
  402. package/dist/domains/dashboards/widget-kind.cjs.js +7 -0
  403. package/dist/domains/dashboards/widget-kind.cjs.js.map +1 -0
  404. package/dist/domains/dashboards/widget-kind.d.ts +1 -0
  405. package/dist/domains/dashboards/widget-kind.es.js +6 -0
  406. package/dist/domains/dashboards/widget-kind.es.js.map +1 -0
  407. package/dist/domains/dashboards.cjs.js +39 -0
  408. package/dist/domains/dashboards.d.ts +1 -0
  409. package/dist/domains/dashboards.es.js +18 -0
  410. package/dist/domains/logs/components/logs-list-view.cjs.js +1 -1
  411. package/dist/domains/logs/components/logs-list-view.es.js +1 -1
  412. package/dist/domains/logs/components/logs-saved-views.cjs.js +14 -0
  413. package/dist/domains/logs/components/logs-saved-views.cjs.js.map +1 -0
  414. package/dist/domains/logs/components/logs-saved-views.d.ts +1 -0
  415. package/dist/domains/logs/components/logs-saved-views.es.js +13 -0
  416. package/dist/domains/logs/components/logs-saved-views.es.js.map +1 -0
  417. package/dist/domains/logs/components.cjs.js +2 -0
  418. package/dist/domains/logs/components.es.js +2 -1
  419. package/dist/domains/logs/hooks/use-logs-url-state.cjs.js +1 -1
  420. package/dist/domains/logs/hooks/use-logs-url-state.cjs.js.map +1 -1
  421. package/dist/domains/logs/hooks/use-logs-url-state.es.js +2 -2
  422. package/dist/domains/logs/hooks/use-logs-url-state.es.js.map +1 -1
  423. package/dist/domains/logs/log-filters.cjs.js +11 -0
  424. package/dist/domains/logs/log-filters.cjs.js.map +1 -1
  425. package/dist/domains/logs/log-filters.es.js +9 -1
  426. package/dist/domains/logs/log-filters.es.js.map +1 -1
  427. package/dist/domains/logs.cjs.js +6 -1
  428. package/dist/domains/logs.es.js +3 -2
  429. package/dist/domains/metrics/components/agent-runs-card.cjs.js +38 -15
  430. package/dist/domains/metrics/components/agent-runs-card.cjs.js.map +1 -1
  431. package/dist/domains/metrics/components/agent-runs-card.es.js +38 -15
  432. package/dist/domains/metrics/components/agent-runs-card.es.js.map +1 -1
  433. package/dist/domains/metrics/components/breakdown/breakdown-change-cell.cjs.js +4 -11
  434. package/dist/domains/metrics/components/breakdown/breakdown-change-cell.cjs.js.map +1 -1
  435. package/dist/domains/metrics/components/breakdown/breakdown-change-cell.es.js +4 -11
  436. package/dist/domains/metrics/components/breakdown/breakdown-change-cell.es.js.map +1 -1
  437. package/dist/domains/metrics/components/breakdown/breakdown-cost-cell.cjs.js +2 -4
  438. package/dist/domains/metrics/components/breakdown/breakdown-cost-cell.cjs.js.map +1 -1
  439. package/dist/domains/metrics/components/breakdown/breakdown-cost-cell.es.js +2 -4
  440. package/dist/domains/metrics/components/breakdown/breakdown-cost-cell.es.js.map +1 -1
  441. package/dist/domains/metrics/components/breakdown/breakdown-entity-tab.cjs.js +1 -1
  442. package/dist/domains/metrics/components/breakdown/breakdown-entity-tab.es.js +1 -1
  443. package/dist/domains/metrics/components/breakdown/breakdown-frame.cjs.js +16 -27
  444. package/dist/domains/metrics/components/breakdown/breakdown-frame.cjs.js.map +1 -1
  445. package/dist/domains/metrics/components/breakdown/breakdown-frame.es.js +16 -27
  446. package/dist/domains/metrics/components/breakdown/breakdown-frame.es.js.map +1 -1
  447. package/dist/domains/metrics/components/breakdown/breakdown-models-tab.cjs.js +1 -1
  448. package/dist/domains/metrics/components/breakdown/breakdown-models-tab.es.js +1 -1
  449. package/dist/domains/metrics/components/breakdown/breakdown-name.cjs.js +22 -0
  450. package/dist/domains/metrics/components/breakdown/breakdown-name.cjs.js.map +1 -0
  451. package/dist/domains/metrics/components/breakdown/breakdown-name.d.ts +1 -0
  452. package/dist/domains/metrics/components/breakdown/breakdown-name.es.js +21 -0
  453. package/dist/domains/metrics/components/breakdown/breakdown-name.es.js.map +1 -0
  454. package/dist/domains/metrics/components/breakdown/breakdown-not-priced.cjs.js +13 -0
  455. package/dist/domains/metrics/components/breakdown/breakdown-not-priced.cjs.js.map +1 -0
  456. package/dist/domains/metrics/components/breakdown/breakdown-not-priced.d.ts +1 -0
  457. package/dist/domains/metrics/components/breakdown/breakdown-not-priced.es.js +12 -0
  458. package/dist/domains/metrics/components/breakdown/breakdown-not-priced.es.js.map +1 -0
  459. package/dist/domains/metrics/components/breakdown/breakdown-projects-first.cjs.js +1 -1
  460. package/dist/domains/metrics/components/breakdown/breakdown-projects-first.es.js +1 -1
  461. package/dist/domains/metrics/components/breakdown/breakdown-row-mark.cjs.js +26 -13
  462. package/dist/domains/metrics/components/breakdown/breakdown-row-mark.cjs.js.map +1 -1
  463. package/dist/domains/metrics/components/breakdown/breakdown-row-mark.es.js +25 -14
  464. package/dist/domains/metrics/components/breakdown/breakdown-row-mark.es.js.map +1 -1
  465. package/dist/domains/metrics/components/breakdown/breakdown-row-name.cjs.js +10 -13
  466. package/dist/domains/metrics/components/breakdown/breakdown-row-name.cjs.js.map +1 -1
  467. package/dist/domains/metrics/components/breakdown/breakdown-row-name.es.js +11 -14
  468. package/dist/domains/metrics/components/breakdown/breakdown-row-name.es.js.map +1 -1
  469. package/dist/domains/metrics/components/breakdown/breakdown-tab-body.cjs.js +1 -1
  470. package/dist/domains/metrics/components/breakdown/breakdown-tab-body.es.js +1 -1
  471. package/dist/domains/metrics/components/breakdown/breakdown-table.cjs.js +5 -5
  472. package/dist/domains/metrics/components/breakdown/breakdown-table.es.js +5 -5
  473. package/dist/domains/metrics/components/breakdown/breakdown-trace-tab.cjs.js +1 -1
  474. package/dist/domains/metrics/components/breakdown/breakdown-trace-tab.es.js +1 -1
  475. package/dist/domains/metrics/components/breakdown/breakdown-trend-text.cjs.js +25 -0
  476. package/dist/domains/metrics/components/breakdown/breakdown-trend-text.cjs.js.map +1 -0
  477. package/dist/domains/metrics/components/breakdown/breakdown-trend-text.d.ts +1 -0
  478. package/dist/domains/metrics/components/breakdown/breakdown-trend-text.es.js +24 -0
  479. package/dist/domains/metrics/components/breakdown/breakdown-trend-text.es.js.map +1 -0
  480. package/dist/domains/metrics/components/breakdown-card.cjs.js +3 -3
  481. package/dist/domains/metrics/components/breakdown-card.es.js +3 -3
  482. package/dist/domains/metrics/components/card-action-buttons.cjs.js +43 -3
  483. package/dist/domains/metrics/components/card-action-buttons.cjs.js.map +1 -1
  484. package/dist/domains/metrics/components/card-action-buttons.es.js +42 -5
  485. package/dist/domains/metrics/components/card-action-buttons.es.js.map +1 -1
  486. package/dist/domains/metrics/components/chart-area.cjs.js +1 -1
  487. package/dist/domains/metrics/components/chart-area.es.js +1 -1
  488. package/dist/domains/metrics/components/chart-card-error.cjs.js +1 -1
  489. package/dist/domains/metrics/components/chart-card-error.es.js +1 -1
  490. package/dist/domains/metrics/components/chart-card.cjs.js +39 -38
  491. package/dist/domains/metrics/components/chart-card.cjs.js.map +1 -1
  492. package/dist/domains/metrics/components/chart-card.es.js +39 -38
  493. package/dist/domains/metrics/components/chart-card.es.js.map +1 -1
  494. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  495. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  496. package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.cjs.js +15 -16
  497. package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.cjs.js.map +1 -1
  498. package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.es.js +16 -16
  499. package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.es.js.map +1 -1
  500. package/dist/domains/metrics/components/distinct-ids-card.cjs.js +0 -1
  501. package/dist/domains/metrics/components/distinct-ids-card.cjs.js.map +1 -1
  502. package/dist/domains/metrics/components/distinct-ids-card.es.js +1 -2
  503. package/dist/domains/metrics/components/distinct-ids-card.es.js.map +1 -1
  504. package/dist/domains/metrics/components/failure-rate-card.cjs.js +11 -14
  505. package/dist/domains/metrics/components/failure-rate-card.cjs.js.map +1 -1
  506. package/dist/domains/metrics/components/failure-rate-card.es.js +11 -14
  507. package/dist/domains/metrics/components/failure-rate-card.es.js.map +1 -1
  508. package/dist/domains/metrics/components/kpi-card.cjs.js +8 -5
  509. package/dist/domains/metrics/components/kpi-card.cjs.js.map +1 -1
  510. package/dist/domains/metrics/components/kpi-card.es.js +8 -5
  511. package/dist/domains/metrics/components/kpi-card.es.js.map +1 -1
  512. package/dist/domains/metrics/components/latency-card.cjs.js +33 -30
  513. package/dist/domains/metrics/components/latency-card.cjs.js.map +1 -1
  514. package/dist/domains/metrics/components/latency-card.es.js +34 -31
  515. package/dist/domains/metrics/components/latency-card.es.js.map +1 -1
  516. package/dist/domains/metrics/components/metrics-grid/metrics-grid.cjs.js +5 -2
  517. package/dist/domains/metrics/components/metrics-grid/metrics-grid.cjs.js.map +1 -1
  518. package/dist/domains/metrics/components/metrics-grid/metrics-grid.es.js +5 -2
  519. package/dist/domains/metrics/components/metrics-grid/metrics-grid.es.js.map +1 -1
  520. package/dist/domains/metrics/components/scores-card.cjs.js +7 -17
  521. package/dist/domains/metrics/components/scores-card.cjs.js.map +1 -1
  522. package/dist/domains/metrics/components/scores-card.es.js +7 -17
  523. package/dist/domains/metrics/components/scores-card.es.js.map +1 -1
  524. package/dist/domains/metrics/components/token-usage-card.cjs.js +29 -26
  525. package/dist/domains/metrics/components/token-usage-card.cjs.js.map +1 -1
  526. package/dist/domains/metrics/components/token-usage-card.es.js +30 -27
  527. package/dist/domains/metrics/components/token-usage-card.es.js.map +1 -1
  528. package/dist/domains/metrics/components/trace-aggregate-card.cjs.js +3 -2
  529. package/dist/domains/metrics/components/trace-aggregate-card.cjs.js.map +1 -1
  530. package/dist/domains/metrics/components/trace-aggregate-card.es.js +3 -2
  531. package/dist/domains/metrics/components/trace-aggregate-card.es.js.map +1 -1
  532. package/dist/domains/metrics/components/trace-volume-card.cjs.js +31 -35
  533. package/dist/domains/metrics/components/trace-volume-card.cjs.js.map +1 -1
  534. package/dist/domains/metrics/components/trace-volume-card.es.js +31 -35
  535. package/dist/domains/metrics/components/trace-volume-card.es.js.map +1 -1
  536. package/dist/domains/metrics/components/usage-card.cjs.js +29 -28
  537. package/dist/domains/metrics/components/usage-card.cjs.js.map +1 -1
  538. package/dist/domains/metrics/components/usage-card.es.js +30 -29
  539. package/dist/domains/metrics/components/usage-card.es.js.map +1 -1
  540. package/dist/domains/metrics/components.cjs.js +6 -5
  541. package/dist/domains/metrics/components.es.js +4 -5
  542. package/dist/domains/metrics/drilldown.cjs.js +1 -1
  543. package/dist/domains/metrics/drilldown.es.js +1 -1
  544. package/dist/domains/metrics/hooks/use-metrics-activity.cjs.js +1 -1
  545. package/dist/domains/metrics/hooks/use-metrics-activity.es.js +1 -1
  546. package/dist/domains/metrics/hooks/use-metrics-latency.cjs.js +1 -1
  547. package/dist/domains/metrics/hooks/use-metrics-latency.es.js +1 -1
  548. package/dist/domains/metrics/hooks/use-metrics-scores.cjs.js +1 -1
  549. package/dist/domains/metrics/hooks/use-metrics-scores.es.js +1 -1
  550. package/dist/domains/metrics/hooks/use-metrics-span-aggregate.cjs.js +1 -1
  551. package/dist/domains/metrics/hooks/use-metrics-span-aggregate.es.js +1 -1
  552. package/dist/domains/metrics/hooks.cjs.js +1 -1
  553. package/dist/domains/metrics/hooks.es.js +1 -1
  554. package/dist/domains/metrics/lib/breakdown-table.cjs.js +2 -2
  555. package/dist/domains/metrics/lib/breakdown-table.es.js +2 -2
  556. package/dist/domains/metrics/lib.cjs.js +2 -2
  557. package/dist/domains/metrics/lib.es.js +2 -2
  558. package/dist/domains/metrics/metrics-filters.cjs.js +1 -1
  559. package/dist/domains/metrics/metrics-filters.es.js +1 -1
  560. package/dist/domains/metrics.cjs.js +14 -13
  561. package/dist/domains/metrics.es.js +12 -13
  562. package/dist/domains/observability/components/observability-header-slot.cjs.js +13 -0
  563. package/dist/domains/observability/components/observability-header-slot.cjs.js.map +1 -0
  564. package/dist/domains/observability/components/observability-header-slot.d.ts +1 -0
  565. package/dist/domains/observability/components/observability-header-slot.es.js +11 -0
  566. package/dist/domains/observability/components/observability-header-slot.es.js.map +1 -0
  567. package/dist/domains/observability/components/observability-histogram.cjs.js +6 -2
  568. package/dist/domains/observability/components/observability-histogram.cjs.js.map +1 -1
  569. package/dist/domains/observability/components/observability-histogram.es.js +6 -2
  570. package/dist/domains/observability/components/observability-histogram.es.js.map +1 -1
  571. package/dist/domains/observability/components/observability-page-layout.cjs.js +19 -5
  572. package/dist/domains/observability/components/observability-page-layout.cjs.js.map +1 -1
  573. package/dist/domains/observability/components/observability-page-layout.es.js +20 -6
  574. package/dist/domains/observability/components/observability-page-layout.es.js.map +1 -1
  575. package/dist/domains/observability/hooks/use-observability-list-filters.cjs.js +75 -18
  576. package/dist/domains/observability/hooks/use-observability-list-filters.cjs.js.map +1 -1
  577. package/dist/domains/observability/hooks/use-observability-list-filters.es.js +76 -19
  578. package/dist/domains/observability/hooks/use-observability-list-filters.es.js.map +1 -1
  579. package/dist/domains/observability/lib/zoom-memory.cjs.js +24 -0
  580. package/dist/domains/observability/lib/zoom-memory.cjs.js.map +1 -0
  581. package/dist/domains/observability/lib/zoom-memory.d.ts +1 -0
  582. package/dist/domains/observability/lib/zoom-memory.es.js +22 -0
  583. package/dist/domains/observability/lib/zoom-memory.es.js.map +1 -0
  584. package/dist/domains/observability/observability-list-url-state.cjs.js +122 -0
  585. package/dist/domains/observability/observability-list-url-state.cjs.js.map +1 -0
  586. package/dist/domains/observability/observability-list-url-state.d.ts +1 -0
  587. package/dist/domains/observability/observability-list-url-state.es.js +111 -0
  588. package/dist/domains/observability/observability-list-url-state.es.js.map +1 -0
  589. package/dist/domains/observability/saved-view-state.cjs.js +292 -0
  590. package/dist/domains/observability/saved-view-state.cjs.js.map +1 -0
  591. package/dist/domains/observability/saved-view-state.d.ts +1 -0
  592. package/dist/domains/observability/saved-view-state.es.js +286 -0
  593. package/dist/domains/observability/saved-view-state.es.js.map +1 -0
  594. package/dist/domains/observability/saved-views/observability-saved-views.cjs.js +3 -0
  595. package/dist/domains/observability/saved-views/observability-saved-views.d.ts +1 -0
  596. package/dist/domains/observability/saved-views/observability-saved-views.es.js +1 -0
  597. package/dist/domains/observability/saved-views/saved-views-provider.cjs.js +18 -0
  598. package/dist/domains/observability/saved-views/saved-views-provider.cjs.js.map +1 -0
  599. package/dist/domains/observability/saved-views/saved-views-provider.d.ts +1 -0
  600. package/dist/domains/observability/saved-views/saved-views-provider.es.js +17 -0
  601. package/dist/domains/observability/saved-views/saved-views-provider.es.js.map +1 -0
  602. package/dist/domains/observability/saved-views/saved-views-source.cjs.js +23 -0
  603. package/dist/domains/observability/saved-views/saved-views-source.cjs.js.map +1 -0
  604. package/dist/domains/observability/saved-views/saved-views-source.d.ts +1 -0
  605. package/dist/domains/observability/saved-views/saved-views-source.es.js +19 -0
  606. package/dist/domains/observability/saved-views/saved-views-source.es.js.map +1 -0
  607. package/dist/domains/observability/saved-views/use-hosted-saved-views.cjs.js +235 -0
  608. package/dist/domains/observability/saved-views/use-hosted-saved-views.cjs.js.map +1 -0
  609. package/dist/domains/observability/saved-views/use-hosted-saved-views.d.ts +1 -0
  610. package/dist/domains/observability/saved-views/use-hosted-saved-views.es.js +232 -0
  611. package/dist/domains/observability/saved-views/use-hosted-saved-views.es.js.map +1 -0
  612. package/dist/domains/observability/saved-views.cjs.js +7 -0
  613. package/dist/domains/observability/saved-views.d.ts +1 -0
  614. package/dist/domains/observability/saved-views.es.js +4 -0
  615. package/dist/domains/observability.cjs.js +6 -0
  616. package/dist/domains/observability.es.js +4 -1
  617. package/dist/domains/scores/components/span-scoring.cjs.js +1 -1
  618. package/dist/domains/scores/components/span-scoring.es.js +1 -1
  619. package/dist/domains/scores/components/trace-scores-list.cjs.js +1 -1
  620. package/dist/domains/scores/components/trace-scores-list.es.js +1 -1
  621. package/dist/domains/scores/components/trace-scores-tab.cjs.js +1 -1
  622. package/dist/domains/scores/components/trace-scores-tab.es.js +1 -1
  623. package/dist/domains/skills/skill-simple-form.cjs.js +1 -1
  624. package/dist/domains/skills/skill-simple-form.es.js +1 -1
  625. package/dist/domains/spans/components/spans-explorer-body.cjs.js +64 -18
  626. package/dist/domains/spans/components/spans-explorer-body.cjs.js.map +1 -1
  627. package/dist/domains/spans/components/spans-explorer-body.es.js +64 -18
  628. package/dist/domains/spans/components/spans-explorer-body.es.js.map +1 -1
  629. package/dist/domains/spans/components/spans-filter-bar.cjs.js +6 -5
  630. package/dist/domains/spans/components/spans-filter-bar.cjs.js.map +1 -1
  631. package/dist/domains/spans/components/spans-filter-bar.es.js +6 -5
  632. package/dist/domains/spans/components/spans-filter-bar.es.js.map +1 -1
  633. package/dist/domains/spans/hooks/use-spans-filter-bar.cjs.js +15 -3
  634. package/dist/domains/spans/hooks/use-spans-filter-bar.cjs.js.map +1 -1
  635. package/dist/domains/spans/hooks/use-spans-filter-bar.es.js +15 -3
  636. package/dist/domains/spans/hooks/use-spans-filter-bar.es.js.map +1 -1
  637. package/dist/domains/spans/span-filters.cjs.js +53 -14
  638. package/dist/domains/spans/span-filters.cjs.js.map +1 -1
  639. package/dist/domains/spans/span-filters.es.js +52 -15
  640. package/dist/domains/spans/span-filters.es.js.map +1 -1
  641. package/dist/domains/spans/span-list-row.cjs.js +6 -1
  642. package/dist/domains/spans/span-list-row.cjs.js.map +1 -1
  643. package/dist/domains/spans/span-list-row.es.js +6 -1
  644. package/dist/domains/spans/span-list-row.es.js.map +1 -1
  645. package/dist/domains/threads/components/threads-explorer-body.cjs.js +45 -12
  646. package/dist/domains/threads/components/threads-explorer-body.cjs.js.map +1 -1
  647. package/dist/domains/threads/components/threads-explorer-body.es.js +46 -12
  648. package/dist/domains/threads/components/threads-explorer-body.es.js.map +1 -1
  649. package/dist/domains/threads/components/threads-filter-bar.cjs.js +3 -3
  650. package/dist/domains/threads/components/threads-filter-bar.es.js +3 -3
  651. package/dist/domains/threads/hooks/use-threads-filter-bar.cjs.js +14 -3
  652. package/dist/domains/threads/hooks/use-threads-filter-bar.cjs.js.map +1 -1
  653. package/dist/domains/threads/hooks/use-threads-filter-bar.es.js +14 -3
  654. package/dist/domains/threads/hooks/use-threads-filter-bar.es.js.map +1 -1
  655. package/dist/domains/threads/thread-filters.cjs.js +26 -13
  656. package/dist/domains/threads/thread-filters.cjs.js.map +1 -1
  657. package/dist/domains/threads/thread-filters.es.js +26 -13
  658. package/dist/domains/threads/thread-filters.es.js.map +1 -1
  659. package/dist/domains/threads/thread-list-row.cjs.js +2 -0
  660. package/dist/domains/threads/thread-list-row.cjs.js.map +1 -1
  661. package/dist/domains/threads/thread-list-row.es.js +2 -0
  662. package/dist/domains/threads/thread-list-row.es.js.map +1 -1
  663. package/dist/domains/traces/components/columns-menu/columns-menu.cjs.js +24 -19
  664. package/dist/domains/traces/components/columns-menu/columns-menu.cjs.js.map +1 -1
  665. package/dist/domains/traces/components/columns-menu/columns-menu.es.js +25 -20
  666. package/dist/domains/traces/components/columns-menu/columns-menu.es.js.map +1 -1
  667. package/dist/domains/traces/components/feedback-thread.cjs.js +1 -1
  668. package/dist/domains/traces/components/feedback-thread.es.js +1 -1
  669. package/dist/domains/traces/components/span-data-panel-view.cjs.js +12 -2
  670. package/dist/domains/traces/components/span-data-panel-view.cjs.js.map +1 -1
  671. package/dist/domains/traces/components/span-data-panel-view.es.js +12 -2
  672. package/dist/domains/traces/components/span-data-panel-view.es.js.map +1 -1
  673. package/dist/domains/traces/components/span-outcome.utils.cjs.js +1 -1
  674. package/dist/domains/traces/components/span-outcome.utils.es.js +1 -1
  675. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +1 -1
  676. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +1 -1
  677. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
  678. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
  679. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +2 -2
  680. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +2 -2
  681. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +3 -3
  682. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +3 -3
  683. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +1 -1
  684. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +1 -1
  685. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
  686. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
  687. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +1 -1
  688. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +1 -1
  689. package/dist/domains/traces/components/span-payload/span-processor-mutations.cjs.js +2 -2
  690. package/dist/domains/traces/components/span-payload/span-processor-mutations.es.js +2 -2
  691. package/dist/domains/traces/components/span-payload/span-tools-section.cjs.js +1 -1
  692. package/dist/domains/traces/components/span-payload/span-tools-section.es.js +1 -1
  693. package/dist/domains/traces/components/span-prompt-changes.cjs.js +1 -1
  694. package/dist/domains/traces/components/span-prompt-changes.es.js +1 -1
  695. package/dist/domains/traces/components/trace-columns-menu.cjs.js +2 -1
  696. package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
  697. package/dist/domains/traces/components/trace-columns-menu.es.js +2 -1
  698. package/dist/domains/traces/components/trace-columns-menu.es.js.map +1 -1
  699. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +9 -2
  700. package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
  701. package/dist/domains/traces/components/trace-data-panel-view.es.js +9 -2
  702. package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
  703. package/dist/domains/traces/components/trace-span-panel.cjs.js +2 -1
  704. package/dist/domains/traces/components/trace-span-panel.cjs.js.map +1 -1
  705. package/dist/domains/traces/components/trace-span-panel.es.js +2 -1
  706. package/dist/domains/traces/components/trace-span-panel.es.js.map +1 -1
  707. package/dist/domains/traces/components/trace-span-timeline-markers.cjs.js +120 -0
  708. package/dist/domains/traces/components/trace-span-timeline-markers.cjs.js.map +1 -0
  709. package/dist/domains/traces/components/trace-span-timeline-markers.d.ts +1 -0
  710. package/dist/domains/traces/components/trace-span-timeline-markers.es.js +119 -0
  711. package/dist/domains/traces/components/trace-span-timeline-markers.es.js.map +1 -0
  712. package/dist/domains/traces/components/trace-span-timeline.cjs.js +8 -5
  713. package/dist/domains/traces/components/trace-span-timeline.cjs.js.map +1 -1
  714. package/dist/domains/traces/components/trace-span-timeline.es.js +8 -5
  715. package/dist/domains/traces/components/trace-span-timeline.es.js.map +1 -1
  716. package/dist/domains/traces/components/trace-time-range-chip.cjs.js +5 -5
  717. package/dist/domains/traces/components/trace-time-range-chip.cjs.js.map +1 -1
  718. package/dist/domains/traces/components/trace-time-range-chip.es.js +5 -5
  719. package/dist/domains/traces/components/trace-time-range-chip.es.js.map +1 -1
  720. package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.cjs.js +15 -11
  721. package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.cjs.js.map +1 -1
  722. package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.es.js +15 -12
  723. package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.es.js.map +1 -1
  724. package/dist/domains/traces/components/traces-explorer/traces-explorer-context.cjs.js +4 -3
  725. package/dist/domains/traces/components/traces-explorer/traces-explorer-context.cjs.js.map +1 -1
  726. package/dist/domains/traces/components/traces-explorer/traces-explorer-context.es.js +4 -3
  727. package/dist/domains/traces/components/traces-explorer/traces-explorer-context.es.js.map +1 -1
  728. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.cjs.js +5 -4
  729. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.cjs.js.map +1 -1
  730. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.es.js +5 -4
  731. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.es.js.map +1 -1
  732. package/dist/domains/traces/components/traces-explorer/traces-explorer-histogram.cjs.js +13 -5
  733. package/dist/domains/traces/components/traces-explorer/traces-explorer-histogram.cjs.js.map +1 -1
  734. package/dist/domains/traces/components/traces-explorer/traces-explorer-histogram.es.js +13 -5
  735. package/dist/domains/traces/components/traces-explorer/traces-explorer-histogram.es.js.map +1 -1
  736. package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.cjs.js +5 -2
  737. package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.cjs.js.map +1 -1
  738. package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.es.js +5 -2
  739. package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.es.js.map +1 -1
  740. package/dist/domains/traces/components/traces-explorer/traces-explorer-list.cjs.js +7 -11
  741. package/dist/domains/traces/components/traces-explorer/traces-explorer-list.cjs.js.map +1 -1
  742. package/dist/domains/traces/components/traces-explorer/traces-explorer-list.es.js +7 -11
  743. package/dist/domains/traces/components/traces-explorer/traces-explorer-list.es.js.map +1 -1
  744. package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.cjs.js +3 -1
  745. package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.cjs.js.map +1 -1
  746. package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.es.js +3 -1
  747. package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.es.js.map +1 -1
  748. package/dist/domains/traces/components/traces-explorer/traces-explorer-root.cjs.js +51 -5
  749. package/dist/domains/traces/components/traces-explorer/traces-explorer-root.cjs.js.map +1 -1
  750. package/dist/domains/traces/components/traces-explorer/traces-explorer-root.es.js +51 -5
  751. package/dist/domains/traces/components/traces-explorer/traces-explorer-root.es.js.map +1 -1
  752. package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.cjs.js +20 -0
  753. package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.cjs.js.map +1 -0
  754. package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.d.ts +1 -0
  755. package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.es.js +19 -0
  756. package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.es.js.map +1 -0
  757. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.cjs.js +10 -4
  758. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.cjs.js.map +1 -1
  759. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.es.js +10 -4
  760. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.es.js.map +1 -1
  761. package/dist/domains/traces/components/traces-explorer.cjs.js +4 -1
  762. package/dist/domains/traces/components/traces-explorer.cjs.js.map +1 -1
  763. package/dist/domains/traces/components/traces-explorer.es.js +5 -3
  764. package/dist/domains/traces/components/traces-explorer.es.js.map +1 -1
  765. package/dist/domains/traces/components/traces-list-view-adapter.cjs.js +5 -1
  766. package/dist/domains/traces/components/traces-list-view-adapter.cjs.js.map +1 -1
  767. package/dist/domains/traces/components/traces-list-view-adapter.es.js +5 -1
  768. package/dist/domains/traces/components/traces-list-view-adapter.es.js.map +1 -1
  769. package/dist/domains/traces/components/traces-list-view.cjs.js +53 -18
  770. package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
  771. package/dist/domains/traces/components/traces-list-view.es.js +53 -18
  772. package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
  773. package/dist/domains/traces/components/traces-page-skeleton.cjs.js +1 -1
  774. package/dist/domains/traces/components/traces-page-skeleton.es.js +1 -1
  775. package/dist/domains/traces/trace-filters.cjs.js +5 -1
  776. package/dist/domains/traces/trace-filters.es.js +1 -1
  777. package/dist/domains/traces/trace-list-columns.cjs.js +48 -9
  778. package/dist/domains/traces/trace-list-columns.cjs.js.map +1 -1
  779. package/dist/domains/traces/trace-list-columns.es.js +48 -9
  780. package/dist/domains/traces/trace-list-columns.es.js.map +1 -1
  781. package/dist/domains/traces/trace-query-filters.cjs.js +1 -1
  782. package/dist/domains/traces/trace-query-filters.es.js +1 -1
  783. package/dist/domains/traces/utils/timeline-markers.cjs.js +34 -0
  784. package/dist/domains/traces/utils/timeline-markers.cjs.js.map +1 -0
  785. package/dist/domains/traces/utils/timeline-markers.d.ts +1 -0
  786. package/dist/domains/traces/utils/timeline-markers.es.js +33 -0
  787. package/dist/domains/traces/utils/timeline-markers.es.js.map +1 -0
  788. package/dist/domains/traces.cjs.js +5 -1
  789. package/dist/domains/traces.es.js +2 -2
  790. package/dist/domains/workflows/components/workflow-combobox.cjs.js +1 -1
  791. package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
  792. package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +1 -1
  793. package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +1 -1
  794. package/dist/domains/workflows/workflow/workflow-graph.cjs.js +1 -1
  795. package/dist/domains/workflows/workflow/workflow-graph.es.js +1 -1
  796. package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +1 -1
  797. package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +1 -1
  798. package/dist/domains/workspace/components/workspace-markdown-preview.cjs.js +1 -1
  799. package/dist/domains/workspace/components/workspace-markdown-preview.es.js +1 -1
  800. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +1 -1
  801. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +1 -1
  802. package/dist/{filter-bar-chip-B3pgpngW.js → filter-bar-chip-7O02P9Vk.js} +27 -9
  803. package/dist/filter-bar-chip-7O02P9Vk.js.map +1 -0
  804. package/dist/{filter-bar-chip-CyTAmjt6.cjs → filter-bar-chip-BUyMf8XQ.cjs} +40 -22
  805. package/dist/filter-bar-chip-BUyMf8XQ.cjs.map +1 -0
  806. package/dist/layout/tabbed-container.cjs.js +1 -1
  807. package/dist/layout/tabbed-container.es.js +1 -1
  808. package/dist/lib/form/json-schema-to-zod-runtime.cjs.js +4 -4
  809. package/dist/lib/form/json-schema-to-zod-runtime.cjs.js.map +1 -1
  810. package/dist/lib/form/json-schema-to-zod-runtime.es.js +4 -4
  811. package/dist/lib/form/json-schema-to-zod-runtime.es.js.map +1 -1
  812. package/dist/lib/form/zod-provider.cjs.js +5 -1
  813. package/dist/lib/form/zod-provider.cjs.js.map +1 -1
  814. package/dist/lib/form/zod-provider.es.js +5 -1
  815. package/dist/lib/form/zod-provider.es.js.map +1 -1
  816. package/dist/observability-saved-views-Bo5kLN20.js +297 -0
  817. package/dist/observability-saved-views-Bo5kLN20.js.map +1 -0
  818. package/dist/observability-saved-views-CwCii7hh.cjs +302 -0
  819. package/dist/observability-saved-views-CwCii7hh.cjs.map +1 -0
  820. package/dist/primitives/chart-axes.cjs.js +44 -0
  821. package/dist/primitives/chart-axes.cjs.js.map +1 -1
  822. package/dist/primitives/chart-axes.es.js +43 -1
  823. package/dist/primitives/chart-axes.es.js.map +1 -1
  824. package/dist/primitives/chart-frame.cjs.js +5 -3
  825. package/dist/primitives/chart-frame.cjs.js.map +1 -1
  826. package/dist/primitives/chart-frame.es.js +6 -4
  827. package/dist/primitives/chart-frame.es.js.map +1 -1
  828. package/dist/primitives/chart-time-tick.cjs.js +15 -11
  829. package/dist/primitives/chart-time-tick.cjs.js.map +1 -1
  830. package/dist/primitives/chart-time-tick.es.js +16 -12
  831. package/dist/primitives/chart-time-tick.es.js.map +1 -1
  832. package/dist/saved-view-schema-DRJYELfK.cjs +71 -0
  833. package/dist/saved-view-schema-DRJYELfK.cjs.map +1 -0
  834. package/dist/saved-view-schema-eJXlRRel.js +54 -0
  835. package/dist/saved-view-schema-eJXlRRel.js.map +1 -0
  836. package/dist/{span-payload-primitives-D3OO0u6u.cjs → span-payload-primitives-B10Xxmx7.cjs} +4 -4
  837. package/dist/{span-payload-primitives-D3OO0u6u.cjs.map → span-payload-primitives-B10Xxmx7.cjs.map} +1 -1
  838. package/dist/{span-payload-primitives-DTV7eUY-.js → span-payload-primitives-Dyhbqaa7.js} +4 -4
  839. package/dist/{span-payload-primitives-DTV7eUY-.js.map → span-payload-primitives-Dyhbqaa7.js.map} +1 -1
  840. package/dist/src/domains/chat/activity/activity-stretch-line.d.ts +4 -2
  841. package/dist/src/domains/chat/activity/components/activity-fold.d.ts +5 -4
  842. package/dist/src/domains/chat/activity/components/use-fading-edge.d.ts +6 -0
  843. package/dist/src/domains/chat/activity/components/use-rolling-words.d.ts +7 -0
  844. package/dist/src/domains/chat/activity/index.d.ts +2 -1
  845. package/dist/src/domains/chat/activity/model/activity-members.d.ts +1 -0
  846. package/dist/src/domains/chat/activity/model/activity-words.d.ts +3 -0
  847. package/dist/src/domains/chat/messages/renderers/tool-part.d.ts +4 -0
  848. package/dist/src/domains/chat/messages/skill-message.d.ts +3 -1
  849. package/dist/src/domains/chat/tools/badges/mcp-task-chip.d.ts +14 -0
  850. package/dist/src/domains/chat/tools/badges/tool-badge.d.ts +5 -1
  851. package/dist/src/domains/chat/tools/badges/use-mcp-task-progress.d.ts +27 -0
  852. package/dist/src/domains/chat/tools/tool-card.d.ts +5 -1
  853. package/dist/src/domains/dashboards/components/dashboard-grid.d.ts +18 -0
  854. package/dist/src/domains/dashboards/components/dashboard-renderer.d.ts +19 -0
  855. package/dist/src/domains/dashboards/components/view-gate.d.ts +30 -0
  856. package/dist/src/domains/dashboards/components/widget-chrome.d.ts +7 -0
  857. package/dist/src/domains/dashboards/components/widget-controls.d.ts +8 -0
  858. package/dist/src/domains/dashboards/components/widget-error.d.ts +6 -0
  859. package/dist/src/domains/dashboards/hooks/use-dashboard-requests.d.ts +10 -0
  860. package/dist/src/domains/dashboards/hooks/use-scorers.d.ts +66 -0
  861. package/dist/src/domains/dashboards/hooks/use-widget-views.d.ts +18 -0
  862. package/dist/src/domains/dashboards/index.d.ts +19 -0
  863. package/dist/src/domains/dashboards/kinds/index.d.ts +7 -0
  864. package/dist/src/domains/dashboards/kinds/kpis/index.d.ts +13 -0
  865. package/dist/src/domains/dashboards/kinds/kpis/kpis-widget.d.ts +3 -0
  866. package/dist/src/domains/dashboards/kinds/kpis/options.d.ts +35 -0
  867. package/dist/src/domains/dashboards/kinds/scores/index.d.ts +8 -0
  868. package/dist/src/domains/dashboards/kinds/scores/options.d.ts +13 -0
  869. package/dist/src/domains/dashboards/kinds/scores/scores-widget.d.ts +3 -0
  870. package/dist/src/domains/dashboards/kinds/table/index.d.ts +23 -0
  871. package/dist/src/domains/dashboards/kinds/table/table-cells.d.ts +26 -0
  872. package/dist/src/domains/dashboards/kinds/table/table-columns.d.ts +7 -0
  873. package/dist/src/domains/dashboards/kinds/table/table-frame.d.ts +13 -0
  874. package/dist/src/domains/dashboards/kinds/table/table-tabs.d.ts +10 -0
  875. package/dist/src/domains/dashboards/kinds/table/table-view.d.ts +5 -0
  876. package/dist/src/domains/dashboards/kinds/table/table-widget.d.ts +7 -0
  877. package/dist/src/domains/dashboards/kinds/timeseries/index.d.ts +30 -0
  878. package/dist/src/domains/dashboards/kinds/timeseries/timeseries-widget.d.ts +5 -0
  879. package/dist/src/domains/dashboards/lib/answers.d.ts +43 -0
  880. package/dist/src/domains/dashboards/lib/chrome.d.ts +14 -0
  881. package/dist/src/domains/dashboards/lib/definition.d.ts +27 -0
  882. package/dist/src/domains/dashboards/lib/filters.d.ts +6 -0
  883. package/dist/src/domains/dashboards/lib/format.d.ts +7 -0
  884. package/dist/src/domains/dashboards/lib/prepare-widget.d.ts +26 -0
  885. package/dist/src/domains/dashboards/lib/requests.d.ts +95 -0
  886. package/dist/src/domains/dashboards/lib/scores.d.ts +35 -0
  887. package/dist/src/domains/dashboards/lib/table.d.ts +188 -0
  888. package/dist/src/domains/dashboards/lib/timeseries.d.ts +119 -0
  889. package/dist/src/domains/dashboards/lib/values.d.ts +86 -0
  890. package/dist/src/domains/dashboards/metrics-dashboard.d.ts +7 -0
  891. package/dist/src/domains/dashboards/widget-kind.d.ts +31 -0
  892. package/dist/src/domains/logs/components/index.d.ts +1 -0
  893. package/dist/src/domains/logs/components/logs-saved-views.d.ts +4 -0
  894. package/dist/src/domains/logs/log-filters.d.ts +8 -0
  895. package/dist/src/domains/metrics/components/agent-runs-card.d.ts +10 -3
  896. package/dist/src/domains/metrics/components/breakdown/breakdown-name.d.ts +13 -0
  897. package/dist/src/domains/metrics/components/breakdown/breakdown-not-priced.d.ts +2 -0
  898. package/dist/src/domains/metrics/components/breakdown/breakdown-row-mark.d.ts +17 -4
  899. package/dist/src/domains/metrics/components/breakdown/breakdown-trend-text.d.ts +9 -0
  900. package/dist/src/domains/metrics/components/card-action-buttons.d.ts +9 -0
  901. package/dist/src/domains/metrics/components/chart-card.d.ts +33 -21
  902. package/dist/src/domains/metrics/components/distinct-ids/distinct-ids-chart.d.ts +0 -1
  903. package/dist/src/domains/metrics/components/failure-rate-card.d.ts +5 -2
  904. package/dist/src/domains/metrics/components/index.d.ts +1 -2
  905. package/dist/src/domains/metrics/components/metrics-grid/metrics-grid.d.ts +4 -1
  906. package/dist/src/domains/metrics/components/trace-aggregate-card.d.ts +1 -1
  907. package/dist/src/domains/observability/components/observability-header-slot.d.ts +6 -0
  908. package/dist/src/domains/observability/components/observability-histogram.d.ts +1 -1
  909. package/dist/src/domains/observability/hooks/use-observability-list-filters.d.ts +21 -5
  910. package/dist/src/domains/observability/index.d.ts +2 -0
  911. package/dist/src/domains/observability/lib/zoom-memory.d.ts +19 -0
  912. package/dist/src/domains/observability/observability-list-url-state.d.ts +39 -0
  913. package/dist/src/domains/observability/saved-view-state.d.ts +46 -0
  914. package/dist/src/domains/observability/saved-views/index.d.ts +7 -0
  915. package/dist/src/domains/observability/saved-views/observability-saved-views.d.ts +22 -0
  916. package/dist/src/domains/observability/saved-views/saved-views-provider.d.ts +15 -0
  917. package/dist/src/domains/observability/saved-views/saved-views-source.d.ts +41 -0
  918. package/dist/src/domains/observability/saved-views/use-hosted-saved-views.d.ts +34 -0
  919. package/dist/src/domains/spans/components/spans-explorer-body.d.ts +4 -1
  920. package/dist/src/domains/spans/components/spans-filter-bar.d.ts +3 -1
  921. package/dist/src/domains/spans/hooks/use-spans-filter-bar.d.ts +1 -1
  922. package/dist/src/domains/spans/hooks/use-spans-list-source.d.ts +3 -0
  923. package/dist/src/domains/spans/span-filters.d.ts +16 -5
  924. package/dist/src/domains/threads/components/threads-explorer-body.d.ts +4 -1
  925. package/dist/src/domains/threads/thread-filters.d.ts +6 -5
  926. package/dist/src/domains/traces/components/columns-menu/columns-menu.d.ts +3 -3
  927. package/dist/src/domains/traces/components/trace-data-panel-view.d.ts +7 -1
  928. package/dist/src/domains/traces/components/trace-span-panel.d.ts +2 -1
  929. package/dist/src/domains/traces/components/trace-span-timeline-markers.d.ts +5 -0
  930. package/dist/src/domains/traces/components/trace-span-timeline.d.ts +6 -1
  931. package/dist/src/domains/traces/components/trace-time-range-chip.d.ts +3 -1
  932. package/dist/src/domains/traces/components/traces-explorer/index.d.ts +4 -1
  933. package/dist/src/domains/traces/components/traces-explorer/traces-explorer-actions.d.ts +5 -5
  934. package/dist/src/domains/traces/components/traces-explorer/traces-explorer-context.d.ts +11 -1
  935. package/dist/src/domains/traces/components/traces-explorer/traces-explorer-saved-views.d.ts +7 -0
  936. package/dist/src/domains/traces/components/traces-list-view.d.ts +20 -7
  937. package/dist/src/domains/traces/hooks/use-traces-list-source.d.ts +5 -0
  938. package/dist/src/domains/traces/trace-filters.d.ts +27 -3
  939. package/dist/src/domains/traces/trace-list-columns.d.ts +16 -6
  940. package/dist/src/domains/traces/utils/timeline-markers.d.ts +25 -0
  941. package/dist/src/domains/workflows/context/use-persisted-workflow-run.d.ts +2 -0
  942. package/dist/src/domains/workflows/workflow/input/processor-input.d.ts +5 -535
  943. package/dist/src/domains/workflows/workflow/use-workflow-trigger.d.ts +1 -1
  944. package/dist/src/ds/components/AgentIndicator/agent-glyph.d.ts +4 -0
  945. package/dist/src/ds/components/AgentIndicator/agent-indicator.d.ts +8 -0
  946. package/dist/src/ds/components/AgentIndicator/animate.d.ts +5 -0
  947. package/dist/src/ds/components/AgentIndicator/index.d.ts +4 -0
  948. package/dist/src/ds/components/AgentIndicator/paint.d.ts +21 -0
  949. package/dist/src/ds/components/AgentIndicator/poses.d.ts +7 -0
  950. package/dist/src/ds/components/AgentIndicator/shapes.d.ts +41 -0
  951. package/dist/src/ds/components/Arrival/arrival.d.ts +11 -0
  952. package/dist/src/ds/components/Arrival/index.d.ts +1 -1
  953. package/dist/src/ds/components/DataList/TracesDataList/traces-data-list-cells.d.ts +12 -0
  954. package/dist/src/ds/components/DataList/TracesDataList/traces-data-list.d.ts +3 -1
  955. package/dist/src/ds/components/FilterBar/types.d.ts +2 -0
  956. package/dist/src/ds/components/MetricsCard/index.d.ts +1 -1
  957. package/dist/src/ds/components/MetricsCard/metrics-card-actions.d.ts +2 -1
  958. package/dist/src/ds/components/MetricsCard/metrics-card-headline.d.ts +13 -0
  959. package/dist/src/ds/components/MetricsCard/metrics-card-title-menu.d.ts +2 -0
  960. package/dist/src/ds/components/MetricsCard/metrics-card-title.d.ts +1 -3
  961. package/dist/src/ds/components/MetricsCard/metrics-card-toolbar.d.ts +3 -3
  962. package/dist/src/ds/components/MetricsCard/metrics-card-total.d.ts +11 -3
  963. package/dist/src/ds/components/MetricsCard/metrics-card.d.ts +2 -9
  964. package/dist/src/ds/components/MetricsCard/metrics-story-data.d.ts +0 -26
  965. package/dist/src/ds/components/MetricsKpiCard/metrics-kpi-card-root.d.ts +5 -2
  966. package/dist/src/ds/components/MetricsLineChart/metrics-line-chart-legend.d.ts +3 -4
  967. package/dist/src/ds/components/MetricsLineChart/metrics-line-chart.d.ts +2 -6
  968. package/dist/src/ds/components/SavedViews/saved-view-editor.d.ts +3 -1
  969. package/dist/src/ds/components/SavedViews/saved-view-picker.d.ts +21 -0
  970. package/dist/src/ds/components/SavedViews/use-saved-views.d.ts +6 -2
  971. package/dist/src/ds/components/ai/activity/activity.d.ts +12 -7
  972. package/dist/src/ds/components/ai/activity/index.d.ts +1 -0
  973. package/dist/src/ds/components/ai/activity/presets/signal-activity.d.ts +4 -1
  974. package/dist/src/ds/components/ai/activity/use-relative-paths.d.ts +3 -0
  975. package/dist/src/ds/components/ai/message-reveal/message-reveal.d.ts +2 -1
  976. package/dist/src/ds/components/ai/tool-call/tool-presentation.d.ts +4 -0
  977. package/dist/src/ds/primitives/chart-axes.d.ts +24 -0
  978. package/dist/src/ds/primitives/chart-frame.d.ts +2 -1
  979. package/dist/src/ds/primitives/chart-time-tick.d.ts +7 -4
  980. package/dist/src/lib/string.d.ts +1 -0
  981. package/dist/{string-OAgeMRQ5.js → string-CNKDIc_4.js} +6 -2
  982. package/dist/string-CNKDIc_4.js.map +1 -0
  983. package/dist/{string-CymY0aJ9.cjs → string-DdJJdCv2.cjs} +11 -1
  984. package/dist/string-DdJJdCv2.cjs.map +1 -0
  985. package/dist/style.css +67 -4
  986. package/dist/{tabbed-container-x2mfK07d.js → tabbed-container-BKUqfEKy.js} +2 -2
  987. package/dist/{tabbed-container-x2mfK07d.js.map → tabbed-container-BKUqfEKy.js.map} +1 -1
  988. package/dist/{tabbed-container-CBTb0LgE.cjs → tabbed-container-CFEImJOK.cjs} +2 -2
  989. package/dist/{tabbed-container-CBTb0LgE.cjs.map → tabbed-container-CFEImJOK.cjs.map} +1 -1
  990. package/dist/{tool-approval-6E73C0r6.cjs → tool-approval-BfjoSNOC.cjs} +4 -4
  991. package/dist/{tool-approval-6E73C0r6.cjs.map → tool-approval-BfjoSNOC.cjs.map} +1 -1
  992. package/dist/{tool-approval-BXlro6fV.js → tool-approval-FeuyUUcL.js} +4 -4
  993. package/dist/{tool-approval-BXlro6fV.js.map → tool-approval-FeuyUUcL.js.map} +1 -1
  994. package/dist/{tool-call-CItJ8KLA.js → tool-call-BxYXs9w0.js} +9 -7
  995. package/dist/{tool-call-CItJ8KLA.js.map → tool-call-BxYXs9w0.js.map} +1 -1
  996. package/dist/{tool-call-Dq9xF3WD.cjs → tool-call-CvilN9ti.cjs} +9 -7
  997. package/dist/{tool-call-Dq9xF3WD.cjs.map → tool-call-CvilN9ti.cjs.map} +1 -1
  998. package/dist/{tool-card-o5u4YCR0.cjs → tool-card-B7O8AsRl.cjs} +9 -5
  999. package/dist/tool-card-B7O8AsRl.cjs.map +1 -0
  1000. package/dist/{tool-card-Bd8weXze.js → tool-card-ELW898uw.js} +9 -5
  1001. package/dist/tool-card-ELW898uw.js.map +1 -0
  1002. package/dist/{tool-presentation-D2uUj1AB.cjs → tool-presentation-BLErsb7c.cjs} +38 -40
  1003. package/dist/tool-presentation-BLErsb7c.cjs.map +1 -0
  1004. package/dist/{tool-presentation-DKfIKLQy.js → tool-presentation-BSZYIWx2.js} +38 -40
  1005. package/dist/tool-presentation-BSZYIWx2.js.map +1 -0
  1006. package/dist/{trace-filters-C27yWcan.js → trace-filters-BJaebsxJ.js} +78 -11
  1007. package/dist/trace-filters-BJaebsxJ.js.map +1 -0
  1008. package/dist/{trace-filters-BpeBUjCb.cjs → trace-filters-BNEZ31HX.cjs} +100 -9
  1009. package/dist/trace-filters-BNEZ31HX.cjs.map +1 -0
  1010. package/dist/types-CP7wbYua.cjs.map +1 -1
  1011. package/dist/types-DiiL5mTO.js.map +1 -1
  1012. package/dist/utils/string.cjs.js +2 -1
  1013. package/dist/utils/string.es.js +1 -1
  1014. package/package.json +14 -14
  1015. package/dist/Arrival-Dm6Vgn78.cjs.map +0 -1
  1016. package/dist/Arrival-NpBOyV52.js.map +0 -1
  1017. package/dist/DataList-Cmk08jUV.cjs.map +0 -1
  1018. package/dist/DataList-Ve3omCXT.js.map +0 -1
  1019. package/dist/DateTimeRangePicker-ByMbLdom.js.map +0 -1
  1020. package/dist/DateTimeRangePicker-DGbH5WOn.cjs.map +0 -1
  1021. package/dist/FilterBar-Dk3QEuT6.js.map +0 -1
  1022. package/dist/FilterBar-gEvoWDXA.cjs.map +0 -1
  1023. package/dist/MetricsCard-C9GWgT58.js.map +0 -1
  1024. package/dist/MetricsCard-Dly_H3oX.cjs.map +0 -1
  1025. package/dist/MetricsLineChart-2m4LVL1N.cjs.map +0 -1
  1026. package/dist/MetricsLineChart-DKzuRU2q.js.map +0 -1
  1027. package/dist/MetricsStackedBarChart-DJB4aByt.js.map +0 -1
  1028. package/dist/MetricsStackedBarChart-NATtwA_W.cjs.map +0 -1
  1029. package/dist/activity-QyLJcBKc.cjs.map +0 -1
  1030. package/dist/activity-ihrl0JtH.js.map +0 -1
  1031. package/dist/combobox-C-E7_q4j.cjs.map +0 -1
  1032. package/dist/combobox-CDS2pBqz.js.map +0 -1
  1033. package/dist/domains/metrics/components/metrics-kpis.cjs.js +0 -106
  1034. package/dist/domains/metrics/components/metrics-kpis.cjs.js.map +0 -1
  1035. package/dist/domains/metrics/components/metrics-kpis.d.ts +0 -1
  1036. package/dist/domains/metrics/components/metrics-kpis.es.js +0 -105
  1037. package/dist/domains/metrics/components/metrics-kpis.es.js.map +0 -1
  1038. package/dist/filter-bar-chip-B3pgpngW.js.map +0 -1
  1039. package/dist/filter-bar-chip-CyTAmjt6.cjs.map +0 -1
  1040. package/dist/src/domains/metrics/components/metrics-kpis.d.ts +0 -2
  1041. package/dist/src/ds/components/MetricsCard/metrics-card-description.d.ts +0 -4
  1042. package/dist/src/ds/components/MetricsCard/metrics-card-summary.d.ts +0 -8
  1043. package/dist/src/ds/components/MetricsCard/metrics-card-tabs.d.ts +0 -16
  1044. package/dist/src/ds/components/MetricsCard/metrics-card-title-and-description.d.ts +0 -16
  1045. package/dist/string-CymY0aJ9.cjs.map +0 -1
  1046. package/dist/string-OAgeMRQ5.js.map +0 -1
  1047. package/dist/tool-card-Bd8weXze.js.map +0 -1
  1048. package/dist/tool-card-o5u4YCR0.cjs.map +0 -1
  1049. package/dist/tool-presentation-D2uUj1AB.cjs.map +0 -1
  1050. package/dist/tool-presentation-DKfIKLQy.js.map +0 -1
  1051. package/dist/trace-filters-BpeBUjCb.cjs.map +0 -1
  1052. package/dist/trace-filters-C27yWcan.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeseries.cjs.js","names":["z","colorSchema","valueExprSchema","formatSchema","queryRefSchema","measureOf","rowsOf","valueOf","bucketPlan","intervalHours","bucketGrid","gridIndex","seriesOf","matchesGroups","evaluate","exprRefs","unknownQueryIssues"],"sources":["../../../../src/domains/dashboards/lib/timeseries.ts"],"sourcesContent":["import type { DashboardQuery } from '@mastra/client-js';\nimport { z } from 'zod/v4';\nimport type { BucketLabels } from '../../metrics/lib/bucket-labels';\nimport { bucketGrid, bucketPlan, gridIndex, intervalHours } from '../../metrics/lib/metrics-buckets';\nimport type { ApiInterval } from '../../metrics/lib/metrics-buckets';\nimport { bucketTraceAggregateRows } from '../../metrics/lib/trace-aggregate';\nimport type { TraceAggregateRow } from '../../metrics/lib/trace-aggregate';\nimport { measureOf, rowsOf, seriesOf, valueOf } from './answers';\nimport type { DashboardAnswer } from './requests';\nimport {\n colorSchema,\n evaluate,\n exprRefs,\n formatSchema,\n matchesGroups,\n queryRefSchema,\n unknownQueryIssues,\n valueExprSchema,\n} from './values';\nimport type { ValueExpr, ValueRef } from './values';\n\nexport const timeseriesSeriesSchema = z\n .object({\n dataKey: z.string().min(1),\n label: z.string().min(1),\n color: colorSchema,\n emphasis: z.boolean().optional(),\n /** The series' value per bucket. */\n value: valueExprSchema,\n /** The series' value over the whole range, shown beside the card's title marked with the series' color. */\n rangeTotal: valueExprSchema.optional(),\n /** Rounds each bucket's value to a whole number. */\n round: z.boolean().optional(),\n })\n .strict();\n\nexport const timeseriesOptionsSchema = z\n .object({\n chart: z.enum(['stackedBar', 'line']),\n format: formatSchema,\n /** `false` leaves the y-axis to the chart's default labels. */\n axis: z.boolean().optional(),\n series: z.array(timeseriesSeriesSchema).min(1),\n /**\n * `chart` re-buckets metrics onto the bar charts' grid (sums merge); `api` keeps the API's 1h or 1d\n * buckets (percentiles and averages can't merge). Trace and span aggregates always keep the API's.\n */\n buckets: z.enum(['chart', 'api']).optional(),\n /** Ids of queries sent over the whole range, without an interval (e.g. distinct counts, which can't be summed). */\n totals: z.array(queryRefSchema).optional(),\n /** Hides a series whose range total (or, without one, sum of buckets) is zero. */\n hideEmpty: z.boolean().optional(),\n /** Emphasizes the first series shown. */\n emphasizeFirst: z.boolean().optional(),\n xLabels: z.literal('edges').optional(),\n /** The y-axis range when every plotted value is zero. */\n flatYDomain: z.tuple([z.number(), z.number()]).optional(),\n yDomain: z.tuple([z.number(), z.number()]).optional(),\n /** The card's total, beside its title. Ignored when a series has a `rangeTotal`. */\n total: z\n .object({\n /** `total`: every series summed over the range; `peak`: one series' highest bucket; or an expression over range totals. */\n value: z.union([z.literal('total'), z.object({ peak: z.string().min(1) }).strict(), valueExprSchema]),\n format: formatSchema.optional(),\n })\n .strict()\n .optional(),\n emptyMessage: z.string().optional(),\n /** Empty when this is zero over the range; by default, when every plotted value is zero. */\n emptyWhenZero: valueExprSchema.optional(),\n })\n .strict();\n\nexport type TimeseriesOptions = z.infer<typeof timeseriesOptionsSchema>;\nexport type TimeseriesSeries = z.infer<typeof timeseriesSeriesSchema>;\n\ntype Window = { start: Date; end: Date };\n\nexport type ChartBucket = BucketLabels & Record<string, number | string | undefined>;\n\nexport type ShapedTimeseries = {\n data: ChartBucket[];\n /** The series shown, each with its range total when it has one. */\n series: (Omit<TimeseriesSeries, 'rangeTotal'> & { rangeTotal?: number })[];\n /** Hours per bucket, for a clicked bucket's window. */\n stepHours: number;\n /** The card's total, from `options.total`. */\n total?: number;\n /** Every plotted value is zero (or missing). */\n flat: boolean;\n /** Nothing to show in the range. */\n empty: boolean;\n};\n\n/** A ref's value in one trace aggregate row set (ungrouped: one row). */\nfunction fromRows(rows: TraceAggregateRow[], ref: ValueRef) {\n const { measure } = ref;\n if (!measure) return undefined;\n const values = rows.flatMap(r => measureOf(r.measures, measure) ?? []);\n return values.length ? values.reduce((a, b) => a + b, 0) : undefined;\n}\n\n/** A ref's value over the whole range, from a totals query or the sum of its buckets. */\nfunction rangeValue(answer: DashboardAnswer | undefined, ref: ValueRef, perBucket: (number | undefined)[] | undefined) {\n const aggregate = rowsOf(answer);\n if (aggregate && !aggregate.rows.some(r => r.bucket)) return fromRows(aggregate.rows, ref) ?? 0;\n const value = valueOf(answer);\n if (value) return (ref.field === 'estimatedCost' ? value.estimatedCost : value.value) ?? undefined;\n return perBucket?.reduce<number>((sum, v) => sum + (v ?? 0), 0);\n}\n\n/**\n * Lays a timeseries view's answers on the chart's bucket grid. `chart` buckets add every point that\n * falls in a bucket (missing is 0); `api` buckets take the API's point (missing stays unset).\n */\nexport function shapeTimeseries({\n options,\n responses,\n window,\n hasTraceQueries,\n}: {\n options: TimeseriesOptions;\n /** Each query's answer, by query id. */\n responses: ReadonlyMap<string, DashboardAnswer | undefined>;\n window: Window;\n hasTraceQueries: boolean;\n}): ShapedTimeseries {\n const plan = bucketPlan(window.start, window.end);\n const merged = !hasTraceQueries && (options.buckets ?? 'chart') === 'chart';\n const stepHours = merged ? plan.stepHours : intervalHours(plan.interval);\n const grid: BucketLabels[] = bucketGrid(window.start, window.end, stepHours);\n const indexOf = gridIndex(grid, stepHours);\n const totals = new Set(options.totals ?? []);\n\n const cache = new Map<string, (number | undefined)[]>();\n const bucketed = (ref: ValueRef): (number | undefined)[] => {\n const key = JSON.stringify(ref);\n const hit = cache.get(key);\n if (hit) return hit;\n const values: (number | undefined)[] = grid.map(() => (merged ? 0 : undefined));\n const answer = responses.get(ref.query);\n const aggregate = rowsOf(answer);\n if (aggregate) {\n bucketTraceAggregateRows(aggregate.rows, window).forEach((b, i) => {\n values[i] = fromRows(b.rows, ref) ?? 0;\n });\n }\n for (const s of seriesOf(answer) ?? []) {\n if (ref.percentile !== undefined && s.percentile !== ref.percentile) continue;\n if (!matchesGroups(ref, s.name ?? '')) continue;\n for (const p of s.points) {\n const i = indexOf(p);\n if (i === undefined) continue;\n const v = ref.field === 'estimatedCost' ? (p.estimatedCost ?? 0) : p.value;\n // Every series the ref matches adds up (e.g. a grouped count); `api` buckets stay unset until one answers.\n values[i] = (values[i] ?? 0) + v;\n }\n }\n cache.set(key, values);\n return values;\n };\n const rangeOf = (ref: ValueRef) =>\n rangeValue(responses.get(ref.query), ref, totals.has(ref.query) ? undefined : bucketed(ref)) ?? 0;\n const overRange = (expr: ValueExpr) => evaluate(expr, rangeOf) ?? 0;\n\n const perSeries = options.series.map(s => {\n const values = grid.map((_, i) => {\n const v = evaluate(s.value, ref => bucketed(ref)[i]);\n return v === undefined ? undefined : s.round ? Math.round(v) : v;\n });\n const sum = values.reduce<number>((a, v) => a + (v ?? 0), 0);\n return { s, values, rangeTotal: s.rangeTotal ? overRange(s.rangeTotal) : undefined, sum };\n });\n\n const shown = perSeries.filter(p => !options.hideEmpty || (p.rangeTotal ?? p.sum) > 0);\n const data: ChartBucket[] = grid.map((labels, i) => {\n const bucket: ChartBucket = { ...labels };\n for (const p of shown) {\n const v = p.values[i];\n if (v !== undefined) bucket[p.s.dataKey] = v;\n }\n return bucket;\n });\n\n let total: number | undefined;\n const spec = options.total?.value;\n if (spec === 'total') total = shown.reduce((a, p) => a + p.sum, 0);\n else if (spec && 'peak' in spec) {\n const peak = perSeries.find(p => p.s.dataKey === spec.peak);\n total = Math.max(0, ...(peak?.values ?? []).map(v => v ?? 0));\n } else if (spec) total = overRange(spec);\n\n const flat = shown.every(p => p.values.every(v => !v));\n return {\n data,\n series: shown.map((p, i) => ({\n ...p.s,\n emphasis: options.emphasizeFirst ? i === 0 : p.s.emphasis,\n rangeTotal: p.rangeTotal,\n })),\n stepHours,\n total,\n flat,\n empty: options.emptyWhenZero ? overRange(options.emptyWhenZero) === 0 : flat,\n };\n}\n\n/** Aggregations whose values for several groups add up to the value for all of them. */\nconst ADDITIVE = new Set<string>(['sum', 'count']);\n\n/**\n * What the schema can't say: query ids the view has, bucketed queries that leave their interval to the\n * chart's grid, refs that pick one of the percentiles their query asks for, and refs that pick one group\n * of a grouped aggregation that can't be added up.\n */\nexport function timeseriesIssues(options: TimeseriesOptions, queries: readonly DashboardQuery[]): string[] {\n const exprs = options.series.flatMap(s => (s.rangeTotal ? [s.value, s.rangeTotal] : [s.value]));\n const total = options.total?.value;\n if (total && total !== 'total' && !('peak' in total)) exprs.push(total);\n if (options.emptyWhenZero) exprs.push(options.emptyWhenZero);\n const refs = exprs.flatMap(exprRefs);\n const totals = new Set(options.totals ?? []);\n const byId = new Map(queries.map(q => [q.id, q]));\n\n // The chart lays every query on one grid built from the page's range; a query's own interval would\n // land its points in the wrong buckets.\n const ownIntervals = queries\n .filter(q => q.id !== undefined && !totals.has(q.id) && 'interval' in q && q.interval !== undefined)\n .map(q => `query '${q.id}' sets its own interval; the chart's buckets follow the page's range`);\n // Percentiles of one metric can't be added up, so a ref must pick one when its query asks for several.\n const ambiguousPercentiles = refs\n .filter(r => {\n const query = byId.get(r.query);\n return (\n r.percentile === undefined &&\n query !== undefined &&\n 'request' in query &&\n query.request === 'percentiles' &&\n query.percentiles.length > 1\n );\n })\n .map(r => `a value reading query '${r.query}' must pick one of its percentiles`);\n const missingPercentiles = refs\n .filter(r => {\n const query = byId.get(r.query);\n return (\n r.percentile !== undefined &&\n query !== undefined &&\n 'request' in query &&\n query.request === 'percentiles' &&\n !query.percentiles.includes(r.percentile)\n );\n })\n .map(r => `a value reading query '${r.query}' picks percentile ${r.percentile}, which the query doesn't ask for`);\n // Every series a ref matches adds up, which is only right for counts and sums.\n const mixedGroups = refs\n .filter(r => {\n const query = byId.get(r.query);\n return (\n r.groups?.length !== 1 &&\n query !== undefined &&\n 'request' in query &&\n query.request === 'timeSeries' &&\n (query.groupBy?.length ?? 0) > 0 &&\n !ADDITIVE.has(query.aggregation)\n );\n })\n .map(r => `a value reading query '${r.query}' must pick one group, since its groups' values can't be added up`);\n\n return [\n ...unknownQueryIssues(\n refs.map(r => r.query),\n queries,\n ),\n ...unknownQueryIssues(options.totals ?? [], queries, 'options.totals'),\n ...ownIntervals,\n ...new Set(ambiguousPercentiles),\n ...new Set(missingPercentiles),\n ...new Set(mixedGroups),\n ];\n}\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from '../../../src/domains/dashboards/lib/timeseries';
@@ -0,0 +1,188 @@
1
+ import { bucketGrid, bucketPlan, gridIndex, intervalHours } from "../../metrics/lib/metrics-buckets.es.js";
2
+ import { bucketTraceAggregateRows } from "../../metrics/lib/trace-aggregate.es.js";
3
+ import { measureOf, rowsOf, seriesOf, valueOf } from "./answers.es.js";
4
+ import { colorSchema, evaluate, exprRefs, formatSchema, matchesGroups, queryRefSchema, unknownQueryIssues, valueExprSchema } from "./values.es.js";
5
+ import { z } from "zod/v4";
6
+ // src/domains/dashboards/lib/timeseries.ts
7
+ var timeseriesSeriesSchema = z.object({
8
+ dataKey: z.string().min(1),
9
+ label: z.string().min(1),
10
+ color: colorSchema,
11
+ emphasis: z.boolean().optional(),
12
+ /** The series' value per bucket. */
13
+ value: valueExprSchema,
14
+ /** The series' value over the whole range, shown beside the card's title marked with the series' color. */
15
+ rangeTotal: valueExprSchema.optional(),
16
+ /** Rounds each bucket's value to a whole number. */
17
+ round: z.boolean().optional()
18
+ }).strict();
19
+ var timeseriesOptionsSchema = z.object({
20
+ chart: z.enum(["stackedBar", "line"]),
21
+ format: formatSchema,
22
+ /** `false` leaves the y-axis to the chart's default labels. */
23
+ axis: z.boolean().optional(),
24
+ series: z.array(timeseriesSeriesSchema).min(1),
25
+ /**
26
+ * `chart` re-buckets metrics onto the bar charts' grid (sums merge); `api` keeps the API's 1h or 1d
27
+ * buckets (percentiles and averages can't merge). Trace and span aggregates always keep the API's.
28
+ */
29
+ buckets: z.enum(["chart", "api"]).optional(),
30
+ /** Ids of queries sent over the whole range, without an interval (e.g. distinct counts, which can't be summed). */
31
+ totals: z.array(queryRefSchema).optional(),
32
+ /** Hides a series whose range total (or, without one, sum of buckets) is zero. */
33
+ hideEmpty: z.boolean().optional(),
34
+ /** Emphasizes the first series shown. */
35
+ emphasizeFirst: z.boolean().optional(),
36
+ xLabels: z.literal("edges").optional(),
37
+ /** The y-axis range when every plotted value is zero. */
38
+ flatYDomain: z.tuple([z.number(), z.number()]).optional(),
39
+ yDomain: z.tuple([z.number(), z.number()]).optional(),
40
+ /** The card's total, beside its title. Ignored when a series has a `rangeTotal`. */
41
+ total: z.object({
42
+ /** `total`: every series summed over the range; `peak`: one series' highest bucket; or an expression over range totals. */
43
+ value: z.union([
44
+ z.literal("total"),
45
+ z.object({ peak: z.string().min(1) }).strict(),
46
+ valueExprSchema
47
+ ]),
48
+ format: formatSchema.optional()
49
+ }).strict().optional(),
50
+ emptyMessage: z.string().optional(),
51
+ /** Empty when this is zero over the range; by default, when every plotted value is zero. */
52
+ emptyWhenZero: valueExprSchema.optional()
53
+ }).strict();
54
+ /** A ref's value in one trace aggregate row set (ungrouped: one row). */
55
+ function fromRows(rows, ref) {
56
+ const { measure } = ref;
57
+ if (!measure) return void 0;
58
+ const values = rows.flatMap((r) => measureOf(r.measures, measure) ?? []);
59
+ return values.length ? values.reduce((a, b) => a + b, 0) : void 0;
60
+ }
61
+ /** A ref's value over the whole range, from a totals query or the sum of its buckets. */
62
+ function rangeValue(answer, ref, perBucket) {
63
+ const aggregate = rowsOf(answer);
64
+ if (aggregate && !aggregate.rows.some((r) => r.bucket)) return fromRows(aggregate.rows, ref) ?? 0;
65
+ const value = valueOf(answer);
66
+ if (value) return (ref.field === "estimatedCost" ? value.estimatedCost : value.value) ?? void 0;
67
+ return perBucket?.reduce((sum, v) => sum + (v ?? 0), 0);
68
+ }
69
+ /**
70
+ * Lays a timeseries view's answers on the chart's bucket grid. `chart` buckets add every point that
71
+ * falls in a bucket (missing is 0); `api` buckets take the API's point (missing stays unset).
72
+ */
73
+ function shapeTimeseries({ options, responses, window, hasTraceQueries }) {
74
+ const plan = bucketPlan(window.start, window.end);
75
+ const merged = !hasTraceQueries && (options.buckets ?? "chart") === "chart";
76
+ const stepHours = merged ? plan.stepHours : intervalHours(plan.interval);
77
+ const grid = bucketGrid(window.start, window.end, stepHours);
78
+ const indexOf = gridIndex(grid, stepHours);
79
+ const totals = new Set(options.totals ?? []);
80
+ const cache = /* @__PURE__ */ new Map();
81
+ const bucketed = (ref) => {
82
+ const key = JSON.stringify(ref);
83
+ const hit = cache.get(key);
84
+ if (hit) return hit;
85
+ const values = grid.map(() => merged ? 0 : void 0);
86
+ const answer = responses.get(ref.query);
87
+ const aggregate = rowsOf(answer);
88
+ if (aggregate) bucketTraceAggregateRows(aggregate.rows, window).forEach((b, i) => {
89
+ values[i] = fromRows(b.rows, ref) ?? 0;
90
+ });
91
+ for (const s of seriesOf(answer) ?? []) {
92
+ if (ref.percentile !== void 0 && s.percentile !== ref.percentile) continue;
93
+ if (!matchesGroups(ref, s.name ?? "")) continue;
94
+ for (const p of s.points) {
95
+ const i = indexOf(p);
96
+ if (i === void 0) continue;
97
+ const v = ref.field === "estimatedCost" ? p.estimatedCost ?? 0 : p.value;
98
+ values[i] = (values[i] ?? 0) + v;
99
+ }
100
+ }
101
+ cache.set(key, values);
102
+ return values;
103
+ };
104
+ const rangeOf = (ref) => rangeValue(responses.get(ref.query), ref, totals.has(ref.query) ? void 0 : bucketed(ref)) ?? 0;
105
+ const overRange = (expr) => evaluate(expr, rangeOf) ?? 0;
106
+ const perSeries = options.series.map((s) => {
107
+ const values = grid.map((_, i) => {
108
+ const v = evaluate(s.value, (ref) => bucketed(ref)[i]);
109
+ return v === void 0 ? void 0 : s.round ? Math.round(v) : v;
110
+ });
111
+ const sum = values.reduce((a, v) => a + (v ?? 0), 0);
112
+ return {
113
+ s,
114
+ values,
115
+ rangeTotal: s.rangeTotal ? overRange(s.rangeTotal) : void 0,
116
+ sum
117
+ };
118
+ });
119
+ const shown = perSeries.filter((p) => !options.hideEmpty || (p.rangeTotal ?? p.sum) > 0);
120
+ const data = grid.map((labels, i) => {
121
+ const bucket = { ...labels };
122
+ for (const p of shown) {
123
+ const v = p.values[i];
124
+ if (v !== void 0) bucket[p.s.dataKey] = v;
125
+ }
126
+ return bucket;
127
+ });
128
+ let total;
129
+ const spec = options.total?.value;
130
+ if (spec === "total") total = shown.reduce((a, p) => a + p.sum, 0);
131
+ else if (spec && "peak" in spec) {
132
+ const peak = perSeries.find((p) => p.s.dataKey === spec.peak);
133
+ total = Math.max(0, ...(peak?.values ?? []).map((v) => v ?? 0));
134
+ } else if (spec) total = overRange(spec);
135
+ const flat = shown.every((p) => p.values.every((v) => !v));
136
+ return {
137
+ data,
138
+ series: shown.map((p, i) => ({
139
+ ...p.s,
140
+ emphasis: options.emphasizeFirst ? i === 0 : p.s.emphasis,
141
+ rangeTotal: p.rangeTotal
142
+ })),
143
+ stepHours,
144
+ total,
145
+ flat,
146
+ empty: options.emptyWhenZero ? overRange(options.emptyWhenZero) === 0 : flat
147
+ };
148
+ }
149
+ /** Aggregations whose values for several groups add up to the value for all of them. */
150
+ var ADDITIVE = /* @__PURE__ */ new Set(["sum", "count"]);
151
+ /**
152
+ * What the schema can't say: query ids the view has, bucketed queries that leave their interval to the
153
+ * chart's grid, refs that pick one of the percentiles their query asks for, and refs that pick one group
154
+ * of a grouped aggregation that can't be added up.
155
+ */
156
+ function timeseriesIssues(options, queries) {
157
+ const exprs = options.series.flatMap((s) => s.rangeTotal ? [s.value, s.rangeTotal] : [s.value]);
158
+ const total = options.total?.value;
159
+ if (total && total !== "total" && !("peak" in total)) exprs.push(total);
160
+ if (options.emptyWhenZero) exprs.push(options.emptyWhenZero);
161
+ const refs = exprs.flatMap(exprRefs);
162
+ const totals = new Set(options.totals ?? []);
163
+ const byId = new Map(queries.map((q) => [q.id, q]));
164
+ const ownIntervals = queries.filter((q) => q.id !== void 0 && !totals.has(q.id) && "interval" in q && q.interval !== void 0).map((q) => `query '${q.id}' sets its own interval; the chart's buckets follow the page's range`);
165
+ const ambiguousPercentiles = refs.filter((r) => {
166
+ const query = byId.get(r.query);
167
+ return r.percentile === void 0 && query !== void 0 && "request" in query && query.request === "percentiles" && query.percentiles.length > 1;
168
+ }).map((r) => `a value reading query '${r.query}' must pick one of its percentiles`);
169
+ const missingPercentiles = refs.filter((r) => {
170
+ const query = byId.get(r.query);
171
+ return r.percentile !== void 0 && query !== void 0 && "request" in query && query.request === "percentiles" && !query.percentiles.includes(r.percentile);
172
+ }).map((r) => `a value reading query '${r.query}' picks percentile ${r.percentile}, which the query doesn't ask for`);
173
+ const mixedGroups = refs.filter((r) => {
174
+ const query = byId.get(r.query);
175
+ return r.groups?.length !== 1 && query !== void 0 && "request" in query && query.request === "timeSeries" && (query.groupBy?.length ?? 0) > 0 && !ADDITIVE.has(query.aggregation);
176
+ }).map((r) => `a value reading query '${r.query}' must pick one group, since its groups' values can't be added up`);
177
+ return [
178
+ ...unknownQueryIssues(refs.map((r) => r.query), queries),
179
+ ...unknownQueryIssues(options.totals ?? [], queries, "options.totals"),
180
+ ...ownIntervals,
181
+ ...new Set(ambiguousPercentiles),
182
+ ...new Set(missingPercentiles),
183
+ ...new Set(mixedGroups)
184
+ ];
185
+ }
186
+ export { shapeTimeseries, timeseriesIssues, timeseriesOptionsSchema, timeseriesSeriesSchema };
187
+
188
+ //# sourceMappingURL=timeseries.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeseries.es.js","names":[],"sources":["../../../../src/domains/dashboards/lib/timeseries.ts"],"sourcesContent":["import type { DashboardQuery } from '@mastra/client-js';\nimport { z } from 'zod/v4';\nimport type { BucketLabels } from '../../metrics/lib/bucket-labels';\nimport { bucketGrid, bucketPlan, gridIndex, intervalHours } from '../../metrics/lib/metrics-buckets';\nimport type { ApiInterval } from '../../metrics/lib/metrics-buckets';\nimport { bucketTraceAggregateRows } from '../../metrics/lib/trace-aggregate';\nimport type { TraceAggregateRow } from '../../metrics/lib/trace-aggregate';\nimport { measureOf, rowsOf, seriesOf, valueOf } from './answers';\nimport type { DashboardAnswer } from './requests';\nimport {\n colorSchema,\n evaluate,\n exprRefs,\n formatSchema,\n matchesGroups,\n queryRefSchema,\n unknownQueryIssues,\n valueExprSchema,\n} from './values';\nimport type { ValueExpr, ValueRef } from './values';\n\nexport const timeseriesSeriesSchema = z\n .object({\n dataKey: z.string().min(1),\n label: z.string().min(1),\n color: colorSchema,\n emphasis: z.boolean().optional(),\n /** The series' value per bucket. */\n value: valueExprSchema,\n /** The series' value over the whole range, shown beside the card's title marked with the series' color. */\n rangeTotal: valueExprSchema.optional(),\n /** Rounds each bucket's value to a whole number. */\n round: z.boolean().optional(),\n })\n .strict();\n\nexport const timeseriesOptionsSchema = z\n .object({\n chart: z.enum(['stackedBar', 'line']),\n format: formatSchema,\n /** `false` leaves the y-axis to the chart's default labels. */\n axis: z.boolean().optional(),\n series: z.array(timeseriesSeriesSchema).min(1),\n /**\n * `chart` re-buckets metrics onto the bar charts' grid (sums merge); `api` keeps the API's 1h or 1d\n * buckets (percentiles and averages can't merge). Trace and span aggregates always keep the API's.\n */\n buckets: z.enum(['chart', 'api']).optional(),\n /** Ids of queries sent over the whole range, without an interval (e.g. distinct counts, which can't be summed). */\n totals: z.array(queryRefSchema).optional(),\n /** Hides a series whose range total (or, without one, sum of buckets) is zero. */\n hideEmpty: z.boolean().optional(),\n /** Emphasizes the first series shown. */\n emphasizeFirst: z.boolean().optional(),\n xLabels: z.literal('edges').optional(),\n /** The y-axis range when every plotted value is zero. */\n flatYDomain: z.tuple([z.number(), z.number()]).optional(),\n yDomain: z.tuple([z.number(), z.number()]).optional(),\n /** The card's total, beside its title. Ignored when a series has a `rangeTotal`. */\n total: z\n .object({\n /** `total`: every series summed over the range; `peak`: one series' highest bucket; or an expression over range totals. */\n value: z.union([z.literal('total'), z.object({ peak: z.string().min(1) }).strict(), valueExprSchema]),\n format: formatSchema.optional(),\n })\n .strict()\n .optional(),\n emptyMessage: z.string().optional(),\n /** Empty when this is zero over the range; by default, when every plotted value is zero. */\n emptyWhenZero: valueExprSchema.optional(),\n })\n .strict();\n\nexport type TimeseriesOptions = z.infer<typeof timeseriesOptionsSchema>;\nexport type TimeseriesSeries = z.infer<typeof timeseriesSeriesSchema>;\n\ntype Window = { start: Date; end: Date };\n\nexport type ChartBucket = BucketLabels & Record<string, number | string | undefined>;\n\nexport type ShapedTimeseries = {\n data: ChartBucket[];\n /** The series shown, each with its range total when it has one. */\n series: (Omit<TimeseriesSeries, 'rangeTotal'> & { rangeTotal?: number })[];\n /** Hours per bucket, for a clicked bucket's window. */\n stepHours: number;\n /** The card's total, from `options.total`. */\n total?: number;\n /** Every plotted value is zero (or missing). */\n flat: boolean;\n /** Nothing to show in the range. */\n empty: boolean;\n};\n\n/** A ref's value in one trace aggregate row set (ungrouped: one row). */\nfunction fromRows(rows: TraceAggregateRow[], ref: ValueRef) {\n const { measure } = ref;\n if (!measure) return undefined;\n const values = rows.flatMap(r => measureOf(r.measures, measure) ?? []);\n return values.length ? values.reduce((a, b) => a + b, 0) : undefined;\n}\n\n/** A ref's value over the whole range, from a totals query or the sum of its buckets. */\nfunction rangeValue(answer: DashboardAnswer | undefined, ref: ValueRef, perBucket: (number | undefined)[] | undefined) {\n const aggregate = rowsOf(answer);\n if (aggregate && !aggregate.rows.some(r => r.bucket)) return fromRows(aggregate.rows, ref) ?? 0;\n const value = valueOf(answer);\n if (value) return (ref.field === 'estimatedCost' ? value.estimatedCost : value.value) ?? undefined;\n return perBucket?.reduce<number>((sum, v) => sum + (v ?? 0), 0);\n}\n\n/**\n * Lays a timeseries view's answers on the chart's bucket grid. `chart` buckets add every point that\n * falls in a bucket (missing is 0); `api` buckets take the API's point (missing stays unset).\n */\nexport function shapeTimeseries({\n options,\n responses,\n window,\n hasTraceQueries,\n}: {\n options: TimeseriesOptions;\n /** Each query's answer, by query id. */\n responses: ReadonlyMap<string, DashboardAnswer | undefined>;\n window: Window;\n hasTraceQueries: boolean;\n}): ShapedTimeseries {\n const plan = bucketPlan(window.start, window.end);\n const merged = !hasTraceQueries && (options.buckets ?? 'chart') === 'chart';\n const stepHours = merged ? plan.stepHours : intervalHours(plan.interval);\n const grid: BucketLabels[] = bucketGrid(window.start, window.end, stepHours);\n const indexOf = gridIndex(grid, stepHours);\n const totals = new Set(options.totals ?? []);\n\n const cache = new Map<string, (number | undefined)[]>();\n const bucketed = (ref: ValueRef): (number | undefined)[] => {\n const key = JSON.stringify(ref);\n const hit = cache.get(key);\n if (hit) return hit;\n const values: (number | undefined)[] = grid.map(() => (merged ? 0 : undefined));\n const answer = responses.get(ref.query);\n const aggregate = rowsOf(answer);\n if (aggregate) {\n bucketTraceAggregateRows(aggregate.rows, window).forEach((b, i) => {\n values[i] = fromRows(b.rows, ref) ?? 0;\n });\n }\n for (const s of seriesOf(answer) ?? []) {\n if (ref.percentile !== undefined && s.percentile !== ref.percentile) continue;\n if (!matchesGroups(ref, s.name ?? '')) continue;\n for (const p of s.points) {\n const i = indexOf(p);\n if (i === undefined) continue;\n const v = ref.field === 'estimatedCost' ? (p.estimatedCost ?? 0) : p.value;\n // Every series the ref matches adds up (e.g. a grouped count); `api` buckets stay unset until one answers.\n values[i] = (values[i] ?? 0) + v;\n }\n }\n cache.set(key, values);\n return values;\n };\n const rangeOf = (ref: ValueRef) =>\n rangeValue(responses.get(ref.query), ref, totals.has(ref.query) ? undefined : bucketed(ref)) ?? 0;\n const overRange = (expr: ValueExpr) => evaluate(expr, rangeOf) ?? 0;\n\n const perSeries = options.series.map(s => {\n const values = grid.map((_, i) => {\n const v = evaluate(s.value, ref => bucketed(ref)[i]);\n return v === undefined ? undefined : s.round ? Math.round(v) : v;\n });\n const sum = values.reduce<number>((a, v) => a + (v ?? 0), 0);\n return { s, values, rangeTotal: s.rangeTotal ? overRange(s.rangeTotal) : undefined, sum };\n });\n\n const shown = perSeries.filter(p => !options.hideEmpty || (p.rangeTotal ?? p.sum) > 0);\n const data: ChartBucket[] = grid.map((labels, i) => {\n const bucket: ChartBucket = { ...labels };\n for (const p of shown) {\n const v = p.values[i];\n if (v !== undefined) bucket[p.s.dataKey] = v;\n }\n return bucket;\n });\n\n let total: number | undefined;\n const spec = options.total?.value;\n if (spec === 'total') total = shown.reduce((a, p) => a + p.sum, 0);\n else if (spec && 'peak' in spec) {\n const peak = perSeries.find(p => p.s.dataKey === spec.peak);\n total = Math.max(0, ...(peak?.values ?? []).map(v => v ?? 0));\n } else if (spec) total = overRange(spec);\n\n const flat = shown.every(p => p.values.every(v => !v));\n return {\n data,\n series: shown.map((p, i) => ({\n ...p.s,\n emphasis: options.emphasizeFirst ? i === 0 : p.s.emphasis,\n rangeTotal: p.rangeTotal,\n })),\n stepHours,\n total,\n flat,\n empty: options.emptyWhenZero ? overRange(options.emptyWhenZero) === 0 : flat,\n };\n}\n\n/** Aggregations whose values for several groups add up to the value for all of them. */\nconst ADDITIVE = new Set<string>(['sum', 'count']);\n\n/**\n * What the schema can't say: query ids the view has, bucketed queries that leave their interval to the\n * chart's grid, refs that pick one of the percentiles their query asks for, and refs that pick one group\n * of a grouped aggregation that can't be added up.\n */\nexport function timeseriesIssues(options: TimeseriesOptions, queries: readonly DashboardQuery[]): string[] {\n const exprs = options.series.flatMap(s => (s.rangeTotal ? [s.value, s.rangeTotal] : [s.value]));\n const total = options.total?.value;\n if (total && total !== 'total' && !('peak' in total)) exprs.push(total);\n if (options.emptyWhenZero) exprs.push(options.emptyWhenZero);\n const refs = exprs.flatMap(exprRefs);\n const totals = new Set(options.totals ?? []);\n const byId = new Map(queries.map(q => [q.id, q]));\n\n // The chart lays every query on one grid built from the page's range; a query's own interval would\n // land its points in the wrong buckets.\n const ownIntervals = queries\n .filter(q => q.id !== undefined && !totals.has(q.id) && 'interval' in q && q.interval !== undefined)\n .map(q => `query '${q.id}' sets its own interval; the chart's buckets follow the page's range`);\n // Percentiles of one metric can't be added up, so a ref must pick one when its query asks for several.\n const ambiguousPercentiles = refs\n .filter(r => {\n const query = byId.get(r.query);\n return (\n r.percentile === undefined &&\n query !== undefined &&\n 'request' in query &&\n query.request === 'percentiles' &&\n query.percentiles.length > 1\n );\n })\n .map(r => `a value reading query '${r.query}' must pick one of its percentiles`);\n const missingPercentiles = refs\n .filter(r => {\n const query = byId.get(r.query);\n return (\n r.percentile !== undefined &&\n query !== undefined &&\n 'request' in query &&\n query.request === 'percentiles' &&\n !query.percentiles.includes(r.percentile)\n );\n })\n .map(r => `a value reading query '${r.query}' picks percentile ${r.percentile}, which the query doesn't ask for`);\n // Every series a ref matches adds up, which is only right for counts and sums.\n const mixedGroups = refs\n .filter(r => {\n const query = byId.get(r.query);\n return (\n r.groups?.length !== 1 &&\n query !== undefined &&\n 'request' in query &&\n query.request === 'timeSeries' &&\n (query.groupBy?.length ?? 0) > 0 &&\n !ADDITIVE.has(query.aggregation)\n );\n })\n .map(r => `a value reading query '${r.query}' must pick one group, since its groups' values can't be added up`);\n\n return [\n ...unknownQueryIssues(\n refs.map(r => r.query),\n queries,\n ),\n ...unknownQueryIssues(options.totals ?? [], queries, 'options.totals'),\n ...ownIntervals,\n ...new Set(ambiguousPercentiles),\n ...new Set(missingPercentiles),\n ...new Set(mixedGroups),\n ];\n}\n"],"mappings":";;;;;;AAqBA,IAAa,yBAAyB,EACnC,OAAO;CACN,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;CACzB,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;CACvB,OAAO;CACP,UAAU,EAAE,QAAQ,CAAC,CAAC,SAAS;;CAE/B,OAAO;;CAEP,YAAY,gBAAgB,SAAS;;CAErC,OAAO,EAAE,QAAQ,CAAC,CAAC,SAAS;AAC9B,CAAC,CAAC,CACD,OAAO;AAEV,IAAa,0BAA0B,EACpC,OAAO;CACN,OAAO,EAAE,KAAK,CAAC,cAAc,MAAM,CAAC;CACpC,QAAQ;;CAER,MAAM,EAAE,QAAQ,CAAC,CAAC,SAAS;CAC3B,QAAQ,EAAE,MAAM,sBAAsB,CAAC,CAAC,IAAI,CAAC;;;;;CAK7C,SAAS,EAAE,KAAK,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,SAAS;;CAE3C,QAAQ,EAAE,MAAM,cAAc,CAAC,CAAC,SAAS;;CAEzC,WAAW,EAAE,QAAQ,CAAC,CAAC,SAAS;;CAEhC,gBAAgB,EAAE,QAAQ,CAAC,CAAC,SAAS;CACrC,SAAS,EAAE,QAAQ,OAAO,CAAC,CAAC,SAAS;;CAErC,aAAa,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;CACxD,SAAS,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;;CAEpD,OAAO,EACJ,OAAO;;EAEN,OAAO,EAAE,MAAM;GAAC,EAAE,QAAQ,OAAO;GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO;GAAG;EAAe,CAAC;EACpG,QAAQ,aAAa,SAAS;CAChC,CAAC,CAAC,CACD,OAAO,CAAC,CACR,SAAS;CACZ,cAAc,EAAE,OAAO,CAAC,CAAC,SAAS;;CAElC,eAAe,gBAAgB,SAAS;AAC1C,CAAC,CAAC,CACD,OAAO;;AAwBV,SAAS,SAAS,MAA2B,KAAe;CAC1D,MAAM,EAAE,YAAY;CACpB,IAAI,CAAC,SAAS,OAAO,KAAA;CACrB,MAAM,SAAS,KAAK,SAAQ,MAAK,UAAU,EAAE,UAAU,OAAO,KAAK,CAAC,CAAC;CACrE,OAAO,OAAO,SAAS,OAAO,QAAQ,GAAG,MAAM,IAAI,GAAG,CAAC,IAAI,KAAA;AAC7D;;AAGA,SAAS,WAAW,QAAqC,KAAe,WAA+C;CACrH,MAAM,YAAY,OAAO,MAAM;CAC/B,IAAI,aAAa,CAAC,UAAU,KAAK,MAAK,MAAK,EAAE,MAAM,GAAG,OAAO,SAAS,UAAU,MAAM,GAAG,KAAK;CAC9F,MAAM,QAAQ,QAAQ,MAAM;CAC5B,IAAI,OAAO,QAAQ,IAAI,UAAU,kBAAkB,MAAM,gBAAgB,MAAM,UAAU,KAAA;CACzF,OAAO,WAAW,QAAgB,KAAK,MAAM,OAAO,KAAK,IAAI,CAAC;AAChE;;;;;AAMA,SAAgB,gBAAgB,EAC9B,SACA,WACA,QACA,mBAOmB;CACnB,MAAM,OAAO,WAAW,OAAO,OAAO,OAAO,GAAG;CAChD,MAAM,SAAS,CAAC,oBAAoB,QAAQ,WAAW,aAAa;CACpE,MAAM,YAAY,SAAS,KAAK,YAAY,cAAc,KAAK,QAAQ;CACvE,MAAM,OAAuB,WAAW,OAAO,OAAO,OAAO,KAAK,SAAS;CAC3E,MAAM,UAAU,UAAU,MAAM,SAAS;CACzC,MAAM,SAAS,IAAI,IAAI,QAAQ,UAAU,CAAC,CAAC;CAE3C,MAAM,wBAAQ,IAAI,IAAoC;CACtD,MAAM,YAAY,QAA0C;EAC1D,MAAM,MAAM,KAAK,UAAU,GAAG;EAC9B,MAAM,MAAM,MAAM,IAAI,GAAG;EACzB,IAAI,KAAK,OAAO;EAChB,MAAM,SAAiC,KAAK,UAAW,SAAS,IAAI,KAAA,CAAU;EAC9E,MAAM,SAAS,UAAU,IAAI,IAAI,KAAK;EACtC,MAAM,YAAY,OAAO,MAAM;EAC/B,IAAI,WACF,yBAAyB,UAAU,MAAM,MAAM,CAAC,CAAC,SAAS,GAAG,MAAM;GACjE,OAAO,KAAK,SAAS,EAAE,MAAM,GAAG,KAAK;EACvC,CAAC;EAEH,KAAK,MAAM,KAAK,SAAS,MAAM,KAAK,CAAC,GAAG;GACtC,IAAI,IAAI,eAAe,KAAA,KAAa,EAAE,eAAe,IAAI,YAAY;GACrE,IAAI,CAAC,cAAc,KAAK,EAAE,QAAQ,EAAE,GAAG;GACvC,KAAK,MAAM,KAAK,EAAE,QAAQ;IACxB,MAAM,IAAI,QAAQ,CAAC;IACnB,IAAI,MAAM,KAAA,GAAW;IACrB,MAAM,IAAI,IAAI,UAAU,kBAAmB,EAAE,iBAAiB,IAAK,EAAE;IAErE,OAAO,MAAM,OAAO,MAAM,KAAK;GACjC;EACF;EACA,MAAM,IAAI,KAAK,MAAM;EACrB,OAAO;CACT;CACA,MAAM,WAAW,QACf,WAAW,UAAU,IAAI,IAAI,KAAK,GAAG,KAAK,OAAO,IAAI,IAAI,KAAK,IAAI,KAAA,IAAY,SAAS,GAAG,CAAC,KAAK;CAClG,MAAM,aAAa,SAAoB,SAAS,MAAM,OAAO,KAAK;CAElE,MAAM,YAAY,QAAQ,OAAO,KAAI,MAAK;EACxC,MAAM,SAAS,KAAK,KAAK,GAAG,MAAM;GAChC,MAAM,IAAI,SAAS,EAAE,QAAO,QAAO,SAAS,GAAG,CAAC,CAAC,EAAE;GACnD,OAAO,MAAM,KAAA,IAAY,KAAA,IAAY,EAAE,QAAQ,KAAK,MAAM,CAAC,IAAI;EACjE,CAAC;EACD,MAAM,MAAM,OAAO,QAAgB,GAAG,MAAM,KAAK,KAAK,IAAI,CAAC;EAC3D,OAAO;GAAE;GAAG;GAAQ,YAAY,EAAE,aAAa,UAAU,EAAE,UAAU,IAAI,KAAA;GAAW;EAAI;CAC1F,CAAC;CAED,MAAM,QAAQ,UAAU,QAAO,MAAK,CAAC,QAAQ,cAAc,EAAE,cAAc,EAAE,OAAO,CAAC;CACrF,MAAM,OAAsB,KAAK,KAAK,QAAQ,MAAM;EAClD,MAAM,SAAsB,EAAE,GAAG,OAAO;EACxC,KAAK,MAAM,KAAK,OAAO;GACrB,MAAM,IAAI,EAAE,OAAO;GACnB,IAAI,MAAM,KAAA,GAAW,OAAO,EAAE,EAAE,WAAW;EAC7C;EACA,OAAO;CACT,CAAC;CAED,IAAI;CACJ,MAAM,OAAO,QAAQ,OAAO;CAC5B,IAAI,SAAS,SAAS,QAAQ,MAAM,QAAQ,GAAG,MAAM,IAAI,EAAE,KAAK,CAAC;MAC5D,IAAI,QAAQ,UAAU,MAAM;EAC/B,MAAM,OAAO,UAAU,MAAK,MAAK,EAAE,EAAE,YAAY,KAAK,IAAI;EAC1D,QAAQ,KAAK,IAAI,GAAG,IAAI,MAAM,UAAU,CAAC,EAAA,CAAG,KAAI,MAAK,KAAK,CAAC,CAAC;CAC9D,OAAO,IAAI,MAAM,QAAQ,UAAU,IAAI;CAEvC,MAAM,OAAO,MAAM,OAAM,MAAK,EAAE,OAAO,OAAM,MAAK,CAAC,CAAC,CAAC;CACrD,OAAO;EACL;EACA,QAAQ,MAAM,KAAK,GAAG,OAAO;GAC3B,GAAG,EAAE;GACL,UAAU,QAAQ,iBAAiB,MAAM,IAAI,EAAE,EAAE;GACjD,YAAY,EAAE;EAChB,EAAE;EACF;EACA;EACA;EACA,OAAO,QAAQ,gBAAgB,UAAU,QAAQ,aAAa,MAAM,IAAI;CAC1E;AACF;;AAGA,IAAM,2BAAW,IAAI,IAAY,CAAC,OAAO,OAAO,CAAC;;;;;;AAOjD,SAAgB,iBAAiB,SAA4B,SAA8C;CACzG,MAAM,QAAQ,QAAQ,OAAO,SAAQ,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,UAAU,IAAI,CAAC,EAAE,KAAK,CAAE;CAC9F,MAAM,QAAQ,QAAQ,OAAO;CAC7B,IAAI,SAAS,UAAU,WAAW,EAAE,UAAU,QAAQ,MAAM,KAAK,KAAK;CACtE,IAAI,QAAQ,eAAe,MAAM,KAAK,QAAQ,aAAa;CAC3D,MAAM,OAAO,MAAM,QAAQ,QAAQ;CACnC,MAAM,SAAS,IAAI,IAAI,QAAQ,UAAU,CAAC,CAAC;CAC3C,MAAM,OAAO,IAAI,IAAI,QAAQ,KAAI,MAAK,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;CAIhD,MAAM,eAAe,QAClB,QAAO,MAAK,EAAE,OAAO,KAAA,KAAa,CAAC,OAAO,IAAI,EAAE,EAAE,KAAK,cAAc,KAAK,EAAE,aAAa,KAAA,CAAS,CAAC,CACnG,KAAI,MAAK,UAAU,EAAE,GAAG,qEAAqE;CAEhG,MAAM,uBAAuB,KAC1B,QAAO,MAAK;EACX,MAAM,QAAQ,KAAK,IAAI,EAAE,KAAK;EAC9B,OACE,EAAE,eAAe,KAAA,KACjB,UAAU,KAAA,KACV,aAAa,SACb,MAAM,YAAY,iBAClB,MAAM,YAAY,SAAS;CAE/B,CAAC,CAAC,CACD,KAAI,MAAK,0BAA0B,EAAE,MAAM,mCAAmC;CACjF,MAAM,qBAAqB,KACxB,QAAO,MAAK;EACX,MAAM,QAAQ,KAAK,IAAI,EAAE,KAAK;EAC9B,OACE,EAAE,eAAe,KAAA,KACjB,UAAU,KAAA,KACV,aAAa,SACb,MAAM,YAAY,iBAClB,CAAC,MAAM,YAAY,SAAS,EAAE,UAAU;CAE5C,CAAC,CAAC,CACD,KAAI,MAAK,0BAA0B,EAAE,MAAM,qBAAqB,EAAE,WAAW,kCAAkC;CAElH,MAAM,cAAc,KACjB,QAAO,MAAK;EACX,MAAM,QAAQ,KAAK,IAAI,EAAE,KAAK;EAC9B,OACE,EAAE,QAAQ,WAAW,KACrB,UAAU,KAAA,KACV,aAAa,SACb,MAAM,YAAY,iBACjB,MAAM,SAAS,UAAU,KAAK,KAC/B,CAAC,SAAS,IAAI,MAAM,WAAW;CAEnC,CAAC,CAAC,CACD,KAAI,MAAK,0BAA0B,EAAE,MAAM,kEAAkE;CAEhH,OAAO;EACL,GAAG,mBACD,KAAK,KAAI,MAAK,EAAE,KAAK,GACrB,OACF;EACA,GAAG,mBAAmB,QAAQ,UAAU,CAAC,GAAG,SAAS,gBAAgB;EACrE,GAAG;EACH,GAAG,IAAI,IAAI,oBAAoB;EAC/B,GAAG,IAAI,IAAI,kBAAkB;EAC7B,GAAG,IAAI,IAAI,WAAW;CACxB;AACF"}
@@ -0,0 +1,155 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ let zod_v4 = require("zod/v4");
3
+ // src/domains/dashboards/lib/values.ts
4
+ /**
5
+ * The options vocabulary widget kinds share. Values reference a view's query results and
6
+ * combine them with a few fixed operations; there are no free-form expressions.
7
+ */
8
+ /** Names one of the view's queries by its `id`, never its position, so reordering queries keeps refs. */
9
+ var queryRefSchema = zod_v4.z.string().min(1);
10
+ /** A number read from one query's result. */
11
+ var valueRefSchema = zod_v4.z.object({
12
+ /** The `id` of one of the view's queries. */
13
+ query: queryRefSchema,
14
+ /** Metrics and scores read `value` (or the price, `estimatedCost`); trace and span aggregates read a measure. */
15
+ field: zod_v4.z.enum(["value", "estimatedCost"]).optional(),
16
+ /** A trace or span aggregate measure, e.g. `countDistinct.threadId`. */
17
+ measure: zod_v4.z.string().min(1).optional(),
18
+ /** A percentile of a percentiles request, e.g. `0.95`. */
19
+ percentile: zod_v4.z.number().min(0).max(1).optional(),
20
+ /** Only the series whose group key is exactly one of these... */
21
+ groups: zod_v4.z.array(zod_v4.z.string()).min(1).optional(),
22
+ /** ...or is none of these. */
23
+ notGroups: zod_v4.z.array(zod_v4.z.string()).min(1).optional()
24
+ }).strict();
25
+ var constSchema = zod_v4.z.strictObject({ const: zod_v4.z.number() });
26
+ var sumSchema = zod_v4.z.strictObject({ get sum() {
27
+ return zod_v4.z.array(valueExprSchema).min(1);
28
+ } });
29
+ var minusSchema = zod_v4.z.strictObject({ get minus() {
30
+ return zod_v4.z.tuple([valueExprSchema, valueExprSchema]);
31
+ } });
32
+ var ratioSchema = zod_v4.z.strictObject({ get ratio() {
33
+ return zod_v4.z.strictObject({
34
+ of: valueExprSchema,
35
+ over: valueExprSchema
36
+ });
37
+ } });
38
+ var maxSchema = zod_v4.z.strictObject({ get max() {
39
+ return zod_v4.z.array(valueExprSchema).min(1);
40
+ } });
41
+ var coalesceSchema = zod_v4.z.strictObject({ get coalesce() {
42
+ return zod_v4.z.array(valueExprSchema).min(1);
43
+ } });
44
+ var valueExprSchema = zod_v4.z.union([
45
+ valueRefSchema,
46
+ constSchema,
47
+ sumSchema,
48
+ minusSchema,
49
+ ratioSchema,
50
+ maxSchema,
51
+ coalesceSchema
52
+ ]);
53
+ var VALUE_FORMATS = [
54
+ "count",
55
+ "usd",
56
+ "duration",
57
+ "percent",
58
+ "score"
59
+ ];
60
+ var formatSchema = zod_v4.z.enum(VALUE_FORMATS);
61
+ var CHART_COLOR_NAMES = [
62
+ "green",
63
+ "sky",
64
+ "violet",
65
+ "teal",
66
+ "indigo",
67
+ "warning",
68
+ "error",
69
+ "neutral"
70
+ ];
71
+ var colorSchema = zod_v4.z.enum(CHART_COLOR_NAMES);
72
+ /** Every ref an expression reads, in order. */
73
+ function exprRefs(expr) {
74
+ if ("const" in expr) return [];
75
+ if ("sum" in expr) return expr.sum.flatMap(exprRefs);
76
+ if ("minus" in expr) return expr.minus.flatMap(exprRefs);
77
+ if ("ratio" in expr) return [...exprRefs(expr.ratio.of), ...exprRefs(expr.ratio.over)];
78
+ if ("max" in expr) return expr.max.flatMap(exprRefs);
79
+ if ("coalesce" in expr) return expr.coalesce.flatMap(exprRefs);
80
+ return [expr];
81
+ }
82
+ var defined = (values) => values.filter((v) => v !== void 0);
83
+ /**
84
+ * Evaluates an expression, reading each ref through `read`. A missing operand counts as 0 in `sum` and
85
+ * `minus` while another has a value; the result is missing when every operand is.
86
+ */
87
+ function evaluate(expr, read) {
88
+ const run = (e) => evaluate(e, read);
89
+ if ("const" in expr) return expr.const;
90
+ if ("sum" in expr) {
91
+ const parts = expr.sum.map(run);
92
+ return defined(parts).length ? parts.reduce((total, p) => total + (p ?? 0), 0) : void 0;
93
+ }
94
+ if ("minus" in expr) {
95
+ const [a, b] = expr.minus.map(run);
96
+ return a === void 0 && b === void 0 ? void 0 : (a ?? 0) - (b ?? 0);
97
+ }
98
+ if ("ratio" in expr) {
99
+ const over = run(expr.ratio.over);
100
+ if (!over) return void 0;
101
+ return (run(expr.ratio.of) ?? 0) / over;
102
+ }
103
+ if ("max" in expr) {
104
+ const parts = defined(expr.max.map(run));
105
+ return parts.length ? Math.max(...parts) : void 0;
106
+ }
107
+ if ("coalesce" in expr) {
108
+ for (const e of expr.coalesce) {
109
+ const v = run(e);
110
+ if (v !== void 0) return v;
111
+ }
112
+ return;
113
+ }
114
+ return read(expr);
115
+ }
116
+ /** Whether the series with group key `name` is one a ref reads. */
117
+ function matchesGroups(ref, name) {
118
+ if (ref.groups && !ref.groups.includes(name)) return false;
119
+ if (ref.notGroups?.includes(name)) return false;
120
+ return true;
121
+ }
122
+ /** Each query's answer under its id, for reading refs. Queries without an id can't be referenced. */
123
+ function answersById(queries, answers) {
124
+ const byId = /* @__PURE__ */ new Map();
125
+ queries.forEach((q, i) => {
126
+ if (q.id !== void 0) byId.set(q.id, answers[i]);
127
+ });
128
+ return byId;
129
+ }
130
+ /** Where a query id sits in the view's queries, or `undefined` if no query has it. */
131
+ var queryIndex = (queries, id) => {
132
+ if (id === void 0) return void 0;
133
+ const index = queries.findIndex((q) => q.id === id);
134
+ return index < 0 ? void 0 : index;
135
+ };
136
+ /** An issue for each referenced query id the view doesn't have. */
137
+ function unknownQueryIssues(ids, queries, where = "options") {
138
+ const known = new Set(queries.flatMap((q) => q.id === void 0 ? [] : [q.id]));
139
+ return [...new Set(ids)].filter((id) => !known.has(id)).map((id) => `${where}: reads query '${id}', which the view doesn't have`);
140
+ }
141
+ exports.CHART_COLOR_NAMES = CHART_COLOR_NAMES;
142
+ exports.VALUE_FORMATS = VALUE_FORMATS;
143
+ exports.answersById = answersById;
144
+ exports.colorSchema = colorSchema;
145
+ exports.evaluate = evaluate;
146
+ exports.exprRefs = exprRefs;
147
+ exports.formatSchema = formatSchema;
148
+ exports.matchesGroups = matchesGroups;
149
+ exports.queryIndex = queryIndex;
150
+ exports.queryRefSchema = queryRefSchema;
151
+ exports.unknownQueryIssues = unknownQueryIssues;
152
+ exports.valueExprSchema = valueExprSchema;
153
+ exports.valueRefSchema = valueRefSchema;
154
+
155
+ //# sourceMappingURL=values.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"values.cjs.js","names":["z"],"sources":["../../../../src/domains/dashboards/lib/values.ts"],"sourcesContent":["import { z } from 'zod/v4';\n\n/**\n * The options vocabulary widget kinds share. Values reference a view's query results and\n * combine them with a few fixed operations; there are no free-form expressions.\n */\n\n/** Names one of the view's queries by its `id`, never its position, so reordering queries keeps refs. */\nexport const queryRefSchema = z.string().min(1);\n\n/** A number read from one query's result. */\nexport const valueRefSchema = z\n .object({\n /** The `id` of one of the view's queries. */\n query: queryRefSchema,\n /** Metrics and scores read `value` (or the price, `estimatedCost`); trace and span aggregates read a measure. */\n field: z.enum(['value', 'estimatedCost']).optional(),\n /** A trace or span aggregate measure, e.g. `countDistinct.threadId`. */\n measure: z.string().min(1).optional(),\n /** A percentile of a percentiles request, e.g. `0.95`. */\n percentile: z.number().min(0).max(1).optional(),\n /** Only the series whose group key is exactly one of these... */\n groups: z.array(z.string()).min(1).optional(),\n /** ...or is none of these. */\n notGroups: z.array(z.string()).min(1).optional(),\n })\n .strict();\n\nexport type ValueRef = z.infer<typeof valueRefSchema>;\n\nexport type ValueExpr =\n | ValueRef\n | { const: number }\n | { sum: ValueExpr[] }\n /** The first minus the second. */\n | { minus: [ValueExpr, ValueExpr] }\n /** `of / over`; no value when `over` is 0 or has none. */\n | { ratio: { of: ValueExpr; over: ValueExpr } }\n /** The largest part that has a value. */\n | { max: ValueExpr[] }\n /** The first part that has a value. */\n | { coalesce: ValueExpr[] };\n\n// Recursive through getters, as zod 4 recommends; `z.lazy` around a union recurses forever.\nconst constSchema = z.strictObject({ const: z.number() });\nconst sumSchema = z.strictObject({\n get sum() {\n return z.array(valueExprSchema).min(1);\n },\n});\nconst minusSchema = z.strictObject({\n get minus() {\n return z.tuple([valueExprSchema, valueExprSchema]);\n },\n});\nconst ratioSchema = z.strictObject({\n get ratio() {\n return z.strictObject({ of: valueExprSchema, over: valueExprSchema });\n },\n});\nconst maxSchema = z.strictObject({\n get max() {\n return z.array(valueExprSchema).min(1);\n },\n});\nconst coalesceSchema = z.strictObject({\n get coalesce() {\n return z.array(valueExprSchema).min(1);\n },\n});\n\nexport const valueExprSchema: z.ZodType<ValueExpr> = z.union([\n valueRefSchema,\n constSchema,\n sumSchema,\n minusSchema,\n ratioSchema,\n maxSchema,\n coalesceSchema,\n]);\n\nexport const VALUE_FORMATS = ['count', 'usd', 'duration', 'percent', 'score'] as const;\nexport const formatSchema = z.enum(VALUE_FORMATS);\nexport type ValueFormat = z.infer<typeof formatSchema>;\n\nexport const CHART_COLOR_NAMES = ['green', 'sky', 'violet', 'teal', 'indigo', 'warning', 'error', 'neutral'] as const;\nexport const colorSchema = z.enum(CHART_COLOR_NAMES);\n\n/** Every ref an expression reads, in order. */\nexport function exprRefs(expr: ValueExpr): ValueRef[] {\n if ('const' in expr) return [];\n if ('sum' in expr) return expr.sum.flatMap(exprRefs);\n if ('minus' in expr) return expr.minus.flatMap(exprRefs);\n if ('ratio' in expr) return [...exprRefs(expr.ratio.of), ...exprRefs(expr.ratio.over)];\n if ('max' in expr) return expr.max.flatMap(exprRefs);\n if ('coalesce' in expr) return expr.coalesce.flatMap(exprRefs);\n return [expr];\n}\n\nconst defined = (values: (number | undefined)[]) => values.filter((v): v is number => v !== undefined);\n\n/**\n * Evaluates an expression, reading each ref through `read`. A missing operand counts as 0 in `sum` and\n * `minus` while another has a value; the result is missing when every operand is.\n */\nexport function evaluate(expr: ValueExpr, read: (ref: ValueRef) => number | undefined): number | undefined {\n const run = (e: ValueExpr) => evaluate(e, read);\n if ('const' in expr) return expr.const;\n if ('sum' in expr) {\n const parts = expr.sum.map(run);\n return defined(parts).length ? parts.reduce<number>((total, p) => total + (p ?? 0), 0) : undefined;\n }\n if ('minus' in expr) {\n const [a, b] = expr.minus.map(run);\n return a === undefined && b === undefined ? undefined : (a ?? 0) - (b ?? 0);\n }\n if ('ratio' in expr) {\n const over = run(expr.ratio.over);\n if (!over) return undefined;\n return (run(expr.ratio.of) ?? 0) / over;\n }\n if ('max' in expr) {\n const parts = defined(expr.max.map(run));\n return parts.length ? Math.max(...parts) : undefined;\n }\n if ('coalesce' in expr) {\n for (const e of expr.coalesce) {\n const v = run(e);\n if (v !== undefined) return v;\n }\n return undefined;\n }\n return read(expr);\n}\n\n/** Whether the series with group key `name` is one a ref reads. */\nexport function matchesGroups(ref: ValueRef, name: string) {\n if (ref.groups && !ref.groups.includes(name)) return false;\n if (ref.notGroups?.includes(name)) return false;\n return true;\n}\n\n/** Each query's answer under its id, for reading refs. Queries without an id can't be referenced. */\nexport function answersById<T>(queries: readonly { id?: string }[], answers: readonly T[]): Map<string, T | undefined> {\n const byId = new Map<string, T | undefined>();\n queries.forEach((q, i) => {\n if (q.id !== undefined) byId.set(q.id, answers[i]);\n });\n return byId;\n}\n\n/** Where a query id sits in the view's queries, or `undefined` if no query has it. */\nexport const queryIndex = (queries: readonly { id?: string }[], id: string | undefined) => {\n if (id === undefined) return undefined;\n const index = queries.findIndex(q => q.id === id);\n return index < 0 ? undefined : index;\n};\n\n/** An issue for each referenced query id the view doesn't have. */\nexport function unknownQueryIssues(ids: readonly string[], queries: readonly { id?: string }[], where = 'options') {\n const known = new Set(queries.flatMap(q => (q.id === undefined ? [] : [q.id])));\n return [...new Set(ids)]\n .filter(id => !known.has(id))\n .map(id => `${where}: reads query '${id}', which the view doesn't have`);\n}\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from '../../../src/domains/dashboards/lib/values';
@@ -0,0 +1,142 @@
1
+ import { z } from "zod/v4";
2
+ // src/domains/dashboards/lib/values.ts
3
+ /**
4
+ * The options vocabulary widget kinds share. Values reference a view's query results and
5
+ * combine them with a few fixed operations; there are no free-form expressions.
6
+ */
7
+ /** Names one of the view's queries by its `id`, never its position, so reordering queries keeps refs. */
8
+ var queryRefSchema = z.string().min(1);
9
+ /** A number read from one query's result. */
10
+ var valueRefSchema = z.object({
11
+ /** The `id` of one of the view's queries. */
12
+ query: queryRefSchema,
13
+ /** Metrics and scores read `value` (or the price, `estimatedCost`); trace and span aggregates read a measure. */
14
+ field: z.enum(["value", "estimatedCost"]).optional(),
15
+ /** A trace or span aggregate measure, e.g. `countDistinct.threadId`. */
16
+ measure: z.string().min(1).optional(),
17
+ /** A percentile of a percentiles request, e.g. `0.95`. */
18
+ percentile: z.number().min(0).max(1).optional(),
19
+ /** Only the series whose group key is exactly one of these... */
20
+ groups: z.array(z.string()).min(1).optional(),
21
+ /** ...or is none of these. */
22
+ notGroups: z.array(z.string()).min(1).optional()
23
+ }).strict();
24
+ var constSchema = z.strictObject({ const: z.number() });
25
+ var sumSchema = z.strictObject({ get sum() {
26
+ return z.array(valueExprSchema).min(1);
27
+ } });
28
+ var minusSchema = z.strictObject({ get minus() {
29
+ return z.tuple([valueExprSchema, valueExprSchema]);
30
+ } });
31
+ var ratioSchema = z.strictObject({ get ratio() {
32
+ return z.strictObject({
33
+ of: valueExprSchema,
34
+ over: valueExprSchema
35
+ });
36
+ } });
37
+ var maxSchema = z.strictObject({ get max() {
38
+ return z.array(valueExprSchema).min(1);
39
+ } });
40
+ var coalesceSchema = z.strictObject({ get coalesce() {
41
+ return z.array(valueExprSchema).min(1);
42
+ } });
43
+ var valueExprSchema = z.union([
44
+ valueRefSchema,
45
+ constSchema,
46
+ sumSchema,
47
+ minusSchema,
48
+ ratioSchema,
49
+ maxSchema,
50
+ coalesceSchema
51
+ ]);
52
+ var VALUE_FORMATS = [
53
+ "count",
54
+ "usd",
55
+ "duration",
56
+ "percent",
57
+ "score"
58
+ ];
59
+ var formatSchema = z.enum(VALUE_FORMATS);
60
+ var CHART_COLOR_NAMES = [
61
+ "green",
62
+ "sky",
63
+ "violet",
64
+ "teal",
65
+ "indigo",
66
+ "warning",
67
+ "error",
68
+ "neutral"
69
+ ];
70
+ var colorSchema = z.enum(CHART_COLOR_NAMES);
71
+ /** Every ref an expression reads, in order. */
72
+ function exprRefs(expr) {
73
+ if ("const" in expr) return [];
74
+ if ("sum" in expr) return expr.sum.flatMap(exprRefs);
75
+ if ("minus" in expr) return expr.minus.flatMap(exprRefs);
76
+ if ("ratio" in expr) return [...exprRefs(expr.ratio.of), ...exprRefs(expr.ratio.over)];
77
+ if ("max" in expr) return expr.max.flatMap(exprRefs);
78
+ if ("coalesce" in expr) return expr.coalesce.flatMap(exprRefs);
79
+ return [expr];
80
+ }
81
+ var defined = (values) => values.filter((v) => v !== void 0);
82
+ /**
83
+ * Evaluates an expression, reading each ref through `read`. A missing operand counts as 0 in `sum` and
84
+ * `minus` while another has a value; the result is missing when every operand is.
85
+ */
86
+ function evaluate(expr, read) {
87
+ const run = (e) => evaluate(e, read);
88
+ if ("const" in expr) return expr.const;
89
+ if ("sum" in expr) {
90
+ const parts = expr.sum.map(run);
91
+ return defined(parts).length ? parts.reduce((total, p) => total + (p ?? 0), 0) : void 0;
92
+ }
93
+ if ("minus" in expr) {
94
+ const [a, b] = expr.minus.map(run);
95
+ return a === void 0 && b === void 0 ? void 0 : (a ?? 0) - (b ?? 0);
96
+ }
97
+ if ("ratio" in expr) {
98
+ const over = run(expr.ratio.over);
99
+ if (!over) return void 0;
100
+ return (run(expr.ratio.of) ?? 0) / over;
101
+ }
102
+ if ("max" in expr) {
103
+ const parts = defined(expr.max.map(run));
104
+ return parts.length ? Math.max(...parts) : void 0;
105
+ }
106
+ if ("coalesce" in expr) {
107
+ for (const e of expr.coalesce) {
108
+ const v = run(e);
109
+ if (v !== void 0) return v;
110
+ }
111
+ return;
112
+ }
113
+ return read(expr);
114
+ }
115
+ /** Whether the series with group key `name` is one a ref reads. */
116
+ function matchesGroups(ref, name) {
117
+ if (ref.groups && !ref.groups.includes(name)) return false;
118
+ if (ref.notGroups?.includes(name)) return false;
119
+ return true;
120
+ }
121
+ /** Each query's answer under its id, for reading refs. Queries without an id can't be referenced. */
122
+ function answersById(queries, answers) {
123
+ const byId = /* @__PURE__ */ new Map();
124
+ queries.forEach((q, i) => {
125
+ if (q.id !== void 0) byId.set(q.id, answers[i]);
126
+ });
127
+ return byId;
128
+ }
129
+ /** Where a query id sits in the view's queries, or `undefined` if no query has it. */
130
+ var queryIndex = (queries, id) => {
131
+ if (id === void 0) return void 0;
132
+ const index = queries.findIndex((q) => q.id === id);
133
+ return index < 0 ? void 0 : index;
134
+ };
135
+ /** An issue for each referenced query id the view doesn't have. */
136
+ function unknownQueryIssues(ids, queries, where = "options") {
137
+ const known = new Set(queries.flatMap((q) => q.id === void 0 ? [] : [q.id]));
138
+ return [...new Set(ids)].filter((id) => !known.has(id)).map((id) => `${where}: reads query '${id}', which the view doesn't have`);
139
+ }
140
+ export { CHART_COLOR_NAMES, VALUE_FORMATS, answersById, colorSchema, evaluate, exprRefs, formatSchema, matchesGroups, queryIndex, queryRefSchema, unknownQueryIssues, valueExprSchema, valueRefSchema };
141
+
142
+ //# sourceMappingURL=values.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"values.es.js","names":[],"sources":["../../../../src/domains/dashboards/lib/values.ts"],"sourcesContent":["import { z } from 'zod/v4';\n\n/**\n * The options vocabulary widget kinds share. Values reference a view's query results and\n * combine them with a few fixed operations; there are no free-form expressions.\n */\n\n/** Names one of the view's queries by its `id`, never its position, so reordering queries keeps refs. */\nexport const queryRefSchema = z.string().min(1);\n\n/** A number read from one query's result. */\nexport const valueRefSchema = z\n .object({\n /** The `id` of one of the view's queries. */\n query: queryRefSchema,\n /** Metrics and scores read `value` (or the price, `estimatedCost`); trace and span aggregates read a measure. */\n field: z.enum(['value', 'estimatedCost']).optional(),\n /** A trace or span aggregate measure, e.g. `countDistinct.threadId`. */\n measure: z.string().min(1).optional(),\n /** A percentile of a percentiles request, e.g. `0.95`. */\n percentile: z.number().min(0).max(1).optional(),\n /** Only the series whose group key is exactly one of these... */\n groups: z.array(z.string()).min(1).optional(),\n /** ...or is none of these. */\n notGroups: z.array(z.string()).min(1).optional(),\n })\n .strict();\n\nexport type ValueRef = z.infer<typeof valueRefSchema>;\n\nexport type ValueExpr =\n | ValueRef\n | { const: number }\n | { sum: ValueExpr[] }\n /** The first minus the second. */\n | { minus: [ValueExpr, ValueExpr] }\n /** `of / over`; no value when `over` is 0 or has none. */\n | { ratio: { of: ValueExpr; over: ValueExpr } }\n /** The largest part that has a value. */\n | { max: ValueExpr[] }\n /** The first part that has a value. */\n | { coalesce: ValueExpr[] };\n\n// Recursive through getters, as zod 4 recommends; `z.lazy` around a union recurses forever.\nconst constSchema = z.strictObject({ const: z.number() });\nconst sumSchema = z.strictObject({\n get sum() {\n return z.array(valueExprSchema).min(1);\n },\n});\nconst minusSchema = z.strictObject({\n get minus() {\n return z.tuple([valueExprSchema, valueExprSchema]);\n },\n});\nconst ratioSchema = z.strictObject({\n get ratio() {\n return z.strictObject({ of: valueExprSchema, over: valueExprSchema });\n },\n});\nconst maxSchema = z.strictObject({\n get max() {\n return z.array(valueExprSchema).min(1);\n },\n});\nconst coalesceSchema = z.strictObject({\n get coalesce() {\n return z.array(valueExprSchema).min(1);\n },\n});\n\nexport const valueExprSchema: z.ZodType<ValueExpr> = z.union([\n valueRefSchema,\n constSchema,\n sumSchema,\n minusSchema,\n ratioSchema,\n maxSchema,\n coalesceSchema,\n]);\n\nexport const VALUE_FORMATS = ['count', 'usd', 'duration', 'percent', 'score'] as const;\nexport const formatSchema = z.enum(VALUE_FORMATS);\nexport type ValueFormat = z.infer<typeof formatSchema>;\n\nexport const CHART_COLOR_NAMES = ['green', 'sky', 'violet', 'teal', 'indigo', 'warning', 'error', 'neutral'] as const;\nexport const colorSchema = z.enum(CHART_COLOR_NAMES);\n\n/** Every ref an expression reads, in order. */\nexport function exprRefs(expr: ValueExpr): ValueRef[] {\n if ('const' in expr) return [];\n if ('sum' in expr) return expr.sum.flatMap(exprRefs);\n if ('minus' in expr) return expr.minus.flatMap(exprRefs);\n if ('ratio' in expr) return [...exprRefs(expr.ratio.of), ...exprRefs(expr.ratio.over)];\n if ('max' in expr) return expr.max.flatMap(exprRefs);\n if ('coalesce' in expr) return expr.coalesce.flatMap(exprRefs);\n return [expr];\n}\n\nconst defined = (values: (number | undefined)[]) => values.filter((v): v is number => v !== undefined);\n\n/**\n * Evaluates an expression, reading each ref through `read`. A missing operand counts as 0 in `sum` and\n * `minus` while another has a value; the result is missing when every operand is.\n */\nexport function evaluate(expr: ValueExpr, read: (ref: ValueRef) => number | undefined): number | undefined {\n const run = (e: ValueExpr) => evaluate(e, read);\n if ('const' in expr) return expr.const;\n if ('sum' in expr) {\n const parts = expr.sum.map(run);\n return defined(parts).length ? parts.reduce<number>((total, p) => total + (p ?? 0), 0) : undefined;\n }\n if ('minus' in expr) {\n const [a, b] = expr.minus.map(run);\n return a === undefined && b === undefined ? undefined : (a ?? 0) - (b ?? 0);\n }\n if ('ratio' in expr) {\n const over = run(expr.ratio.over);\n if (!over) return undefined;\n return (run(expr.ratio.of) ?? 0) / over;\n }\n if ('max' in expr) {\n const parts = defined(expr.max.map(run));\n return parts.length ? Math.max(...parts) : undefined;\n }\n if ('coalesce' in expr) {\n for (const e of expr.coalesce) {\n const v = run(e);\n if (v !== undefined) return v;\n }\n return undefined;\n }\n return read(expr);\n}\n\n/** Whether the series with group key `name` is one a ref reads. */\nexport function matchesGroups(ref: ValueRef, name: string) {\n if (ref.groups && !ref.groups.includes(name)) return false;\n if (ref.notGroups?.includes(name)) return false;\n return true;\n}\n\n/** Each query's answer under its id, for reading refs. Queries without an id can't be referenced. */\nexport function answersById<T>(queries: readonly { id?: string }[], answers: readonly T[]): Map<string, T | undefined> {\n const byId = new Map<string, T | undefined>();\n queries.forEach((q, i) => {\n if (q.id !== undefined) byId.set(q.id, answers[i]);\n });\n return byId;\n}\n\n/** Where a query id sits in the view's queries, or `undefined` if no query has it. */\nexport const queryIndex = (queries: readonly { id?: string }[], id: string | undefined) => {\n if (id === undefined) return undefined;\n const index = queries.findIndex(q => q.id === id);\n return index < 0 ? undefined : index;\n};\n\n/** An issue for each referenced query id the view doesn't have. */\nexport function unknownQueryIssues(ids: readonly string[], queries: readonly { id?: string }[], where = 'options') {\n const known = new Set(queries.flatMap(q => (q.id === undefined ? [] : [q.id])));\n return [...new Set(ids)]\n .filter(id => !known.has(id))\n .map(id => `${where}: reads query '${id}', which the view doesn't have`);\n}\n"],"mappings":"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"}