@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SavedViews.es.js","names":["_Fragment","_Fragment"],"sources":["../../src/ds/components/SavedViews/saved-view-schema.ts","../../src/ds/components/SavedViews/saved-view-name-input.tsx","../../src/ds/components/SavedViews/saved-view-summary.tsx","../../src/ds/components/SavedViews/saved-view-tabs.tsx","../../src/ds/components/SavedViews/saved-view-editor.tsx","../../src/ds/components/SavedViews/saved-views-storage.ts","../../src/ds/components/SavedViews/use-saved-views.ts"],"sourcesContent":["import { z } from 'zod/v4';\nimport type { FilterBarItem } from '@/ds/components/FilterBar/types';\n\nexport const MAX_SAVED_VIEW_NAME_CHARS = 80;\n\nconst SAVED_VIEWS_STORAGE_VERSION = 1;\n\nconst filterBarScalarSchema = z.union([z.string(), z.number(), z.boolean()]);\n\nconst savedViewFilterSchema = z.object({\n id: z.string().min(1),\n fieldId: z.string().min(1),\n operatorId: z.string().min(1),\n value: z.union([filterBarScalarSchema, z.array(filterBarScalarSchema)]),\n}) satisfies z.ZodType<FilterBarItem>;\n\nexport const savedViewNameSchema = z.string().trim().min(1).max(MAX_SAVED_VIEW_NAME_CHARS);\n\nconst storedSavedViewSchema = z.object({\n id: z.string().min(1),\n name: savedViewNameSchema,\n filters: z.array(savedViewFilterSchema),\n settings: z.unknown(),\n});\n\n// Views stay `unknown` so one malformed view is dropped on its own, not the whole list.\nconst savedViewsDocumentSchema = z.object({\n version: z.literal(SAVED_VIEWS_STORAGE_VERSION),\n views: z.array(z.unknown()),\n});\n\n// Only `safeParse` is used, so the consumer's Zod version never has to match this package's.\nexport type SavedViewSettingsSchema<TSettings> = {\n safeParse: (value: unknown) => { success: true; data: TSettings } | { success: false };\n};\n\nexport type SavedView<TSettings> = {\n id: string;\n name: string;\n filters: FilterBarItem[];\n settings: TSettings;\n};\n\nexport function parseSavedViews<TSettings>(\n raw: string | null,\n settingsSchema: SavedViewSettingsSchema<TSettings>,\n): SavedView<TSettings>[] {\n if (!raw) return [];\n let json: unknown;\n try {\n json = JSON.parse(raw);\n } catch {\n return [];\n }\n const document = savedViewsDocumentSchema.safeParse(json);\n if (!document.success) return [];\n return document.data.views.flatMap(candidate => {\n const view = storedSavedViewSchema.safeParse(candidate);\n if (!view.success) return [];\n const settings = settingsSchema.safeParse(view.data.settings);\n if (!settings.success) return [];\n return [{ ...view.data, settings: settings.data }];\n });\n}\n\nexport function serializeSavedViews<TSettings>(views: readonly SavedView<TSettings>[]): string {\n return JSON.stringify({ version: SAVED_VIEWS_STORAGE_VERSION, views });\n}\n","import { MAX_SAVED_VIEW_NAME_CHARS } from './saved-view-schema';\nimport { passwordManagerOptOutProps } from '@/ds/primitives/password-manager-autofill';\n\n// Uncontrolled so blur is the one exit: Enter blurs, Escape restores the name first, blur commits.\nexport function SavedViewNameInput({ name, onCommit }: { name: string; onCommit: (name: string) => void }) {\n return (\n <input\n autoFocus\n aria-label=\"View name\"\n defaultValue={name}\n maxLength={MAX_SAVED_VIEW_NAME_CHARS}\n {...passwordManagerOptOutProps}\n onFocus={event => event.currentTarget.select()}\n onBlur={event => onCommit(event.currentTarget.value)}\n onKeyDown={event => {\n if (event.key === 'Escape') event.currentTarget.value = name;\n if (event.key === 'Enter' || event.key === 'Escape') {\n event.preventDefault();\n event.currentTarget.blur();\n }\n }}\n className=\"field-sizing-content min-w-12 bg-transparent text-foreground outline-hidden\"\n />\n );\n}\n","import type { ReactNode } from 'react';\nimport { FilterBarFieldLabel, formatValue } from '@/ds/components/FilterBar/filter-bar-chip';\nimport type { FilterBarField, FilterBarItem, FilterBarOperator } from '@/ds/components/FilterBar/types';\nimport { Txt } from '@/ds/components/Txt';\n\ntype SavedViewSummaryProps = {\n filters: readonly FilterBarItem[];\n fields: readonly FilterBarField[];\n operators: readonly FilterBarOperator[];\n settings?: ReactNode;\n};\n\nexport function SavedViewSummary({ filters, fields, operators, settings }: SavedViewSummaryProps) {\n return (\n <div className=\"flex min-w-48 flex-col gap-2\">\n {filters.length === 0 ? (\n <Txt variant=\"caption\" tone=\"muted\">\n No filters\n </Txt>\n ) : (\n <ul aria-label=\"Filters\" className=\"flex flex-col gap-1.5\">\n {filters.map(filter => {\n const field = fields.find(candidate => candidate.id === filter.fieldId);\n const operatorStated = (field?.operators?.length ?? operators.length) > 1;\n const operator = operators.find(candidate => candidate.id === filter.operatorId);\n return (\n <li key={filter.id} className=\"min-w-0\">\n <Txt as=\"span\" variant=\"body-sm\" className=\"flex min-w-0 items-center gap-1.5\">\n <span className=\"flex min-w-0 shrink-0 items-center gap-1 text-muted-foreground\">\n <FilterBarFieldLabel field={field} label={field?.label ?? filter.fieldId} />\n </span>\n {operatorStated && <span className=\"shrink-0 text-muted-foreground\">{operator?.label}</span>}\n <span className=\"min-w-0 truncate\">{formatValue(filter.value, field)}</span>\n </Txt>\n </li>\n );\n })}\n </ul>\n )}\n {settings}\n </div>\n );\n}\n","import { CopyIcon, LayersIcon, LayersPlusIcon, PencilIcon, TextCursorInputIcon, Trash2Icon } from 'lucide-react';\nimport { Fragment, useState } from 'react';\nimport type { ReactNode } from 'react';\nimport { SavedViewNameInput } from './saved-view-name-input';\nimport type { SavedView } from './saved-view-schema';\nimport { SavedViewSummary } from './saved-view-summary';\nimport type { SavedViewsController } from './use-saved-views';\nimport { Button, buttonVariants } from '@/ds/components/Button/Button';\nimport { ContextMenu } from '@/ds/components/ContextMenu';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu';\nimport type { FilterBarField, FilterBarOperator } from '@/ds/components/FilterBar/types';\nimport { HoverCard, HoverCardContent, HoverCardTrigger } from '@/ds/components/HoverCard';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { controlHeight } from '@/ds/primitives/control-size';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\nimport { cn } from '@/lib/utils';\n\nconst restingTabClass = buttonVariants({ variant: 'default', size: 'sm' });\nconst selectedTabClass = buttonVariants({ variant: 'subtle', size: 'sm' });\nconst editingTabClass = cn(\n controlHeight.sm,\n 'inline-flex items-center gap-1.5 rounded-full border border-dashed border-border-strong bg-fill-hover px-[.9em] text-label text-foreground',\n '[&_svg]:size-3.5 [&_svg]:shrink-0',\n);\n\nexport type SavedViewTabsProps<TSettings> = {\n views: SavedViewsController<TSettings>;\n fields: readonly FilterBarField[];\n operators: readonly FilterBarOperator[];\n defaultLabel: string;\n newViewSettings: NoInfer<TSettings>;\n describeSettings?: (settings: TSettings) => ReactNode;\n 'aria-label'?: string;\n className?: string;\n};\n\nexport function SavedViewTabs<TSettings>({\n views,\n fields,\n operators,\n defaultLabel,\n newViewSettings,\n describeSettings,\n 'aria-label': ariaLabel = 'Views',\n className,\n}: SavedViewTabsProps<TSettings>) {\n const [renamingViewId, setRenamingViewId] = useState<string>();\n const { draft } = views;\n const creating = draft !== undefined && draft.viewId === undefined;\n const defaultSelected = views.activeView === undefined && !creating;\n\n return (\n <div role=\"group\" aria-label={ariaLabel} className={cn('flex flex-wrap items-center gap-1.5', className)}>\n <button\n type=\"button\"\n aria-pressed={defaultSelected}\n className={defaultSelected ? selectedTabClass : restingTabClass}\n onClick={() => views.select(undefined)}\n >\n {defaultLabel}\n </button>\n {views.views.map(view => {\n if (renamingViewId === view.id) {\n return (\n <RenamingViewTab\n key={view.id}\n name={view.name}\n onCommit={name => {\n setRenamingViewId(undefined);\n views.rename(view.id, name);\n }}\n />\n );\n }\n return (\n <SavedViewTab\n key={view.id}\n view={view}\n selected={views.activeView?.id === view.id && !creating}\n unsaved={draft?.viewId === view.id && views.unsaved}\n fields={fields}\n operators={operators}\n settings={describeSettings?.(view.settings)}\n onSelect={() => views.select(view.id)}\n onEdit={() => views.edit(view.id)}\n onRename={() => setRenamingViewId(view.id)}\n onDuplicate={() => views.duplicate(view.id)}\n onDelete={() => views.remove(view.id)}\n />\n );\n })}\n {views.storageError && (\n <Txt role=\"alert\" variant=\"caption\" className=\"w-full text-destructive-foreground\">\n {views.storageError}\n </Txt>\n )}\n {creating ? (\n <EditingViewTab name={draft.name} unsaved onRename={name => views.change({ name })} />\n ) : (\n <Button\n type=\"button\"\n size=\"icon-sm\"\n tooltip=\"New view\"\n disabled={draft !== undefined}\n onClick={() => views.create(newViewSettings)}\n >\n <LayersPlusIcon />\n </Button>\n )}\n </div>\n );\n}\n\nfunction EditingViewTab({\n name,\n unsaved,\n onRename,\n}: {\n name: string;\n unsaved: boolean;\n onRename: (name: string) => void;\n}) {\n const [renaming, setRenaming] = useState(false);\n return (\n <span aria-current=\"true\" className={editingTabClass}>\n <LayersIcon aria-hidden />\n {renaming ? (\n <SavedViewNameInput\n name={name}\n onCommit={next => {\n setRenaming(false);\n if (next.trim()) onRename(next);\n }}\n />\n ) : (\n <>\n <span className=\"max-w-48 truncate\">{name}</span>\n {unsaved && (\n <>\n <span className=\"size-1.5 shrink-0 rounded-full bg-warning-indicator\" aria-hidden />\n <VisuallyHidden>Unsaved changes</VisuallyHidden>\n </>\n )}\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n tooltip=\"Rename view\"\n className=\"-mr-2 size-6\"\n onClick={() => setRenaming(true)}\n >\n <PencilIcon />\n </Button>\n </>\n )}\n </span>\n );\n}\n\nfunction RenamingViewTab({ name, onCommit }: { name: string; onCommit: (name: string) => void }) {\n return (\n <span className={cn(restingTabClass, 'gap-1.5')}>\n <SavedViewTabIcon />\n <SavedViewNameInput name={name} onCommit={onCommit} />\n </span>\n );\n}\n\nfunction SavedViewTabIcon() {\n return (\n <Icon data-slot=\"button-icon\" size=\"sm\">\n <LayersIcon aria-hidden />\n </Icon>\n );\n}\n\nfunction SavedViewTab<TSettings>({\n view,\n selected,\n unsaved,\n fields,\n operators,\n settings,\n onSelect,\n onEdit,\n onRename,\n onDuplicate,\n onDelete,\n}: {\n view: SavedView<TSettings>;\n selected: boolean;\n unsaved: boolean;\n fields: readonly FilterBarField[];\n operators: readonly FilterBarOperator[];\n settings: ReactNode;\n onSelect: () => void;\n onEdit: () => void;\n onRename: () => void;\n onDuplicate: () => void;\n onDelete: () => void;\n}) {\n const actions: ViewAction[] = [\n { label: 'Edit view', icon: <PencilIcon aria-hidden />, onClick: onEdit },\n { label: 'Rename', icon: <TextCursorInputIcon aria-hidden />, onClick: onRename },\n { label: 'Duplicate', icon: <CopyIcon aria-hidden />, onClick: onDuplicate },\n { label: 'Delete view', icon: <Trash2Icon aria-hidden />, onClick: onDelete, destructive: true },\n ];\n const [menuOpen, setMenuOpen] = useState(false);\n const [previewOpen, setPreviewOpen] = useState(false);\n const changeMenuOpen = (open: boolean) => {\n setMenuOpen(selected && open);\n if (open) setPreviewOpen(false);\n };\n\n return (\n <ContextMenu>\n <DropdownMenu open={selected && menuOpen} onOpenChange={changeMenuOpen}>\n <HoverCard open={!selected && previewOpen} onOpenChange={setPreviewOpen}>\n <ContextMenu.Trigger\n render={\n <HoverCardTrigger\n delay={400}\n render={\n <DropdownMenu.Trigger\n render={\n <button\n type=\"button\"\n aria-pressed={selected}\n aria-haspopup={selected ? 'menu' : undefined}\n onClick={() => {\n if (selected) return;\n setPreviewOpen(false);\n onSelect();\n }}\n className={cn(selected ? selectedTabClass : restingTabClass, 'gap-1.5')}\n />\n }\n />\n }\n />\n }\n >\n <SavedViewTabIcon />\n <span className=\"max-w-48 truncate\">{view.name}</span>\n {unsaved && <span className=\"size-1.5 shrink-0 rounded-full bg-warning-indicator\" aria-hidden />}\n </ContextMenu.Trigger>\n <HoverCardContent side=\"bottom\" align=\"start\" showArrow={false}>\n <SavedViewSummary filters={view.filters} fields={fields} operators={operators} settings={settings} />\n </HoverCardContent>\n </HoverCard>\n <DropdownMenu.Content align=\"start\">\n {actions.map(action => (\n <Fragment key={action.label}>\n {action.destructive && <DropdownMenu.Separator />}\n <DropdownMenu.Item variant={action.destructive ? 'destructive' : 'default'} onClick={action.onClick}>\n {action.icon}\n {action.label}\n </DropdownMenu.Item>\n </Fragment>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n <ContextMenu.Content>\n {actions.map(action => (\n <Fragment key={action.label}>\n {action.destructive && <ContextMenu.Separator />}\n <ContextMenu.Item variant={action.destructive ? 'destructive' : 'default'} onClick={action.onClick}>\n {action.icon}\n {action.label}\n </ContextMenu.Item>\n </Fragment>\n ))}\n </ContextMenu.Content>\n </ContextMenu>\n );\n}\n\ntype ViewAction = { label: string; icon: ReactNode; onClick: () => void; destructive?: boolean };\n","import type { ReactNode } from 'react';\nimport type { SavedViewsController } from './use-saved-views';\nimport { Button } from '@/ds/components/Button/Button';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport type SavedViewEditorProps<TSettings> = {\n views: SavedViewsController<TSettings>;\n children?: ReactNode;\n className?: string;\n};\n\nexport function SavedViewEditor<TSettings>({ views, children, className }: SavedViewEditorProps<TSettings>) {\n const { draft } = views;\n const creating = draft?.viewId === undefined;\n return (\n <div\n role={draft ? 'group' : undefined}\n aria-label={draft ? `Edit view ${draft.name}` : undefined}\n className={cn('flex min-w-0 flex-wrap items-center gap-2', className)}\n >\n {children}\n {draft && (\n <>\n {!creating && views.unsaved && (\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n Unsaved changes\n </Txt>\n )}\n <div className=\"ml-auto flex shrink-0 items-center gap-3\">\n {creating && (\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\" className=\"max-sm:hidden\">\n Saved in this browser\n </Txt>\n )}\n <div className=\"flex items-center gap-1\">\n <Button type=\"button\" variant=\"ghost\" size=\"sm\" onClick={views.discard}>\n {creating ? 'Cancel' : 'Reset'}\n </Button>\n <Button type=\"button\" variant=\"primary\" size=\"sm\" disabled={!views.unsaved} onClick={views.save}>\n {creating ? 'Save view' : 'Save changes'}\n </Button>\n </div>\n </div>\n </>\n )}\n </div>\n );\n}\n","type SavedViewsSubscribe = (listener: () => void) => () => void;\n\nconst listenersByKey = new Map<string, Set<() => void>>();\nconst subscribeByKey = new Map<string, SavedViewsSubscribe>();\n\nexport function readSavedViewsRaw(key: string): string | null {\n try {\n return window.localStorage.getItem(key);\n } catch {\n return null;\n }\n}\n\nexport function writeSavedViewsRaw(key: string, raw: string): boolean {\n try {\n window.localStorage.setItem(key, raw);\n } catch {\n return false;\n }\n listenersByKey.get(key)?.forEach(listener => listener());\n return true;\n}\n\nexport function savedViewsSubscriber(key: string): SavedViewsSubscribe {\n const cached = subscribeByKey.get(key);\n if (cached) return cached;\n const subscribe: SavedViewsSubscribe = listener => subscribeSavedViews(key, listener);\n subscribeByKey.set(key, subscribe);\n return subscribe;\n}\n\nfunction subscribeSavedViews(key: string, listener: () => void): () => void {\n const listeners = listenersByKey.get(key) ?? new Set<() => void>();\n listenersByKey.set(key, listeners);\n listeners.add(listener);\n const onStorage = (event: StorageEvent) => {\n if (event.key === key || event.key === null) listener();\n };\n window.addEventListener('storage', onStorage);\n return () => {\n listeners.delete(listener);\n window.removeEventListener('storage', onStorage);\n };\n}\n","import { useState, useSyncExternalStore } from 'react';\nimport { parseSavedViews, savedViewNameSchema, serializeSavedViews } from './saved-view-schema';\nimport type { SavedView, SavedViewSettingsSchema } from './saved-view-schema';\nimport { readSavedViewsRaw, savedViewsSubscriber, writeSavedViewsRaw } from './saved-views-storage';\nimport type { FilterBarItem } from '@/ds/components/FilterBar/types';\n\nconst NEW_SAVED_VIEW_NAME = 'Untitled view';\n\nexport type SavedViewContent<TSettings> = {\n filters: FilterBarItem[];\n settings: TSettings;\n};\n\nexport type SavedViewDraft<TSettings> = SavedViewContent<TSettings> & {\n viewId?: string;\n name: string;\n};\n\nexport type SavedViewDraftChange<TSettings> = Partial<Omit<SavedViewDraft<TSettings>, 'viewId'>>;\n\nexport type UseSavedViewsOptions<TSettings> = {\n storageKey: string;\n settingsSchema: SavedViewSettingsSchema<TSettings>;\n activeViewId: string | undefined;\n onActiveViewChange: (viewId: string | undefined) => void;\n};\n\nexport type SavedViewsController<TSettings> = {\n views: SavedView<TSettings>[];\n activeView: SavedView<TSettings> | undefined;\n draft: SavedViewDraft<TSettings> | undefined;\n unsaved: boolean;\n storageError: string | undefined;\n applied: SavedViewContent<TSettings> | undefined;\n select: (viewId: string | undefined) => void;\n create: (settings: TSettings, filters?: FilterBarItem[]) => void;\n edit: (viewId: string) => void;\n change: (patch: SavedViewDraftChange<TSettings>) => void;\n save: () => void;\n discard: () => void;\n rename: (viewId: string, name: string) => void;\n duplicate: (viewId: string) => void;\n remove: (viewId: string) => void;\n};\n\nfunction createSavedViewId(): string {\n if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') return crypto.randomUUID();\n return `view-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;\n}\n\nfunction validViewName(name: string): string | undefined {\n const parsed = savedViewNameSchema.safeParse(name);\n return parsed.success ? parsed.data : undefined;\n}\n\nfunction sameViewContent<TSettings>(draft: SavedViewDraft<TSettings>, view: SavedView<TSettings>): boolean {\n return (\n JSON.stringify([draft.name, draft.filters, draft.settings]) ===\n JSON.stringify([view.name, view.filters, view.settings])\n );\n}\n\nexport function useSavedViews<TSettings>({\n storageKey,\n settingsSchema,\n activeViewId,\n onActiveViewChange,\n}: UseSavedViewsOptions<TSettings>): SavedViewsController<TSettings> {\n const raw = useSyncExternalStore(\n savedViewsSubscriber(storageKey),\n () => readSavedViewsRaw(storageKey),\n () => null,\n );\n const views = parseSavedViews(raw, settingsSchema);\n const [failedStorageKey, setFailedStorageKey] = useState<string>();\n const [pendingDraft, setDraft] = useState<SavedViewDraft<TSettings>>();\n const [draftScope, setDraftScope] = useState({ storageKey, activeViewId });\n const draftView = views.find(view => view.id === pendingDraft?.viewId);\n const draftViewDeleted = pendingDraft?.viewId !== undefined && !draftView;\n const storageKeyChanged = draftScope.storageKey !== storageKey;\n if (storageKeyChanged || draftScope.activeViewId !== activeViewId || draftViewDeleted) {\n setDraftScope({ storageKey, activeViewId });\n if (storageKeyChanged || draftViewDeleted || pendingDraft?.viewId !== activeViewId) setDraft(undefined);\n }\n const draft = pendingDraft?.viewId === undefined || pendingDraft.viewId === activeViewId ? pendingDraft : undefined;\n const unsaved = draft !== undefined && (!draftView || !sameViewContent(draft, draftView));\n\n const activeView = views.find(view => view.id === activeViewId);\n const write = (next: SavedView<TSettings>[]) => {\n const saved = writeSavedViewsRaw(storageKey, serializeSavedViews(next));\n setFailedStorageKey(saved ? undefined : storageKey);\n return saved;\n };\n\n return {\n views,\n activeView,\n draft,\n unsaved,\n storageError:\n failedStorageKey === storageKey\n ? 'Could not save changes. Check your browser storage settings and try again.'\n : undefined,\n applied: draft ?? activeView,\n select: viewId => {\n setFailedStorageKey(undefined);\n setDraft(undefined);\n onActiveViewChange(viewId);\n },\n create: (settings, filters = []) => setDraft({ name: NEW_SAVED_VIEW_NAME, filters, settings }),\n edit: viewId => {\n if (draft?.viewId === viewId) return;\n const view = views.find(candidate => candidate.id === viewId);\n if (!view) return;\n const { id, ...content } = view;\n setDraft({ ...content, viewId: id });\n if (viewId !== activeViewId) onActiveViewChange(viewId);\n },\n change: patch => {\n if (draft) {\n setDraft({ ...draft, ...patch });\n return;\n }\n if (!activeView) return;\n const { id, ...content } = activeView;\n setDraft({ ...content, ...patch, viewId: id });\n },\n save: () => {\n if (!draft) return;\n const { viewId, ...content } = draft;\n const saved: SavedView<TSettings> = {\n ...content,\n id: viewId ?? createSavedViewId(),\n name: validViewName(content.name) ?? views.find(view => view.id === viewId)?.name ?? NEW_SAVED_VIEW_NAME,\n };\n if (!write(viewId ? views.map(view => (view.id === viewId ? saved : view)) : [...views, saved])) return;\n setDraft(undefined);\n if (saved.id !== activeViewId) onActiveViewChange(saved.id);\n },\n discard: () => {\n setFailedStorageKey(undefined);\n setDraft(undefined);\n },\n rename: (viewId, name) => {\n const nextName = validViewName(name);\n if (!nextName) return;\n if (!write(views.map(view => (view.id === viewId ? { ...view, name: nextName } : view)))) return;\n if (draft?.viewId === viewId) setDraft({ ...draft, name: nextName });\n },\n duplicate: viewId => {\n const index = views.findIndex(view => view.id === viewId);\n const original = views[index];\n if (!original) return;\n const copy: SavedView<TSettings> = {\n ...original,\n id: createSavedViewId(),\n name: validViewName(`${original.name} copy`) ?? original.name,\n };\n if (!write(views.toSpliced(index + 1, 0, copy))) return;\n setDraft(undefined);\n onActiveViewChange(copy.id);\n },\n remove: viewId => {\n if (!write(views.filter(view => view.id !== viewId))) return;\n if (draft?.viewId === viewId) setDraft(undefined);\n if (activeViewId === viewId) onActiveViewChange(undefined);\n },\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SavedViews.es.js","names":["_Fragment","_Fragment"],"sources":["../../src/ds/components/SavedViews/saved-view-name-input.tsx","../../src/ds/components/SavedViews/saved-view-summary.tsx","../../src/ds/components/SavedViews/saved-view-tabs.tsx","../../src/ds/components/SavedViews/saved-view-editor.tsx","../../src/ds/components/SavedViews/saved-views-storage.ts","../../src/ds/components/SavedViews/use-saved-views.ts"],"sourcesContent":["import { MAX_SAVED_VIEW_NAME_CHARS } from './saved-view-schema';\nimport { passwordManagerOptOutProps } from '@/ds/primitives/password-manager-autofill';\n\n// Uncontrolled so blur is the one exit: Enter blurs, Escape restores the name first, blur commits.\nexport function SavedViewNameInput({ name, onCommit }: { name: string; onCommit: (name: string) => void }) {\n return (\n <input\n autoFocus\n aria-label=\"View name\"\n defaultValue={name}\n maxLength={MAX_SAVED_VIEW_NAME_CHARS}\n {...passwordManagerOptOutProps}\n onFocus={event => event.currentTarget.select()}\n onBlur={event => onCommit(event.currentTarget.value)}\n onKeyDown={event => {\n if (event.key === 'Escape') event.currentTarget.value = name;\n if (event.key === 'Enter' || event.key === 'Escape') {\n event.preventDefault();\n event.currentTarget.blur();\n }\n }}\n className=\"field-sizing-content min-w-12 bg-transparent text-foreground outline-hidden\"\n />\n );\n}\n","import type { ReactNode } from 'react';\nimport { FilterBarFieldLabel, formatValue } from '@/ds/components/FilterBar/filter-bar-chip';\nimport type { FilterBarField, FilterBarItem, FilterBarOperator } from '@/ds/components/FilterBar/types';\nimport { Txt } from '@/ds/components/Txt';\n\ntype SavedViewSummaryProps = {\n filters: readonly FilterBarItem[];\n fields: readonly FilterBarField[];\n operators: readonly FilterBarOperator[];\n settings?: ReactNode;\n};\n\nexport function SavedViewSummary({ filters, fields, operators, settings }: SavedViewSummaryProps) {\n return (\n <div className=\"flex min-w-48 flex-col gap-2\">\n {filters.length === 0 ? (\n <Txt variant=\"caption\" tone=\"muted\">\n No filters\n </Txt>\n ) : (\n <ul aria-label=\"Filters\" className=\"flex flex-col gap-1.5\">\n {filters.map(filter => {\n const field = fields.find(candidate => candidate.id === filter.fieldId);\n const operatorStated = (field?.operators?.length ?? operators.length) > 1;\n const operator = operators.find(candidate => candidate.id === filter.operatorId);\n return (\n <li key={filter.id} className=\"min-w-0\">\n <Txt as=\"span\" variant=\"body-sm\" className=\"flex min-w-0 items-center gap-1.5\">\n <span className=\"flex min-w-0 shrink-0 items-center gap-1 text-muted-foreground\">\n <FilterBarFieldLabel field={field} label={field?.label ?? filter.fieldId} />\n </span>\n {operatorStated && <span className=\"shrink-0 text-muted-foreground\">{operator?.label}</span>}\n <span className=\"min-w-0 truncate\">{formatValue(filter.value, field)}</span>\n </Txt>\n </li>\n );\n })}\n </ul>\n )}\n {settings}\n </div>\n );\n}\n","import { CopyIcon, LayersIcon, LayersPlusIcon, PencilIcon, TextCursorInputIcon, Trash2Icon } from 'lucide-react';\nimport { Fragment, useRef, useState } from 'react';\nimport type { ReactNode } from 'react';\nimport { SavedViewNameInput } from './saved-view-name-input';\nimport type { SavedView } from './saved-view-schema';\nimport { SavedViewSummary } from './saved-view-summary';\nimport type { SavedViewsController } from './use-saved-views';\nimport { Button, buttonVariants } from '@/ds/components/Button/Button';\nimport { ContextMenu } from '@/ds/components/ContextMenu';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu';\nimport type { FilterBarField, FilterBarOperator } from '@/ds/components/FilterBar/types';\nimport { HoverCard, HoverCardContent, HoverCardTrigger } from '@/ds/components/HoverCard';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { controlHeight } from '@/ds/primitives/control-size';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\nimport { cn } from '@/lib/utils';\n\nconst restingTabClass = buttonVariants({ variant: 'default', size: 'sm' });\nconst selectedTabClass = buttonVariants({ variant: 'subtle', size: 'sm' });\nconst editingTabClass = cn(\n controlHeight.sm,\n 'inline-flex items-center gap-1.5 rounded-full border border-dashed border-border-strong bg-fill-hover px-[.9em] text-label text-foreground',\n '[&_svg]:size-3.5 [&_svg]:shrink-0',\n);\n\nexport type SavedViewTabsProps<TSettings> = {\n views: SavedViewsController<TSettings>;\n fields: readonly FilterBarField[];\n operators: readonly FilterBarOperator[];\n defaultLabel: string;\n newViewSettings: NoInfer<TSettings>;\n describeSettings?: (settings: TSettings) => ReactNode;\n 'aria-label'?: string;\n className?: string;\n};\n\nexport function SavedViewTabs<TSettings>({\n views,\n fields,\n operators,\n defaultLabel,\n newViewSettings,\n describeSettings,\n 'aria-label': ariaLabel = 'Views',\n className,\n}: SavedViewTabsProps<TSettings>) {\n const [renamingViewId, setRenamingViewId] = useState<string>();\n const { draft } = views;\n const creating = draft !== undefined && draft.viewId === undefined;\n const defaultSelected = views.activeView === undefined && !creating;\n // A blank name cancels; a failed rename stays open with what was typed so it can be retried.\n const commitRename = async (viewId: string, name: string) => {\n if (!name.trim()) return setRenamingViewId(undefined);\n const renamed = views.rename(viewId, name);\n // A synchronous controller closes in the same render; only an async one waits.\n if (typeof renamed === 'boolean' ? renamed : await renamed) setRenamingViewId(undefined);\n };\n\n return (\n <div role=\"group\" aria-label={ariaLabel} className={cn('flex flex-wrap items-center gap-1.5', className)}>\n <button\n type=\"button\"\n aria-pressed={defaultSelected}\n className={defaultSelected ? selectedTabClass : restingTabClass}\n onClick={() => views.select(undefined)}\n >\n {defaultLabel}\n </button>\n {views.views.map(view => {\n if (renamingViewId === view.id) {\n return <RenamingViewTab key={view.id} name={view.name} onCommit={name => void commitRename(view.id, name)} />;\n }\n return (\n <SavedViewTab\n key={view.id}\n view={view}\n selected={views.activeView?.id === view.id && !creating}\n unsaved={draft?.viewId === view.id && views.unsaved}\n fields={fields}\n operators={operators}\n settings={describeSettings?.(view.settings)}\n onSelect={() => views.select(view.id)}\n onEdit={() => views.edit(view.id)}\n onRename={() => setRenamingViewId(view.id)}\n onDuplicate={() => views.duplicate(view.id)}\n onDelete={() => views.remove(view.id)}\n />\n );\n })}\n {views.error && (\n <Txt role=\"alert\" variant=\"caption\" className=\"w-full text-destructive-foreground\">\n {views.error}\n </Txt>\n )}\n {creating ? (\n <EditingViewTab name={draft.name} unsaved onRename={name => views.change({ name })} />\n ) : (\n <Button\n type=\"button\"\n size=\"icon-sm\"\n tooltip=\"New view\"\n disabled={draft !== undefined}\n onClick={() => views.create(newViewSettings)}\n >\n <LayersPlusIcon />\n </Button>\n )}\n </div>\n );\n}\n\nfunction EditingViewTab({\n name,\n unsaved,\n onRename,\n}: {\n name: string;\n unsaved: boolean;\n onRename: (name: string) => void;\n}) {\n const [renaming, setRenaming] = useState(false);\n return (\n <span aria-current=\"true\" className={editingTabClass}>\n <LayersIcon aria-hidden />\n {renaming ? (\n <SavedViewNameInput\n name={name}\n onCommit={next => {\n setRenaming(false);\n if (next.trim()) onRename(next);\n }}\n />\n ) : (\n <>\n <span className=\"max-w-48 truncate\">{name}</span>\n {unsaved && (\n <>\n <span className=\"size-1.5 shrink-0 rounded-full bg-warning-indicator\" aria-hidden />\n <VisuallyHidden>Unsaved changes</VisuallyHidden>\n </>\n )}\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n tooltip=\"Rename view\"\n className=\"-mr-2 size-6\"\n onClick={() => setRenaming(true)}\n >\n <PencilIcon />\n </Button>\n </>\n )}\n </span>\n );\n}\n\nfunction RenamingViewTab({ name, onCommit }: { name: string; onCommit: (name: string) => void }) {\n return (\n <span className={cn(restingTabClass, 'gap-1.5')}>\n <SavedViewTabIcon />\n <SavedViewNameInput name={name} onCommit={onCommit} />\n </span>\n );\n}\n\nfunction SavedViewTabIcon() {\n return (\n <Icon data-slot=\"button-icon\" size=\"sm\">\n <LayersIcon aria-hidden />\n </Icon>\n );\n}\n\nfunction SavedViewTab<TSettings>({\n view,\n selected,\n unsaved,\n fields,\n operators,\n settings,\n onSelect,\n onEdit,\n onRename,\n onDuplicate,\n onDelete,\n}: {\n view: SavedView<TSettings>;\n selected: boolean;\n unsaved: boolean;\n fields: readonly FilterBarField[];\n operators: readonly FilterBarOperator[];\n settings: ReactNode;\n onSelect: () => void;\n onEdit: () => void;\n onRename: () => void;\n onDuplicate: () => void;\n onDelete: () => void;\n}) {\n const actions: ViewAction[] = [\n { label: 'Edit view', icon: <PencilIcon aria-hidden />, onClick: onEdit },\n { label: 'Rename', icon: <TextCursorInputIcon aria-hidden />, onClick: onRename },\n { label: 'Duplicate', icon: <CopyIcon aria-hidden />, onClick: onDuplicate },\n { label: 'Delete view', icon: <Trash2Icon aria-hidden />, onClick: onDelete, destructive: true },\n ];\n const [menuOpen, setMenuOpen] = useState(false);\n const [previewOpen, setPreviewOpen] = useState(false);\n // The trigger asks to open a frame after the click, when the click that selected the tab has\n // already re-rendered it as selected. Only a click on the selected tab opens the menu.\n const clickOpensMenuRef = useRef(true);\n const changeMenuOpen = (open: boolean) => {\n setMenuOpen(selected && open && clickOpensMenuRef.current);\n if (open) setPreviewOpen(false);\n };\n\n return (\n <ContextMenu>\n <DropdownMenu open={selected && menuOpen} onOpenChange={changeMenuOpen}>\n <HoverCard open={!selected && previewOpen} onOpenChange={setPreviewOpen}>\n <ContextMenu.Trigger\n render={\n <HoverCardTrigger\n delay={400}\n render={\n <DropdownMenu.Trigger\n render={\n <button\n type=\"button\"\n aria-pressed={selected}\n aria-haspopup={selected ? 'menu' : undefined}\n onClick={() => {\n clickOpensMenuRef.current = selected;\n if (selected) return;\n setPreviewOpen(false);\n onSelect();\n }}\n className={cn(selected ? selectedTabClass : restingTabClass, 'gap-1.5')}\n />\n }\n />\n }\n />\n }\n >\n <SavedViewTabIcon />\n <span className=\"max-w-48 truncate\">{view.name}</span>\n {unsaved && <span className=\"size-1.5 shrink-0 rounded-full bg-warning-indicator\" aria-hidden />}\n </ContextMenu.Trigger>\n <HoverCardContent side=\"bottom\" align=\"start\" showArrow={false}>\n <SavedViewSummary filters={view.filters} fields={fields} operators={operators} settings={settings} />\n </HoverCardContent>\n </HoverCard>\n <DropdownMenu.Content align=\"start\">\n {actions.map(action => (\n <Fragment key={action.label}>\n {action.destructive && <DropdownMenu.Separator />}\n <DropdownMenu.Item variant={action.destructive ? 'destructive' : 'default'} onClick={action.onClick}>\n {action.icon}\n {action.label}\n </DropdownMenu.Item>\n </Fragment>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n <ContextMenu.Content>\n {actions.map(action => (\n <Fragment key={action.label}>\n {action.destructive && <ContextMenu.Separator />}\n <ContextMenu.Item variant={action.destructive ? 'destructive' : 'default'} onClick={action.onClick}>\n {action.icon}\n {action.label}\n </ContextMenu.Item>\n </Fragment>\n ))}\n </ContextMenu.Content>\n </ContextMenu>\n );\n}\n\ntype ViewAction = { label: string; icon: ReactNode; onClick: () => void; destructive?: boolean };\n","import type { ReactNode } from 'react';\nimport type { SavedViewsController } from './use-saved-views';\nimport { Button } from '@/ds/components/Button/Button';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport type SavedViewEditorProps<TSettings> = {\n views: SavedViewsController<TSettings>;\n /** Shown next to the save button of a new view, e.g. where it is saved (\"Saved in this browser\"). */\n saveCaption?: ReactNode;\n children?: ReactNode;\n className?: string;\n};\n\nexport function SavedViewEditor<TSettings>({\n views,\n saveCaption,\n children,\n className,\n}: SavedViewEditorProps<TSettings>) {\n const { draft } = views;\n const creating = draft?.viewId === undefined;\n return (\n <div\n role={draft ? 'group' : undefined}\n aria-label={draft ? `Edit view ${draft.name}` : undefined}\n className={cn('flex min-w-0 flex-wrap items-center gap-2', className)}\n >\n {children}\n {draft && (\n <>\n {!creating && views.unsaved && (\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n Unsaved changes\n </Txt>\n )}\n <div className=\"ml-auto flex shrink-0 items-center gap-3\">\n {creating && saveCaption && (\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\" className=\"max-sm:hidden\">\n {saveCaption}\n </Txt>\n )}\n <div className=\"flex items-center gap-1\">\n <Button type=\"button\" variant=\"ghost\" size=\"sm\" disabled={views.pending} onClick={views.discard}>\n {creating ? 'Cancel' : 'Reset'}\n </Button>\n <Button\n type=\"button\"\n variant=\"primary\"\n size=\"sm\"\n disabled={!views.unsaved || views.pending}\n onClick={views.save}\n >\n {creating ? 'Save view' : 'Save changes'}\n </Button>\n </div>\n </div>\n </>\n )}\n </div>\n );\n}\n","type SavedViewsSubscribe = (listener: () => void) => () => void;\n\nconst listenersByKey = new Map<string, Set<() => void>>();\nconst subscribeByKey = new Map<string, SavedViewsSubscribe>();\n\nexport function readSavedViewsRaw(key: string): string | null {\n try {\n return window.localStorage.getItem(key);\n } catch {\n return null;\n }\n}\n\nexport function writeSavedViewsRaw(key: string, raw: string): boolean {\n try {\n window.localStorage.setItem(key, raw);\n } catch {\n return false;\n }\n listenersByKey.get(key)?.forEach(listener => listener());\n return true;\n}\n\nexport function savedViewsSubscriber(key: string): SavedViewsSubscribe {\n const cached = subscribeByKey.get(key);\n if (cached) return cached;\n const subscribe: SavedViewsSubscribe = listener => subscribeSavedViews(key, listener);\n subscribeByKey.set(key, subscribe);\n return subscribe;\n}\n\nfunction subscribeSavedViews(key: string, listener: () => void): () => void {\n const listeners = listenersByKey.get(key) ?? new Set<() => void>();\n listenersByKey.set(key, listeners);\n listeners.add(listener);\n const onStorage = (event: StorageEvent) => {\n if (event.key === key || event.key === null) listener();\n };\n window.addEventListener('storage', onStorage);\n return () => {\n listeners.delete(listener);\n window.removeEventListener('storage', onStorage);\n };\n}\n","import { useState, useSyncExternalStore } from 'react';\nimport { parseSavedViews, savedViewNameSchema, serializeSavedViews } from './saved-view-schema';\nimport type { SavedView, SavedViewSettingsSchema } from './saved-view-schema';\nimport { readSavedViewsRaw, savedViewsSubscriber, writeSavedViewsRaw } from './saved-views-storage';\nimport type { FilterBarItem } from '@/ds/components/FilterBar/types';\n\nconst NEW_SAVED_VIEW_NAME = 'Untitled view';\n\nexport type SavedViewContent<TSettings> = {\n filters: FilterBarItem[];\n settings: TSettings;\n};\n\nexport type SavedViewDraft<TSettings> = SavedViewContent<TSettings> & {\n viewId?: string;\n name: string;\n};\n\nexport type SavedViewDraftChange<TSettings> = Partial<Omit<SavedViewDraft<TSettings>, 'viewId'>>;\n\nexport type UseSavedViewsOptions<TSettings> = {\n storageKey: string;\n settingsSchema: SavedViewSettingsSchema<TSettings>;\n activeViewId: string | undefined;\n onActiveViewChange: (viewId: string | undefined) => void;\n};\n\nexport type SavedViewsController<TSettings> = {\n views: SavedView<TSettings>[];\n activeView: SavedView<TSettings> | undefined;\n draft: SavedViewDraft<TSettings> | undefined;\n unsaved: boolean;\n /** A failed save, rename, duplicate or delete, shown under the tabs. */\n error: string | undefined;\n /** A change is being saved; the save actions are disabled until it settles. */\n pending?: boolean;\n applied: SavedViewContent<TSettings> | undefined;\n select: (viewId: string | undefined) => void;\n create: (settings: TSettings, filters?: FilterBarItem[]) => void;\n edit: (viewId: string) => void;\n change: (patch: SavedViewDraftChange<TSettings>) => void;\n save: () => void;\n discard: () => void;\n /** Resolves true once the view has the new name; false leaves the error in `error`. */\n rename: (viewId: string, name: string) => boolean | Promise<boolean>;\n duplicate: (viewId: string) => void;\n remove: (viewId: string) => void;\n};\n\nfunction createSavedViewId(): string {\n if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') return crypto.randomUUID();\n return `view-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;\n}\n\nfunction validViewName(name: string): string | undefined {\n const parsed = savedViewNameSchema.safeParse(name);\n return parsed.success ? parsed.data : undefined;\n}\n\nfunction sameViewContent<TSettings>(draft: SavedViewDraft<TSettings>, view: SavedView<TSettings>): boolean {\n return (\n JSON.stringify([draft.name, draft.filters, draft.settings]) ===\n JSON.stringify([view.name, view.filters, view.settings])\n );\n}\n\nexport function useSavedViews<TSettings>({\n storageKey,\n settingsSchema,\n activeViewId,\n onActiveViewChange,\n}: UseSavedViewsOptions<TSettings>): SavedViewsController<TSettings> {\n const raw = useSyncExternalStore(\n savedViewsSubscriber(storageKey),\n () => readSavedViewsRaw(storageKey),\n () => null,\n );\n const views = parseSavedViews(raw, settingsSchema);\n const [failedStorageKey, setFailedStorageKey] = useState<string>();\n const [pendingDraft, setDraft] = useState<SavedViewDraft<TSettings>>();\n const [draftScope, setDraftScope] = useState({ storageKey, activeViewId });\n const draftView = views.find(view => view.id === pendingDraft?.viewId);\n const draftViewDeleted = pendingDraft?.viewId !== undefined && !draftView;\n const storageKeyChanged = draftScope.storageKey !== storageKey;\n if (storageKeyChanged || draftScope.activeViewId !== activeViewId || draftViewDeleted) {\n setDraftScope({ storageKey, activeViewId });\n if (storageKeyChanged || draftViewDeleted || pendingDraft?.viewId !== activeViewId) setDraft(undefined);\n }\n const draft = pendingDraft?.viewId === undefined || pendingDraft.viewId === activeViewId ? pendingDraft : undefined;\n const unsaved = draft !== undefined && (!draftView || !sameViewContent(draft, draftView));\n\n const activeView = views.find(view => view.id === activeViewId);\n const write = (next: SavedView<TSettings>[]) => {\n const saved = writeSavedViewsRaw(storageKey, serializeSavedViews(next));\n setFailedStorageKey(saved ? undefined : storageKey);\n return saved;\n };\n\n return {\n views,\n activeView,\n draft,\n unsaved,\n error:\n failedStorageKey === storageKey\n ? 'Could not save changes. Check your browser storage settings and try again.'\n : undefined,\n applied: draft ?? activeView,\n select: viewId => {\n setFailedStorageKey(undefined);\n setDraft(undefined);\n onActiveViewChange(viewId);\n },\n create: (settings, filters = []) => setDraft({ name: NEW_SAVED_VIEW_NAME, filters, settings }),\n edit: viewId => {\n if (draft?.viewId === viewId) return;\n const view = views.find(candidate => candidate.id === viewId);\n if (!view) return;\n const { id, ...content } = view;\n setDraft({ ...content, viewId: id });\n if (viewId !== activeViewId) onActiveViewChange(viewId);\n },\n change: patch => {\n if (patch.name !== undefined) setFailedStorageKey(undefined);\n if (draft) {\n setDraft({ ...draft, ...patch });\n return;\n }\n if (!activeView) return;\n const { id, ...content } = activeView;\n setDraft({ ...content, ...patch, viewId: id });\n },\n save: () => {\n if (!draft) return;\n const { viewId, ...content } = draft;\n const saved: SavedView<TSettings> = {\n ...content,\n id: viewId ?? createSavedViewId(),\n name: validViewName(content.name) ?? views.find(view => view.id === viewId)?.name ?? NEW_SAVED_VIEW_NAME,\n };\n if (!write(viewId ? views.map(view => (view.id === viewId ? saved : view)) : [...views, saved])) return;\n setDraft(undefined);\n if (saved.id !== activeViewId) onActiveViewChange(saved.id);\n },\n discard: () => {\n setFailedStorageKey(undefined);\n setDraft(undefined);\n },\n rename: (viewId, name) => {\n const nextName = validViewName(name);\n if (!nextName) return false;\n if (!write(views.map(view => (view.id === viewId ? { ...view, name: nextName } : view)))) return false;\n if (draft?.viewId === viewId) setDraft({ ...draft, name: nextName });\n return true;\n },\n duplicate: viewId => {\n const index = views.findIndex(view => view.id === viewId);\n const original = views[index];\n if (!original) return;\n const copy: SavedView<TSettings> = {\n ...original,\n id: createSavedViewId(),\n name: validViewName(`${original.name} copy`) ?? original.name,\n };\n if (!write(views.toSpliced(index + 1, 0, copy))) return;\n setDraft(undefined);\n onActiveViewChange(copy.id);\n },\n remove: viewId => {\n if (!write(views.filter(view => view.id !== viewId))) return;\n if (draft?.viewId === viewId) setDraft(undefined);\n if (activeViewId === viewId) onActiveViewChange(undefined);\n },\n };\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_activity = require("../../activity-
|
|
2
|
+
const require_activity = require("../../activity-DAK8tj7r.cjs");
|
|
3
3
|
exports.Activity = require_activity.Activity;
|
|
4
4
|
exports.ActivityContent = require_activity.ActivityContent;
|
|
5
5
|
exports.ActivityDetail = require_activity.ActivityDetail;
|
|
@@ -14,9 +14,11 @@ exports.ActivitySpacer = require_activity.ActivitySpacer;
|
|
|
14
14
|
exports.ActivitySummary = require_activity.ActivitySummary;
|
|
15
15
|
exports.ActivityTrailing = require_activity.ActivityTrailing;
|
|
16
16
|
exports.ActivityTrigger = require_activity.ActivityTrigger;
|
|
17
|
+
exports.ActivityWorkingDirectory = require_activity.ActivityWorkingDirectory;
|
|
17
18
|
exports.NotificationActivity = require_activity.NotificationActivity;
|
|
18
19
|
exports.ReasoningActivity = require_activity.ReasoningActivity;
|
|
19
20
|
exports.ReasoningText = require_activity.ReasoningText;
|
|
20
21
|
exports.SignalActivity = require_activity.SignalActivity;
|
|
21
22
|
exports.hasReasoningText = require_activity.hasReasoningText;
|
|
22
23
|
exports.hasVisibleReasoning = require_activity.hasVisibleReasoning;
|
|
24
|
+
exports.useRelativePaths = require_activity.useRelativePaths;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { s as Activity, c as ActivityContent, l as ActivityDetail, u as ActivityDisclosure, d as ActivityHeader, f as ActivityHeadline, p as ActivityIcon, m as ActivityItem, h as ActivityLabel, g as ActivityLeading, _ as ActivitySpacer, v as ActivitySummary, y as ActivityTrailing, b as ActivityTrigger, o as NotificationActivity, n as ReasoningActivity, a as ReasoningText, t as SignalActivity, r as hasReasoningText, i as hasVisibleReasoning } from "../../activity-
|
|
1
|
+
export { s as Activity, c as ActivityContent, l as ActivityDetail, u as ActivityDisclosure, d as ActivityHeader, f as ActivityHeadline, p as ActivityIcon, m as ActivityItem, h as ActivityLabel, g as ActivityLeading, _ as ActivitySpacer, v as ActivitySummary, y as ActivityTrailing, b as ActivityTrigger, x as ActivityWorkingDirectory, o as NotificationActivity, n as ReasoningActivity, a as ReasoningText, t as SignalActivity, r as hasReasoningText, i as hasVisibleReasoning, S as useRelativePaths } from "../../activity-CM34JyW-.js";
|
|
@@ -67,7 +67,8 @@ function revealedParts(parts, shown) {
|
|
|
67
67
|
* A message's parts as far as the reveal has laid them down. Hand the result to
|
|
68
68
|
* `MessageFactory` in place of the message's own parts and the whole reply — prose,
|
|
69
69
|
* reasoning, tool rows, cards — arrives at the pace it was written, from one clock,
|
|
70
|
-
* without a renderer having to know a reveal is running.
|
|
70
|
+
* without a renderer having to know a reveal is running. Once fully revealed it returns
|
|
71
|
+
* the caller's own `parts` array, so `result === parts` means the reveal has settled.
|
|
71
72
|
*/
|
|
72
73
|
function useRevealedParts(parts, streaming) {
|
|
73
74
|
return revealedParts(parts, require_use_reveal.useRevealedText(messageScript(parts), streaming));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-reveal.cjs.js","names":["useRevealedText"],"sources":["../../../src/ds/components/ai/message-reveal/message-reveal.ts"],"sourcesContent":["import type { MastraDBMessage } from '@mastra/core/agent/message-list';\n\nimport { useRevealedText } from '../../MarkdownRenderer/use-reveal';\n\ntype MessagePart = MastraDBMessage['content']['parts'][number];\n\n/** What separates two passages of prose that were streamed as separate blocks. */\nconst PASSAGE = '\\n\\n';\n\n/**\n * A part that is not prose, written into the reveal's script as words so it takes a\n * beat on the same clock: a burst of parallel tool calls cascades in row by row, at\n * the pace the reply is moving, instead of landing as one block.\n */\nconst ROW_MARK = Array.from({ length: 6 }, () => '').join(' ');\n\n/**\n * The words a part was written as, for the kinds the model writes word by word.\n * Reasoning streams delta by delta exactly like prose, so its passage takes its\n * words' time on the clock rather than one row's beat — a beat would hold the\n * block back whole, then let it land at once and grow unpaced.\n */\nfunction partProse(part: MessagePart): string | undefined {\n if (part.type === 'text') return part.text;\n if (part.type === 'reasoning') return part.reasoning;\n return undefined;\n}\n\n/** What the reveal paces: the whole message, rows and cards written in as beats between the prose. */\nexport function messageScript(parts: MessagePart[]): string {\n return parts.map(part => partProse(part) ?? ROW_MARK).join(PASSAGE);\n}\n\n/**\n * The parts of a message a reveal has reached, `shown` being a prefix of the script.\n *\n * A reply is not only prose: a tool row, a card, a reasoning block sit between its\n * passages, and they were written in that order. Pacing the prose alone would lay a\n * sentence down word by word while the row that follows it is already on screen — so\n * every part waits its turn on the one clock, and the reader is handed the answer in\n * the order it was written.\n */\nexport function revealedParts(parts: MessagePart[], shown: string): MessagePart[] {\n const script = messageScript(parts);\n if (shown.length >= script.length) return parts;\n\n const revealed: MessagePart[] = [];\n let read = 0;\n\n for (const part of parts) {\n const start = read === 0 ? 0 : read + PASSAGE.length;\n\n if (part.type !== 'text' && part.type !== 'reasoning') {\n read = start + ROW_MARK.length;\n if (shown.length < read) break;\n revealed.push(part);\n continue;\n }\n\n const written = part.type === 'text' ? part.text : part.reasoning;\n read = start + written.length;\n\n const text = shown.slice(start, read);\n if (text === written) {\n revealed.push(part);\n continue;\n }\n\n if (text) revealed.push(part.type === 'text' ? { ...part, text } : { ...part, reasoning: text });\n break;\n }\n\n return revealed;\n}\n\n/**\n * A message's parts as far as the reveal has laid them down. Hand the result to\n * `MessageFactory` in place of the message's own parts and the whole reply — prose,\n * reasoning, tool rows, cards — arrives at the pace it was written, from one clock,\n * without a renderer having to know a reveal is running.\n */\nexport function useRevealedParts(parts: MessagePart[], streaming: boolean): MessagePart[] {\n const shown = useRevealedText(messageScript(parts), streaming);\n\n return revealedParts(parts, shown);\n}\n"],"mappings":";;;;AAOA,IAAM,UAAU;;;;;;AAOhB,IAAM,WAAW,MAAM,KAAK,EAAE,QAAQ,EAAE,SAAS,GAAG,CAAC,CAAC,KAAK,GAAG;;;;;;;AAQ9D,SAAS,UAAU,MAAuC;CACxD,IAAI,KAAK,SAAS,QAAQ,OAAO,KAAK;CACtC,IAAI,KAAK,SAAS,aAAa,OAAO,KAAK;AAE7C;;AAGA,SAAgB,cAAc,OAA8B;CAC1D,OAAO,MAAM,KAAI,SAAQ,UAAU,IAAI,KAAK,QAAQ,CAAC,CAAC,KAAK,OAAO;AACpE;;;;;;;;;;AAWA,SAAgB,cAAc,OAAsB,OAA8B;CAChF,MAAM,SAAS,cAAc,KAAK;CAClC,IAAI,MAAM,UAAU,OAAO,QAAQ,OAAO;CAE1C,MAAM,WAA0B,CAAC;CACjC,IAAI,OAAO;CAEX,KAAK,MAAM,QAAQ,OAAO;EACxB,MAAM,QAAQ,SAAS,IAAI,IAAI,OAAO;EAEtC,IAAI,KAAK,SAAS,UAAU,KAAK,SAAS,aAAa;GACrD,OAAO,QAAQ,SAAS;GACxB,IAAI,MAAM,SAAS,MAAM;GACzB,SAAS,KAAK,IAAI;GAClB;EACF;EAEA,MAAM,UAAU,KAAK,SAAS,SAAS,KAAK,OAAO,KAAK;EACxD,OAAO,QAAQ,QAAQ;EAEvB,MAAM,OAAO,MAAM,MAAM,OAAO,IAAI;EACpC,IAAI,SAAS,SAAS;GACpB,SAAS,KAAK,IAAI;GAClB;EACF;EAEA,IAAI,MAAM,SAAS,KAAK,KAAK,SAAS,SAAS;GAAE,GAAG;GAAM;EAAK,IAAI;GAAE,GAAG;GAAM,WAAW;EAAK,CAAC;EAC/F;CACF;CAEA,OAAO;AACT
|
|
1
|
+
{"version":3,"file":"message-reveal.cjs.js","names":["useRevealedText"],"sources":["../../../src/ds/components/ai/message-reveal/message-reveal.ts"],"sourcesContent":["import type { MastraDBMessage } from '@mastra/core/agent/message-list';\n\nimport { useRevealedText } from '../../MarkdownRenderer/use-reveal';\n\ntype MessagePart = MastraDBMessage['content']['parts'][number];\n\n/** What separates two passages of prose that were streamed as separate blocks. */\nconst PASSAGE = '\\n\\n';\n\n/**\n * A part that is not prose, written into the reveal's script as words so it takes a\n * beat on the same clock: a burst of parallel tool calls cascades in row by row, at\n * the pace the reply is moving, instead of landing as one block.\n */\nconst ROW_MARK = Array.from({ length: 6 }, () => '').join(' ');\n\n/**\n * The words a part was written as, for the kinds the model writes word by word.\n * Reasoning streams delta by delta exactly like prose, so its passage takes its\n * words' time on the clock rather than one row's beat — a beat would hold the\n * block back whole, then let it land at once and grow unpaced.\n */\nfunction partProse(part: MessagePart): string | undefined {\n if (part.type === 'text') return part.text;\n if (part.type === 'reasoning') return part.reasoning;\n return undefined;\n}\n\n/** What the reveal paces: the whole message, rows and cards written in as beats between the prose. */\nexport function messageScript(parts: MessagePart[]): string {\n return parts.map(part => partProse(part) ?? ROW_MARK).join(PASSAGE);\n}\n\n/**\n * The parts of a message a reveal has reached, `shown` being a prefix of the script.\n *\n * A reply is not only prose: a tool row, a card, a reasoning block sit between its\n * passages, and they were written in that order. Pacing the prose alone would lay a\n * sentence down word by word while the row that follows it is already on screen — so\n * every part waits its turn on the one clock, and the reader is handed the answer in\n * the order it was written.\n */\nexport function revealedParts(parts: MessagePart[], shown: string): MessagePart[] {\n const script = messageScript(parts);\n if (shown.length >= script.length) return parts;\n\n const revealed: MessagePart[] = [];\n let read = 0;\n\n for (const part of parts) {\n const start = read === 0 ? 0 : read + PASSAGE.length;\n\n if (part.type !== 'text' && part.type !== 'reasoning') {\n read = start + ROW_MARK.length;\n if (shown.length < read) break;\n revealed.push(part);\n continue;\n }\n\n const written = part.type === 'text' ? part.text : part.reasoning;\n read = start + written.length;\n\n const text = shown.slice(start, read);\n if (text === written) {\n revealed.push(part);\n continue;\n }\n\n if (text) revealed.push(part.type === 'text' ? { ...part, text } : { ...part, reasoning: text });\n break;\n }\n\n return revealed;\n}\n\n/**\n * A message's parts as far as the reveal has laid them down. Hand the result to\n * `MessageFactory` in place of the message's own parts and the whole reply — prose,\n * reasoning, tool rows, cards — arrives at the pace it was written, from one clock,\n * without a renderer having to know a reveal is running. Once fully revealed it returns\n * the caller's own `parts` array, so `result === parts` means the reveal has settled.\n */\nexport function useRevealedParts(parts: MessagePart[], streaming: boolean): MessagePart[] {\n const shown = useRevealedText(messageScript(parts), streaming);\n\n return revealedParts(parts, shown);\n}\n"],"mappings":";;;;AAOA,IAAM,UAAU;;;;;;AAOhB,IAAM,WAAW,MAAM,KAAK,EAAE,QAAQ,EAAE,SAAS,GAAG,CAAC,CAAC,KAAK,GAAG;;;;;;;AAQ9D,SAAS,UAAU,MAAuC;CACxD,IAAI,KAAK,SAAS,QAAQ,OAAO,KAAK;CACtC,IAAI,KAAK,SAAS,aAAa,OAAO,KAAK;AAE7C;;AAGA,SAAgB,cAAc,OAA8B;CAC1D,OAAO,MAAM,KAAI,SAAQ,UAAU,IAAI,KAAK,QAAQ,CAAC,CAAC,KAAK,OAAO;AACpE;;;;;;;;;;AAWA,SAAgB,cAAc,OAAsB,OAA8B;CAChF,MAAM,SAAS,cAAc,KAAK;CAClC,IAAI,MAAM,UAAU,OAAO,QAAQ,OAAO;CAE1C,MAAM,WAA0B,CAAC;CACjC,IAAI,OAAO;CAEX,KAAK,MAAM,QAAQ,OAAO;EACxB,MAAM,QAAQ,SAAS,IAAI,IAAI,OAAO;EAEtC,IAAI,KAAK,SAAS,UAAU,KAAK,SAAS,aAAa;GACrD,OAAO,QAAQ,SAAS;GACxB,IAAI,MAAM,SAAS,MAAM;GACzB,SAAS,KAAK,IAAI;GAClB;EACF;EAEA,MAAM,UAAU,KAAK,SAAS,SAAS,KAAK,OAAO,KAAK;EACxD,OAAO,QAAQ,QAAQ;EAEvB,MAAM,OAAO,MAAM,MAAM,OAAO,IAAI;EACpC,IAAI,SAAS,SAAS;GACpB,SAAS,KAAK,IAAI;GAClB;EACF;EAEA,IAAI,MAAM,SAAS,KAAK,KAAK,SAAS,SAAS;GAAE,GAAG;GAAM;EAAK,IAAI;GAAE,GAAG;GAAM,WAAW;EAAK,CAAC;EAC/F;CACF;CAEA,OAAO;AACT;;;;;;;;AASA,SAAgB,iBAAiB,OAAsB,WAAmC;CAGxF,OAAO,cAAc,OAFPA,mBAAAA,gBAAgB,cAAc,KAAK,GAAG,SAExB,CAAK;AACnC"}
|
|
@@ -66,7 +66,8 @@ function revealedParts(parts, shown) {
|
|
|
66
66
|
* A message's parts as far as the reveal has laid them down. Hand the result to
|
|
67
67
|
* `MessageFactory` in place of the message's own parts and the whole reply — prose,
|
|
68
68
|
* reasoning, tool rows, cards — arrives at the pace it was written, from one clock,
|
|
69
|
-
* without a renderer having to know a reveal is running.
|
|
69
|
+
* without a renderer having to know a reveal is running. Once fully revealed it returns
|
|
70
|
+
* the caller's own `parts` array, so `result === parts` means the reveal has settled.
|
|
70
71
|
*/
|
|
71
72
|
function useRevealedParts(parts, streaming) {
|
|
72
73
|
return revealedParts(parts, useRevealedText(messageScript(parts), streaming));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-reveal.es.js","names":[],"sources":["../../../src/ds/components/ai/message-reveal/message-reveal.ts"],"sourcesContent":["import type { MastraDBMessage } from '@mastra/core/agent/message-list';\n\nimport { useRevealedText } from '../../MarkdownRenderer/use-reveal';\n\ntype MessagePart = MastraDBMessage['content']['parts'][number];\n\n/** What separates two passages of prose that were streamed as separate blocks. */\nconst PASSAGE = '\\n\\n';\n\n/**\n * A part that is not prose, written into the reveal's script as words so it takes a\n * beat on the same clock: a burst of parallel tool calls cascades in row by row, at\n * the pace the reply is moving, instead of landing as one block.\n */\nconst ROW_MARK = Array.from({ length: 6 }, () => '').join(' ');\n\n/**\n * The words a part was written as, for the kinds the model writes word by word.\n * Reasoning streams delta by delta exactly like prose, so its passage takes its\n * words' time on the clock rather than one row's beat — a beat would hold the\n * block back whole, then let it land at once and grow unpaced.\n */\nfunction partProse(part: MessagePart): string | undefined {\n if (part.type === 'text') return part.text;\n if (part.type === 'reasoning') return part.reasoning;\n return undefined;\n}\n\n/** What the reveal paces: the whole message, rows and cards written in as beats between the prose. */\nexport function messageScript(parts: MessagePart[]): string {\n return parts.map(part => partProse(part) ?? ROW_MARK).join(PASSAGE);\n}\n\n/**\n * The parts of a message a reveal has reached, `shown` being a prefix of the script.\n *\n * A reply is not only prose: a tool row, a card, a reasoning block sit between its\n * passages, and they were written in that order. Pacing the prose alone would lay a\n * sentence down word by word while the row that follows it is already on screen — so\n * every part waits its turn on the one clock, and the reader is handed the answer in\n * the order it was written.\n */\nexport function revealedParts(parts: MessagePart[], shown: string): MessagePart[] {\n const script = messageScript(parts);\n if (shown.length >= script.length) return parts;\n\n const revealed: MessagePart[] = [];\n let read = 0;\n\n for (const part of parts) {\n const start = read === 0 ? 0 : read + PASSAGE.length;\n\n if (part.type !== 'text' && part.type !== 'reasoning') {\n read = start + ROW_MARK.length;\n if (shown.length < read) break;\n revealed.push(part);\n continue;\n }\n\n const written = part.type === 'text' ? part.text : part.reasoning;\n read = start + written.length;\n\n const text = shown.slice(start, read);\n if (text === written) {\n revealed.push(part);\n continue;\n }\n\n if (text) revealed.push(part.type === 'text' ? { ...part, text } : { ...part, reasoning: text });\n break;\n }\n\n return revealed;\n}\n\n/**\n * A message's parts as far as the reveal has laid them down. Hand the result to\n * `MessageFactory` in place of the message's own parts and the whole reply — prose,\n * reasoning, tool rows, cards — arrives at the pace it was written, from one clock,\n * without a renderer having to know a reveal is running.\n */\nexport function useRevealedParts(parts: MessagePart[], streaming: boolean): MessagePart[] {\n const shown = useRevealedText(messageScript(parts), streaming);\n\n return revealedParts(parts, shown);\n}\n"],"mappings":";;;AAOA,IAAM,UAAU;;;;;;AAOhB,IAAM,WAAW,MAAM,KAAK,EAAE,QAAQ,EAAE,SAAS,GAAG,CAAC,CAAC,KAAK,GAAG;;;;;;;AAQ9D,SAAS,UAAU,MAAuC;CACxD,IAAI,KAAK,SAAS,QAAQ,OAAO,KAAK;CACtC,IAAI,KAAK,SAAS,aAAa,OAAO,KAAK;AAE7C;;AAGA,SAAgB,cAAc,OAA8B;CAC1D,OAAO,MAAM,KAAI,SAAQ,UAAU,IAAI,KAAK,QAAQ,CAAC,CAAC,KAAK,OAAO;AACpE;;;;;;;;;;AAWA,SAAgB,cAAc,OAAsB,OAA8B;CAChF,MAAM,SAAS,cAAc,KAAK;CAClC,IAAI,MAAM,UAAU,OAAO,QAAQ,OAAO;CAE1C,MAAM,WAA0B,CAAC;CACjC,IAAI,OAAO;CAEX,KAAK,MAAM,QAAQ,OAAO;EACxB,MAAM,QAAQ,SAAS,IAAI,IAAI,OAAO;EAEtC,IAAI,KAAK,SAAS,UAAU,KAAK,SAAS,aAAa;GACrD,OAAO,QAAQ,SAAS;GACxB,IAAI,MAAM,SAAS,MAAM;GACzB,SAAS,KAAK,IAAI;GAClB;EACF;EAEA,MAAM,UAAU,KAAK,SAAS,SAAS,KAAK,OAAO,KAAK;EACxD,OAAO,QAAQ,QAAQ;EAEvB,MAAM,OAAO,MAAM,MAAM,OAAO,IAAI;EACpC,IAAI,SAAS,SAAS;GACpB,SAAS,KAAK,IAAI;GAClB;EACF;EAEA,IAAI,MAAM,SAAS,KAAK,KAAK,SAAS,SAAS;GAAE,GAAG;GAAM;EAAK,IAAI;GAAE,GAAG;GAAM,WAAW;EAAK,CAAC;EAC/F;CACF;CAEA,OAAO;AACT
|
|
1
|
+
{"version":3,"file":"message-reveal.es.js","names":[],"sources":["../../../src/ds/components/ai/message-reveal/message-reveal.ts"],"sourcesContent":["import type { MastraDBMessage } from '@mastra/core/agent/message-list';\n\nimport { useRevealedText } from '../../MarkdownRenderer/use-reveal';\n\ntype MessagePart = MastraDBMessage['content']['parts'][number];\n\n/** What separates two passages of prose that were streamed as separate blocks. */\nconst PASSAGE = '\\n\\n';\n\n/**\n * A part that is not prose, written into the reveal's script as words so it takes a\n * beat on the same clock: a burst of parallel tool calls cascades in row by row, at\n * the pace the reply is moving, instead of landing as one block.\n */\nconst ROW_MARK = Array.from({ length: 6 }, () => '').join(' ');\n\n/**\n * The words a part was written as, for the kinds the model writes word by word.\n * Reasoning streams delta by delta exactly like prose, so its passage takes its\n * words' time on the clock rather than one row's beat — a beat would hold the\n * block back whole, then let it land at once and grow unpaced.\n */\nfunction partProse(part: MessagePart): string | undefined {\n if (part.type === 'text') return part.text;\n if (part.type === 'reasoning') return part.reasoning;\n return undefined;\n}\n\n/** What the reveal paces: the whole message, rows and cards written in as beats between the prose. */\nexport function messageScript(parts: MessagePart[]): string {\n return parts.map(part => partProse(part) ?? ROW_MARK).join(PASSAGE);\n}\n\n/**\n * The parts of a message a reveal has reached, `shown` being a prefix of the script.\n *\n * A reply is not only prose: a tool row, a card, a reasoning block sit between its\n * passages, and they were written in that order. Pacing the prose alone would lay a\n * sentence down word by word while the row that follows it is already on screen — so\n * every part waits its turn on the one clock, and the reader is handed the answer in\n * the order it was written.\n */\nexport function revealedParts(parts: MessagePart[], shown: string): MessagePart[] {\n const script = messageScript(parts);\n if (shown.length >= script.length) return parts;\n\n const revealed: MessagePart[] = [];\n let read = 0;\n\n for (const part of parts) {\n const start = read === 0 ? 0 : read + PASSAGE.length;\n\n if (part.type !== 'text' && part.type !== 'reasoning') {\n read = start + ROW_MARK.length;\n if (shown.length < read) break;\n revealed.push(part);\n continue;\n }\n\n const written = part.type === 'text' ? part.text : part.reasoning;\n read = start + written.length;\n\n const text = shown.slice(start, read);\n if (text === written) {\n revealed.push(part);\n continue;\n }\n\n if (text) revealed.push(part.type === 'text' ? { ...part, text } : { ...part, reasoning: text });\n break;\n }\n\n return revealed;\n}\n\n/**\n * A message's parts as far as the reveal has laid them down. Hand the result to\n * `MessageFactory` in place of the message's own parts and the whole reply — prose,\n * reasoning, tool rows, cards — arrives at the pace it was written, from one clock,\n * without a renderer having to know a reveal is running. Once fully revealed it returns\n * the caller's own `parts` array, so `result === parts` means the reveal has settled.\n */\nexport function useRevealedParts(parts: MessagePart[], streaming: boolean): MessagePart[] {\n const shown = useRevealedText(messageScript(parts), streaming);\n\n return revealedParts(parts, shown);\n}\n"],"mappings":";;;AAOA,IAAM,UAAU;;;;;;AAOhB,IAAM,WAAW,MAAM,KAAK,EAAE,QAAQ,EAAE,SAAS,GAAG,CAAC,CAAC,KAAK,GAAG;;;;;;;AAQ9D,SAAS,UAAU,MAAuC;CACxD,IAAI,KAAK,SAAS,QAAQ,OAAO,KAAK;CACtC,IAAI,KAAK,SAAS,aAAa,OAAO,KAAK;AAE7C;;AAGA,SAAgB,cAAc,OAA8B;CAC1D,OAAO,MAAM,KAAI,SAAQ,UAAU,IAAI,KAAK,QAAQ,CAAC,CAAC,KAAK,OAAO;AACpE;;;;;;;;;;AAWA,SAAgB,cAAc,OAAsB,OAA8B;CAChF,MAAM,SAAS,cAAc,KAAK;CAClC,IAAI,MAAM,UAAU,OAAO,QAAQ,OAAO;CAE1C,MAAM,WAA0B,CAAC;CACjC,IAAI,OAAO;CAEX,KAAK,MAAM,QAAQ,OAAO;EACxB,MAAM,QAAQ,SAAS,IAAI,IAAI,OAAO;EAEtC,IAAI,KAAK,SAAS,UAAU,KAAK,SAAS,aAAa;GACrD,OAAO,QAAQ,SAAS;GACxB,IAAI,MAAM,SAAS,MAAM;GACzB,SAAS,KAAK,IAAI;GAClB;EACF;EAEA,MAAM,UAAU,KAAK,SAAS,SAAS,KAAK,OAAO,KAAK;EACxD,OAAO,QAAQ,QAAQ;EAEvB,MAAM,OAAO,MAAM,MAAM,OAAO,IAAI;EACpC,IAAI,SAAS,SAAS;GACpB,SAAS,KAAK,IAAI;GAClB;EACF;EAEA,IAAI,MAAM,SAAS,KAAK,KAAK,SAAS,SAAS;GAAE,GAAG;GAAM;EAAK,IAAI;GAAE,GAAG;GAAM,WAAW;EAAK,CAAC;EAC/F;CACF;CAEA,OAAO;AACT;;;;;;;;AASA,SAAgB,iBAAiB,OAAsB,WAAmC;CAGxF,OAAO,cAAc,OAFP,gBAAgB,cAAc,KAAK,GAAG,SAExB,CAAK;AACnC"}
|
|
@@ -5,7 +5,7 @@ const require_Button = require("../../Button-YQRflC47.cjs");
|
|
|
5
5
|
const require_Txt = require("../../Txt-BnoSqxKE.cjs");
|
|
6
6
|
const require_hooks_use_copy_to_clipboard = require("../../hooks/use-copy-to-clipboard.cjs.js");
|
|
7
7
|
const require_Badge = require("../../Badge-DZ6r6bcw.cjs");
|
|
8
|
-
const require_MarkdownRenderer = require("../../MarkdownRenderer-
|
|
8
|
+
const require_MarkdownRenderer = require("../../MarkdownRenderer-CS6u5drO.cjs");
|
|
9
9
|
const require_components_CollapsibleBox = require("../CollapsibleBox.cjs.js");
|
|
10
10
|
let react = require("react");
|
|
11
11
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
@@ -4,7 +4,7 @@ import { t as Button } from "../../Button-Bw1e3ONi.js";
|
|
|
4
4
|
import { t as Txt } from "../../Txt-BM6TVV_c.js";
|
|
5
5
|
import { useCopyToClipboard } from "../../hooks/use-copy-to-clipboard.es.js";
|
|
6
6
|
import { t as Badge } from "../../Badge-aVu5iGAF.js";
|
|
7
|
-
import { t as MarkdownRenderer } from "../../MarkdownRenderer-
|
|
7
|
+
import { t as MarkdownRenderer } from "../../MarkdownRenderer-DME2xKTk.js";
|
|
8
8
|
import { CollapsibleBox, useCollapsibleBox } from "../CollapsibleBox.es.js";
|
|
9
9
|
import { createContext, useContext } from "react";
|
|
10
10
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_tool_approval = require("../../tool-approval-
|
|
2
|
+
const require_tool_approval = require("../../tool-approval-BfjoSNOC.cjs");
|
|
3
3
|
exports.ToolApproval = require_tool_approval.ToolApproval;
|
|
4
4
|
exports.ToolApprovalActions = require_tool_approval.ToolApprovalActions;
|
|
5
5
|
exports.ToolApprovalStatus = require_tool_approval.ToolApprovalStatus;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { t as ToolApproval, n as ToolApprovalActions, r as ToolApprovalStatus } from "../../tool-approval-
|
|
1
|
+
export { t as ToolApproval, n as ToolApprovalActions, r as ToolApprovalStatus } from "../../tool-approval-FeuyUUcL.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_tool_call = require("../../tool-call-
|
|
3
|
-
const require_tool_presentation = require("../../tool-presentation-
|
|
2
|
+
const require_tool_call = require("../../tool-call-CvilN9ti.cjs");
|
|
3
|
+
const require_tool_presentation = require("../../tool-presentation-BLErsb7c.cjs");
|
|
4
4
|
exports.TOOL_GROUP_MIN = require_tool_call.TOOL_GROUP_MIN;
|
|
5
5
|
exports.ToolCallArguments = require_tool_call.ToolCallArguments;
|
|
6
6
|
exports.ToolCallCommand = require_tool_call.ToolCallCommand;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { a as ToolCallArguments, c as ToolCallMono, d as stripAnsi, f as stripSerializedAnsi, i as ToolCallGroup, l as TOOL_GROUP_MIN, n as toolPhrases, o as ToolCallEdit, r as ToolCallOutput, s as ToolCallCommand, t as ToolCallTime, u as groupConsecutive } from "../../tool-call-
|
|
2
|
-
import { a as toolEdit, i as stringifyToolValue, n as isTaskTool, o as visibleToolArgumentsText, r as presentTool, t as hasToolArguments } from "../../tool-presentation-
|
|
1
|
+
import { a as ToolCallArguments, c as ToolCallMono, d as stripAnsi, f as stripSerializedAnsi, i as ToolCallGroup, l as TOOL_GROUP_MIN, n as toolPhrases, o as ToolCallEdit, r as ToolCallOutput, s as ToolCallCommand, t as ToolCallTime, u as groupConsecutive } from "../../tool-call-BxYXs9w0.js";
|
|
2
|
+
import { a as toolEdit, i as stringifyToolValue, n as isTaskTool, o as visibleToolArgumentsText, r as presentTool, t as hasToolArguments } from "../../tool-presentation-BSZYIWx2.js";
|
|
3
3
|
export { TOOL_GROUP_MIN, ToolCallArguments, ToolCallCommand, ToolCallEdit, ToolCallGroup, ToolCallMono, ToolCallOutput, ToolCallTime, groupConsecutive, hasToolArguments, isTaskTool, presentTool, stringifyToolValue, stripAnsi, stripSerializedAnsi, toolEdit, toolPhrases, visibleToolArgumentsText };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_domains_chat_activity_use_activity_disclosure = require("./use-activity-disclosure.cjs.js");
|
|
3
|
-
const require_activity = require("../../../activity-
|
|
3
|
+
const require_activity = require("../../../activity-DAK8tj7r.cjs");
|
|
4
4
|
const require_domains_chat_activity_components_activity_fold = require("./components/activity-fold.cjs.js");
|
|
5
5
|
const require_domains_chat_activity_components_stretch_content = require("./components/stretch-content.cjs.js");
|
|
6
6
|
const require_domains_chat_activity_model_activity_segments = require("./model/activity-segments.cjs.js");
|
|
@@ -26,13 +26,14 @@ function keepListedOpen(store, segments) {
|
|
|
26
26
|
if (only.kind === "calls") store.setOpen("group", only.calls.map((call) => call.key), true);
|
|
27
27
|
}
|
|
28
28
|
/** One collapsed line for a stretch of tool work and thinking, opening onto what it did. */
|
|
29
|
-
function ActivityStretchLine({ members, live, elapsedMs }) {
|
|
29
|
+
function ActivityStretchLine({ members, live, elapsedMs, current }) {
|
|
30
30
|
const store = require_domains_chat_activity_use_activity_disclosure.useDisclosureStore();
|
|
31
31
|
const keys = members.map((member) => member.key);
|
|
32
32
|
const open = require_domains_chat_activity_use_activity_disclosure.useIsOpen(store, "line", keys);
|
|
33
|
-
if (members.length === 0) return null;
|
|
33
|
+
if (members.length === 0 && !live) return null;
|
|
34
34
|
const listed = members.filter(isListed);
|
|
35
35
|
const segments = require_domains_chat_activity_model_activity_segments.activitySegments(listed);
|
|
36
|
+
const calls = current ?? members.filter(isCall);
|
|
36
37
|
function toggle(next) {
|
|
37
38
|
store.setOpen("line", keys, next);
|
|
38
39
|
if (next) keepListedOpen(store, segments);
|
|
@@ -41,7 +42,8 @@ function ActivityStretchLine({ members, live, elapsedMs }) {
|
|
|
41
42
|
value: store,
|
|
42
43
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_domains_chat_activity_components_activity_fold.ActivityFold, {
|
|
43
44
|
slot: "activity-stretch",
|
|
44
|
-
calls
|
|
45
|
+
calls,
|
|
46
|
+
indicator: true,
|
|
45
47
|
live,
|
|
46
48
|
elapsedMs,
|
|
47
49
|
open,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity-stretch-line.cjs.js","names":["hasReasoningText","useDisclosureStore","useIsOpen","activitySegments","ActivityDisclosureContext","ActivityFold","StretchContent"],"sources":["../../../../src/domains/chat/activity/activity-stretch-line.tsx"],"sourcesContent":["import { ActivityFold } from './components/activity-fold';\nimport { StretchContent } from './components/stretch-content';\nimport type { ActivityCall, ActivityMember } from './model/activity-members';\nimport { activitySegments } from './model/activity-segments';\nimport type { ActivitySegment } from './model/activity-segments';\nimport type { ActivityDisclosureStore } from './model/disclosure-store';\nimport { ActivityDisclosureContext, useDisclosureStore, useIsOpen } from './use-activity-disclosure';\nimport { hasReasoningText } from '@/ds/components/ai/activity';\n\nexport interface ActivityStretchLineProps {\n members: readonly ActivityMember[];\n /** Still being written: reads what it is doing now, and its list follows the latest call. */\n live: boolean;\n /** From the first member to whatever ended the stretch. */\n elapsedMs?: number;\n}\n\nfunction isCall(member: ActivityMember): member is ActivityCall {\n return member.kind === 'call';\n}\n\nfunction isListed(member: ActivityMember): boolean {\n return member.kind === 'call' || hasReasoningText(member.content);\n}\n\nfunction opensOnItsOwn(member: ActivityMember): boolean {\n return member.kind === 'call' ? member.body !== undefined : hasReasoningText(member.content);\n}\n\n/** What the reader sees in a stretch opened on a lone call or list stays open once a thought or call joins it. */\nfunction keepListedOpen(store: ActivityDisclosureStore, segments: readonly ActivitySegment[]) {\n const [only] = segments;\n if (segments.length !== 1 || !only) return;\n if (only.kind === 'call') {\n store.setOpen('row', [only.key], true);\n store.setOpen('group', [only.key], true);\n }\n if (only.kind === 'calls') {\n store.setOpen(\n 'group',\n only.calls.map(call => call.key),\n true,\n );\n }\n}\n\n/** One collapsed line for a stretch of tool work and thinking, opening onto what it did. */\nexport function ActivityStretchLine({ members, live, elapsedMs }: ActivityStretchLineProps) {\n const store = useDisclosureStore();\n const keys = members.map(member => member.key);\n const open = useIsOpen(store, 'line', keys);\n\n if (members.length === 0) return null;\n const listed = members.filter(isListed);\n const segments = activitySegments(listed);\n\n function toggle(next: boolean) {\n store.setOpen('line', keys, next);\n if (next) keepListedOpen(store, segments);\n }\n\n return (\n <ActivityDisclosureContext value={store}>\n <ActivityFold\n slot=\"activity-stretch\"\n calls={
|
|
1
|
+
{"version":3,"file":"activity-stretch-line.cjs.js","names":["hasReasoningText","useDisclosureStore","useIsOpen","activitySegments","ActivityDisclosureContext","ActivityFold","StretchContent"],"sources":["../../../../src/domains/chat/activity/activity-stretch-line.tsx"],"sourcesContent":["import { ActivityFold } from './components/activity-fold';\nimport { StretchContent } from './components/stretch-content';\nimport type { ActivityCall, ActivityCallState, ActivityMember } from './model/activity-members';\nimport { activitySegments } from './model/activity-segments';\nimport type { ActivitySegment } from './model/activity-segments';\nimport type { ActivityDisclosureStore } from './model/disclosure-store';\nimport { ActivityDisclosureContext, useDisclosureStore, useIsOpen } from './use-activity-disclosure';\nimport { hasReasoningText } from '@/ds/components/ai/activity';\n\nexport interface ActivityStretchLineProps {\n members: readonly ActivityMember[];\n /** Still being written: reads what it is doing now, and its list follows the latest call. */\n live: boolean;\n /** From the first member to whatever ended the stretch. */\n elapsedMs?: number;\n /** The calls as they stand now, when a reveal still holds `members` back: the line reads and wears these. */\n current?: readonly ActivityCallState[];\n}\n\nfunction isCall(member: ActivityMember): member is ActivityCall {\n return member.kind === 'call';\n}\n\nfunction isListed(member: ActivityMember): boolean {\n return member.kind === 'call' || hasReasoningText(member.content);\n}\n\nfunction opensOnItsOwn(member: ActivityMember): boolean {\n return member.kind === 'call' ? member.body !== undefined : hasReasoningText(member.content);\n}\n\n/** What the reader sees in a stretch opened on a lone call or list stays open once a thought or call joins it. */\nfunction keepListedOpen(store: ActivityDisclosureStore, segments: readonly ActivitySegment[]) {\n const [only] = segments;\n if (segments.length !== 1 || !only) return;\n if (only.kind === 'call') {\n store.setOpen('row', [only.key], true);\n store.setOpen('group', [only.key], true);\n }\n if (only.kind === 'calls') {\n store.setOpen(\n 'group',\n only.calls.map(call => call.key),\n true,\n );\n }\n}\n\n/** One collapsed line for a stretch of tool work and thinking, opening onto what it did. */\nexport function ActivityStretchLine({ members, live, elapsedMs, current }: ActivityStretchLineProps) {\n const store = useDisclosureStore();\n const keys = members.map(member => member.key);\n const open = useIsOpen(store, 'line', keys);\n\n if (members.length === 0 && !live) return null;\n const listed = members.filter(isListed);\n const segments = activitySegments(listed);\n const calls = current ?? members.filter(isCall);\n\n function toggle(next: boolean) {\n store.setOpen('line', keys, next);\n if (next) keepListedOpen(store, segments);\n }\n\n return (\n <ActivityDisclosureContext value={store}>\n <ActivityFold\n slot=\"activity-stretch\"\n calls={calls}\n indicator\n live={live}\n elapsedMs={elapsedMs}\n open={open}\n onOpenChange={toggle}\n foldable={listed.length > 1 || listed.some(opensOnItsOwn)}\n prominent\n >\n <StretchContent segments={segments} live={live} />\n </ActivityFold>\n </ActivityDisclosureContext>\n );\n}\n"],"mappings":";;;;;;;;AAmBA,SAAS,OAAO,QAAgD;CAC9D,OAAO,OAAO,SAAS;AACzB;AAEA,SAAS,SAAS,QAAiC;CACjD,OAAO,OAAO,SAAS,UAAUA,iBAAAA,iBAAiB,OAAO,OAAO;AAClE;AAEA,SAAS,cAAc,QAAiC;CACtD,OAAO,OAAO,SAAS,SAAS,OAAO,SAAS,KAAA,IAAYA,iBAAAA,iBAAiB,OAAO,OAAO;AAC7F;;AAGA,SAAS,eAAe,OAAgC,UAAsC;CAC5F,MAAM,CAAC,QAAQ;CACf,IAAI,SAAS,WAAW,KAAK,CAAC,MAAM;CACpC,IAAI,KAAK,SAAS,QAAQ;EACxB,MAAM,QAAQ,OAAO,CAAC,KAAK,GAAG,GAAG,IAAI;EACrC,MAAM,QAAQ,SAAS,CAAC,KAAK,GAAG,GAAG,IAAI;CACzC;CACA,IAAI,KAAK,SAAS,SAChB,MAAM,QACJ,SACA,KAAK,MAAM,KAAI,SAAQ,KAAK,GAAG,GAC/B,IACF;AAEJ;;AAGA,SAAgB,oBAAoB,EAAE,SAAS,MAAM,WAAW,WAAqC;CACnG,MAAM,QAAQC,sDAAAA,mBAAmB;CACjC,MAAM,OAAO,QAAQ,KAAI,WAAU,OAAO,GAAG;CAC7C,MAAM,OAAOC,sDAAAA,UAAU,OAAO,QAAQ,IAAI;CAE1C,IAAI,QAAQ,WAAW,KAAK,CAAC,MAAM,OAAO;CAC1C,MAAM,SAAS,QAAQ,OAAO,QAAQ;CACtC,MAAM,WAAWC,sDAAAA,iBAAiB,MAAM;CACxC,MAAM,QAAQ,WAAW,QAAQ,OAAO,MAAM;CAE9C,SAAS,OAAO,MAAe;EAC7B,MAAM,QAAQ,QAAQ,MAAM,IAAI;EAChC,IAAI,MAAM,eAAe,OAAO,QAAQ;CAC1C;CAEA,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,sDAAAA,2BAAD;EAA2B,OAAO;EAChC,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,uDAAAA,cAAD;GACE,MAAK;GACE;GACP,WAAA;GACM;GACK;GACL;GACN,cAAc;GACd,UAAU,OAAO,SAAS,KAAK,OAAO,KAAK,aAAa;GACxD,WAAA;GAEA,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,yDAAAA,gBAAD;IAA0B;IAAgB;GAAO,CAAA;EACrC,CAAA;CACW,CAAA;AAE/B"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ActivityDisclosureContext, useDisclosureStore, useIsOpen } from "./use-activity-disclosure.es.js";
|
|
2
|
-
import { r as hasReasoningText } from "../../../activity-
|
|
2
|
+
import { r as hasReasoningText } from "../../../activity-CM34JyW-.js";
|
|
3
3
|
import { ActivityFold } from "./components/activity-fold.es.js";
|
|
4
4
|
import { StretchContent } from "./components/stretch-content.es.js";
|
|
5
5
|
import { activitySegments } from "./model/activity-segments.es.js";
|
|
@@ -25,13 +25,14 @@ function keepListedOpen(store, segments) {
|
|
|
25
25
|
if (only.kind === "calls") store.setOpen("group", only.calls.map((call) => call.key), true);
|
|
26
26
|
}
|
|
27
27
|
/** One collapsed line for a stretch of tool work and thinking, opening onto what it did. */
|
|
28
|
-
function ActivityStretchLine({ members, live, elapsedMs }) {
|
|
28
|
+
function ActivityStretchLine({ members, live, elapsedMs, current }) {
|
|
29
29
|
const store = useDisclosureStore();
|
|
30
30
|
const keys = members.map((member) => member.key);
|
|
31
31
|
const open = useIsOpen(store, "line", keys);
|
|
32
|
-
if (members.length === 0) return null;
|
|
32
|
+
if (members.length === 0 && !live) return null;
|
|
33
33
|
const listed = members.filter(isListed);
|
|
34
34
|
const segments = activitySegments(listed);
|
|
35
|
+
const calls = current ?? members.filter(isCall);
|
|
35
36
|
function toggle(next) {
|
|
36
37
|
store.setOpen("line", keys, next);
|
|
37
38
|
if (next) keepListedOpen(store, segments);
|
|
@@ -40,7 +41,8 @@ function ActivityStretchLine({ members, live, elapsedMs }) {
|
|
|
40
41
|
value: store,
|
|
41
42
|
children: /* @__PURE__ */ jsx(ActivityFold, {
|
|
42
43
|
slot: "activity-stretch",
|
|
43
|
-
calls
|
|
44
|
+
calls,
|
|
45
|
+
indicator: true,
|
|
44
46
|
live,
|
|
45
47
|
elapsedMs,
|
|
46
48
|
open,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity-stretch-line.es.js","names":[],"sources":["../../../../src/domains/chat/activity/activity-stretch-line.tsx"],"sourcesContent":["import { ActivityFold } from './components/activity-fold';\nimport { StretchContent } from './components/stretch-content';\nimport type { ActivityCall, ActivityMember } from './model/activity-members';\nimport { activitySegments } from './model/activity-segments';\nimport type { ActivitySegment } from './model/activity-segments';\nimport type { ActivityDisclosureStore } from './model/disclosure-store';\nimport { ActivityDisclosureContext, useDisclosureStore, useIsOpen } from './use-activity-disclosure';\nimport { hasReasoningText } from '@/ds/components/ai/activity';\n\nexport interface ActivityStretchLineProps {\n members: readonly ActivityMember[];\n /** Still being written: reads what it is doing now, and its list follows the latest call. */\n live: boolean;\n /** From the first member to whatever ended the stretch. */\n elapsedMs?: number;\n}\n\nfunction isCall(member: ActivityMember): member is ActivityCall {\n return member.kind === 'call';\n}\n\nfunction isListed(member: ActivityMember): boolean {\n return member.kind === 'call' || hasReasoningText(member.content);\n}\n\nfunction opensOnItsOwn(member: ActivityMember): boolean {\n return member.kind === 'call' ? member.body !== undefined : hasReasoningText(member.content);\n}\n\n/** What the reader sees in a stretch opened on a lone call or list stays open once a thought or call joins it. */\nfunction keepListedOpen(store: ActivityDisclosureStore, segments: readonly ActivitySegment[]) {\n const [only] = segments;\n if (segments.length !== 1 || !only) return;\n if (only.kind === 'call') {\n store.setOpen('row', [only.key], true);\n store.setOpen('group', [only.key], true);\n }\n if (only.kind === 'calls') {\n store.setOpen(\n 'group',\n only.calls.map(call => call.key),\n true,\n );\n }\n}\n\n/** One collapsed line for a stretch of tool work and thinking, opening onto what it did. */\nexport function ActivityStretchLine({ members, live, elapsedMs }: ActivityStretchLineProps) {\n const store = useDisclosureStore();\n const keys = members.map(member => member.key);\n const open = useIsOpen(store, 'line', keys);\n\n if (members.length === 0) return null;\n const listed = members.filter(isListed);\n const segments = activitySegments(listed);\n\n function toggle(next: boolean) {\n store.setOpen('line', keys, next);\n if (next) keepListedOpen(store, segments);\n }\n\n return (\n <ActivityDisclosureContext value={store}>\n <ActivityFold\n slot=\"activity-stretch\"\n calls={
|
|
1
|
+
{"version":3,"file":"activity-stretch-line.es.js","names":[],"sources":["../../../../src/domains/chat/activity/activity-stretch-line.tsx"],"sourcesContent":["import { ActivityFold } from './components/activity-fold';\nimport { StretchContent } from './components/stretch-content';\nimport type { ActivityCall, ActivityCallState, ActivityMember } from './model/activity-members';\nimport { activitySegments } from './model/activity-segments';\nimport type { ActivitySegment } from './model/activity-segments';\nimport type { ActivityDisclosureStore } from './model/disclosure-store';\nimport { ActivityDisclosureContext, useDisclosureStore, useIsOpen } from './use-activity-disclosure';\nimport { hasReasoningText } from '@/ds/components/ai/activity';\n\nexport interface ActivityStretchLineProps {\n members: readonly ActivityMember[];\n /** Still being written: reads what it is doing now, and its list follows the latest call. */\n live: boolean;\n /** From the first member to whatever ended the stretch. */\n elapsedMs?: number;\n /** The calls as they stand now, when a reveal still holds `members` back: the line reads and wears these. */\n current?: readonly ActivityCallState[];\n}\n\nfunction isCall(member: ActivityMember): member is ActivityCall {\n return member.kind === 'call';\n}\n\nfunction isListed(member: ActivityMember): boolean {\n return member.kind === 'call' || hasReasoningText(member.content);\n}\n\nfunction opensOnItsOwn(member: ActivityMember): boolean {\n return member.kind === 'call' ? member.body !== undefined : hasReasoningText(member.content);\n}\n\n/** What the reader sees in a stretch opened on a lone call or list stays open once a thought or call joins it. */\nfunction keepListedOpen(store: ActivityDisclosureStore, segments: readonly ActivitySegment[]) {\n const [only] = segments;\n if (segments.length !== 1 || !only) return;\n if (only.kind === 'call') {\n store.setOpen('row', [only.key], true);\n store.setOpen('group', [only.key], true);\n }\n if (only.kind === 'calls') {\n store.setOpen(\n 'group',\n only.calls.map(call => call.key),\n true,\n );\n }\n}\n\n/** One collapsed line for a stretch of tool work and thinking, opening onto what it did. */\nexport function ActivityStretchLine({ members, live, elapsedMs, current }: ActivityStretchLineProps) {\n const store = useDisclosureStore();\n const keys = members.map(member => member.key);\n const open = useIsOpen(store, 'line', keys);\n\n if (members.length === 0 && !live) return null;\n const listed = members.filter(isListed);\n const segments = activitySegments(listed);\n const calls = current ?? members.filter(isCall);\n\n function toggle(next: boolean) {\n store.setOpen('line', keys, next);\n if (next) keepListedOpen(store, segments);\n }\n\n return (\n <ActivityDisclosureContext value={store}>\n <ActivityFold\n slot=\"activity-stretch\"\n calls={calls}\n indicator\n live={live}\n elapsedMs={elapsedMs}\n open={open}\n onOpenChange={toggle}\n foldable={listed.length > 1 || listed.some(opensOnItsOwn)}\n prominent\n >\n <StretchContent segments={segments} live={live} />\n </ActivityFold>\n </ActivityDisclosureContext>\n );\n}\n"],"mappings":";;;;;;;AAmBA,SAAS,OAAO,QAAgD;CAC9D,OAAO,OAAO,SAAS;AACzB;AAEA,SAAS,SAAS,QAAiC;CACjD,OAAO,OAAO,SAAS,UAAU,iBAAiB,OAAO,OAAO;AAClE;AAEA,SAAS,cAAc,QAAiC;CACtD,OAAO,OAAO,SAAS,SAAS,OAAO,SAAS,KAAA,IAAY,iBAAiB,OAAO,OAAO;AAC7F;;AAGA,SAAS,eAAe,OAAgC,UAAsC;CAC5F,MAAM,CAAC,QAAQ;CACf,IAAI,SAAS,WAAW,KAAK,CAAC,MAAM;CACpC,IAAI,KAAK,SAAS,QAAQ;EACxB,MAAM,QAAQ,OAAO,CAAC,KAAK,GAAG,GAAG,IAAI;EACrC,MAAM,QAAQ,SAAS,CAAC,KAAK,GAAG,GAAG,IAAI;CACzC;CACA,IAAI,KAAK,SAAS,SAChB,MAAM,QACJ,SACA,KAAK,MAAM,KAAI,SAAQ,KAAK,GAAG,GAC/B,IACF;AAEJ;;AAGA,SAAgB,oBAAoB,EAAE,SAAS,MAAM,WAAW,WAAqC;CACnG,MAAM,QAAQ,mBAAmB;CACjC,MAAM,OAAO,QAAQ,KAAI,WAAU,OAAO,GAAG;CAC7C,MAAM,OAAO,UAAU,OAAO,QAAQ,IAAI;CAE1C,IAAI,QAAQ,WAAW,KAAK,CAAC,MAAM,OAAO;CAC1C,MAAM,SAAS,QAAQ,OAAO,QAAQ;CACtC,MAAM,WAAW,iBAAiB,MAAM;CACxC,MAAM,QAAQ,WAAW,QAAQ,OAAO,MAAM;CAE9C,SAAS,OAAO,MAAe;EAC7B,MAAM,QAAQ,QAAQ,MAAM,IAAI;EAChC,IAAI,MAAM,eAAe,OAAO,QAAQ;CAC1C;CAEA,OACE,oBAAC,2BAAD;EAA2B,OAAO;EAChC,UAAA,oBAAC,cAAD;GACE,MAAK;GACE;GACP,WAAA;GACM;GACK;GACL;GACN,cAAc;GACd,UAAU,OAAO,SAAS,KAAK,OAAO,KAAK,aAAa;GACxD,WAAA;GAEA,UAAA,oBAAC,gBAAD;IAA0B;IAAgB;GAAO,CAAA;EACrC,CAAA;CACW,CAAA;AAE/B"}
|
|
@@ -1,22 +1,54 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_utils = require("../../../../utils-uDc1ofX1.cjs");
|
|
3
3
|
const require_Txt = require("../../../../Txt-BnoSqxKE.cjs");
|
|
4
|
-
const
|
|
4
|
+
const require_AgentIndicator = require("../../../../AgentIndicator-to30W73z.cjs");
|
|
5
|
+
const require_activity = require("../../../../activity-DAK8tj7r.cjs");
|
|
6
|
+
const require_Arrival = require("../../../../Arrival-Cs1oWjo4.cjs");
|
|
7
|
+
const require_components_Shimmer = require("../../../../components/Shimmer.cjs.js");
|
|
5
8
|
const require_domains_chat_activity_model_activity_words = require("../model/activity-words.cjs.js");
|
|
6
9
|
const require_domains_chat_activity_components_activity_timed_trigger = require("./activity-timed-trigger.cjs.js");
|
|
10
|
+
const require_domains_chat_activity_components_use_fading_edge = require("./use-fading-edge.cjs.js");
|
|
11
|
+
const require_domains_chat_activity_components_use_rolling_words = require("./use-rolling-words.cjs.js");
|
|
12
|
+
let react = require("react");
|
|
7
13
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
8
14
|
let lucide_react = require("lucide-react");
|
|
9
15
|
// src/domains/chat/activity/components/activity-fold.tsx
|
|
16
|
+
function FoldIcon({ pose, animates, live, fallback: Fallback }) {
|
|
17
|
+
if (!pose) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Fallback, { "aria-hidden": true });
|
|
18
|
+
if (!animates) {
|
|
19
|
+
const Glyph = require_AgentIndicator.agentGlyph(pose);
|
|
20
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Glyph, {});
|
|
21
|
+
}
|
|
22
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_AgentIndicator.AgentIndicator, {
|
|
23
|
+
state: pose,
|
|
24
|
+
still: !live
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
var UNTRUNCATED = "shrink-0 whitespace-nowrap text-clip";
|
|
10
28
|
function foldStatus(live, failed) {
|
|
11
29
|
if (live) return "running";
|
|
12
30
|
return failed ? "error" : "idle";
|
|
13
31
|
}
|
|
14
32
|
/** A line that says what its calls are doing, or did, and folds what it summarises. */
|
|
15
|
-
function ActivityFold({ calls, live, elapsedMs, open, onOpenChange, foldable, prominent = false, slot, children }) {
|
|
33
|
+
function ActivityFold({ calls, indicator = false, live, elapsedMs, open, onOpenChange, foldable, prominent = false, slot, children }) {
|
|
34
|
+
const [animates] = (0, react.useState)(live);
|
|
16
35
|
const words = live ? require_domains_chat_activity_model_activity_words.liveWords(calls) : require_domains_chat_activity_model_activity_words.settledWords(calls, elapsedMs);
|
|
17
36
|
const outcome = require_domains_chat_activity_model_activity_words.callsOutcome(calls);
|
|
18
37
|
const failed = !live && outcome.failed > 0;
|
|
19
38
|
const outcomeLabel = live ? "" : require_domains_chat_activity_model_activity_words.outcomeText(outcome, calls.length);
|
|
39
|
+
const spoken = [
|
|
40
|
+
words.label,
|
|
41
|
+
words.detail,
|
|
42
|
+
words.duration,
|
|
43
|
+
failed,
|
|
44
|
+
outcomeLabel
|
|
45
|
+
].join("\0");
|
|
46
|
+
const pose = indicator ? require_domains_chat_activity_model_activity_words.stretchPose(calls, live) : void 0;
|
|
47
|
+
const box = (0, react.useRef)(null);
|
|
48
|
+
const said = (0, react.useRef)(null);
|
|
49
|
+
const relative = require_activity.useRelativePaths();
|
|
50
|
+
require_domains_chat_activity_components_use_fading_edge.useFadingEdge(said, spoken);
|
|
51
|
+
require_domains_chat_activity_components_use_rolling_words.useRollingWords(box, said, spoken, animates);
|
|
20
52
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_activity.Activity, {
|
|
21
53
|
"data-slot": slot,
|
|
22
54
|
appearance: "inline",
|
|
@@ -24,36 +56,57 @@ function ActivityFold({ calls, live, elapsedMs, open, onOpenChange, foldable, pr
|
|
|
24
56
|
open: foldable && open,
|
|
25
57
|
onOpenChange,
|
|
26
58
|
foldable,
|
|
27
|
-
"aria-label": require_domains_chat_activity_model_activity_words.wordsName(
|
|
59
|
+
"aria-label": require_domains_chat_activity_model_activity_words.wordsName({
|
|
60
|
+
...words,
|
|
61
|
+
detail: words.detail && relative(words.detail)
|
|
62
|
+
}),
|
|
28
63
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_domains_chat_activity_components_activity_timed_trigger.ActivityTimedTrigger, {
|
|
29
64
|
at: calls[0]?.startedAt,
|
|
30
|
-
className: require_utils.cn(prominent && "mb-2 border-b border-border pb-2"),
|
|
31
65
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_activity.ActivityHeader, { children: [
|
|
32
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_activity.ActivityIcon, {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}),
|
|
41
|
-
words.duration && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_activity.ActivityLabel, {
|
|
42
|
-
className: require_utils.cn(prominent && "text-body", "-ml-1 tabular-nums"),
|
|
43
|
-
children: ["· ", words.duration]
|
|
44
|
-
}),
|
|
45
|
-
failed && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.X, {
|
|
46
|
-
size: 13,
|
|
47
|
-
role: "img",
|
|
48
|
-
"aria-label": "Failed",
|
|
49
|
-
className: "shrink-0 text-destructive-foreground"
|
|
66
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_activity.ActivityIcon, {
|
|
67
|
+
className: require_utils.cn(pose && "[&_svg]:size-4"),
|
|
68
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FoldIcon, {
|
|
69
|
+
pose,
|
|
70
|
+
animates,
|
|
71
|
+
live,
|
|
72
|
+
fallback: words.icon
|
|
73
|
+
})
|
|
50
74
|
}),
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
75
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
76
|
+
ref: box,
|
|
77
|
+
className: "relative flex min-w-0",
|
|
78
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_Shimmer.Shimmer, {
|
|
79
|
+
ref: said,
|
|
80
|
+
active: live,
|
|
81
|
+
className: "-my-1 flex min-w-0 items-center gap-2 overflow-hidden py-1",
|
|
82
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_Arrival.Unwatched, { children: [
|
|
83
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_activity.ActivityLabel, {
|
|
84
|
+
className: require_utils.cn(prominent && "text-body font-medium", UNTRUNCATED),
|
|
85
|
+
children: words.label
|
|
86
|
+
}),
|
|
87
|
+
words.detail && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_activity.ActivityDetail, {
|
|
88
|
+
className: require_utils.cn(prominent && "text-body", UNTRUNCATED),
|
|
89
|
+
children: words.detail
|
|
90
|
+
}),
|
|
91
|
+
words.duration && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_activity.ActivityLabel, {
|
|
92
|
+
className: require_utils.cn(prominent && "text-body font-medium", "-ml-1 tabular-nums"),
|
|
93
|
+
children: ["· ", words.duration]
|
|
94
|
+
}),
|
|
95
|
+
failed && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.X, {
|
|
96
|
+
size: 13,
|
|
97
|
+
role: "img",
|
|
98
|
+
"aria-label": "Failed",
|
|
99
|
+
className: "shrink-0 text-destructive-foreground"
|
|
100
|
+
}),
|
|
101
|
+
outcomeLabel && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Txt.Txt, {
|
|
102
|
+
as: "span",
|
|
103
|
+
variant: "meta",
|
|
104
|
+
tone: "muted",
|
|
105
|
+
className: require_utils.cn("shrink-0 tabular-nums", prominent && "text-body-sm"),
|
|
106
|
+
children: outcomeLabel
|
|
107
|
+
})
|
|
108
|
+
] })
|
|
109
|
+
})
|
|
57
110
|
}),
|
|
58
111
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_activity.ActivityDisclosure, {})
|
|
59
112
|
] })
|