@mastra/playground-ui 58.0.0 → 59.0.0-alpha.1
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/README.md +62 -0
- package/dist/{Badge-TD55_qZJ.js → Badge-Bzn8Z-_I.js} +2 -2
- package/dist/Badge-Bzn8Z-_I.js.map +1 -0
- package/dist/{Badge-BEeYtjmv.cjs → Badge-DFNxcz-r.cjs} +2 -2
- package/dist/Badge-DFNxcz-r.cjs.map +1 -0
- package/dist/{Header-BVnFQlzE.js → Header-hTHhO02b.js} +2 -2
- package/dist/{Header-BVnFQlzE.js.map → Header-hTHhO02b.js.map} +1 -1
- package/dist/{Header-CGjhJ0nQ.cjs → Header-y51Sfo3G.cjs} +2 -2
- package/dist/{Header-CGjhJ0nQ.cjs.map → Header-y51Sfo3G.cjs.map} +1 -1
- package/dist/{Txt-DTh3Pa_a.js → Txt-BP1SRHmL.js} +4 -10
- package/dist/Txt-BP1SRHmL.js.map +1 -0
- package/dist/{Txt-B4-2nLaI.cjs → Txt-DPmEpNbp.cjs} +4 -10
- package/dist/Txt-DPmEpNbp.cjs.map +1 -0
- package/dist/{ask-user-BPpgiE7k.cjs → ask-user-4pnmHbuC.cjs} +3 -3
- package/dist/{ask-user-BPpgiE7k.cjs.map → ask-user-4pnmHbuC.cjs.map} +1 -1
- package/dist/{ask-user-jDUt7hgT.js → ask-user-CFcQN_7m.js} +3 -3
- package/dist/{ask-user-jDUt7hgT.js.map → ask-user-CFcQN_7m.js.map} +1 -1
- package/dist/{chat-notification-CmdRGO_D.js → chat-notification-BI_WRUvG.js} +3 -3
- package/dist/{chat-notification-CmdRGO_D.js.map → chat-notification-BI_WRUvG.js.map} +1 -1
- package/dist/{chat-notification-DJykWtoj.cjs → chat-notification-Dc7jwULm.cjs} +3 -3
- package/dist/{chat-notification-DJykWtoj.cjs.map → chat-notification-Dc7jwULm.cjs.map} +1 -1
- package/dist/{chat-signal-xs3FkPts.cjs → chat-signal-BodewV33.cjs} +3 -3
- package/dist/{chat-signal-xs3FkPts.cjs.map → chat-signal-BodewV33.cjs.map} +1 -1
- package/dist/{chat-signal-Vg8pGXwH.js → chat-signal-D0zw80bU.js} +3 -3
- package/dist/{chat-signal-Vg8pGXwH.js.map → chat-signal-D0zw80bU.js.map} +1 -1
- package/dist/{combobox-BoSB-muq.cjs → combobox-B19HJqE-.cjs} +2 -2
- package/dist/{combobox-BoSB-muq.cjs.map → combobox-B19HJqE-.cjs.map} +1 -1
- package/dist/{combobox-Cd0JPUQW.js → combobox-D_kmwSKS.js} +2 -2
- package/dist/{combobox-Cd0JPUQW.js.map → combobox-D_kmwSKS.js.map} +1 -1
- package/dist/components/Avatar.cjs.js +1 -1
- package/dist/components/Avatar.es.js +1 -1
- package/dist/components/Badge.cjs.js +1 -1
- package/dist/components/Badge.es.js +1 -1
- package/dist/components/ClampedText.cjs.js +1 -1
- package/dist/components/ClampedText.es.js +1 -1
- package/dist/components/Combobox.cjs.js +1 -1
- package/dist/components/Combobox.es.js +1 -1
- package/dist/components/Comment.cjs.js +2 -2
- package/dist/components/Comment.es.js +2 -2
- package/dist/components/CompactNumber.cjs.js +24 -0
- package/dist/components/CompactNumber.cjs.js.map +1 -0
- package/dist/components/CompactNumber.d.ts +2 -0
- package/dist/components/CompactNumber.es.js +20 -0
- package/dist/components/CompactNumber.es.js.map +1 -0
- package/dist/components/DataCodeSection.cjs.js +1 -1
- package/dist/components/DataCodeSection.es.js +1 -1
- package/dist/components/DataList.cjs.js +8 -14
- package/dist/components/DataList.cjs.js.map +1 -1
- package/dist/components/DataList.es.js +8 -14
- package/dist/components/DataList.es.js.map +1 -1
- package/dist/components/DataPanel.cjs.js +1 -1
- package/dist/components/DataPanel.es.js +1 -1
- package/dist/components/DateRangeTimeline.cjs.js +1 -1
- package/dist/components/DateRangeTimeline.es.js +1 -1
- package/dist/components/DateTimePicker.cjs.js +1 -1
- package/dist/components/DateTimePicker.es.js +1 -1
- package/dist/components/DateTimeRangePicker.cjs.js +1 -1
- package/dist/components/DateTimeRangePicker.es.js +1 -1
- package/dist/components/Entity.cjs.js +1 -1
- package/dist/components/Entity.es.js +1 -1
- package/dist/components/EntityHeader.cjs.js +1 -1
- package/dist/components/EntityHeader.es.js +1 -1
- package/dist/components/Entry.cjs.js +1 -1
- package/dist/components/Entry.es.js +1 -1
- package/dist/components/EnvironmentVariablesEditor.cjs.js +3 -3
- package/dist/components/EnvironmentVariablesEditor.es.js +3 -3
- package/dist/components/FilterBar.cjs.js +1 -1
- package/dist/components/FilterBar.es.js +1 -1
- package/dist/components/FormFieldBlocks.cjs.js +4 -4
- package/dist/components/FormFieldBlocks.es.js +4 -4
- package/dist/components/Header.cjs.js +1 -1
- package/dist/components/Header.es.js +1 -1
- package/dist/components/InlineCode.cjs.js +10 -0
- package/dist/components/InlineCode.cjs.js.map +1 -0
- package/dist/components/InlineCode.d.ts +2 -0
- package/dist/components/InlineCode.es.js +2 -0
- package/dist/components/InlineCode.es.js.map +1 -0
- package/dist/components/ItemList.cjs.js +5 -17
- package/dist/components/ItemList.cjs.js.map +1 -1
- package/dist/components/ItemList.es.js +5 -17
- package/dist/components/ItemList.es.js.map +1 -1
- package/dist/components/JSONSchemaForm.cjs.js +2 -2
- package/dist/components/JSONSchemaForm.es.js +2 -2
- package/dist/components/ListSearch.cjs.js +1 -1
- package/dist/components/ListSearch.es.js +1 -1
- package/dist/components/LogsDataList.cjs.js +2 -2
- package/dist/components/LogsDataList.es.js +2 -2
- package/dist/components/Message.cjs.js +4 -5
- package/dist/components/Message.cjs.js.map +1 -1
- package/dist/components/Message.es.js +4 -5
- package/dist/components/Message.es.js.map +1 -1
- package/dist/components/MetricsCard.cjs.js +1 -1
- package/dist/components/MetricsCard.es.js +1 -1
- package/dist/components/MetricsCardGroup.cjs.js +2 -11
- package/dist/components/MetricsCardGroup.cjs.js.map +1 -1
- package/dist/components/MetricsCardGroup.es.js +2 -11
- package/dist/components/MetricsCardGroup.es.js.map +1 -1
- package/dist/components/MetricsKpiCard.cjs.js +1 -1
- package/dist/components/MetricsKpiCard.es.js +1 -1
- package/dist/components/MetricsLineChart.cjs.js +2 -1
- package/dist/components/MetricsLineChart.cjs.js.map +1 -1
- package/dist/components/MetricsLineChart.es.js +1 -1
- package/dist/components/PageHeader.cjs.js +1 -1
- package/dist/components/PageHeader.es.js +1 -1
- package/dist/components/PageLayout.cjs.js +1 -1
- package/dist/components/PageLayout.es.js +1 -1
- package/dist/components/PropertyFilter.cjs.js +1 -1
- package/dist/components/PropertyFilter.es.js +1 -1
- package/dist/components/RelativeTimestamp.cjs.js +119 -0
- package/dist/components/RelativeTimestamp.cjs.js.map +1 -0
- package/dist/components/RelativeTimestamp.d.ts +2 -0
- package/dist/components/RelativeTimestamp.es.js +115 -0
- package/dist/components/RelativeTimestamp.es.js.map +1 -0
- package/dist/components/Section.cjs.js +1 -1
- package/dist/components/Section.es.js +1 -1
- package/dist/components/SettingsRow.cjs.js +1 -1
- package/dist/components/SettingsRow.es.js +1 -1
- package/dist/components/SideDialog.cjs.js +1 -1
- package/dist/components/SideDialog.es.js +1 -1
- package/dist/components/StatusIndicators.cjs.js +21 -14
- package/dist/components/StatusIndicators.cjs.js.map +1 -1
- package/dist/components/StatusIndicators.es.js +21 -15
- package/dist/components/StatusIndicators.es.js.map +1 -1
- package/dist/components/Table.cjs.js +3 -21
- package/dist/components/Table.cjs.js.map +1 -1
- package/dist/components/Table.es.js +3 -21
- package/dist/components/Table.es.js.map +1 -1
- package/dist/components/ThreadList.cjs.js +1 -1
- package/dist/components/ThreadList.es.js +1 -1
- package/dist/components/Truncate.cjs.js +1 -1
- package/dist/components/Truncate.es.js +1 -1
- package/dist/components/Txt.cjs.js +1 -1
- package/dist/components/Txt.es.js +1 -1
- package/dist/components/Workflow.cjs.js +9 -13
- package/dist/components/Workflow.cjs.js.map +1 -1
- package/dist/components/Workflow.es.js +9 -13
- package/dist/components/Workflow.es.js.map +1 -1
- package/dist/components/ai/ask-user.cjs.js +1 -1
- package/dist/components/ai/ask-user.es.js +1 -1
- package/dist/components/ai/chat-event.cjs.js +3 -3
- package/dist/components/ai/chat-event.es.js +4 -4
- package/dist/components/ai/plan.cjs.js +3 -3
- package/dist/components/ai/plan.cjs.js.map +1 -1
- package/dist/components/ai/plan.es.js +3 -3
- package/dist/components/ai/plan.es.js.map +1 -1
- package/dist/components/ai/task-list.cjs.js +370 -55
- package/dist/components/ai/task-list.cjs.js.map +1 -1
- package/dist/components/ai/task-list.es.js +374 -58
- package/dist/components/ai/task-list.es.js.map +1 -1
- package/dist/components/ai/tool-call.cjs.js +7 -9
- package/dist/components/ai/tool-call.cjs.js.map +1 -1
- package/dist/components/ai/tool-call.es.js +8 -10
- package/dist/components/ai/tool-call.es.js.map +1 -1
- package/dist/{data-code-section-Cth9zVkj.js → data-code-section-BKrCkj90.js} +2 -2
- package/dist/{data-code-section-Cth9zVkj.js.map → data-code-section-BKrCkj90.js.map} +1 -1
- package/dist/{data-code-section-DE4AgaTU.cjs → data-code-section-C9z94ytx.cjs} +2 -2
- package/dist/{data-code-section-DE4AgaTU.cjs.map → data-code-section-C9z94ytx.cjs.map} +1 -1
- package/dist/{data-list-DisTjDHP.js → data-list-5-nRJbEO.js} +3 -3
- package/dist/{data-list-DisTjDHP.js.map → data-list-5-nRJbEO.js.map} +1 -1
- package/dist/{data-list-PwFpP_mo.cjs → data-list-RI8c32dk.cjs} +3 -3
- package/dist/{data-list-PwFpP_mo.cjs.map → data-list-RI8c32dk.cjs.map} +1 -1
- package/dist/{data-list-skeleton-DAfM8AjW.js → data-list-skeleton-BrSh9Y_3.js} +2 -2
- package/dist/{data-list-skeleton-DAfM8AjW.js.map → data-list-skeleton-BrSh9Y_3.js.map} +1 -1
- package/dist/{data-list-skeleton-CjwR0o3w.cjs → data-list-skeleton-CgbWqYky.cjs} +2 -2
- package/dist/{data-list-skeleton-CjwR0o3w.cjs.map → data-list-skeleton-CgbWqYky.cjs.map} +1 -1
- package/dist/{data-list-spacer-DEcgVGFM.cjs → data-list-spacer-1OqlC7WX.cjs} +2 -2
- package/dist/{data-list-spacer-DEcgVGFM.cjs.map → data-list-spacer-1OqlC7WX.cjs.map} +1 -1
- package/dist/{data-list-spacer-BmorAN0V.js → data-list-spacer-D3Rn1evn.js} +2 -2
- package/dist/{data-list-spacer-BmorAN0V.js.map → data-list-spacer-D3Rn1evn.js.map} +1 -1
- package/dist/{data-list-top-DpbOA3uw.js → data-list-top-B-AopfvE.js} +13 -21
- package/dist/data-list-top-B-AopfvE.js.map +1 -0
- package/dist/{data-list-top-WGUY167p.cjs → data-list-top-DFnudSA_.cjs} +13 -21
- package/dist/data-list-top-DFnudSA_.cjs.map +1 -0
- package/dist/{data-panel-BQVTKo86.js → data-panel-BWgExbHs.js} +2 -2
- package/dist/{data-panel-BQVTKo86.js.map → data-panel-BWgExbHs.js.map} +1 -1
- package/dist/{data-panel-XPXrhYJI.cjs → data-panel-C_BqhzeL.cjs} +2 -2
- package/dist/{data-panel-XPXrhYJI.cjs.map → data-panel-C_BqhzeL.cjs.map} +1 -1
- package/dist/{date-time-range-picker-C-t3Kdpk.js → date-time-range-picker-Bnviv7s-.js} +2 -2
- package/dist/{date-time-range-picker-C-t3Kdpk.js.map → date-time-range-picker-Bnviv7s-.js.map} +1 -1
- package/dist/{date-time-range-picker-BCzvSYx3.cjs → date-time-range-picker-sT5qAW-_.cjs} +2 -2
- package/dist/{date-time-range-picker-BCzvSYx3.cjs.map → date-time-range-picker-sT5qAW-_.cjs.map} +1 -1
- package/dist/domains/capabilities/hooks/use-feedback-available.cjs.js +16 -0
- package/dist/domains/capabilities/hooks/use-feedback-available.cjs.js.map +1 -0
- package/dist/domains/capabilities/hooks/use-feedback-available.d.ts +2 -0
- package/dist/domains/capabilities/hooks/use-feedback-available.es.js +12 -0
- package/dist/domains/capabilities/hooks/use-feedback-available.es.js.map +1 -0
- package/dist/domains/capabilities/hooks/use-observability-capabilities.cjs.js +20 -0
- package/dist/domains/capabilities/hooks/use-observability-capabilities.cjs.js.map +1 -0
- package/dist/domains/capabilities/hooks/use-observability-capabilities.d.ts +2 -0
- package/dist/domains/capabilities/hooks/use-observability-capabilities.es.js +16 -0
- package/dist/domains/capabilities/hooks/use-observability-capabilities.es.js.map +1 -0
- package/dist/domains/capabilities/hooks/use-trace-query-available.cjs.js +16 -0
- package/dist/domains/capabilities/hooks/use-trace-query-available.cjs.js.map +1 -0
- package/dist/domains/capabilities/hooks/use-trace-query-available.d.ts +2 -0
- package/dist/domains/capabilities/hooks/use-trace-query-available.es.js +12 -0
- package/dist/domains/capabilities/hooks/use-trace-query-available.es.js.map +1 -0
- package/dist/domains/capabilities/hooks.cjs.js +14 -0
- package/dist/domains/capabilities/hooks.cjs.js.map +1 -0
- package/dist/domains/capabilities/hooks.d.ts +2 -0
- package/dist/domains/capabilities/hooks.es.js +4 -0
- package/dist/domains/capabilities/hooks.es.js.map +1 -0
- package/dist/domains/capabilities.cjs.js +14 -0
- package/dist/domains/capabilities.cjs.js.map +1 -0
- package/dist/domains/capabilities.d.ts +2 -0
- package/dist/domains/capabilities.es.js +4 -0
- package/dist/domains/capabilities.es.js.map +1 -0
- package/dist/domains/chat/attachments/attachment-kind.es.js +1 -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/components/network-choice-metadata-dialog.cjs.js +1 -1
- package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +1 -1
- package/dist/domains/chat/components/section-label.cjs.js +1 -1
- package/dist/domains/chat/components/section-label.es.js +1 -1
- 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-streaming-line.cjs.js +1 -1
- package/dist/domains/chat/messages/reasoning-streaming-line.es.js +1 -1
- package/dist/domains/chat/messages/reasoning.cjs.js +4 -3
- package/dist/domains/chat/messages/reasoning.cjs.js.map +1 -1
- package/dist/domains/chat/messages/reasoning.es.js +4 -3
- package/dist/domains/chat/messages/reasoning.es.js.map +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 +2 -2
- package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js.map +1 -1
- package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +2 -2
- package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js.map +1 -1
- package/dist/domains/chat/messages/renderers/user-file-part-renderer.es.js +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/system-reminder-badge.cjs.js +1 -1
- package/dist/domains/chat/messages/system-reminder-badge.cjs.js.map +1 -1
- package/dist/domains/chat/messages/system-reminder-badge.es.js +1 -1
- package/dist/domains/chat/messages/system-reminder-badge.es.js.map +1 -1
- package/dist/domains/chat/messages/tripwire-notice.cjs.js +2 -2
- package/dist/domains/chat/messages/tripwire-notice.cjs.js.map +1 -1
- package/dist/domains/chat/messages/tripwire-notice.es.js +2 -2
- package/dist/domains/chat/messages/tripwire-notice.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +3 -3
- package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/code-mode-badge.es.js +3 -3
- package/dist/domains/chat/tools/badges/code-mode-badge.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +6 -4
- 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 +6 -4
- package/dist/domains/chat/tools/badges/observation-marker-badge.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +11 -8
- package/dist/domains/chat/tools/badges/observation-renderer.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/observation-renderer.es.js +11 -8
- package/dist/domains/chat/tools/badges/observation-renderer.es.js.map +1 -1
- package/dist/domains/logs/components/log-data-panel.cjs.js +3 -6
- package/dist/domains/logs/components/log-data-panel.cjs.js.map +1 -1
- package/dist/domains/logs/components/log-data-panel.es.js +3 -6
- package/dist/domains/logs/components/log-data-panel.es.js.map +1 -1
- package/dist/domains/logs/components/logs-list-view.cjs.js +2 -2
- package/dist/domains/logs/components/logs-list-view.es.js +2 -2
- package/dist/domains/logs/components/no-logs-info.cjs.js +3 -4
- package/dist/domains/logs/components/no-logs-info.cjs.js.map +1 -1
- package/dist/domains/logs/components/no-logs-info.es.js +3 -4
- package/dist/domains/logs/components/no-logs-info.es.js.map +1 -1
- package/dist/domains/memory/components/flame-graph.cjs.js +7 -5
- package/dist/domains/memory/components/flame-graph.cjs.js.map +1 -1
- package/dist/domains/memory/components/flame-graph.es.js +8 -6
- package/dist/domains/memory/components/flame-graph.es.js.map +1 -1
- package/dist/domains/memory/components/memory-studio-panel.cjs.js +1 -1
- package/dist/domains/memory/components/memory-studio-panel.es.js +1 -1
- package/dist/domains/memory/components/observation-detail-view.cjs.js +4 -5
- package/dist/domains/memory/components/observation-detail-view.cjs.js.map +1 -1
- package/dist/domains/memory/components/observation-detail-view.es.js +4 -5
- package/dist/domains/memory/components/observation-detail-view.es.js.map +1 -1
- package/dist/domains/memory/components/thread-context-progress.cjs.js +1 -1
- package/dist/domains/memory/components/thread-context-progress.cjs.js.map +1 -1
- package/dist/domains/memory/components/thread-context-progress.es.js +1 -1
- package/dist/domains/memory/components/thread-context-progress.es.js.map +1 -1
- package/dist/domains/memory/lib/timeline.cjs.js +0 -9
- package/dist/domains/memory/lib/timeline.cjs.js.map +1 -1
- package/dist/domains/memory/lib/timeline.es.js +1 -9
- package/dist/domains/memory/lib/timeline.es.js.map +1 -1
- package/dist/domains/metrics/components/bar-list.cjs.js +4 -4
- package/dist/domains/metrics/components/bar-list.cjs.js.map +1 -1
- package/dist/domains/metrics/components/bar-list.es.js +4 -4
- package/dist/domains/metrics/components/bar-list.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/kpi-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/kpi-card-view.cjs.js.map +1 -1
- package/dist/domains/metrics/components/kpi-card-view.es.js +1 -1
- package/dist/domains/metrics/components/kpi-card-view.es.js.map +1 -1
- package/dist/domains/metrics/components/latency-card-view.cjs.js +33 -24
- package/dist/domains/metrics/components/latency-card-view.cjs.js.map +1 -1
- package/dist/domains/metrics/components/latency-card-view.es.js +34 -25
- package/dist/domains/metrics/components/latency-card-view.es.js.map +1 -1
- package/dist/domains/metrics/components/memory-card-view.cjs.js +9 -8
- package/dist/domains/metrics/components/memory-card-view.cjs.js.map +1 -1
- package/dist/domains/metrics/components/memory-card-view.es.js +8 -7
- package/dist/domains/metrics/components/memory-card-view.es.js.map +1 -1
- package/dist/domains/metrics/components/metrics-utils.cjs.js +0 -15
- package/dist/domains/metrics/components/metrics-utils.cjs.js.map +1 -1
- package/dist/domains/metrics/components/metrics-utils.es.js +1 -14
- package/dist/domains/metrics/components/metrics-utils.es.js.map +1 -1
- package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js +6 -5
- package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js.map +1 -1
- package/dist/domains/metrics/components/model-usage-cost-card-view.es.js +4 -3
- package/dist/domains/metrics/components/model-usage-cost-card-view.es.js.map +1 -1
- package/dist/domains/metrics/components/scores-card-view.cjs.js +5 -5
- package/dist/domains/metrics/components/scores-card-view.cjs.js.map +1 -1
- package/dist/domains/metrics/components/scores-card-view.es.js +5 -5
- package/dist/domains/metrics/components/scores-card-view.es.js.map +1 -1
- package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js +7 -6
- package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js.map +1 -1
- package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js +7 -6
- package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js.map +1 -1
- package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js +13 -11
- package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js.map +1 -1
- package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js +13 -11
- package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js.map +1 -1
- package/dist/domains/metrics/components/traces-volume-card-view.cjs.js +7 -6
- package/dist/domains/metrics/components/traces-volume-card-view.cjs.js.map +1 -1
- package/dist/domains/metrics/components/traces-volume-card-view.es.js +8 -7
- package/dist/domains/metrics/components/traces-volume-card-view.es.js.map +1 -1
- package/dist/domains/metrics/components.cjs.js +0 -2
- package/dist/domains/metrics/components.cjs.js.map +1 -1
- package/dist/domains/metrics/components.es.js +1 -1
- package/dist/domains/metrics/hooks/use-latency-metrics.cjs.js +11 -11
- package/dist/domains/metrics/hooks/use-latency-metrics.cjs.js.map +1 -1
- package/dist/domains/metrics/hooks/use-latency-metrics.es.js +12 -11
- package/dist/domains/metrics/hooks/use-latency-metrics.es.js.map +1 -1
- package/dist/domains/metrics/hooks/use-metrics.cjs.js +3 -3
- package/dist/domains/metrics/hooks/use-metrics.cjs.js.map +1 -1
- package/dist/domains/metrics/hooks/use-metrics.es.js +3 -3
- package/dist/domains/metrics/hooks/use-metrics.es.js.map +1 -1
- package/dist/domains/metrics/hooks/use-model-usage-cost-metrics.cjs.js +5 -5
- package/dist/domains/metrics/hooks/use-model-usage-cost-metrics.cjs.js.map +1 -1
- package/dist/domains/metrics/hooks/use-model-usage-cost-metrics.es.js +5 -5
- package/dist/domains/metrics/hooks/use-model-usage-cost-metrics.es.js.map +1 -1
- package/dist/domains/metrics/hooks/use-scores-metrics.cjs.js +6 -7
- package/dist/domains/metrics/hooks/use-scores-metrics.cjs.js.map +1 -1
- package/dist/domains/metrics/hooks/use-scores-metrics.es.js +6 -7
- package/dist/domains/metrics/hooks/use-scores-metrics.es.js.map +1 -1
- package/dist/domains/metrics/hooks/use-token-usage-timeseries.cjs.js +4 -12
- package/dist/domains/metrics/hooks/use-token-usage-timeseries.cjs.js.map +1 -1
- package/dist/domains/metrics/hooks/use-token-usage-timeseries.es.js +4 -12
- package/dist/domains/metrics/hooks/use-token-usage-timeseries.es.js.map +1 -1
- package/dist/domains/metrics/hooks.cjs.js +3 -0
- package/dist/domains/metrics/hooks.cjs.js.map +1 -1
- package/dist/domains/metrics/hooks.es.js +1 -0
- package/dist/domains/metrics/hooks.es.js.map +1 -1
- package/dist/domains/metrics/metrics-interval.cjs.js +20 -0
- package/dist/domains/metrics/metrics-interval.cjs.js.map +1 -0
- package/dist/domains/metrics/metrics-interval.d.ts +2 -0
- package/dist/domains/metrics/metrics-interval.es.js +15 -0
- package/dist/domains/metrics/metrics-interval.es.js.map +1 -0
- package/dist/domains/metrics.cjs.js +3 -2
- package/dist/domains/metrics.cjs.js.map +1 -1
- package/dist/domains/metrics.es.js +2 -1
- package/dist/domains/metrics.es.js.map +1 -1
- package/dist/domains/traces/components/no-traces-info.cjs.js +3 -4
- package/dist/domains/traces/components/no-traces-info.cjs.js.map +1 -1
- package/dist/domains/traces/components/no-traces-info.es.js +3 -4
- package/dist/domains/traces/components/no-traces-info.es.js.map +1 -1
- package/dist/domains/traces/components/span-data-panel-view.cjs.js +1 -1
- package/dist/domains/traces/components/span-data-panel-view.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 +3 -2
- package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +3 -2
- package/dist/domains/traces/components/span-payload/span-output-renderers.es.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-json.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-json.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-json.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-json.es.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +1 -1
- 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 +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js +3 -2
- package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +3 -2
- package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js.map +1 -1
- package/dist/domains/traces/components/span-summary-description.cjs.js +6 -4
- package/dist/domains/traces/components/span-summary-description.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-summary-description.es.js +7 -5
- package/dist/domains/traces/components/span-summary-description.es.js.map +1 -1
- package/dist/domains/traces/components/span-timeline-row.cjs.js +3 -4
- package/dist/domains/traces/components/span-timeline-row.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-timeline-row.es.js +3 -4
- package/dist/domains/traces/components/span-timeline-row.es.js.map +1 -1
- package/dist/domains/traces/components/span-timing-hover-card.cjs.js +6 -11
- package/dist/domains/traces/components/span-timing-hover-card.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-timing-hover-card.es.js +6 -11
- package/dist/domains/traces/components/span-timing-hover-card.es.js.map +1 -1
- package/dist/domains/traces/components/span-type-legend.cjs.js +1 -1
- package/dist/domains/traces/components/span-type-legend.es.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +1 -1
- package/dist/domains/traces/components/timeline-timing-col.cjs.js +3 -4
- package/dist/domains/traces/components/timeline-timing-col.cjs.js.map +1 -1
- package/dist/domains/traces/components/timeline-timing-col.es.js +3 -4
- package/dist/domains/traces/components/timeline-timing-col.es.js.map +1 -1
- package/dist/domains/traces/components/trace-columns-menu.cjs.js +21 -18
- package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-columns-menu.es.js +21 -18
- package/dist/domains/traces/components/trace-columns-menu.es.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js +2 -2
- package/dist/domains/traces/components/trace-data-panel-view.es.js +2 -2
- package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
- package/dist/domains/traces/components/trace-id-button.es.js +1 -1
- package/dist/domains/traces/components/trace-span-timeline.cjs.js +10 -4
- package/dist/domains/traces/components/trace-span-timeline.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-span-timeline.es.js +10 -4
- package/dist/domains/traces/components/trace-span-timeline.es.js.map +1 -1
- package/dist/domains/traces/components/trace-span-tree.cjs.js +3 -4
- package/dist/domains/traces/components/trace-span-tree.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-span-tree.es.js +3 -4
- package/dist/domains/traces/components/trace-span-tree.es.js.map +1 -1
- package/dist/domains/traces/components/trace-summary-description.cjs.js +13 -10
- package/dist/domains/traces/components/trace-summary-description.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-summary-description.es.js +13 -10
- package/dist/domains/traces/components/trace-summary-description.es.js.map +1 -1
- package/dist/domains/traces/components/trace-time-range-chip.cjs.js +1 -1
- package/dist/domains/traces/components/trace-time-range-chip.es.js +1 -1
- package/dist/domains/traces/components/traces-list-view.cjs.js +12 -10
- package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-list-view.es.js +12 -10
- 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/hooks/use-branch.cjs.js +0 -1
- package/dist/domains/traces/hooks/use-branch.cjs.js.map +1 -1
- package/dist/domains/traces/hooks/use-branch.es.js +0 -1
- package/dist/domains/traces/hooks/use-branch.es.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-light-spans.cjs.js +0 -1
- package/dist/domains/traces/hooks/use-trace-light-spans.cjs.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-light-spans.es.js +0 -1
- package/dist/domains/traces/hooks/use-trace-light-spans.es.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-query.cjs.js +63 -3
- package/dist/domains/traces/hooks/use-trace-query.cjs.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-query.es.js +61 -4
- package/dist/domains/traces/hooks/use-trace-query.es.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-search.cjs.js +0 -1
- package/dist/domains/traces/hooks/use-trace-search.cjs.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-search.es.js +0 -1
- package/dist/domains/traces/hooks/use-trace-search.es.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-spans.cjs.js +0 -1
- package/dist/domains/traces/hooks/use-trace-spans.cjs.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-spans.es.js +0 -1
- package/dist/domains/traces/hooks/use-trace-spans.es.js.map +1 -1
- package/dist/domains/traces/hooks/use-traces-list-source.cjs.js +42 -0
- package/dist/domains/traces/hooks/use-traces-list-source.cjs.js.map +1 -0
- package/dist/domains/traces/hooks/use-traces-list-source.d.ts +2 -0
- package/dist/domains/traces/hooks/use-traces-list-source.es.js +38 -0
- package/dist/domains/traces/hooks/use-traces-list-source.es.js.map +1 -0
- package/dist/domains/traces/hooks.cjs.js +2 -0
- package/dist/domains/traces/hooks.cjs.js.map +1 -1
- package/dist/domains/traces/hooks.es.js +1 -0
- package/dist/domains/traces/hooks.es.js.map +1 -1
- package/dist/domains/traces/trace-filters.cjs.js +10 -1
- package/dist/domains/traces/trace-filters.cjs.js.map +1 -1
- package/dist/domains/traces/trace-filters.es.js +10 -1
- package/dist/domains/traces/trace-filters.es.js.map +1 -1
- package/dist/domains/traces/utils/span-utils.cjs.js +4 -36
- package/dist/domains/traces/utils/span-utils.cjs.js.map +1 -1
- package/dist/domains/traces/utils/span-utils.es.js +4 -32
- package/dist/domains/traces/utils/span-utils.es.js.map +1 -1
- package/dist/domains/traces/utils.cjs.js +1 -1
- package/dist/domains/traces/utils.es.js +1 -1
- package/dist/domains/traces.cjs.js +3 -1
- package/dist/domains/traces.cjs.js.map +1 -1
- package/dist/domains/traces.es.js +2 -1
- package/dist/domains/traces.es.js.map +1 -1
- package/dist/ee/signals/components/entity-index-compact-grid.cjs.js +1 -1
- package/dist/ee/signals/components/entity-index-compact-grid.es.js +1 -1
- package/dist/ee/signals/components/entity-index-list.cjs.js +2 -2
- package/dist/ee/signals/components/entity-index-list.es.js +2 -2
- package/dist/ee/signals/components/entity-index-model.cjs.js +3 -2
- package/dist/ee/signals/components/entity-index-model.cjs.js.map +1 -1
- package/dist/ee/signals/components/entity-index-model.es.js +3 -2
- package/dist/ee/signals/components/entity-index-model.es.js.map +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +2 -2
- package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +2 -2
- package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +2 -2
- package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +2 -2
- package/dist/ee/signals/settings/trace-signal-settings.cjs.js +1 -1
- package/dist/ee/signals/settings/trace-signal-settings.es.js +1 -1
- package/dist/ee/signals/signal-formatting.cjs.js +6 -34
- package/dist/ee/signals/signal-formatting.cjs.js.map +1 -1
- package/dist/ee/signals/signal-formatting.es.js +6 -34
- package/dist/ee/signals/signal-formatting.es.js.map +1 -1
- package/dist/ee/signals/snapshot-timeline-data.cjs.js +1 -1
- package/dist/ee/signals/snapshot-timeline-data.cjs.js.map +1 -1
- package/dist/ee/signals/snapshot-timeline-data.es.js +1 -1
- package/dist/ee/signals/snapshot-timeline-data.es.js.map +1 -1
- package/dist/ee/signals/view-mode-tab.cjs.js +1 -1
- package/dist/ee/signals/view-mode-tab.es.js +1 -1
- package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +1 -1
- package/dist/ee/topics/components/topic-trace-summary-list.es.js +1 -1
- package/dist/field-block-error-msg-Y0fi0HUC.js +22 -0
- package/dist/field-block-error-msg-Y0fi0HUC.js.map +1 -0
- package/dist/field-block-error-msg-oudJz2Hx.cjs +24 -0
- package/dist/field-block-error-msg-oudJz2Hx.cjs.map +1 -0
- package/dist/{field-error-id-DyWx33Fu.js → field-error-id-DD7OARLU.js} +2 -13
- package/dist/field-error-id-DD7OARLU.js.map +1 -0
- package/dist/{field-error-id-6EfqmQ4C.cjs → field-error-id-V_WejsRL.cjs} +4 -15
- package/dist/field-error-id-V_WejsRL.cjs.map +1 -0
- package/dist/hooks/use-elapsed-time.cjs.js +25 -0
- package/dist/hooks/use-elapsed-time.cjs.js.map +1 -0
- package/dist/hooks/use-elapsed-time.d.ts +2 -0
- package/dist/hooks/use-elapsed-time.es.js +21 -0
- package/dist/hooks/use-elapsed-time.es.js.map +1 -0
- package/dist/inline-code-BW6W121s.js +13 -0
- package/dist/inline-code-BW6W121s.js.map +1 -0
- package/dist/inline-code-CSwG-x8D.cjs +15 -0
- package/dist/inline-code-CSwG-x8D.cjs.map +1 -0
- package/dist/layout/tabbed-container.cjs.js +3 -3
- package/dist/layout/tabbed-container.es.js +3 -3
- package/dist/{list-search-S1mco9Bl.cjs → list-search-CsYQX8qR.cjs} +2 -2
- package/dist/{list-search-S1mco9Bl.cjs.map → list-search-CsYQX8qR.cjs.map} +1 -1
- package/dist/{list-search-FJ1O5F3S.js → list-search-D1FD8FCL.js} +2 -2
- package/dist/{list-search-FJ1O5F3S.js.map → list-search-D1FD8FCL.js.map} +1 -1
- package/dist/{logs-data-list-5BAeLU57.js → logs-data-list-BKE5vYZR.js} +4 -4
- package/dist/{logs-data-list-5BAeLU57.js.map → logs-data-list-BKE5vYZR.js.map} +1 -1
- package/dist/{logs-data-list-YL9yLKF3.cjs → logs-data-list-lJK0yGYj.cjs} +4 -4
- package/dist/{logs-data-list-YL9yLKF3.cjs.map → logs-data-list-lJK0yGYj.cjs.map} +1 -1
- package/dist/{metrics-card-Bzm6m1dy.js → metrics-card-C2RTi5Ew.js} +7 -7
- package/dist/metrics-card-C2RTi5Ew.js.map +1 -0
- package/dist/{metrics-card-DCCHIG-z.cjs → metrics-card-DzcVJTAN.cjs} +7 -7
- package/dist/metrics-card-DzcVJTAN.cjs.map +1 -0
- package/dist/{metrics-kpi-card-BrnFhFQm.js → metrics-kpi-card-BVCuXeDa.js} +21 -10
- package/dist/metrics-kpi-card-BVCuXeDa.js.map +1 -0
- package/dist/{metrics-kpi-card-Bhb4R4z0.cjs → metrics-kpi-card-DoIeHfv6.cjs} +21 -10
- package/dist/metrics-kpi-card-DoIeHfv6.cjs.map +1 -0
- package/dist/{metrics-line-chart-0FR3SYSt.cjs → metrics-line-chart-BNNRRxM8.cjs} +61 -25
- package/dist/metrics-line-chart-BNNRRxM8.cjs.map +1 -0
- package/dist/{metrics-line-chart-knlgw8bV.js → metrics-line-chart-CT_pqJtC.js} +62 -27
- package/dist/metrics-line-chart-CT_pqJtC.js.map +1 -0
- package/dist/new/layout/page-header.cjs.js +1 -1
- package/dist/new/layout/page-header.es.js +1 -1
- package/dist/new/settings.cjs.js +2 -2
- package/dist/new/settings.es.js +2 -2
- package/dist/{page-header-CyXAezlZ.js → page-header-BGyZw13s.js} +2 -2
- package/dist/page-header-BGyZw13s.js.map +1 -0
- package/dist/{page-header-Dk3s3XtC.cjs → page-header-CqvBk1wE.cjs} +2 -2
- package/dist/page-header-CqvBk1wE.cjs.map +1 -0
- package/dist/{schemes-C9EhSOkB.js → schemes-CGK3gQJ6.js} +2 -2
- package/dist/{schemes-C9EhSOkB.js.map → schemes-CGK3gQJ6.js.map} +1 -1
- package/dist/{search-field-block-fU3tStmB.js → search-field-block-Dj2KJyjQ.js} +2 -2
- package/dist/{search-field-block-fU3tStmB.js.map → search-field-block-Dj2KJyjQ.js.map} +1 -1
- package/dist/{search-field-block-7-ufp4uG.cjs → search-field-block-K_e_S9WY.cjs} +2 -2
- package/dist/{search-field-block-7-ufp4uG.cjs.map → search-field-block-K_e_S9WY.cjs.map} +1 -1
- package/dist/{section-B9OLuEq3.js → section-Bi0g7cn6.js} +2 -2
- package/dist/{section-B9OLuEq3.js.map → section-Bi0g7cn6.js.map} +1 -1
- package/dist/{section-CTihfzmc.cjs → section-p9vCSmPq.cjs} +2 -2
- package/dist/{section-CTihfzmc.cjs.map → section-p9vCSmPq.cjs.map} +1 -1
- package/dist/{select-field-block-BfiHq9t6.js → select-field-block-BF8v698d.js} +2 -2
- package/dist/{select-field-block-BfiHq9t6.js.map → select-field-block-BF8v698d.js.map} +1 -1
- package/dist/{select-field-block-DJo2cX9Y.cjs → select-field-block-CaGjpIKM.cjs} +2 -2
- package/dist/{select-field-block-DJo2cX9Y.cjs.map → select-field-block-CaGjpIKM.cjs.map} +1 -1
- package/dist/{settings-row-BoAuUUuH.cjs → settings-row-Cr8gaO5a.cjs} +14 -4
- package/dist/settings-row-Cr8gaO5a.cjs.map +1 -0
- package/dist/{settings-row-B2IekRyH.js → settings-row-Cr9DsBSX.js} +14 -4
- package/dist/settings-row-Cr9DsBSX.js.map +1 -0
- package/dist/{span-payload-primitives-Buq9V8nK.js → span-payload-primitives-Dmzm3mb2.js} +2 -2
- package/dist/{span-payload-primitives-Buq9V8nK.js.map → span-payload-primitives-Dmzm3mb2.js.map} +1 -1
- package/dist/{span-payload-primitives-CjlNH9C-.cjs → span-payload-primitives-Dq8WqqNm.cjs} +2 -2
- package/dist/{span-payload-primitives-CjlNH9C-.cjs.map → span-payload-primitives-Dq8WqqNm.cjs.map} +1 -1
- package/dist/src/domains/capabilities/hooks/index.d.ts +3 -0
- package/dist/src/domains/capabilities/hooks/use-feedback-available.d.ts +8 -0
- package/dist/src/domains/capabilities/hooks/use-observability-capabilities.d.ts +22 -0
- package/dist/src/domains/capabilities/hooks/use-trace-query-available.d.ts +8 -0
- package/dist/src/domains/capabilities/index.d.ts +1 -0
- package/dist/src/domains/chat/messages/reasoning.d.ts +3 -1
- package/dist/src/domains/chat/messages/renderers/reasoning-part-renderer.d.ts +3 -1
- package/dist/src/domains/chat/stories/reasoning.stories.d.ts +1 -1
- package/dist/src/domains/memory/lib/timeline.d.ts +0 -1
- package/dist/src/domains/metrics/components/index.d.ts +1 -1
- package/dist/src/domains/metrics/components/kpi-card-view.d.ts +2 -1
- package/dist/src/domains/metrics/components/latency-card-view.d.ts +4 -1
- package/dist/src/domains/metrics/components/metrics-utils.d.ts +0 -2
- package/dist/src/domains/metrics/hooks/index.d.ts +1 -0
- package/dist/src/domains/metrics/hooks/use-latency-metrics.d.ts +2 -2
- package/dist/src/domains/metrics/hooks/use-token-usage-timeseries.d.ts +2 -1
- package/dist/src/domains/metrics/metrics-interval.d.ts +7 -0
- package/dist/src/domains/traces/components/trace-columns-menu.d.ts +3 -1
- package/dist/src/domains/traces/components/trace-data-panel-view.stories.d.ts +1 -1
- package/dist/src/domains/traces/hooks/index.d.ts +1 -0
- package/dist/src/domains/traces/hooks/use-trace-query.d.ts +19 -2
- package/dist/src/domains/traces/hooks/use-traces-list-source.d.ts +46 -0
- package/dist/src/domains/traces/trace-filters.d.ts +6 -1
- package/dist/src/domains/traces/utils/index.d.ts +1 -1
- package/dist/src/domains/traces/utils/span-utils.d.ts +1 -6
- package/dist/src/ds/components/Card/Card.d.ts +2 -2
- package/dist/src/ds/components/CompactNumber/compact-number.d.ts +6 -0
- package/dist/src/ds/components/CompactNumber/compact-number.stories.d.ts +7 -0
- package/dist/src/ds/components/CompactNumber/index.d.ts +1 -0
- package/dist/src/ds/components/DataList/data-list-cells.d.ts +4 -3
- package/dist/src/ds/components/InlineCode/index.d.ts +1 -0
- package/dist/src/ds/components/InlineCode/inline-code.d.ts +3 -0
- package/dist/src/ds/components/InlineCode/inline-code.stories.d.ts +13 -0
- package/dist/src/ds/components/ItemList/item-list-date-cell.d.ts +3 -2
- package/dist/src/ds/components/MetricsCardGroup/metrics-card-group.d.ts +3 -8
- package/dist/src/ds/components/MetricsLineChart/index.d.ts +1 -0
- package/dist/src/ds/components/MetricsLineChart/metrics-line-chart-legend.d.ts +6 -0
- package/dist/src/ds/components/MetricsLineChart/metrics-line-chart.d.ts +6 -4
- package/dist/src/ds/components/MetricsLineChart/metrics-line-chart.stories.d.ts +1 -0
- package/dist/src/ds/components/RelativeTimestamp/index.d.ts +1 -0
- package/dist/src/ds/components/RelativeTimestamp/relative-timestamp.d.ts +6 -0
- package/dist/src/ds/components/RelativeTimestamp/relative-timestamp.stories.d.ts +7 -0
- package/dist/src/ds/components/StatusIndicators/status-dot-styles.d.ts +31 -2
- package/dist/src/ds/components/StatusIndicators/status-dot.stories.d.ts +3 -4
- package/dist/src/ds/components/StatusIndicators/status.d.ts +2 -3
- package/dist/src/ds/components/StatusIndicators/status.stories.d.ts +2 -1
- package/dist/src/ds/components/Txt/Txt.d.ts +5 -1
- package/dist/src/ds/components/ai/task-list/task-graph-node.d.ts +8 -0
- package/dist/src/ds/components/ai/task-list/task-graph.d.ts +8 -0
- package/dist/src/ds/components/ai/task-list/task-list.d.ts +4 -8
- package/dist/src/ds/components/ai/task-list/task-list.stories.d.ts +1 -1
- package/dist/src/ds/components/ai/task-list/use-focused-row-scroll.d.ts +12 -0
- package/dist/src/ds/new/layout/page-header/page-header.stories.d.ts +1 -0
- package/dist/src/ds/new/settings/settings-row.d.ts +3 -1
- package/dist/src/ds/new/settings/settings.stories.d.ts +1 -0
- package/dist/src/hooks/stories/state/use-elapsed-time.stories.d.ts +17 -0
- package/dist/src/hooks/use-elapsed-time.d.ts +2 -0
- package/dist/src/lib/cost.d.ts +6 -0
- package/dist/src/utils/cost.d.ts +1 -0
- package/dist/src/utils/date-format.d.ts +28 -0
- package/dist/src/utils/duration.d.ts +7 -1
- package/dist/src/utils/relative-time.d.ts +7 -0
- package/dist/style.css +329 -18
- package/dist/{text-field-block-DGIM1i3Z.js → text-field-block-BYPiO9h4.js} +2 -2
- package/dist/{text-field-block-DGIM1i3Z.js.map → text-field-block-BYPiO9h4.js.map} +1 -1
- package/dist/{text-field-block-DePCgDOh.cjs → text-field-block-CRh8sRXP.cjs} +2 -2
- package/dist/{text-field-block-DePCgDOh.cjs.map → text-field-block-CRh8sRXP.cjs.map} +1 -1
- package/dist/{tool-call-Bs-9Cah5.js → tool-call-CIeNEYpK.js} +2 -2
- package/dist/{tool-call-Bs-9Cah5.js.map → tool-call-CIeNEYpK.js.map} +1 -1
- package/dist/{tool-call-C0JeHe8Z.cjs → tool-call-CnEm3eE0.cjs} +2 -2
- package/dist/{tool-call-C0JeHe8Z.cjs.map → tool-call-CnEm3eE0.cjs.map} +1 -1
- package/dist/{traces-data-list-Dam8-XW-.cjs → traces-data-list-C5KZesk6.cjs} +5 -5
- package/dist/{traces-data-list-Dam8-XW-.cjs.map → traces-data-list-C5KZesk6.cjs.map} +1 -1
- package/dist/{traces-data-list-Dvi0s56v.js → traces-data-list-CdWW9J6z.js} +5 -5
- package/dist/{traces-data-list-Dvi0s56v.js.map → traces-data-list-CdWW9J6z.js.map} +1 -1
- package/dist/utils/cost.cjs.js +40 -0
- package/dist/utils/cost.cjs.js.map +1 -0
- package/dist/utils/cost.d.ts +2 -0
- package/dist/utils/cost.es.js +34 -0
- package/dist/utils/cost.es.js.map +1 -0
- package/dist/utils/date-format.cjs.js +99 -0
- package/dist/utils/date-format.cjs.js.map +1 -0
- package/dist/utils/date-format.d.ts +2 -0
- package/dist/utils/date-format.es.js +91 -0
- package/dist/utils/date-format.es.js.map +1 -0
- package/dist/utils/duration.cjs.js +19 -2
- package/dist/utils/duration.cjs.js.map +1 -1
- package/dist/utils/duration.es.js +18 -3
- package/dist/utils/duration.es.js.map +1 -1
- package/dist/utils/file.es.js +2 -2
- package/dist/utils/relative-time.cjs.js +12 -0
- package/dist/utils/relative-time.cjs.js.map +1 -0
- package/dist/utils/relative-time.d.ts +2 -0
- package/dist/utils/relative-time.es.js +8 -0
- package/dist/utils/relative-time.es.js.map +1 -0
- package/package.json +7 -7
- package/dist/Badge-BEeYtjmv.cjs.map +0 -1
- package/dist/Badge-TD55_qZJ.js.map +0 -1
- package/dist/Txt-B4-2nLaI.cjs.map +0 -1
- package/dist/Txt-DTh3Pa_a.js.map +0 -1
- package/dist/data-list-top-DpbOA3uw.js.map +0 -1
- package/dist/data-list-top-WGUY167p.cjs.map +0 -1
- package/dist/field-error-id-6EfqmQ4C.cjs.map +0 -1
- package/dist/field-error-id-DyWx33Fu.js.map +0 -1
- package/dist/metrics-card-Bzm6m1dy.js.map +0 -1
- package/dist/metrics-card-DCCHIG-z.cjs.map +0 -1
- package/dist/metrics-kpi-card-Bhb4R4z0.cjs.map +0 -1
- package/dist/metrics-kpi-card-BrnFhFQm.js.map +0 -1
- package/dist/metrics-line-chart-0FR3SYSt.cjs.map +0 -1
- package/dist/metrics-line-chart-knlgw8bV.js.map +0 -1
- package/dist/page-header-CyXAezlZ.js.map +0 -1
- package/dist/page-header-Dk3s3XtC.cjs.map +0 -1
- package/dist/settings-row-B2IekRyH.js.map +0 -1
- package/dist/settings-row-BoAuUUuH.cjs.map +0 -1
- package/dist/src/ds/components/Table/utils.d.ts +0 -4
|
@@ -25,16 +25,7 @@ function toT(isoString, domain) {
|
|
|
25
25
|
function tToTimestamp(t, domain) {
|
|
26
26
|
return new Date(domain.tMin + t * (domain.tMax - domain.tMin));
|
|
27
27
|
}
|
|
28
|
-
function formatTimeDisplay(date) {
|
|
29
|
-
const day = String(date.getUTCDate()).padStart(2, "0");
|
|
30
|
-
const month = String(date.getUTCMonth() + 1).padStart(2, "0");
|
|
31
|
-
const h = String(date.getUTCHours()).padStart(2, "0");
|
|
32
|
-
const m = String(date.getUTCMinutes()).padStart(2, "0");
|
|
33
|
-
const s = String(date.getUTCSeconds()).padStart(2, "0");
|
|
34
|
-
return `${day}/${month} ${h}:${m}:${s}`;
|
|
35
|
-
}
|
|
36
28
|
|
|
37
|
-
exports.formatTimeDisplay = formatTimeDisplay;
|
|
38
29
|
exports.parseUTC = parseUTC;
|
|
39
30
|
exports.tToTimestamp = tToTimestamp;
|
|
40
31
|
exports.timestampsToTDomain = timestampsToTDomain;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeline.cjs.js","sources":["../../../../src/domains/memory/lib/timeline.ts"],"sourcesContent":["export interface TDomain {\n tMin: number;\n tMax: number;\n}\n\nexport function parseUTC(ts: string): number {\n if (/[Zz+-]\\d{0,4}$/.test(ts.trim())) return new Date(ts).getTime();\n return new Date(ts.trim().replace(' ', 'T') + 'Z').getTime();\n}\n\nexport function timestampsToTDomain(timestamps: string[]): TDomain {\n if (timestamps.length === 0) return { tMin: 0, tMax: 1 };\n\n let min = Infinity;\n let max = -Infinity;\n\n for (const ts of timestamps) {\n const t = parseUTC(ts);\n if (t < min) min = t;\n if (t > max) max = t;\n }\n\n if (min === max) return { tMin: min, tMax: min + 1 };\n\n return { tMin: min, tMax: max };\n}\n\nexport function toT(isoString: string, domain: TDomain): number {\n const t = parseUTC(isoString);\n return (t - domain.tMin) / (domain.tMax - domain.tMin);\n}\n\nexport function tToTimestamp(t: number, domain: TDomain): Date {\n return new Date(domain.tMin + t * (domain.tMax - domain.tMin));\n}\n
|
|
1
|
+
{"version":3,"file":"timeline.cjs.js","sources":["../../../../src/domains/memory/lib/timeline.ts"],"sourcesContent":["export interface TDomain {\n tMin: number;\n tMax: number;\n}\n\nexport function parseUTC(ts: string): number {\n if (/[Zz+-]\\d{0,4}$/.test(ts.trim())) return new Date(ts).getTime();\n return new Date(ts.trim().replace(' ', 'T') + 'Z').getTime();\n}\n\nexport function timestampsToTDomain(timestamps: string[]): TDomain {\n if (timestamps.length === 0) return { tMin: 0, tMax: 1 };\n\n let min = Infinity;\n let max = -Infinity;\n\n for (const ts of timestamps) {\n const t = parseUTC(ts);\n if (t < min) min = t;\n if (t > max) max = t;\n }\n\n if (min === max) return { tMin: min, tMax: min + 1 };\n\n return { tMin: min, tMax: max };\n}\n\nexport function toT(isoString: string, domain: TDomain): number {\n const t = parseUTC(isoString);\n return (t - domain.tMin) / (domain.tMax - domain.tMin);\n}\n\nexport function tToTimestamp(t: number, domain: TDomain): Date {\n return new Date(domain.tMin + t * (domain.tMax - domain.tMin));\n}\n"],"names":[],"mappings":";;;;AAKO,SAAS,SAAS,EAAA,EAAoB;AAC3C,EAAA,IAAI,gBAAA,CAAiB,IAAA,CAAK,EAAA,CAAG,IAAA,EAAM,CAAA,EAAG,OAAO,IAAI,IAAA,CAAK,EAAE,CAAA,CAAE,OAAA,EAAQ;AAClE,EAAA,OAAA,iBAAO,IAAI,IAAA,CAAK,EAAA,CAAG,IAAA,EAAK,CAAE,OAAA,CAAQ,GAAA,EAAK,GAAG,CAAA,GAAI,GAAG,CAAA,EAAE,OAAA,EAAQ;AAC7D;AAEO,SAAS,oBAAoB,UAAA,EAA+B;AACjE,EAAA,IAAI,UAAA,CAAW,WAAW,CAAA,EAAG,OAAO,EAAE,IAAA,EAAM,CAAA,EAAG,MAAM,CAAA,EAAE;AAEvD,EAAA,IAAI,GAAA,GAAM,QAAA;AACV,EAAA,IAAI,GAAA,GAAM,CAAA,QAAA;AAEV,EAAA,KAAA,MAAW,MAAM,UAAA,EAAY;AAC3B,IAAA,MAAM,CAAA,GAAI,SAAS,EAAE,CAAA;AACrB,IAAA,IAAI,CAAA,GAAI,KAAK,GAAA,GAAM,CAAA;AACnB,IAAA,IAAI,CAAA,GAAI,KAAK,GAAA,GAAM,CAAA;AAAA,EACrB;AAEA,EAAA,IAAI,GAAA,KAAQ,KAAK,OAAO,EAAE,MAAM,GAAA,EAAK,IAAA,EAAM,MAAM,CAAA,EAAE;AAEnD,EAAA,OAAO,EAAE,IAAA,EAAM,GAAA,EAAK,IAAA,EAAM,GAAA,EAAI;AAChC;AAEO,SAAS,GAAA,CAAI,WAAmB,MAAA,EAAyB;AAC9D,EAAA,MAAM,CAAA,GAAI,SAAS,SAAS,CAAA;AAC5B,EAAA,OAAA,CAAQ,CAAA,GAAI,MAAA,CAAO,IAAA,KAAS,MAAA,CAAO,OAAO,MAAA,CAAO,IAAA,CAAA;AACnD;AAEO,SAAS,YAAA,CAAa,GAAW,MAAA,EAAuB;AAC7D,EAAA,OAAO,IAAI,KAAK,MAAA,CAAO,IAAA,GAAO,KAAK,MAAA,CAAO,IAAA,GAAO,OAAO,IAAA,CAAK,CAAA;AAC/D;;;;;;;"}
|
|
@@ -21,14 +21,6 @@ function toT(isoString, domain) {
|
|
|
21
21
|
function tToTimestamp(t, domain) {
|
|
22
22
|
return new Date(domain.tMin + t * (domain.tMax - domain.tMin));
|
|
23
23
|
}
|
|
24
|
-
function formatTimeDisplay(date) {
|
|
25
|
-
const day = String(date.getUTCDate()).padStart(2, "0");
|
|
26
|
-
const month = String(date.getUTCMonth() + 1).padStart(2, "0");
|
|
27
|
-
const h = String(date.getUTCHours()).padStart(2, "0");
|
|
28
|
-
const m = String(date.getUTCMinutes()).padStart(2, "0");
|
|
29
|
-
const s = String(date.getUTCSeconds()).padStart(2, "0");
|
|
30
|
-
return `${day}/${month} ${h}:${m}:${s}`;
|
|
31
|
-
}
|
|
32
24
|
|
|
33
|
-
export {
|
|
25
|
+
export { parseUTC, tToTimestamp, timestampsToTDomain, toT };
|
|
34
26
|
//# sourceMappingURL=timeline.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeline.es.js","sources":["../../../../src/domains/memory/lib/timeline.ts"],"sourcesContent":["export interface TDomain {\n tMin: number;\n tMax: number;\n}\n\nexport function parseUTC(ts: string): number {\n if (/[Zz+-]\\d{0,4}$/.test(ts.trim())) return new Date(ts).getTime();\n return new Date(ts.trim().replace(' ', 'T') + 'Z').getTime();\n}\n\nexport function timestampsToTDomain(timestamps: string[]): TDomain {\n if (timestamps.length === 0) return { tMin: 0, tMax: 1 };\n\n let min = Infinity;\n let max = -Infinity;\n\n for (const ts of timestamps) {\n const t = parseUTC(ts);\n if (t < min) min = t;\n if (t > max) max = t;\n }\n\n if (min === max) return { tMin: min, tMax: min + 1 };\n\n return { tMin: min, tMax: max };\n}\n\nexport function toT(isoString: string, domain: TDomain): number {\n const t = parseUTC(isoString);\n return (t - domain.tMin) / (domain.tMax - domain.tMin);\n}\n\nexport function tToTimestamp(t: number, domain: TDomain): Date {\n return new Date(domain.tMin + t * (domain.tMax - domain.tMin));\n}\n
|
|
1
|
+
{"version":3,"file":"timeline.es.js","sources":["../../../../src/domains/memory/lib/timeline.ts"],"sourcesContent":["export interface TDomain {\n tMin: number;\n tMax: number;\n}\n\nexport function parseUTC(ts: string): number {\n if (/[Zz+-]\\d{0,4}$/.test(ts.trim())) return new Date(ts).getTime();\n return new Date(ts.trim().replace(' ', 'T') + 'Z').getTime();\n}\n\nexport function timestampsToTDomain(timestamps: string[]): TDomain {\n if (timestamps.length === 0) return { tMin: 0, tMax: 1 };\n\n let min = Infinity;\n let max = -Infinity;\n\n for (const ts of timestamps) {\n const t = parseUTC(ts);\n if (t < min) min = t;\n if (t > max) max = t;\n }\n\n if (min === max) return { tMin: min, tMax: min + 1 };\n\n return { tMin: min, tMax: max };\n}\n\nexport function toT(isoString: string, domain: TDomain): number {\n const t = parseUTC(isoString);\n return (t - domain.tMin) / (domain.tMax - domain.tMin);\n}\n\nexport function tToTimestamp(t: number, domain: TDomain): Date {\n return new Date(domain.tMin + t * (domain.tMax - domain.tMin));\n}\n"],"names":[],"mappings":"AAKO,SAAS,SAAS,EAAA,EAAoB;AAC3C,EAAA,IAAI,gBAAA,CAAiB,IAAA,CAAK,EAAA,CAAG,IAAA,EAAM,CAAA,EAAG,OAAO,IAAI,IAAA,CAAK,EAAE,CAAA,CAAE,OAAA,EAAQ;AAClE,EAAA,OAAA,iBAAO,IAAI,IAAA,CAAK,EAAA,CAAG,IAAA,EAAK,CAAE,OAAA,CAAQ,GAAA,EAAK,GAAG,CAAA,GAAI,GAAG,CAAA,EAAE,OAAA,EAAQ;AAC7D;AAEO,SAAS,oBAAoB,UAAA,EAA+B;AACjE,EAAA,IAAI,UAAA,CAAW,WAAW,CAAA,EAAG,OAAO,EAAE,IAAA,EAAM,CAAA,EAAG,MAAM,CAAA,EAAE;AAEvD,EAAA,IAAI,GAAA,GAAM,QAAA;AACV,EAAA,IAAI,GAAA,GAAM,CAAA,QAAA;AAEV,EAAA,KAAA,MAAW,MAAM,UAAA,EAAY;AAC3B,IAAA,MAAM,CAAA,GAAI,SAAS,EAAE,CAAA;AACrB,IAAA,IAAI,CAAA,GAAI,KAAK,GAAA,GAAM,CAAA;AACnB,IAAA,IAAI,CAAA,GAAI,KAAK,GAAA,GAAM,CAAA;AAAA,EACrB;AAEA,EAAA,IAAI,GAAA,KAAQ,KAAK,OAAO,EAAE,MAAM,GAAA,EAAK,IAAA,EAAM,MAAM,CAAA,EAAE;AAEnD,EAAA,OAAO,EAAE,IAAA,EAAM,GAAA,EAAK,IAAA,EAAM,GAAA,EAAI;AAChC;AAEO,SAAS,GAAA,CAAI,WAAmB,MAAA,EAAyB;AAC9D,EAAA,MAAM,CAAA,GAAI,SAAS,SAAS,CAAA;AAC5B,EAAA,OAAA,CAAQ,CAAA,GAAI,MAAA,CAAO,IAAA,KAAS,MAAA,CAAO,OAAO,MAAA,CAAO,IAAA,CAAA;AACnD;AAEO,SAAS,YAAA,CAAa,GAAW,MAAA,EAAuB;AAC7D,EAAA,OAAO,IAAI,KAAK,MAAA,CAAO,IAAA,GAAO,KAAK,MAAA,CAAO,IAAA,GAAO,OAAO,IAAA,CAAK,CAAA;AAC/D;;;;"}
|
|
@@ -36,7 +36,7 @@ function BarListContent({
|
|
|
36
36
|
),
|
|
37
37
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute inset-y-0 left-2 flex items-center text-caption whitespace-nowrap text-white", children: d.name })
|
|
38
38
|
] }),
|
|
39
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0
|
|
39
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 text-caption text-foreground tabular-nums", children: fmt(d.value) })
|
|
40
40
|
] }, d.name);
|
|
41
41
|
}) })
|
|
42
42
|
] });
|
|
@@ -76,7 +76,7 @@ function StackedRunsBars({ data }) {
|
|
|
76
76
|
style: { width: `${completedWidth}%`, backgroundColor: domains_metrics_components_metricsUtils.CHART_COLORS.blue }
|
|
77
77
|
}
|
|
78
78
|
) }),
|
|
79
|
-
/* @__PURE__ */ jsxRuntime.jsxs(tooltip.TooltipContent, { side: "top",
|
|
79
|
+
/* @__PURE__ */ jsxRuntime.jsxs(tooltip.TooltipContent, { side: "top", children: [
|
|
80
80
|
d.completed.toLocaleString(),
|
|
81
81
|
" completed"
|
|
82
82
|
] })
|
|
@@ -96,14 +96,14 @@ function StackedRunsBars({ data }) {
|
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
98
|
) }),
|
|
99
|
-
/* @__PURE__ */ jsxRuntime.jsxs(tooltip.TooltipContent, { side: "top",
|
|
99
|
+
/* @__PURE__ */ jsxRuntime.jsxs(tooltip.TooltipContent, { side: "top", children: [
|
|
100
100
|
d.errors.toLocaleString(),
|
|
101
101
|
" errors"
|
|
102
102
|
] })
|
|
103
103
|
] }),
|
|
104
104
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "pointer-events-none absolute inset-y-0 left-2 flex items-center text-caption whitespace-nowrap text-white", children: d.name })
|
|
105
105
|
] }),
|
|
106
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "shrink-0
|
|
106
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "shrink-0 text-caption text-foreground tabular-nums", children: [
|
|
107
107
|
total.toLocaleString(),
|
|
108
108
|
" (",
|
|
109
109
|
successPct,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bar-list.cjs.js","sources":["../../../../src/domains/metrics/components/bar-list.tsx"],"sourcesContent":["import { Tooltip, TooltipContent, TooltipTrigger } from '../../../ds/components/Tooltip';\nimport { CHART_COLORS } from './metrics-utils';\n\nexport function BarListContent({\n data,\n maxVal,\n fmt,\n color,\n valueLabel,\n legend,\n}: {\n data: Array<{ name: string; value: number }>;\n maxVal: number;\n fmt: (v: number) => string;\n color: string;\n valueLabel?: string;\n legend?: Array<{ color: string; label: string }>;\n}) {\n const sorted = [...data].sort((a, b) => b.value - a.value);\n return (\n <div>\n <div className=\"mb-2 flex items-center gap-3\">\n <div className=\"flex flex-1 items-center gap-4\">\n {legend?.map(l => (\n <div key={l.label} className=\"flex items-center gap-1.5\">\n <div className=\"size-2 rounded-full\" style={{ backgroundColor: l.color }} />\n <span className=\"text-caption text-placeholder\">{l.label}</span>\n </div>\n ))}\n </div>\n {valueLabel && <span className=\"shrink-0 text-caption text-placeholder\">{valueLabel}</span>}\n </div>\n <div className=\"space-y-2.5\">\n {sorted.map(d => {\n const pct = Math.min(Math.max(maxVal > 0 ? (d.value / maxVal) * 100 : 0, 0), 100);\n return (\n <div key={d.name} className=\"group flex items-center gap-3\">\n <div className=\"relative h-7 flex-1\">\n <div\n className=\"absolute inset-y-0 left-0 rounded\"\n style={{ width: `${pct}%`, backgroundColor: color }}\n />\n <span className=\"absolute inset-y-0 left-2 flex items-center text-caption whitespace-nowrap text-white\">\n {d.name}\n </span>\n </div>\n <span className=\"shrink-0 font-mono text-caption text-foreground tabular-nums\">{fmt(d.value)}</span>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\nexport function StackedRunsBars({ data }: { data: Array<{ name: string; completed: number; errors: number }> }) {\n const sorted = [...data].sort((a, b) => b.completed + b.errors - (a.completed + a.errors));\n const maxTotal = Math.max(...sorted.map(d => d.completed + d.errors));\n return (\n <div>\n <div className=\"mb-2 flex items-center gap-3\">\n <div className=\"flex flex-1 items-center gap-4\">\n <div className=\"flex items-center gap-1.5\">\n <div className=\"size-2 rounded-full\" style={{ backgroundColor: CHART_COLORS.blue }} />\n <span className=\"text-caption text-placeholder\">Completed</span>\n </div>\n <div className=\"flex items-center gap-1.5\">\n <div className=\"size-2 rounded-full\" style={{ backgroundColor: CHART_COLORS.red }} />\n <span className=\"text-caption text-placeholder\">Errors</span>\n </div>\n </div>\n <span className=\"shrink-0 text-caption text-placeholder\">Total (Success)</span>\n </div>\n <div className=\"space-y-2.5\">\n {sorted.map(d => {\n const total = d.completed + d.errors;\n const successPct = total > 0 ? ((d.completed / total) * 100).toFixed(1) : '0.0';\n const completedWidth = Math.min(Math.max(maxTotal > 0 ? (d.completed / maxTotal) * 100 : 0, 0), 100);\n const errorsWidth = Math.min(Math.max(maxTotal > 0 ? (d.errors / maxTotal) * 100 : 0, 0), 100);\n return (\n <div key={d.name} className=\"group flex items-center gap-3\">\n <div className=\"relative h-7 flex-1\">\n <Tooltip>\n <TooltipTrigger asChild>\n <div\n role=\"img\"\n aria-label={`${d.completed.toLocaleString()} completed`}\n tabIndex={0}\n className=\"absolute inset-y-0 left-0 cursor-default rounded-l\"\n style={{ width: `${completedWidth}%`, backgroundColor: CHART_COLORS.blue }}\n />\n </TooltipTrigger>\n <TooltipContent side=\"top\" className=\"font-mono\">\n {d.completed.toLocaleString()} completed\n </TooltipContent>\n </Tooltip>\n <Tooltip>\n <TooltipTrigger asChild>\n <div\n role=\"img\"\n aria-label={`${d.errors.toLocaleString()} errors`}\n tabIndex={0}\n className=\"absolute inset-y-0 cursor-default rounded-r\"\n style={{\n left: `${completedWidth}%`,\n width: `${errorsWidth}%`,\n backgroundColor: CHART_COLORS.red,\n }}\n />\n </TooltipTrigger>\n <TooltipContent side=\"top\" className=\"font-mono\">\n {d.errors.toLocaleString()} errors\n </TooltipContent>\n </Tooltip>\n <span className=\"pointer-events-none absolute inset-y-0 left-2 flex items-center text-caption whitespace-nowrap text-white\">\n {d.name}\n </span>\n </div>\n <span className=\"shrink-0 font-mono text-caption text-foreground tabular-nums\">\n {total.toLocaleString()} ({successPct}%)\n </span>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n"],"names":["jsxs","jsx","CHART_COLORS","Tooltip","TooltipTrigger","TooltipContent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bar-list.cjs.js","sources":["../../../../src/domains/metrics/components/bar-list.tsx"],"sourcesContent":["import { Tooltip, TooltipContent, TooltipTrigger } from '../../../ds/components/Tooltip';\nimport { CHART_COLORS } from './metrics-utils';\n\nexport function BarListContent({\n data,\n maxVal,\n fmt,\n color,\n valueLabel,\n legend,\n}: {\n data: Array<{ name: string; value: number }>;\n maxVal: number;\n fmt: (v: number) => string;\n color: string;\n valueLabel?: string;\n legend?: Array<{ color: string; label: string }>;\n}) {\n const sorted = [...data].sort((a, b) => b.value - a.value);\n return (\n <div>\n <div className=\"mb-2 flex items-center gap-3\">\n <div className=\"flex flex-1 items-center gap-4\">\n {legend?.map(l => (\n <div key={l.label} className=\"flex items-center gap-1.5\">\n <div className=\"size-2 rounded-full\" style={{ backgroundColor: l.color }} />\n <span className=\"text-caption text-placeholder\">{l.label}</span>\n </div>\n ))}\n </div>\n {valueLabel && <span className=\"shrink-0 text-caption text-placeholder\">{valueLabel}</span>}\n </div>\n <div className=\"space-y-2.5\">\n {sorted.map(d => {\n const pct = Math.min(Math.max(maxVal > 0 ? (d.value / maxVal) * 100 : 0, 0), 100);\n return (\n <div key={d.name} className=\"group flex items-center gap-3\">\n <div className=\"relative h-7 flex-1\">\n <div\n className=\"absolute inset-y-0 left-0 rounded\"\n style={{ width: `${pct}%`, backgroundColor: color }}\n />\n <span className=\"absolute inset-y-0 left-2 flex items-center text-caption whitespace-nowrap text-white\">\n {d.name}\n </span>\n </div>\n <span className=\"shrink-0 text-caption text-foreground tabular-nums\">{fmt(d.value)}</span>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\nexport function StackedRunsBars({ data }: { data: Array<{ name: string; completed: number; errors: number }> }) {\n const sorted = [...data].sort((a, b) => b.completed + b.errors - (a.completed + a.errors));\n const maxTotal = Math.max(...sorted.map(d => d.completed + d.errors));\n return (\n <div>\n <div className=\"mb-2 flex items-center gap-3\">\n <div className=\"flex flex-1 items-center gap-4\">\n <div className=\"flex items-center gap-1.5\">\n <div className=\"size-2 rounded-full\" style={{ backgroundColor: CHART_COLORS.blue }} />\n <span className=\"text-caption text-placeholder\">Completed</span>\n </div>\n <div className=\"flex items-center gap-1.5\">\n <div className=\"size-2 rounded-full\" style={{ backgroundColor: CHART_COLORS.red }} />\n <span className=\"text-caption text-placeholder\">Errors</span>\n </div>\n </div>\n <span className=\"shrink-0 text-caption text-placeholder\">Total (Success)</span>\n </div>\n <div className=\"space-y-2.5\">\n {sorted.map(d => {\n const total = d.completed + d.errors;\n const successPct = total > 0 ? ((d.completed / total) * 100).toFixed(1) : '0.0';\n const completedWidth = Math.min(Math.max(maxTotal > 0 ? (d.completed / maxTotal) * 100 : 0, 0), 100);\n const errorsWidth = Math.min(Math.max(maxTotal > 0 ? (d.errors / maxTotal) * 100 : 0, 0), 100);\n return (\n <div key={d.name} className=\"group flex items-center gap-3\">\n <div className=\"relative h-7 flex-1\">\n <Tooltip>\n <TooltipTrigger asChild>\n <div\n role=\"img\"\n aria-label={`${d.completed.toLocaleString()} completed`}\n tabIndex={0}\n className=\"absolute inset-y-0 left-0 cursor-default rounded-l\"\n style={{ width: `${completedWidth}%`, backgroundColor: CHART_COLORS.blue }}\n />\n </TooltipTrigger>\n <TooltipContent side=\"top\">{d.completed.toLocaleString()} completed</TooltipContent>\n </Tooltip>\n <Tooltip>\n <TooltipTrigger asChild>\n <div\n role=\"img\"\n aria-label={`${d.errors.toLocaleString()} errors`}\n tabIndex={0}\n className=\"absolute inset-y-0 cursor-default rounded-r\"\n style={{\n left: `${completedWidth}%`,\n width: `${errorsWidth}%`,\n backgroundColor: CHART_COLORS.red,\n }}\n />\n </TooltipTrigger>\n <TooltipContent side=\"top\">{d.errors.toLocaleString()} errors</TooltipContent>\n </Tooltip>\n <span className=\"pointer-events-none absolute inset-y-0 left-2 flex items-center text-caption whitespace-nowrap text-white\">\n {d.name}\n </span>\n </div>\n <span className=\"shrink-0 text-caption text-foreground tabular-nums\">\n {total.toLocaleString()} ({successPct}%)\n </span>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n"],"names":["jsxs","jsx","CHART_COLORS","Tooltip","TooltipTrigger","TooltipContent"],"mappings":"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"}
|
|
@@ -32,7 +32,7 @@ function BarListContent({
|
|
|
32
32
|
),
|
|
33
33
|
/* @__PURE__ */ jsx("span", { className: "absolute inset-y-0 left-2 flex items-center text-caption whitespace-nowrap text-white", children: d.name })
|
|
34
34
|
] }),
|
|
35
|
-
/* @__PURE__ */ jsx("span", { className: "shrink-0
|
|
35
|
+
/* @__PURE__ */ jsx("span", { className: "shrink-0 text-caption text-foreground tabular-nums", children: fmt(d.value) })
|
|
36
36
|
] }, d.name);
|
|
37
37
|
}) })
|
|
38
38
|
] });
|
|
@@ -72,7 +72,7 @@ function StackedRunsBars({ data }) {
|
|
|
72
72
|
style: { width: `${completedWidth}%`, backgroundColor: CHART_COLORS.blue }
|
|
73
73
|
}
|
|
74
74
|
) }),
|
|
75
|
-
/* @__PURE__ */ jsxs(TooltipContent, { side: "top",
|
|
75
|
+
/* @__PURE__ */ jsxs(TooltipContent, { side: "top", children: [
|
|
76
76
|
d.completed.toLocaleString(),
|
|
77
77
|
" completed"
|
|
78
78
|
] })
|
|
@@ -92,14 +92,14 @@ function StackedRunsBars({ data }) {
|
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
) }),
|
|
95
|
-
/* @__PURE__ */ jsxs(TooltipContent, { side: "top",
|
|
95
|
+
/* @__PURE__ */ jsxs(TooltipContent, { side: "top", children: [
|
|
96
96
|
d.errors.toLocaleString(),
|
|
97
97
|
" errors"
|
|
98
98
|
] })
|
|
99
99
|
] }),
|
|
100
100
|
/* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute inset-y-0 left-2 flex items-center text-caption whitespace-nowrap text-white", children: d.name })
|
|
101
101
|
] }),
|
|
102
|
-
/* @__PURE__ */ jsxs("span", { className: "shrink-0
|
|
102
|
+
/* @__PURE__ */ jsxs("span", { className: "shrink-0 text-caption text-foreground tabular-nums", children: [
|
|
103
103
|
total.toLocaleString(),
|
|
104
104
|
" (",
|
|
105
105
|
successPct,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bar-list.es.js","sources":["../../../../src/domains/metrics/components/bar-list.tsx"],"sourcesContent":["import { Tooltip, TooltipContent, TooltipTrigger } from '../../../ds/components/Tooltip';\nimport { CHART_COLORS } from './metrics-utils';\n\nexport function BarListContent({\n data,\n maxVal,\n fmt,\n color,\n valueLabel,\n legend,\n}: {\n data: Array<{ name: string; value: number }>;\n maxVal: number;\n fmt: (v: number) => string;\n color: string;\n valueLabel?: string;\n legend?: Array<{ color: string; label: string }>;\n}) {\n const sorted = [...data].sort((a, b) => b.value - a.value);\n return (\n <div>\n <div className=\"mb-2 flex items-center gap-3\">\n <div className=\"flex flex-1 items-center gap-4\">\n {legend?.map(l => (\n <div key={l.label} className=\"flex items-center gap-1.5\">\n <div className=\"size-2 rounded-full\" style={{ backgroundColor: l.color }} />\n <span className=\"text-caption text-placeholder\">{l.label}</span>\n </div>\n ))}\n </div>\n {valueLabel && <span className=\"shrink-0 text-caption text-placeholder\">{valueLabel}</span>}\n </div>\n <div className=\"space-y-2.5\">\n {sorted.map(d => {\n const pct = Math.min(Math.max(maxVal > 0 ? (d.value / maxVal) * 100 : 0, 0), 100);\n return (\n <div key={d.name} className=\"group flex items-center gap-3\">\n <div className=\"relative h-7 flex-1\">\n <div\n className=\"absolute inset-y-0 left-0 rounded\"\n style={{ width: `${pct}%`, backgroundColor: color }}\n />\n <span className=\"absolute inset-y-0 left-2 flex items-center text-caption whitespace-nowrap text-white\">\n {d.name}\n </span>\n </div>\n <span className=\"shrink-0 font-mono text-caption text-foreground tabular-nums\">{fmt(d.value)}</span>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\nexport function StackedRunsBars({ data }: { data: Array<{ name: string; completed: number; errors: number }> }) {\n const sorted = [...data].sort((a, b) => b.completed + b.errors - (a.completed + a.errors));\n const maxTotal = Math.max(...sorted.map(d => d.completed + d.errors));\n return (\n <div>\n <div className=\"mb-2 flex items-center gap-3\">\n <div className=\"flex flex-1 items-center gap-4\">\n <div className=\"flex items-center gap-1.5\">\n <div className=\"size-2 rounded-full\" style={{ backgroundColor: CHART_COLORS.blue }} />\n <span className=\"text-caption text-placeholder\">Completed</span>\n </div>\n <div className=\"flex items-center gap-1.5\">\n <div className=\"size-2 rounded-full\" style={{ backgroundColor: CHART_COLORS.red }} />\n <span className=\"text-caption text-placeholder\">Errors</span>\n </div>\n </div>\n <span className=\"shrink-0 text-caption text-placeholder\">Total (Success)</span>\n </div>\n <div className=\"space-y-2.5\">\n {sorted.map(d => {\n const total = d.completed + d.errors;\n const successPct = total > 0 ? ((d.completed / total) * 100).toFixed(1) : '0.0';\n const completedWidth = Math.min(Math.max(maxTotal > 0 ? (d.completed / maxTotal) * 100 : 0, 0), 100);\n const errorsWidth = Math.min(Math.max(maxTotal > 0 ? (d.errors / maxTotal) * 100 : 0, 0), 100);\n return (\n <div key={d.name} className=\"group flex items-center gap-3\">\n <div className=\"relative h-7 flex-1\">\n <Tooltip>\n <TooltipTrigger asChild>\n <div\n role=\"img\"\n aria-label={`${d.completed.toLocaleString()} completed`}\n tabIndex={0}\n className=\"absolute inset-y-0 left-0 cursor-default rounded-l\"\n style={{ width: `${completedWidth}%`, backgroundColor: CHART_COLORS.blue }}\n />\n </TooltipTrigger>\n <TooltipContent side=\"top\" className=\"font-mono\">\n {d.completed.toLocaleString()} completed\n </TooltipContent>\n </Tooltip>\n <Tooltip>\n <TooltipTrigger asChild>\n <div\n role=\"img\"\n aria-label={`${d.errors.toLocaleString()} errors`}\n tabIndex={0}\n className=\"absolute inset-y-0 cursor-default rounded-r\"\n style={{\n left: `${completedWidth}%`,\n width: `${errorsWidth}%`,\n backgroundColor: CHART_COLORS.red,\n }}\n />\n </TooltipTrigger>\n <TooltipContent side=\"top\" className=\"font-mono\">\n {d.errors.toLocaleString()} errors\n </TooltipContent>\n </Tooltip>\n <span className=\"pointer-events-none absolute inset-y-0 left-2 flex items-center text-caption whitespace-nowrap text-white\">\n {d.name}\n </span>\n </div>\n <span className=\"shrink-0 font-mono text-caption text-foreground tabular-nums\">\n {total.toLocaleString()} ({successPct}%)\n </span>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bar-list.es.js","sources":["../../../../src/domains/metrics/components/bar-list.tsx"],"sourcesContent":["import { Tooltip, TooltipContent, TooltipTrigger } from '../../../ds/components/Tooltip';\nimport { CHART_COLORS } from './metrics-utils';\n\nexport function BarListContent({\n data,\n maxVal,\n fmt,\n color,\n valueLabel,\n legend,\n}: {\n data: Array<{ name: string; value: number }>;\n maxVal: number;\n fmt: (v: number) => string;\n color: string;\n valueLabel?: string;\n legend?: Array<{ color: string; label: string }>;\n}) {\n const sorted = [...data].sort((a, b) => b.value - a.value);\n return (\n <div>\n <div className=\"mb-2 flex items-center gap-3\">\n <div className=\"flex flex-1 items-center gap-4\">\n {legend?.map(l => (\n <div key={l.label} className=\"flex items-center gap-1.5\">\n <div className=\"size-2 rounded-full\" style={{ backgroundColor: l.color }} />\n <span className=\"text-caption text-placeholder\">{l.label}</span>\n </div>\n ))}\n </div>\n {valueLabel && <span className=\"shrink-0 text-caption text-placeholder\">{valueLabel}</span>}\n </div>\n <div className=\"space-y-2.5\">\n {sorted.map(d => {\n const pct = Math.min(Math.max(maxVal > 0 ? (d.value / maxVal) * 100 : 0, 0), 100);\n return (\n <div key={d.name} className=\"group flex items-center gap-3\">\n <div className=\"relative h-7 flex-1\">\n <div\n className=\"absolute inset-y-0 left-0 rounded\"\n style={{ width: `${pct}%`, backgroundColor: color }}\n />\n <span className=\"absolute inset-y-0 left-2 flex items-center text-caption whitespace-nowrap text-white\">\n {d.name}\n </span>\n </div>\n <span className=\"shrink-0 text-caption text-foreground tabular-nums\">{fmt(d.value)}</span>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\nexport function StackedRunsBars({ data }: { data: Array<{ name: string; completed: number; errors: number }> }) {\n const sorted = [...data].sort((a, b) => b.completed + b.errors - (a.completed + a.errors));\n const maxTotal = Math.max(...sorted.map(d => d.completed + d.errors));\n return (\n <div>\n <div className=\"mb-2 flex items-center gap-3\">\n <div className=\"flex flex-1 items-center gap-4\">\n <div className=\"flex items-center gap-1.5\">\n <div className=\"size-2 rounded-full\" style={{ backgroundColor: CHART_COLORS.blue }} />\n <span className=\"text-caption text-placeholder\">Completed</span>\n </div>\n <div className=\"flex items-center gap-1.5\">\n <div className=\"size-2 rounded-full\" style={{ backgroundColor: CHART_COLORS.red }} />\n <span className=\"text-caption text-placeholder\">Errors</span>\n </div>\n </div>\n <span className=\"shrink-0 text-caption text-placeholder\">Total (Success)</span>\n </div>\n <div className=\"space-y-2.5\">\n {sorted.map(d => {\n const total = d.completed + d.errors;\n const successPct = total > 0 ? ((d.completed / total) * 100).toFixed(1) : '0.0';\n const completedWidth = Math.min(Math.max(maxTotal > 0 ? (d.completed / maxTotal) * 100 : 0, 0), 100);\n const errorsWidth = Math.min(Math.max(maxTotal > 0 ? (d.errors / maxTotal) * 100 : 0, 0), 100);\n return (\n <div key={d.name} className=\"group flex items-center gap-3\">\n <div className=\"relative h-7 flex-1\">\n <Tooltip>\n <TooltipTrigger asChild>\n <div\n role=\"img\"\n aria-label={`${d.completed.toLocaleString()} completed`}\n tabIndex={0}\n className=\"absolute inset-y-0 left-0 cursor-default rounded-l\"\n style={{ width: `${completedWidth}%`, backgroundColor: CHART_COLORS.blue }}\n />\n </TooltipTrigger>\n <TooltipContent side=\"top\">{d.completed.toLocaleString()} completed</TooltipContent>\n </Tooltip>\n <Tooltip>\n <TooltipTrigger asChild>\n <div\n role=\"img\"\n aria-label={`${d.errors.toLocaleString()} errors`}\n tabIndex={0}\n className=\"absolute inset-y-0 cursor-default rounded-r\"\n style={{\n left: `${completedWidth}%`,\n width: `${errorsWidth}%`,\n backgroundColor: CHART_COLORS.red,\n }}\n />\n </TooltipTrigger>\n <TooltipContent side=\"top\">{d.errors.toLocaleString()} errors</TooltipContent>\n </Tooltip>\n <span className=\"pointer-events-none absolute inset-y-0 left-2 flex items-center text-caption whitespace-nowrap text-white\">\n {d.name}\n </span>\n </div>\n <span className=\"shrink-0 text-caption text-foreground tabular-nums\">\n {total.toLocaleString()} ({successPct}%)\n </span>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
4
4
|
|
|
5
5
|
const jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
const React = require('react');
|
|
7
|
-
const dateTimeRangePicker = require('../../../date-time-range-picker-
|
|
7
|
+
const dateTimeRangePicker = require('../../../date-time-range-picker-sT5qAW-_.cjs');
|
|
8
8
|
const domains_metrics_hooks_useMetrics = require('../hooks/use-metrics.cjs.js');
|
|
9
9
|
|
|
10
10
|
const METRICS_PRESETS = [
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { useRef } from 'react';
|
|
3
|
-
import { D as DateTimeRangePicker } from '../../../date-time-range-picker-
|
|
3
|
+
import { D as DateTimeRangePicker } from '../../../date-time-range-picker-Bnviv7s-.js';
|
|
4
4
|
import { useMetrics } from '../hooks/use-metrics.es.js';
|
|
5
5
|
|
|
6
6
|
const METRICS_PRESETS = [
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
4
|
|
|
5
5
|
const jsxRuntime = require('react/jsx-runtime');
|
|
6
|
-
const metricsKpiCard = require('../../../metrics-kpi-card-
|
|
6
|
+
const metricsKpiCard = require('../../../metrics-kpi-card-DoIeHfv6.cjs');
|
|
7
7
|
|
|
8
8
|
function KpiCardView({
|
|
9
9
|
label,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kpi-card-view.cjs.js","sources":["../../../../src/domains/metrics/components/kpi-card-view.tsx"],"sourcesContent":["import { MetricsKpiCard } from '../../../ds/components/MetricsKpiCard';\n\nexport interface KpiCardViewProps {\n label: string;\n value:
|
|
1
|
+
{"version":3,"file":"kpi-card-view.cjs.js","sources":["../../../../src/domains/metrics/components/kpi-card-view.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { MetricsKpiCard } from '../../../ds/components/MetricsKpiCard';\n\nexport interface KpiCardViewProps {\n label: string;\n value: ReactNode;\n prevValue?: string;\n changePct?: number | null;\n isLoading: boolean;\n isError: boolean;\n /** Treat a decrease as a good change (e.g. cost, latency). */\n lowerIsBetter?: boolean;\n}\n\nexport function KpiCardView({\n label,\n value,\n prevValue,\n changePct,\n isLoading,\n isError,\n lowerIsBetter,\n}: KpiCardViewProps) {\n const hasData = value != null;\n return (\n <MetricsKpiCard>\n <MetricsKpiCard.Label>{label}</MetricsKpiCard.Label>\n <MetricsKpiCard.ValueRow>\n {hasData ? <MetricsKpiCard.Value>{value}</MetricsKpiCard.Value> : null}\n {isError ? (\n <MetricsKpiCard.Error />\n ) : isLoading ? (\n <MetricsKpiCard.Loading />\n ) : hasData ? (\n changePct != null && changePct !== 0 ? (\n <MetricsKpiCard.Change changePct={changePct} prevValue={prevValue} lowerIsBetter={lowerIsBetter} />\n ) : (\n <MetricsKpiCard.NoChange />\n )\n ) : (\n <MetricsKpiCard.NoData />\n )}\n </MetricsKpiCard.ValueRow>\n </MetricsKpiCard>\n );\n}\n"],"names":["MetricsKpiCard","jsx","jsxs"],"mappings":";;;;;;;AAcO,SAAS,WAAA,CAAY;AAAA,EAC1B,KAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAAqB;AACnB,EAAA,MAAM,UAAU,KAAA,IAAS,IAAA;AACzB,EAAA,uCACGA,6BAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAC,cAAA,CAACD,6BAAA,CAAe,KAAA,EAAf,EAAsB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,oBAC7BE,eAAA,CAACF,6BAAA,CAAe,QAAA,EAAf,EACE,QAAA,EAAA;AAAA,MAAA,OAAA,mBAAUC,cAAA,CAACD,6BAAA,CAAe,KAAA,EAAf,EAAsB,iBAAM,CAAA,GAA0B,IAAA;AAAA,MACjE,OAAA,mBACCC,cAAA,CAACD,6BAAA,CAAe,KAAA,EAAf,EAAqB,CAAA,GACpB,SAAA,mBACFC,cAAA,CAACD,6BAAA,CAAe,OAAA,EAAf,EAAuB,CAAA,GACtB,OAAA,GACF,aAAa,IAAA,IAAQ,SAAA,KAAc,CAAA,mBACjCC,cAAA,CAACD,6BAAA,CAAe,MAAA,EAAf,EAAsB,SAAA,EAAsB,WAAsB,aAAA,EAA8B,CAAA,mBAEjGC,cAAA,CAACD,6BAAA,CAAe,UAAf,EAAwB,CAAA,mBAG3BC,cAAA,CAACD,6BAAA,CAAe,QAAf,EAAsB;AAAA,KAAA,EAE3B;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kpi-card-view.es.js","sources":["../../../../src/domains/metrics/components/kpi-card-view.tsx"],"sourcesContent":["import { MetricsKpiCard } from '../../../ds/components/MetricsKpiCard';\n\nexport interface KpiCardViewProps {\n label: string;\n value:
|
|
1
|
+
{"version":3,"file":"kpi-card-view.es.js","sources":["../../../../src/domains/metrics/components/kpi-card-view.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { MetricsKpiCard } from '../../../ds/components/MetricsKpiCard';\n\nexport interface KpiCardViewProps {\n label: string;\n value: ReactNode;\n prevValue?: string;\n changePct?: number | null;\n isLoading: boolean;\n isError: boolean;\n /** Treat a decrease as a good change (e.g. cost, latency). */\n lowerIsBetter?: boolean;\n}\n\nexport function KpiCardView({\n label,\n value,\n prevValue,\n changePct,\n isLoading,\n isError,\n lowerIsBetter,\n}: KpiCardViewProps) {\n const hasData = value != null;\n return (\n <MetricsKpiCard>\n <MetricsKpiCard.Label>{label}</MetricsKpiCard.Label>\n <MetricsKpiCard.ValueRow>\n {hasData ? <MetricsKpiCard.Value>{value}</MetricsKpiCard.Value> : null}\n {isError ? (\n <MetricsKpiCard.Error />\n ) : isLoading ? (\n <MetricsKpiCard.Loading />\n ) : hasData ? (\n changePct != null && changePct !== 0 ? (\n <MetricsKpiCard.Change changePct={changePct} prevValue={prevValue} lowerIsBetter={lowerIsBetter} />\n ) : (\n <MetricsKpiCard.NoChange />\n )\n ) : (\n <MetricsKpiCard.NoData />\n )}\n </MetricsKpiCard.ValueRow>\n </MetricsKpiCard>\n );\n}\n"],"names":[],"mappings":";;;AAcO,SAAS,WAAA,CAAY;AAAA,EAC1B,KAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAAqB;AACnB,EAAA,MAAM,UAAU,KAAA,IAAS,IAAA;AACzB,EAAA,4BACG,cAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,cAAA,CAAe,KAAA,EAAf,EAAsB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,oBAC7B,IAAA,CAAC,cAAA,CAAe,QAAA,EAAf,EACE,QAAA,EAAA;AAAA,MAAA,OAAA,mBAAU,GAAA,CAAC,cAAA,CAAe,KAAA,EAAf,EAAsB,iBAAM,CAAA,GAA0B,IAAA;AAAA,MACjE,OAAA,mBACC,GAAA,CAAC,cAAA,CAAe,KAAA,EAAf,EAAqB,CAAA,GACpB,SAAA,mBACF,GAAA,CAAC,cAAA,CAAe,OAAA,EAAf,EAAuB,CAAA,GACtB,OAAA,GACF,aAAa,IAAA,IAAQ,SAAA,KAAc,CAAA,mBACjC,GAAA,CAAC,cAAA,CAAe,MAAA,EAAf,EAAsB,SAAA,EAAsB,WAAsB,aAAA,EAA8B,CAAA,mBAEjG,GAAA,CAAC,cAAA,CAAe,UAAf,EAAwB,CAAA,mBAG3B,GAAA,CAAC,cAAA,CAAe,QAAf,EAAsB;AAAA,KAAA,EAE3B;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -4,8 +4,8 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
4
4
|
|
|
5
5
|
const jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
const React = require('react');
|
|
7
|
-
const metricsCard = require('../../../metrics-card-
|
|
8
|
-
const metricsLineChart = require('../../../metrics-line-chart-
|
|
7
|
+
const metricsCard = require('../../../metrics-card-DzcVJTAN.cjs');
|
|
8
|
+
const metricsLineChart = require('../../../metrics-line-chart-BNNRRxM8.cjs');
|
|
9
9
|
const tabsContent = require('../../../tabs-content-DlCJoQUW.cjs');
|
|
10
10
|
const tabsRoot = require('../../../tabs-root-COCL6jcx.cjs');
|
|
11
11
|
const tabsTab = require('../../../tabs-tab-DFmRMdi3.cjs');
|
|
@@ -41,6 +41,7 @@ function LatencyChart({ data, onPointClick }) {
|
|
|
41
41
|
{
|
|
42
42
|
data,
|
|
43
43
|
series: latencySeries,
|
|
44
|
+
showLegend: false,
|
|
44
45
|
onPointClick: onPointClick ? (point) => domains_metrics_components_latencyCardView_utils.isDrillablePoint(point) ? onPointClick(point) : void 0 : void 0
|
|
45
46
|
}
|
|
46
47
|
);
|
|
@@ -58,13 +59,18 @@ function LatencyCardView({ data, isLoading, isError, onPointClick, actions }) {
|
|
|
58
59
|
const [selectedTab, setSelectedTab] = React.useState("agents");
|
|
59
60
|
const activeTab = tabHasData[selectedTab] ? selectedTab : initialTab;
|
|
60
61
|
const renderedActions = typeof actions === "function" ? actions(activeTab) : actions;
|
|
62
|
+
const interval = data?.interval ?? "1h";
|
|
61
63
|
const hasData = !!data && (data.agentData.length > 0 || data.workflowData.length > 0 || data.toolData.length > 0);
|
|
62
|
-
const
|
|
63
|
-
const avgP50 = p50Values.length > 0 ? `${Math.round(p50Values.reduce((s, v) => s + v, 0) / p50Values.length)}ms` : "—";
|
|
64
|
+
const activeData = data ? { agents: data.agentData, workflows: data.workflowData, tools: data.toolData }[activeTab] : [];
|
|
64
65
|
return /* @__PURE__ */ jsxRuntime.jsxs(metricsCard.MetricsCard, { children: [
|
|
65
66
|
/* @__PURE__ */ jsxRuntime.jsxs(metricsCard.MetricsCard.TopBar, { children: [
|
|
66
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
67
|
-
|
|
67
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
68
|
+
metricsCard.MetricsCard.TitleAndDescription,
|
|
69
|
+
{
|
|
70
|
+
title: "Latency",
|
|
71
|
+
description: interval === "1h" ? "Hourly p50 and p95 latency." : "Daily p50 and p95 latency."
|
|
72
|
+
}
|
|
73
|
+
),
|
|
68
74
|
renderedActions ? /* @__PURE__ */ jsxRuntime.jsx(metricsCard.MetricsCard.Actions, { children: renderedActions }) : null
|
|
69
75
|
] }),
|
|
70
76
|
isLoading ? /* @__PURE__ */ jsxRuntime.jsx(metricsCard.MetricsCard.Loading, {}) : isError ? /* @__PURE__ */ jsxRuntime.jsx(metricsCard.MetricsCard.Error, { message: "Failed to load latency data" }) : /* @__PURE__ */ jsxRuntime.jsx(metricsCard.MetricsCard.Content, { children: !hasData ? /* @__PURE__ */ jsxRuntime.jsx(metricsCard.MetricsCard.NoData, { message: "No latency data yet" }) : /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -79,38 +85,41 @@ function LatencyCardView({ data, isLoading, isError, onPointClick, actions }) {
|
|
|
79
85
|
defaultTab: initialTab,
|
|
80
86
|
className: "overflow-visible",
|
|
81
87
|
children: [
|
|
82
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
83
|
-
/* @__PURE__ */ jsxRuntime.
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
88
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center justify-between gap-2 [&>:first-child]:w-auto", children: [
|
|
89
|
+
/* @__PURE__ */ jsxRuntime.jsxs(tabsRoot.TabList, { children: [
|
|
90
|
+
/* @__PURE__ */ jsxRuntime.jsx(tabsTab.Tab, { value: "agents", disabled: !agentsHasData, disabledTooltip: "No agent latency data for this period", children: "Agents" }),
|
|
91
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
92
|
+
tabsTab.Tab,
|
|
93
|
+
{
|
|
94
|
+
value: "workflows",
|
|
95
|
+
disabled: !workflowsHasData,
|
|
96
|
+
disabledTooltip: "No workflow latency data for this period",
|
|
97
|
+
children: "Workflows"
|
|
98
|
+
}
|
|
99
|
+
),
|
|
100
|
+
/* @__PURE__ */ jsxRuntime.jsx(tabsTab.Tab, { value: "tools", disabled: !toolsHasData, disabledTooltip: "No tool latency data for this period", children: "Tools" })
|
|
101
|
+
] }),
|
|
102
|
+
activeData.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(metricsLineChart.MetricsLineChartLegend, { data: activeData, series: latencySeries })
|
|
94
103
|
] }),
|
|
95
|
-
/* @__PURE__ */ jsxRuntime.jsx(tabsContent.TabContent, { value: "agents", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
104
|
+
/* @__PURE__ */ jsxRuntime.jsx(tabsContent.TabContent, { value: "agents", className: "pt-3", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
96
105
|
LatencyChart,
|
|
97
106
|
{
|
|
98
107
|
data: data.agentData,
|
|
99
|
-
onPointClick: onPointClick ? (p) => onPointClick("agents", p) : void 0
|
|
108
|
+
onPointClick: onPointClick ? (p) => onPointClick("agents", p, interval) : void 0
|
|
100
109
|
}
|
|
101
110
|
) }),
|
|
102
|
-
/* @__PURE__ */ jsxRuntime.jsx(tabsContent.TabContent, { value: "workflows", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
111
|
+
/* @__PURE__ */ jsxRuntime.jsx(tabsContent.TabContent, { value: "workflows", className: "pt-3", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
103
112
|
LatencyChart,
|
|
104
113
|
{
|
|
105
114
|
data: data.workflowData,
|
|
106
|
-
onPointClick: onPointClick ? (p) => onPointClick("workflows", p) : void 0
|
|
115
|
+
onPointClick: onPointClick ? (p) => onPointClick("workflows", p, interval) : void 0
|
|
107
116
|
}
|
|
108
117
|
) }),
|
|
109
|
-
/* @__PURE__ */ jsxRuntime.jsx(tabsContent.TabContent, { value: "tools", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
118
|
+
/* @__PURE__ */ jsxRuntime.jsx(tabsContent.TabContent, { value: "tools", className: "pt-3", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
110
119
|
LatencyChart,
|
|
111
120
|
{
|
|
112
121
|
data: data.toolData,
|
|
113
|
-
onPointClick: onPointClick ? (p) => onPointClick("tools", p) : void 0
|
|
122
|
+
onPointClick: onPointClick ? (p) => onPointClick("tools", p, interval) : void 0
|
|
114
123
|
}
|
|
115
124
|
) })
|
|
116
125
|
]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"latency-card-view.cjs.js","sources":["../../../../src/domains/metrics/components/latency-card-view.tsx"],"sourcesContent":["import { useState } from 'react';\nimport type { ReactNode } from 'react';\nimport { MetricsCard } from '../../../ds/components/MetricsCard/metrics-card';\nimport { MetricsLineChart } from '../../../ds/components/MetricsLineChart/metrics-line-chart';\nimport { TabContent } from '../../../ds/components/Tabs/tabs-content';\nimport { TabList } from '../../../ds/components/Tabs/tabs-list';\nimport { Tabs } from '../../../ds/components/Tabs/tabs-root';\nimport { Tab } from '../../../ds/components/Tabs/tabs-tab';\nimport type { LatencyPoint } from '../hooks/use-latency-metrics';\nimport { averageLatency, isDrillablePoint, isLatencyTab } from './latency-card-view.utils';\nimport type { LatencyTab } from './latency-card-view.utils';\nimport { CHART_COLORS } from './metrics-utils';\n\nconst latencySeries = [\n {\n dataKey: 'p50',\n label: 'p50',\n color: CHART_COLORS.blue,\n aggregate: (data: Record<string, unknown>[]) => ({\n value: averageLatency(data, 'p50'),\n suffix: 'avg ms',\n }),\n },\n {\n dataKey: 'p95',\n label: 'p95',\n color: CHART_COLORS.yellow,\n aggregate: (data: Record<string, unknown>[]) => ({\n value: averageLatency(data, 'p95'),\n suffix: 'avg ms',\n }),\n },\n];\n\nexport type { LatencyTab };\n\nfunction LatencyChart({ data, onPointClick }: { data: LatencyPoint[]; onPointClick?: (point: LatencyPoint) => void }) {\n if (data.length === 0) {\n return <MetricsCard.NoData message=\"No latency data yet\" />;\n }\n return (\n <MetricsLineChart\n data={data}\n series={latencySeries}\n onPointClick={onPointClick ? point => (isDrillablePoint(point) ? onPointClick(point) : undefined) : undefined}\n />\n );\n}\n\nexport interface LatencyCardViewProps {\n data: { agentData: LatencyPoint[]; workflowData: LatencyPoint[]; toolData: LatencyPoint[] } | undefined;\n isLoading: boolean;\n isError: boolean;\n /** Optional drilldown: invoked when a chart node is clicked. Container provides the navigation. */\n onPointClick?: (tab: LatencyTab, point: LatencyPoint) => void;\n /**\n * Optional slot for top-bar action buttons (e.g. \"View in Traces\").\n * Pass a function to receive the active tab so the action can scope itself to the current entity type.\n */\n actions?: ReactNode | ((tab: LatencyTab) => ReactNode);\n}\n\nexport function LatencyCardView({ data, isLoading, isError, onPointClick, actions }: LatencyCardViewProps) {\n const agentsHasData = (data?.agentData.length ?? 0) > 0;\n const workflowsHasData = (data?.workflowData.length ?? 0) > 0;\n const toolsHasData = (data?.toolData.length ?? 0) > 0;\n const tabHasData = {\n agents: agentsHasData,\n workflows: workflowsHasData,\n tools: toolsHasData,\n } as const;\n const initialTab: LatencyTab = agentsHasData\n ? 'agents'\n : workflowsHasData\n ? 'workflows'\n : toolsHasData\n ? 'tools'\n : 'agents';\n const [selectedTab, setSelectedTab] = useState<LatencyTab>('agents');\n const activeTab = tabHasData[selectedTab] ? selectedTab : initialTab;\n const renderedActions = typeof actions === 'function' ? actions(activeTab) : actions;\n const hasData = !!data && (data.agentData.length > 0 || data.workflowData.length > 0 || data.toolData.length > 0);\n const p50Values = data\n ? Object.values(data)\n .filter(Array.isArray)\n .flat()\n .map(d => d.p50)\n .filter((v): v is number => typeof v === 'number')\n : [];\n const avgP50 =\n p50Values.length > 0 ? `${Math.round(p50Values.reduce((s, v) => s + v, 0) / p50Values.length)}ms` : '—';\n\n return (\n <MetricsCard>\n <MetricsCard.TopBar>\n <MetricsCard.TitleAndDescription title=\"Latency\" description=\"Hourly p50 and p95 latency.\" />\n {hasData && <MetricsCard.Summary value={avgP50} label=\"Avg p50\" />}\n {renderedActions ? <MetricsCard.Actions>{renderedActions}</MetricsCard.Actions> : null}\n </MetricsCard.TopBar>\n {isLoading ? (\n <MetricsCard.Loading />\n ) : isError ? (\n <MetricsCard.Error message=\"Failed to load latency data\" />\n ) : (\n <MetricsCard.Content>\n {!hasData ? (\n <MetricsCard.NoData message=\"No latency data yet\" />\n ) : (\n <Tabs\n value={activeTab}\n onValueChange={value => {\n if (isLatencyTab(value) && tabHasData[value]) {\n setSelectedTab(value);\n }\n }}\n defaultTab={initialTab}\n className=\"overflow-visible\"\n >\n <TabList>\n <Tab value=\"agents\" disabled={!agentsHasData} disabledTooltip=\"No agent latency data for this period\">\n Agents\n </Tab>\n <Tab\n value=\"workflows\"\n disabled={!workflowsHasData}\n disabledTooltip=\"No workflow latency data for this period\"\n >\n Workflows\n </Tab>\n <Tab value=\"tools\" disabled={!toolsHasData} disabledTooltip=\"No tool latency data for this period\">\n Tools\n </Tab>\n </TabList>\n <TabContent value=\"agents\">\n <LatencyChart\n data={data.agentData}\n onPointClick={onPointClick ? p => onPointClick('agents', p) : undefined}\n />\n </TabContent>\n <TabContent value=\"workflows\">\n <LatencyChart\n data={data.workflowData}\n onPointClick={onPointClick ? p => onPointClick('workflows', p) : undefined}\n />\n </TabContent>\n <TabContent value=\"tools\">\n <LatencyChart\n data={data.toolData}\n onPointClick={onPointClick ? p => onPointClick('tools', p) : undefined}\n />\n </TabContent>\n </Tabs>\n )}\n </MetricsCard.Content>\n )}\n </MetricsCard>\n );\n}\n"],"names":["CHART_COLORS","averageLatency","jsx","MetricsCard","MetricsLineChart","isDrillablePoint","useState","jsxs","Tabs","isLatencyTab","TabList","Tab","TabContent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"latency-card-view.cjs.js","sources":["../../../../src/domains/metrics/components/latency-card-view.tsx"],"sourcesContent":["import { useState } from 'react';\nimport type { ReactNode } from 'react';\nimport { MetricsCard } from '../../../ds/components/MetricsCard/metrics-card';\nimport { MetricsLineChart } from '../../../ds/components/MetricsLineChart/metrics-line-chart';\nimport { MetricsLineChartLegend } from '../../../ds/components/MetricsLineChart/metrics-line-chart-legend';\nimport { TabContent } from '../../../ds/components/Tabs/tabs-content';\nimport { TabList } from '../../../ds/components/Tabs/tabs-list';\nimport { Tabs } from '../../../ds/components/Tabs/tabs-root';\nimport { Tab } from '../../../ds/components/Tabs/tabs-tab';\nimport type { LatencyPoint } from '../hooks/use-latency-metrics';\nimport type { MetricsInterval } from '../metrics-interval';\nimport { averageLatency, isDrillablePoint, isLatencyTab } from './latency-card-view.utils';\nimport type { LatencyTab } from './latency-card-view.utils';\nimport { CHART_COLORS } from './metrics-utils';\n\nconst latencySeries = [\n {\n dataKey: 'p50',\n label: 'p50',\n color: CHART_COLORS.blue,\n aggregate: (data: Record<string, unknown>[]) => ({\n value: averageLatency(data, 'p50'),\n suffix: 'avg ms',\n }),\n },\n {\n dataKey: 'p95',\n label: 'p95',\n color: CHART_COLORS.yellow,\n aggregate: (data: Record<string, unknown>[]) => ({\n value: averageLatency(data, 'p95'),\n suffix: 'avg ms',\n }),\n },\n];\n\nexport type { LatencyTab };\n\nfunction LatencyChart({ data, onPointClick }: { data: LatencyPoint[]; onPointClick?: (point: LatencyPoint) => void }) {\n if (data.length === 0) {\n return <MetricsCard.NoData message=\"No latency data yet\" />;\n }\n return (\n <MetricsLineChart\n data={data}\n series={latencySeries}\n showLegend={false}\n onPointClick={onPointClick ? point => (isDrillablePoint(point) ? onPointClick(point) : undefined) : undefined}\n />\n );\n}\n\nexport interface LatencyCardViewProps {\n data:\n | {\n agentData: LatencyPoint[];\n workflowData: LatencyPoint[];\n toolData: LatencyPoint[];\n /** Bucket size of the points. Defaults to `'1h'`. */\n interval?: MetricsInterval;\n }\n | undefined;\n isLoading: boolean;\n isError: boolean;\n /** Optional drilldown: invoked when a chart node is clicked. Container provides the navigation. */\n onPointClick?: (tab: LatencyTab, point: LatencyPoint, interval: MetricsInterval) => void;\n /**\n * Optional slot for top-bar action buttons (e.g. \"View in Traces\").\n * Pass a function to receive the active tab so the action can scope itself to the current entity type.\n */\n actions?: ReactNode | ((tab: LatencyTab) => ReactNode);\n}\n\nexport function LatencyCardView({ data, isLoading, isError, onPointClick, actions }: LatencyCardViewProps) {\n const agentsHasData = (data?.agentData.length ?? 0) > 0;\n const workflowsHasData = (data?.workflowData.length ?? 0) > 0;\n const toolsHasData = (data?.toolData.length ?? 0) > 0;\n const tabHasData = {\n agents: agentsHasData,\n workflows: workflowsHasData,\n tools: toolsHasData,\n } as const;\n const initialTab: LatencyTab = agentsHasData\n ? 'agents'\n : workflowsHasData\n ? 'workflows'\n : toolsHasData\n ? 'tools'\n : 'agents';\n const [selectedTab, setSelectedTab] = useState<LatencyTab>('agents');\n const activeTab = tabHasData[selectedTab] ? selectedTab : initialTab;\n const renderedActions = typeof actions === 'function' ? actions(activeTab) : actions;\n const interval = data?.interval ?? '1h';\n const hasData = !!data && (data.agentData.length > 0 || data.workflowData.length > 0 || data.toolData.length > 0);\n const activeData = data\n ? { agents: data.agentData, workflows: data.workflowData, tools: data.toolData }[activeTab]\n : [];\n\n return (\n <MetricsCard>\n <MetricsCard.TopBar>\n <MetricsCard.TitleAndDescription\n title=\"Latency\"\n description={interval === '1h' ? 'Hourly p50 and p95 latency.' : 'Daily p50 and p95 latency.'}\n />\n {renderedActions ? <MetricsCard.Actions>{renderedActions}</MetricsCard.Actions> : null}\n </MetricsCard.TopBar>\n {isLoading ? (\n <MetricsCard.Loading />\n ) : isError ? (\n <MetricsCard.Error message=\"Failed to load latency data\" />\n ) : (\n <MetricsCard.Content>\n {!hasData ? (\n <MetricsCard.NoData message=\"No latency data yet\" />\n ) : (\n <Tabs\n value={activeTab}\n onValueChange={value => {\n if (isLatencyTab(value) && tabHasData[value]) {\n setSelectedTab(value);\n }\n }}\n defaultTab={initialTab}\n className=\"overflow-visible\"\n >\n <div className=\"flex flex-wrap items-center justify-between gap-2 [&>:first-child]:w-auto\">\n <TabList>\n <Tab value=\"agents\" disabled={!agentsHasData} disabledTooltip=\"No agent latency data for this period\">\n Agents\n </Tab>\n <Tab\n value=\"workflows\"\n disabled={!workflowsHasData}\n disabledTooltip=\"No workflow latency data for this period\"\n >\n Workflows\n </Tab>\n <Tab value=\"tools\" disabled={!toolsHasData} disabledTooltip=\"No tool latency data for this period\">\n Tools\n </Tab>\n </TabList>\n {activeData.length > 0 && <MetricsLineChartLegend data={activeData} series={latencySeries} />}\n </div>\n <TabContent value=\"agents\" className=\"pt-3\">\n <LatencyChart\n data={data.agentData}\n onPointClick={onPointClick ? p => onPointClick('agents', p, interval) : undefined}\n />\n </TabContent>\n <TabContent value=\"workflows\" className=\"pt-3\">\n <LatencyChart\n data={data.workflowData}\n onPointClick={onPointClick ? p => onPointClick('workflows', p, interval) : undefined}\n />\n </TabContent>\n <TabContent value=\"tools\" className=\"pt-3\">\n <LatencyChart\n data={data.toolData}\n onPointClick={onPointClick ? p => onPointClick('tools', p, interval) : undefined}\n />\n </TabContent>\n </Tabs>\n )}\n </MetricsCard.Content>\n )}\n </MetricsCard>\n );\n}\n"],"names":["CHART_COLORS","averageLatency","jsx","MetricsCard","MetricsLineChart","isDrillablePoint","useState","jsxs","Tabs","isLatencyTab","TabList","Tab","MetricsLineChartLegend","TabContent"],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { useState } from 'react';
|
|
3
|
-
import { M as MetricsCard } from '../../../metrics-card-
|
|
4
|
-
import { M as MetricsLineChart } from '../../../metrics-line-chart-
|
|
3
|
+
import { M as MetricsCard } from '../../../metrics-card-C2RTi5Ew.js';
|
|
4
|
+
import { a as MetricsLineChartLegend, M as MetricsLineChart } from '../../../metrics-line-chart-CT_pqJtC.js';
|
|
5
5
|
import { T as TabContent } from '../../../tabs-content-7ODUUdQ0.js';
|
|
6
6
|
import { a as Tabs, T as TabList } from '../../../tabs-root-UNPxoGhW.js';
|
|
7
7
|
import { T as Tab } from '../../../tabs-tab-DluwCnDF.js';
|
|
8
|
-
import { isLatencyTab,
|
|
8
|
+
import { isLatencyTab, averageLatency, isDrillablePoint } from './latency-card-view.utils.es.js';
|
|
9
9
|
import { CHART_COLORS } from './metrics-utils.es.js';
|
|
10
10
|
|
|
11
11
|
const latencySeries = [
|
|
@@ -37,6 +37,7 @@ function LatencyChart({ data, onPointClick }) {
|
|
|
37
37
|
{
|
|
38
38
|
data,
|
|
39
39
|
series: latencySeries,
|
|
40
|
+
showLegend: false,
|
|
40
41
|
onPointClick: onPointClick ? (point) => isDrillablePoint(point) ? onPointClick(point) : void 0 : void 0
|
|
41
42
|
}
|
|
42
43
|
);
|
|
@@ -54,13 +55,18 @@ function LatencyCardView({ data, isLoading, isError, onPointClick, actions }) {
|
|
|
54
55
|
const [selectedTab, setSelectedTab] = useState("agents");
|
|
55
56
|
const activeTab = tabHasData[selectedTab] ? selectedTab : initialTab;
|
|
56
57
|
const renderedActions = typeof actions === "function" ? actions(activeTab) : actions;
|
|
58
|
+
const interval = data?.interval ?? "1h";
|
|
57
59
|
const hasData = !!data && (data.agentData.length > 0 || data.workflowData.length > 0 || data.toolData.length > 0);
|
|
58
|
-
const
|
|
59
|
-
const avgP50 = p50Values.length > 0 ? `${Math.round(p50Values.reduce((s, v) => s + v, 0) / p50Values.length)}ms` : "—";
|
|
60
|
+
const activeData = data ? { agents: data.agentData, workflows: data.workflowData, tools: data.toolData }[activeTab] : [];
|
|
60
61
|
return /* @__PURE__ */ jsxs(MetricsCard, { children: [
|
|
61
62
|
/* @__PURE__ */ jsxs(MetricsCard.TopBar, { children: [
|
|
62
|
-
/* @__PURE__ */ jsx(
|
|
63
|
-
|
|
63
|
+
/* @__PURE__ */ jsx(
|
|
64
|
+
MetricsCard.TitleAndDescription,
|
|
65
|
+
{
|
|
66
|
+
title: "Latency",
|
|
67
|
+
description: interval === "1h" ? "Hourly p50 and p95 latency." : "Daily p50 and p95 latency."
|
|
68
|
+
}
|
|
69
|
+
),
|
|
64
70
|
renderedActions ? /* @__PURE__ */ jsx(MetricsCard.Actions, { children: renderedActions }) : null
|
|
65
71
|
] }),
|
|
66
72
|
isLoading ? /* @__PURE__ */ jsx(MetricsCard.Loading, {}) : isError ? /* @__PURE__ */ jsx(MetricsCard.Error, { message: "Failed to load latency data" }) : /* @__PURE__ */ jsx(MetricsCard.Content, { children: !hasData ? /* @__PURE__ */ jsx(MetricsCard.NoData, { message: "No latency data yet" }) : /* @__PURE__ */ jsxs(
|
|
@@ -75,38 +81,41 @@ function LatencyCardView({ data, isLoading, isError, onPointClick, actions }) {
|
|
|
75
81
|
defaultTab: initialTab,
|
|
76
82
|
className: "overflow-visible",
|
|
77
83
|
children: [
|
|
78
|
-
/* @__PURE__ */ jsxs(
|
|
79
|
-
/* @__PURE__ */
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
84
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-between gap-2 [&>:first-child]:w-auto", children: [
|
|
85
|
+
/* @__PURE__ */ jsxs(TabList, { children: [
|
|
86
|
+
/* @__PURE__ */ jsx(Tab, { value: "agents", disabled: !agentsHasData, disabledTooltip: "No agent latency data for this period", children: "Agents" }),
|
|
87
|
+
/* @__PURE__ */ jsx(
|
|
88
|
+
Tab,
|
|
89
|
+
{
|
|
90
|
+
value: "workflows",
|
|
91
|
+
disabled: !workflowsHasData,
|
|
92
|
+
disabledTooltip: "No workflow latency data for this period",
|
|
93
|
+
children: "Workflows"
|
|
94
|
+
}
|
|
95
|
+
),
|
|
96
|
+
/* @__PURE__ */ jsx(Tab, { value: "tools", disabled: !toolsHasData, disabledTooltip: "No tool latency data for this period", children: "Tools" })
|
|
97
|
+
] }),
|
|
98
|
+
activeData.length > 0 && /* @__PURE__ */ jsx(MetricsLineChartLegend, { data: activeData, series: latencySeries })
|
|
90
99
|
] }),
|
|
91
|
-
/* @__PURE__ */ jsx(TabContent, { value: "agents", children: /* @__PURE__ */ jsx(
|
|
100
|
+
/* @__PURE__ */ jsx(TabContent, { value: "agents", className: "pt-3", children: /* @__PURE__ */ jsx(
|
|
92
101
|
LatencyChart,
|
|
93
102
|
{
|
|
94
103
|
data: data.agentData,
|
|
95
|
-
onPointClick: onPointClick ? (p) => onPointClick("agents", p) : void 0
|
|
104
|
+
onPointClick: onPointClick ? (p) => onPointClick("agents", p, interval) : void 0
|
|
96
105
|
}
|
|
97
106
|
) }),
|
|
98
|
-
/* @__PURE__ */ jsx(TabContent, { value: "workflows", children: /* @__PURE__ */ jsx(
|
|
107
|
+
/* @__PURE__ */ jsx(TabContent, { value: "workflows", className: "pt-3", children: /* @__PURE__ */ jsx(
|
|
99
108
|
LatencyChart,
|
|
100
109
|
{
|
|
101
110
|
data: data.workflowData,
|
|
102
|
-
onPointClick: onPointClick ? (p) => onPointClick("workflows", p) : void 0
|
|
111
|
+
onPointClick: onPointClick ? (p) => onPointClick("workflows", p, interval) : void 0
|
|
103
112
|
}
|
|
104
113
|
) }),
|
|
105
|
-
/* @__PURE__ */ jsx(TabContent, { value: "tools", children: /* @__PURE__ */ jsx(
|
|
114
|
+
/* @__PURE__ */ jsx(TabContent, { value: "tools", className: "pt-3", children: /* @__PURE__ */ jsx(
|
|
106
115
|
LatencyChart,
|
|
107
116
|
{
|
|
108
117
|
data: data.toolData,
|
|
109
|
-
onPointClick: onPointClick ? (p) => onPointClick("tools", p) : void 0
|
|
118
|
+
onPointClick: onPointClick ? (p) => onPointClick("tools", p, interval) : void 0
|
|
110
119
|
}
|
|
111
120
|
) })
|
|
112
121
|
]
|