@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.
- package/dist/AgentIndicator-Bs2S8AWJ.js +847 -0
- package/dist/AgentIndicator-Bs2S8AWJ.js.map +1 -0
- package/dist/AgentIndicator-to30W73z.cjs +864 -0
- package/dist/AgentIndicator-to30W73z.cjs.map +1 -0
- package/dist/AgentIndicator.css +28 -0
- package/dist/{Arrival-NpBOyV52.js → Arrival-CJFEOXr5.js} +33 -3
- package/dist/Arrival-CJFEOXr5.js.map +1 -0
- package/dist/{Arrival-Dm6Vgn78.cjs → Arrival-Cs1oWjo4.cjs} +43 -1
- package/dist/Arrival-Cs1oWjo4.cjs.map +1 -0
- package/dist/{Comment-CUQvfikb.cjs → Comment-KYUQzeSu.cjs} +2 -2
- package/dist/{Comment-CUQvfikb.cjs.map → Comment-KYUQzeSu.cjs.map} +1 -1
- package/dist/{Comment-CPA3IyPS.js → Comment-VFJq2wRp.js} +2 -2
- package/dist/{Comment-CPA3IyPS.js.map → Comment-VFJq2wRp.js.map} +1 -1
- package/dist/{DataList-Ve3omCXT.js → DataList-2tIlQsLc.js} +95 -3
- package/dist/DataList-2tIlQsLc.js.map +1 -0
- package/dist/{DataList-Cmk08jUV.cjs → DataList-Czwmwyvp.cjs} +93 -1
- package/dist/DataList-Czwmwyvp.cjs.map +1 -0
- package/dist/{DateTimeRangePicker-ByMbLdom.js → DateTimeRangePicker-C_Lie_2P.js} +23 -2
- package/dist/DateTimeRangePicker-C_Lie_2P.js.map +1 -0
- package/dist/{DateTimeRangePicker-DGbH5WOn.cjs → DateTimeRangePicker-HmPOHwAQ.cjs} +23 -2
- package/dist/DateTimeRangePicker-HmPOHwAQ.cjs.map +1 -0
- package/dist/{FilterBar-Dk3QEuT6.js → FilterBar--4oguuVe.js} +4 -4
- package/dist/FilterBar--4oguuVe.js.map +1 -0
- package/dist/{FilterBar-gEvoWDXA.cjs → FilterBar-BUd4f7oi.cjs} +7 -7
- package/dist/FilterBar-BUd4f7oi.cjs.map +1 -0
- package/dist/GrainFill.css +2 -0
- package/dist/{MarkdownRenderer-BgqKfmRm.cjs → MarkdownRenderer-CS6u5drO.cjs} +2 -2
- package/dist/{MarkdownRenderer-BgqKfmRm.cjs.map → MarkdownRenderer-CS6u5drO.cjs.map} +1 -1
- package/dist/{MarkdownRenderer-DKCDXaLy.js → MarkdownRenderer-DME2xKTk.js} +2 -2
- package/dist/{MarkdownRenderer-DKCDXaLy.js.map → MarkdownRenderer-DME2xKTk.js.map} +1 -1
- package/dist/{Message-BF9cpYaw.cjs → Message-DsCNQpou.cjs} +2 -2
- package/dist/{Message-BF9cpYaw.cjs.map → Message-DsCNQpou.cjs.map} +1 -1
- package/dist/{Message-Bkf6Ro9H.js → Message-nVI6tMS3.js} +2 -2
- package/dist/{Message-Bkf6Ro9H.js.map → Message-nVI6tMS3.js.map} +1 -1
- package/dist/{MetricsCard-Dly_H3oX.cjs → MetricsCard-CEB-f2sv.cjs} +91 -109
- package/dist/MetricsCard-CEB-f2sv.cjs.map +1 -0
- package/dist/{MetricsCard-C9GWgT58.js → MetricsCard-M8awJ2B_.js} +91 -109
- package/dist/MetricsCard-M8awJ2B_.js.map +1 -0
- package/dist/{MetricsKpiCard-Uw0nyMgW.cjs → MetricsKpiCard-By_-sagx.cjs} +3 -2
- package/dist/{MetricsKpiCard-Uw0nyMgW.cjs.map → MetricsKpiCard-By_-sagx.cjs.map} +1 -1
- package/dist/{MetricsKpiCard-Idxjl-dn.js → MetricsKpiCard-OHbAElTl.js} +3 -2
- package/dist/{MetricsKpiCard-Idxjl-dn.js.map → MetricsKpiCard-OHbAElTl.js.map} +1 -1
- package/dist/{MetricsLineChart-DKzuRU2q.js → MetricsLineChart-BhHoduO0.js} +21 -39
- package/dist/MetricsLineChart-BhHoduO0.js.map +1 -0
- package/dist/{MetricsLineChart-2m4LVL1N.cjs → MetricsLineChart-CjBm4IXu.cjs} +21 -39
- package/dist/MetricsLineChart-CjBm4IXu.cjs.map +1 -0
- package/dist/{MetricsStackedBarChart-DJB4aByt.js → MetricsStackedBarChart-BRuA6MTE.js} +2 -3
- package/dist/MetricsStackedBarChart-BRuA6MTE.js.map +1 -0
- package/dist/{MetricsStackedBarChart-NATtwA_W.cjs → MetricsStackedBarChart-BdMlKv6G.cjs} +2 -3
- package/dist/MetricsStackedBarChart-BdMlKv6G.cjs.map +1 -0
- package/dist/Notice.css +2 -0
- package/dist/Shimmer.css +7 -0
- package/dist/{activity-ihrl0JtH.js → activity-CM34JyW-.js} +98 -33
- package/dist/activity-CM34JyW-.js.map +1 -0
- package/dist/{activity-QyLJcBKc.cjs → activity-DAK8tj7r.cjs} +108 -31
- package/dist/activity-DAK8tj7r.cjs.map +1 -0
- package/dist/chart-plot.css +15 -0
- package/dist/combobox-8kNAJFlj.cjs +309 -0
- package/dist/combobox-8kNAJFlj.cjs.map +1 -0
- package/dist/{combobox-C-E7_q4j.cjs → combobox-parts-BZVXwbG7.cjs} +7 -300
- package/dist/combobox-parts-BZVXwbG7.cjs.map +1 -0
- package/dist/{combobox-CDS2pBqz.js → combobox-parts-W7KRQUsV.js} +10 -297
- package/dist/combobox-parts-W7KRQUsV.js.map +1 -0
- package/dist/combobox-wFudhN8F.js +302 -0
- package/dist/combobox-wFudhN8F.js.map +1 -0
- package/dist/components/AgentIndicator.cjs.js +5 -0
- package/dist/components/AgentIndicator.d.ts +1 -0
- package/dist/components/AgentIndicator.es.js +1 -0
- package/dist/components/Arrival.cjs.js +3 -1
- package/dist/components/Arrival.es.js +1 -1
- package/dist/components/Combobox.cjs.js +24 -23
- package/dist/components/Combobox.es.js +2 -1
- package/dist/components/Comment.cjs.js +1 -1
- package/dist/components/Comment.es.js +1 -1
- package/dist/components/DataList.cjs.js +2 -2
- package/dist/components/DataList.es.js +2 -2
- package/dist/components/DateTimeRangePicker.cjs.js +1 -1
- package/dist/components/DateTimeRangePicker.es.js +1 -1
- package/dist/components/DiffStat.cjs.js +1 -1
- package/dist/components/DiffStat.es.js +1 -1
- package/dist/components/FilterBar.cjs.js +2 -2
- package/dist/components/FilterBar.es.js +2 -2
- package/dist/components/LogsDataList.cjs.js +1 -1
- package/dist/components/LogsDataList.es.js +1 -1
- package/dist/components/MarkdownRenderer.cjs.js +1 -1
- package/dist/components/MarkdownRenderer.es.js +1 -1
- package/dist/components/Message.cjs.js +1 -1
- package/dist/components/Message.es.js +1 -1
- package/dist/components/MetricsCard.cjs.js +1 -1
- package/dist/components/MetricsCard.es.js +1 -1
- package/dist/components/MetricsKpiCard.cjs.js +1 -1
- package/dist/components/MetricsKpiCard.es.js +1 -1
- package/dist/components/MetricsLineChart.cjs.js +1 -1
- package/dist/components/MetricsLineChart.es.js +1 -1
- package/dist/components/MetricsStackedBarChart.cjs.js +1 -1
- package/dist/components/MetricsStackedBarChart.es.js +1 -1
- package/dist/components/PropertyFilter.cjs.js +1 -1
- package/dist/components/PropertyFilter.es.js +1 -1
- package/dist/components/SavedViews.cjs.js +27 -69
- package/dist/components/SavedViews.cjs.js.map +1 -1
- package/dist/components/SavedViews.es.js +26 -68
- package/dist/components/SavedViews.es.js.map +1 -1
- package/dist/components/ai/activity.cjs.js +3 -1
- package/dist/components/ai/activity.es.js +1 -1
- package/dist/components/ai/message-reveal.cjs.js +2 -1
- package/dist/components/ai/message-reveal.cjs.js.map +1 -1
- package/dist/components/ai/message-reveal.es.js +2 -1
- package/dist/components/ai/message-reveal.es.js.map +1 -1
- package/dist/components/ai/plan.cjs.js +1 -1
- package/dist/components/ai/plan.es.js +1 -1
- package/dist/components/ai/tool-approval.cjs.js +1 -1
- package/dist/components/ai/tool-approval.es.js +1 -1
- package/dist/components/ai/tool-call.cjs.js +2 -2
- package/dist/components/ai/tool-call.es.js +2 -2
- package/dist/domains/chat/activity/activity-stretch-line.cjs.js +6 -4
- package/dist/domains/chat/activity/activity-stretch-line.cjs.js.map +1 -1
- package/dist/domains/chat/activity/activity-stretch-line.es.js +6 -4
- package/dist/domains/chat/activity/activity-stretch-line.es.js.map +1 -1
- package/dist/domains/chat/activity/components/activity-fold.cjs.js +81 -28
- package/dist/domains/chat/activity/components/activity-fold.cjs.js.map +1 -1
- package/dist/domains/chat/activity/components/activity-fold.es.js +82 -29
- package/dist/domains/chat/activity/components/activity-fold.es.js.map +1 -1
- package/dist/domains/chat/activity/components/activity-timed-trigger.cjs.js +1 -1
- package/dist/domains/chat/activity/components/activity-timed-trigger.es.js +1 -1
- package/dist/domains/chat/activity/components/calls-panel.cjs.js +1 -1
- package/dist/domains/chat/activity/components/calls-panel.es.js +1 -1
- package/dist/domains/chat/activity/components/stretch-content.cjs.js +1 -1
- package/dist/domains/chat/activity/components/stretch-content.es.js +1 -1
- package/dist/domains/chat/activity/components/stretch-thought.cjs.js +1 -1
- package/dist/domains/chat/activity/components/stretch-thought.es.js +1 -1
- package/dist/domains/chat/activity/components/use-fading-edge.cjs.js +26 -0
- package/dist/domains/chat/activity/components/use-fading-edge.cjs.js.map +1 -0
- package/dist/domains/chat/activity/components/use-fading-edge.d.ts +1 -0
- package/dist/domains/chat/activity/components/use-fading-edge.es.js +25 -0
- package/dist/domains/chat/activity/components/use-fading-edge.es.js.map +1 -0
- package/dist/domains/chat/activity/components/use-rolling-words.cjs.js +123 -0
- package/dist/domains/chat/activity/components/use-rolling-words.cjs.js.map +1 -0
- package/dist/domains/chat/activity/components/use-rolling-words.d.ts +1 -0
- package/dist/domains/chat/activity/components/use-rolling-words.es.js +122 -0
- package/dist/domains/chat/activity/components/use-rolling-words.es.js.map +1 -0
- package/dist/domains/chat/activity/model/activity-segments.cjs.js +1 -1
- package/dist/domains/chat/activity/model/activity-segments.es.js +1 -1
- package/dist/domains/chat/activity/model/activity-words.cjs.js +16 -6
- package/dist/domains/chat/activity/model/activity-words.cjs.js.map +1 -1
- package/dist/domains/chat/activity/model/activity-words.es.js +15 -7
- package/dist/domains/chat/activity/model/activity-words.es.js.map +1 -1
- package/dist/domains/chat/activity.cjs.js +3 -0
- package/dist/domains/chat/activity.es.js +2 -1
- package/dist/domains/chat/components/badge-wrapper.cjs.js +1 -1
- package/dist/domains/chat/components/badge-wrapper.es.js +1 -1
- package/dist/domains/chat/messages/assistant-message-actions.cjs.js +1 -1
- package/dist/domains/chat/messages/assistant-message-actions.es.js +1 -1
- package/dist/domains/chat/messages/message-row.cjs.js +4 -4
- package/dist/domains/chat/messages/message-row.es.js +4 -4
- package/dist/domains/chat/messages/notification-signal-notice.cjs.js +1 -1
- package/dist/domains/chat/messages/notification-signal-notice.es.js +1 -1
- package/dist/domains/chat/messages/reasoning-content.cjs.js +1 -1
- package/dist/domains/chat/messages/reasoning-content.es.js +1 -1
- package/dist/domains/chat/messages/renderers/message-text.cjs.js +1 -1
- package/dist/domains/chat/messages/renderers/message-text.es.js +1 -1
- package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
- package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
- package/dist/domains/chat/messages/renderers/tool-part.cjs.js +18 -0
- package/dist/domains/chat/messages/renderers/tool-part.cjs.js.map +1 -1
- package/dist/domains/chat/messages/renderers/tool-part.es.js +18 -0
- package/dist/domains/chat/messages/renderers/tool-part.es.js.map +1 -1
- package/dist/domains/chat/messages/signal-badge.cjs.js +1 -1
- package/dist/domains/chat/messages/signal-badge.es.js +1 -1
- package/dist/domains/chat/messages/skill-message.cjs.js +10 -7
- package/dist/domains/chat/messages/skill-message.cjs.js.map +1 -1
- package/dist/domains/chat/messages/skill-message.es.js +10 -7
- package/dist/domains/chat/messages/skill-message.es.js.map +1 -1
- package/dist/domains/chat/messages/system-reminder-badge.cjs.js +1 -1
- package/dist/domains/chat/messages/system-reminder-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +2 -2
- package/dist/domains/chat/tools/badges/file-tree-badge.es.js +2 -2
- package/dist/domains/chat/tools/badges/mcp-task-chip.cjs.js +111 -0
- package/dist/domains/chat/tools/badges/mcp-task-chip.cjs.js.map +1 -0
- package/dist/domains/chat/tools/badges/mcp-task-chip.d.ts +1 -0
- package/dist/domains/chat/tools/badges/mcp-task-chip.es.js +109 -0
- package/dist/domains/chat/tools/badges/mcp-task-chip.es.js.map +1 -0
- package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +8 -6
- package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +9 -7
- package/dist/domains/chat/tools/badges/observation-marker-badge.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +2 -3
- package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-details.es.js +2 -3
- package/dist/domains/chat/tools/badges/observation-marker-details.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
- package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js +2 -2
- package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js +2 -2
- package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/tool-badge.cjs.js +10 -4
- package/dist/domains/chat/tools/badges/tool-badge.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/tool-badge.es.js +10 -4
- package/dist/domains/chat/tools/badges/tool-badge.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/use-mcp-task-progress.cjs.js +51 -0
- package/dist/domains/chat/tools/badges/use-mcp-task-progress.cjs.js.map +1 -0
- package/dist/domains/chat/tools/badges/use-mcp-task-progress.d.ts +1 -0
- package/dist/domains/chat/tools/badges/use-mcp-task-progress.es.js +49 -0
- package/dist/domains/chat/tools/badges/use-mcp-task-progress.es.js.map +1 -0
- package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/workflow-badge.es.js +1 -1
- package/dist/domains/chat/tools/tool-card-kind.cjs.js +1 -1
- package/dist/domains/chat/tools/tool-card-kind.es.js +1 -1
- package/dist/domains/chat/tools/tool-card.cjs.js +1 -1
- package/dist/domains/chat/tools/tool-card.es.js +1 -1
- package/dist/domains/chat/tools/tool-groups.cjs.js +1 -1
- package/dist/domains/chat/tools/tool-groups.es.js +1 -1
- package/dist/domains/dashboards/components/dashboard-grid.cjs.js +44 -0
- package/dist/domains/dashboards/components/dashboard-grid.cjs.js.map +1 -0
- package/dist/domains/dashboards/components/dashboard-grid.d.ts +1 -0
- package/dist/domains/dashboards/components/dashboard-grid.es.js +41 -0
- package/dist/domains/dashboards/components/dashboard-grid.es.js.map +1 -0
- package/dist/domains/dashboards/components/dashboard-renderer.cjs.js +72 -0
- package/dist/domains/dashboards/components/dashboard-renderer.cjs.js.map +1 -0
- package/dist/domains/dashboards/components/dashboard-renderer.d.ts +1 -0
- package/dist/domains/dashboards/components/dashboard-renderer.es.js +71 -0
- package/dist/domains/dashboards/components/dashboard-renderer.es.js.map +1 -0
- package/dist/domains/dashboards/components/view-gate.cjs.js +55 -0
- package/dist/domains/dashboards/components/view-gate.cjs.js.map +1 -0
- package/dist/domains/dashboards/components/view-gate.d.ts +1 -0
- package/dist/domains/dashboards/components/view-gate.es.js +54 -0
- package/dist/domains/dashboards/components/view-gate.es.js.map +1 -0
- package/dist/domains/dashboards/components/widget-chrome.cjs.js +16 -0
- package/dist/domains/dashboards/components/widget-chrome.cjs.js.map +1 -0
- package/dist/domains/dashboards/components/widget-chrome.d.ts +1 -0
- package/dist/domains/dashboards/components/widget-chrome.es.js +15 -0
- package/dist/domains/dashboards/components/widget-chrome.es.js.map +1 -0
- package/dist/domains/dashboards/components/widget-controls.cjs.js +21 -0
- package/dist/domains/dashboards/components/widget-controls.cjs.js.map +1 -0
- package/dist/domains/dashboards/components/widget-controls.d.ts +1 -0
- package/dist/domains/dashboards/components/widget-controls.es.js +20 -0
- package/dist/domains/dashboards/components/widget-controls.es.js.map +1 -0
- package/dist/domains/dashboards/components/widget-error.cjs.js +18 -0
- package/dist/domains/dashboards/components/widget-error.cjs.js.map +1 -0
- package/dist/domains/dashboards/components/widget-error.d.ts +1 -0
- package/dist/domains/dashboards/components/widget-error.es.js +17 -0
- package/dist/domains/dashboards/components/widget-error.es.js.map +1 -0
- package/dist/domains/dashboards/hooks/use-dashboard-requests.cjs.js +47 -0
- package/dist/domains/dashboards/hooks/use-dashboard-requests.cjs.js.map +1 -0
- package/dist/domains/dashboards/hooks/use-dashboard-requests.d.ts +1 -0
- package/dist/domains/dashboards/hooks/use-dashboard-requests.es.js +46 -0
- package/dist/domains/dashboards/hooks/use-dashboard-requests.es.js.map +1 -0
- package/dist/domains/dashboards/hooks/use-scorers.cjs.js +41 -0
- package/dist/domains/dashboards/hooks/use-scorers.cjs.js.map +1 -0
- package/dist/domains/dashboards/hooks/use-scorers.d.ts +1 -0
- package/dist/domains/dashboards/hooks/use-scorers.es.js +40 -0
- package/dist/domains/dashboards/hooks/use-scorers.es.js.map +1 -0
- package/dist/domains/dashboards/hooks/use-widget-views.cjs.js +35 -0
- package/dist/domains/dashboards/hooks/use-widget-views.cjs.js.map +1 -0
- package/dist/domains/dashboards/hooks/use-widget-views.d.ts +1 -0
- package/dist/domains/dashboards/hooks/use-widget-views.es.js +32 -0
- package/dist/domains/dashboards/hooks/use-widget-views.es.js.map +1 -0
- package/dist/domains/dashboards/kinds/kpis/kpis-widget.cjs.js +63 -0
- package/dist/domains/dashboards/kinds/kpis/kpis-widget.cjs.js.map +1 -0
- package/dist/domains/dashboards/kinds/kpis/kpis-widget.d.ts +1 -0
- package/dist/domains/dashboards/kinds/kpis/kpis-widget.es.js +62 -0
- package/dist/domains/dashboards/kinds/kpis/kpis-widget.es.js.map +1 -0
- package/dist/domains/dashboards/kinds/kpis/options.cjs.js +72 -0
- package/dist/domains/dashboards/kinds/kpis/options.cjs.js.map +1 -0
- package/dist/domains/dashboards/kinds/kpis/options.d.ts +1 -0
- package/dist/domains/dashboards/kinds/kpis/options.es.js +69 -0
- package/dist/domains/dashboards/kinds/kpis/options.es.js.map +1 -0
- package/dist/domains/dashboards/kinds/kpis.cjs.js +17 -0
- package/dist/domains/dashboards/kinds/kpis.cjs.js.map +1 -0
- package/dist/domains/dashboards/kinds/kpis.d.ts +1 -0
- package/dist/domains/dashboards/kinds/kpis.es.js +14 -0
- package/dist/domains/dashboards/kinds/kpis.es.js.map +1 -0
- package/dist/domains/dashboards/kinds/scores/options.cjs.js +30 -0
- package/dist/domains/dashboards/kinds/scores/options.cjs.js.map +1 -0
- package/dist/domains/dashboards/kinds/scores/options.d.ts +1 -0
- package/dist/domains/dashboards/kinds/scores/options.es.js +28 -0
- package/dist/domains/dashboards/kinds/scores/options.es.js.map +1 -0
- package/dist/domains/dashboards/kinds/scores/scores-widget.cjs.js +91 -0
- package/dist/domains/dashboards/kinds/scores/scores-widget.cjs.js.map +1 -0
- package/dist/domains/dashboards/kinds/scores/scores-widget.d.ts +1 -0
- package/dist/domains/dashboards/kinds/scores/scores-widget.es.js +90 -0
- package/dist/domains/dashboards/kinds/scores/scores-widget.es.js.map +1 -0
- package/dist/domains/dashboards/kinds/scores.cjs.js +16 -0
- package/dist/domains/dashboards/kinds/scores.cjs.js.map +1 -0
- package/dist/domains/dashboards/kinds/scores.d.ts +1 -0
- package/dist/domains/dashboards/kinds/scores.es.js +14 -0
- package/dist/domains/dashboards/kinds/scores.es.js.map +1 -0
- package/dist/domains/dashboards/kinds/table/table-cells.cjs.js +67 -0
- package/dist/domains/dashboards/kinds/table/table-cells.cjs.js.map +1 -0
- package/dist/domains/dashboards/kinds/table/table-cells.d.ts +1 -0
- package/dist/domains/dashboards/kinds/table/table-cells.es.js +63 -0
- package/dist/domains/dashboards/kinds/table/table-cells.es.js.map +1 -0
- package/dist/domains/dashboards/kinds/table/table-columns.cjs.js +72 -0
- package/dist/domains/dashboards/kinds/table/table-columns.cjs.js.map +1 -0
- package/dist/domains/dashboards/kinds/table/table-columns.d.ts +1 -0
- package/dist/domains/dashboards/kinds/table/table-columns.es.js +71 -0
- package/dist/domains/dashboards/kinds/table/table-columns.es.js.map +1 -0
- package/dist/domains/dashboards/kinds/table/table-frame.cjs.js +16 -0
- package/dist/domains/dashboards/kinds/table/table-frame.cjs.js.map +1 -0
- package/dist/domains/dashboards/kinds/table/table-frame.d.ts +1 -0
- package/dist/domains/dashboards/kinds/table/table-frame.es.js +15 -0
- package/dist/domains/dashboards/kinds/table/table-frame.es.js.map +1 -0
- package/dist/domains/dashboards/kinds/table/table-tabs.cjs.js +55 -0
- package/dist/domains/dashboards/kinds/table/table-tabs.cjs.js.map +1 -0
- package/dist/domains/dashboards/kinds/table/table-tabs.d.ts +1 -0
- package/dist/domains/dashboards/kinds/table/table-tabs.es.js +54 -0
- package/dist/domains/dashboards/kinds/table/table-tabs.es.js.map +1 -0
- package/dist/domains/dashboards/kinds/table/table-view.cjs.js +80 -0
- package/dist/domains/dashboards/kinds/table/table-view.cjs.js.map +1 -0
- package/dist/domains/dashboards/kinds/table/table-view.d.ts +1 -0
- package/dist/domains/dashboards/kinds/table/table-view.es.js +79 -0
- package/dist/domains/dashboards/kinds/table/table-view.es.js.map +1 -0
- package/dist/domains/dashboards/kinds/table/table-widget.cjs.js +30 -0
- package/dist/domains/dashboards/kinds/table/table-widget.cjs.js.map +1 -0
- package/dist/domains/dashboards/kinds/table/table-widget.d.ts +1 -0
- package/dist/domains/dashboards/kinds/table/table-widget.es.js +29 -0
- package/dist/domains/dashboards/kinds/table/table-widget.es.js.map +1 -0
- package/dist/domains/dashboards/kinds/table.cjs.js +17 -0
- package/dist/domains/dashboards/kinds/table.cjs.js.map +1 -0
- package/dist/domains/dashboards/kinds/table.d.ts +1 -0
- package/dist/domains/dashboards/kinds/table.es.js +14 -0
- package/dist/domains/dashboards/kinds/table.es.js.map +1 -0
- package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.cjs.js +115 -0
- package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.cjs.js.map +1 -0
- package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.d.ts +1 -0
- package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.es.js +114 -0
- package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.es.js.map +1 -0
- package/dist/domains/dashboards/kinds/timeseries.cjs.js +15 -0
- package/dist/domains/dashboards/kinds/timeseries.cjs.js.map +1 -0
- package/dist/domains/dashboards/kinds/timeseries.d.ts +1 -0
- package/dist/domains/dashboards/kinds/timeseries.es.js +14 -0
- package/dist/domains/dashboards/kinds/timeseries.es.js.map +1 -0
- package/dist/domains/dashboards/kinds.cjs.js +20 -0
- package/dist/domains/dashboards/kinds.cjs.js.map +1 -0
- package/dist/domains/dashboards/kinds.d.ts +1 -0
- package/dist/domains/dashboards/kinds.es.js +15 -0
- package/dist/domains/dashboards/kinds.es.js.map +1 -0
- package/dist/domains/dashboards/lib/answers.cjs.js +42 -0
- package/dist/domains/dashboards/lib/answers.cjs.js.map +1 -0
- package/dist/domains/dashboards/lib/answers.d.ts +1 -0
- package/dist/domains/dashboards/lib/answers.es.js +37 -0
- package/dist/domains/dashboards/lib/answers.es.js.map +1 -0
- package/dist/domains/dashboards/lib/chrome.cjs.js +41 -0
- package/dist/domains/dashboards/lib/chrome.cjs.js.map +1 -0
- package/dist/domains/dashboards/lib/chrome.d.ts +1 -0
- package/dist/domains/dashboards/lib/chrome.es.js +37 -0
- package/dist/domains/dashboards/lib/chrome.es.js.map +1 -0
- package/dist/domains/dashboards/lib/definition.cjs.js +59 -0
- package/dist/domains/dashboards/lib/definition.cjs.js.map +1 -0
- package/dist/domains/dashboards/lib/definition.d.ts +1 -0
- package/dist/domains/dashboards/lib/definition.es.js +55 -0
- package/dist/domains/dashboards/lib/definition.es.js.map +1 -0
- package/dist/domains/dashboards/lib/filters.cjs.js +44 -0
- package/dist/domains/dashboards/lib/filters.cjs.js.map +1 -0
- package/dist/domains/dashboards/lib/filters.d.ts +1 -0
- package/dist/domains/dashboards/lib/filters.es.js +43 -0
- package/dist/domains/dashboards/lib/filters.es.js.map +1 -0
- package/dist/domains/dashboards/lib/format.cjs.js +32 -0
- package/dist/domains/dashboards/lib/format.cjs.js.map +1 -0
- package/dist/domains/dashboards/lib/format.d.ts +1 -0
- package/dist/domains/dashboards/lib/format.es.js +30 -0
- package/dist/domains/dashboards/lib/format.es.js.map +1 -0
- package/dist/domains/dashboards/lib/prepare-widget.cjs.js +77 -0
- package/dist/domains/dashboards/lib/prepare-widget.cjs.js.map +1 -0
- package/dist/domains/dashboards/lib/prepare-widget.d.ts +1 -0
- package/dist/domains/dashboards/lib/prepare-widget.es.js +75 -0
- package/dist/domains/dashboards/lib/prepare-widget.es.js.map +1 -0
- package/dist/domains/dashboards/lib/requests.cjs.js +279 -0
- package/dist/domains/dashboards/lib/requests.cjs.js.map +1 -0
- package/dist/domains/dashboards/lib/requests.d.ts +1 -0
- package/dist/domains/dashboards/lib/requests.es.js +273 -0
- package/dist/domains/dashboards/lib/requests.es.js.map +1 -0
- package/dist/domains/dashboards/lib/scores.cjs.js +58 -0
- package/dist/domains/dashboards/lib/scores.cjs.js.map +1 -0
- package/dist/domains/dashboards/lib/scores.d.ts +1 -0
- package/dist/domains/dashboards/lib/scores.es.js +53 -0
- package/dist/domains/dashboards/lib/scores.es.js.map +1 -0
- package/dist/domains/dashboards/lib/table.cjs.js +408 -0
- package/dist/domains/dashboards/lib/table.cjs.js.map +1 -0
- package/dist/domains/dashboards/lib/table.d.ts +1 -0
- package/dist/domains/dashboards/lib/table.es.js +388 -0
- package/dist/domains/dashboards/lib/table.es.js.map +1 -0
- package/dist/domains/dashboards/lib/timeseries.cjs.js +192 -0
- package/dist/domains/dashboards/lib/timeseries.cjs.js.map +1 -0
- package/dist/domains/dashboards/lib/timeseries.d.ts +1 -0
- package/dist/domains/dashboards/lib/timeseries.es.js +188 -0
- package/dist/domains/dashboards/lib/timeseries.es.js.map +1 -0
- package/dist/domains/dashboards/lib/values.cjs.js +155 -0
- package/dist/domains/dashboards/lib/values.cjs.js.map +1 -0
- package/dist/domains/dashboards/lib/values.d.ts +1 -0
- package/dist/domains/dashboards/lib/values.es.js +142 -0
- package/dist/domains/dashboards/lib/values.es.js.map +1 -0
- package/dist/domains/dashboards/metrics-dashboard.cjs.js +737 -0
- package/dist/domains/dashboards/metrics-dashboard.cjs.js.map +1 -0
- package/dist/domains/dashboards/metrics-dashboard.d.ts +1 -0
- package/dist/domains/dashboards/metrics-dashboard.es.js +736 -0
- package/dist/domains/dashboards/metrics-dashboard.es.js.map +1 -0
- package/dist/domains/dashboards/widget-kind.cjs.js +7 -0
- package/dist/domains/dashboards/widget-kind.cjs.js.map +1 -0
- package/dist/domains/dashboards/widget-kind.d.ts +1 -0
- package/dist/domains/dashboards/widget-kind.es.js +6 -0
- package/dist/domains/dashboards/widget-kind.es.js.map +1 -0
- package/dist/domains/dashboards.cjs.js +39 -0
- package/dist/domains/dashboards.d.ts +1 -0
- package/dist/domains/dashboards.es.js +18 -0
- package/dist/domains/logs/components/logs-list-view.cjs.js +1 -1
- package/dist/domains/logs/components/logs-list-view.es.js +1 -1
- package/dist/domains/logs/components/logs-saved-views.cjs.js +14 -0
- package/dist/domains/logs/components/logs-saved-views.cjs.js.map +1 -0
- package/dist/domains/logs/components/logs-saved-views.d.ts +1 -0
- package/dist/domains/logs/components/logs-saved-views.es.js +13 -0
- package/dist/domains/logs/components/logs-saved-views.es.js.map +1 -0
- package/dist/domains/logs/components.cjs.js +2 -0
- package/dist/domains/logs/components.es.js +2 -1
- package/dist/domains/logs/hooks/use-logs-url-state.cjs.js +1 -1
- package/dist/domains/logs/hooks/use-logs-url-state.cjs.js.map +1 -1
- package/dist/domains/logs/hooks/use-logs-url-state.es.js +2 -2
- package/dist/domains/logs/hooks/use-logs-url-state.es.js.map +1 -1
- package/dist/domains/logs/log-filters.cjs.js +11 -0
- package/dist/domains/logs/log-filters.cjs.js.map +1 -1
- package/dist/domains/logs/log-filters.es.js +9 -1
- package/dist/domains/logs/log-filters.es.js.map +1 -1
- package/dist/domains/logs.cjs.js +6 -1
- package/dist/domains/logs.es.js +3 -2
- package/dist/domains/metrics/components/agent-runs-card.cjs.js +38 -15
- package/dist/domains/metrics/components/agent-runs-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/agent-runs-card.es.js +38 -15
- package/dist/domains/metrics/components/agent-runs-card.es.js.map +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-change-cell.cjs.js +4 -11
- package/dist/domains/metrics/components/breakdown/breakdown-change-cell.cjs.js.map +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-change-cell.es.js +4 -11
- package/dist/domains/metrics/components/breakdown/breakdown-change-cell.es.js.map +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-cost-cell.cjs.js +2 -4
- package/dist/domains/metrics/components/breakdown/breakdown-cost-cell.cjs.js.map +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-cost-cell.es.js +2 -4
- package/dist/domains/metrics/components/breakdown/breakdown-cost-cell.es.js.map +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-entity-tab.cjs.js +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-entity-tab.es.js +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-frame.cjs.js +16 -27
- package/dist/domains/metrics/components/breakdown/breakdown-frame.cjs.js.map +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-frame.es.js +16 -27
- package/dist/domains/metrics/components/breakdown/breakdown-frame.es.js.map +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-models-tab.cjs.js +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-models-tab.es.js +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-name.cjs.js +22 -0
- package/dist/domains/metrics/components/breakdown/breakdown-name.cjs.js.map +1 -0
- package/dist/domains/metrics/components/breakdown/breakdown-name.d.ts +1 -0
- package/dist/domains/metrics/components/breakdown/breakdown-name.es.js +21 -0
- package/dist/domains/metrics/components/breakdown/breakdown-name.es.js.map +1 -0
- package/dist/domains/metrics/components/breakdown/breakdown-not-priced.cjs.js +13 -0
- package/dist/domains/metrics/components/breakdown/breakdown-not-priced.cjs.js.map +1 -0
- package/dist/domains/metrics/components/breakdown/breakdown-not-priced.d.ts +1 -0
- package/dist/domains/metrics/components/breakdown/breakdown-not-priced.es.js +12 -0
- package/dist/domains/metrics/components/breakdown/breakdown-not-priced.es.js.map +1 -0
- package/dist/domains/metrics/components/breakdown/breakdown-projects-first.cjs.js +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-projects-first.es.js +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-row-mark.cjs.js +26 -13
- package/dist/domains/metrics/components/breakdown/breakdown-row-mark.cjs.js.map +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-row-mark.es.js +25 -14
- package/dist/domains/metrics/components/breakdown/breakdown-row-mark.es.js.map +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-row-name.cjs.js +10 -13
- package/dist/domains/metrics/components/breakdown/breakdown-row-name.cjs.js.map +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-row-name.es.js +11 -14
- package/dist/domains/metrics/components/breakdown/breakdown-row-name.es.js.map +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-tab-body.cjs.js +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-tab-body.es.js +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-table.cjs.js +5 -5
- package/dist/domains/metrics/components/breakdown/breakdown-table.es.js +5 -5
- package/dist/domains/metrics/components/breakdown/breakdown-trace-tab.cjs.js +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-trace-tab.es.js +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-trend-text.cjs.js +25 -0
- package/dist/domains/metrics/components/breakdown/breakdown-trend-text.cjs.js.map +1 -0
- package/dist/domains/metrics/components/breakdown/breakdown-trend-text.d.ts +1 -0
- package/dist/domains/metrics/components/breakdown/breakdown-trend-text.es.js +24 -0
- package/dist/domains/metrics/components/breakdown/breakdown-trend-text.es.js.map +1 -0
- package/dist/domains/metrics/components/breakdown-card.cjs.js +3 -3
- package/dist/domains/metrics/components/breakdown-card.es.js +3 -3
- package/dist/domains/metrics/components/card-action-buttons.cjs.js +43 -3
- package/dist/domains/metrics/components/card-action-buttons.cjs.js.map +1 -1
- package/dist/domains/metrics/components/card-action-buttons.es.js +42 -5
- package/dist/domains/metrics/components/card-action-buttons.es.js.map +1 -1
- package/dist/domains/metrics/components/chart-area.cjs.js +1 -1
- package/dist/domains/metrics/components/chart-area.es.js +1 -1
- package/dist/domains/metrics/components/chart-card-error.cjs.js +1 -1
- package/dist/domains/metrics/components/chart-card-error.es.js +1 -1
- package/dist/domains/metrics/components/chart-card.cjs.js +39 -38
- package/dist/domains/metrics/components/chart-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/chart-card.es.js +39 -38
- package/dist/domains/metrics/components/chart-card.es.js.map +1 -1
- package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
- package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
- package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.cjs.js +15 -16
- package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.cjs.js.map +1 -1
- package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.es.js +16 -16
- package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.es.js.map +1 -1
- package/dist/domains/metrics/components/distinct-ids-card.cjs.js +0 -1
- package/dist/domains/metrics/components/distinct-ids-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/distinct-ids-card.es.js +1 -2
- package/dist/domains/metrics/components/distinct-ids-card.es.js.map +1 -1
- package/dist/domains/metrics/components/failure-rate-card.cjs.js +11 -14
- package/dist/domains/metrics/components/failure-rate-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/failure-rate-card.es.js +11 -14
- package/dist/domains/metrics/components/failure-rate-card.es.js.map +1 -1
- package/dist/domains/metrics/components/kpi-card.cjs.js +8 -5
- package/dist/domains/metrics/components/kpi-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/kpi-card.es.js +8 -5
- package/dist/domains/metrics/components/kpi-card.es.js.map +1 -1
- package/dist/domains/metrics/components/latency-card.cjs.js +33 -30
- package/dist/domains/metrics/components/latency-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/latency-card.es.js +34 -31
- package/dist/domains/metrics/components/latency-card.es.js.map +1 -1
- package/dist/domains/metrics/components/metrics-grid/metrics-grid.cjs.js +5 -2
- package/dist/domains/metrics/components/metrics-grid/metrics-grid.cjs.js.map +1 -1
- package/dist/domains/metrics/components/metrics-grid/metrics-grid.es.js +5 -2
- package/dist/domains/metrics/components/metrics-grid/metrics-grid.es.js.map +1 -1
- package/dist/domains/metrics/components/scores-card.cjs.js +7 -17
- package/dist/domains/metrics/components/scores-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/scores-card.es.js +7 -17
- package/dist/domains/metrics/components/scores-card.es.js.map +1 -1
- package/dist/domains/metrics/components/token-usage-card.cjs.js +29 -26
- package/dist/domains/metrics/components/token-usage-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/token-usage-card.es.js +30 -27
- package/dist/domains/metrics/components/token-usage-card.es.js.map +1 -1
- package/dist/domains/metrics/components/trace-aggregate-card.cjs.js +3 -2
- package/dist/domains/metrics/components/trace-aggregate-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/trace-aggregate-card.es.js +3 -2
- package/dist/domains/metrics/components/trace-aggregate-card.es.js.map +1 -1
- package/dist/domains/metrics/components/trace-volume-card.cjs.js +31 -35
- package/dist/domains/metrics/components/trace-volume-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/trace-volume-card.es.js +31 -35
- package/dist/domains/metrics/components/trace-volume-card.es.js.map +1 -1
- package/dist/domains/metrics/components/usage-card.cjs.js +29 -28
- package/dist/domains/metrics/components/usage-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/usage-card.es.js +30 -29
- package/dist/domains/metrics/components/usage-card.es.js.map +1 -1
- package/dist/domains/metrics/components.cjs.js +6 -5
- package/dist/domains/metrics/components.es.js +4 -5
- package/dist/domains/metrics/drilldown.cjs.js +1 -1
- package/dist/domains/metrics/drilldown.es.js +1 -1
- package/dist/domains/metrics/hooks/use-metrics-activity.cjs.js +1 -1
- package/dist/domains/metrics/hooks/use-metrics-activity.es.js +1 -1
- package/dist/domains/metrics/hooks/use-metrics-latency.cjs.js +1 -1
- package/dist/domains/metrics/hooks/use-metrics-latency.es.js +1 -1
- package/dist/domains/metrics/hooks/use-metrics-scores.cjs.js +1 -1
- package/dist/domains/metrics/hooks/use-metrics-scores.es.js +1 -1
- package/dist/domains/metrics/hooks/use-metrics-span-aggregate.cjs.js +1 -1
- package/dist/domains/metrics/hooks/use-metrics-span-aggregate.es.js +1 -1
- package/dist/domains/metrics/hooks.cjs.js +1 -1
- package/dist/domains/metrics/hooks.es.js +1 -1
- package/dist/domains/metrics/lib/breakdown-table.cjs.js +2 -2
- package/dist/domains/metrics/lib/breakdown-table.es.js +2 -2
- package/dist/domains/metrics/lib.cjs.js +2 -2
- package/dist/domains/metrics/lib.es.js +2 -2
- package/dist/domains/metrics/metrics-filters.cjs.js +1 -1
- package/dist/domains/metrics/metrics-filters.es.js +1 -1
- package/dist/domains/metrics.cjs.js +14 -13
- package/dist/domains/metrics.es.js +12 -13
- package/dist/domains/observability/components/observability-header-slot.cjs.js +13 -0
- package/dist/domains/observability/components/observability-header-slot.cjs.js.map +1 -0
- package/dist/domains/observability/components/observability-header-slot.d.ts +1 -0
- package/dist/domains/observability/components/observability-header-slot.es.js +11 -0
- package/dist/domains/observability/components/observability-header-slot.es.js.map +1 -0
- package/dist/domains/observability/components/observability-histogram.cjs.js +6 -2
- package/dist/domains/observability/components/observability-histogram.cjs.js.map +1 -1
- package/dist/domains/observability/components/observability-histogram.es.js +6 -2
- package/dist/domains/observability/components/observability-histogram.es.js.map +1 -1
- package/dist/domains/observability/components/observability-page-layout.cjs.js +19 -5
- package/dist/domains/observability/components/observability-page-layout.cjs.js.map +1 -1
- package/dist/domains/observability/components/observability-page-layout.es.js +20 -6
- package/dist/domains/observability/components/observability-page-layout.es.js.map +1 -1
- package/dist/domains/observability/hooks/use-observability-list-filters.cjs.js +75 -18
- package/dist/domains/observability/hooks/use-observability-list-filters.cjs.js.map +1 -1
- package/dist/domains/observability/hooks/use-observability-list-filters.es.js +76 -19
- package/dist/domains/observability/hooks/use-observability-list-filters.es.js.map +1 -1
- package/dist/domains/observability/lib/zoom-memory.cjs.js +24 -0
- package/dist/domains/observability/lib/zoom-memory.cjs.js.map +1 -0
- package/dist/domains/observability/lib/zoom-memory.d.ts +1 -0
- package/dist/domains/observability/lib/zoom-memory.es.js +22 -0
- package/dist/domains/observability/lib/zoom-memory.es.js.map +1 -0
- package/dist/domains/observability/observability-list-url-state.cjs.js +122 -0
- package/dist/domains/observability/observability-list-url-state.cjs.js.map +1 -0
- package/dist/domains/observability/observability-list-url-state.d.ts +1 -0
- package/dist/domains/observability/observability-list-url-state.es.js +111 -0
- package/dist/domains/observability/observability-list-url-state.es.js.map +1 -0
- package/dist/domains/observability/saved-view-state.cjs.js +292 -0
- package/dist/domains/observability/saved-view-state.cjs.js.map +1 -0
- package/dist/domains/observability/saved-view-state.d.ts +1 -0
- package/dist/domains/observability/saved-view-state.es.js +286 -0
- package/dist/domains/observability/saved-view-state.es.js.map +1 -0
- package/dist/domains/observability/saved-views/observability-saved-views.cjs.js +3 -0
- package/dist/domains/observability/saved-views/observability-saved-views.d.ts +1 -0
- package/dist/domains/observability/saved-views/observability-saved-views.es.js +1 -0
- package/dist/domains/observability/saved-views/saved-views-provider.cjs.js +18 -0
- package/dist/domains/observability/saved-views/saved-views-provider.cjs.js.map +1 -0
- package/dist/domains/observability/saved-views/saved-views-provider.d.ts +1 -0
- package/dist/domains/observability/saved-views/saved-views-provider.es.js +17 -0
- package/dist/domains/observability/saved-views/saved-views-provider.es.js.map +1 -0
- package/dist/domains/observability/saved-views/saved-views-source.cjs.js +23 -0
- package/dist/domains/observability/saved-views/saved-views-source.cjs.js.map +1 -0
- package/dist/domains/observability/saved-views/saved-views-source.d.ts +1 -0
- package/dist/domains/observability/saved-views/saved-views-source.es.js +19 -0
- package/dist/domains/observability/saved-views/saved-views-source.es.js.map +1 -0
- package/dist/domains/observability/saved-views/use-hosted-saved-views.cjs.js +235 -0
- package/dist/domains/observability/saved-views/use-hosted-saved-views.cjs.js.map +1 -0
- package/dist/domains/observability/saved-views/use-hosted-saved-views.d.ts +1 -0
- package/dist/domains/observability/saved-views/use-hosted-saved-views.es.js +232 -0
- package/dist/domains/observability/saved-views/use-hosted-saved-views.es.js.map +1 -0
- package/dist/domains/observability/saved-views.cjs.js +7 -0
- package/dist/domains/observability/saved-views.d.ts +1 -0
- package/dist/domains/observability/saved-views.es.js +4 -0
- package/dist/domains/observability.cjs.js +6 -0
- package/dist/domains/observability.es.js +4 -1
- package/dist/domains/scores/components/span-scoring.cjs.js +1 -1
- package/dist/domains/scores/components/span-scoring.es.js +1 -1
- package/dist/domains/scores/components/trace-scores-list.cjs.js +1 -1
- package/dist/domains/scores/components/trace-scores-list.es.js +1 -1
- package/dist/domains/scores/components/trace-scores-tab.cjs.js +1 -1
- package/dist/domains/scores/components/trace-scores-tab.es.js +1 -1
- package/dist/domains/skills/skill-simple-form.cjs.js +1 -1
- package/dist/domains/skills/skill-simple-form.es.js +1 -1
- package/dist/domains/spans/components/spans-explorer-body.cjs.js +64 -18
- package/dist/domains/spans/components/spans-explorer-body.cjs.js.map +1 -1
- package/dist/domains/spans/components/spans-explorer-body.es.js +64 -18
- package/dist/domains/spans/components/spans-explorer-body.es.js.map +1 -1
- package/dist/domains/spans/components/spans-filter-bar.cjs.js +6 -5
- package/dist/domains/spans/components/spans-filter-bar.cjs.js.map +1 -1
- package/dist/domains/spans/components/spans-filter-bar.es.js +6 -5
- package/dist/domains/spans/components/spans-filter-bar.es.js.map +1 -1
- package/dist/domains/spans/hooks/use-spans-filter-bar.cjs.js +15 -3
- package/dist/domains/spans/hooks/use-spans-filter-bar.cjs.js.map +1 -1
- package/dist/domains/spans/hooks/use-spans-filter-bar.es.js +15 -3
- package/dist/domains/spans/hooks/use-spans-filter-bar.es.js.map +1 -1
- package/dist/domains/spans/span-filters.cjs.js +53 -14
- package/dist/domains/spans/span-filters.cjs.js.map +1 -1
- package/dist/domains/spans/span-filters.es.js +52 -15
- package/dist/domains/spans/span-filters.es.js.map +1 -1
- package/dist/domains/spans/span-list-row.cjs.js +6 -1
- package/dist/domains/spans/span-list-row.cjs.js.map +1 -1
- package/dist/domains/spans/span-list-row.es.js +6 -1
- package/dist/domains/spans/span-list-row.es.js.map +1 -1
- package/dist/domains/threads/components/threads-explorer-body.cjs.js +45 -12
- package/dist/domains/threads/components/threads-explorer-body.cjs.js.map +1 -1
- package/dist/domains/threads/components/threads-explorer-body.es.js +46 -12
- package/dist/domains/threads/components/threads-explorer-body.es.js.map +1 -1
- package/dist/domains/threads/components/threads-filter-bar.cjs.js +3 -3
- package/dist/domains/threads/components/threads-filter-bar.es.js +3 -3
- package/dist/domains/threads/hooks/use-threads-filter-bar.cjs.js +14 -3
- package/dist/domains/threads/hooks/use-threads-filter-bar.cjs.js.map +1 -1
- package/dist/domains/threads/hooks/use-threads-filter-bar.es.js +14 -3
- package/dist/domains/threads/hooks/use-threads-filter-bar.es.js.map +1 -1
- package/dist/domains/threads/thread-filters.cjs.js +26 -13
- package/dist/domains/threads/thread-filters.cjs.js.map +1 -1
- package/dist/domains/threads/thread-filters.es.js +26 -13
- package/dist/domains/threads/thread-filters.es.js.map +1 -1
- package/dist/domains/threads/thread-list-row.cjs.js +2 -0
- package/dist/domains/threads/thread-list-row.cjs.js.map +1 -1
- package/dist/domains/threads/thread-list-row.es.js +2 -0
- package/dist/domains/threads/thread-list-row.es.js.map +1 -1
- package/dist/domains/traces/components/columns-menu/columns-menu.cjs.js +24 -19
- package/dist/domains/traces/components/columns-menu/columns-menu.cjs.js.map +1 -1
- package/dist/domains/traces/components/columns-menu/columns-menu.es.js +25 -20
- package/dist/domains/traces/components/columns-menu/columns-menu.es.js.map +1 -1
- package/dist/domains/traces/components/feedback-thread.cjs.js +1 -1
- package/dist/domains/traces/components/feedback-thread.es.js +1 -1
- package/dist/domains/traces/components/span-data-panel-view.cjs.js +12 -2
- package/dist/domains/traces/components/span-data-panel-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-data-panel-view.es.js +12 -2
- package/dist/domains/traces/components/span-data-panel-view.es.js.map +1 -1
- package/dist/domains/traces/components/span-outcome.utils.cjs.js +1 -1
- package/dist/domains/traces/components/span-outcome.utils.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +2 -2
- package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +3 -3
- package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +3 -3
- package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-processor-mutations.cjs.js +2 -2
- package/dist/domains/traces/components/span-payload/span-processor-mutations.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-tools-section.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-tools-section.es.js +1 -1
- package/dist/domains/traces/components/span-prompt-changes.cjs.js +1 -1
- package/dist/domains/traces/components/span-prompt-changes.es.js +1 -1
- package/dist/domains/traces/components/trace-columns-menu.cjs.js +2 -1
- package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-columns-menu.es.js +2 -1
- package/dist/domains/traces/components/trace-columns-menu.es.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js +9 -2
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel-view.es.js +9 -2
- package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
- package/dist/domains/traces/components/trace-span-panel.cjs.js +2 -1
- package/dist/domains/traces/components/trace-span-panel.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-span-panel.es.js +2 -1
- package/dist/domains/traces/components/trace-span-panel.es.js.map +1 -1
- package/dist/domains/traces/components/trace-span-timeline-markers.cjs.js +120 -0
- package/dist/domains/traces/components/trace-span-timeline-markers.cjs.js.map +1 -0
- package/dist/domains/traces/components/trace-span-timeline-markers.d.ts +1 -0
- package/dist/domains/traces/components/trace-span-timeline-markers.es.js +119 -0
- package/dist/domains/traces/components/trace-span-timeline-markers.es.js.map +1 -0
- package/dist/domains/traces/components/trace-span-timeline.cjs.js +8 -5
- package/dist/domains/traces/components/trace-span-timeline.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-span-timeline.es.js +8 -5
- package/dist/domains/traces/components/trace-span-timeline.es.js.map +1 -1
- package/dist/domains/traces/components/trace-time-range-chip.cjs.js +5 -5
- package/dist/domains/traces/components/trace-time-range-chip.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-time-range-chip.es.js +5 -5
- package/dist/domains/traces/components/trace-time-range-chip.es.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.cjs.js +15 -11
- package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.es.js +15 -12
- package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.es.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-context.cjs.js +4 -3
- package/dist/domains/traces/components/traces-explorer/traces-explorer-context.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-context.es.js +4 -3
- package/dist/domains/traces/components/traces-explorer/traces-explorer-context.es.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.cjs.js +5 -4
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.es.js +5 -4
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.es.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-histogram.cjs.js +13 -5
- package/dist/domains/traces/components/traces-explorer/traces-explorer-histogram.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-histogram.es.js +13 -5
- package/dist/domains/traces/components/traces-explorer/traces-explorer-histogram.es.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.cjs.js +5 -2
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.es.js +5 -2
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.es.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list.cjs.js +7 -11
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list.es.js +7 -11
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list.es.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.cjs.js +3 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.es.js +3 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.es.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-root.cjs.js +51 -5
- package/dist/domains/traces/components/traces-explorer/traces-explorer-root.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-root.es.js +51 -5
- package/dist/domains/traces/components/traces-explorer/traces-explorer-root.es.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.cjs.js +20 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.cjs.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.d.ts +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.es.js +19 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.es.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.cjs.js +10 -4
- package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.es.js +10 -4
- package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.es.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer.cjs.js +4 -1
- package/dist/domains/traces/components/traces-explorer.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer.es.js +5 -3
- package/dist/domains/traces/components/traces-explorer.es.js.map +1 -1
- package/dist/domains/traces/components/traces-list-view-adapter.cjs.js +5 -1
- package/dist/domains/traces/components/traces-list-view-adapter.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-list-view-adapter.es.js +5 -1
- package/dist/domains/traces/components/traces-list-view-adapter.es.js.map +1 -1
- package/dist/domains/traces/components/traces-list-view.cjs.js +53 -18
- package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-list-view.es.js +53 -18
- package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
- package/dist/domains/traces/components/traces-page-skeleton.cjs.js +1 -1
- package/dist/domains/traces/components/traces-page-skeleton.es.js +1 -1
- package/dist/domains/traces/trace-filters.cjs.js +5 -1
- package/dist/domains/traces/trace-filters.es.js +1 -1
- package/dist/domains/traces/trace-list-columns.cjs.js +48 -9
- package/dist/domains/traces/trace-list-columns.cjs.js.map +1 -1
- package/dist/domains/traces/trace-list-columns.es.js +48 -9
- package/dist/domains/traces/trace-list-columns.es.js.map +1 -1
- package/dist/domains/traces/trace-query-filters.cjs.js +1 -1
- package/dist/domains/traces/trace-query-filters.es.js +1 -1
- package/dist/domains/traces/utils/timeline-markers.cjs.js +34 -0
- package/dist/domains/traces/utils/timeline-markers.cjs.js.map +1 -0
- package/dist/domains/traces/utils/timeline-markers.d.ts +1 -0
- package/dist/domains/traces/utils/timeline-markers.es.js +33 -0
- package/dist/domains/traces/utils/timeline-markers.es.js.map +1 -0
- package/dist/domains/traces.cjs.js +5 -1
- package/dist/domains/traces.es.js +2 -2
- package/dist/domains/workflows/components/workflow-combobox.cjs.js +1 -1
- package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
- package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +1 -1
- package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph.es.js +1 -1
- package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +1 -1
- package/dist/domains/workspace/components/workspace-markdown-preview.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-markdown-preview.es.js +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +1 -1
- package/dist/{filter-bar-chip-B3pgpngW.js → filter-bar-chip-7O02P9Vk.js} +27 -9
- package/dist/filter-bar-chip-7O02P9Vk.js.map +1 -0
- package/dist/{filter-bar-chip-CyTAmjt6.cjs → filter-bar-chip-BUyMf8XQ.cjs} +40 -22
- package/dist/filter-bar-chip-BUyMf8XQ.cjs.map +1 -0
- package/dist/layout/tabbed-container.cjs.js +1 -1
- package/dist/layout/tabbed-container.es.js +1 -1
- package/dist/lib/form/json-schema-to-zod-runtime.cjs.js +4 -4
- package/dist/lib/form/json-schema-to-zod-runtime.cjs.js.map +1 -1
- package/dist/lib/form/json-schema-to-zod-runtime.es.js +4 -4
- package/dist/lib/form/json-schema-to-zod-runtime.es.js.map +1 -1
- package/dist/lib/form/zod-provider.cjs.js +5 -1
- package/dist/lib/form/zod-provider.cjs.js.map +1 -1
- package/dist/lib/form/zod-provider.es.js +5 -1
- package/dist/lib/form/zod-provider.es.js.map +1 -1
- package/dist/observability-saved-views-Bo5kLN20.js +297 -0
- package/dist/observability-saved-views-Bo5kLN20.js.map +1 -0
- package/dist/observability-saved-views-CwCii7hh.cjs +302 -0
- package/dist/observability-saved-views-CwCii7hh.cjs.map +1 -0
- package/dist/primitives/chart-axes.cjs.js +44 -0
- package/dist/primitives/chart-axes.cjs.js.map +1 -1
- package/dist/primitives/chart-axes.es.js +43 -1
- package/dist/primitives/chart-axes.es.js.map +1 -1
- package/dist/primitives/chart-frame.cjs.js +5 -3
- package/dist/primitives/chart-frame.cjs.js.map +1 -1
- package/dist/primitives/chart-frame.es.js +6 -4
- package/dist/primitives/chart-frame.es.js.map +1 -1
- package/dist/primitives/chart-time-tick.cjs.js +15 -11
- package/dist/primitives/chart-time-tick.cjs.js.map +1 -1
- package/dist/primitives/chart-time-tick.es.js +16 -12
- package/dist/primitives/chart-time-tick.es.js.map +1 -1
- package/dist/saved-view-schema-DRJYELfK.cjs +71 -0
- package/dist/saved-view-schema-DRJYELfK.cjs.map +1 -0
- package/dist/saved-view-schema-eJXlRRel.js +54 -0
- package/dist/saved-view-schema-eJXlRRel.js.map +1 -0
- package/dist/{span-payload-primitives-D3OO0u6u.cjs → span-payload-primitives-B10Xxmx7.cjs} +4 -4
- package/dist/{span-payload-primitives-D3OO0u6u.cjs.map → span-payload-primitives-B10Xxmx7.cjs.map} +1 -1
- package/dist/{span-payload-primitives-DTV7eUY-.js → span-payload-primitives-Dyhbqaa7.js} +4 -4
- package/dist/{span-payload-primitives-DTV7eUY-.js.map → span-payload-primitives-Dyhbqaa7.js.map} +1 -1
- package/dist/src/domains/chat/activity/activity-stretch-line.d.ts +4 -2
- package/dist/src/domains/chat/activity/components/activity-fold.d.ts +5 -4
- package/dist/src/domains/chat/activity/components/use-fading-edge.d.ts +6 -0
- package/dist/src/domains/chat/activity/components/use-rolling-words.d.ts +7 -0
- package/dist/src/domains/chat/activity/index.d.ts +2 -1
- package/dist/src/domains/chat/activity/model/activity-members.d.ts +1 -0
- package/dist/src/domains/chat/activity/model/activity-words.d.ts +3 -0
- package/dist/src/domains/chat/messages/renderers/tool-part.d.ts +4 -0
- package/dist/src/domains/chat/messages/skill-message.d.ts +3 -1
- package/dist/src/domains/chat/tools/badges/mcp-task-chip.d.ts +14 -0
- package/dist/src/domains/chat/tools/badges/tool-badge.d.ts +5 -1
- package/dist/src/domains/chat/tools/badges/use-mcp-task-progress.d.ts +27 -0
- package/dist/src/domains/chat/tools/tool-card.d.ts +5 -1
- package/dist/src/domains/dashboards/components/dashboard-grid.d.ts +18 -0
- package/dist/src/domains/dashboards/components/dashboard-renderer.d.ts +19 -0
- package/dist/src/domains/dashboards/components/view-gate.d.ts +30 -0
- package/dist/src/domains/dashboards/components/widget-chrome.d.ts +7 -0
- package/dist/src/domains/dashboards/components/widget-controls.d.ts +8 -0
- package/dist/src/domains/dashboards/components/widget-error.d.ts +6 -0
- package/dist/src/domains/dashboards/hooks/use-dashboard-requests.d.ts +10 -0
- package/dist/src/domains/dashboards/hooks/use-scorers.d.ts +66 -0
- package/dist/src/domains/dashboards/hooks/use-widget-views.d.ts +18 -0
- package/dist/src/domains/dashboards/index.d.ts +19 -0
- package/dist/src/domains/dashboards/kinds/index.d.ts +7 -0
- package/dist/src/domains/dashboards/kinds/kpis/index.d.ts +13 -0
- package/dist/src/domains/dashboards/kinds/kpis/kpis-widget.d.ts +3 -0
- package/dist/src/domains/dashboards/kinds/kpis/options.d.ts +35 -0
- package/dist/src/domains/dashboards/kinds/scores/index.d.ts +8 -0
- package/dist/src/domains/dashboards/kinds/scores/options.d.ts +13 -0
- package/dist/src/domains/dashboards/kinds/scores/scores-widget.d.ts +3 -0
- package/dist/src/domains/dashboards/kinds/table/index.d.ts +23 -0
- package/dist/src/domains/dashboards/kinds/table/table-cells.d.ts +26 -0
- package/dist/src/domains/dashboards/kinds/table/table-columns.d.ts +7 -0
- package/dist/src/domains/dashboards/kinds/table/table-frame.d.ts +13 -0
- package/dist/src/domains/dashboards/kinds/table/table-tabs.d.ts +10 -0
- package/dist/src/domains/dashboards/kinds/table/table-view.d.ts +5 -0
- package/dist/src/domains/dashboards/kinds/table/table-widget.d.ts +7 -0
- package/dist/src/domains/dashboards/kinds/timeseries/index.d.ts +30 -0
- package/dist/src/domains/dashboards/kinds/timeseries/timeseries-widget.d.ts +5 -0
- package/dist/src/domains/dashboards/lib/answers.d.ts +43 -0
- package/dist/src/domains/dashboards/lib/chrome.d.ts +14 -0
- package/dist/src/domains/dashboards/lib/definition.d.ts +27 -0
- package/dist/src/domains/dashboards/lib/filters.d.ts +6 -0
- package/dist/src/domains/dashboards/lib/format.d.ts +7 -0
- package/dist/src/domains/dashboards/lib/prepare-widget.d.ts +26 -0
- package/dist/src/domains/dashboards/lib/requests.d.ts +95 -0
- package/dist/src/domains/dashboards/lib/scores.d.ts +35 -0
- package/dist/src/domains/dashboards/lib/table.d.ts +188 -0
- package/dist/src/domains/dashboards/lib/timeseries.d.ts +119 -0
- package/dist/src/domains/dashboards/lib/values.d.ts +86 -0
- package/dist/src/domains/dashboards/metrics-dashboard.d.ts +7 -0
- package/dist/src/domains/dashboards/widget-kind.d.ts +31 -0
- package/dist/src/domains/logs/components/index.d.ts +1 -0
- package/dist/src/domains/logs/components/logs-saved-views.d.ts +4 -0
- package/dist/src/domains/logs/log-filters.d.ts +8 -0
- package/dist/src/domains/metrics/components/agent-runs-card.d.ts +10 -3
- package/dist/src/domains/metrics/components/breakdown/breakdown-name.d.ts +13 -0
- package/dist/src/domains/metrics/components/breakdown/breakdown-not-priced.d.ts +2 -0
- package/dist/src/domains/metrics/components/breakdown/breakdown-row-mark.d.ts +17 -4
- package/dist/src/domains/metrics/components/breakdown/breakdown-trend-text.d.ts +9 -0
- package/dist/src/domains/metrics/components/card-action-buttons.d.ts +9 -0
- package/dist/src/domains/metrics/components/chart-card.d.ts +33 -21
- package/dist/src/domains/metrics/components/distinct-ids/distinct-ids-chart.d.ts +0 -1
- package/dist/src/domains/metrics/components/failure-rate-card.d.ts +5 -2
- package/dist/src/domains/metrics/components/index.d.ts +1 -2
- package/dist/src/domains/metrics/components/metrics-grid/metrics-grid.d.ts +4 -1
- package/dist/src/domains/metrics/components/trace-aggregate-card.d.ts +1 -1
- package/dist/src/domains/observability/components/observability-header-slot.d.ts +6 -0
- package/dist/src/domains/observability/components/observability-histogram.d.ts +1 -1
- package/dist/src/domains/observability/hooks/use-observability-list-filters.d.ts +21 -5
- package/dist/src/domains/observability/index.d.ts +2 -0
- package/dist/src/domains/observability/lib/zoom-memory.d.ts +19 -0
- package/dist/src/domains/observability/observability-list-url-state.d.ts +39 -0
- package/dist/src/domains/observability/saved-view-state.d.ts +46 -0
- package/dist/src/domains/observability/saved-views/index.d.ts +7 -0
- package/dist/src/domains/observability/saved-views/observability-saved-views.d.ts +22 -0
- package/dist/src/domains/observability/saved-views/saved-views-provider.d.ts +15 -0
- package/dist/src/domains/observability/saved-views/saved-views-source.d.ts +41 -0
- package/dist/src/domains/observability/saved-views/use-hosted-saved-views.d.ts +34 -0
- package/dist/src/domains/spans/components/spans-explorer-body.d.ts +4 -1
- package/dist/src/domains/spans/components/spans-filter-bar.d.ts +3 -1
- package/dist/src/domains/spans/hooks/use-spans-filter-bar.d.ts +1 -1
- package/dist/src/domains/spans/hooks/use-spans-list-source.d.ts +3 -0
- package/dist/src/domains/spans/span-filters.d.ts +16 -5
- package/dist/src/domains/threads/components/threads-explorer-body.d.ts +4 -1
- package/dist/src/domains/threads/thread-filters.d.ts +6 -5
- package/dist/src/domains/traces/components/columns-menu/columns-menu.d.ts +3 -3
- package/dist/src/domains/traces/components/trace-data-panel-view.d.ts +7 -1
- package/dist/src/domains/traces/components/trace-span-panel.d.ts +2 -1
- package/dist/src/domains/traces/components/trace-span-timeline-markers.d.ts +5 -0
- package/dist/src/domains/traces/components/trace-span-timeline.d.ts +6 -1
- package/dist/src/domains/traces/components/trace-time-range-chip.d.ts +3 -1
- package/dist/src/domains/traces/components/traces-explorer/index.d.ts +4 -1
- package/dist/src/domains/traces/components/traces-explorer/traces-explorer-actions.d.ts +5 -5
- package/dist/src/domains/traces/components/traces-explorer/traces-explorer-context.d.ts +11 -1
- package/dist/src/domains/traces/components/traces-explorer/traces-explorer-saved-views.d.ts +7 -0
- package/dist/src/domains/traces/components/traces-list-view.d.ts +20 -7
- package/dist/src/domains/traces/hooks/use-traces-list-source.d.ts +5 -0
- package/dist/src/domains/traces/trace-filters.d.ts +27 -3
- package/dist/src/domains/traces/trace-list-columns.d.ts +16 -6
- package/dist/src/domains/traces/utils/timeline-markers.d.ts +25 -0
- package/dist/src/domains/workflows/context/use-persisted-workflow-run.d.ts +2 -0
- package/dist/src/domains/workflows/workflow/input/processor-input.d.ts +5 -535
- package/dist/src/domains/workflows/workflow/use-workflow-trigger.d.ts +1 -1
- package/dist/src/ds/components/AgentIndicator/agent-glyph.d.ts +4 -0
- package/dist/src/ds/components/AgentIndicator/agent-indicator.d.ts +8 -0
- package/dist/src/ds/components/AgentIndicator/animate.d.ts +5 -0
- package/dist/src/ds/components/AgentIndicator/index.d.ts +4 -0
- package/dist/src/ds/components/AgentIndicator/paint.d.ts +21 -0
- package/dist/src/ds/components/AgentIndicator/poses.d.ts +7 -0
- package/dist/src/ds/components/AgentIndicator/shapes.d.ts +41 -0
- package/dist/src/ds/components/Arrival/arrival.d.ts +11 -0
- package/dist/src/ds/components/Arrival/index.d.ts +1 -1
- package/dist/src/ds/components/DataList/TracesDataList/traces-data-list-cells.d.ts +12 -0
- package/dist/src/ds/components/DataList/TracesDataList/traces-data-list.d.ts +3 -1
- package/dist/src/ds/components/FilterBar/types.d.ts +2 -0
- package/dist/src/ds/components/MetricsCard/index.d.ts +1 -1
- package/dist/src/ds/components/MetricsCard/metrics-card-actions.d.ts +2 -1
- package/dist/src/ds/components/MetricsCard/metrics-card-headline.d.ts +13 -0
- package/dist/src/ds/components/MetricsCard/metrics-card-title-menu.d.ts +2 -0
- package/dist/src/ds/components/MetricsCard/metrics-card-title.d.ts +1 -3
- package/dist/src/ds/components/MetricsCard/metrics-card-toolbar.d.ts +3 -3
- package/dist/src/ds/components/MetricsCard/metrics-card-total.d.ts +11 -3
- package/dist/src/ds/components/MetricsCard/metrics-card.d.ts +2 -9
- package/dist/src/ds/components/MetricsCard/metrics-story-data.d.ts +0 -26
- package/dist/src/ds/components/MetricsKpiCard/metrics-kpi-card-root.d.ts +5 -2
- package/dist/src/ds/components/MetricsLineChart/metrics-line-chart-legend.d.ts +3 -4
- package/dist/src/ds/components/MetricsLineChart/metrics-line-chart.d.ts +2 -6
- package/dist/src/ds/components/SavedViews/saved-view-editor.d.ts +3 -1
- package/dist/src/ds/components/SavedViews/saved-view-picker.d.ts +21 -0
- package/dist/src/ds/components/SavedViews/use-saved-views.d.ts +6 -2
- package/dist/src/ds/components/ai/activity/activity.d.ts +12 -7
- package/dist/src/ds/components/ai/activity/index.d.ts +1 -0
- package/dist/src/ds/components/ai/activity/presets/signal-activity.d.ts +4 -1
- package/dist/src/ds/components/ai/activity/use-relative-paths.d.ts +3 -0
- package/dist/src/ds/components/ai/message-reveal/message-reveal.d.ts +2 -1
- package/dist/src/ds/components/ai/tool-call/tool-presentation.d.ts +4 -0
- package/dist/src/ds/primitives/chart-axes.d.ts +24 -0
- package/dist/src/ds/primitives/chart-frame.d.ts +2 -1
- package/dist/src/ds/primitives/chart-time-tick.d.ts +7 -4
- package/dist/src/lib/string.d.ts +1 -0
- package/dist/{string-OAgeMRQ5.js → string-CNKDIc_4.js} +6 -2
- package/dist/string-CNKDIc_4.js.map +1 -0
- package/dist/{string-CymY0aJ9.cjs → string-DdJJdCv2.cjs} +11 -1
- package/dist/string-DdJJdCv2.cjs.map +1 -0
- package/dist/style.css +67 -4
- package/dist/{tabbed-container-x2mfK07d.js → tabbed-container-BKUqfEKy.js} +2 -2
- package/dist/{tabbed-container-x2mfK07d.js.map → tabbed-container-BKUqfEKy.js.map} +1 -1
- package/dist/{tabbed-container-CBTb0LgE.cjs → tabbed-container-CFEImJOK.cjs} +2 -2
- package/dist/{tabbed-container-CBTb0LgE.cjs.map → tabbed-container-CFEImJOK.cjs.map} +1 -1
- package/dist/{tool-approval-6E73C0r6.cjs → tool-approval-BfjoSNOC.cjs} +4 -4
- package/dist/{tool-approval-6E73C0r6.cjs.map → tool-approval-BfjoSNOC.cjs.map} +1 -1
- package/dist/{tool-approval-BXlro6fV.js → tool-approval-FeuyUUcL.js} +4 -4
- package/dist/{tool-approval-BXlro6fV.js.map → tool-approval-FeuyUUcL.js.map} +1 -1
- package/dist/{tool-call-CItJ8KLA.js → tool-call-BxYXs9w0.js} +9 -7
- package/dist/{tool-call-CItJ8KLA.js.map → tool-call-BxYXs9w0.js.map} +1 -1
- package/dist/{tool-call-Dq9xF3WD.cjs → tool-call-CvilN9ti.cjs} +9 -7
- package/dist/{tool-call-Dq9xF3WD.cjs.map → tool-call-CvilN9ti.cjs.map} +1 -1
- package/dist/{tool-card-o5u4YCR0.cjs → tool-card-B7O8AsRl.cjs} +9 -5
- package/dist/tool-card-B7O8AsRl.cjs.map +1 -0
- package/dist/{tool-card-Bd8weXze.js → tool-card-ELW898uw.js} +9 -5
- package/dist/tool-card-ELW898uw.js.map +1 -0
- package/dist/{tool-presentation-D2uUj1AB.cjs → tool-presentation-BLErsb7c.cjs} +38 -40
- package/dist/tool-presentation-BLErsb7c.cjs.map +1 -0
- package/dist/{tool-presentation-DKfIKLQy.js → tool-presentation-BSZYIWx2.js} +38 -40
- package/dist/tool-presentation-BSZYIWx2.js.map +1 -0
- package/dist/{trace-filters-C27yWcan.js → trace-filters-BJaebsxJ.js} +78 -11
- package/dist/trace-filters-BJaebsxJ.js.map +1 -0
- package/dist/{trace-filters-BpeBUjCb.cjs → trace-filters-BNEZ31HX.cjs} +100 -9
- package/dist/trace-filters-BNEZ31HX.cjs.map +1 -0
- package/dist/types-CP7wbYua.cjs.map +1 -1
- package/dist/types-DiiL5mTO.js.map +1 -1
- package/dist/utils/string.cjs.js +2 -1
- package/dist/utils/string.es.js +1 -1
- package/package.json +14 -14
- package/dist/Arrival-Dm6Vgn78.cjs.map +0 -1
- package/dist/Arrival-NpBOyV52.js.map +0 -1
- package/dist/DataList-Cmk08jUV.cjs.map +0 -1
- package/dist/DataList-Ve3omCXT.js.map +0 -1
- package/dist/DateTimeRangePicker-ByMbLdom.js.map +0 -1
- package/dist/DateTimeRangePicker-DGbH5WOn.cjs.map +0 -1
- package/dist/FilterBar-Dk3QEuT6.js.map +0 -1
- package/dist/FilterBar-gEvoWDXA.cjs.map +0 -1
- package/dist/MetricsCard-C9GWgT58.js.map +0 -1
- package/dist/MetricsCard-Dly_H3oX.cjs.map +0 -1
- package/dist/MetricsLineChart-2m4LVL1N.cjs.map +0 -1
- package/dist/MetricsLineChart-DKzuRU2q.js.map +0 -1
- package/dist/MetricsStackedBarChart-DJB4aByt.js.map +0 -1
- package/dist/MetricsStackedBarChart-NATtwA_W.cjs.map +0 -1
- package/dist/activity-QyLJcBKc.cjs.map +0 -1
- package/dist/activity-ihrl0JtH.js.map +0 -1
- package/dist/combobox-C-E7_q4j.cjs.map +0 -1
- package/dist/combobox-CDS2pBqz.js.map +0 -1
- package/dist/domains/metrics/components/metrics-kpis.cjs.js +0 -106
- package/dist/domains/metrics/components/metrics-kpis.cjs.js.map +0 -1
- package/dist/domains/metrics/components/metrics-kpis.d.ts +0 -1
- package/dist/domains/metrics/components/metrics-kpis.es.js +0 -105
- package/dist/domains/metrics/components/metrics-kpis.es.js.map +0 -1
- package/dist/filter-bar-chip-B3pgpngW.js.map +0 -1
- package/dist/filter-bar-chip-CyTAmjt6.cjs.map +0 -1
- package/dist/src/domains/metrics/components/metrics-kpis.d.ts +0 -2
- package/dist/src/ds/components/MetricsCard/metrics-card-description.d.ts +0 -4
- package/dist/src/ds/components/MetricsCard/metrics-card-summary.d.ts +0 -8
- package/dist/src/ds/components/MetricsCard/metrics-card-tabs.d.ts +0 -16
- package/dist/src/ds/components/MetricsCard/metrics-card-title-and-description.d.ts +0 -16
- package/dist/string-CymY0aJ9.cjs.map +0 -1
- package/dist/string-OAgeMRQ5.js.map +0 -1
- package/dist/tool-card-Bd8weXze.js.map +0 -1
- package/dist/tool-card-o5u4YCR0.cjs.map +0 -1
- package/dist/tool-presentation-D2uUj1AB.cjs.map +0 -1
- package/dist/tool-presentation-DKfIKLQy.js.map +0 -1
- package/dist/trace-filters-BpeBUjCb.cjs.map +0 -1
- package/dist/trace-filters-C27yWcan.js.map +0 -1
package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traces-explorer-list-provider.es.js","names":[],"sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-list-provider.tsx"],"sourcesContent":["import { memo, useMemo } from 'react';\nimport type { ReactNode } from 'react';\nimport { useTracesListSource } from '../../hooks/use-traces-list-source';\nimport { hasTraceColumn } from '../../trace-list-columns';\nimport { buildTracesLegacyFilters, buildTracesQueryRequest, DEFAULT_TRACES_SORT } from './traces-explorer-actions';\nimport type { TracesSort } from './traces-explorer-actions';\nimport {\n TracesListContext,\n TracesListFetchingContext,\n useTraceUsageColumns,\n useTracesConfig,\n useTracesFilters,\n} from './traces-explorer-context';\nimport type { TracesListContextValue } from './traces-explorer-context';\n\ntype TracesListProviderProps = {\n sort: TracesSort;\n onSortChange: (next: TracesSort) => void;\n children: ReactNode;\n};\n\n/**\n * Owns the list query and its poll clock. Its own memoized component so a poll tick re-renders\n * only list consumers, and a selection change doesn't re-run the list query hooks.\n */\nexport const TracesListProvider = memo(function TracesListProvider({\n sort: hostSort,\n onSortChange,\n children,\n}: TracesListProviderProps) {\n const {
|
|
1
|
+
{"version":3,"file":"traces-explorer-list-provider.es.js","names":[],"sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-list-provider.tsx"],"sourcesContent":["import { memo, useMemo } from 'react';\nimport type { ReactNode } from 'react';\nimport { useTracesListSource } from '../../hooks/use-traces-list-source';\nimport { hasTraceColumn } from '../../trace-list-columns';\nimport { buildTracesLegacyFilters, buildTracesQueryRequest, DEFAULT_TRACES_SORT } from './traces-explorer-actions';\nimport type { TracesSort } from './traces-explorer-actions';\nimport {\n TracesListContext,\n TracesListFetchingContext,\n useTraceUsageColumns,\n useTracesConfig,\n useTracesFilters,\n} from './traces-explorer-context';\nimport type { TracesListContextValue } from './traces-explorer-context';\n\ntype TracesListProviderProps = {\n sort: TracesSort;\n onSortChange: (next: TracesSort) => void;\n children: ReactNode;\n};\n\n/**\n * Owns the list query and its poll clock. Its own memoized component so a poll tick re-renders\n * only list consumers, and a selection change doesn't re-run the list query hooks.\n */\nexport const TracesListProvider = memo(function TracesListProvider({\n sort: hostSort,\n onSortChange,\n children,\n}: TracesListProviderProps) {\n const {\n withQueryTrace,\n withRootDuration,\n withTimeToFirstChunk,\n withTimeToFirstToken,\n withTimeToFirstChunkSort,\n withTimeToFirstTokenSort,\n withOutcomeFields,\n withDeltaPolling,\n isCapabilitiesLoading,\n } = useTracesConfig();\n const { filters, dateFrom, dateTo } = useTracesFilters();\n const { displayedPreferences } = useTraceUsageColumns();\n // A TTFC/TTFT sort the store can't run, or on a column that isn't shown, lists newest first instead.\n // The host keeps its raw value, like filters the server can't query.\n const sortable =\n hostSort.field === 'startedAt' ||\n (hostSort.field === 'timeToFirstChunkMs' &&\n withTimeToFirstChunkSort &&\n hasTraceColumn(displayedPreferences, 'timeToFirstChunk')) ||\n (hostSort.field === 'timeToFirstTokenMs' &&\n withTimeToFirstTokenSort &&\n hasTraceColumn(displayedPreferences, 'timeToFirstToken'));\n const sort = sortable ? hostSort : DEFAULT_TRACES_SORT;\n const list = useTracesListSource({\n rolling: !dateTo,\n query: now =>\n buildTracesQueryRequest({\n filters,\n dateFrom,\n dateTo,\n withRootDuration,\n withTimeToFirstChunk,\n withTimeToFirstToken,\n withOutcomeFields,\n now,\n }),\n orderBy: [sort],\n withQueryTrace,\n withDeltaPolling,\n enabled: !isCapabilitiesLoading,\n legacyFilters: buildTracesLegacyFilters({ filters, dateFrom, dateTo }),\n });\n\n const {\n rows,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n error,\n refetch,\n isFetching,\n autoRefetch,\n } = list;\n const value = useMemo<TracesListContextValue>(\n () => ({\n rows,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n error,\n refetch,\n autoRefetch,\n sort,\n onSortChange,\n }),\n [\n rows,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n error,\n refetch,\n autoRefetch,\n sort,\n onSortChange,\n ],\n );\n\n return (\n <TracesListContext.Provider value={value}>\n <TracesListFetchingContext.Provider value={isFetching}>{children}</TracesListFetchingContext.Provider>\n </TracesListContext.Provider>\n );\n});\n"],"mappings":";;;;;;;;;;;AAyBA,IAAa,qBAAqB,KAAK,SAAS,mBAAmB,EACjE,MAAM,UACN,cACA,YAC0B;CAC1B,MAAM,EACJ,gBACA,kBACA,sBACA,sBACA,0BACA,0BACA,mBACA,kBACA,0BACE,gBAAgB;CACpB,MAAM,EAAE,SAAS,UAAU,WAAW,iBAAiB;CACvD,MAAM,EAAE,yBAAyB,qBAAqB;CAWtD,MAAM,OAPJ,SAAS,UAAU,eAClB,SAAS,UAAU,wBAClB,4BACA,eAAe,sBAAsB,kBAAkB,KACxD,SAAS,UAAU,wBAClB,4BACA,eAAe,sBAAsB,kBAAkB,IACnC,WAAW;CAqBnC,MAAM,EACJ,MACA,WACA,oBACA,aACA,qBACA,OACA,SACA,YACA,gBA7BW,oBAAoB;EAC/B,SAAS,CAAC;EACV,QAAO,QACL,wBAAwB;GACtB;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF,CAAC;EACH,SAAS,CAAC,IAAI;EACd;EACA;EACA,SAAS,CAAC;EACV,eAAe,yBAAyB;GAAE;GAAS;GAAU;EAAO,CAAC;CACvE,CAYI;CACJ,MAAM,QAAQ,eACL;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,IACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CACF;CAEA,OACE,oBAAC,kBAAkB,UAAnB;EAAmC;EACjC,UAAA,oBAAC,0BAA0B,UAA3B;GAAoC,OAAO;GAAa;EAA6C,CAAA;CAC3E,CAAA;AAEhC,CAAC"}
|
|
@@ -6,12 +6,15 @@ let react_jsx_runtime = require("react/jsx-runtime");
|
|
|
6
6
|
let _mastra_react_hooks_traces = require("@mastra/react/hooks/traces");
|
|
7
7
|
// src/domains/traces/components/traces-explorer/traces-explorer-list.tsx
|
|
8
8
|
function TracesExplorerList() {
|
|
9
|
-
const { listId, withTimeToFirstChunkSort } = require_domains_traces_components_traces_explorer_traces_explorer_context.useTracesConfig();
|
|
9
|
+
const { listId, withTimeToFirstChunkSort, withTimeToFirstTokenSort } = require_domains_traces_components_traces_explorer_traces_explorer_context.useTracesConfig();
|
|
10
10
|
const { rows, isLoading, isFetchingNextPage, hasNextPage, setEndOfListElement, autoRefetch, sort, onSortChange } = require_domains_traces_components_traces_explorer_traces_explorer_context.useTracesList();
|
|
11
11
|
const { filtersApplied } = require_domains_traces_components_traces_explorer_traces_explorer_context.useTracesFilters();
|
|
12
12
|
const { onFilterByField } = require_domains_traces_components_traces_explorer_use_traces_filter_bar.useTracesFilterBar();
|
|
13
13
|
const { selectedTraceId, selectTrace, closeTrace } = require_domains_traces_components_traces_explorer_traces_explorer_context.useTracesSelection();
|
|
14
14
|
const { displayedPreferences, usageEnabled } = require_domains_traces_components_traces_explorer_traces_explorer_context.useTraceUsageColumns();
|
|
15
|
+
const sortableFields = ["startedAt"];
|
|
16
|
+
if (withTimeToFirstChunkSort) sortableFields.push("timeToFirstChunkMs");
|
|
17
|
+
if (withTimeToFirstTokenSort) sortableFields.push("timeToFirstTokenMs");
|
|
15
18
|
const { data: usageByTraceId } = (0, _mastra_react_hooks_traces.useTraceUsage)({
|
|
16
19
|
traceIds: rows.map((row) => row.traceId),
|
|
17
20
|
enabled: usageEnabled,
|
|
@@ -32,16 +35,9 @@ function TracesExplorerList() {
|
|
|
32
35
|
featuredTraceId: selectedTraceId,
|
|
33
36
|
columnPreferences: displayedPreferences,
|
|
34
37
|
usageByTraceId,
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
direction
|
|
39
|
-
}),
|
|
40
|
-
timeToFirstChunkSort: sort.field === "timeToFirstChunkMs" ? sort.direction : void 0,
|
|
41
|
-
onTimeToFirstChunkSortChange: withTimeToFirstChunkSort ? (direction) => onSortChange({
|
|
42
|
-
field: "timeToFirstChunkMs",
|
|
43
|
-
direction
|
|
44
|
-
}) : void 0,
|
|
38
|
+
sort,
|
|
39
|
+
sortableFields,
|
|
40
|
+
onSortChange,
|
|
45
41
|
onFilterByField,
|
|
46
42
|
onTraceClick: handleTraceClick
|
|
47
43
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traces-explorer-list.cjs.js","names":["useTracesConfig","useTracesList","useTracesFilters","useTracesFilterBar","useTracesSelection","useTraceUsageColumns","useTraceUsage","TracesListView"],"sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-list.tsx"],"sourcesContent":["import { useTraceUsage } from '@mastra/react/hooks/traces';\nimport { TracesListView } from '../traces-list-view';\nimport type { TracesListViewTrace } from '../traces-list-view';\nimport {\n useTraceUsageColumns,\n useTracesConfig,\n useTracesFilters,\n useTracesList,\n useTracesSelection,\n} from './traces-explorer-context';\nimport { useTracesFilterBar } from './use-traces-filter-bar';\n\nexport function TracesExplorerList() {\n const { listId, withTimeToFirstChunkSort } = useTracesConfig();\n const { rows, isLoading, isFetchingNextPage, hasNextPage, setEndOfListElement, autoRefetch, sort, onSortChange } =\n useTracesList();\n const { filtersApplied } = useTracesFilters();\n const { onFilterByField } = useTracesFilterBar();\n const { selectedTraceId, selectTrace, closeTrace } = useTracesSelection();\n const { displayedPreferences, usageEnabled } = useTraceUsageColumns();\n\n const { data: usageByTraceId } = useTraceUsage({\n traceIds: rows.map(row => row.traceId),\n enabled: usageEnabled,\n autoRefetch,\n });\n\n // Clicking the open row closes it; any other row opens.\n const handleTraceClick = (trace: TracesListViewTrace) => {\n if (trace.traceId === selectedTraceId) closeTrace();\n else selectTrace(trace.traceId);\n };\n\n return (\n <TracesListView\n listId={listId}\n traces={rows}\n isLoading={isLoading}\n isFetchingNextPage={isFetchingNextPage}\n hasNextPage={hasNextPage}\n setEndOfListElement={setEndOfListElement}\n filtersApplied={filtersApplied}\n featuredTraceId={selectedTraceId}\n columnPreferences={displayedPreferences}\n usageByTraceId={usageByTraceId}\n
|
|
1
|
+
{"version":3,"file":"traces-explorer-list.cjs.js","names":["useTracesConfig","useTracesList","useTracesFilters","useTracesFilterBar","useTracesSelection","useTraceUsageColumns","useTraceUsage","TracesListView"],"sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-list.tsx"],"sourcesContent":["import { useTraceUsage } from '@mastra/react/hooks/traces';\nimport { TracesListView } from '../traces-list-view';\nimport type { TracesListViewTrace } from '../traces-list-view';\nimport type { TracesSortField } from './traces-explorer-actions';\nimport {\n useTraceUsageColumns,\n useTracesConfig,\n useTracesFilters,\n useTracesList,\n useTracesSelection,\n} from './traces-explorer-context';\nimport { useTracesFilterBar } from './use-traces-filter-bar';\n\nexport function TracesExplorerList() {\n const { listId, withTimeToFirstChunkSort, withTimeToFirstTokenSort } = useTracesConfig();\n const { rows, isLoading, isFetchingNextPage, hasNextPage, setEndOfListElement, autoRefetch, sort, onSortChange } =\n useTracesList();\n const { filtersApplied } = useTracesFilters();\n const { onFilterByField } = useTracesFilterBar();\n const { selectedTraceId, selectTrace, closeTrace } = useTracesSelection();\n const { displayedPreferences, usageEnabled } = useTraceUsageColumns();\n const sortableFields: TracesSortField[] = ['startedAt'];\n if (withTimeToFirstChunkSort) sortableFields.push('timeToFirstChunkMs');\n if (withTimeToFirstTokenSort) sortableFields.push('timeToFirstTokenMs');\n\n const { data: usageByTraceId } = useTraceUsage({\n traceIds: rows.map(row => row.traceId),\n enabled: usageEnabled,\n autoRefetch,\n });\n\n // Clicking the open row closes it; any other row opens.\n const handleTraceClick = (trace: TracesListViewTrace) => {\n if (trace.traceId === selectedTraceId) closeTrace();\n else selectTrace(trace.traceId);\n };\n\n return (\n <TracesListView\n listId={listId}\n traces={rows}\n isLoading={isLoading}\n isFetchingNextPage={isFetchingNextPage}\n hasNextPage={hasNextPage}\n setEndOfListElement={setEndOfListElement}\n filtersApplied={filtersApplied}\n featuredTraceId={selectedTraceId}\n columnPreferences={displayedPreferences}\n usageByTraceId={usageByTraceId}\n sort={sort}\n sortableFields={sortableFields}\n onSortChange={onSortChange}\n onFilterByField={onFilterByField}\n onTraceClick={handleTraceClick}\n />\n );\n}\n"],"mappings":";;;;;;;AAaA,SAAgB,qBAAqB;CACnC,MAAM,EAAE,QAAQ,0BAA0B,6BAA6BA,0EAAAA,gBAAgB;CACvF,MAAM,EAAE,MAAM,WAAW,oBAAoB,aAAa,qBAAqB,aAAa,MAAM,iBAChGC,0EAAAA,cAAc;CAChB,MAAM,EAAE,mBAAmBC,0EAAAA,iBAAiB;CAC5C,MAAM,EAAE,oBAAoBC,wEAAAA,mBAAmB;CAC/C,MAAM,EAAE,iBAAiB,aAAa,eAAeC,0EAAAA,mBAAmB;CACxE,MAAM,EAAE,sBAAsB,iBAAiBC,0EAAAA,qBAAqB;CACpE,MAAM,iBAAoC,CAAC,WAAW;CACtD,IAAI,0BAA0B,eAAe,KAAK,oBAAoB;CACtE,IAAI,0BAA0B,eAAe,KAAK,oBAAoB;CAEtE,MAAM,EAAE,MAAM,oBAAA,GAAmBC,2BAAAA,cAAAA,CAAc;EAC7C,UAAU,KAAK,KAAI,QAAO,IAAI,OAAO;EACrC,SAAS;EACT;CACF,CAAC;CAGD,MAAM,oBAAoB,UAA+B;EACvD,IAAI,MAAM,YAAY,iBAAiB,WAAW;OAC7C,YAAY,MAAM,OAAO;CAChC;CAEA,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,mDAAAA,gBAAD;EACU;EACR,QAAQ;EACG;EACS;EACP;EACQ;EACL;EAChB,iBAAiB;EACjB,mBAAmB;EACH;EACV;EACU;EACF;EACG;EACjB,cAAc;CACf,CAAA;AAEL"}
|
|
@@ -5,12 +5,15 @@ import { jsx } from "react/jsx-runtime";
|
|
|
5
5
|
import { useTraceUsage } from "@mastra/react/hooks/traces";
|
|
6
6
|
// src/domains/traces/components/traces-explorer/traces-explorer-list.tsx
|
|
7
7
|
function TracesExplorerList() {
|
|
8
|
-
const { listId, withTimeToFirstChunkSort } = useTracesConfig();
|
|
8
|
+
const { listId, withTimeToFirstChunkSort, withTimeToFirstTokenSort } = useTracesConfig();
|
|
9
9
|
const { rows, isLoading, isFetchingNextPage, hasNextPage, setEndOfListElement, autoRefetch, sort, onSortChange } = useTracesList();
|
|
10
10
|
const { filtersApplied } = useTracesFilters();
|
|
11
11
|
const { onFilterByField } = useTracesFilterBar();
|
|
12
12
|
const { selectedTraceId, selectTrace, closeTrace } = useTracesSelection();
|
|
13
13
|
const { displayedPreferences, usageEnabled } = useTraceUsageColumns();
|
|
14
|
+
const sortableFields = ["startedAt"];
|
|
15
|
+
if (withTimeToFirstChunkSort) sortableFields.push("timeToFirstChunkMs");
|
|
16
|
+
if (withTimeToFirstTokenSort) sortableFields.push("timeToFirstTokenMs");
|
|
14
17
|
const { data: usageByTraceId } = useTraceUsage({
|
|
15
18
|
traceIds: rows.map((row) => row.traceId),
|
|
16
19
|
enabled: usageEnabled,
|
|
@@ -31,16 +34,9 @@ function TracesExplorerList() {
|
|
|
31
34
|
featuredTraceId: selectedTraceId,
|
|
32
35
|
columnPreferences: displayedPreferences,
|
|
33
36
|
usageByTraceId,
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
direction
|
|
38
|
-
}),
|
|
39
|
-
timeToFirstChunkSort: sort.field === "timeToFirstChunkMs" ? sort.direction : void 0,
|
|
40
|
-
onTimeToFirstChunkSortChange: withTimeToFirstChunkSort ? (direction) => onSortChange({
|
|
41
|
-
field: "timeToFirstChunkMs",
|
|
42
|
-
direction
|
|
43
|
-
}) : void 0,
|
|
37
|
+
sort,
|
|
38
|
+
sortableFields,
|
|
39
|
+
onSortChange,
|
|
44
40
|
onFilterByField,
|
|
45
41
|
onTraceClick: handleTraceClick
|
|
46
42
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traces-explorer-list.es.js","names":[],"sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-list.tsx"],"sourcesContent":["import { useTraceUsage } from '@mastra/react/hooks/traces';\nimport { TracesListView } from '../traces-list-view';\nimport type { TracesListViewTrace } from '../traces-list-view';\nimport {\n useTraceUsageColumns,\n useTracesConfig,\n useTracesFilters,\n useTracesList,\n useTracesSelection,\n} from './traces-explorer-context';\nimport { useTracesFilterBar } from './use-traces-filter-bar';\n\nexport function TracesExplorerList() {\n const { listId, withTimeToFirstChunkSort } = useTracesConfig();\n const { rows, isLoading, isFetchingNextPage, hasNextPage, setEndOfListElement, autoRefetch, sort, onSortChange } =\n useTracesList();\n const { filtersApplied } = useTracesFilters();\n const { onFilterByField } = useTracesFilterBar();\n const { selectedTraceId, selectTrace, closeTrace } = useTracesSelection();\n const { displayedPreferences, usageEnabled } = useTraceUsageColumns();\n\n const { data: usageByTraceId } = useTraceUsage({\n traceIds: rows.map(row => row.traceId),\n enabled: usageEnabled,\n autoRefetch,\n });\n\n // Clicking the open row closes it; any other row opens.\n const handleTraceClick = (trace: TracesListViewTrace) => {\n if (trace.traceId === selectedTraceId) closeTrace();\n else selectTrace(trace.traceId);\n };\n\n return (\n <TracesListView\n listId={listId}\n traces={rows}\n isLoading={isLoading}\n isFetchingNextPage={isFetchingNextPage}\n hasNextPage={hasNextPage}\n setEndOfListElement={setEndOfListElement}\n filtersApplied={filtersApplied}\n featuredTraceId={selectedTraceId}\n columnPreferences={displayedPreferences}\n usageByTraceId={usageByTraceId}\n
|
|
1
|
+
{"version":3,"file":"traces-explorer-list.es.js","names":[],"sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-list.tsx"],"sourcesContent":["import { useTraceUsage } from '@mastra/react/hooks/traces';\nimport { TracesListView } from '../traces-list-view';\nimport type { TracesListViewTrace } from '../traces-list-view';\nimport type { TracesSortField } from './traces-explorer-actions';\nimport {\n useTraceUsageColumns,\n useTracesConfig,\n useTracesFilters,\n useTracesList,\n useTracesSelection,\n} from './traces-explorer-context';\nimport { useTracesFilterBar } from './use-traces-filter-bar';\n\nexport function TracesExplorerList() {\n const { listId, withTimeToFirstChunkSort, withTimeToFirstTokenSort } = useTracesConfig();\n const { rows, isLoading, isFetchingNextPage, hasNextPage, setEndOfListElement, autoRefetch, sort, onSortChange } =\n useTracesList();\n const { filtersApplied } = useTracesFilters();\n const { onFilterByField } = useTracesFilterBar();\n const { selectedTraceId, selectTrace, closeTrace } = useTracesSelection();\n const { displayedPreferences, usageEnabled } = useTraceUsageColumns();\n const sortableFields: TracesSortField[] = ['startedAt'];\n if (withTimeToFirstChunkSort) sortableFields.push('timeToFirstChunkMs');\n if (withTimeToFirstTokenSort) sortableFields.push('timeToFirstTokenMs');\n\n const { data: usageByTraceId } = useTraceUsage({\n traceIds: rows.map(row => row.traceId),\n enabled: usageEnabled,\n autoRefetch,\n });\n\n // Clicking the open row closes it; any other row opens.\n const handleTraceClick = (trace: TracesListViewTrace) => {\n if (trace.traceId === selectedTraceId) closeTrace();\n else selectTrace(trace.traceId);\n };\n\n return (\n <TracesListView\n listId={listId}\n traces={rows}\n isLoading={isLoading}\n isFetchingNextPage={isFetchingNextPage}\n hasNextPage={hasNextPage}\n setEndOfListElement={setEndOfListElement}\n filtersApplied={filtersApplied}\n featuredTraceId={selectedTraceId}\n columnPreferences={displayedPreferences}\n usageByTraceId={usageByTraceId}\n sort={sort}\n sortableFields={sortableFields}\n onSortChange={onSortChange}\n onFilterByField={onFilterByField}\n onTraceClick={handleTraceClick}\n />\n );\n}\n"],"mappings":";;;;;;AAaA,SAAgB,qBAAqB;CACnC,MAAM,EAAE,QAAQ,0BAA0B,6BAA6B,gBAAgB;CACvF,MAAM,EAAE,MAAM,WAAW,oBAAoB,aAAa,qBAAqB,aAAa,MAAM,iBAChG,cAAc;CAChB,MAAM,EAAE,mBAAmB,iBAAiB;CAC5C,MAAM,EAAE,oBAAoB,mBAAmB;CAC/C,MAAM,EAAE,iBAAiB,aAAa,eAAe,mBAAmB;CACxE,MAAM,EAAE,sBAAsB,iBAAiB,qBAAqB;CACpE,MAAM,iBAAoC,CAAC,WAAW;CACtD,IAAI,0BAA0B,eAAe,KAAK,oBAAoB;CACtE,IAAI,0BAA0B,eAAe,KAAK,oBAAoB;CAEtE,MAAM,EAAE,MAAM,mBAAmB,cAAc;EAC7C,UAAU,KAAK,KAAI,QAAO,IAAI,OAAO;EACrC,SAAS;EACT;CACF,CAAC;CAGD,MAAM,oBAAoB,UAA+B;EACvD,IAAI,MAAM,YAAY,iBAAiB,WAAW;OAC7C,YAAY,MAAM,OAAO;CAChC;CAEA,OACE,oBAAC,gBAAD;EACU;EACR,QAAQ;EACG;EACS;EACP;EACQ;EACL;EAChB,iBAAiB;EACjB,mBAAmB;EACH;EACV;EACU;EACF;EACG;EACjB,cAAc;CACf,CAAA;AAEL"}
|
|
@@ -54,7 +54,8 @@ function TracesExplorerPanel({ onOpenScore, renderCreateDatasetDialog, headerAct
|
|
|
54
54
|
const { handlePreviousTrace, handleNextTrace } = require_domains_traces_hooks_use_trace_list_navigation.useTraceListNavigation(rows, traceId, null, selectTrace);
|
|
55
55
|
const isFullThreadOpen = !!traceId && fullThreadTraceId === traceId;
|
|
56
56
|
const depth = isFullThreadOpen ? 3 : 2;
|
|
57
|
-
const
|
|
57
|
+
const listedRow = rows.find((row) => row.traceId === traceId);
|
|
58
|
+
const entityType = listedRow?.entityType ?? anchorSpan?.entityType;
|
|
58
59
|
const isAgent = entityType === _mastra_core_observability.EntityType.AGENT;
|
|
59
60
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
60
61
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_domains_traces_components_trace_span_panel.TraceSpanPanel, {
|
|
@@ -65,6 +66,7 @@ function TracesExplorerPanel({ onOpenScore, renderCreateDatasetDialog, headerAct
|
|
|
65
66
|
anchorSpanId,
|
|
66
67
|
entityType,
|
|
67
68
|
usage,
|
|
69
|
+
rootStreamingTimings: listedRow,
|
|
68
70
|
isLoadingSpans,
|
|
69
71
|
selectedSpanId: spanId ?? null,
|
|
70
72
|
onClose: () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traces-explorer-panel.cjs.js","names":["useTracesConfig","useTracesList","useTracesSelection","useTraceUsageColumns","useState","useTraceFeedback","useSpanFeedback","useTraceOrBranchSpans","useTraceSpanScores","useTraceUsage","useTraceListNavigation","EntityType","_Fragment","TraceSpanPanel","TraceFeedbackTab","TraceScoresList","SpanFeedbackTab","ScoreDataPanel","TraceAsItemDialog"],"sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-panel.tsx"],"sourcesContent":["import { EntityType } from '@mastra/core/observability';\nimport { useTraceSpanScores } from '@mastra/react/hooks/scores';\nimport { useSpanFeedback, useTraceFeedback, useTraceOrBranchSpans, useTraceUsage } from '@mastra/react/hooks/traces';\nimport { useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { useTraceListNavigation } from '../../hooks/use-trace-list-navigation';\nimport { SpanFeedbackTab } from '../span-feedback-tab';\nimport { TraceFeedbackTab } from '../trace-feedback-tab';\nimport { TraceSpanPanel } from '../trace-span-panel';\nimport type { TraceSpanPanelProps } from '../trace-span-panel';\nimport { useTraceUsageColumns, useTracesConfig, useTracesList, useTracesSelection } from './traces-explorer-context';\nimport { TraceAsItemDialog } from '@/domains/observability/components/trace-as-item-dialog';\nimport { ScoreDataPanel, TraceScoresList } from '@/domains/scores';\n\nexport type TracesExplorerPanelProps = {\n /** Opens a score of one of the full thread's traces (the host owns routing). */\n onOpenScore: (traceId: string, scoreId: string) => void;\n renderCreateDatasetDialog?: ComponentProps<typeof TraceAsItemDialog>['renderCreateDatasetDialog'];\n /** Host integration actions rendered alongside the trace controls. */\n headerActionsSlot?: (args: { traceId: string; spans: TraceSpanPanelProps['spans'] }) => ReactNode;\n /** Builds the href of the dedicated trace page; without it the drawer offers no \"Open trace page\" link. */\n traceHref?: (traceId: string) => string;\n /** Shows the \"Add to dataset\" button next to \"Score trace\". Defaults to `true`. */\n withAddTraceToDataset?: boolean;\n};\n\ntype DatasetDialogTarget = { traceId: string; rootSpanId: string | undefined };\n\nexport function TracesExplorerPanel({\n onOpenScore,\n renderCreateDatasetDialog,\n headerActionsSlot,\n traceHref,\n withAddTraceToDataset = true,\n}: TracesExplorerPanelProps) {\n const { withQueryTrace, withFeedback } = useTracesConfig();\n const { rows, autoRefetch, isLoading: isListLoading } = useTracesList();\n const { selection, selectTrace, closeTrace, selectSpan, setSpanTab, setSpanView, selectScore, highlightSpans } =\n useTracesSelection();\n const { usageEnabled } = useTraceUsageColumns();\n const traceId = selection.traceId;\n const spanId = selection.spanId;\n\n const [datasetDialogTarget, setDatasetDialogTarget] = useState<DatasetDialogTarget | null>(null);\n // Keyed by trace id so selecting another trace (row click, prev/next) falls back to the trace panel.\n const [fullThreadTraceId, setFullThreadTraceId] = useState<string | null>(null);\n\n // Tab badge counts; the tab bodies re-use these first-page queries through React Query's cache.\n const { data: traceFeedbackData } = useTraceFeedback({\n traceId,\n queryOptions: { enabled: withFeedback && !!traceId },\n });\n const { data: spanFeedbackData } = useSpanFeedback({\n traceId,\n spanId,\n queryOptions: { enabled: withFeedback && !!traceId && !!spanId },\n });\n\n const {\n spans,\n anchorSpanId,\n isLoading: isLoadingSpans,\n } = useTraceOrBranchSpans({ traceId: traceId ?? null, listMode: 'traces', anchorSpanId: null });\n const anchorSpan = anchorSpanId\n ? spans?.find(s => s.spanId === anchorSpanId)\n : spans?.find(s => s.parentSpanId == null);\n\n const { data: spanScoresData } = useTraceSpanScores({\n traceId,\n spanId: anchorSpan?.spanId,\n queryOptions: { enabled: !!traceId && !!anchorSpan?.spanId },\n });\n const featuredScore = selection.scoreId\n ? spanScoresData?.scores?.find(score => score.id === selection.scoreId)\n : undefined;\n\n // Same key as the list's usage query when the trace is listed, so React Query serves it from cache.\n // Waits for the list so a deep-linked trace doesn't fetch its own usage before the rows arrive.\n const rowIds = rows.map(row => row.traceId);\n const isListed = !!traceId && rowIds.includes(traceId);\n const { data: usageByTraceId } = useTraceUsage({\n traceIds: isListed ? rowIds : traceId ? [traceId] : [],\n enabled: usageEnabled && !isListLoading,\n autoRefetch,\n });\n const usage = traceId ? usageByTraceId?.get(traceId) : undefined;\n\n const { handlePreviousTrace, handleNextTrace } = useTraceListNavigation(rows, traceId, null, selectTrace);\n\n const isFullThreadOpen = !!traceId && fullThreadTraceId === traceId;\n const depth = isFullThreadOpen ? 3 : 2;\n\n // Only agent traces carry the Messages column, so other traces open the drawer one size\n // smaller, with or without a span open. The listed row knows the entity on click; the root\n // span covers deep-linked traces outside the list.\n const entityType = rows.find(row => row.traceId === traceId)?.entityType ?? anchorSpan?.entityType;\n const isAgent = entityType === EntityType.AGENT;\n const panelSize = spanId ? (isAgent ? 'full' : 'wide') : isAgent ? 'wide' : 'half';\n\n return (\n <>\n <TraceSpanPanel\n title=\"Trace details\"\n size={panelSize}\n traceId={traceId}\n spans={spans}\n anchorSpanId={anchorSpanId}\n entityType={entityType}\n usage={usage}\n isLoadingSpans={isLoadingSpans}\n selectedSpanId={spanId ?? null}\n onClose={() => {\n setFullThreadTraceId(null);\n closeTrace();\n }}\n isFullThreadOpen={isFullThreadOpen}\n withQueryTrace={withQueryTrace}\n withFeedback={withFeedback}\n onOpenScore={onOpenScore}\n onFullThreadOpenChange={open => setFullThreadTraceId(open ? (traceId ?? null) : null)}\n onSpanSelect={id => selectSpan(id ?? null)}\n onSaveAsDatasetItem={withAddTraceToDataset ? setDatasetDialogTarget : undefined}\n initialSpanId={spanId}\n onPrevious={handlePreviousTrace}\n onNext={handleNextTrace}\n showPartialThread\n featuredSpanIds={selection.highlightSpanIds}\n onHighlightSpans={highlightSpans}\n feedbackTabBadge={withFeedback ? (traceFeedbackData?.pagination?.total ?? undefined) : undefined}\n feedbackTabSlot={withFeedback ? ({ traceId: tid }) => <TraceFeedbackTab traceId={tid} /> : undefined}\n scoresTabBadge={spanScoresData?.pagination?.total ?? undefined}\n scoresTabSlot={({ traceId: tid, rootSpanId }) =>\n rootSpanId ? <TraceScoresList traceId={tid} spanId={rootSpanId} onScoreSelect={selectScore} /> : null\n }\n spanView={selection.spanView}\n onSpanViewChange={setSpanView}\n spanActiveTab={selection.spanTab ?? 'details'}\n onSpanTabChange={setSpanTab}\n spanFeedbackTabBadge={withFeedback ? (spanFeedbackData?.pagination?.total ?? undefined) : undefined}\n spanFeedbackTabSlot={\n withFeedback\n ? ({ traceId: tid, spanId: sid }) =>\n tid && sid ? <SpanFeedbackTab key={`${tid}:${sid}`} traceId={tid} spanId={sid} /> : null\n : undefined\n }\n headerActionsSlot={traceId && headerActionsSlot ? headerActionsSlot({ traceId, spans }) : undefined}\n traceHref={traceId && traceHref ? traceHref(traceId) : undefined}\n />\n <ScoreDataPanel depth={depth} score={featuredScore} onClose={() => selectScore(null)} />\n {withAddTraceToDataset && (\n <TraceAsItemDialog\n rootSpanId={datasetDialogTarget?.rootSpanId}\n traceId={datasetDialogTarget?.traceId}\n isOpen={!!datasetDialogTarget}\n onClose={() => setDatasetDialogTarget(null)}\n renderCreateDatasetDialog={renderCreateDatasetDialog}\n />\n )}\n </>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"traces-explorer-panel.cjs.js","names":["useTracesConfig","useTracesList","useTracesSelection","useTraceUsageColumns","useState","useTraceFeedback","useSpanFeedback","useTraceOrBranchSpans","useTraceSpanScores","useTraceUsage","useTraceListNavigation","EntityType","_Fragment","TraceSpanPanel","TraceFeedbackTab","TraceScoresList","SpanFeedbackTab","ScoreDataPanel","TraceAsItemDialog"],"sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-panel.tsx"],"sourcesContent":["import { EntityType } from '@mastra/core/observability';\nimport { useTraceSpanScores } from '@mastra/react/hooks/scores';\nimport { useSpanFeedback, useTraceFeedback, useTraceOrBranchSpans, useTraceUsage } from '@mastra/react/hooks/traces';\nimport { useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { useTraceListNavigation } from '../../hooks/use-trace-list-navigation';\nimport { SpanFeedbackTab } from '../span-feedback-tab';\nimport { TraceFeedbackTab } from '../trace-feedback-tab';\nimport { TraceSpanPanel } from '../trace-span-panel';\nimport type { TraceSpanPanelProps } from '../trace-span-panel';\nimport { useTraceUsageColumns, useTracesConfig, useTracesList, useTracesSelection } from './traces-explorer-context';\nimport { TraceAsItemDialog } from '@/domains/observability/components/trace-as-item-dialog';\nimport { ScoreDataPanel, TraceScoresList } from '@/domains/scores';\n\nexport type TracesExplorerPanelProps = {\n /** Opens a score of one of the full thread's traces (the host owns routing). */\n onOpenScore: (traceId: string, scoreId: string) => void;\n renderCreateDatasetDialog?: ComponentProps<typeof TraceAsItemDialog>['renderCreateDatasetDialog'];\n /** Host integration actions rendered alongside the trace controls. */\n headerActionsSlot?: (args: { traceId: string; spans: TraceSpanPanelProps['spans'] }) => ReactNode;\n /** Builds the href of the dedicated trace page; without it the drawer offers no \"Open trace page\" link. */\n traceHref?: (traceId: string) => string;\n /** Shows the \"Add to dataset\" button next to \"Score trace\". Defaults to `true`. */\n withAddTraceToDataset?: boolean;\n};\n\ntype DatasetDialogTarget = { traceId: string; rootSpanId: string | undefined };\n\nexport function TracesExplorerPanel({\n onOpenScore,\n renderCreateDatasetDialog,\n headerActionsSlot,\n traceHref,\n withAddTraceToDataset = true,\n}: TracesExplorerPanelProps) {\n const { withQueryTrace, withFeedback } = useTracesConfig();\n const { rows, autoRefetch, isLoading: isListLoading } = useTracesList();\n const { selection, selectTrace, closeTrace, selectSpan, setSpanTab, setSpanView, selectScore, highlightSpans } =\n useTracesSelection();\n const { usageEnabled } = useTraceUsageColumns();\n const traceId = selection.traceId;\n const spanId = selection.spanId;\n\n const [datasetDialogTarget, setDatasetDialogTarget] = useState<DatasetDialogTarget | null>(null);\n // Keyed by trace id so selecting another trace (row click, prev/next) falls back to the trace panel.\n const [fullThreadTraceId, setFullThreadTraceId] = useState<string | null>(null);\n\n // Tab badge counts; the tab bodies re-use these first-page queries through React Query's cache.\n const { data: traceFeedbackData } = useTraceFeedback({\n traceId,\n queryOptions: { enabled: withFeedback && !!traceId },\n });\n const { data: spanFeedbackData } = useSpanFeedback({\n traceId,\n spanId,\n queryOptions: { enabled: withFeedback && !!traceId && !!spanId },\n });\n\n const {\n spans,\n anchorSpanId,\n isLoading: isLoadingSpans,\n } = useTraceOrBranchSpans({ traceId: traceId ?? null, listMode: 'traces', anchorSpanId: null });\n const anchorSpan = anchorSpanId\n ? spans?.find(s => s.spanId === anchorSpanId)\n : spans?.find(s => s.parentSpanId == null);\n\n const { data: spanScoresData } = useTraceSpanScores({\n traceId,\n spanId: anchorSpan?.spanId,\n queryOptions: { enabled: !!traceId && !!anchorSpan?.spanId },\n });\n const featuredScore = selection.scoreId\n ? spanScoresData?.scores?.find(score => score.id === selection.scoreId)\n : undefined;\n\n // Same key as the list's usage query when the trace is listed, so React Query serves it from cache.\n // Waits for the list so a deep-linked trace doesn't fetch its own usage before the rows arrive.\n const rowIds = rows.map(row => row.traceId);\n const isListed = !!traceId && rowIds.includes(traceId);\n const { data: usageByTraceId } = useTraceUsage({\n traceIds: isListed ? rowIds : traceId ? [traceId] : [],\n enabled: usageEnabled && !isListLoading,\n autoRefetch,\n });\n const usage = traceId ? usageByTraceId?.get(traceId) : undefined;\n\n const { handlePreviousTrace, handleNextTrace } = useTraceListNavigation(rows, traceId, null, selectTrace);\n\n const isFullThreadOpen = !!traceId && fullThreadTraceId === traceId;\n const depth = isFullThreadOpen ? 3 : 2;\n\n // Only agent traces carry the Messages column, so other traces open the drawer one size\n // smaller, with or without a span open. The listed row knows the entity on click; the root\n // span covers deep-linked traces outside the list.\n const listedRow = rows.find(row => row.traceId === traceId);\n const entityType = listedRow?.entityType ?? anchorSpan?.entityType;\n const isAgent = entityType === EntityType.AGENT;\n const panelSize = spanId ? (isAgent ? 'full' : 'wide') : isAgent ? 'wide' : 'half';\n\n return (\n <>\n <TraceSpanPanel\n title=\"Trace details\"\n size={panelSize}\n traceId={traceId}\n spans={spans}\n anchorSpanId={anchorSpanId}\n entityType={entityType}\n usage={usage}\n rootStreamingTimings={listedRow}\n isLoadingSpans={isLoadingSpans}\n selectedSpanId={spanId ?? null}\n onClose={() => {\n setFullThreadTraceId(null);\n closeTrace();\n }}\n isFullThreadOpen={isFullThreadOpen}\n withQueryTrace={withQueryTrace}\n withFeedback={withFeedback}\n onOpenScore={onOpenScore}\n onFullThreadOpenChange={open => setFullThreadTraceId(open ? (traceId ?? null) : null)}\n onSpanSelect={id => selectSpan(id ?? null)}\n onSaveAsDatasetItem={withAddTraceToDataset ? setDatasetDialogTarget : undefined}\n initialSpanId={spanId}\n onPrevious={handlePreviousTrace}\n onNext={handleNextTrace}\n showPartialThread\n featuredSpanIds={selection.highlightSpanIds}\n onHighlightSpans={highlightSpans}\n feedbackTabBadge={withFeedback ? (traceFeedbackData?.pagination?.total ?? undefined) : undefined}\n feedbackTabSlot={withFeedback ? ({ traceId: tid }) => <TraceFeedbackTab traceId={tid} /> : undefined}\n scoresTabBadge={spanScoresData?.pagination?.total ?? undefined}\n scoresTabSlot={({ traceId: tid, rootSpanId }) =>\n rootSpanId ? <TraceScoresList traceId={tid} spanId={rootSpanId} onScoreSelect={selectScore} /> : null\n }\n spanView={selection.spanView}\n onSpanViewChange={setSpanView}\n spanActiveTab={selection.spanTab ?? 'details'}\n onSpanTabChange={setSpanTab}\n spanFeedbackTabBadge={withFeedback ? (spanFeedbackData?.pagination?.total ?? undefined) : undefined}\n spanFeedbackTabSlot={\n withFeedback\n ? ({ traceId: tid, spanId: sid }) =>\n tid && sid ? <SpanFeedbackTab key={`${tid}:${sid}`} traceId={tid} spanId={sid} /> : null\n : undefined\n }\n headerActionsSlot={traceId && headerActionsSlot ? headerActionsSlot({ traceId, spans }) : undefined}\n traceHref={traceId && traceHref ? traceHref(traceId) : undefined}\n />\n <ScoreDataPanel depth={depth} score={featuredScore} onClose={() => selectScore(null)} />\n {withAddTraceToDataset && (\n <TraceAsItemDialog\n rootSpanId={datasetDialogTarget?.rootSpanId}\n traceId={datasetDialogTarget?.traceId}\n isOpen={!!datasetDialogTarget}\n onClose={() => setDatasetDialogTarget(null)}\n renderCreateDatasetDialog={renderCreateDatasetDialog}\n />\n )}\n </>\n );\n}\n"],"mappings":"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"}
|
|
@@ -53,7 +53,8 @@ function TracesExplorerPanel({ onOpenScore, renderCreateDatasetDialog, headerAct
|
|
|
53
53
|
const { handlePreviousTrace, handleNextTrace } = useTraceListNavigation(rows, traceId, null, selectTrace);
|
|
54
54
|
const isFullThreadOpen = !!traceId && fullThreadTraceId === traceId;
|
|
55
55
|
const depth = isFullThreadOpen ? 3 : 2;
|
|
56
|
-
const
|
|
56
|
+
const listedRow = rows.find((row) => row.traceId === traceId);
|
|
57
|
+
const entityType = listedRow?.entityType ?? anchorSpan?.entityType;
|
|
57
58
|
const isAgent = entityType === EntityType.AGENT;
|
|
58
59
|
return /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
59
60
|
/* @__PURE__ */ jsx(TraceSpanPanel, {
|
|
@@ -64,6 +65,7 @@ function TracesExplorerPanel({ onOpenScore, renderCreateDatasetDialog, headerAct
|
|
|
64
65
|
anchorSpanId,
|
|
65
66
|
entityType,
|
|
66
67
|
usage,
|
|
68
|
+
rootStreamingTimings: listedRow,
|
|
67
69
|
isLoadingSpans,
|
|
68
70
|
selectedSpanId: spanId ?? null,
|
|
69
71
|
onClose: () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traces-explorer-panel.es.js","names":["_Fragment"],"sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-panel.tsx"],"sourcesContent":["import { EntityType } from '@mastra/core/observability';\nimport { useTraceSpanScores } from '@mastra/react/hooks/scores';\nimport { useSpanFeedback, useTraceFeedback, useTraceOrBranchSpans, useTraceUsage } from '@mastra/react/hooks/traces';\nimport { useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { useTraceListNavigation } from '../../hooks/use-trace-list-navigation';\nimport { SpanFeedbackTab } from '../span-feedback-tab';\nimport { TraceFeedbackTab } from '../trace-feedback-tab';\nimport { TraceSpanPanel } from '../trace-span-panel';\nimport type { TraceSpanPanelProps } from '../trace-span-panel';\nimport { useTraceUsageColumns, useTracesConfig, useTracesList, useTracesSelection } from './traces-explorer-context';\nimport { TraceAsItemDialog } from '@/domains/observability/components/trace-as-item-dialog';\nimport { ScoreDataPanel, TraceScoresList } from '@/domains/scores';\n\nexport type TracesExplorerPanelProps = {\n /** Opens a score of one of the full thread's traces (the host owns routing). */\n onOpenScore: (traceId: string, scoreId: string) => void;\n renderCreateDatasetDialog?: ComponentProps<typeof TraceAsItemDialog>['renderCreateDatasetDialog'];\n /** Host integration actions rendered alongside the trace controls. */\n headerActionsSlot?: (args: { traceId: string; spans: TraceSpanPanelProps['spans'] }) => ReactNode;\n /** Builds the href of the dedicated trace page; without it the drawer offers no \"Open trace page\" link. */\n traceHref?: (traceId: string) => string;\n /** Shows the \"Add to dataset\" button next to \"Score trace\". Defaults to `true`. */\n withAddTraceToDataset?: boolean;\n};\n\ntype DatasetDialogTarget = { traceId: string; rootSpanId: string | undefined };\n\nexport function TracesExplorerPanel({\n onOpenScore,\n renderCreateDatasetDialog,\n headerActionsSlot,\n traceHref,\n withAddTraceToDataset = true,\n}: TracesExplorerPanelProps) {\n const { withQueryTrace, withFeedback } = useTracesConfig();\n const { rows, autoRefetch, isLoading: isListLoading } = useTracesList();\n const { selection, selectTrace, closeTrace, selectSpan, setSpanTab, setSpanView, selectScore, highlightSpans } =\n useTracesSelection();\n const { usageEnabled } = useTraceUsageColumns();\n const traceId = selection.traceId;\n const spanId = selection.spanId;\n\n const [datasetDialogTarget, setDatasetDialogTarget] = useState<DatasetDialogTarget | null>(null);\n // Keyed by trace id so selecting another trace (row click, prev/next) falls back to the trace panel.\n const [fullThreadTraceId, setFullThreadTraceId] = useState<string | null>(null);\n\n // Tab badge counts; the tab bodies re-use these first-page queries through React Query's cache.\n const { data: traceFeedbackData } = useTraceFeedback({\n traceId,\n queryOptions: { enabled: withFeedback && !!traceId },\n });\n const { data: spanFeedbackData } = useSpanFeedback({\n traceId,\n spanId,\n queryOptions: { enabled: withFeedback && !!traceId && !!spanId },\n });\n\n const {\n spans,\n anchorSpanId,\n isLoading: isLoadingSpans,\n } = useTraceOrBranchSpans({ traceId: traceId ?? null, listMode: 'traces', anchorSpanId: null });\n const anchorSpan = anchorSpanId\n ? spans?.find(s => s.spanId === anchorSpanId)\n : spans?.find(s => s.parentSpanId == null);\n\n const { data: spanScoresData } = useTraceSpanScores({\n traceId,\n spanId: anchorSpan?.spanId,\n queryOptions: { enabled: !!traceId && !!anchorSpan?.spanId },\n });\n const featuredScore = selection.scoreId\n ? spanScoresData?.scores?.find(score => score.id === selection.scoreId)\n : undefined;\n\n // Same key as the list's usage query when the trace is listed, so React Query serves it from cache.\n // Waits for the list so a deep-linked trace doesn't fetch its own usage before the rows arrive.\n const rowIds = rows.map(row => row.traceId);\n const isListed = !!traceId && rowIds.includes(traceId);\n const { data: usageByTraceId } = useTraceUsage({\n traceIds: isListed ? rowIds : traceId ? [traceId] : [],\n enabled: usageEnabled && !isListLoading,\n autoRefetch,\n });\n const usage = traceId ? usageByTraceId?.get(traceId) : undefined;\n\n const { handlePreviousTrace, handleNextTrace } = useTraceListNavigation(rows, traceId, null, selectTrace);\n\n const isFullThreadOpen = !!traceId && fullThreadTraceId === traceId;\n const depth = isFullThreadOpen ? 3 : 2;\n\n // Only agent traces carry the Messages column, so other traces open the drawer one size\n // smaller, with or without a span open. The listed row knows the entity on click; the root\n // span covers deep-linked traces outside the list.\n const entityType = rows.find(row => row.traceId === traceId)?.entityType ?? anchorSpan?.entityType;\n const isAgent = entityType === EntityType.AGENT;\n const panelSize = spanId ? (isAgent ? 'full' : 'wide') : isAgent ? 'wide' : 'half';\n\n return (\n <>\n <TraceSpanPanel\n title=\"Trace details\"\n size={panelSize}\n traceId={traceId}\n spans={spans}\n anchorSpanId={anchorSpanId}\n entityType={entityType}\n usage={usage}\n isLoadingSpans={isLoadingSpans}\n selectedSpanId={spanId ?? null}\n onClose={() => {\n setFullThreadTraceId(null);\n closeTrace();\n }}\n isFullThreadOpen={isFullThreadOpen}\n withQueryTrace={withQueryTrace}\n withFeedback={withFeedback}\n onOpenScore={onOpenScore}\n onFullThreadOpenChange={open => setFullThreadTraceId(open ? (traceId ?? null) : null)}\n onSpanSelect={id => selectSpan(id ?? null)}\n onSaveAsDatasetItem={withAddTraceToDataset ? setDatasetDialogTarget : undefined}\n initialSpanId={spanId}\n onPrevious={handlePreviousTrace}\n onNext={handleNextTrace}\n showPartialThread\n featuredSpanIds={selection.highlightSpanIds}\n onHighlightSpans={highlightSpans}\n feedbackTabBadge={withFeedback ? (traceFeedbackData?.pagination?.total ?? undefined) : undefined}\n feedbackTabSlot={withFeedback ? ({ traceId: tid }) => <TraceFeedbackTab traceId={tid} /> : undefined}\n scoresTabBadge={spanScoresData?.pagination?.total ?? undefined}\n scoresTabSlot={({ traceId: tid, rootSpanId }) =>\n rootSpanId ? <TraceScoresList traceId={tid} spanId={rootSpanId} onScoreSelect={selectScore} /> : null\n }\n spanView={selection.spanView}\n onSpanViewChange={setSpanView}\n spanActiveTab={selection.spanTab ?? 'details'}\n onSpanTabChange={setSpanTab}\n spanFeedbackTabBadge={withFeedback ? (spanFeedbackData?.pagination?.total ?? undefined) : undefined}\n spanFeedbackTabSlot={\n withFeedback\n ? ({ traceId: tid, spanId: sid }) =>\n tid && sid ? <SpanFeedbackTab key={`${tid}:${sid}`} traceId={tid} spanId={sid} /> : null\n : undefined\n }\n headerActionsSlot={traceId && headerActionsSlot ? headerActionsSlot({ traceId, spans }) : undefined}\n traceHref={traceId && traceHref ? traceHref(traceId) : undefined}\n />\n <ScoreDataPanel depth={depth} score={featuredScore} onClose={() => selectScore(null)} />\n {withAddTraceToDataset && (\n <TraceAsItemDialog\n rootSpanId={datasetDialogTarget?.rootSpanId}\n traceId={datasetDialogTarget?.traceId}\n isOpen={!!datasetDialogTarget}\n onClose={() => setDatasetDialogTarget(null)}\n renderCreateDatasetDialog={renderCreateDatasetDialog}\n />\n )}\n </>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"traces-explorer-panel.es.js","names":["_Fragment"],"sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-panel.tsx"],"sourcesContent":["import { EntityType } from '@mastra/core/observability';\nimport { useTraceSpanScores } from '@mastra/react/hooks/scores';\nimport { useSpanFeedback, useTraceFeedback, useTraceOrBranchSpans, useTraceUsage } from '@mastra/react/hooks/traces';\nimport { useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { useTraceListNavigation } from '../../hooks/use-trace-list-navigation';\nimport { SpanFeedbackTab } from '../span-feedback-tab';\nimport { TraceFeedbackTab } from '../trace-feedback-tab';\nimport { TraceSpanPanel } from '../trace-span-panel';\nimport type { TraceSpanPanelProps } from '../trace-span-panel';\nimport { useTraceUsageColumns, useTracesConfig, useTracesList, useTracesSelection } from './traces-explorer-context';\nimport { TraceAsItemDialog } from '@/domains/observability/components/trace-as-item-dialog';\nimport { ScoreDataPanel, TraceScoresList } from '@/domains/scores';\n\nexport type TracesExplorerPanelProps = {\n /** Opens a score of one of the full thread's traces (the host owns routing). */\n onOpenScore: (traceId: string, scoreId: string) => void;\n renderCreateDatasetDialog?: ComponentProps<typeof TraceAsItemDialog>['renderCreateDatasetDialog'];\n /** Host integration actions rendered alongside the trace controls. */\n headerActionsSlot?: (args: { traceId: string; spans: TraceSpanPanelProps['spans'] }) => ReactNode;\n /** Builds the href of the dedicated trace page; without it the drawer offers no \"Open trace page\" link. */\n traceHref?: (traceId: string) => string;\n /** Shows the \"Add to dataset\" button next to \"Score trace\". Defaults to `true`. */\n withAddTraceToDataset?: boolean;\n};\n\ntype DatasetDialogTarget = { traceId: string; rootSpanId: string | undefined };\n\nexport function TracesExplorerPanel({\n onOpenScore,\n renderCreateDatasetDialog,\n headerActionsSlot,\n traceHref,\n withAddTraceToDataset = true,\n}: TracesExplorerPanelProps) {\n const { withQueryTrace, withFeedback } = useTracesConfig();\n const { rows, autoRefetch, isLoading: isListLoading } = useTracesList();\n const { selection, selectTrace, closeTrace, selectSpan, setSpanTab, setSpanView, selectScore, highlightSpans } =\n useTracesSelection();\n const { usageEnabled } = useTraceUsageColumns();\n const traceId = selection.traceId;\n const spanId = selection.spanId;\n\n const [datasetDialogTarget, setDatasetDialogTarget] = useState<DatasetDialogTarget | null>(null);\n // Keyed by trace id so selecting another trace (row click, prev/next) falls back to the trace panel.\n const [fullThreadTraceId, setFullThreadTraceId] = useState<string | null>(null);\n\n // Tab badge counts; the tab bodies re-use these first-page queries through React Query's cache.\n const { data: traceFeedbackData } = useTraceFeedback({\n traceId,\n queryOptions: { enabled: withFeedback && !!traceId },\n });\n const { data: spanFeedbackData } = useSpanFeedback({\n traceId,\n spanId,\n queryOptions: { enabled: withFeedback && !!traceId && !!spanId },\n });\n\n const {\n spans,\n anchorSpanId,\n isLoading: isLoadingSpans,\n } = useTraceOrBranchSpans({ traceId: traceId ?? null, listMode: 'traces', anchorSpanId: null });\n const anchorSpan = anchorSpanId\n ? spans?.find(s => s.spanId === anchorSpanId)\n : spans?.find(s => s.parentSpanId == null);\n\n const { data: spanScoresData } = useTraceSpanScores({\n traceId,\n spanId: anchorSpan?.spanId,\n queryOptions: { enabled: !!traceId && !!anchorSpan?.spanId },\n });\n const featuredScore = selection.scoreId\n ? spanScoresData?.scores?.find(score => score.id === selection.scoreId)\n : undefined;\n\n // Same key as the list's usage query when the trace is listed, so React Query serves it from cache.\n // Waits for the list so a deep-linked trace doesn't fetch its own usage before the rows arrive.\n const rowIds = rows.map(row => row.traceId);\n const isListed = !!traceId && rowIds.includes(traceId);\n const { data: usageByTraceId } = useTraceUsage({\n traceIds: isListed ? rowIds : traceId ? [traceId] : [],\n enabled: usageEnabled && !isListLoading,\n autoRefetch,\n });\n const usage = traceId ? usageByTraceId?.get(traceId) : undefined;\n\n const { handlePreviousTrace, handleNextTrace } = useTraceListNavigation(rows, traceId, null, selectTrace);\n\n const isFullThreadOpen = !!traceId && fullThreadTraceId === traceId;\n const depth = isFullThreadOpen ? 3 : 2;\n\n // Only agent traces carry the Messages column, so other traces open the drawer one size\n // smaller, with or without a span open. The listed row knows the entity on click; the root\n // span covers deep-linked traces outside the list.\n const listedRow = rows.find(row => row.traceId === traceId);\n const entityType = listedRow?.entityType ?? anchorSpan?.entityType;\n const isAgent = entityType === EntityType.AGENT;\n const panelSize = spanId ? (isAgent ? 'full' : 'wide') : isAgent ? 'wide' : 'half';\n\n return (\n <>\n <TraceSpanPanel\n title=\"Trace details\"\n size={panelSize}\n traceId={traceId}\n spans={spans}\n anchorSpanId={anchorSpanId}\n entityType={entityType}\n usage={usage}\n rootStreamingTimings={listedRow}\n isLoadingSpans={isLoadingSpans}\n selectedSpanId={spanId ?? null}\n onClose={() => {\n setFullThreadTraceId(null);\n closeTrace();\n }}\n isFullThreadOpen={isFullThreadOpen}\n withQueryTrace={withQueryTrace}\n withFeedback={withFeedback}\n onOpenScore={onOpenScore}\n onFullThreadOpenChange={open => setFullThreadTraceId(open ? (traceId ?? null) : null)}\n onSpanSelect={id => selectSpan(id ?? null)}\n onSaveAsDatasetItem={withAddTraceToDataset ? setDatasetDialogTarget : undefined}\n initialSpanId={spanId}\n onPrevious={handlePreviousTrace}\n onNext={handleNextTrace}\n showPartialThread\n featuredSpanIds={selection.highlightSpanIds}\n onHighlightSpans={highlightSpans}\n feedbackTabBadge={withFeedback ? (traceFeedbackData?.pagination?.total ?? undefined) : undefined}\n feedbackTabSlot={withFeedback ? ({ traceId: tid }) => <TraceFeedbackTab traceId={tid} /> : undefined}\n scoresTabBadge={spanScoresData?.pagination?.total ?? undefined}\n scoresTabSlot={({ traceId: tid, rootSpanId }) =>\n rootSpanId ? <TraceScoresList traceId={tid} spanId={rootSpanId} onScoreSelect={selectScore} /> : null\n }\n spanView={selection.spanView}\n onSpanViewChange={setSpanView}\n spanActiveTab={selection.spanTab ?? 'details'}\n onSpanTabChange={setSpanTab}\n spanFeedbackTabBadge={withFeedback ? (spanFeedbackData?.pagination?.total ?? undefined) : undefined}\n spanFeedbackTabSlot={\n withFeedback\n ? ({ traceId: tid, spanId: sid }) =>\n tid && sid ? <SpanFeedbackTab key={`${tid}:${sid}`} traceId={tid} spanId={sid} /> : null\n : undefined\n }\n headerActionsSlot={traceId && headerActionsSlot ? headerActionsSlot({ traceId, spans }) : undefined}\n traceHref={traceId && traceHref ? traceHref(traceId) : undefined}\n />\n <ScoreDataPanel depth={depth} score={featuredScore} onClose={() => selectScore(null)} />\n {withAddTraceToDataset && (\n <TraceAsItemDialog\n rootSpanId={datasetDialogTarget?.rootSpanId}\n traceId={datasetDialogTarget?.traceId}\n isOpen={!!datasetDialogTarget}\n onClose={() => setDatasetDialogTarget(null)}\n renderCreateDatasetDialog={renderCreateDatasetDialog}\n />\n )}\n </>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_trace_filters = require("../../../../trace-filters-
|
|
2
|
+
const require_trace_filters = require("../../../../trace-filters-BNEZ31HX.cjs");
|
|
3
3
|
const require_domains_traces_components_traces_explorer_traces_explorer_actions = require("./traces-explorer-actions.cjs.js");
|
|
4
|
+
const require_domains_observability_lib_zoom_memory = require("../../../observability/lib/zoom-memory.cjs.js");
|
|
4
5
|
const require_domains_traces_components_traces_explorer_traces_explorer_context = require("./traces-explorer-context.cjs.js");
|
|
5
6
|
const require_domains_traces_components_traces_explorer_traces_explorer_columns_provider = require("./traces-explorer-columns-provider.cjs.js");
|
|
6
7
|
const require_domains_traces_components_traces_explorer_traces_explorer_list_provider = require("./traces-explorer-list-provider.cjs.js");
|
|
@@ -30,7 +31,21 @@ function TracesExplorerRoot({ selection, filters: rawFilters, onChange, sort, on
|
|
|
30
31
|
const { data: capabilities } = (0, _mastra_react_hooks_capabilities.useObservabilityCapabilities)();
|
|
31
32
|
const withTimeToFirstChunk = withQueryTrace && (capabilities?.capabilities.traceQueryTimeToFirstChunk ?? false);
|
|
32
33
|
const withTimeToFirstChunkSort = withTimeToFirstChunk && (capabilities?.capabilities.traceQueryTimeToFirstChunkSort ?? false);
|
|
33
|
-
const
|
|
34
|
+
const withTimeToFirstToken = withQueryTrace && (capabilities?.capabilities.traceQueryTimeToFirstToken ?? false);
|
|
35
|
+
const withTimeToFirstTokenSort = withTimeToFirstToken && (capabilities?.capabilities.traceQueryTimeToFirstTokenSort ?? false);
|
|
36
|
+
const withOutcomeFields = withQueryTrace && (capabilities?.capabilities.traceQueryOutcomeFields ?? false);
|
|
37
|
+
const filters = (0, react.useMemo)(() => require_domains_traces_components_traces_explorer_traces_explorer_actions.sanitizeTracesFilters(rawFilters, {
|
|
38
|
+
withRootDuration,
|
|
39
|
+
withTimeToFirstChunk,
|
|
40
|
+
withTimeToFirstToken,
|
|
41
|
+
withOutcomeFields
|
|
42
|
+
}), [
|
|
43
|
+
rawFilters,
|
|
44
|
+
withRootDuration,
|
|
45
|
+
withTimeToFirstChunk,
|
|
46
|
+
withTimeToFirstToken,
|
|
47
|
+
withOutcomeFields
|
|
48
|
+
]);
|
|
34
49
|
const isScoped = !!scope;
|
|
35
50
|
const scopedFieldIds = isScoped ? SCOPED_FIELD_IDS : NO_FIELD_IDS;
|
|
36
51
|
const hiddenFieldIds = isScoped ? HIDDEN_SCOPED_FIELD_IDS : NO_HIDDEN_FIELD_IDS;
|
|
@@ -50,6 +65,7 @@ function TracesExplorerRoot({ selection, filters: rawFilters, onChange, sort, on
|
|
|
50
65
|
};
|
|
51
66
|
const latest = (0, react.useRef)(current);
|
|
52
67
|
latest.current = current;
|
|
68
|
+
const zoomMemory = (0, react.useRef)(void 0);
|
|
53
69
|
const { selectionActions, filtersActions, onSortChange } = (0, react.useMemo)(() => {
|
|
54
70
|
const emit = (next) => {
|
|
55
71
|
latest.current.selection = next.selection;
|
|
@@ -80,15 +96,39 @@ function TracesExplorerRoot({ selection, filters: rawFilters, onChange, sort, on
|
|
|
80
96
|
selectScore: (scoreId) => updateSelection(require_domains_traces_components_traces_explorer_traces_explorer_actions.selectScore(latest.current.selection, scoreId)),
|
|
81
97
|
highlightSpans: (spanIds) => updateSelection(require_domains_traces_components_traces_explorer_traces_explorer_actions.highlightSpans(latest.current.selection, spanIds))
|
|
82
98
|
};
|
|
99
|
+
const pickRange = (next) => {
|
|
100
|
+
zoomMemory.current = void 0;
|
|
101
|
+
updateFilters(next);
|
|
102
|
+
};
|
|
83
103
|
const filtersActions = {
|
|
84
104
|
setFilterTokens: (tokens, groups) => {
|
|
85
105
|
const { filters: base, scopedFieldIds: scoped } = latest.current;
|
|
86
106
|
const scopeTokens = base.tokens.filter((token) => scoped.has(token.fieldId));
|
|
87
107
|
updateFilters(require_domains_traces_components_traces_explorer_traces_explorer_actions.applyFilterTokens(base, [...scopeTokens, ...tokens], groups));
|
|
88
108
|
},
|
|
89
|
-
setDatePreset: (preset) =>
|
|
90
|
-
setDate: (value, end) =>
|
|
91
|
-
setDateRange: (from, to) =>
|
|
109
|
+
setDatePreset: (preset) => pickRange(require_domains_traces_components_traces_explorer_traces_explorer_actions.applyDatePreset(latest.current.filters, preset)),
|
|
110
|
+
setDate: (value, end) => pickRange(require_domains_traces_components_traces_explorer_traces_explorer_actions.applyDate(latest.current.filters, value, end)),
|
|
111
|
+
setDateRange: (from, to) => pickRange(require_domains_traces_components_traces_explorer_traces_explorer_actions.applyDateRange(latest.current.filters, from, to)),
|
|
112
|
+
zoomDateRange: (from, to) => {
|
|
113
|
+
const base = latest.current.filters;
|
|
114
|
+
zoomMemory.current = require_domains_observability_lib_zoom_memory.rememberZoom(zoomMemory.current, base, from, to);
|
|
115
|
+
updateFilters({
|
|
116
|
+
...base,
|
|
117
|
+
datePreset: "custom",
|
|
118
|
+
dateFrom: from,
|
|
119
|
+
dateTo: to
|
|
120
|
+
});
|
|
121
|
+
},
|
|
122
|
+
resetDateRange: (defaultPreset) => {
|
|
123
|
+
const base = latest.current.filters;
|
|
124
|
+
const before = require_domains_observability_lib_zoom_memory.rangeBeforeZoom(zoomMemory.current, base);
|
|
125
|
+
zoomMemory.current = void 0;
|
|
126
|
+
updateFilters({
|
|
127
|
+
tokens: base.tokens,
|
|
128
|
+
groups: base.groups,
|
|
129
|
+
...before ?? { datePreset: defaultPreset }
|
|
130
|
+
});
|
|
131
|
+
}
|
|
92
132
|
};
|
|
93
133
|
const onSortChange = (next) => latest.current.onSortChange(next);
|
|
94
134
|
return {
|
|
@@ -113,8 +153,11 @@ function TracesExplorerRoot({ selection, filters: rawFilters, onChange, sort, on
|
|
|
113
153
|
withSpanQuery,
|
|
114
154
|
withThreadQuery,
|
|
115
155
|
withRootDuration,
|
|
156
|
+
withOutcomeFields,
|
|
116
157
|
withTimeToFirstChunk,
|
|
117
158
|
withTimeToFirstChunkSort,
|
|
159
|
+
withTimeToFirstToken,
|
|
160
|
+
withTimeToFirstTokenSort,
|
|
118
161
|
withDeltaPolling,
|
|
119
162
|
withDiscovery,
|
|
120
163
|
isCapabilitiesLoading: traceQuery.isLoading,
|
|
@@ -129,8 +172,11 @@ function TracesExplorerRoot({ selection, filters: rawFilters, onChange, sort, on
|
|
|
129
172
|
withSpanQuery,
|
|
130
173
|
withThreadQuery,
|
|
131
174
|
withRootDuration,
|
|
175
|
+
withOutcomeFields,
|
|
132
176
|
withTimeToFirstChunk,
|
|
133
177
|
withTimeToFirstChunkSort,
|
|
178
|
+
withTimeToFirstToken,
|
|
179
|
+
withTimeToFirstTokenSort,
|
|
134
180
|
withDeltaPolling,
|
|
135
181
|
withDiscovery,
|
|
136
182
|
traceQuery.isLoading,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traces-explorer-root.cjs.js","names":["EntityType","DEFAULT_TRACES_FILTERS","useTraceQueryAvailable","useFeedbackAvailable","useSpanQueryAvailable","useThreadQueryAvailable","useTraceQueryRootDurationAvailable","useTraceQueryDeltaPollingAvailable","useTraceQueryDiscoveryAvailable","useObservabilityCapabilities","useMemo","sanitizeTracesFilters","resolveTracesDateWindow","useRef","isSelectionEmpty","clearSelection","selectTrace","selectSpan","setSpanTab","setSpanView","selectScore","highlightSpans","applyFilterTokens","applyDatePreset","applyDate","applyDateRange","useState","resolveTraceQueryTimeRange","selectsRunningStatus","TracesConfigContext","TracesFiltersContext","TracesSelectionContext","TracesColumnsProvider","TracesListProvider"],"sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-root.tsx"],"sourcesContent":["import { EntityType } from '@mastra/core/observability';\nimport { useMemo, useRef, useState } from 'react';\nimport type { ReactNode } from 'react';\nimport { resolveTraceQueryTimeRange } from '../../trace-query-filters';\nimport {\n applyDate,\n applyDatePreset,\n applyDateRange,\n applyFilterTokens,\n clearSelection,\n DEFAULT_TRACES_FILTERS,\n highlightSpans,\n isSelectionEmpty,\n resolveTracesDateWindow,\n sanitizeTracesFilters,\n selectsRunningStatus,\n selectScore,\n selectSpan,\n selectTrace,\n setSpanTab,\n setSpanView,\n} from './traces-explorer-actions';\nimport type { TracesExplorerState, TracesFilters, TracesSelection, TracesSort } from './traces-explorer-actions';\nimport { TracesColumnsProvider } from './traces-explorer-columns-provider';\nimport { TracesConfigContext, TracesFiltersContext, TracesSelectionContext } from './traces-explorer-context';\nimport type {\n TracesConfigContextValue,\n TracesExplorerFeatures,\n TracesExplorerScope,\n TracesFiltersActions,\n TracesFiltersContextValue,\n TracesMetricsSupport,\n TracesSelectionActions,\n TracesSelectionContextValue,\n} from './traces-explorer-context';\nimport { TracesListProvider } from './traces-explorer-list-provider';\nimport {\n useFeedbackAvailable,\n useObservabilityCapabilities,\n useSpanQueryAvailable,\n useThreadQueryAvailable,\n useTraceQueryAvailable,\n useTraceQueryDeltaPollingAvailable,\n useTraceQueryDiscoveryAvailable,\n useTraceQueryRootDurationAvailable,\n} from '@/domains/capabilities';\n\nexport type TracesExplorerRootProps = {\n selection: TracesSelection;\n filters: TracesFilters;\n /** Receives the full next state once per user action, so a filter edit and the selection it clears land together. */\n onChange: (next: TracesExplorerState) => void;\n sort: TracesSort;\n onSortChange: (next: TracesSort) => void;\n /** Pins the explorer to one entity: its fields stay in the filters but never surface as chips. */\n scope?: TracesExplorerScope;\n /** Resolved by the host, which may know better than the storage capabilities (e.g. hosted deployments). */\n metricsSupport: TracesMetricsSupport;\n /** Host switches combined with the server capabilities; a feature runs only when both allow it. */\n features?: TracesExplorerFeatures;\n /** The host's default filters. Filters matching them don't count as applied (e.g. in empty states). */\n initialFilters?: TracesFilters;\n children: ReactNode;\n};\n\nconst SCOPED_FIELD_IDS: ReadonlySet<string> = new Set(['rootEntityType', 'entityId']);\nconst HIDDEN_SCOPED_FIELD_IDS: readonly string[] = ['rootEntityType', 'entityId', 'entityName'];\nconst NO_FIELD_IDS: ReadonlySet<string> = new Set();\nconst NO_HIDDEN_FIELD_IDS: readonly string[] = [];\n\nconst listIdForScope = (scope?: TracesExplorerScope) =>\n scope?.entityType === EntityType.AGENT\n ? 'agent-traces'\n : scope?.entityType === EntityType.WORKFLOW_RUN\n ? 'workflows-traces'\n : 'all-traces';\n\ntype Latest = Pick<TracesExplorerRootProps, 'selection' | 'filters' | 'onChange' | 'onSortChange'> & {\n scopedFieldIds: ReadonlySet<string>;\n};\n\nexport function TracesExplorerRoot({\n selection,\n filters: rawFilters,\n onChange,\n sort,\n onSortChange: onHostSortChange,\n scope,\n metricsSupport,\n features,\n initialFilters = DEFAULT_TRACES_FILTERS,\n children,\n}: TracesExplorerRootProps) {\n // Servers without the trace-query API list through `listTracesLight` and don't expose feedback.\n const traceQuery = useTraceQueryAvailable();\n const withQueryTrace = traceQuery.enabled && features?.traceQuery !== false;\n const withFeedback = useFeedbackAvailable().enabled && features?.feedback !== false;\n // Opt-in: span queries need both the server capability and the host turning them on.\n const withSpanQuery = useSpanQueryAvailable().enabled && features?.spanQuery === true;\n // Opt-in like span queries: thread rows need the server capability and the host turning them on.\n const withThreadQuery = useThreadQueryAvailable().enabled && features?.threadQuery === true;\n const { enabled: withRootDuration } = useTraceQueryRootDurationAvailable();\n const { enabled: withDeltaPolling } = useTraceQueryDeltaPollingAvailable();\n const withDiscovery = useTraceQueryDiscoveryAvailable().enabled && withQueryTrace;\n // `listTracesLight` rows never carry it, so it needs the trace query API as well.\n const { data: capabilities } = useObservabilityCapabilities();\n const withTimeToFirstChunk = withQueryTrace && (capabilities?.capabilities.traceQueryTimeToFirstChunk ?? false);\n const withTimeToFirstChunkSort =\n withTimeToFirstChunk && (capabilities?.capabilities.traceQueryTimeToFirstChunkSort ?? false);\n\n // Entries the server can't query are ignored, never written back: the host keeps its raw value.\n const filters = useMemo(() => sanitizeTracesFilters(rawFilters, withRootDuration), [rawFilters, withRootDuration]);\n\n const isScoped = !!scope;\n const scopedFieldIds = isScoped ? SCOPED_FIELD_IDS : NO_FIELD_IDS;\n const hiddenFieldIds = isScoped ? HIDDEN_SCOPED_FIELD_IDS : NO_HIDDEN_FIELD_IDS;\n\n // Rolling presets pin their start when the preset (or custom bound) changes, not on every render.\n const fromMs = rawFilters.dateFrom?.getTime();\n const toMs = rawFilters.dateTo?.getTime();\n const { dateFrom, dateTo } = useMemo(\n () =>\n resolveTracesDateWindow(\n rawFilters.datePreset,\n fromMs === undefined ? undefined : new Date(fromMs),\n toMs === undefined ? undefined : new Date(toMs),\n ),\n [rawFilters.datePreset, fromMs, toMs],\n );\n\n // Actions read the latest props when they run, so the host doesn't need stable callbacks.\n // `latest` is written as soon as a change is emitted, so a second action in the same tick\n // (the date picker fires a preset then its dates) builds on the first instead of the stale props.\n const current: Latest = { selection, filters: rawFilters, onChange, onSortChange: onHostSortChange, scopedFieldIds };\n const latest = useRef(current);\n latest.current = current;\n\n const actions = useMemo(() => {\n const emit = (next: TracesExplorerState) => {\n latest.current.selection = next.selection;\n latest.current.filters = next.filters;\n latest.current.onChange(next);\n };\n const updateSelection = (next: TracesSelection) => {\n if (next === latest.current.selection) return;\n emit({ selection: next, filters: latest.current.filters });\n };\n // A filter change invalidates whatever is selected: the selected row may no longer be listed.\n const updateFilters = (next: TracesFilters) => {\n const { selection: currentSelection, filters: currentFilters } = latest.current;\n if (next === currentFilters) return;\n emit({\n filters: next,\n selection: isSelectionEmpty(currentSelection) ? currentSelection : clearSelection(currentSelection),\n });\n };\n\n const selectionActions: TracesSelectionActions = {\n selectTrace: traceId => updateSelection(selectTrace(latest.current.selection, traceId)),\n closeTrace: () => updateSelection(selectTrace(latest.current.selection, null)),\n selectSpan: spanId => updateSelection(selectSpan(latest.current.selection, spanId)),\n setSpanTab: tab => updateSelection(setSpanTab(latest.current.selection, tab)),\n setSpanView: view => updateSelection(setSpanView(latest.current.selection, view)),\n selectScore: scoreId => updateSelection(selectScore(latest.current.selection, scoreId)),\n highlightSpans: spanIds => updateSelection(highlightSpans(latest.current.selection, spanIds)),\n };\n const filtersActions: TracesFiltersActions = {\n // Re-inject the scope tokens so \"Clear filters\" (which drops every removable item) and any\n // other edit can never drop the scope.\n setFilterTokens: (tokens, groups) => {\n const { filters: base, scopedFieldIds: scoped } = latest.current;\n const scopeTokens = base.tokens.filter(token => scoped.has(token.fieldId));\n updateFilters(applyFilterTokens(base, [...scopeTokens, ...tokens], groups));\n },\n setDatePreset: preset => updateFilters(applyDatePreset(latest.current.filters, preset)),\n setDate: (value, end) => updateFilters(applyDate(latest.current.filters, value, end)),\n setDateRange: (from, to) => updateFilters(applyDateRange(latest.current.filters, from, to)),\n };\n const onSortChange = (next: TracesSort) => latest.current.onSortChange(next);\n return { selectionActions, filtersActions, onSortChange };\n }, []);\n const { selectionActions, filtersActions, onSortChange } = actions;\n\n // Discovery is keyed off the date window with a mount-time `now`, not the list's rolling one,\n // so its query key (and the skeleton) doesn't churn on every auto-refresh tick.\n const [discoveryNow] = useState(() => new Date());\n const discoveryTimeRange = useMemo(\n () => resolveTraceQueryTimeRange(dateFrom, dateTo, discoveryNow),\n [dateFrom, dateTo, discoveryNow],\n );\n\n const listId = listIdForScope(scope);\n const configValue = useMemo<TracesConfigContextValue>(\n () => ({\n listId,\n scopedFieldIds,\n hiddenFieldIds,\n withQueryTrace,\n withFeedback,\n withSpanQuery,\n withThreadQuery,\n withRootDuration,\n withTimeToFirstChunk,\n withTimeToFirstChunkSort,\n withDeltaPolling,\n withDiscovery,\n isCapabilitiesLoading: traceQuery.isLoading,\n metricsSupport,\n discoveryTimeRange,\n }),\n [\n listId,\n scopedFieldIds,\n hiddenFieldIds,\n withQueryTrace,\n withFeedback,\n withSpanQuery,\n withThreadQuery,\n withRootDuration,\n withTimeToFirstChunk,\n withTimeToFirstChunkSort,\n withDeltaPolling,\n withDiscovery,\n traceQuery.isLoading,\n metricsSupport,\n discoveryTimeRange,\n ],\n );\n\n const contentFiltersApplied = filters.tokens.length > 0 || filters.groups.length > 0;\n const filtersApplied = contentFiltersApplied || filters.datePreset !== initialFilters.datePreset || !!dateTo;\n const runningSelected = useMemo(() => selectsRunningStatus(rawFilters), [rawFilters]);\n const filtersValue = useMemo<TracesFiltersContextValue>(\n () => ({\n ...filtersActions,\n filters,\n dateFrom,\n dateTo,\n filtersApplied,\n contentFiltersApplied,\n runningSelected,\n }),\n [filtersActions, filters, dateFrom, dateTo, filtersApplied, contentFiltersApplied, runningSelected],\n );\n\n // Not memoized: the selection consumers (Layout, List, Panel) also re-render on filter and list\n // changes, which are what re-render Root while the selection stays the same.\n const selectionValue: TracesSelectionContextValue = {\n ...selectionActions,\n selection,\n selectedTraceId: selection.traceId,\n };\n\n return (\n <TracesConfigContext.Provider value={configValue}>\n <TracesFiltersContext.Provider value={filtersValue}>\n <TracesSelectionContext.Provider value={selectionValue}>\n <TracesColumnsProvider>\n <TracesListProvider sort={sort} onSortChange={onSortChange}>\n {children}\n </TracesListProvider>\n </TracesColumnsProvider>\n </TracesSelectionContext.Provider>\n </TracesFiltersContext.Provider>\n </TracesConfigContext.Provider>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"traces-explorer-root.cjs.js","names":["EntityType","DEFAULT_TRACES_FILTERS","useTraceQueryAvailable","useFeedbackAvailable","useSpanQueryAvailable","useThreadQueryAvailable","useTraceQueryRootDurationAvailable","useTraceQueryDeltaPollingAvailable","useTraceQueryDiscoveryAvailable","useObservabilityCapabilities","useMemo","sanitizeTracesFilters","resolveTracesDateWindow","useRef","isSelectionEmpty","clearSelection","selectTrace","selectSpan","setSpanTab","setSpanView","selectScore","highlightSpans","applyFilterTokens","applyDatePreset","applyDate","applyDateRange","rememberZoom","rangeBeforeZoom","useState","resolveTraceQueryTimeRange","selectsRunningStatus","TracesConfigContext","TracesFiltersContext","TracesSelectionContext","TracesColumnsProvider","TracesListProvider"],"sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-root.tsx"],"sourcesContent":["import { EntityType } from '@mastra/core/observability';\nimport { useMemo, useRef, useState } from 'react';\nimport type { ReactNode } from 'react';\nimport { resolveTraceQueryTimeRange } from '../../trace-query-filters';\nimport {\n applyDate,\n applyDatePreset,\n applyDateRange,\n applyFilterTokens,\n clearSelection,\n DEFAULT_TRACES_FILTERS,\n highlightSpans,\n isSelectionEmpty,\n resolveTracesDateWindow,\n sanitizeTracesFilters,\n selectsRunningStatus,\n selectScore,\n selectSpan,\n selectTrace,\n setSpanTab,\n setSpanView,\n} from './traces-explorer-actions';\nimport type { TracesExplorerState, TracesFilters, TracesSelection, TracesSort } from './traces-explorer-actions';\nimport { TracesColumnsProvider } from './traces-explorer-columns-provider';\nimport { TracesConfigContext, TracesFiltersContext, TracesSelectionContext } from './traces-explorer-context';\nimport type {\n TracesConfigContextValue,\n TracesExplorerFeatures,\n TracesExplorerScope,\n TracesFiltersActions,\n TracesFiltersContextValue,\n TracesMetricsSupport,\n TracesSelectionActions,\n TracesSelectionContextValue,\n} from './traces-explorer-context';\nimport { TracesListProvider } from './traces-explorer-list-provider';\nimport {\n useFeedbackAvailable,\n useObservabilityCapabilities,\n useSpanQueryAvailable,\n useThreadQueryAvailable,\n useTraceQueryAvailable,\n useTraceQueryDeltaPollingAvailable,\n useTraceQueryDiscoveryAvailable,\n useTraceQueryRootDurationAvailable,\n} from '@/domains/capabilities';\nimport { rangeBeforeZoom, rememberZoom } from '@/domains/observability/lib/zoom-memory';\nimport type { ZoomMemory } from '@/domains/observability/lib/zoom-memory';\n\nexport type TracesExplorerRootProps = {\n selection: TracesSelection;\n filters: TracesFilters;\n /** Receives the full next state once per user action, so a filter edit and the selection it clears land together. */\n onChange: (next: TracesExplorerState) => void;\n sort: TracesSort;\n onSortChange: (next: TracesSort) => void;\n /** Pins the explorer to one entity: its fields stay in the filters but never surface as chips. */\n scope?: TracesExplorerScope;\n /** Resolved by the host, which may know better than the storage capabilities (e.g. hosted deployments). */\n metricsSupport: TracesMetricsSupport;\n /** Host switches combined with the server capabilities; a feature runs only when both allow it. */\n features?: TracesExplorerFeatures;\n /** The host's default filters. Filters matching them don't count as applied (e.g. in empty states). */\n initialFilters?: TracesFilters;\n children: ReactNode;\n};\n\nconst SCOPED_FIELD_IDS: ReadonlySet<string> = new Set(['rootEntityType', 'entityId']);\nconst HIDDEN_SCOPED_FIELD_IDS: readonly string[] = ['rootEntityType', 'entityId', 'entityName'];\nconst NO_FIELD_IDS: ReadonlySet<string> = new Set();\nconst NO_HIDDEN_FIELD_IDS: readonly string[] = [];\n\nconst listIdForScope = (scope?: TracesExplorerScope) =>\n scope?.entityType === EntityType.AGENT\n ? 'agent-traces'\n : scope?.entityType === EntityType.WORKFLOW_RUN\n ? 'workflows-traces'\n : 'all-traces';\n\ntype Latest = Pick<TracesExplorerRootProps, 'selection' | 'filters' | 'onChange' | 'onSortChange'> & {\n scopedFieldIds: ReadonlySet<string>;\n};\n\nexport function TracesExplorerRoot({\n selection,\n filters: rawFilters,\n onChange,\n sort,\n onSortChange: onHostSortChange,\n scope,\n metricsSupport,\n features,\n initialFilters = DEFAULT_TRACES_FILTERS,\n children,\n}: TracesExplorerRootProps) {\n // Servers without the trace-query API list through `listTracesLight` and don't expose feedback.\n const traceQuery = useTraceQueryAvailable();\n const withQueryTrace = traceQuery.enabled && features?.traceQuery !== false;\n const withFeedback = useFeedbackAvailable().enabled && features?.feedback !== false;\n // Opt-in: span queries need both the server capability and the host turning them on.\n const withSpanQuery = useSpanQueryAvailable().enabled && features?.spanQuery === true;\n // Opt-in like span queries: thread rows need the server capability and the host turning them on.\n const withThreadQuery = useThreadQueryAvailable().enabled && features?.threadQuery === true;\n const { enabled: withRootDuration } = useTraceQueryRootDurationAvailable();\n const { enabled: withDeltaPolling } = useTraceQueryDeltaPollingAvailable();\n const withDiscovery = useTraceQueryDiscoveryAvailable().enabled && withQueryTrace;\n // `listTracesLight` rows never carry it, so it needs the trace query API as well.\n const { data: capabilities } = useObservabilityCapabilities();\n const withTimeToFirstChunk = withQueryTrace && (capabilities?.capabilities.traceQueryTimeToFirstChunk ?? false);\n const withTimeToFirstChunkSort =\n withTimeToFirstChunk && (capabilities?.capabilities.traceQueryTimeToFirstChunkSort ?? false);\n const withTimeToFirstToken = withQueryTrace && (capabilities?.capabilities.traceQueryTimeToFirstToken ?? false);\n const withTimeToFirstTokenSort =\n withTimeToFirstToken && (capabilities?.capabilities.traceQueryTimeToFirstTokenSort ?? false);\n const withOutcomeFields = withQueryTrace && (capabilities?.capabilities.traceQueryOutcomeFields ?? false);\n\n // Entries the server can't query are ignored, never written back: the host keeps its raw value.\n const filters = useMemo(\n () =>\n sanitizeTracesFilters(rawFilters, {\n withRootDuration,\n withTimeToFirstChunk,\n withTimeToFirstToken,\n withOutcomeFields,\n }),\n [rawFilters, withRootDuration, withTimeToFirstChunk, withTimeToFirstToken, withOutcomeFields],\n );\n\n const isScoped = !!scope;\n const scopedFieldIds = isScoped ? SCOPED_FIELD_IDS : NO_FIELD_IDS;\n const hiddenFieldIds = isScoped ? HIDDEN_SCOPED_FIELD_IDS : NO_HIDDEN_FIELD_IDS;\n\n // Rolling presets pin their start when the preset (or custom bound) changes, not on every render.\n const fromMs = rawFilters.dateFrom?.getTime();\n const toMs = rawFilters.dateTo?.getTime();\n const { dateFrom, dateTo } = useMemo(\n () =>\n resolveTracesDateWindow(\n rawFilters.datePreset,\n fromMs === undefined ? undefined : new Date(fromMs),\n toMs === undefined ? undefined : new Date(toMs),\n ),\n [rawFilters.datePreset, fromMs, toMs],\n );\n\n // Actions read the latest props when they run, so the host doesn't need stable callbacks.\n // `latest` is written as soon as a change is emitted, so a second action in the same tick\n // (the date picker fires a preset then its dates) builds on the first instead of the stale props.\n const current: Latest = { selection, filters: rawFilters, onChange, onSortChange: onHostSortChange, scopedFieldIds };\n const latest = useRef(current);\n latest.current = current;\n // Not part of the host's filters: a shared or reloaded link has no zoom to undo.\n const zoomMemory = useRef<ZoomMemory | undefined>(undefined);\n\n const actions = useMemo(() => {\n const emit = (next: TracesExplorerState) => {\n latest.current.selection = next.selection;\n latest.current.filters = next.filters;\n latest.current.onChange(next);\n };\n const updateSelection = (next: TracesSelection) => {\n if (next === latest.current.selection) return;\n emit({ selection: next, filters: latest.current.filters });\n };\n // A filter change invalidates whatever is selected: the selected row may no longer be listed.\n const updateFilters = (next: TracesFilters) => {\n const { selection: currentSelection, filters: currentFilters } = latest.current;\n if (next === currentFilters) return;\n emit({\n filters: next,\n selection: isSelectionEmpty(currentSelection) ? currentSelection : clearSelection(currentSelection),\n });\n };\n\n const selectionActions: TracesSelectionActions = {\n selectTrace: traceId => updateSelection(selectTrace(latest.current.selection, traceId)),\n closeTrace: () => updateSelection(selectTrace(latest.current.selection, null)),\n selectSpan: spanId => updateSelection(selectSpan(latest.current.selection, spanId)),\n setSpanTab: tab => updateSelection(setSpanTab(latest.current.selection, tab)),\n setSpanView: view => updateSelection(setSpanView(latest.current.selection, view)),\n selectScore: scoreId => updateSelection(selectScore(latest.current.selection, scoreId)),\n highlightSpans: spanIds => updateSelection(highlightSpans(latest.current.selection, spanIds)),\n };\n // A range picked by hand drops the zoom memory, even one that matches the zoomed bounds.\n const pickRange = (next: TracesFilters) => {\n zoomMemory.current = undefined;\n updateFilters(next);\n };\n const filtersActions: TracesFiltersActions = {\n // Re-inject the scope tokens so \"Clear filters\" (which drops every removable item) and any\n // other edit can never drop the scope.\n setFilterTokens: (tokens, groups) => {\n const { filters: base, scopedFieldIds: scoped } = latest.current;\n const scopeTokens = base.tokens.filter(token => scoped.has(token.fieldId));\n updateFilters(applyFilterTokens(base, [...scopeTokens, ...tokens], groups));\n },\n setDatePreset: preset => pickRange(applyDatePreset(latest.current.filters, preset)),\n setDate: (value, end) => pickRange(applyDate(latest.current.filters, value, end)),\n setDateRange: (from, to) => pickRange(applyDateRange(latest.current.filters, from, to)),\n zoomDateRange: (from, to) => {\n const base = latest.current.filters;\n zoomMemory.current = rememberZoom(zoomMemory.current, base, from, to);\n updateFilters({ ...base, datePreset: 'custom', dateFrom: from, dateTo: to });\n },\n resetDateRange: defaultPreset => {\n const base = latest.current.filters;\n const before = rangeBeforeZoom(zoomMemory.current, base);\n zoomMemory.current = undefined;\n updateFilters({ tokens: base.tokens, groups: base.groups, ...(before ?? { datePreset: defaultPreset }) });\n },\n };\n const onSortChange = (next: TracesSort) => latest.current.onSortChange(next);\n return { selectionActions, filtersActions, onSortChange };\n }, []);\n const { selectionActions, filtersActions, onSortChange } = actions;\n\n // Discovery is keyed off the date window with a mount-time `now`, not the list's rolling one,\n // so its query key (and the skeleton) doesn't churn on every auto-refresh tick.\n const [discoveryNow] = useState(() => new Date());\n const discoveryTimeRange = useMemo(\n () => resolveTraceQueryTimeRange(dateFrom, dateTo, discoveryNow),\n [dateFrom, dateTo, discoveryNow],\n );\n\n const listId = listIdForScope(scope);\n const configValue = useMemo<TracesConfigContextValue>(\n () => ({\n listId,\n scopedFieldIds,\n hiddenFieldIds,\n withQueryTrace,\n withFeedback,\n withSpanQuery,\n withThreadQuery,\n withRootDuration,\n withOutcomeFields,\n withTimeToFirstChunk,\n withTimeToFirstChunkSort,\n withTimeToFirstToken,\n withTimeToFirstTokenSort,\n withDeltaPolling,\n withDiscovery,\n isCapabilitiesLoading: traceQuery.isLoading,\n metricsSupport,\n discoveryTimeRange,\n }),\n [\n listId,\n scopedFieldIds,\n hiddenFieldIds,\n withQueryTrace,\n withFeedback,\n withSpanQuery,\n withThreadQuery,\n withRootDuration,\n withOutcomeFields,\n withTimeToFirstChunk,\n withTimeToFirstChunkSort,\n withTimeToFirstToken,\n withTimeToFirstTokenSort,\n withDeltaPolling,\n withDiscovery,\n traceQuery.isLoading,\n metricsSupport,\n discoveryTimeRange,\n ],\n );\n\n const contentFiltersApplied = filters.tokens.length > 0 || filters.groups.length > 0;\n const filtersApplied = contentFiltersApplied || filters.datePreset !== initialFilters.datePreset || !!dateTo;\n const runningSelected = useMemo(() => selectsRunningStatus(rawFilters), [rawFilters]);\n const filtersValue = useMemo<TracesFiltersContextValue>(\n () => ({\n ...filtersActions,\n filters,\n dateFrom,\n dateTo,\n filtersApplied,\n contentFiltersApplied,\n runningSelected,\n }),\n [filtersActions, filters, dateFrom, dateTo, filtersApplied, contentFiltersApplied, runningSelected],\n );\n\n // Not memoized: the selection consumers (Layout, List, Panel) also re-render on filter and list\n // changes, which are what re-render Root while the selection stays the same.\n const selectionValue: TracesSelectionContextValue = {\n ...selectionActions,\n selection,\n selectedTraceId: selection.traceId,\n };\n\n return (\n <TracesConfigContext.Provider value={configValue}>\n <TracesFiltersContext.Provider value={filtersValue}>\n <TracesSelectionContext.Provider value={selectionValue}>\n <TracesColumnsProvider>\n <TracesListProvider sort={sort} onSortChange={onSortChange}>\n {children}\n </TracesListProvider>\n </TracesColumnsProvider>\n </TracesSelectionContext.Provider>\n </TracesFiltersContext.Provider>\n </TracesConfigContext.Provider>\n );\n}\n"],"mappings":";;;;;;;;;;;;AAmEA,IAAM,mCAAwC,IAAI,IAAI,CAAC,kBAAkB,UAAU,CAAC;AACpF,IAAM,0BAA6C;CAAC;CAAkB;CAAY;AAAY;AAC9F,IAAM,+BAAoC,IAAI,IAAI;AAClD,IAAM,sBAAyC,CAAC;AAEhD,IAAM,kBAAkB,UACtB,OAAO,eAAeA,2BAAAA,WAAW,QAC7B,iBACA,OAAO,eAAeA,2BAAAA,WAAW,eAC/B,qBACA;AAMR,SAAgB,mBAAmB,EACjC,WACA,SAAS,YACT,UACA,MACA,cAAc,kBACd,OACA,gBACA,UACA,iBAAiBC,0EAAAA,wBACjB,YAC0B;CAE1B,MAAM,cAAA,GAAaC,iCAAAA,uBAAAA,CAAuB;CAC1C,MAAM,iBAAiB,WAAW,WAAW,UAAU,eAAe;CACtE,MAAM,gBAAA,GAAeC,iCAAAA,qBAAAA,CAAqB,CAAC,CAAC,WAAW,UAAU,aAAa;CAE9E,MAAM,iBAAA,GAAgBC,iCAAAA,sBAAAA,CAAsB,CAAC,CAAC,WAAW,UAAU,cAAc;CAEjF,MAAM,mBAAA,GAAkBC,iCAAAA,wBAAAA,CAAwB,CAAC,CAAC,WAAW,UAAU,gBAAgB;CACvF,MAAM,EAAE,SAAS,sBAAA,GAAqBC,iCAAAA,mCAAAA,CAAmC;CACzE,MAAM,EAAE,SAAS,sBAAA,GAAqBC,iCAAAA,mCAAAA,CAAmC;CACzE,MAAM,iBAAA,GAAgBC,iCAAAA,gCAAAA,CAAgC,CAAC,CAAC,WAAW;CAEnE,MAAM,EAAE,MAAM,kBAAA,GAAiBC,iCAAAA,6BAAAA,CAA6B;CAC5D,MAAM,uBAAuB,mBAAmB,cAAc,aAAa,8BAA8B;CACzG,MAAM,2BACJ,yBAAyB,cAAc,aAAa,kCAAkC;CACxF,MAAM,uBAAuB,mBAAmB,cAAc,aAAa,8BAA8B;CACzG,MAAM,2BACJ,yBAAyB,cAAc,aAAa,kCAAkC;CACxF,MAAM,oBAAoB,mBAAmB,cAAc,aAAa,2BAA2B;CAGnG,MAAM,WAAA,GAAUC,MAAAA,QAAAA,OAEZC,0EAAAA,sBAAsB,YAAY;EAChC;EACA;EACA;EACA;CACF,CAAC,GACH;EAAC;EAAY;EAAkB;EAAsB;EAAsB;CAAiB,CAC9F;CAEA,MAAM,WAAW,CAAC,CAAC;CACnB,MAAM,iBAAiB,WAAW,mBAAmB;CACrD,MAAM,iBAAiB,WAAW,0BAA0B;CAG5D,MAAM,SAAS,WAAW,UAAU,QAAQ;CAC5C,MAAM,OAAO,WAAW,QAAQ,QAAQ;CACxC,MAAM,EAAE,UAAU,YAAA,GAAWD,MAAAA,QAAAA,OAEzBE,0EAAAA,wBACE,WAAW,YACX,WAAW,KAAA,IAAY,KAAA,IAAY,IAAI,KAAK,MAAM,GAClD,SAAS,KAAA,IAAY,KAAA,IAAY,IAAI,KAAK,IAAI,CAChD,GACF;EAAC,WAAW;EAAY;EAAQ;CAAI,CACtC;CAKA,MAAM,UAAkB;EAAE;EAAW,SAAS;EAAY;EAAU,cAAc;EAAkB;CAAe;CACnH,MAAM,UAAA,GAASC,MAAAA,OAAAA,CAAO,OAAO;CAC7B,OAAO,UAAU;CAEjB,MAAM,cAAA,GAAaA,MAAAA,OAAAA,CAA+B,KAAA,CAAS;CA8D3D,MAAM,EAAE,kBAAkB,gBAAgB,kBAAA,GA5D1BH,MAAAA,QAAAA,OAAc;EAC5B,MAAM,QAAQ,SAA8B;GAC1C,OAAO,QAAQ,YAAY,KAAK;GAChC,OAAO,QAAQ,UAAU,KAAK;GAC9B,OAAO,QAAQ,SAAS,IAAI;EAC9B;EACA,MAAM,mBAAmB,SAA0B;GACjD,IAAI,SAAS,OAAO,QAAQ,WAAW;GACvC,KAAK;IAAE,WAAW;IAAM,SAAS,OAAO,QAAQ;GAAQ,CAAC;EAC3D;EAEA,MAAM,iBAAiB,SAAwB;GAC7C,MAAM,EAAE,WAAW,kBAAkB,SAAS,mBAAmB,OAAO;GACxE,IAAI,SAAS,gBAAgB;GAC7B,KAAK;IACH,SAAS;IACT,WAAWI,0EAAAA,iBAAiB,gBAAgB,IAAI,mBAAmBC,0EAAAA,eAAe,gBAAgB;GACpG,CAAC;EACH;EAEA,MAAM,mBAA2C;GAC/C,cAAa,YAAW,gBAAgBC,0EAAAA,YAAY,OAAO,QAAQ,WAAW,OAAO,CAAC;GACtF,kBAAkB,gBAAgBA,0EAAAA,YAAY,OAAO,QAAQ,WAAW,IAAI,CAAC;GAC7E,aAAY,WAAU,gBAAgBC,0EAAAA,WAAW,OAAO,QAAQ,WAAW,MAAM,CAAC;GAClF,aAAY,QAAO,gBAAgBC,0EAAAA,WAAW,OAAO,QAAQ,WAAW,GAAG,CAAC;GAC5E,cAAa,SAAQ,gBAAgBC,0EAAAA,YAAY,OAAO,QAAQ,WAAW,IAAI,CAAC;GAChF,cAAa,YAAW,gBAAgBC,0EAAAA,YAAY,OAAO,QAAQ,WAAW,OAAO,CAAC;GACtF,iBAAgB,YAAW,gBAAgBC,0EAAAA,eAAe,OAAO,QAAQ,WAAW,OAAO,CAAC;EAC9F;EAEA,MAAM,aAAa,SAAwB;GACzC,WAAW,UAAU,KAAA;GACrB,cAAc,IAAI;EACpB;EACA,MAAM,iBAAuC;GAG3C,kBAAkB,QAAQ,WAAW;IACnC,MAAM,EAAE,SAAS,MAAM,gBAAgB,WAAW,OAAO;IACzD,MAAM,cAAc,KAAK,OAAO,QAAO,UAAS,OAAO,IAAI,MAAM,OAAO,CAAC;IACzE,cAAcC,0EAAAA,kBAAkB,MAAM,CAAC,GAAG,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;GAC5E;GACA,gBAAe,WAAU,UAAUC,0EAAAA,gBAAgB,OAAO,QAAQ,SAAS,MAAM,CAAC;GAClF,UAAU,OAAO,QAAQ,UAAUC,0EAAAA,UAAU,OAAO,QAAQ,SAAS,OAAO,GAAG,CAAC;GAChF,eAAe,MAAM,OAAO,UAAUC,0EAAAA,eAAe,OAAO,QAAQ,SAAS,MAAM,EAAE,CAAC;GACtF,gBAAgB,MAAM,OAAO;IAC3B,MAAM,OAAO,OAAO,QAAQ;IAC5B,WAAW,UAAUC,8CAAAA,aAAa,WAAW,SAAS,MAAM,MAAM,EAAE;IACpE,cAAc;KAAE,GAAG;KAAM,YAAY;KAAU,UAAU;KAAM,QAAQ;IAAG,CAAC;GAC7E;GACA,iBAAgB,kBAAiB;IAC/B,MAAM,OAAO,OAAO,QAAQ;IAC5B,MAAM,SAASC,8CAAAA,gBAAgB,WAAW,SAAS,IAAI;IACvD,WAAW,UAAU,KAAA;IACrB,cAAc;KAAE,QAAQ,KAAK;KAAQ,QAAQ,KAAK;KAAQ,GAAI,UAAU,EAAE,YAAY,cAAc;IAAG,CAAC;GAC1G;EACF;EACA,MAAM,gBAAgB,SAAqB,OAAO,QAAQ,aAAa,IAAI;EAC3E,OAAO;GAAE;GAAkB;GAAgB;EAAa;CAC1D,GAAG,CAAC,CACuD;CAI3D,MAAM,CAAC,iBAAA,GAAgBC,MAAAA,SAAAA,uBAAe,IAAI,KAAK,CAAC;CAChD,MAAM,sBAAA,GAAqBlB,MAAAA,QAAAA,OACnBmB,sBAAAA,2BAA2B,UAAU,QAAQ,YAAY,GAC/D;EAAC;EAAU;EAAQ;CAAY,CACjC;CAEA,MAAM,SAAS,eAAe,KAAK;CACnC,MAAM,eAAA,GAAcnB,MAAAA,QAAAA,QACX;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,uBAAuB,WAAW;EAClC;EACA;CACF,IACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,WAAW;EACX;EACA;CACF,CACF;CAEA,MAAM,wBAAwB,QAAQ,OAAO,SAAS,KAAK,QAAQ,OAAO,SAAS;CACnF,MAAM,iBAAiB,yBAAyB,QAAQ,eAAe,eAAe,cAAc,CAAC,CAAC;CACtG,MAAM,mBAAA,GAAkBA,MAAAA,QAAAA,OAAcoB,0EAAAA,qBAAqB,UAAU,GAAG,CAAC,UAAU,CAAC;CACpF,MAAM,gBAAA,GAAepB,MAAAA,QAAAA,QACZ;EACL,GAAG;EACH;EACA;EACA;EACA;EACA;EACA;CACF,IACA;EAAC;EAAgB;EAAS;EAAU;EAAQ;EAAgB;EAAuB;CAAe,CACpG;CAIA,MAAM,iBAA8C;EAClD,GAAG;EACH;EACA,iBAAiB,UAAU;CAC7B;CAEA,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACqB,0EAAAA,oBAAoB,UAArB;EAA8B,OAAO;EACnC,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,0EAAAA,qBAAqB,UAAtB;GAA+B,OAAO;GACpC,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,0EAAAA,uBAAuB,UAAxB;IAAiC,OAAO;IACtC,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,mFAAAA,uBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,gFAAAA,oBAAD;KAA0B;KAAoB;KAC3C;IACiB,CAAA,EACC,CAAA;GACQ,CAAA;EACJ,CAAA;CACH,CAAA;AAElC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { useFeedbackAvailable, useObservabilityCapabilities, useSpanQueryAvailable, useThreadQueryAvailable, useTraceQueryAvailable, useTraceQueryDeltaPollingAvailable, useTraceQueryDiscoveryAvailable, useTraceQueryRootDurationAvailable } from "../../../capabilities.es.js";
|
|
2
|
-
import {
|
|
2
|
+
import { ft as resolveTraceQueryTimeRange } from "../../../../trace-filters-BJaebsxJ.js";
|
|
3
3
|
import { DEFAULT_TRACES_FILTERS, applyDate, applyDatePreset, applyDateRange, applyFilterTokens, clearSelection, highlightSpans, isSelectionEmpty, resolveTracesDateWindow, sanitizeTracesFilters, selectScore, selectSpan, selectTrace, selectsRunningStatus, setSpanTab, setSpanView } from "./traces-explorer-actions.es.js";
|
|
4
|
+
import { rangeBeforeZoom, rememberZoom } from "../../../observability/lib/zoom-memory.es.js";
|
|
4
5
|
import { TracesConfigContext, TracesFiltersContext, TracesSelectionContext } from "./traces-explorer-context.es.js";
|
|
5
6
|
import { TracesColumnsProvider } from "./traces-explorer-columns-provider.es.js";
|
|
6
7
|
import { TracesListProvider } from "./traces-explorer-list-provider.es.js";
|
|
@@ -29,7 +30,21 @@ function TracesExplorerRoot({ selection, filters: rawFilters, onChange, sort, on
|
|
|
29
30
|
const { data: capabilities } = useObservabilityCapabilities();
|
|
30
31
|
const withTimeToFirstChunk = withQueryTrace && (capabilities?.capabilities.traceQueryTimeToFirstChunk ?? false);
|
|
31
32
|
const withTimeToFirstChunkSort = withTimeToFirstChunk && (capabilities?.capabilities.traceQueryTimeToFirstChunkSort ?? false);
|
|
32
|
-
const
|
|
33
|
+
const withTimeToFirstToken = withQueryTrace && (capabilities?.capabilities.traceQueryTimeToFirstToken ?? false);
|
|
34
|
+
const withTimeToFirstTokenSort = withTimeToFirstToken && (capabilities?.capabilities.traceQueryTimeToFirstTokenSort ?? false);
|
|
35
|
+
const withOutcomeFields = withQueryTrace && (capabilities?.capabilities.traceQueryOutcomeFields ?? false);
|
|
36
|
+
const filters = useMemo(() => sanitizeTracesFilters(rawFilters, {
|
|
37
|
+
withRootDuration,
|
|
38
|
+
withTimeToFirstChunk,
|
|
39
|
+
withTimeToFirstToken,
|
|
40
|
+
withOutcomeFields
|
|
41
|
+
}), [
|
|
42
|
+
rawFilters,
|
|
43
|
+
withRootDuration,
|
|
44
|
+
withTimeToFirstChunk,
|
|
45
|
+
withTimeToFirstToken,
|
|
46
|
+
withOutcomeFields
|
|
47
|
+
]);
|
|
33
48
|
const isScoped = !!scope;
|
|
34
49
|
const scopedFieldIds = isScoped ? SCOPED_FIELD_IDS : NO_FIELD_IDS;
|
|
35
50
|
const hiddenFieldIds = isScoped ? HIDDEN_SCOPED_FIELD_IDS : NO_HIDDEN_FIELD_IDS;
|
|
@@ -49,6 +64,7 @@ function TracesExplorerRoot({ selection, filters: rawFilters, onChange, sort, on
|
|
|
49
64
|
};
|
|
50
65
|
const latest = useRef(current);
|
|
51
66
|
latest.current = current;
|
|
67
|
+
const zoomMemory = useRef(void 0);
|
|
52
68
|
const { selectionActions, filtersActions, onSortChange } = useMemo(() => {
|
|
53
69
|
const emit = (next) => {
|
|
54
70
|
latest.current.selection = next.selection;
|
|
@@ -79,15 +95,39 @@ function TracesExplorerRoot({ selection, filters: rawFilters, onChange, sort, on
|
|
|
79
95
|
selectScore: (scoreId) => updateSelection(selectScore(latest.current.selection, scoreId)),
|
|
80
96
|
highlightSpans: (spanIds) => updateSelection(highlightSpans(latest.current.selection, spanIds))
|
|
81
97
|
};
|
|
98
|
+
const pickRange = (next) => {
|
|
99
|
+
zoomMemory.current = void 0;
|
|
100
|
+
updateFilters(next);
|
|
101
|
+
};
|
|
82
102
|
const filtersActions = {
|
|
83
103
|
setFilterTokens: (tokens, groups) => {
|
|
84
104
|
const { filters: base, scopedFieldIds: scoped } = latest.current;
|
|
85
105
|
const scopeTokens = base.tokens.filter((token) => scoped.has(token.fieldId));
|
|
86
106
|
updateFilters(applyFilterTokens(base, [...scopeTokens, ...tokens], groups));
|
|
87
107
|
},
|
|
88
|
-
setDatePreset: (preset) =>
|
|
89
|
-
setDate: (value, end) =>
|
|
90
|
-
setDateRange: (from, to) =>
|
|
108
|
+
setDatePreset: (preset) => pickRange(applyDatePreset(latest.current.filters, preset)),
|
|
109
|
+
setDate: (value, end) => pickRange(applyDate(latest.current.filters, value, end)),
|
|
110
|
+
setDateRange: (from, to) => pickRange(applyDateRange(latest.current.filters, from, to)),
|
|
111
|
+
zoomDateRange: (from, to) => {
|
|
112
|
+
const base = latest.current.filters;
|
|
113
|
+
zoomMemory.current = rememberZoom(zoomMemory.current, base, from, to);
|
|
114
|
+
updateFilters({
|
|
115
|
+
...base,
|
|
116
|
+
datePreset: "custom",
|
|
117
|
+
dateFrom: from,
|
|
118
|
+
dateTo: to
|
|
119
|
+
});
|
|
120
|
+
},
|
|
121
|
+
resetDateRange: (defaultPreset) => {
|
|
122
|
+
const base = latest.current.filters;
|
|
123
|
+
const before = rangeBeforeZoom(zoomMemory.current, base);
|
|
124
|
+
zoomMemory.current = void 0;
|
|
125
|
+
updateFilters({
|
|
126
|
+
tokens: base.tokens,
|
|
127
|
+
groups: base.groups,
|
|
128
|
+
...before ?? { datePreset: defaultPreset }
|
|
129
|
+
});
|
|
130
|
+
}
|
|
91
131
|
};
|
|
92
132
|
const onSortChange = (next) => latest.current.onSortChange(next);
|
|
93
133
|
return {
|
|
@@ -112,8 +152,11 @@ function TracesExplorerRoot({ selection, filters: rawFilters, onChange, sort, on
|
|
|
112
152
|
withSpanQuery,
|
|
113
153
|
withThreadQuery,
|
|
114
154
|
withRootDuration,
|
|
155
|
+
withOutcomeFields,
|
|
115
156
|
withTimeToFirstChunk,
|
|
116
157
|
withTimeToFirstChunkSort,
|
|
158
|
+
withTimeToFirstToken,
|
|
159
|
+
withTimeToFirstTokenSort,
|
|
117
160
|
withDeltaPolling,
|
|
118
161
|
withDiscovery,
|
|
119
162
|
isCapabilitiesLoading: traceQuery.isLoading,
|
|
@@ -128,8 +171,11 @@ function TracesExplorerRoot({ selection, filters: rawFilters, onChange, sort, on
|
|
|
128
171
|
withSpanQuery,
|
|
129
172
|
withThreadQuery,
|
|
130
173
|
withRootDuration,
|
|
174
|
+
withOutcomeFields,
|
|
131
175
|
withTimeToFirstChunk,
|
|
132
176
|
withTimeToFirstChunkSort,
|
|
177
|
+
withTimeToFirstToken,
|
|
178
|
+
withTimeToFirstTokenSort,
|
|
133
179
|
withDeltaPolling,
|
|
134
180
|
withDiscovery,
|
|
135
181
|
traceQuery.isLoading,
|