@mastra/playground-ui 58.1.0-alpha.0 → 59.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +62 -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-pPTuoPKI.cjs → ask-user-4pnmHbuC.cjs} +2 -2
- package/dist/{ask-user-pPTuoPKI.cjs.map → ask-user-4pnmHbuC.cjs.map} +1 -1
- package/dist/{ask-user-DtF4a9Vr.js → ask-user-CFcQN_7m.js} +2 -2
- package/dist/{ask-user-DtF4a9Vr.js.map → ask-user-CFcQN_7m.js.map} +1 -1
- package/dist/{chat-notification-C4P2InUX.js → chat-notification-BI_WRUvG.js} +2 -2
- package/dist/{chat-notification-C4P2InUX.js.map → chat-notification-BI_WRUvG.js.map} +1 -1
- package/dist/{chat-notification-HP18KxlS.cjs → chat-notification-Dc7jwULm.cjs} +2 -2
- package/dist/{chat-notification-HP18KxlS.cjs.map → chat-notification-Dc7jwULm.cjs.map} +1 -1
- package/dist/{chat-signal-BP9RN6Rh.cjs → chat-signal-BodewV33.cjs} +3 -3
- package/dist/{chat-signal-BP9RN6Rh.cjs.map → chat-signal-BodewV33.cjs.map} +1 -1
- package/dist/{chat-signal-CQnmFp3V.js → chat-signal-D0zw80bU.js} +3 -3
- package/dist/{chat-signal-CQnmFp3V.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/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 +4 -16
- package/dist/components/ItemList.cjs.js.map +1 -1
- package/dist/components/ItemList.es.js +4 -16
- 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/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 +8 -12
- package/dist/components/Workflow.cjs.js.map +1 -1
- package/dist/components/Workflow.es.js +8 -12
- 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 +2 -2
- package/dist/components/ai/plan.cjs.js.map +1 -1
- package/dist/components/ai/plan.es.js +2 -2
- package/dist/components/ai/plan.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/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 +1 -1
- package/dist/domains/chat/messages/tripwire-notice.cjs.js.map +1 -1
- package/dist/domains/chat/messages/tripwire-notice.es.js +1 -1
- 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 +5 -3
- 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 +5 -3
- 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.map +1 -1
- package/dist/domains/metrics/components/kpi-card-view.es.js.map +1 -1
- package/dist/domains/metrics/components/memory-card-view.cjs.js +6 -5
- package/dist/domains/metrics/components/memory-card-view.cjs.js.map +1 -1
- package/dist/domains/metrics/components/memory-card-view.es.js +5 -4
- 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 +5 -4
- 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 +3 -2
- 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 +1 -1
- package/dist/domains/metrics/components/scores-card-view.es.js +1 -1
- package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js +4 -3
- 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 +4 -3
- 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 +3 -2
- 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 +3 -2
- 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 +3 -2
- 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 +4 -3
- 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-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/metrics-interval.cjs.js +4 -2
- package/dist/domains/metrics/metrics-interval.cjs.js.map +1 -1
- package/dist/domains/metrics/metrics-interval.es.js +4 -2
- package/dist/domains/metrics/metrics-interval.es.js.map +1 -1
- package/dist/domains/metrics.cjs.js +0 -2
- package/dist/domains/metrics.cjs.js.map +1 -1
- package/dist/domains/metrics.es.js +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/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-list.cjs.js +1 -1
- package/dist/ee/signals/components/entity-index-list.es.js +1 -1
- 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/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-CgDcNIvS.js → logs-data-list-BKE5vYZR.js} +3 -3
- package/dist/{logs-data-list-CgDcNIvS.js.map → logs-data-list-BKE5vYZR.js.map} +1 -1
- package/dist/{logs-data-list-BHvJOeec.cjs → logs-data-list-lJK0yGYj.cjs} +3 -3
- package/dist/{logs-data-list-BHvJOeec.cjs.map → logs-data-list-lJK0yGYj.cjs.map} +1 -1
- package/dist/new/settings.cjs.js +2 -2
- package/dist/new/settings.es.js +2 -2
- 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/metrics-utils.d.ts +0 -2
- 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/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/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 +25 -4
- 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-D3k50j4n.cjs → traces-data-list-C5KZesk6.cjs} +4 -4
- package/dist/{traces-data-list-D3k50j4n.cjs.map → traces-data-list-C5KZesk6.cjs.map} +1 -1
- package/dist/{traces-data-list-B5MkMMBi.js → traces-data-list-CdWW9J6z.js} +4 -4
- package/dist/{traces-data-list-B5MkMMBi.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 +8 -8
- 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/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
|
@@ -3,11 +3,11 @@ import { Columns3Icon, PlusIcon, X, Columns3 } from 'lucide-react';
|
|
|
3
3
|
import { useState, useMemo } from 'react';
|
|
4
4
|
import { TRACE_USAGE_COLUMNS, TRACE_CUSTOM_COLUMN_FIELDS, TRACE_CUSTOM_COLUMN_LABELS } from '../trace-list-columns.es.js';
|
|
5
5
|
import { B as Button } from '../../../Button-B8nF87ai.js';
|
|
6
|
-
import { C as Combobox } from '../../../combobox-
|
|
6
|
+
import { C as Combobox } from '../../../combobox-D_kmwSKS.js';
|
|
7
7
|
import '@base-ui/react/combobox';
|
|
8
8
|
import { D as Dialog, a as DialogContent, b as DialogHeader, c as DialogTitle, d as DialogDescription, e as DialogBody, g as DialogFooter } from '../../../dialog-Dtfe1ylw.js';
|
|
9
9
|
import { D as DropdownMenu } from '../../../dropdown-menu-DpEn6HwK.js';
|
|
10
|
-
import { F as FieldBlock } from '../../../field-error-id-
|
|
10
|
+
import { F as FieldBlock } from '../../../field-error-id-DD7OARLU.js';
|
|
11
11
|
|
|
12
12
|
const METADATA_KEY_FIELD_NAME = "trace-metadata-key";
|
|
13
13
|
const EMPTY_KEYS = [];
|
|
@@ -27,6 +27,7 @@ function TraceColumnsMenu({
|
|
|
27
27
|
preferences,
|
|
28
28
|
availableMetadataKeys = EMPTY_KEYS,
|
|
29
29
|
usageDisabledReason,
|
|
30
|
+
withQueryTrace = true,
|
|
30
31
|
onToggleColumn,
|
|
31
32
|
onAddCustomColumn,
|
|
32
33
|
onRemoveCustomColumn,
|
|
@@ -109,27 +110,29 @@ function TraceColumnsMenu({
|
|
|
109
110
|
field
|
|
110
111
|
);
|
|
111
112
|
}),
|
|
112
|
-
/* @__PURE__ */
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
/* @__PURE__ */
|
|
126
|
-
|
|
113
|
+
(withQueryTrace || preferences.metadataKeys.length > 0) && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
114
|
+
/* @__PURE__ */ jsx(DropdownMenu.Separator, {}),
|
|
115
|
+
/* @__PURE__ */ jsx(DropdownMenu.Label, { children: "Metadata columns" }),
|
|
116
|
+
preferences.metadataKeys.map((key) => /* @__PURE__ */ jsx(
|
|
117
|
+
DropdownMenu.CheckboxItem,
|
|
118
|
+
{
|
|
119
|
+
checked: true,
|
|
120
|
+
title: key,
|
|
121
|
+
onCheckedChange: () => onRemoveMetadataColumn(key),
|
|
122
|
+
children: key
|
|
123
|
+
},
|
|
124
|
+
key
|
|
125
|
+
)),
|
|
126
|
+
withQueryTrace && /* @__PURE__ */ jsxs(DropdownMenu.Item, { onSelect: () => setIsMetadataDialogOpen(true), children: [
|
|
127
|
+
/* @__PURE__ */ jsx(PlusIcon, { "aria-hidden": true }),
|
|
128
|
+
"Add metadata column"
|
|
129
|
+
] })
|
|
127
130
|
] }),
|
|
128
131
|
/* @__PURE__ */ jsx(DropdownMenu.Separator, {}),
|
|
129
132
|
/* @__PURE__ */ jsx(DropdownMenu.Item, { onSelect: onReset, children: "Reset to defaults" })
|
|
130
133
|
] })
|
|
131
134
|
] }),
|
|
132
|
-
/* @__PURE__ */ jsx(Dialog, { open: isMetadataDialogOpen, onOpenChange: handleDialogOpenChange, children: /* @__PURE__ */ jsx(DialogContent, { children: /* @__PURE__ */ jsxs("form", { onSubmit: handleAddMetadata, children: [
|
|
135
|
+
withQueryTrace && /* @__PURE__ */ jsx(Dialog, { open: isMetadataDialogOpen, onOpenChange: handleDialogOpenChange, children: /* @__PURE__ */ jsx(DialogContent, { children: /* @__PURE__ */ jsxs("form", { onSubmit: handleAddMetadata, children: [
|
|
133
136
|
/* @__PURE__ */ jsxs(DialogHeader, { children: [
|
|
134
137
|
/* @__PURE__ */ jsx(DialogTitle, { children: "Add metadata column" }),
|
|
135
138
|
/* @__PURE__ */ jsx(DialogDescription, { children: "Pick a top-level trace metadata key observed in the current time range, or type one. Only the key is saved, never its values." })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-columns-menu.es.js","sources":["../../../../src/domains/traces/components/trace-columns-menu.tsx"],"sourcesContent":["import { Columns3Icon, PlusIcon, Columns3, X } from 'lucide-react';\nimport { useMemo, useState, type FormEvent } from 'react';\nimport { TRACE_CUSTOM_COLUMN_FIELDS, TRACE_CUSTOM_COLUMN_LABELS, TRACE_USAGE_COLUMNS } from '../trace-list-columns';\nimport type { TraceColumnPreferences, TraceCustomColumn, TraceOptionalColumn } from '../trace-list-columns';\nimport { Button } from '@/ds/components/Button';\nimport { Combobox } from '@/ds/components/Combobox';\nimport {\n Dialog,\n DialogBody,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from '@/ds/components/Dialog';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu';\nimport { FieldBlock } from '@/ds/components/FormFieldBlocks';\n\nconst METADATA_KEY_FIELD_NAME = 'trace-metadata-key';\nconst EMPTY_KEYS: readonly string[] = [];\n\nconst STANDARD_COLUMNS: readonly TraceOptionalColumn[] = ['type', 'input', 'duration', 'endTime', 'environment'];\n\nconst COLUMN_LABELS: Record<TraceOptionalColumn, string> = {\n type: 'Type',\n input: 'Input',\n duration: 'Duration',\n endTime: 'End',\n environment: 'Environment',\n inputTokens: 'Input tokens',\n outputTokens: 'Output tokens',\n totalTokens: 'Total tokens',\n estimatedCost: 'Estimated cost',\n};\n\ntype TraceColumnsMenuProps = {\n preferences: TraceColumnPreferences;\n /** Top-level metadata keys observed on traces in the current time range, offered in the picker. */\n availableMetadataKeys?: readonly string[];\n usageDisabledReason?: string;\n onToggleColumn: (column: TraceOptionalColumn) => void;\n onAddCustomColumn: (field: TraceCustomColumn) => void;\n onRemoveCustomColumn: (field: TraceCustomColumn) => void;\n onAddMetadataColumn: (key: string) => void;\n onRemoveMetadataColumn: (key: string) => void;\n onReset: () => void;\n};\n\nexport function TraceColumnsMenu({\n preferences,\n availableMetadataKeys = EMPTY_KEYS,\n usageDisabledReason,\n onToggleColumn,\n onAddCustomColumn,\n onRemoveCustomColumn,\n onAddMetadataColumn,\n onRemoveMetadataColumn,\n onReset,\n}: TraceColumnsMenuProps) {\n const [isMetadataDialogOpen, setIsMetadataDialogOpen] = useState(false);\n const [metadataKey, setMetadataKey] = useState('');\n const [metadataError, setMetadataError] = useState<string | undefined>();\n\n // Keys already shown as columns are left out; a typed key that discovery\n // hasn't seen is kept in the list so the trigger can display it once picked.\n const metadataKeyOptions = useMemo(() => {\n const keys = availableMetadataKeys.filter(key => !preferences.metadataKeys.includes(key));\n if (metadataKey && !keys.includes(metadataKey)) keys.push(metadataKey);\n return keys.map(key => ({ label: key, value: key }));\n }, [availableMetadataKeys, preferences.metadataKeys, metadataKey]);\n\n const handleDialogOpenChange = (open: boolean) => {\n setIsMetadataDialogOpen(open);\n if (!open) {\n setMetadataKey('');\n setMetadataError(undefined);\n }\n };\n\n const handleAddMetadata = (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n const normalizedKey = metadataKey.trim();\n if (!normalizedKey) {\n setMetadataError('Enter a metadata key.');\n return;\n }\n if (preferences.metadataKeys.includes(normalizedKey)) {\n setMetadataError('That metadata column is already visible.');\n return;\n }\n\n onAddMetadataColumn(normalizedKey);\n handleDialogOpenChange(false);\n };\n\n return (\n <>\n <DropdownMenu>\n <DropdownMenu.Trigger\n render={\n <Button variant=\"ghost\" size=\"md\" icon={<Columns3Icon aria-hidden />}>\n Columns\n </Button>\n }\n />\n <DropdownMenu.Content align=\"end\" className=\"min-w-56\">\n <DropdownMenu.Label>Standard columns</DropdownMenu.Label>\n {STANDARD_COLUMNS.map(column => (\n <DropdownMenu.CheckboxItem\n key={column}\n checked={preferences.visibleColumns.includes(column)}\n onCheckedChange={() => onToggleColumn(column)}\n >\n {COLUMN_LABELS[column]}\n </DropdownMenu.CheckboxItem>\n ))}\n\n <DropdownMenu.Separator />\n <DropdownMenu.Label>Usage columns</DropdownMenu.Label>\n {TRACE_USAGE_COLUMNS.map(column => (\n <DropdownMenu.CheckboxItem\n key={column}\n checked={preferences.visibleColumns.includes(column)}\n disabled={Boolean(usageDisabledReason)}\n onCheckedChange={() => onToggleColumn(column)}\n >\n {COLUMN_LABELS[column]}\n </DropdownMenu.CheckboxItem>\n ))}\n {usageDisabledReason && (\n <p className=\"px-2 py-1 text-meta text-placeholder\" role=\"note\">\n {usageDisabledReason}\n </p>\n )}\n\n <DropdownMenu.Separator />\n <DropdownMenu.Label>Custom columns</DropdownMenu.Label>\n {TRACE_CUSTOM_COLUMN_FIELDS.map(field => {\n const isVisible = preferences.customColumns.includes(field);\n return (\n <DropdownMenu.CheckboxItem\n key={field}\n checked={isVisible}\n onCheckedChange={() => (isVisible ? onRemoveCustomColumn(field) : onAddCustomColumn(field))}\n >\n {TRACE_CUSTOM_COLUMN_LABELS[field]}\n </DropdownMenu.CheckboxItem>\n );\n })}\n\n <DropdownMenu.Separator />\n <DropdownMenu.Label>Metadata columns</DropdownMenu.Label>\n {preferences.metadataKeys.map(key => (\n <DropdownMenu.CheckboxItem\n key={key}\n checked\n title={key}\n onCheckedChange={() => onRemoveMetadataColumn(key)}\n >\n {key}\n </DropdownMenu.CheckboxItem>\n ))}\n <DropdownMenu.Item onSelect={() => setIsMetadataDialogOpen(true)}>\n <PlusIcon aria-hidden />\n Add metadata column\n </DropdownMenu.Item>\n\n <DropdownMenu.Separator />\n <DropdownMenu.Item onSelect={onReset}>Reset to defaults</DropdownMenu.Item>\n </DropdownMenu.Content>\n </DropdownMenu>\n\n <Dialog open={isMetadataDialogOpen} onOpenChange={handleDialogOpenChange}>\n <DialogContent>\n <form onSubmit={handleAddMetadata}>\n <DialogHeader>\n <DialogTitle>Add metadata column</DialogTitle>\n <DialogDescription>\n Pick a top-level trace metadata key observed in the current time range, or type one. Only the key is\n saved, never its values.\n </DialogDescription>\n </DialogHeader>\n <DialogBody>\n <FieldBlock.Column>\n <FieldBlock.Label name={METADATA_KEY_FIELD_NAME}>Metadata key</FieldBlock.Label>\n <Combobox\n id={`input-${METADATA_KEY_FIELD_NAME}`}\n name={METADATA_KEY_FIELD_NAME}\n options={metadataKeyOptions}\n value={metadataKey}\n onValueChange={key => {\n setMetadataKey(key);\n setMetadataError(undefined);\n }}\n allowCustomValue\n placeholder=\"Select a metadata key…\"\n searchPlaceholder=\"Search metadata keys…\"\n emptyText=\"No metadata keys observed. Type one to add it.\"\n error={metadataError}\n />\n </FieldBlock.Column>\n </DialogBody>\n <DialogFooter>\n <Button icon={<X />} type=\"button\" onClick={() => handleDialogOpenChange(false)}>\n Cancel\n </Button>\n <Button icon={<Columns3 />} type=\"submit\" variant=\"primary\">\n Add column\n </Button>\n </DialogFooter>\n </form>\n </DialogContent>\n </Dialog>\n </>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAkBA,MAAM,uBAAA,GAA0B,oBAAA;AAChC,MAAM,aAAgC,EAAC;AAEvC,MAAM,mBAAmD,CAAC,MAAA,EAAQ,OAAA,EAAS,UAAA,EAAY,WAAW,aAAa,CAAA;AAE/G,MAAM,aAAA,GAAqD;AAAA,EACzD,IAAA,EAAM,MAAA;AAAA,EACN,KAAA,EAAO,OAAA;AAAA,EACP,QAAA,EAAU,UAAA;AAAA,EACV,OAAA,EAAS,KAAA;AAAA,EACT,WAAA,EAAa,aAAA;AAAA,EACb,WAAA,EAAa,cAAA;AAAA,EACb,YAAA,EAAc,eAAA;AAAA,EACd,WAAA,EAAa,cAAA;AAAA,EACb,aAAA,EAAe;AACjB,CAAA;AAeO,SAAS,gBAAA,CAAiB;AAAA,EAC/B,WAAA;AAAA,EACA,qBAAA,GAAwB,UAAA;AAAA,EACxB,mBAAA;AAAA,EACA,cAAA;AAAA,EACA,iBAAA;AAAA,EACA,oBAAA;AAAA,EACA,mBAAA;AAAA,EACA,sBAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,CAAC,oBAAA,EAAsB,uBAAuB,CAAA,GAAI,SAAS,KAAK,CAAA;AACtE,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAS,EAAE,CAAA;AACjD,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,QAAA,EAA6B;AAIvE,EAAA,MAAM,kBAAA,GAAqB,QAAQ,MAAM;AACvC,IAAA,MAAM,IAAA,GAAO,sBAAsB,MAAA,CAAO,CAAA,GAAA,KAAO,CAAC,WAAA,CAAY,YAAA,CAAa,QAAA,CAAS,GAAG,CAAC,CAAA;AACxF,IAAA,IAAI,WAAA,IAAe,CAAC,IAAA,CAAK,QAAA,CAAS,WAAW,CAAA,EAAG,IAAA,CAAK,KAAK,WAAW,CAAA;AACrE,IAAA,OAAO,IAAA,CAAK,IAAI,CAAA,GAAA,MAAQ,EAAE,OAAO,GAAA,EAAK,KAAA,EAAO,KAAI,CAAE,CAAA;AAAA,EACrD,GAAG,CAAC,qBAAA,EAAuB,WAAA,CAAY,YAAA,EAAc,WAAW,CAAC,CAAA;AAEjE,EAAA,MAAM,sBAAA,GAAyB,CAAC,IAAA,KAAkB;AAChD,IAAA,uBAAA,CAAwB,IAAI,CAAA;AAC5B,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA,cAAA,CAAe,EAAE,CAAA;AACjB,MAAA,gBAAA,CAAiB,MAAS,CAAA;AAAA,IAC5B;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,iBAAA,GAAoB,CAAC,KAAA,KAAsC;AAC/D,IAAA,KAAA,CAAM,cAAA,EAAe;AACrB,IAAA,MAAM,aAAA,GAAgB,YAAY,IAAA,EAAK;AACvC,IAAA,IAAI,CAAC,aAAA,EAAe;AAClB,MAAA,gBAAA,CAAiB,uBAAuB,CAAA;AACxC,MAAA;AAAA,IACF;AACA,IAAA,IAAI,WAAA,CAAY,YAAA,CAAa,QAAA,CAAS,aAAa,CAAA,EAAG;AACpD,MAAA,gBAAA,CAAiB,0CAA0C,CAAA;AAC3D,MAAA;AAAA,IACF;AAEA,IAAA,mBAAA,CAAoB,aAAa,CAAA;AACjC,IAAA,sBAAA,CAAuB,KAAK,CAAA;AAAA,EAC9B,CAAA;AAEA,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,YAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,YAAA,CAAa,OAAA;AAAA,QAAb;AAAA,UACC,MAAA,kBACE,GAAA,CAAC,MAAA,EAAA,EAAO,OAAA,EAAQ,OAAA,EAAQ,IAAA,EAAK,IAAA,EAAK,IAAA,kBAAM,GAAA,CAAC,YAAA,EAAA,EAAa,aAAA,EAAW,IAAA,EAAC,GAAI,QAAA,EAAA,SAAA,EAEtE;AAAA;AAAA,OAEJ;AAAA,2BACC,YAAA,CAAa,OAAA,EAAb,EAAqB,KAAA,EAAM,KAAA,EAAM,WAAU,UAAA,EAC1C,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,YAAA,CAAa,KAAA,EAAb,EAAmB,QAAA,EAAA,kBAAA,EAAgB,CAAA;AAAA,QACnC,gBAAA,CAAiB,IAAI,CAAA,MAAA,qBACpB,GAAA;AAAA,UAAC,YAAA,CAAa,YAAA;AAAA,UAAb;AAAA,YAEC,OAAA,EAAS,WAAA,CAAY,cAAA,CAAe,QAAA,CAAS,MAAM,CAAA;AAAA,YACnD,eAAA,EAAiB,MAAM,cAAA,CAAe,MAAM,CAAA;AAAA,YAE3C,wBAAc,MAAM;AAAA,WAAA;AAAA,UAJhB;AAAA,SAMR,CAAA;AAAA,wBAED,GAAA,CAAC,YAAA,CAAa,SAAA,EAAb,EAAuB,CAAA;AAAA,wBACxB,GAAA,CAAC,YAAA,CAAa,KAAA,EAAb,EAAmB,QAAA,EAAA,eAAA,EAAa,CAAA;AAAA,QAChC,mBAAA,CAAoB,IAAI,CAAA,MAAA,qBACvB,GAAA;AAAA,UAAC,YAAA,CAAa,YAAA;AAAA,UAAb;AAAA,YAEC,OAAA,EAAS,WAAA,CAAY,cAAA,CAAe,QAAA,CAAS,MAAM,CAAA;AAAA,YACnD,QAAA,EAAU,QAAQ,mBAAmB,CAAA;AAAA,YACrC,eAAA,EAAiB,MAAM,cAAA,CAAe,MAAM,CAAA;AAAA,YAE3C,wBAAc,MAAM;AAAA,WAAA;AAAA,UALhB;AAAA,SAOR,CAAA;AAAA,QACA,uCACC,GAAA,CAAC,GAAA,EAAA,EAAE,WAAU,sCAAA,EAAuC,IAAA,EAAK,QACtD,QAAA,EAAA,mBAAA,EACH,CAAA;AAAA,wBAGF,GAAA,CAAC,YAAA,CAAa,SAAA,EAAb,EAAuB,CAAA;AAAA,wBACxB,GAAA,CAAC,YAAA,CAAa,KAAA,EAAb,EAAmB,QAAA,EAAA,gBAAA,EAAc,CAAA;AAAA,QACjC,0BAAA,CAA2B,IAAI,CAAA,KAAA,KAAS;AACvC,UAAA,MAAM,SAAA,GAAY,WAAA,CAAY,aAAA,CAAc,QAAA,CAAS,KAAK,CAAA;AAC1D,UAAA,uBACE,GAAA;AAAA,YAAC,YAAA,CAAa,YAAA;AAAA,YAAb;AAAA,cAEC,OAAA,EAAS,SAAA;AAAA,cACT,iBAAiB,MAAO,SAAA,GAAY,qBAAqB,KAAK,CAAA,GAAI,kBAAkB,KAAK,CAAA;AAAA,cAExF,qCAA2B,KAAK;AAAA,aAAA;AAAA,YAJ5B;AAAA,WAKP;AAAA,QAEJ,CAAC,CAAA;AAAA,wBAED,GAAA,CAAC,YAAA,CAAa,SAAA,EAAb,EAAuB,CAAA;AAAA,wBACxB,GAAA,CAAC,YAAA,CAAa,KAAA,EAAb,EAAmB,QAAA,EAAA,kBAAA,EAAgB,CAAA;AAAA,QACnC,WAAA,CAAY,YAAA,CAAa,GAAA,CAAI,CAAA,GAAA,qBAC5B,GAAA;AAAA,UAAC,YAAA,CAAa,YAAA;AAAA,UAAb;AAAA,YAEC,OAAA,EAAO,IAAA;AAAA,YACP,KAAA,EAAO,GAAA;AAAA,YACP,eAAA,EAAiB,MAAM,sBAAA,CAAuB,GAAG,CAAA;AAAA,YAEhD,QAAA,EAAA;AAAA,WAAA;AAAA,UALI;AAAA,SAOR,CAAA;AAAA,wBACD,IAAA,CAAC,aAAa,IAAA,EAAb,EAAkB,UAAU,MAAM,uBAAA,CAAwB,IAAI,CAAA,EAC7D,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,QAAA,EAAA,EAAS,eAAW,IAAA,EAAC,CAAA;AAAA,UAAE;AAAA,SAAA,EAE1B,CAAA;AAAA,wBAEA,GAAA,CAAC,YAAA,CAAa,SAAA,EAAb,EAAuB,CAAA;AAAA,4BACvB,YAAA,CAAa,IAAA,EAAb,EAAkB,QAAA,EAAU,SAAS,QAAA,EAAA,mBAAA,EAAiB;AAAA,OAAA,EACzD;AAAA,KAAA,EACF,CAAA;AAAA,oBAEA,GAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAM,oBAAA,EAAsB,YAAA,EAAc,sBAAA,EAChD,QAAA,kBAAA,GAAA,CAAC,aAAA,EAAA,EACC,QAAA,kBAAA,IAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAU,iBAAA,EACd,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,YAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,eAAY,QAAA,EAAA,qBAAA,EAAmB,CAAA;AAAA,wBAChC,GAAA,CAAC,qBAAkB,QAAA,EAAA,+HAAA,EAGnB;AAAA,OAAA,EACF,CAAA;AAAA,sBACA,GAAA,CAAC,UAAA,EAAA,EACC,QAAA,kBAAA,IAAA,CAAC,UAAA,CAAW,QAAX,EACC,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,UAAA,CAAW,KAAA,EAAX,EAAiB,IAAA,EAAM,yBAAyB,QAAA,EAAA,cAAA,EAAY,CAAA;AAAA,wBAC7D,GAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAI,SAAS,uBAAuB,CAAA,CAAA;AAAA,YACpC,IAAA,EAAM,uBAAA;AAAA,YACN,OAAA,EAAS,kBAAA;AAAA,YACT,KAAA,EAAO,WAAA;AAAA,YACP,eAAe,CAAA,GAAA,KAAO;AACpB,cAAA,cAAA,CAAe,GAAG,CAAA;AAClB,cAAA,gBAAA,CAAiB,MAAS,CAAA;AAAA,YAC5B,CAAA;AAAA,YACA,gBAAA,EAAgB,IAAA;AAAA,YAChB,WAAA,EAAY,wBAAA;AAAA,YACZ,iBAAA,EAAkB,uBAAA;AAAA,YAClB,SAAA,EAAU,gDAAA;AAAA,YACV,KAAA,EAAO;AAAA;AAAA;AACT,OAAA,EACF,CAAA,EACF,CAAA;AAAA,2BACC,YAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,MAAA,EAAA,EAAO,IAAA,kBAAM,GAAA,CAAC,CAAA,EAAA,EAAE,CAAA,EAAI,IAAA,EAAK,QAAA,EAAS,OAAA,EAAS,MAAM,sBAAA,CAAuB,KAAK,CAAA,EAAG,QAAA,EAAA,QAAA,EAEjF,CAAA;AAAA,wBACA,GAAA,CAAC,MAAA,EAAA,EAAO,IAAA,kBAAM,GAAA,CAAC,QAAA,EAAA,EAAS,GAAI,IAAA,EAAK,QAAA,EAAS,OAAA,EAAQ,SAAA,EAAU,QAAA,EAAA,YAAA,EAE5D;AAAA,OAAA,EACF;AAAA,KAAA,EACF,GACF,CAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
|
|
1
|
+
{"version":3,"file":"trace-columns-menu.es.js","sources":["../../../../src/domains/traces/components/trace-columns-menu.tsx"],"sourcesContent":["import { Columns3Icon, PlusIcon, Columns3, X } from 'lucide-react';\nimport { useMemo, useState, type FormEvent } from 'react';\nimport { TRACE_CUSTOM_COLUMN_FIELDS, TRACE_CUSTOM_COLUMN_LABELS, TRACE_USAGE_COLUMNS } from '../trace-list-columns';\nimport type { TraceColumnPreferences, TraceCustomColumn, TraceOptionalColumn } from '../trace-list-columns';\nimport { Button } from '@/ds/components/Button';\nimport { Combobox } from '@/ds/components/Combobox';\nimport {\n Dialog,\n DialogBody,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from '@/ds/components/Dialog';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu';\nimport { FieldBlock } from '@/ds/components/FormFieldBlocks';\n\nconst METADATA_KEY_FIELD_NAME = 'trace-metadata-key';\nconst EMPTY_KEYS: readonly string[] = [];\n\nconst STANDARD_COLUMNS: readonly TraceOptionalColumn[] = ['type', 'input', 'duration', 'endTime', 'environment'];\n\nconst COLUMN_LABELS: Record<TraceOptionalColumn, string> = {\n type: 'Type',\n input: 'Input',\n duration: 'Duration',\n endTime: 'End',\n environment: 'Environment',\n inputTokens: 'Input tokens',\n outputTokens: 'Output tokens',\n totalTokens: 'Total tokens',\n estimatedCost: 'Estimated cost',\n};\n\ntype TraceColumnsMenuProps = {\n preferences: TraceColumnPreferences;\n /** Top-level metadata keys observed on traces in the current time range, offered in the picker. */\n availableMetadataKeys?: readonly string[];\n usageDisabledReason?: string;\n /** When false (server without the trace-query API), metadata columns can't be added. Defaults to true. */\n withQueryTrace?: boolean;\n onToggleColumn: (column: TraceOptionalColumn) => void;\n onAddCustomColumn: (field: TraceCustomColumn) => void;\n onRemoveCustomColumn: (field: TraceCustomColumn) => void;\n onAddMetadataColumn: (key: string) => void;\n onRemoveMetadataColumn: (key: string) => void;\n onReset: () => void;\n};\n\nexport function TraceColumnsMenu({\n preferences,\n availableMetadataKeys = EMPTY_KEYS,\n usageDisabledReason,\n withQueryTrace = true,\n onToggleColumn,\n onAddCustomColumn,\n onRemoveCustomColumn,\n onAddMetadataColumn,\n onRemoveMetadataColumn,\n onReset,\n}: TraceColumnsMenuProps) {\n const [isMetadataDialogOpen, setIsMetadataDialogOpen] = useState(false);\n const [metadataKey, setMetadataKey] = useState('');\n const [metadataError, setMetadataError] = useState<string | undefined>();\n\n // Keys already shown as columns are left out; a typed key that discovery\n // hasn't seen is kept in the list so the trigger can display it once picked.\n const metadataKeyOptions = useMemo(() => {\n const keys = availableMetadataKeys.filter(key => !preferences.metadataKeys.includes(key));\n if (metadataKey && !keys.includes(metadataKey)) keys.push(metadataKey);\n return keys.map(key => ({ label: key, value: key }));\n }, [availableMetadataKeys, preferences.metadataKeys, metadataKey]);\n\n const handleDialogOpenChange = (open: boolean) => {\n setIsMetadataDialogOpen(open);\n if (!open) {\n setMetadataKey('');\n setMetadataError(undefined);\n }\n };\n\n const handleAddMetadata = (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n const normalizedKey = metadataKey.trim();\n if (!normalizedKey) {\n setMetadataError('Enter a metadata key.');\n return;\n }\n if (preferences.metadataKeys.includes(normalizedKey)) {\n setMetadataError('That metadata column is already visible.');\n return;\n }\n\n onAddMetadataColumn(normalizedKey);\n handleDialogOpenChange(false);\n };\n\n return (\n <>\n <DropdownMenu>\n <DropdownMenu.Trigger\n render={\n <Button variant=\"ghost\" size=\"md\" icon={<Columns3Icon aria-hidden />}>\n Columns\n </Button>\n }\n />\n <DropdownMenu.Content align=\"end\" className=\"min-w-56\">\n <DropdownMenu.Label>Standard columns</DropdownMenu.Label>\n {STANDARD_COLUMNS.map(column => (\n <DropdownMenu.CheckboxItem\n key={column}\n checked={preferences.visibleColumns.includes(column)}\n onCheckedChange={() => onToggleColumn(column)}\n >\n {COLUMN_LABELS[column]}\n </DropdownMenu.CheckboxItem>\n ))}\n\n <DropdownMenu.Separator />\n <DropdownMenu.Label>Usage columns</DropdownMenu.Label>\n {TRACE_USAGE_COLUMNS.map(column => (\n <DropdownMenu.CheckboxItem\n key={column}\n checked={preferences.visibleColumns.includes(column)}\n disabled={Boolean(usageDisabledReason)}\n onCheckedChange={() => onToggleColumn(column)}\n >\n {COLUMN_LABELS[column]}\n </DropdownMenu.CheckboxItem>\n ))}\n {usageDisabledReason && (\n <p className=\"px-2 py-1 text-meta text-placeholder\" role=\"note\">\n {usageDisabledReason}\n </p>\n )}\n\n <DropdownMenu.Separator />\n <DropdownMenu.Label>Custom columns</DropdownMenu.Label>\n {TRACE_CUSTOM_COLUMN_FIELDS.map(field => {\n const isVisible = preferences.customColumns.includes(field);\n return (\n <DropdownMenu.CheckboxItem\n key={field}\n checked={isVisible}\n onCheckedChange={() => (isVisible ? onRemoveCustomColumn(field) : onAddCustomColumn(field))}\n >\n {TRACE_CUSTOM_COLUMN_LABELS[field]}\n </DropdownMenu.CheckboxItem>\n );\n })}\n\n {(withQueryTrace || preferences.metadataKeys.length > 0) && (\n <>\n <DropdownMenu.Separator />\n <DropdownMenu.Label>Metadata columns</DropdownMenu.Label>\n {preferences.metadataKeys.map(key => (\n <DropdownMenu.CheckboxItem\n key={key}\n checked\n title={key}\n onCheckedChange={() => onRemoveMetadataColumn(key)}\n >\n {key}\n </DropdownMenu.CheckboxItem>\n ))}\n {withQueryTrace && (\n <DropdownMenu.Item onSelect={() => setIsMetadataDialogOpen(true)}>\n <PlusIcon aria-hidden />\n Add metadata column\n </DropdownMenu.Item>\n )}\n </>\n )}\n\n <DropdownMenu.Separator />\n <DropdownMenu.Item onSelect={onReset}>Reset to defaults</DropdownMenu.Item>\n </DropdownMenu.Content>\n </DropdownMenu>\n\n {withQueryTrace && (\n <Dialog open={isMetadataDialogOpen} onOpenChange={handleDialogOpenChange}>\n <DialogContent>\n <form onSubmit={handleAddMetadata}>\n <DialogHeader>\n <DialogTitle>Add metadata column</DialogTitle>\n <DialogDescription>\n Pick a top-level trace metadata key observed in the current time range, or type one. Only the key is\n saved, never its values.\n </DialogDescription>\n </DialogHeader>\n <DialogBody>\n <FieldBlock.Column>\n <FieldBlock.Label name={METADATA_KEY_FIELD_NAME}>Metadata key</FieldBlock.Label>\n <Combobox\n id={`input-${METADATA_KEY_FIELD_NAME}`}\n name={METADATA_KEY_FIELD_NAME}\n options={metadataKeyOptions}\n value={metadataKey}\n onValueChange={key => {\n setMetadataKey(key);\n setMetadataError(undefined);\n }}\n allowCustomValue\n placeholder=\"Select a metadata key…\"\n searchPlaceholder=\"Search metadata keys…\"\n emptyText=\"No metadata keys observed. Type one to add it.\"\n error={metadataError}\n />\n </FieldBlock.Column>\n </DialogBody>\n <DialogFooter>\n <Button icon={<X />} type=\"button\" onClick={() => handleDialogOpenChange(false)}>\n Cancel\n </Button>\n <Button icon={<Columns3 />} type=\"submit\" variant=\"primary\">\n Add column\n </Button>\n </DialogFooter>\n </form>\n </DialogContent>\n </Dialog>\n )}\n </>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -15,9 +15,9 @@ const domains_traces_components_traceSpanTree = require('./trace-span-tree.cjs.j
|
|
|
15
15
|
const domains_traces_components_traceSummaryDescription = require('./trace-summary-description.cjs.js');
|
|
16
16
|
const Button = require('../../../Button-BAMnPqos.cjs');
|
|
17
17
|
const buttonsGroup = require('../../../buttons-group-CoZP3lJt.cjs');
|
|
18
|
-
const dataPanel = require('../../../data-panel-
|
|
18
|
+
const dataPanel = require('../../../data-panel-C_BqhzeL.cjs');
|
|
19
19
|
const dropdownMenu = require('../../../dropdown-menu-j2y37TL5.cjs');
|
|
20
|
-
const searchFieldBlock = require('../../../search-field-block-
|
|
20
|
+
const searchFieldBlock = require('../../../search-field-block-K_e_S9WY.cjs');
|
|
21
21
|
const Notice = require('../../../Notice-AUNd8fqT.cjs');
|
|
22
22
|
const tabsRoot = require('../../../tabs-root-COCL6jcx.cjs');
|
|
23
23
|
const tabsTab = require('../../../tabs-tab-DFmRMdi3.cjs');
|
|
@@ -11,9 +11,9 @@ import { TraceSpanTree } from './trace-span-tree.es.js';
|
|
|
11
11
|
import { TraceSummaryDescription } from './trace-summary-description.es.js';
|
|
12
12
|
import { B as Button } from '../../../Button-B8nF87ai.js';
|
|
13
13
|
import { B as ButtonsGroup } from '../../../buttons-group-DsZgrZBZ.js';
|
|
14
|
-
import { D as DataPanel } from '../../../data-panel-
|
|
14
|
+
import { D as DataPanel } from '../../../data-panel-BWgExbHs.js';
|
|
15
15
|
import { D as DropdownMenu } from '../../../dropdown-menu-DpEn6HwK.js';
|
|
16
|
-
import { S as SearchFieldBlock } from '../../../search-field-block-
|
|
16
|
+
import { S as SearchFieldBlock } from '../../../search-field-block-Dj2KJyjQ.js';
|
|
17
17
|
import { N as Notice } from '../../../Notice-WT8G4OA6.js';
|
|
18
18
|
import { a as Tabs, T as TabList } from '../../../tabs-root-UNPxoGhW.js';
|
|
19
19
|
import { T as Tab } from '../../../tabs-tab-DluwCnDF.js';
|
|
@@ -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 dataPanel = require('../../../data-panel-
|
|
6
|
+
const dataPanel = require('../../../data-panel-C_BqhzeL.cjs');
|
|
7
7
|
|
|
8
8
|
function TraceIdButton({ id }) {
|
|
9
9
|
return /* @__PURE__ */ jsxRuntime.jsx(dataPanel.DataPanel.CopyId, { id });
|
|
@@ -7,11 +7,10 @@ const domains_traces_components_spanRows = require('./span-rows.cjs.js');
|
|
|
7
7
|
const domains_traces_components_spanTimelineRow = require('./span-timeline-row.cjs.js');
|
|
8
8
|
const domains_traces_components_spanTypeLegend = require('./span-type-legend.cjs.js');
|
|
9
9
|
const domains_traces_components_traceSpanTree = require('./trace-span-tree.cjs.js');
|
|
10
|
+
const utils_cn = require('../../../cn-DG0X1KEP.cjs');
|
|
11
|
+
const utils_duration = require('../../../utils/duration.cjs.js');
|
|
10
12
|
|
|
11
13
|
const TICKS = [0, 0.25, 0.5, 0.75, 1];
|
|
12
|
-
function formatTick(ms) {
|
|
13
|
-
return ms < 1e3 ? `${Math.round(ms)} ms` : `${(ms / 1e3).toFixed(2)} s`;
|
|
14
|
-
}
|
|
15
14
|
function TraceSpanTimeline({
|
|
16
15
|
hierarchicalSpans = [],
|
|
17
16
|
onSpanClick,
|
|
@@ -32,7 +31,14 @@ function TraceSpanTimeline({
|
|
|
32
31
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[minmax(10rem,2fr)_minmax(12rem,3fr)] content-start gap-y-px overflow-hidden py-1", children: [
|
|
33
32
|
/* @__PURE__ */ jsxRuntime.jsx("div", {}),
|
|
34
33
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { "aria-label": "Trace time axis", className: "grid grid-cols-[minmax(0,1fr)_auto] gap-2 px-2 pb-1", children: [
|
|
35
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-between text-meta text-muted-foreground tabular-nums", children: TICKS.map((tick) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
34
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-between text-meta text-muted-foreground tabular-nums", children: TICKS.map((tick, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
35
|
+
"span",
|
|
36
|
+
{
|
|
37
|
+
className: utils_cn.cn("whitespace-nowrap", index > 0 && index < TICKS.length - 1 && "hidden sm:inline"),
|
|
38
|
+
children: utils_duration.formatDurationPrecise(overallLatency * tick)
|
|
39
|
+
},
|
|
40
|
+
tick
|
|
41
|
+
)) }),
|
|
36
42
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-12" })
|
|
37
43
|
] }),
|
|
38
44
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-span-timeline.cjs.js","sources":["../../../../src/domains/traces/components/trace-span-timeline.tsx"],"sourcesContent":["import type { Dispatch, ReactNode, SetStateAction } from 'react';\nimport type { UISpan } from '../types';\nimport { SpanRows } from './span-rows';\nimport { SpanTimelineRow } from './span-timeline-row';\nimport { SpanTypeLegend } from './span-type-legend';\nimport { TraceSpanTreeLoading } from './trace-span-tree';\n\nexport type TraceSpanTimelineProps = {\n hierarchicalSpans: UISpan[];\n onSpanClick: (id: string) => void;\n selectedSpanId?: string;\n isLoading?: boolean;\n fadedTypes?: string[];\n expandedSpanIds?: string[];\n setExpandedSpanIds?: Dispatch<SetStateAction<string[]>>;\n featuredSpanIds?: string[];\n /** Row scrolled into view once it is mounted (ancestors auto-expand when the span is featured). */\n revealSpanId?: string;\n /** Rendered full-width above the span type legend row. */\n leadingSlot?: ReactNode;\n};\n\nconst TICKS = [0, 0.25, 0.5, 0.75, 1];\n\
|
|
1
|
+
{"version":3,"file":"trace-span-timeline.cjs.js","sources":["../../../../src/domains/traces/components/trace-span-timeline.tsx"],"sourcesContent":["import type { Dispatch, ReactNode, SetStateAction } from 'react';\nimport type { UISpan } from '../types';\nimport { SpanRows } from './span-rows';\nimport { SpanTimelineRow } from './span-timeline-row';\nimport { SpanTypeLegend } from './span-type-legend';\nimport { TraceSpanTreeLoading } from './trace-span-tree';\nimport { cn } from '@/lib/utils';\nimport { formatDurationPrecise } from '@/utils/duration';\n\nexport type TraceSpanTimelineProps = {\n hierarchicalSpans: UISpan[];\n onSpanClick: (id: string) => void;\n selectedSpanId?: string;\n isLoading?: boolean;\n fadedTypes?: string[];\n expandedSpanIds?: string[];\n setExpandedSpanIds?: Dispatch<SetStateAction<string[]>>;\n featuredSpanIds?: string[];\n /** Row scrolled into view once it is mounted (ancestors auto-expand when the span is featured). */\n revealSpanId?: string;\n /** Rendered full-width above the span type legend row. */\n leadingSlot?: ReactNode;\n};\n\nconst TICKS = [0, 0.25, 0.5, 0.75, 1];\n\n/**\n * Gantt-style view of a trace: the same hierarchy and expansion state as `TraceSpanTree`,\n * but each row is a compact name cell plus a bar on a shared time axis. Rendered with its\n * own row component (`SpanTimelineRow`), independent from the tree's rows.\n */\nexport function TraceSpanTimeline({\n hierarchicalSpans = [],\n onSpanClick,\n selectedSpanId,\n isLoading,\n fadedTypes,\n expandedSpanIds,\n setExpandedSpanIds,\n featuredSpanIds,\n revealSpanId,\n leadingSlot,\n}: TraceSpanTimelineProps) {\n if (isLoading) return <TraceSpanTreeLoading />;\n\n const overallLatency = hierarchicalSpans[0]?.latency || 0;\n\n return (\n <>\n {leadingSlot}\n <SpanTypeLegend spans={hierarchicalSpans} />\n <div className=\"grid grid-cols-[minmax(10rem,2fr)_minmax(12rem,3fr)] content-start gap-y-px overflow-hidden py-1\">\n {/* Header row: empty name cell, then the axis aligned with the bars (same horizontal padding, minus the duration label). */}\n <div />\n <div aria-label=\"Trace time axis\" className=\"grid grid-cols-[minmax(0,1fr)_auto] gap-2 px-2 pb-1\">\n <div className=\"flex justify-between text-meta text-muted-foreground tabular-nums\">\n {TICKS.map((tick, index) => (\n <span\n key={tick}\n className={cn('whitespace-nowrap', index > 0 && index < TICKS.length - 1 && 'hidden sm:inline')}\n >\n {formatDurationPrecise(overallLatency * tick)}\n </span>\n ))}\n </div>\n <div className=\"w-12\" />\n </div>\n <SpanRows\n spans={hierarchicalSpans}\n onSpanClick={onSpanClick}\n selectedSpanId={selectedSpanId}\n revealSpanId={revealSpanId}\n fadedTypes={fadedTypes}\n featuredSpanIds={featuredSpanIds}\n expandedSpanIds={expandedSpanIds}\n setExpandedSpanIds={setExpandedSpanIds}\n renderRow={ctx => <SpanTimelineRow ctx={ctx} />}\n />\n </div>\n </>\n );\n}\n"],"names":["jsx","TraceSpanTreeLoading","jsxs","Fragment","SpanTypeLegend","cn","formatDurationPrecise","SpanRows","SpanTimelineRow"],"mappings":";;;;;;;;;;;;AAwBA,MAAM,QAAQ,CAAC,CAAA,EAAG,IAAA,EAAM,GAAA,EAAK,MAAM,CAAC,CAAA;AAO7B,SAAS,iBAAA,CAAkB;AAAA,EAChC,oBAAoB,EAAC;AAAA,EACrB,WAAA;AAAA,EACA,cAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA;AAAA,EACA,kBAAA;AAAA,EACA,eAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAA2B;AACzB,EAAA,IAAI,SAAA,EAAW,uBAAOA,cAAA,CAACC,4DAAA,EAAA,EAAqB,CAAA;AAE5C,EAAA,MAAM,cAAA,GAAiB,iBAAA,CAAkB,CAAC,CAAA,EAAG,OAAA,IAAW,CAAA;AAExD,EAAA,uBACEC,eAAA,CAAAC,mBAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,WAAA;AAAA,oBACDH,cAAA,CAACI,uDAAA,EAAA,EAAe,KAAA,EAAO,iBAAA,EAAmB,CAAA;AAAA,oBAC1CF,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kGAAA,EAEb,QAAA,EAAA;AAAA,sBAAAF,cAAA,CAAC,KAAA,EAAA,EAAI,CAAA;AAAA,sBACLE,eAAA,CAAC,KAAA,EAAA,EAAI,YAAA,EAAW,iBAAA,EAAkB,WAAU,qDAAA,EAC1C,QAAA,EAAA;AAAA,wBAAAF,cAAA,CAAC,SAAI,SAAA,EAAU,mEAAA,EACZ,gBAAM,GAAA,CAAI,CAAC,MAAM,KAAA,qBAChBA,cAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YAEC,SAAA,EAAWK,YAAG,mBAAA,EAAqB,KAAA,GAAQ,KAAK,KAAA,GAAQ,KAAA,CAAM,MAAA,GAAS,CAAA,IAAK,kBAAkB,CAAA;AAAA,YAE7F,QAAA,EAAAC,oCAAA,CAAsB,iBAAiB,IAAI;AAAA,WAAA;AAAA,UAHvC;AAAA,SAKR,CAAA,EACH,CAAA;AAAA,wBACAN,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,MAAA,EAAO;AAAA,OAAA,EACxB,CAAA;AAAA,sBACAA,cAAA;AAAA,QAACO,2CAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,iBAAA;AAAA,UACP,WAAA;AAAA,UACA,cAAA;AAAA,UACA,YAAA;AAAA,UACA,UAAA;AAAA,UACA,eAAA;AAAA,UACA,eAAA;AAAA,UACA,kBAAA;AAAA,UACA,SAAA,EAAW,CAAA,GAAA,qBAAOP,cAAA,CAACQ,yDAAA,EAAA,EAAgB,GAAA,EAAU;AAAA;AAAA;AAC/C,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -3,11 +3,10 @@ import { SpanRows } from './span-rows.es.js';
|
|
|
3
3
|
import { SpanTimelineRow } from './span-timeline-row.es.js';
|
|
4
4
|
import { SpanTypeLegend } from './span-type-legend.es.js';
|
|
5
5
|
import { TraceSpanTreeLoading } from './trace-span-tree.es.js';
|
|
6
|
+
import { c as cn } from '../../../cn-65Adrsfj.js';
|
|
7
|
+
import { formatDurationPrecise } from '../../../utils/duration.es.js';
|
|
6
8
|
|
|
7
9
|
const TICKS = [0, 0.25, 0.5, 0.75, 1];
|
|
8
|
-
function formatTick(ms) {
|
|
9
|
-
return ms < 1e3 ? `${Math.round(ms)} ms` : `${(ms / 1e3).toFixed(2)} s`;
|
|
10
|
-
}
|
|
11
10
|
function TraceSpanTimeline({
|
|
12
11
|
hierarchicalSpans = [],
|
|
13
12
|
onSpanClick,
|
|
@@ -28,7 +27,14 @@ function TraceSpanTimeline({
|
|
|
28
27
|
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-[minmax(10rem,2fr)_minmax(12rem,3fr)] content-start gap-y-px overflow-hidden py-1", children: [
|
|
29
28
|
/* @__PURE__ */ jsx("div", {}),
|
|
30
29
|
/* @__PURE__ */ jsxs("div", { "aria-label": "Trace time axis", className: "grid grid-cols-[minmax(0,1fr)_auto] gap-2 px-2 pb-1", children: [
|
|
31
|
-
/* @__PURE__ */ jsx("div", { className: "flex justify-between text-meta text-muted-foreground tabular-nums", children: TICKS.map((tick) => /* @__PURE__ */ jsx(
|
|
30
|
+
/* @__PURE__ */ jsx("div", { className: "flex justify-between text-meta text-muted-foreground tabular-nums", children: TICKS.map((tick, index) => /* @__PURE__ */ jsx(
|
|
31
|
+
"span",
|
|
32
|
+
{
|
|
33
|
+
className: cn("whitespace-nowrap", index > 0 && index < TICKS.length - 1 && "hidden sm:inline"),
|
|
34
|
+
children: formatDurationPrecise(overallLatency * tick)
|
|
35
|
+
},
|
|
36
|
+
tick
|
|
37
|
+
)) }),
|
|
32
38
|
/* @__PURE__ */ jsx("div", { className: "w-12" })
|
|
33
39
|
] }),
|
|
34
40
|
/* @__PURE__ */ jsx(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-span-timeline.es.js","sources":["../../../../src/domains/traces/components/trace-span-timeline.tsx"],"sourcesContent":["import type { Dispatch, ReactNode, SetStateAction } from 'react';\nimport type { UISpan } from '../types';\nimport { SpanRows } from './span-rows';\nimport { SpanTimelineRow } from './span-timeline-row';\nimport { SpanTypeLegend } from './span-type-legend';\nimport { TraceSpanTreeLoading } from './trace-span-tree';\n\nexport type TraceSpanTimelineProps = {\n hierarchicalSpans: UISpan[];\n onSpanClick: (id: string) => void;\n selectedSpanId?: string;\n isLoading?: boolean;\n fadedTypes?: string[];\n expandedSpanIds?: string[];\n setExpandedSpanIds?: Dispatch<SetStateAction<string[]>>;\n featuredSpanIds?: string[];\n /** Row scrolled into view once it is mounted (ancestors auto-expand when the span is featured). */\n revealSpanId?: string;\n /** Rendered full-width above the span type legend row. */\n leadingSlot?: ReactNode;\n};\n\nconst TICKS = [0, 0.25, 0.5, 0.75, 1];\n\
|
|
1
|
+
{"version":3,"file":"trace-span-timeline.es.js","sources":["../../../../src/domains/traces/components/trace-span-timeline.tsx"],"sourcesContent":["import type { Dispatch, ReactNode, SetStateAction } from 'react';\nimport type { UISpan } from '../types';\nimport { SpanRows } from './span-rows';\nimport { SpanTimelineRow } from './span-timeline-row';\nimport { SpanTypeLegend } from './span-type-legend';\nimport { TraceSpanTreeLoading } from './trace-span-tree';\nimport { cn } from '@/lib/utils';\nimport { formatDurationPrecise } from '@/utils/duration';\n\nexport type TraceSpanTimelineProps = {\n hierarchicalSpans: UISpan[];\n onSpanClick: (id: string) => void;\n selectedSpanId?: string;\n isLoading?: boolean;\n fadedTypes?: string[];\n expandedSpanIds?: string[];\n setExpandedSpanIds?: Dispatch<SetStateAction<string[]>>;\n featuredSpanIds?: string[];\n /** Row scrolled into view once it is mounted (ancestors auto-expand when the span is featured). */\n revealSpanId?: string;\n /** Rendered full-width above the span type legend row. */\n leadingSlot?: ReactNode;\n};\n\nconst TICKS = [0, 0.25, 0.5, 0.75, 1];\n\n/**\n * Gantt-style view of a trace: the same hierarchy and expansion state as `TraceSpanTree`,\n * but each row is a compact name cell plus a bar on a shared time axis. Rendered with its\n * own row component (`SpanTimelineRow`), independent from the tree's rows.\n */\nexport function TraceSpanTimeline({\n hierarchicalSpans = [],\n onSpanClick,\n selectedSpanId,\n isLoading,\n fadedTypes,\n expandedSpanIds,\n setExpandedSpanIds,\n featuredSpanIds,\n revealSpanId,\n leadingSlot,\n}: TraceSpanTimelineProps) {\n if (isLoading) return <TraceSpanTreeLoading />;\n\n const overallLatency = hierarchicalSpans[0]?.latency || 0;\n\n return (\n <>\n {leadingSlot}\n <SpanTypeLegend spans={hierarchicalSpans} />\n <div className=\"grid grid-cols-[minmax(10rem,2fr)_minmax(12rem,3fr)] content-start gap-y-px overflow-hidden py-1\">\n {/* Header row: empty name cell, then the axis aligned with the bars (same horizontal padding, minus the duration label). */}\n <div />\n <div aria-label=\"Trace time axis\" className=\"grid grid-cols-[minmax(0,1fr)_auto] gap-2 px-2 pb-1\">\n <div className=\"flex justify-between text-meta text-muted-foreground tabular-nums\">\n {TICKS.map((tick, index) => (\n <span\n key={tick}\n className={cn('whitespace-nowrap', index > 0 && index < TICKS.length - 1 && 'hidden sm:inline')}\n >\n {formatDurationPrecise(overallLatency * tick)}\n </span>\n ))}\n </div>\n <div className=\"w-12\" />\n </div>\n <SpanRows\n spans={hierarchicalSpans}\n onSpanClick={onSpanClick}\n selectedSpanId={selectedSpanId}\n revealSpanId={revealSpanId}\n fadedTypes={fadedTypes}\n featuredSpanIds={featuredSpanIds}\n expandedSpanIds={expandedSpanIds}\n setExpandedSpanIds={setExpandedSpanIds}\n renderRow={ctx => <SpanTimelineRow ctx={ctx} />}\n />\n </div>\n </>\n );\n}\n"],"names":[],"mappings":";;;;;;;;AAwBA,MAAM,QAAQ,CAAC,CAAA,EAAG,IAAA,EAAM,GAAA,EAAK,MAAM,CAAC,CAAA;AAO7B,SAAS,iBAAA,CAAkB;AAAA,EAChC,oBAAoB,EAAC;AAAA,EACrB,WAAA;AAAA,EACA,cAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA;AAAA,EACA,kBAAA;AAAA,EACA,eAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAA2B;AACzB,EAAA,IAAI,SAAA,EAAW,uBAAO,GAAA,CAAC,oBAAA,EAAA,EAAqB,CAAA;AAE5C,EAAA,MAAM,cAAA,GAAiB,iBAAA,CAAkB,CAAC,CAAA,EAAG,OAAA,IAAW,CAAA;AAExD,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,WAAA;AAAA,oBACD,GAAA,CAAC,cAAA,EAAA,EAAe,KAAA,EAAO,iBAAA,EAAmB,CAAA;AAAA,oBAC1C,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kGAAA,EAEb,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,CAAA;AAAA,sBACL,IAAA,CAAC,KAAA,EAAA,EAAI,YAAA,EAAW,iBAAA,EAAkB,WAAU,qDAAA,EAC1C,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,SAAI,SAAA,EAAU,mEAAA,EACZ,gBAAM,GAAA,CAAI,CAAC,MAAM,KAAA,qBAChB,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YAEC,SAAA,EAAW,GAAG,mBAAA,EAAqB,KAAA,GAAQ,KAAK,KAAA,GAAQ,KAAA,CAAM,MAAA,GAAS,CAAA,IAAK,kBAAkB,CAAA;AAAA,YAE7F,QAAA,EAAA,qBAAA,CAAsB,iBAAiB,IAAI;AAAA,WAAA;AAAA,UAHvC;AAAA,SAKR,CAAA,EACH,CAAA;AAAA,wBACA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,MAAA,EAAO;AAAA,OAAA,EACxB,CAAA;AAAA,sBACA,GAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,iBAAA;AAAA,UACP,WAAA;AAAA,UACA,cAAA;AAAA,UACA,YAAA;AAAA,UACA,UAAA;AAAA,UACA,eAAA;AAAA,UACA,eAAA;AAAA,UACA,kBAAA;AAAA,UACA,SAAA,EAAW,CAAA,GAAA,qBAAO,GAAA,CAAC,eAAA,EAAA,EAAgB,GAAA,EAAU;AAAA;AAAA;AAC/C,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -7,15 +7,14 @@ const domains_traces_components_spanRows = require('./span-rows.cjs.js');
|
|
|
7
7
|
const domains_traces_components_spanTreeRow = require('./span-tree-row.cjs.js');
|
|
8
8
|
const domains_traces_components_spanTypeLegend = require('./span-type-legend.cjs.js');
|
|
9
9
|
const domains_traces_components_traceSpanTreeSkeleton = require('./trace-span-tree-skeleton.cjs.js');
|
|
10
|
+
const Txt = require('../../../Txt-DPmEpNbp.cjs');
|
|
10
11
|
const utils_cn = require('../../../cn-DG0X1KEP.cjs');
|
|
12
|
+
const utils_duration = require('../../../utils/duration.cjs.js');
|
|
11
13
|
|
|
12
14
|
function TraceSpanTreeLoading() {
|
|
13
15
|
return /* @__PURE__ */ jsxRuntime.jsx(domains_traces_components_traceSpanTreeSkeleton.TraceSpanTreeSkeleton, {});
|
|
14
16
|
}
|
|
15
|
-
const durationMeta = (ctx) => /* @__PURE__ */ jsxRuntime.
|
|
16
|
-
(ctx.span.latency / 1e3).toFixed(3),
|
|
17
|
-
" s"
|
|
18
|
-
] });
|
|
17
|
+
const durationMeta = (ctx) => /* @__PURE__ */ jsxRuntime.jsx(Txt.Txt, { as: "span", variant: "meta", font: "mono", children: utils_duration.formatDurationPrecise(ctx.span.latency) });
|
|
19
18
|
function TraceSpanTree({
|
|
20
19
|
hierarchicalSpans = [],
|
|
21
20
|
onSpanClick,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-span-tree.cjs.js","sources":["../../../../src/domains/traces/components/trace-span-tree.tsx"],"sourcesContent":["import type { Dispatch, ReactNode, SetStateAction } from 'react';\nimport type { UISpan } from '../types';\nimport type { SpanRowContext } from './span-rows';\nimport { SpanRows } from './span-rows';\nimport { SpanTreeRow } from './span-tree-row';\nimport { SpanTypeLegend } from './span-type-legend';\nimport { TraceSpanTreeSkeleton } from './trace-span-tree-skeleton';\nimport { cn } from '@/lib/utils';\n\nexport type TraceSpanTreeProps = {\n hierarchicalSpans: UISpan[];\n onSpanClick: (id: string) => void;\n selectedSpanId?: string;\n isLoading?: boolean;\n fadedTypes?: string[];\n expandedSpanIds?: string[];\n setExpandedSpanIds?: Dispatch<SetStateAction<string[]>>;\n featuredSpanIds?: string[];\n /** Row scrolled into view once it is mounted (ancestors auto-expand when the span is featured). */\n revealSpanId?: string;\n /** Rendered full-width above the span type legend row. */\n leadingSlot?: ReactNode;\n /** Optional end-of-row cell. By default rows have no trailing cell; the duration is shown under the span name. */\n renderTrailing?: (ctx: SpanRowContext) => ReactNode;\n};\n\nexport function TraceSpanTreeLoading() {\n return <TraceSpanTreeSkeleton />;\n}\n\nconst durationMeta = (ctx: SpanRowContext) =>
|
|
1
|
+
{"version":3,"file":"trace-span-tree.cjs.js","sources":["../../../../src/domains/traces/components/trace-span-tree.tsx"],"sourcesContent":["import type { Dispatch, ReactNode, SetStateAction } from 'react';\nimport type { UISpan } from '../types';\nimport type { SpanRowContext } from './span-rows';\nimport { SpanRows } from './span-rows';\nimport { SpanTreeRow } from './span-tree-row';\nimport { SpanTypeLegend } from './span-type-legend';\nimport { TraceSpanTreeSkeleton } from './trace-span-tree-skeleton';\nimport { Txt } from '@/ds/components/Txt/Txt';\nimport { cn } from '@/lib/utils';\nimport { formatDurationPrecise } from '@/utils/duration';\n\nexport type TraceSpanTreeProps = {\n hierarchicalSpans: UISpan[];\n onSpanClick: (id: string) => void;\n selectedSpanId?: string;\n isLoading?: boolean;\n fadedTypes?: string[];\n expandedSpanIds?: string[];\n setExpandedSpanIds?: Dispatch<SetStateAction<string[]>>;\n featuredSpanIds?: string[];\n /** Row scrolled into view once it is mounted (ancestors auto-expand when the span is featured). */\n revealSpanId?: string;\n /** Rendered full-width above the span type legend row. */\n leadingSlot?: ReactNode;\n /** Optional end-of-row cell. By default rows have no trailing cell; the duration is shown under the span name. */\n renderTrailing?: (ctx: SpanRowContext) => ReactNode;\n};\n\nexport function TraceSpanTreeLoading() {\n return <TraceSpanTreeSkeleton />;\n}\n\nconst durationMeta = (ctx: SpanRowContext) => (\n <Txt as=\"span\" variant=\"meta\" font=\"mono\">\n {formatDurationPrecise(ctx.span.latency)}\n </Txt>\n);\n\n/** Hierarchical span tree: expand toggle, name and duration per row, plus an optional trailing cell. */\nexport function TraceSpanTree({\n hierarchicalSpans = [],\n onSpanClick,\n selectedSpanId,\n isLoading,\n fadedTypes,\n expandedSpanIds,\n setExpandedSpanIds,\n featuredSpanIds,\n revealSpanId,\n leadingSlot,\n renderTrailing,\n}: TraceSpanTreeProps) {\n if (isLoading) return <TraceSpanTreeLoading />;\n\n return (\n <>\n {leadingSlot}\n <SpanTypeLegend spans={hierarchicalSpans} />\n <div\n className={cn('grid content-start items-start gap-y-px overflow-hidden pb-1', {\n 'grid-cols-[minmax(0,1fr)]': !renderTrailing,\n 'grid-cols-[minmax(0,1fr)_auto]': !!renderTrailing,\n })}\n >\n <SpanRows\n spans={hierarchicalSpans}\n onSpanClick={onSpanClick}\n selectedSpanId={selectedSpanId}\n revealSpanId={revealSpanId}\n fadedTypes={fadedTypes}\n featuredSpanIds={featuredSpanIds}\n expandedSpanIds={expandedSpanIds}\n setExpandedSpanIds={setExpandedSpanIds}\n renderRow={ctx => <SpanTreeRow ctx={ctx} meta={durationMeta} trailing={renderTrailing} />}\n />\n </div>\n </>\n );\n}\n"],"names":["TraceSpanTreeSkeleton","jsx","Txt","formatDurationPrecise","jsxs","Fragment","SpanTypeLegend","cn","SpanRows","SpanTreeRow"],"mappings":";;;;;;;;;;;;;AA4BO,SAAS,oBAAA,GAAuB;AACrC,EAAA,sCAAQA,qEAAA,EAAA,EAAsB,CAAA;AAChC;AAEA,MAAM,YAAA,GAAe,CAAC,GAAA,qBACpBC,cAAA,CAACC,WAAI,EAAA,EAAG,MAAA,EAAO,OAAA,EAAQ,MAAA,EAAO,MAAK,MAAA,EAChC,QAAA,EAAAC,oCAAA,CAAsB,GAAA,CAAI,IAAA,CAAK,OAAO,CAAA,EACzC,CAAA;AAIK,SAAS,aAAA,CAAc;AAAA,EAC5B,oBAAoB,EAAC;AAAA,EACrB,WAAA;AAAA,EACA,cAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA;AAAA,EACA,kBAAA;AAAA,EACA,eAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,EAAuB;AACrB,EAAA,IAAI,SAAA,EAAW,uBAAOF,cAAA,CAAC,oBAAA,EAAA,EAAqB,CAAA;AAE5C,EAAA,uBACEG,eAAA,CAAAC,mBAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,WAAA;AAAA,oBACDJ,cAAA,CAACK,uDAAA,EAAA,EAAe,KAAA,EAAO,iBAAA,EAAmB,CAAA;AAAA,oBAC1CL,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAWM,YAAG,8DAAA,EAAgE;AAAA,UAC5E,6BAA6B,CAAC,cAAA;AAAA,UAC9B,gCAAA,EAAkC,CAAC,CAAC;AAAA,SACrC,CAAA;AAAA,QAED,QAAA,kBAAAN,cAAA;AAAA,UAACO,2CAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,iBAAA;AAAA,YACP,WAAA;AAAA,YACA,cAAA;AAAA,YACA,YAAA;AAAA,YACA,UAAA;AAAA,YACA,eAAA;AAAA,YACA,eAAA;AAAA,YACA,kBAAA;AAAA,YACA,SAAA,EAAW,yBAAOP,cAAA,CAACQ,iDAAA,EAAA,EAAY,KAAU,IAAA,EAAM,YAAA,EAAc,UAAU,cAAA,EAAgB;AAAA;AAAA;AACzF;AAAA;AACF,GAAA,EACF,CAAA;AAEJ;;;;;"}
|
|
@@ -3,15 +3,14 @@ import { SpanRows } from './span-rows.es.js';
|
|
|
3
3
|
import { SpanTreeRow } from './span-tree-row.es.js';
|
|
4
4
|
import { SpanTypeLegend } from './span-type-legend.es.js';
|
|
5
5
|
import { TraceSpanTreeSkeleton } from './trace-span-tree-skeleton.es.js';
|
|
6
|
+
import { T as Txt } from '../../../Txt-BP1SRHmL.js';
|
|
6
7
|
import { c as cn } from '../../../cn-65Adrsfj.js';
|
|
8
|
+
import { formatDurationPrecise } from '../../../utils/duration.es.js';
|
|
7
9
|
|
|
8
10
|
function TraceSpanTreeLoading() {
|
|
9
11
|
return /* @__PURE__ */ jsx(TraceSpanTreeSkeleton, {});
|
|
10
12
|
}
|
|
11
|
-
const durationMeta = (ctx) => /* @__PURE__ */
|
|
12
|
-
(ctx.span.latency / 1e3).toFixed(3),
|
|
13
|
-
" s"
|
|
14
|
-
] });
|
|
13
|
+
const durationMeta = (ctx) => /* @__PURE__ */ jsx(Txt, { as: "span", variant: "meta", font: "mono", children: formatDurationPrecise(ctx.span.latency) });
|
|
15
14
|
function TraceSpanTree({
|
|
16
15
|
hierarchicalSpans = [],
|
|
17
16
|
onSpanClick,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-span-tree.es.js","sources":["../../../../src/domains/traces/components/trace-span-tree.tsx"],"sourcesContent":["import type { Dispatch, ReactNode, SetStateAction } from 'react';\nimport type { UISpan } from '../types';\nimport type { SpanRowContext } from './span-rows';\nimport { SpanRows } from './span-rows';\nimport { SpanTreeRow } from './span-tree-row';\nimport { SpanTypeLegend } from './span-type-legend';\nimport { TraceSpanTreeSkeleton } from './trace-span-tree-skeleton';\nimport { cn } from '@/lib/utils';\n\nexport type TraceSpanTreeProps = {\n hierarchicalSpans: UISpan[];\n onSpanClick: (id: string) => void;\n selectedSpanId?: string;\n isLoading?: boolean;\n fadedTypes?: string[];\n expandedSpanIds?: string[];\n setExpandedSpanIds?: Dispatch<SetStateAction<string[]>>;\n featuredSpanIds?: string[];\n /** Row scrolled into view once it is mounted (ancestors auto-expand when the span is featured). */\n revealSpanId?: string;\n /** Rendered full-width above the span type legend row. */\n leadingSlot?: ReactNode;\n /** Optional end-of-row cell. By default rows have no trailing cell; the duration is shown under the span name. */\n renderTrailing?: (ctx: SpanRowContext) => ReactNode;\n};\n\nexport function TraceSpanTreeLoading() {\n return <TraceSpanTreeSkeleton />;\n}\n\nconst durationMeta = (ctx: SpanRowContext) =>
|
|
1
|
+
{"version":3,"file":"trace-span-tree.es.js","sources":["../../../../src/domains/traces/components/trace-span-tree.tsx"],"sourcesContent":["import type { Dispatch, ReactNode, SetStateAction } from 'react';\nimport type { UISpan } from '../types';\nimport type { SpanRowContext } from './span-rows';\nimport { SpanRows } from './span-rows';\nimport { SpanTreeRow } from './span-tree-row';\nimport { SpanTypeLegend } from './span-type-legend';\nimport { TraceSpanTreeSkeleton } from './trace-span-tree-skeleton';\nimport { Txt } from '@/ds/components/Txt/Txt';\nimport { cn } from '@/lib/utils';\nimport { formatDurationPrecise } from '@/utils/duration';\n\nexport type TraceSpanTreeProps = {\n hierarchicalSpans: UISpan[];\n onSpanClick: (id: string) => void;\n selectedSpanId?: string;\n isLoading?: boolean;\n fadedTypes?: string[];\n expandedSpanIds?: string[];\n setExpandedSpanIds?: Dispatch<SetStateAction<string[]>>;\n featuredSpanIds?: string[];\n /** Row scrolled into view once it is mounted (ancestors auto-expand when the span is featured). */\n revealSpanId?: string;\n /** Rendered full-width above the span type legend row. */\n leadingSlot?: ReactNode;\n /** Optional end-of-row cell. By default rows have no trailing cell; the duration is shown under the span name. */\n renderTrailing?: (ctx: SpanRowContext) => ReactNode;\n};\n\nexport function TraceSpanTreeLoading() {\n return <TraceSpanTreeSkeleton />;\n}\n\nconst durationMeta = (ctx: SpanRowContext) => (\n <Txt as=\"span\" variant=\"meta\" font=\"mono\">\n {formatDurationPrecise(ctx.span.latency)}\n </Txt>\n);\n\n/** Hierarchical span tree: expand toggle, name and duration per row, plus an optional trailing cell. */\nexport function TraceSpanTree({\n hierarchicalSpans = [],\n onSpanClick,\n selectedSpanId,\n isLoading,\n fadedTypes,\n expandedSpanIds,\n setExpandedSpanIds,\n featuredSpanIds,\n revealSpanId,\n leadingSlot,\n renderTrailing,\n}: TraceSpanTreeProps) {\n if (isLoading) return <TraceSpanTreeLoading />;\n\n return (\n <>\n {leadingSlot}\n <SpanTypeLegend spans={hierarchicalSpans} />\n <div\n className={cn('grid content-start items-start gap-y-px overflow-hidden pb-1', {\n 'grid-cols-[minmax(0,1fr)]': !renderTrailing,\n 'grid-cols-[minmax(0,1fr)_auto]': !!renderTrailing,\n })}\n >\n <SpanRows\n spans={hierarchicalSpans}\n onSpanClick={onSpanClick}\n selectedSpanId={selectedSpanId}\n revealSpanId={revealSpanId}\n fadedTypes={fadedTypes}\n featuredSpanIds={featuredSpanIds}\n expandedSpanIds={expandedSpanIds}\n setExpandedSpanIds={setExpandedSpanIds}\n renderRow={ctx => <SpanTreeRow ctx={ctx} meta={durationMeta} trailing={renderTrailing} />}\n />\n </div>\n </>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;AA4BO,SAAS,oBAAA,GAAuB;AACrC,EAAA,2BAAQ,qBAAA,EAAA,EAAsB,CAAA;AAChC;AAEA,MAAM,YAAA,GAAe,CAAC,GAAA,qBACpB,GAAA,CAAC,OAAI,EAAA,EAAG,MAAA,EAAO,OAAA,EAAQ,MAAA,EAAO,MAAK,MAAA,EAChC,QAAA,EAAA,qBAAA,CAAsB,GAAA,CAAI,IAAA,CAAK,OAAO,CAAA,EACzC,CAAA;AAIK,SAAS,aAAA,CAAc;AAAA,EAC5B,oBAAoB,EAAC;AAAA,EACrB,WAAA;AAAA,EACA,cAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA;AAAA,EACA,kBAAA;AAAA,EACA,eAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,EAAuB;AACrB,EAAA,IAAI,SAAA,EAAW,uBAAO,GAAA,CAAC,oBAAA,EAAA,EAAqB,CAAA;AAE5C,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,WAAA;AAAA,oBACD,GAAA,CAAC,cAAA,EAAA,EAAe,KAAA,EAAO,iBAAA,EAAmB,CAAA;AAAA,oBAC1C,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,GAAG,8DAAA,EAAgE;AAAA,UAC5E,6BAA6B,CAAC,cAAA;AAAA,UAC9B,gCAAA,EAAkC,CAAC,CAAC;AAAA,SACrC,CAAA;AAAA,QAED,QAAA,kBAAA,GAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,iBAAA;AAAA,YACP,WAAA;AAAA,YACA,cAAA;AAAA,YACA,YAAA;AAAA,YACA,UAAA;AAAA,YACA,eAAA;AAAA,YACA,eAAA;AAAA,YACA,kBAAA;AAAA,YACA,SAAA,EAAW,yBAAO,GAAA,CAAC,WAAA,EAAA,EAAY,KAAU,IAAA,EAAM,YAAA,EAAc,UAAU,cAAA,EAAgB;AAAA;AAAA;AACzF;AAAA;AACF,GAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -6,10 +6,13 @@ const jsxRuntime = require('react/jsx-runtime');
|
|
|
6
6
|
const lucideReact = require('lucide-react');
|
|
7
7
|
const domains_traces_utils_spanUtils = require('../utils/span-utils.cjs.js');
|
|
8
8
|
const domains_traces_components_traceStatusValue = require('./trace-status-value.cjs.js');
|
|
9
|
-
const
|
|
10
|
-
const
|
|
9
|
+
const dataPanel = require('../../../data-panel-C_BqhzeL.cjs');
|
|
10
|
+
const Txt = require('../../../Txt-DPmEpNbp.cjs');
|
|
11
11
|
const icons_AgentIcon = require('../../../icons/AgentIcon.cjs.js');
|
|
12
12
|
const icons_WorkflowIcon = require('../../../icons/WorkflowIcon.cjs.js');
|
|
13
|
+
const utils_cost = require('../../../utils/cost.cjs.js');
|
|
14
|
+
const utils_dateFormat = require('../../../utils/date-format.cjs.js');
|
|
15
|
+
const utils_duration = require('../../../utils/duration.cjs.js');
|
|
13
16
|
|
|
14
17
|
function formatEntityType(entityType) {
|
|
15
18
|
return entityType.split("_").map((word) => `${word.charAt(0).toUpperCase()}${word.slice(1)}`).join(" ");
|
|
@@ -22,10 +25,10 @@ function computeTraceStatus(span) {
|
|
|
22
25
|
function TraceSummaryDescription({ rootSpan, usage, entityHref, LinkComponent }) {
|
|
23
26
|
const startedAt = rootSpan.startedAt ? new Date(rootSpan.startedAt) : null;
|
|
24
27
|
const endedAt = rootSpan.endedAt ? new Date(rootSpan.endedAt) : null;
|
|
25
|
-
const duration = domains_traces_utils_spanUtils.
|
|
26
|
-
const exactDuration = domains_traces_utils_spanUtils.
|
|
27
|
-
const startedAtTimestamp =
|
|
28
|
-
const exactStartedAtTimestamp =
|
|
28
|
+
const duration = utils_duration.formatDuration(domains_traces_utils_spanUtils.getSpanDurationMs(startedAt, endedAt));
|
|
29
|
+
const exactDuration = utils_duration.formatDurationPrecise(domains_traces_utils_spanUtils.getSpanDurationMs(startedAt, endedAt));
|
|
30
|
+
const startedAtTimestamp = utils_dateFormat.formatDate(startedAt, "time");
|
|
31
|
+
const exactStartedAtTimestamp = utils_dateFormat.formatTimestampPrecise(startedAt);
|
|
29
32
|
const entityName = rootSpan.entityName || rootSpan.entityId;
|
|
30
33
|
const entityType = rootSpan.entityType;
|
|
31
34
|
const formattedEntityType = entityType ? formatEntityType(entityType) : "Entity";
|
|
@@ -43,11 +46,11 @@ function TraceSummaryDescription({ rootSpan, usage, entityHref, LinkComponent })
|
|
|
43
46
|
) : /* @__PURE__ */ jsxRuntime.jsx(dataPanel.DataPanel.Meta, { icon: /* @__PURE__ */ jsxRuntime.jsx(EntityIcon, {}), tooltip: formattedEntityType, children: entityName })),
|
|
44
47
|
/* @__PURE__ */ jsxRuntime.jsx(dataPanel.DataPanel.Meta, { tooltip: "Trace status", children: /* @__PURE__ */ jsxRuntime.jsx(domains_traces_components_traceStatusValue.TraceStatusValue, { status: computeTraceStatus(rootSpan) }) }),
|
|
45
48
|
startedAtTimestamp && exactStartedAtTimestamp && /* @__PURE__ */ jsxRuntime.jsx(dataPanel.DataPanel.Meta, { icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CalendarClockIcon, {}), tooltip: `Started at ${exactStartedAtTimestamp}`, children: startedAtTimestamp }),
|
|
46
|
-
duration && exactDuration && /* @__PURE__ */ jsxRuntime.jsx(dataPanel.DataPanel.Meta, { icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.TimerIcon, {}), tooltip: `Duration ${exactDuration}`, children: duration }),
|
|
49
|
+
duration && exactDuration && /* @__PURE__ */ jsxRuntime.jsx(dataPanel.DataPanel.Meta, { icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.TimerIcon, {}), tooltip: `Duration ${exactDuration}`, children: /* @__PURE__ */ jsxRuntime.jsx(Txt.Txt, { as: "span", variant: "label", font: "mono", children: duration }) }),
|
|
47
50
|
usage && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
48
|
-
/* @__PURE__ */ jsxRuntime.jsx(dataPanel.DataPanel.Meta, { icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowDownToLineIcon, {}), tooltip: "Input tokens", children: usage.inputTokens === void 0 ? "—" :
|
|
49
|
-
/* @__PURE__ */ jsxRuntime.jsx(dataPanel.DataPanel.Meta, { icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowUpFromLineIcon, {}), tooltip: "Output tokens", children: usage.outputTokens === void 0 ? "—" :
|
|
50
|
-
/* @__PURE__ */ jsxRuntime.jsx(dataPanel.DataPanel.Meta, { icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleDollarSignIcon, {}), tooltip: "Estimated cost", children: usage.estimatedCost === void 0 ? "—" :
|
|
51
|
+
/* @__PURE__ */ jsxRuntime.jsx(dataPanel.DataPanel.Meta, { icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowDownToLineIcon, {}), tooltip: "Input tokens", children: usage.inputTokens === void 0 ? "—" : utils_cost.formatCompactNumber(usage.inputTokens) }),
|
|
52
|
+
/* @__PURE__ */ jsxRuntime.jsx(dataPanel.DataPanel.Meta, { icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowUpFromLineIcon, {}), tooltip: "Output tokens", children: usage.outputTokens === void 0 ? "—" : utils_cost.formatCompactNumber(usage.outputTokens) }),
|
|
53
|
+
/* @__PURE__ */ jsxRuntime.jsx(dataPanel.DataPanel.Meta, { icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleDollarSignIcon, {}), tooltip: "Estimated cost", children: usage.estimatedCost === void 0 ? "—" : utils_cost.formatCost(usage.estimatedCost, usage.costUnit) })
|
|
51
54
|
] })
|
|
52
55
|
] });
|
|
53
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-summary-description.cjs.js","sources":["../../../../src/domains/traces/components/trace-summary-description.tsx"],"sourcesContent":["import {\n ArrowDownToLineIcon,\n ArrowUpFromLineIcon,\n CalendarClockIcon,\n CircleDollarSignIcon,\n TimerIcon,\n} from 'lucide-react';\nimport type { TraceUsageSummary } from '../trace-list-columns';\nimport {
|
|
1
|
+
{"version":3,"file":"trace-summary-description.cjs.js","sources":["../../../../src/domains/traces/components/trace-summary-description.tsx"],"sourcesContent":["import {\n ArrowDownToLineIcon,\n ArrowUpFromLineIcon,\n CalendarClockIcon,\n CircleDollarSignIcon,\n TimerIcon,\n} from 'lucide-react';\nimport type { TraceUsageSummary } from '../trace-list-columns';\nimport { getSpanDurationMs } from '../utils/span-utils';\nimport { TraceStatusValue } from './trace-status-value';\nimport type { TraceStatusValueStatus } from './trace-status-value';\nimport { DataPanel } from '@/ds/components/DataPanel';\nimport { Txt } from '@/ds/components/Txt/Txt';\nimport { AgentIcon, WorkflowIcon } from '@/ds/icons';\nimport type { LinkComponent } from '@/ds/types/link-component';\nimport { formatCompactNumber, formatCost } from '@/lib/cost';\nimport { formatDate, formatTimestampPrecise } from '@/utils/date-format';\nimport { formatDuration, formatDurationPrecise } from '@/utils/duration';\n\nfunction formatEntityType(entityType: string): string {\n return entityType\n .split('_')\n .map(word => `${word.charAt(0).toUpperCase()}${word.slice(1)}`)\n .join(' ');\n}\n\nfunction computeTraceStatus(span: { error?: unknown; endedAt?: Date | string | null }): TraceStatusValueStatus {\n if (span.error != null) return 'error';\n if (span.endedAt == null) return 'running';\n return 'success';\n}\n\n/** Lightweight root-span fields available from `useTraceLightSpans`. */\ntype RootSpanSummary = {\n entityId?: string | null;\n entityName?: string | null;\n entityType?: string | null;\n startedAt: Date | string;\n endedAt?: Date | string | null;\n error?: unknown;\n};\n\nexport interface TraceSummaryDescriptionProps {\n rootSpan: RootSpanSummary;\n usage?: TraceUsageSummary;\n /** When provided (with `LinkComponent`), the entity name links to the entity's page. */\n entityHref?: string;\n LinkComponent?: LinkComponent;\n}\n\n/** Compact trace metadata shown under the trace side-panel heading. */\nexport function TraceSummaryDescription({ rootSpan, usage, entityHref, LinkComponent }: TraceSummaryDescriptionProps) {\n const startedAt = rootSpan.startedAt ? new Date(rootSpan.startedAt) : null;\n const endedAt = rootSpan.endedAt ? new Date(rootSpan.endedAt) : null;\n const duration = formatDuration(getSpanDurationMs(startedAt, endedAt));\n const exactDuration = formatDurationPrecise(getSpanDurationMs(startedAt, endedAt));\n const startedAtTimestamp = formatDate(startedAt, 'time');\n const exactStartedAtTimestamp = formatTimestampPrecise(startedAt);\n\n const entityName = rootSpan.entityName || rootSpan.entityId;\n const entityType = rootSpan.entityType;\n const formattedEntityType = entityType ? formatEntityType(entityType) : 'Entity';\n const EntityIcon = entityType?.includes('workflow') ? WorkflowIcon : AgentIcon;\n\n return (\n <DataPanel.Metadata>\n {entityName &&\n (entityHref ? (\n <DataPanel.Meta\n as={LinkComponent ?? 'a'}\n href={entityHref}\n icon={<EntityIcon />}\n tooltip={`See ${formattedEntityType.toLowerCase()}`}\n >\n {entityName}\n </DataPanel.Meta>\n ) : (\n <DataPanel.Meta icon={<EntityIcon />} tooltip={formattedEntityType}>\n {entityName}\n </DataPanel.Meta>\n ))}\n <DataPanel.Meta tooltip=\"Trace status\">\n <TraceStatusValue status={computeTraceStatus(rootSpan)} />\n </DataPanel.Meta>\n {startedAtTimestamp && exactStartedAtTimestamp && (\n <DataPanel.Meta icon={<CalendarClockIcon />} tooltip={`Started at ${exactStartedAtTimestamp}`}>\n {startedAtTimestamp}\n </DataPanel.Meta>\n )}\n {duration && exactDuration && (\n <DataPanel.Meta icon={<TimerIcon />} tooltip={`Duration ${exactDuration}`}>\n <Txt as=\"span\" variant=\"label\" font=\"mono\">\n {duration}\n </Txt>\n </DataPanel.Meta>\n )}\n {usage && (\n <>\n <DataPanel.Meta icon={<ArrowDownToLineIcon />} tooltip=\"Input tokens\">\n {usage.inputTokens === undefined ? '—' : formatCompactNumber(usage.inputTokens)}\n </DataPanel.Meta>\n <DataPanel.Meta icon={<ArrowUpFromLineIcon />} tooltip=\"Output tokens\">\n {usage.outputTokens === undefined ? '—' : formatCompactNumber(usage.outputTokens)}\n </DataPanel.Meta>\n <DataPanel.Meta icon={<CircleDollarSignIcon />} tooltip=\"Estimated cost\">\n {usage.estimatedCost === undefined ? '—' : formatCost(usage.estimatedCost, usage.costUnit)}\n </DataPanel.Meta>\n </>\n )}\n </DataPanel.Metadata>\n );\n}\n"],"names":["formatDuration","getSpanDurationMs","formatDurationPrecise","formatDate","formatTimestampPrecise","WorkflowIcon","AgentIcon","jsxs","DataPanel","jsx","TraceStatusValue","CalendarClockIcon","TimerIcon","Txt","Fragment","ArrowDownToLineIcon","formatCompactNumber","ArrowUpFromLineIcon","CircleDollarSignIcon","formatCost"],"mappings":"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"}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import { CalendarClockIcon, TimerIcon, ArrowDownToLineIcon, ArrowUpFromLineIcon, CircleDollarSignIcon } from 'lucide-react';
|
|
3
|
-
import {
|
|
3
|
+
import { getSpanDurationMs } from '../utils/span-utils.es.js';
|
|
4
4
|
import { TraceStatusValue } from './trace-status-value.es.js';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
5
|
+
import { D as DataPanel } from '../../../data-panel-BWgExbHs.js';
|
|
6
|
+
import { T as Txt } from '../../../Txt-BP1SRHmL.js';
|
|
7
7
|
import { AgentIcon } from '../../../icons/AgentIcon.es.js';
|
|
8
8
|
import { WorkflowIcon } from '../../../icons/WorkflowIcon.es.js';
|
|
9
|
+
import { formatCompactNumber, formatCost } from '../../../utils/cost.es.js';
|
|
10
|
+
import { formatDate, formatTimestampPrecise } from '../../../utils/date-format.es.js';
|
|
11
|
+
import { formatDuration, formatDurationPrecise } from '../../../utils/duration.es.js';
|
|
9
12
|
|
|
10
13
|
function formatEntityType(entityType) {
|
|
11
14
|
return entityType.split("_").map((word) => `${word.charAt(0).toUpperCase()}${word.slice(1)}`).join(" ");
|
|
@@ -18,10 +21,10 @@ function computeTraceStatus(span) {
|
|
|
18
21
|
function TraceSummaryDescription({ rootSpan, usage, entityHref, LinkComponent }) {
|
|
19
22
|
const startedAt = rootSpan.startedAt ? new Date(rootSpan.startedAt) : null;
|
|
20
23
|
const endedAt = rootSpan.endedAt ? new Date(rootSpan.endedAt) : null;
|
|
21
|
-
const duration =
|
|
22
|
-
const exactDuration =
|
|
23
|
-
const startedAtTimestamp =
|
|
24
|
-
const exactStartedAtTimestamp =
|
|
24
|
+
const duration = formatDuration(getSpanDurationMs(startedAt, endedAt));
|
|
25
|
+
const exactDuration = formatDurationPrecise(getSpanDurationMs(startedAt, endedAt));
|
|
26
|
+
const startedAtTimestamp = formatDate(startedAt, "time");
|
|
27
|
+
const exactStartedAtTimestamp = formatTimestampPrecise(startedAt);
|
|
25
28
|
const entityName = rootSpan.entityName || rootSpan.entityId;
|
|
26
29
|
const entityType = rootSpan.entityType;
|
|
27
30
|
const formattedEntityType = entityType ? formatEntityType(entityType) : "Entity";
|
|
@@ -39,10 +42,10 @@ function TraceSummaryDescription({ rootSpan, usage, entityHref, LinkComponent })
|
|
|
39
42
|
) : /* @__PURE__ */ jsx(DataPanel.Meta, { icon: /* @__PURE__ */ jsx(EntityIcon, {}), tooltip: formattedEntityType, children: entityName })),
|
|
40
43
|
/* @__PURE__ */ jsx(DataPanel.Meta, { tooltip: "Trace status", children: /* @__PURE__ */ jsx(TraceStatusValue, { status: computeTraceStatus(rootSpan) }) }),
|
|
41
44
|
startedAtTimestamp && exactStartedAtTimestamp && /* @__PURE__ */ jsx(DataPanel.Meta, { icon: /* @__PURE__ */ jsx(CalendarClockIcon, {}), tooltip: `Started at ${exactStartedAtTimestamp}`, children: startedAtTimestamp }),
|
|
42
|
-
duration && exactDuration && /* @__PURE__ */ jsx(DataPanel.Meta, { icon: /* @__PURE__ */ jsx(TimerIcon, {}), tooltip: `Duration ${exactDuration}`, children: duration }),
|
|
45
|
+
duration && exactDuration && /* @__PURE__ */ jsx(DataPanel.Meta, { icon: /* @__PURE__ */ jsx(TimerIcon, {}), tooltip: `Duration ${exactDuration}`, children: /* @__PURE__ */ jsx(Txt, { as: "span", variant: "label", font: "mono", children: duration }) }),
|
|
43
46
|
usage && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
44
|
-
/* @__PURE__ */ jsx(DataPanel.Meta, { icon: /* @__PURE__ */ jsx(ArrowDownToLineIcon, {}), tooltip: "Input tokens", children: usage.inputTokens === void 0 ? "—" :
|
|
45
|
-
/* @__PURE__ */ jsx(DataPanel.Meta, { icon: /* @__PURE__ */ jsx(ArrowUpFromLineIcon, {}), tooltip: "Output tokens", children: usage.outputTokens === void 0 ? "—" :
|
|
47
|
+
/* @__PURE__ */ jsx(DataPanel.Meta, { icon: /* @__PURE__ */ jsx(ArrowDownToLineIcon, {}), tooltip: "Input tokens", children: usage.inputTokens === void 0 ? "—" : formatCompactNumber(usage.inputTokens) }),
|
|
48
|
+
/* @__PURE__ */ jsx(DataPanel.Meta, { icon: /* @__PURE__ */ jsx(ArrowUpFromLineIcon, {}), tooltip: "Output tokens", children: usage.outputTokens === void 0 ? "—" : formatCompactNumber(usage.outputTokens) }),
|
|
46
49
|
/* @__PURE__ */ jsx(DataPanel.Meta, { icon: /* @__PURE__ */ jsx(CircleDollarSignIcon, {}), tooltip: "Estimated cost", children: usage.estimatedCost === void 0 ? "—" : formatCost(usage.estimatedCost, usage.costUnit) })
|
|
47
50
|
] })
|
|
48
51
|
] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-summary-description.es.js","sources":["../../../../src/domains/traces/components/trace-summary-description.tsx"],"sourcesContent":["import {\n ArrowDownToLineIcon,\n ArrowUpFromLineIcon,\n CalendarClockIcon,\n CircleDollarSignIcon,\n TimerIcon,\n} from 'lucide-react';\nimport type { TraceUsageSummary } from '../trace-list-columns';\nimport {
|
|
1
|
+
{"version":3,"file":"trace-summary-description.es.js","sources":["../../../../src/domains/traces/components/trace-summary-description.tsx"],"sourcesContent":["import {\n ArrowDownToLineIcon,\n ArrowUpFromLineIcon,\n CalendarClockIcon,\n CircleDollarSignIcon,\n TimerIcon,\n} from 'lucide-react';\nimport type { TraceUsageSummary } from '../trace-list-columns';\nimport { getSpanDurationMs } from '../utils/span-utils';\nimport { TraceStatusValue } from './trace-status-value';\nimport type { TraceStatusValueStatus } from './trace-status-value';\nimport { DataPanel } from '@/ds/components/DataPanel';\nimport { Txt } from '@/ds/components/Txt/Txt';\nimport { AgentIcon, WorkflowIcon } from '@/ds/icons';\nimport type { LinkComponent } from '@/ds/types/link-component';\nimport { formatCompactNumber, formatCost } from '@/lib/cost';\nimport { formatDate, formatTimestampPrecise } from '@/utils/date-format';\nimport { formatDuration, formatDurationPrecise } from '@/utils/duration';\n\nfunction formatEntityType(entityType: string): string {\n return entityType\n .split('_')\n .map(word => `${word.charAt(0).toUpperCase()}${word.slice(1)}`)\n .join(' ');\n}\n\nfunction computeTraceStatus(span: { error?: unknown; endedAt?: Date | string | null }): TraceStatusValueStatus {\n if (span.error != null) return 'error';\n if (span.endedAt == null) return 'running';\n return 'success';\n}\n\n/** Lightweight root-span fields available from `useTraceLightSpans`. */\ntype RootSpanSummary = {\n entityId?: string | null;\n entityName?: string | null;\n entityType?: string | null;\n startedAt: Date | string;\n endedAt?: Date | string | null;\n error?: unknown;\n};\n\nexport interface TraceSummaryDescriptionProps {\n rootSpan: RootSpanSummary;\n usage?: TraceUsageSummary;\n /** When provided (with `LinkComponent`), the entity name links to the entity's page. */\n entityHref?: string;\n LinkComponent?: LinkComponent;\n}\n\n/** Compact trace metadata shown under the trace side-panel heading. */\nexport function TraceSummaryDescription({ rootSpan, usage, entityHref, LinkComponent }: TraceSummaryDescriptionProps) {\n const startedAt = rootSpan.startedAt ? new Date(rootSpan.startedAt) : null;\n const endedAt = rootSpan.endedAt ? new Date(rootSpan.endedAt) : null;\n const duration = formatDuration(getSpanDurationMs(startedAt, endedAt));\n const exactDuration = formatDurationPrecise(getSpanDurationMs(startedAt, endedAt));\n const startedAtTimestamp = formatDate(startedAt, 'time');\n const exactStartedAtTimestamp = formatTimestampPrecise(startedAt);\n\n const entityName = rootSpan.entityName || rootSpan.entityId;\n const entityType = rootSpan.entityType;\n const formattedEntityType = entityType ? formatEntityType(entityType) : 'Entity';\n const EntityIcon = entityType?.includes('workflow') ? WorkflowIcon : AgentIcon;\n\n return (\n <DataPanel.Metadata>\n {entityName &&\n (entityHref ? (\n <DataPanel.Meta\n as={LinkComponent ?? 'a'}\n href={entityHref}\n icon={<EntityIcon />}\n tooltip={`See ${formattedEntityType.toLowerCase()}`}\n >\n {entityName}\n </DataPanel.Meta>\n ) : (\n <DataPanel.Meta icon={<EntityIcon />} tooltip={formattedEntityType}>\n {entityName}\n </DataPanel.Meta>\n ))}\n <DataPanel.Meta tooltip=\"Trace status\">\n <TraceStatusValue status={computeTraceStatus(rootSpan)} />\n </DataPanel.Meta>\n {startedAtTimestamp && exactStartedAtTimestamp && (\n <DataPanel.Meta icon={<CalendarClockIcon />} tooltip={`Started at ${exactStartedAtTimestamp}`}>\n {startedAtTimestamp}\n </DataPanel.Meta>\n )}\n {duration && exactDuration && (\n <DataPanel.Meta icon={<TimerIcon />} tooltip={`Duration ${exactDuration}`}>\n <Txt as=\"span\" variant=\"label\" font=\"mono\">\n {duration}\n </Txt>\n </DataPanel.Meta>\n )}\n {usage && (\n <>\n <DataPanel.Meta icon={<ArrowDownToLineIcon />} tooltip=\"Input tokens\">\n {usage.inputTokens === undefined ? '—' : formatCompactNumber(usage.inputTokens)}\n </DataPanel.Meta>\n <DataPanel.Meta icon={<ArrowUpFromLineIcon />} tooltip=\"Output tokens\">\n {usage.outputTokens === undefined ? '—' : formatCompactNumber(usage.outputTokens)}\n </DataPanel.Meta>\n <DataPanel.Meta icon={<CircleDollarSignIcon />} tooltip=\"Estimated cost\">\n {usage.estimatedCost === undefined ? '—' : formatCost(usage.estimatedCost, usage.costUnit)}\n </DataPanel.Meta>\n </>\n )}\n </DataPanel.Metadata>\n );\n}\n"],"names":[],"mappings":"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"}
|