@mastra/playground-ui 56.0.0 → 57.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{EmptyState-CdRjFB06.cjs → EmptyState-0MgNiP40.cjs} +11 -5
- package/dist/EmptyState-0MgNiP40.cjs.map +1 -0
- package/dist/{EmptyState-UWXhBp5U.js → EmptyState-CiZVWvpH.js} +11 -5
- package/dist/EmptyState-CiZVWvpH.js.map +1 -0
- package/dist/ErrorState-C7-4A-rB.cjs +21 -0
- package/dist/ErrorState-C7-4A-rB.cjs.map +1 -0
- package/dist/ErrorState-l5gg5Nzw.js +19 -0
- package/dist/ErrorState-l5gg5Nzw.js.map +1 -0
- package/dist/Header-BVnFQlzE.js +31 -0
- package/dist/Header-BVnFQlzE.js.map +1 -0
- package/dist/Header-CGjhJ0nQ.cjs +36 -0
- package/dist/Header-CGjhJ0nQ.cjs.map +1 -0
- package/dist/{PermissionDenied-Dz5qXpQj.cjs → PermissionDenied-CwLIzjpC.cjs} +11 -6
- package/dist/PermissionDenied-CwLIzjpC.cjs.map +1 -0
- package/dist/{PermissionDenied-B6TSGolC.js → PermissionDenied-DPM04x0a.js} +11 -6
- package/dist/PermissionDenied-DPM04x0a.js.map +1 -0
- package/dist/{SessionExpired-CF0BGNo_.cjs → SessionExpired-07Lz91i3.cjs} +4 -5
- package/dist/SessionExpired-07Lz91i3.cjs.map +1 -0
- package/dist/{SessionExpired-Bq5LcsDu.js → SessionExpired-CnJ8zr5Y.js} +4 -5
- package/dist/SessionExpired-CnJ8zr5Y.js.map +1 -0
- package/dist/ask-user-B_O3GEjY.cjs +216 -0
- package/dist/ask-user-B_O3GEjY.cjs.map +1 -0
- package/dist/ask-user-gT9rODOe.js +206 -0
- package/dist/ask-user-gT9rODOe.js.map +1 -0
- package/dist/{combobox-BWM3VH-n.cjs → combobox-BTZyTiyL.cjs} +3 -4
- package/dist/{combobox-BWM3VH-n.cjs.map → combobox-BTZyTiyL.cjs.map} +1 -1
- package/dist/{combobox-D7xJFZuO.js → combobox-B_gv8nUN.js} +2 -3
- package/dist/{combobox-D7xJFZuO.js.map → combobox-B_gv8nUN.js.map} +1 -1
- package/dist/components/ActionRow.cjs.js +38 -0
- package/dist/components/ActionRow.cjs.js.map +1 -0
- package/dist/components/ActionRow.d.ts +2 -0
- package/dist/components/ActionRow.es.js +34 -0
- package/dist/components/ActionRow.es.js.map +1 -0
- package/dist/components/Combobox.cjs.js +1 -1
- package/dist/components/Combobox.es.js +1 -1
- package/dist/components/Comment.cjs.js +2 -3
- package/dist/components/Comment.cjs.js.map +1 -1
- package/dist/components/Comment.es.js +1 -2
- package/dist/components/Comment.es.js.map +1 -1
- package/dist/components/DataCodeSection.cjs.js +1 -1
- package/dist/components/DataCodeSection.es.js +1 -1
- package/dist/components/DataDetailsPanel.cjs.js +2 -2
- package/dist/components/DataDetailsPanel.cjs.js.map +1 -1
- package/dist/components/DataDetailsPanel.es.js +2 -2
- package/dist/components/DataDetailsPanel.es.js.map +1 -1
- package/dist/components/DataPanel.cjs.js +1 -1
- package/dist/components/DataPanel.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/EmptyState.cjs.js +1 -1
- package/dist/components/EmptyState.es.js +1 -1
- package/dist/components/EnvironmentVariablesEditor.cjs.js +7 -8
- package/dist/components/EnvironmentVariablesEditor.cjs.js.map +1 -1
- package/dist/components/EnvironmentVariablesEditor.es.js +1 -2
- package/dist/components/EnvironmentVariablesEditor.es.js.map +1 -1
- package/dist/components/ErrorState.cjs.js +1 -1
- package/dist/components/ErrorState.es.js +1 -1
- package/dist/components/FilterBar.cjs.js +490 -38
- package/dist/components/FilterBar.cjs.js.map +1 -1
- package/dist/components/FilterBar.es.js +490 -42
- package/dist/components/FilterBar.es.js.map +1 -1
- package/dist/components/FormFieldBlocks.cjs.js +11 -12
- package/dist/components/FormFieldBlocks.cjs.js.map +1 -1
- package/dist/components/FormFieldBlocks.es.js +4 -5
- package/dist/components/FormFieldBlocks.es.js.map +1 -1
- package/dist/components/Header.cjs.js +6 -31
- package/dist/components/Header.cjs.js.map +1 -1
- package/dist/components/Header.es.js +1 -30
- package/dist/components/Header.es.js.map +1 -1
- package/dist/components/IntegrationDialog.cjs.js +1 -1
- package/dist/components/IntegrationDialog.es.js +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 -0
- package/dist/components/LogsDataList.cjs.js.map +1 -1
- package/dist/components/LogsDataList.es.js +2 -0
- package/dist/components/LogsDataList.es.js.map +1 -1
- package/dist/components/Message.cjs.js +1 -1
- package/dist/components/Message.es.js +2 -2
- package/dist/components/MetricsCard.cjs.js +1 -1
- package/dist/components/MetricsCard.es.js +1 -1
- package/dist/components/MetricsKpiCard.cjs.js +1 -1
- package/dist/components/MetricsKpiCard.es.js +1 -1
- package/dist/components/PageLayout.cjs.js +30 -8
- package/dist/components/PageLayout.cjs.js.map +1 -1
- package/dist/components/PageLayout.es.js +32 -3
- package/dist/components/PageLayout.es.js.map +1 -1
- package/dist/components/PermissionDenied.cjs.js +1 -1
- package/dist/components/PermissionDenied.es.js +1 -1
- package/dist/components/PropertyFilter.cjs.js +2 -2
- package/dist/components/PropertyFilter.es.js +3 -3
- package/dist/components/RadioGroup.cjs.js +3 -56
- package/dist/components/RadioGroup.cjs.js.map +1 -1
- package/dist/components/RadioGroup.es.js +1 -39
- package/dist/components/RadioGroup.es.js.map +1 -1
- package/dist/components/SessionExpired.cjs.js +1 -1
- package/dist/components/SessionExpired.es.js +1 -1
- package/dist/components/SideDialog.cjs.js +10 -2
- package/dist/components/SideDialog.cjs.js.map +1 -1
- package/dist/components/SideDialog.es.js +10 -2
- package/dist/components/SideDialog.es.js.map +1 -1
- package/dist/components/Spinner.cjs.js +1 -1
- package/dist/components/Spinner.es.js +1 -1
- package/dist/components/Steps.cjs.js +1 -1
- package/dist/components/Steps.es.js +1 -1
- package/dist/components/Workflow.cjs.js +6 -6
- package/dist/components/Workflow.cjs.js.map +1 -1
- package/dist/components/Workflow.es.js +6 -6
- package/dist/components/Workflow.es.js.map +1 -1
- package/dist/components/ai/ask-user.cjs.js +4 -3
- package/dist/components/ai/ask-user.cjs.js.map +1 -1
- package/dist/components/ai/ask-user.es.js +1 -1
- package/dist/components/ai/tool-call.cjs.js +1 -1
- package/dist/components/ai/tool-call.es.js +2 -2
- package/dist/{data-code-section-qujvEc6j.cjs → data-code-section-Dpd2hzmU.cjs} +4 -4
- package/dist/{data-code-section-qujvEc6j.cjs.map → data-code-section-Dpd2hzmU.cjs.map} +1 -1
- package/dist/{data-code-section-DKz9Okaz.js → data-code-section-O-DRRO6N.js} +4 -4
- package/dist/{data-code-section-DKz9Okaz.js.map → data-code-section-O-DRRO6N.js.map} +1 -1
- package/dist/{data-panel-CWjgS1Gh.js → data-panel-CDJMMCvz.js} +3 -3
- package/dist/{data-panel-CWjgS1Gh.js.map → data-panel-CDJMMCvz.js.map} +1 -1
- package/dist/{data-panel-CWZJKBeW.cjs → data-panel-DNPcL38C.cjs} +3 -3
- package/dist/{data-panel-CWZJKBeW.cjs.map → data-panel-DNPcL38C.cjs.map} +1 -1
- package/dist/{date-time-range-picker-BcjLbkGu.js → date-time-range-picker-B-C-PPI4.js} +2 -3
- package/dist/{date-time-range-picker-BcjLbkGu.js.map → date-time-range-picker-B-C-PPI4.js.map} +1 -1
- package/dist/{date-time-range-picker-C6hjZswK.cjs → date-time-range-picker-D_mHYCx_.cjs} +3 -4
- package/dist/{date-time-range-picker-C6hjZswK.cjs.map → date-time-range-picker-D_mHYCx_.cjs.map} +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/loading-badge.cjs.js +1 -1
- package/dist/domains/chat/components/loading-badge.es.js +1 -1
- package/dist/domains/chat/messages/reasoning.cjs.js +1 -1
- package/dist/domains/chat/messages/reasoning.cjs.js.map +1 -1
- package/dist/domains/chat/messages/reasoning.es.js +1 -1
- package/dist/domains/chat/messages/reasoning.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +2 -2
- package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/ask-user-badge.es.js +2 -2
- package/dist/domains/chat/tools/badges/ask-user-badge.es.js.map +1 -1
- package/dist/domains/logs/components/logs-error-content.cjs.js +4 -7
- package/dist/domains/logs/components/logs-error-content.cjs.js.map +1 -1
- package/dist/domains/logs/components/logs-error-content.es.js +4 -7
- package/dist/domains/logs/components/logs-error-content.es.js.map +1 -1
- package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
- package/dist/domains/logs/components/logs-toolbar.cjs.js.map +1 -1
- package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
- package/dist/domains/logs/components/logs-toolbar.es.js.map +1 -1
- package/dist/domains/logs/components/no-logs-info.cjs.js +5 -5
- package/dist/domains/logs/components/no-logs-info.cjs.js.map +1 -1
- package/dist/domains/logs/components/no-logs-info.es.js +6 -6
- package/dist/domains/logs/components/no-logs-info.es.js.map +1 -1
- package/dist/domains/memory/components/flame-graph.cjs.js +6 -6
- package/dist/domains/memory/components/flame-graph.cjs.js.map +1 -1
- package/dist/domains/memory/components/flame-graph.es.js +6 -6
- package/dist/domains/memory/components/flame-graph.es.js.map +1 -1
- package/dist/domains/memory/components/observation-detail-view.cjs.js +10 -11
- package/dist/domains/memory/components/observation-detail-view.cjs.js.map +1 -1
- package/dist/domains/memory/components/observation-detail-view.es.js +10 -11
- package/dist/domains/memory/components/observation-detail-view.es.js.map +1 -1
- package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
- package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
- package/dist/domains/metrics/components/kpi-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/kpi-card-view.es.js +1 -1
- package/dist/domains/metrics/components/latency-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/latency-card-view.es.js +1 -1
- package/dist/domains/metrics/components/memory-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/memory-card-view.es.js +1 -1
- package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/model-usage-cost-card-view.es.js +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 +1 -1
- package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js +1 -1
- package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js +1 -1
- package/dist/domains/metrics/components/traces-volume-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/traces-volume-card-view.es.js +1 -1
- package/dist/domains/traces/components/no-traces-info.cjs.js +2 -3
- package/dist/domains/traces/components/no-traces-info.cjs.js.map +1 -1
- package/dist/domains/traces/components/no-traces-info.es.js +2 -3
- 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 +1 -1
- package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +2 -2
- 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-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-summary-description.cjs.js +1 -1
- package/dist/domains/traces/components/span-summary-description.es.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +1 -1
- package/dist/domains/traces/components/trace-columns-menu.cjs.js +4 -4
- package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-columns-menu.es.js +2 -2
- 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-summary-description.cjs.js +1 -1
- package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
- package/dist/domains/traces/components/trace-time-range-chip.cjs.js +2 -2
- package/dist/domains/traces/components/trace-time-range-chip.es.js +2 -2
- package/dist/domains/traces/components/traces-error-content.cjs.js +3 -3
- package/dist/domains/traces/components/traces-error-content.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-error-content.es.js +3 -3
- package/dist/domains/traces/components/traces-error-content.es.js.map +1 -1
- package/dist/domains/traces/components/traces-page-skeleton.cjs.js +2 -0
- package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-page-skeleton.es.js +2 -0
- package/dist/domains/traces/components/traces-page-skeleton.es.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-url-state.cjs.js +4 -2
- package/dist/domains/traces/hooks/use-trace-url-state.cjs.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-url-state.es.js +5 -3
- package/dist/domains/traces/hooks/use-trace-url-state.es.js.map +1 -1
- package/dist/domains/traces/trace-filters.cjs.js +92 -11
- package/dist/domains/traces/trace-filters.cjs.js.map +1 -1
- package/dist/domains/traces/trace-filters.es.js +87 -13
- package/dist/domains/traces/trace-filters.es.js.map +1 -1
- package/dist/domains/traces/trace-query-filters.cjs.js +76 -45
- package/dist/domains/traces/trace-query-filters.cjs.js.map +1 -1
- package/dist/domains/traces/trace-query-filters.es.js +76 -46
- package/dist/domains/traces/trace-query-filters.es.js.map +1 -1
- package/dist/domains/traces.cjs.js +7 -0
- package/dist/domains/traces.cjs.js.map +1 -1
- package/dist/domains/traces.es.js +2 -2
- package/dist/ee/signals/components/entity-index-list.cjs.js +2 -0
- package/dist/ee/signals/components/entity-index-list.cjs.js.map +1 -1
- package/dist/ee/signals/components/entity-index-list.es.js +2 -0
- package/dist/ee/signals/components/entity-index-list.es.js.map +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-detail.cjs.js +5 -7
- package/dist/ee/signals/components/trace-intelligence-entity-detail.cjs.js.map +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-detail.es.js +5 -7
- package/dist/ee/signals/components/trace-intelligence-entity-detail.es.js.map +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +11 -13
- package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js.map +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +12 -14
- package/dist/ee/signals/components/trace-intelligence-entity-index.es.js.map +1 -1
- package/dist/ee/signals/sankey-signals.cjs.js +2 -2
- package/dist/ee/signals/sankey-signals.cjs.js.map +1 -1
- package/dist/ee/signals/sankey-signals.es.js +2 -2
- package/dist/ee/signals/sankey-signals.es.js.map +1 -1
- package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +10 -11
- package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js.map +1 -1
- package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +3 -4
- package/dist/ee/signals/settings/signal-definition-form-dialog.es.js.map +1 -1
- package/dist/ee/topics/components/topics-layout.cjs.js +1 -1
- package/dist/ee/topics/components/topics-layout.cjs.js.map +1 -1
- package/dist/ee/topics/components/topics-layout.es.js +1 -1
- package/dist/ee/topics/components/topics-layout.es.js.map +1 -1
- package/dist/{field-block-DWkbNcsV.js → field-error-id-BLxISyNV.js} +4 -2
- package/dist/field-error-id-BLxISyNV.js.map +1 -0
- package/dist/{field-block-Dy1IaWbv.cjs → field-error-id-CXi0XkjZ.cjs} +4 -1
- package/dist/field-error-id-CXi0XkjZ.cjs.map +1 -0
- package/dist/{filter-bar-chip-BxI0NgEz.cjs → filter-bar-chip-D-IRgccJ.cjs} +296 -65
- package/dist/filter-bar-chip-D-IRgccJ.cjs.map +1 -0
- package/dist/{filter-bar-chip-C-JxWUU8.js → filter-bar-chip-luoMVy8-.js} +293 -67
- package/dist/filter-bar-chip-luoMVy8-.js.map +1 -0
- package/dist/filter-bar-chip.css +33 -1
- package/dist/layout/tabbed-container.cjs.js +2 -2
- package/dist/layout/tabbed-container.es.js +2 -2
- package/dist/{list-search-vyxsZMAK.cjs → list-search-BEDvqI5f.cjs} +2 -2
- package/dist/{list-search-vyxsZMAK.cjs.map → list-search-BEDvqI5f.cjs.map} +1 -1
- package/dist/{list-search-BTW0Neuc.js → list-search-BcOawrgy.js} +2 -2
- package/dist/{list-search-BTW0Neuc.js.map → list-search-BcOawrgy.js.map} +1 -1
- package/dist/{message-BrwbcLPi.js → message-Cs8NW-MR.js} +2 -2
- package/dist/{message-BrwbcLPi.js.map → message-Cs8NW-MR.js.map} +1 -1
- package/dist/{message-CszposMZ.cjs → message-D9b33Pf_.cjs} +2 -2
- package/dist/{message-CszposMZ.cjs.map → message-D9b33Pf_.cjs.map} +1 -1
- package/dist/{metrics-card-BUJxiwec.cjs → metrics-card-D-VjFkUM.cjs} +3 -3
- package/dist/{metrics-card-BUJxiwec.cjs.map → metrics-card-D-VjFkUM.cjs.map} +1 -1
- package/dist/{metrics-card-BlBt1WHw.js → metrics-card-jjLRvic4.js} +3 -3
- package/dist/{metrics-card-BlBt1WHw.js.map → metrics-card-jjLRvic4.js.map} +1 -1
- package/dist/{metrics-kpi-card-CBSNmtc5.js → metrics-kpi-card-CY6F7nTX.js} +2 -2
- package/dist/{metrics-kpi-card-CBSNmtc5.js.map → metrics-kpi-card-CY6F7nTX.js.map} +1 -1
- package/dist/{metrics-kpi-card-CgqmNcEC.cjs → metrics-kpi-card-krK6uG7U.cjs} +2 -2
- package/dist/{metrics-kpi-card-CgqmNcEC.cjs.map → metrics-kpi-card-krK6uG7U.cjs.map} +1 -1
- package/dist/new/layout/app-shell.cjs.js +23 -28
- package/dist/new/layout/app-shell.cjs.js.map +1 -1
- package/dist/new/layout/app-shell.es.js +23 -28
- package/dist/new/layout/app-shell.es.js.map +1 -1
- package/dist/{property-filter-applied-BmxCPe2d.cjs → property-filter-applied-CAiO4FBw.cjs} +2 -2
- package/dist/{property-filter-applied-BmxCPe2d.cjs.map → property-filter-applied-CAiO4FBw.cjs.map} +1 -1
- package/dist/{property-filter-applied-BBiUbtr0.js → property-filter-applied-MIKU9okW.js} +2 -2
- package/dist/{property-filter-applied-BBiUbtr0.js.map → property-filter-applied-MIKU9okW.js.map} +1 -1
- package/dist/radio-group-BdEPWGzi.cjs +62 -0
- package/dist/radio-group-BdEPWGzi.cjs.map +1 -0
- package/dist/radio-group-CFZXUXZ5.js +40 -0
- package/dist/radio-group-CFZXUXZ5.js.map +1 -0
- package/dist/{search-field-block-D0PUUCAE.cjs → search-field-block-DAdvPs1N.cjs} +8 -9
- package/dist/{search-field-block-D0PUUCAE.cjs.map → search-field-block-DAdvPs1N.cjs.map} +1 -1
- package/dist/{search-field-block-B5vUVTpl.js → search-field-block-DjN9AgLw.js} +2 -3
- package/dist/{search-field-block-B5vUVTpl.js.map → search-field-block-DjN9AgLw.js.map} +1 -1
- package/dist/{select-field-block-W2u2WmN3.cjs → select-field-block-7EHxArfT.cjs} +8 -9
- package/dist/{select-field-block-W2u2WmN3.cjs.map → select-field-block-7EHxArfT.cjs.map} +1 -1
- package/dist/{select-field-block-Bu7UXI2H.js → select-field-block-CBte2DyW.js} +2 -3
- package/dist/{select-field-block-Bu7UXI2H.js.map → select-field-block-CBte2DyW.js.map} +1 -1
- package/dist/{span-payload-primitives-DnRsP93D.cjs → span-payload-primitives-BLKf0qn0.cjs} +2 -2
- package/dist/{span-payload-primitives-DnRsP93D.cjs.map → span-payload-primitives-BLKf0qn0.cjs.map} +1 -1
- package/dist/{span-payload-primitives-sbxk4CHC.js → span-payload-primitives-CDLOoJfp.js} +2 -2
- package/dist/{span-payload-primitives-sbxk4CHC.js.map → span-payload-primitives-CDLOoJfp.js.map} +1 -1
- package/dist/{spinner-CqP-NaB2.cjs → spinner-BCpN7LL9.cjs} +9 -3
- package/dist/spinner-BCpN7LL9.cjs.map +1 -0
- package/dist/{spinner-D2C2DYw8.js → spinner-ylbE0TJA.js} +9 -3
- package/dist/spinner-ylbE0TJA.js.map +1 -0
- package/dist/src/domains/traces/components/traces-error-content.d.ts +2 -2
- package/dist/src/domains/traces/hooks/use-trace-url-state.d.ts +5 -3
- package/dist/src/domains/traces/trace-filters.d.ts +19 -4
- package/dist/src/domains/traces/trace-query-filters.d.ts +13 -1
- package/dist/src/ds/components/ActionRow/action-row.d.ts +9 -0
- package/dist/src/ds/components/ActionRow/action-row.stories.d.ts +8 -0
- package/dist/src/ds/components/ActionRow/index.d.ts +5 -0
- package/dist/src/ds/components/ButtonsGroup/buttons-group.stories.d.ts +7 -5
- package/dist/src/ds/components/EmptyState/EmptyState.d.ts +8 -2
- package/dist/src/ds/components/EmptyState/empty-state.stories.d.ts +1 -0
- package/dist/src/ds/components/ErrorState/ErrorState.d.ts +3 -1
- package/dist/src/ds/components/ErrorState/error-state.stories.d.ts +1 -0
- package/dist/src/ds/components/FilterBar/filter-bar-advanced-chip.d.ts +10 -0
- package/dist/src/ds/components/FilterBar/filter-bar-context.d.ts +46 -9
- package/dist/src/ds/components/FilterBar/filter-bar-group-editor.d.ts +25 -0
- package/dist/src/ds/components/FilterBar/filter-bar-input.d.ts +8 -1
- package/dist/src/ds/components/FilterBar/filter-bar-option-list.d.ts +5 -0
- package/dist/src/ds/components/FilterBar/filter-bar-tree.d.ts +36 -0
- package/dist/src/ds/components/FilterBar/filter-bar.d.ts +28 -7
- package/dist/src/ds/components/FilterBar/filter-bar.stories.d.ts +3 -0
- package/dist/src/ds/components/FilterBar/index.d.ts +6 -1
- package/dist/src/ds/components/FilterBar/types.d.ts +36 -0
- package/dist/src/ds/components/FilterBar/use-settle-on-leave.d.ts +2 -0
- package/dist/src/ds/components/PageLayout/index.d.ts +1 -2
- package/dist/src/ds/components/PageLayout/page-layout.d.ts +13 -11
- package/dist/src/ds/components/PageLayout/page-layout.stories.d.ts +1 -2
- package/dist/src/ds/components/PermissionDenied/PermissionDenied.d.ts +3 -1
- package/dist/src/ds/components/PermissionDenied/permission-denied.stories.d.ts +1 -0
- package/dist/src/ds/components/SessionExpired/SessionExpired.d.ts +3 -1
- package/dist/src/ds/components/SessionExpired/session-expired.stories.d.ts +1 -0
- package/dist/src/ds/components/Spinner/spinner.d.ts +6 -3
- package/dist/src/ds/components/Spinner/spinner.stories.d.ts +1 -0
- package/dist/src/ds/components/ai/ask-user/ask-user.d.ts +13 -8
- package/dist/src/ds/new/layout/app-shell/app-shell.d.ts +2 -8
- package/dist/src/ds/new/layout/app-shell/app-shell.stories.d.ts +0 -1
- package/dist/style.css +42 -92
- package/dist/{text-field-block--EUJKlY_.js → text-field-block-DBesvdaa.js} +2 -3
- package/dist/{text-field-block--EUJKlY_.js.map → text-field-block-DBesvdaa.js.map} +1 -1
- package/dist/{text-field-block-BLpLWmu8.cjs → text-field-block-DUMc8MTJ.cjs} +8 -9
- package/dist/{text-field-block-BLpLWmu8.cjs.map → text-field-block-DUMc8MTJ.cjs.map} +1 -1
- package/dist/{tool-call-K147tCug.js → tool-call-Du8XIzfo.js} +2 -2
- package/dist/{tool-call-K147tCug.js.map → tool-call-Du8XIzfo.js.map} +1 -1
- package/dist/{tool-call-CMRvRE-v.cjs → tool-call-ZKSbU3LR.cjs} +2 -2
- package/dist/{tool-call-CMRvRE-v.cjs.map → tool-call-ZKSbU3LR.cjs.map} +1 -1
- package/dist/types-CIPrYAzY.js +9 -0
- package/dist/types-CIPrYAzY.js.map +1 -0
- package/dist/types-Ns4ZNp-g.cjs +12 -0
- package/dist/types-Ns4ZNp-g.cjs.map +1 -0
- package/package.json +6 -6
- package/dist/EmptyState-CdRjFB06.cjs.map +0 -1
- package/dist/EmptyState-UWXhBp5U.js.map +0 -1
- package/dist/ErrorState-B3uTRAEd.cjs +0 -16
- package/dist/ErrorState-B3uTRAEd.cjs.map +0 -1
- package/dist/ErrorState-DqRx8Dw_.js +0 -14
- package/dist/ErrorState-DqRx8Dw_.js.map +0 -1
- package/dist/PermissionDenied-B6TSGolC.js.map +0 -1
- package/dist/PermissionDenied-Dz5qXpQj.cjs.map +0 -1
- package/dist/SessionExpired-Bq5LcsDu.js.map +0 -1
- package/dist/SessionExpired-CF0BGNo_.cjs.map +0 -1
- package/dist/ask-user-CS2e6Re4.cjs +0 -147
- package/dist/ask-user-CS2e6Re4.cjs.map +0 -1
- package/dist/ask-user-gS3Y1bCc.js +0 -138
- package/dist/ask-user-gS3Y1bCc.js.map +0 -1
- package/dist/components/MainContent.cjs.js +0 -81
- package/dist/components/MainContent.cjs.js.map +0 -1
- package/dist/components/MainContent.d.ts +0 -2
- package/dist/components/MainContent.es.js +0 -75
- package/dist/components/MainContent.es.js.map +0 -1
- package/dist/field-block-DWkbNcsV.js.map +0 -1
- package/dist/field-block-Dy1IaWbv.cjs.map +0 -1
- package/dist/field-error-id-B3Z2Zu5y.cjs +0 -6
- package/dist/field-error-id-B3Z2Zu5y.cjs.map +0 -1
- package/dist/field-error-id-D3yg1nBh.js +0 -4
- package/dist/field-error-id-D3yg1nBh.js.map +0 -1
- package/dist/filter-bar-chip-BxI0NgEz.cjs.map +0 -1
- package/dist/filter-bar-chip-C-JxWUU8.js.map +0 -1
- package/dist/new/layout/page-shell.cjs.js +0 -34
- package/dist/new/layout/page-shell.cjs.js.map +0 -1
- package/dist/new/layout/page-shell.d.ts +0 -2
- package/dist/new/layout/page-shell.es.js +0 -30
- package/dist/new/layout/page-shell.es.js.map +0 -1
- package/dist/no-data-page-layout-DcVPjj-J.js +0 -9
- package/dist/no-data-page-layout-DcVPjj-J.js.map +0 -1
- package/dist/no-data-page-layout-Drzbg_w8.cjs +0 -11
- package/dist/no-data-page-layout-Drzbg_w8.cjs.map +0 -1
- package/dist/page-heading-context-D3yjYoJE.js +0 -9
- package/dist/page-heading-context-D3yjYoJE.js.map +0 -1
- package/dist/page-heading-context-Du-CpxAx.cjs +0 -12
- package/dist/page-heading-context-Du-CpxAx.cjs.map +0 -1
- package/dist/page-layout-C9ifD9Q8.cjs +0 -99
- package/dist/page-layout-C9ifD9Q8.cjs.map +0 -1
- package/dist/page-layout-xcM8IR-B.js +0 -97
- package/dist/page-layout-xcM8IR-B.js.map +0 -1
- package/dist/spinner-CqP-NaB2.cjs.map +0 -1
- package/dist/spinner-D2C2DYw8.js.map +0 -1
- package/dist/src/ds/components/MainContent/index.d.ts +0 -1
- package/dist/src/ds/components/MainContent/main-content.d.ts +0 -21
- package/dist/src/ds/components/MainContent/main-content.stories.d.ts +0 -10
- package/dist/src/ds/components/PageLayout/no-data-page-layout.d.ts +0 -6
- package/dist/src/ds/components/PageLayout/page-heading-context.d.ts +0 -2
- package/dist/src/ds/components/PageLayout/page-layout-column.d.ts +0 -5
- package/dist/src/ds/components/PageLayout/page-layout-main-area.d.ts +0 -7
- package/dist/src/ds/components/PageLayout/page-layout-root.d.ts +0 -7
- package/dist/src/ds/components/PageLayout/page-layout-row.d.ts +0 -11
- package/dist/src/ds/components/PageLayout/page-layout-top-area.d.ts +0 -5
- package/dist/src/ds/new/layout/page-shell/index.d.ts +0 -1
- package/dist/src/ds/new/layout/page-shell/page-shell.d.ts +0 -24
- package/dist/src/ds/new/layout/page-shell/page-shell.stories.d.ts +0 -63
|
@@ -21,6 +21,7 @@ const TRACE_FILTER_OPERATOR_IDS = [
|
|
|
21
21
|
"lte"
|
|
22
22
|
];
|
|
23
23
|
const isTraceFilterOperatorId = (value) => TRACE_FILTER_OPERATOR_IDS.includes(value);
|
|
24
|
+
const isTraceFilterGroup = (node) => "nodes" in node;
|
|
24
25
|
const TRACE_FILTER_OPERATOR_TO_QUERY_OP = {
|
|
25
26
|
is: "eq",
|
|
26
27
|
isNot: "ne",
|
|
@@ -76,55 +77,54 @@ function scalarPredicate(op, path, values) {
|
|
|
76
77
|
}
|
|
77
78
|
}
|
|
78
79
|
}
|
|
79
|
-
function
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
80
|
+
function tokenToTraceQueryPredicate(token) {
|
|
81
|
+
if (TRACE_QUERY_UNSUPPORTED_FILTER_FIELDS.has(token.fieldId)) return void 0;
|
|
82
|
+
const operatorId = token.operatorId ?? "is";
|
|
83
|
+
const isPresence = operatorId === "exists" || operatorId === "notExists";
|
|
84
|
+
const rawValues = (Array.isArray(token.value) ? token.value : [token.value]).filter(
|
|
85
|
+
(value) => typeof value === "string" && Boolean(value.trim()) && value !== "Any"
|
|
86
|
+
);
|
|
87
|
+
if (!rawValues.length && !isPresence) return void 0;
|
|
88
|
+
let fieldId = token.fieldId;
|
|
89
|
+
let values = rawValues;
|
|
90
|
+
if (fieldId.startsWith("metadata.")) {
|
|
91
|
+
if (fieldId.length === "metadata.".length) return void 0;
|
|
92
|
+
} else if (fieldId === "rootEntityType" || fieldId === "entityType") {
|
|
93
|
+
fieldId = "entityType";
|
|
94
|
+
} else if (fieldId === "status") {
|
|
95
|
+
values = rawValues.filter((value) => value !== "running");
|
|
96
|
+
if (!values.length && !isPresence) return void 0;
|
|
97
|
+
} else if (TRACE_QUERY_NUMERIC_FIELD_IDS.has(fieldId)) {
|
|
98
|
+
values = rawValues.map(Number).filter((value) => !Number.isNaN(value));
|
|
99
|
+
if (!values.length && !isPresence) return void 0;
|
|
100
|
+
}
|
|
101
|
+
const { scope, path } = resolveTraceQueryPath(fieldId);
|
|
102
|
+
const isMetadata = fieldId.startsWith("metadata.");
|
|
103
|
+
if (!scope && !isMetadata && !TRACE_QUERY_TRACE_FIELD_IDS.has(fieldId)) return void 0;
|
|
104
|
+
if (scope && isNegativeOperator(operatorId)) {
|
|
105
|
+
const positive = scalarPredicate(NEGATIVE_TO_POSITIVE[operatorId], path, values);
|
|
106
|
+
return positive ? { predicate: { [scope]: { none: positive } } } : void 0;
|
|
107
|
+
}
|
|
108
|
+
const predicate = scalarPredicate(operatorId, path, values);
|
|
109
|
+
if (!predicate) return void 0;
|
|
110
|
+
if (scope) return { scope, predicate };
|
|
111
|
+
if ((operatorId === "isNot" || operatorId === "notIn") && (isMetadata || TRACE_QUERY_OPTIONAL_TRACE_FIELD_IDS.has(fieldId))) {
|
|
112
|
+
return { predicate: { op: "or", args: [predicate, { op: "notExists", path }] } };
|
|
113
|
+
}
|
|
114
|
+
return { predicate };
|
|
115
|
+
}
|
|
116
|
+
function predicatesForTokens(tokens, { mergeRelated }) {
|
|
87
117
|
const args = [];
|
|
88
118
|
const related = { spans: [], scores: [], feedback: [] };
|
|
89
|
-
if (rootEntityType) args.push({ op: "eq", left: { path: "entityType" }, right: { literal: rootEntityType } });
|
|
90
|
-
if (status && status !== "running") args.push({ op: "eq", left: { path: "status" }, right: { literal: status } });
|
|
91
119
|
for (const token of tokens) {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
if (!rawValues.length && !isPresence) continue;
|
|
99
|
-
let fieldId = token.fieldId;
|
|
100
|
-
let values = rawValues;
|
|
101
|
-
if (fieldId.startsWith("metadata.")) {
|
|
102
|
-
if (fieldId.length === "metadata.".length) continue;
|
|
103
|
-
} else if (fieldId === "rootEntityType" || fieldId === "entityType") {
|
|
104
|
-
fieldId = "entityType";
|
|
105
|
-
} else if (fieldId === "status") {
|
|
106
|
-
values = rawValues.filter((value) => value !== "running");
|
|
107
|
-
if (!values.length && !isPresence) continue;
|
|
108
|
-
} else if (TRACE_QUERY_NUMERIC_FIELD_IDS.has(fieldId)) {
|
|
109
|
-
values = rawValues.map(Number).filter((value) => !Number.isNaN(value));
|
|
110
|
-
if (!values.length && !isPresence) continue;
|
|
111
|
-
}
|
|
112
|
-
const { scope, path } = resolveTraceQueryPath(fieldId);
|
|
113
|
-
const isMetadata = fieldId.startsWith("metadata.");
|
|
114
|
-
if (!scope && !isMetadata && !TRACE_QUERY_TRACE_FIELD_IDS.has(fieldId)) continue;
|
|
115
|
-
if (scope && isNegativeOperator(operatorId)) {
|
|
116
|
-
const positive = scalarPredicate(NEGATIVE_TO_POSITIVE[operatorId], path, values);
|
|
117
|
-
if (positive) args.push({ [scope]: { none: positive } });
|
|
118
|
-
continue;
|
|
119
|
-
}
|
|
120
|
-
const predicate = scalarPredicate(operatorId, path, values);
|
|
121
|
-
if (!predicate) continue;
|
|
122
|
-
if (scope) {
|
|
123
|
-
related[scope].push(predicate);
|
|
124
|
-
} else if ((operatorId === "isNot" || operatorId === "notIn") && (isMetadata || TRACE_QUERY_OPTIONAL_TRACE_FIELD_IDS.has(fieldId))) {
|
|
125
|
-
args.push({ op: "or", args: [predicate, { op: "notExists", path }] });
|
|
120
|
+
const result = tokenToTraceQueryPredicate(token);
|
|
121
|
+
if (!result) continue;
|
|
122
|
+
if (!("scope" in result)) {
|
|
123
|
+
args.push(result.predicate);
|
|
124
|
+
} else if (mergeRelated) {
|
|
125
|
+
related[result.scope].push(result.predicate);
|
|
126
126
|
} else {
|
|
127
|
-
args.push(predicate);
|
|
127
|
+
args.push({ [result.scope]: { some: result.predicate } });
|
|
128
128
|
}
|
|
129
129
|
}
|
|
130
130
|
for (const scope of TRACE_QUERY_RELATED_SCOPES) {
|
|
@@ -133,6 +133,36 @@ function buildTraceQueryRequest({
|
|
|
133
133
|
const some = rest.length ? { op: "and", args: [first, ...rest] } : first;
|
|
134
134
|
args.push({ [scope]: { some } });
|
|
135
135
|
}
|
|
136
|
+
return args;
|
|
137
|
+
}
|
|
138
|
+
function groupToTraceQueryPredicate(group) {
|
|
139
|
+
const tokens = group.nodes.filter((node) => !isTraceFilterGroup(node));
|
|
140
|
+
const args = predicatesForTokens(tokens, { mergeRelated: group.logic === "and" });
|
|
141
|
+
for (const node of group.nodes) {
|
|
142
|
+
if (!isTraceFilterGroup(node)) continue;
|
|
143
|
+
const predicate = groupToTraceQueryPredicate(node);
|
|
144
|
+
if (predicate) args.push(predicate);
|
|
145
|
+
}
|
|
146
|
+
if (args.length === 0) return void 0;
|
|
147
|
+
return args.length === 1 ? args[0] : { op: group.logic, args };
|
|
148
|
+
}
|
|
149
|
+
function buildTraceQueryRequest({
|
|
150
|
+
rootEntityType,
|
|
151
|
+
status,
|
|
152
|
+
dateFrom,
|
|
153
|
+
dateTo,
|
|
154
|
+
tokens,
|
|
155
|
+
groups = [],
|
|
156
|
+
now
|
|
157
|
+
}) {
|
|
158
|
+
const args = [];
|
|
159
|
+
if (rootEntityType) args.push({ op: "eq", left: { path: "entityType" }, right: { literal: rootEntityType } });
|
|
160
|
+
if (status && status !== "running") args.push({ op: "eq", left: { path: "status" }, right: { literal: status } });
|
|
161
|
+
args.push(...predicatesForTokens(tokens, { mergeRelated: true }));
|
|
162
|
+
for (const group of groups) {
|
|
163
|
+
const predicate = groupToTraceQueryPredicate(group);
|
|
164
|
+
if (predicate) args.push(predicate);
|
|
165
|
+
}
|
|
136
166
|
return {
|
|
137
167
|
timeRange: {
|
|
138
168
|
from: (dateFrom ?? new Date(now.getTime() - 7 * 24 * 60 * 60 * 1e3)).toISOString(),
|
|
@@ -150,5 +180,5 @@ function clampTraceDiscoveryTimeRange(timeRange) {
|
|
|
150
180
|
return { from: new Date(minFrom).toISOString(), to: timeRange.to };
|
|
151
181
|
}
|
|
152
182
|
|
|
153
|
-
export { TRACE_FILTER_OPERATOR_IDS, TRACE_QUERY_DISCOVERY_MAX_RANGE_MS, TRACE_QUERY_NUMERIC_FIELD_IDS, TRACE_QUERY_OPTIONAL_TRACE_FIELD_IDS, TRACE_QUERY_UNSUPPORTED_FILTER_FIELDS, buildTraceQueryRequest, clampTraceDiscoveryTimeRange, isTraceFilterOperatorId };
|
|
183
|
+
export { TRACE_FILTER_OPERATOR_IDS, TRACE_QUERY_DISCOVERY_MAX_RANGE_MS, TRACE_QUERY_NUMERIC_FIELD_IDS, TRACE_QUERY_OPTIONAL_TRACE_FIELD_IDS, TRACE_QUERY_UNSUPPORTED_FILTER_FIELDS, buildTraceQueryRequest, clampTraceDiscoveryTimeRange, isTraceFilterGroup, isTraceFilterOperatorId };
|
|
154
184
|
//# sourceMappingURL=trace-query-filters.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-query-filters.es.js","sources":["../../../src/domains/traces/trace-query-filters.ts"],"sourcesContent":["import type { QueryTracesInput } from '@mastra/client-js';\nimport type { TraceQueryPredicate, TraceQueryScalarPredicate } from '@mastra/core/storage';\nimport type { buildTraceListFilters, TraceStatusFilter } from './trace-filters';\nimport type { PropertyFilterToken } from '@/ds/components/PropertyFilter/types';\n\nexport const TRACE_QUERY_UNSUPPORTED_FILTER_FIELDS = new Set([\n 'tags',\n 'runId',\n 'sessionId',\n 'requestId',\n 'userId',\n 'organizationId',\n 'serviceName',\n 'experimentId',\n]);\n\nexport const TRACE_FILTER_OPERATOR_IDS = [\n 'is',\n 'isNot',\n 'in',\n 'notIn',\n 'exists',\n 'notExists',\n 'gt',\n 'gte',\n 'lt',\n 'lte',\n] as const;\nexport type TraceFilterOperatorId = (typeof TRACE_FILTER_OPERATOR_IDS)[number];\n\nexport const isTraceFilterOperatorId = (value: string): value is TraceFilterOperatorId =>\n (TRACE_FILTER_OPERATOR_IDS as readonly string[]).includes(value);\n\n/** A trace filter chip: `operatorId` defaults to `is` (equality / set membership). */\nexport type TraceFilterToken = PropertyFilterToken & { operatorId?: TraceFilterOperatorId };\n\nconst TRACE_FILTER_OPERATOR_TO_QUERY_OP = {\n is: 'eq',\n isNot: 'ne',\n in: 'in',\n notIn: 'notIn',\n exists: 'exists',\n notExists: 'notExists',\n gt: 'gt',\n gte: 'gte',\n lt: 'lt',\n lte: 'lte',\n} as const satisfies Record<TraceFilterOperatorId, TraceQueryScalarPredicate['op']>;\n\n/** Fields whose values must be sent as numbers. Non-numeric input is dropped. */\nexport const TRACE_QUERY_NUMERIC_FIELD_IDS = new Set(['spans.durationMs', 'scores.score', 'feedback.value']);\n\nconst TRACE_QUERY_TRACE_FIELD_IDS = new Set([\n 'entityType',\n 'status',\n 'entityName',\n 'environment',\n 'traceId',\n 'threadId',\n 'resourceId',\n]);\n\n/** Trace-level fields that may be unset. \"is not X\" on these must also keep traces\n * where the field is missing, so the predicate is `or[ne, notExists]`. */\nexport const TRACE_QUERY_OPTIONAL_TRACE_FIELD_IDS = new Set(['threadId', 'resourceId', 'environment']);\n\n/** Negative operators are expressed as `none(<positive>)` on related collections. */\nconst NEGATIVE_TO_POSITIVE = { isNot: 'is', notIn: 'in', notExists: 'exists' } as const satisfies Partial<\n Record<TraceFilterOperatorId, TraceFilterOperatorId>\n>;\ntype NegativeOperatorId = keyof typeof NEGATIVE_TO_POSITIVE;\nconst isNegativeOperator = (op: TraceFilterOperatorId): op is NegativeOperatorId => op in NEGATIVE_TO_POSITIVE;\n\nconst TRACE_QUERY_RELATED_SCOPES = ['spans', 'scores', 'feedback'] as const;\nexport type TraceQueryRelatedScope = (typeof TRACE_QUERY_RELATED_SCOPES)[number];\n\n/** Split a field id into its related scope (`spans.` / `scores.` / `feedback.`) and\n * the path inside that scope. Trace-level fields have no scope. `entityId` is the\n * legacy id for `spans.entityId`. */\nfunction resolveTraceQueryPath(fieldId: string): { scope?: TraceQueryRelatedScope; path: string } {\n if (fieldId === 'entityId') return { scope: 'spans', path: 'entityId' };\n for (const scope of TRACE_QUERY_RELATED_SCOPES) {\n if (fieldId.startsWith(`${scope}.`) && fieldId.length > scope.length + 1) {\n return { scope, path: fieldId.slice(scope.length + 1) };\n }\n }\n return { path: fieldId };\n}\n\nfunction scalarPredicate(\n op: TraceFilterOperatorId,\n path: string,\n values: (string | number)[],\n): TraceQueryScalarPredicate | undefined {\n const queryOp = TRACE_FILTER_OPERATOR_TO_QUERY_OP[op];\n switch (queryOp) {\n case 'exists':\n case 'notExists':\n return { op: queryOp, path };\n case 'in':\n case 'notIn':\n return values.length ? { op: queryOp, value: { path }, set: values } : undefined;\n default: {\n if (!values.length) return undefined;\n // `is` with several values is set membership; `isNot` with several is exclusion.\n if (values.length > 1) {\n if (queryOp === 'eq') return { op: 'in', value: { path }, set: values };\n if (queryOp === 'ne') return { op: 'notIn', value: { path }, set: values };\n }\n const [literal] = values;\n return literal === undefined ? undefined : { op: queryOp, left: { path }, right: { literal } };\n }\n }\n}\n\nexport function buildTraceQueryRequest({\n rootEntityType,\n status,\n dateFrom,\n dateTo,\n tokens,\n now,\n}: Omit<Parameters<typeof buildTraceListFilters>[0], 'tokens' | 'status'> & {\n status?: TraceStatusFilter;\n tokens: TraceFilterToken[];\n now: Date;\n}): Pick<QueryTracesInput, 'timeRange' | 'where'> {\n const args: TraceQueryPredicate[] = [];\n const related: Record<TraceQueryRelatedScope, TraceQueryScalarPredicate[]> = { spans: [], scores: [], feedback: [] };\n\n if (rootEntityType) args.push({ op: 'eq', left: { path: 'entityType' }, right: { literal: rootEntityType } });\n if (status && status !== 'running') args.push({ op: 'eq', left: { path: 'status' }, right: { literal: status } });\n\n for (const token of tokens) {\n if (TRACE_QUERY_UNSUPPORTED_FILTER_FIELDS.has(token.fieldId)) continue;\n const operatorId = token.operatorId ?? 'is';\n const isPresence = operatorId === 'exists' || operatorId === 'notExists';\n\n const rawValues = (Array.isArray(token.value) ? token.value : [token.value]).filter(\n (value): value is string => typeof value === 'string' && Boolean(value.trim()) && value !== 'Any',\n );\n if (!rawValues.length && !isPresence) continue;\n\n let fieldId = token.fieldId;\n let values: (string | number)[] = rawValues;\n // Discovered metadata fields: the field id is already the predicate path (`metadata.<key>`).\n if (fieldId.startsWith('metadata.')) {\n if (fieldId.length === 'metadata.'.length) continue;\n } else if (fieldId === 'rootEntityType' || fieldId === 'entityType') {\n fieldId = 'entityType';\n } else if (fieldId === 'status') {\n values = rawValues.filter(value => value !== 'running');\n if (!values.length && !isPresence) continue;\n } else if (TRACE_QUERY_NUMERIC_FIELD_IDS.has(fieldId)) {\n values = rawValues.map(Number).filter(value => !Number.isNaN(value));\n if (!values.length && !isPresence) continue;\n }\n\n const { scope, path } = resolveTraceQueryPath(fieldId);\n const isMetadata = fieldId.startsWith('metadata.');\n if (!scope && !isMetadata && !TRACE_QUERY_TRACE_FIELD_IDS.has(fieldId)) continue;\n\n if (scope && isNegativeOperator(operatorId)) {\n // `some(model ne X)` matches any trace with one span that differs; the user\n // means \"no span with model X\", which is `none(model eq X)`.\n const positive = scalarPredicate(NEGATIVE_TO_POSITIVE[operatorId], path, values);\n if (positive) args.push({ [scope]: { none: positive } } as TraceQueryPredicate);\n continue;\n }\n\n const predicate = scalarPredicate(operatorId, path, values);\n if (!predicate) continue;\n if (scope) {\n related[scope].push(predicate);\n } else if (\n (operatorId === 'isNot' || operatorId === 'notIn') &&\n (isMetadata || TRACE_QUERY_OPTIONAL_TRACE_FIELD_IDS.has(fieldId))\n ) {\n args.push({ op: 'or', args: [predicate, { op: 'notExists', path }] });\n } else {\n args.push(predicate);\n }\n }\n\n // Tokens on the same related collection must match the same row (e.g. scorer X\n // AND score < 0.6), so they are merged into a single `some` predicate.\n for (const scope of TRACE_QUERY_RELATED_SCOPES) {\n const [first, ...rest] = related[scope];\n if (!first) continue;\n const some = rest.length ? { op: 'and' as const, args: [first, ...rest] } : first;\n args.push({ [scope]: { some } } as TraceQueryPredicate);\n }\n\n return {\n timeRange: {\n from: (dateFrom ?? new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000)).toISOString(),\n to: (dateTo ?? now).toISOString(),\n },\n ...(args.length ? { where: { op: 'and' as const, args } } : {}),\n };\n}\n\nexport const TRACE_QUERY_DISCOVERY_MAX_RANGE_MS = 31 * 24 * 60 * 60 * 1000;\n\n/** Discovery endpoints reject ranges wider than 31 days (and `from >= to`); clamp\n * the page's selected range so wide custom ranges still get field suggestions\n * for the most recent window. */\nexport function clampTraceDiscoveryTimeRange(timeRange: { from: string; to: string }): { from: string; to: string } {\n const to = new Date(timeRange.to).getTime();\n const from = new Date(timeRange.from).getTime();\n const minFrom = to - TRACE_QUERY_DISCOVERY_MAX_RANGE_MS;\n if (from >= minFrom && from < to) return timeRange;\n return { from: new Date(minFrom).toISOString(), to: timeRange.to };\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"trace-query-filters.es.js","sources":["../../../src/domains/traces/trace-query-filters.ts"],"sourcesContent":["import type { QueryTracesInput } from '@mastra/client-js';\nimport type { TraceQueryPredicate, TraceQueryScalarPredicate } from '@mastra/core/storage';\nimport type { buildTraceListFilters, TraceStatusFilter } from './trace-filters';\nimport type { PropertyFilterToken } from '@/ds/components/PropertyFilter/types';\n\nexport const TRACE_QUERY_UNSUPPORTED_FILTER_FIELDS = new Set([\n 'tags',\n 'runId',\n 'sessionId',\n 'requestId',\n 'userId',\n 'organizationId',\n 'serviceName',\n 'experimentId',\n]);\n\nexport const TRACE_FILTER_OPERATOR_IDS = [\n 'is',\n 'isNot',\n 'in',\n 'notIn',\n 'exists',\n 'notExists',\n 'gt',\n 'gte',\n 'lt',\n 'lte',\n] as const;\nexport type TraceFilterOperatorId = (typeof TRACE_FILTER_OPERATOR_IDS)[number];\n\nexport const isTraceFilterOperatorId = (value: string): value is TraceFilterOperatorId =>\n (TRACE_FILTER_OPERATOR_IDS as readonly string[]).includes(value);\n\n/** A trace filter chip: `operatorId` defaults to `is` (equality / set membership). */\nexport type TraceFilterToken = PropertyFilterToken & {\n operatorId?: TraceFilterOperatorId;\n /** Only set for tokens inside a group: a group may hold several tokens on the same field. */\n id?: string;\n};\n\nexport type TraceFilterLogic = 'and' | 'or';\n\n/** An advanced filter: a nested boolean combination of tokens. */\nexport type TraceFilterGroup = { id: string; logic: TraceFilterLogic; nodes: TraceFilterNode[] };\nexport type TraceFilterNode = TraceFilterToken | TraceFilterGroup;\n\nexport const isTraceFilterGroup = (node: TraceFilterNode): node is TraceFilterGroup => 'nodes' in node;\n\nconst TRACE_FILTER_OPERATOR_TO_QUERY_OP = {\n is: 'eq',\n isNot: 'ne',\n in: 'in',\n notIn: 'notIn',\n exists: 'exists',\n notExists: 'notExists',\n gt: 'gt',\n gte: 'gte',\n lt: 'lt',\n lte: 'lte',\n} as const satisfies Record<TraceFilterOperatorId, TraceQueryScalarPredicate['op']>;\n\n/** Fields whose values must be sent as numbers. Non-numeric input is dropped. */\nexport const TRACE_QUERY_NUMERIC_FIELD_IDS = new Set(['spans.durationMs', 'scores.score', 'feedback.value']);\n\nconst TRACE_QUERY_TRACE_FIELD_IDS = new Set([\n 'entityType',\n 'status',\n 'entityName',\n 'environment',\n 'traceId',\n 'threadId',\n 'resourceId',\n]);\n\n/** Trace-level fields that may be unset. \"is not X\" on these must also keep traces\n * where the field is missing, so the predicate is `or[ne, notExists]`. */\nexport const TRACE_QUERY_OPTIONAL_TRACE_FIELD_IDS = new Set(['threadId', 'resourceId', 'environment']);\n\n/** Negative operators are expressed as `none(<positive>)` on related collections. */\nconst NEGATIVE_TO_POSITIVE = { isNot: 'is', notIn: 'in', notExists: 'exists' } as const satisfies Partial<\n Record<TraceFilterOperatorId, TraceFilterOperatorId>\n>;\ntype NegativeOperatorId = keyof typeof NEGATIVE_TO_POSITIVE;\nconst isNegativeOperator = (op: TraceFilterOperatorId): op is NegativeOperatorId => op in NEGATIVE_TO_POSITIVE;\n\nconst TRACE_QUERY_RELATED_SCOPES = ['spans', 'scores', 'feedback'] as const;\nexport type TraceQueryRelatedScope = (typeof TRACE_QUERY_RELATED_SCOPES)[number];\n\n/** Split a field id into its related scope (`spans.` / `scores.` / `feedback.`) and\n * the path inside that scope. Trace-level fields have no scope. `entityId` is the\n * legacy id for `spans.entityId`. */\nfunction resolveTraceQueryPath(fieldId: string): { scope?: TraceQueryRelatedScope; path: string } {\n if (fieldId === 'entityId') return { scope: 'spans', path: 'entityId' };\n for (const scope of TRACE_QUERY_RELATED_SCOPES) {\n if (fieldId.startsWith(`${scope}.`) && fieldId.length > scope.length + 1) {\n return { scope, path: fieldId.slice(scope.length + 1) };\n }\n }\n return { path: fieldId };\n}\n\nfunction scalarPredicate(\n op: TraceFilterOperatorId,\n path: string,\n values: (string | number)[],\n): TraceQueryScalarPredicate | undefined {\n const queryOp = TRACE_FILTER_OPERATOR_TO_QUERY_OP[op];\n switch (queryOp) {\n case 'exists':\n case 'notExists':\n return { op: queryOp, path };\n case 'in':\n case 'notIn':\n return values.length ? { op: queryOp, value: { path }, set: values } : undefined;\n default: {\n if (!values.length) return undefined;\n // `is` with several values is set membership; `isNot` with several is exclusion.\n if (values.length > 1) {\n if (queryOp === 'eq') return { op: 'in', value: { path }, set: values };\n if (queryOp === 'ne') return { op: 'notIn', value: { path }, set: values };\n }\n const [literal] = values;\n return literal === undefined ? undefined : { op: queryOp, left: { path }, right: { literal } };\n }\n }\n}\n\ntype TokenPredicate =\n | { predicate: TraceQueryPredicate }\n /** A positive predicate on a related row; the caller decides how to wrap it in `some`. */\n | { scope: TraceQueryRelatedScope; predicate: TraceQueryScalarPredicate };\n\nfunction tokenToTraceQueryPredicate(token: TraceFilterToken): TokenPredicate | undefined {\n if (TRACE_QUERY_UNSUPPORTED_FILTER_FIELDS.has(token.fieldId)) return undefined;\n const operatorId = token.operatorId ?? 'is';\n const isPresence = operatorId === 'exists' || operatorId === 'notExists';\n\n const rawValues = (Array.isArray(token.value) ? token.value : [token.value]).filter(\n (value): value is string => typeof value === 'string' && Boolean(value.trim()) && value !== 'Any',\n );\n if (!rawValues.length && !isPresence) return undefined;\n\n let fieldId = token.fieldId;\n let values: (string | number)[] = rawValues;\n // Discovered metadata fields: the field id is already the predicate path (`metadata.<key>`).\n if (fieldId.startsWith('metadata.')) {\n if (fieldId.length === 'metadata.'.length) return undefined;\n } else if (fieldId === 'rootEntityType' || fieldId === 'entityType') {\n fieldId = 'entityType';\n } else if (fieldId === 'status') {\n values = rawValues.filter(value => value !== 'running');\n if (!values.length && !isPresence) return undefined;\n } else if (TRACE_QUERY_NUMERIC_FIELD_IDS.has(fieldId)) {\n values = rawValues.map(Number).filter(value => !Number.isNaN(value));\n if (!values.length && !isPresence) return undefined;\n }\n\n const { scope, path } = resolveTraceQueryPath(fieldId);\n const isMetadata = fieldId.startsWith('metadata.');\n if (!scope && !isMetadata && !TRACE_QUERY_TRACE_FIELD_IDS.has(fieldId)) return undefined;\n\n if (scope && isNegativeOperator(operatorId)) {\n // `some(model ne X)` matches any trace with one span that differs; the user\n // means \"no span with model X\", which is `none(model eq X)`.\n const positive = scalarPredicate(NEGATIVE_TO_POSITIVE[operatorId], path, values);\n return positive ? { predicate: { [scope]: { none: positive } } as TraceQueryPredicate } : undefined;\n }\n\n const predicate = scalarPredicate(operatorId, path, values);\n if (!predicate) return undefined;\n if (scope) return { scope, predicate };\n if (\n (operatorId === 'isNot' || operatorId === 'notIn') &&\n (isMetadata || TRACE_QUERY_OPTIONAL_TRACE_FIELD_IDS.has(fieldId))\n ) {\n return { predicate: { op: 'or', args: [predicate, { op: 'notExists', path }] } };\n }\n return { predicate };\n}\n\n/** Convert tokens to predicates. With `mergeRelated`, tokens on the same related\n * collection must match the same row (e.g. scorer X AND score < 0.6), so they are\n * merged into a single `some`. Inside an `or` group each token stands alone. */\nfunction predicatesForTokens(tokens: TraceFilterToken[], { mergeRelated }: { mergeRelated: boolean }) {\n const args: TraceQueryPredicate[] = [];\n const related: Record<TraceQueryRelatedScope, TraceQueryScalarPredicate[]> = { spans: [], scores: [], feedback: [] };\n\n for (const token of tokens) {\n const result = tokenToTraceQueryPredicate(token);\n if (!result) continue;\n if (!('scope' in result)) {\n args.push(result.predicate);\n } else if (mergeRelated) {\n related[result.scope].push(result.predicate);\n } else {\n args.push({ [result.scope]: { some: result.predicate } } as TraceQueryPredicate);\n }\n }\n\n for (const scope of TRACE_QUERY_RELATED_SCOPES) {\n const [first, ...rest] = related[scope];\n if (!first) continue;\n const some = rest.length ? { op: 'and' as const, args: [first, ...rest] } : first;\n args.push({ [scope]: { some } } as TraceQueryPredicate);\n }\n\n return args;\n}\n\nfunction groupToTraceQueryPredicate(group: TraceFilterGroup): TraceQueryPredicate | undefined {\n const tokens = group.nodes.filter((node): node is TraceFilterToken => !isTraceFilterGroup(node));\n const args = predicatesForTokens(tokens, { mergeRelated: group.logic === 'and' });\n for (const node of group.nodes) {\n if (!isTraceFilterGroup(node)) continue;\n const predicate = groupToTraceQueryPredicate(node);\n if (predicate) args.push(predicate);\n }\n if (args.length === 0) return undefined;\n return args.length === 1 ? args[0] : { op: group.logic, args };\n}\n\nexport function buildTraceQueryRequest({\n rootEntityType,\n status,\n dateFrom,\n dateTo,\n tokens,\n groups = [],\n now,\n}: Omit<Parameters<typeof buildTraceListFilters>[0], 'tokens' | 'status'> & {\n status?: TraceStatusFilter;\n tokens: TraceFilterToken[];\n groups?: TraceFilterGroup[];\n now: Date;\n}): Pick<QueryTracesInput, 'timeRange' | 'where'> {\n const args: TraceQueryPredicate[] = [];\n\n if (rootEntityType) args.push({ op: 'eq', left: { path: 'entityType' }, right: { literal: rootEntityType } });\n if (status && status !== 'running') args.push({ op: 'eq', left: { path: 'status' }, right: { literal: status } });\n\n args.push(...predicatesForTokens(tokens, { mergeRelated: true }));\n\n for (const group of groups) {\n const predicate = groupToTraceQueryPredicate(group);\n if (predicate) args.push(predicate);\n }\n\n return {\n timeRange: {\n from: (dateFrom ?? new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000)).toISOString(),\n to: (dateTo ?? now).toISOString(),\n },\n ...(args.length ? { where: { op: 'and' as const, args } } : {}),\n };\n}\n\nexport const TRACE_QUERY_DISCOVERY_MAX_RANGE_MS = 31 * 24 * 60 * 60 * 1000;\n\n/** Discovery endpoints reject ranges wider than 31 days (and `from >= to`); clamp\n * the page's selected range so wide custom ranges still get field suggestions\n * for the most recent window. */\nexport function clampTraceDiscoveryTimeRange(timeRange: { from: string; to: string }): { from: string; to: string } {\n const to = new Date(timeRange.to).getTime();\n const from = new Date(timeRange.from).getTime();\n const minFrom = to - TRACE_QUERY_DISCOVERY_MAX_RANGE_MS;\n if (from >= minFrom && from < to) return timeRange;\n return { from: new Date(minFrom).toISOString(), to: timeRange.to };\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -142,6 +142,7 @@ exports.TRACE_DATE_PRESET_PARAM = domains_traces_traceFilters.TRACE_DATE_PRESET_
|
|
|
142
142
|
exports.TRACE_DATE_PRESET_VALUES = domains_traces_traceFilters.TRACE_DATE_PRESET_VALUES;
|
|
143
143
|
exports.TRACE_DATE_TO_PARAM = domains_traces_traceFilters.TRACE_DATE_TO_PARAM;
|
|
144
144
|
exports.TRACE_FILTER_BAR_OPERATORS = domains_traces_traceFilters.TRACE_FILTER_BAR_OPERATORS;
|
|
145
|
+
exports.TRACE_FILTER_GROUP_PARAM = domains_traces_traceFilters.TRACE_FILTER_GROUP_PARAM;
|
|
145
146
|
exports.TRACE_FILTER_OPERATOR_PARAM_SUFFIX = domains_traces_traceFilters.TRACE_FILTER_OPERATOR_PARAM_SUFFIX;
|
|
146
147
|
exports.TRACE_LIST_MODE_OPTIONS = domains_traces_traceFilters.TRACE_LIST_MODE_OPTIONS;
|
|
147
148
|
exports.TRACE_LIST_MODE_PARAM = domains_traces_traceFilters.TRACE_LIST_MODE_PARAM;
|
|
@@ -159,19 +160,24 @@ exports.applyTracePropertyFilterTokens = domains_traces_traceFilters.applyTraceP
|
|
|
159
160
|
exports.buildTraceListFilters = domains_traces_traceFilters.buildTraceListFilters;
|
|
160
161
|
exports.clearSavedTraceFilters = domains_traces_traceFilters.clearSavedTraceFilters;
|
|
161
162
|
exports.createTraceFilterBarFields = domains_traces_traceFilters.createTraceFilterBarFields;
|
|
163
|
+
exports.filterBarExpressionToTraceFilters = domains_traces_traceFilters.filterBarExpressionToTraceFilters;
|
|
162
164
|
exports.filterBarItemsToTraceTokens = domains_traces_traceFilters.filterBarItemsToTraceTokens;
|
|
163
165
|
exports.getPreservedTraceFilterParams = domains_traces_traceFilters.getPreservedTraceFilterParams;
|
|
166
|
+
exports.getTraceFilterGroups = domains_traces_traceFilters.getTraceFilterGroups;
|
|
164
167
|
exports.getTracePropertyFilterTokens = domains_traces_traceFilters.getTracePropertyFilterTokens;
|
|
165
168
|
exports.hasAnyTraceFilterParams = domains_traces_traceFilters.hasAnyTraceFilterParams;
|
|
166
169
|
exports.isTraceMetadataFieldId = domains_traces_traceFilters.isTraceMetadataFieldId;
|
|
167
170
|
exports.loadTraceFiltersFromStorage = domains_traces_traceFilters.loadTraceFiltersFromStorage;
|
|
168
171
|
exports.metadataFieldIdToParam = domains_traces_traceFilters.metadataFieldIdToParam;
|
|
169
172
|
exports.metadataParamToFieldId = domains_traces_traceFilters.metadataParamToFieldId;
|
|
173
|
+
exports.parseTraceFilterGroupParam = domains_traces_traceFilters.parseTraceFilterGroupParam;
|
|
170
174
|
exports.saveTraceFiltersToStorage = domains_traces_traceFilters.saveTraceFiltersToStorage;
|
|
175
|
+
exports.serializeTraceFilterGroup = domains_traces_traceFilters.serializeTraceFilterGroup;
|
|
171
176
|
exports.traceFilterFieldColor = domains_traces_traceFilters.traceFilterFieldColor;
|
|
172
177
|
exports.traceFilterFieldIcon = domains_traces_traceFilters.traceFilterFieldIcon;
|
|
173
178
|
exports.traceFilterOperatorParam = domains_traces_traceFilters.traceFilterOperatorParam;
|
|
174
179
|
exports.traceFilterTokenOperator = domains_traces_traceFilters.traceFilterTokenOperator;
|
|
180
|
+
exports.traceFiltersToFilterBarExpression = domains_traces_traceFilters.traceFiltersToFilterBarExpression;
|
|
175
181
|
exports.traceTokensToFilterBarItems = domains_traces_traceFilters.traceTokensToFilterBarItems;
|
|
176
182
|
exports.TRACE_FILTER_OPERATOR_IDS = domains_traces_traceQueryFilters.TRACE_FILTER_OPERATOR_IDS;
|
|
177
183
|
exports.TRACE_QUERY_DISCOVERY_MAX_RANGE_MS = domains_traces_traceQueryFilters.TRACE_QUERY_DISCOVERY_MAX_RANGE_MS;
|
|
@@ -180,6 +186,7 @@ exports.TRACE_QUERY_OPTIONAL_TRACE_FIELD_IDS = domains_traces_traceQueryFilters.
|
|
|
180
186
|
exports.TRACE_QUERY_UNSUPPORTED_FILTER_FIELDS = domains_traces_traceQueryFilters.TRACE_QUERY_UNSUPPORTED_FILTER_FIELDS;
|
|
181
187
|
exports.buildTraceQueryRequest = domains_traces_traceQueryFilters.buildTraceQueryRequest;
|
|
182
188
|
exports.clampTraceDiscoveryTimeRange = domains_traces_traceQueryFilters.clampTraceDiscoveryTimeRange;
|
|
189
|
+
exports.isTraceFilterGroup = domains_traces_traceQueryFilters.isTraceFilterGroup;
|
|
183
190
|
exports.isTraceFilterOperatorId = domains_traces_traceQueryFilters.isTraceFilterOperatorId;
|
|
184
191
|
exports.CONTEXT_FIELD_IDS = domains_traces_types.CONTEXT_FIELD_IDS;
|
|
185
192
|
exports.THREAD_TRACE_MESSAGES_TAB = domains_traces_components_threadTrace_threadTraceRow.THREAD_TRACE_MESSAGES_TAB;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traces.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"traces.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -56,8 +56,8 @@ export { flattenToSearchText } from './traces/utils/flatten-to-search-text.es.js
|
|
|
56
56
|
export { selectSearchableSpans, toSearchableSpans } from './traces/utils/to-searchable-spans.es.js';
|
|
57
57
|
export { getSpanTimingLayout } from './traces/utils/span-timing.es.js';
|
|
58
58
|
export { formatSpanDuration, getInputPreview, getTokenLimitMessage, isTokenLimitExceeded } from './traces/utils/span-utils.es.js';
|
|
59
|
-
export { DEFAULT_TRACE_FILTERS_STORAGE_KEY, ROOT_ENTITY_TYPES, ROOT_ENTITY_TYPE_OPTIONS, TRACE_ANCHOR_SPAN_ID_PARAM, TRACE_DATE_FROM_PARAM, TRACE_DATE_PRESET_PARAM, TRACE_DATE_PRESET_VALUES, TRACE_DATE_TO_PARAM, TRACE_FILTER_BAR_OPERATORS, TRACE_FILTER_OPERATOR_PARAM_SUFFIX, TRACE_LIST_MODE_OPTIONS, TRACE_LIST_MODE_PARAM, TRACE_LIST_MODE_VALUES, TRACE_METADATA_FILTER_FIELD_PREFIX, TRACE_METADATA_FILTER_PARAM_PREFIX, TRACE_PROPERTY_FILTER_FIELD_IDS, TRACE_PROPERTY_FILTER_PARAM_BY_FIELD, TRACE_ROOT_ENTITY_TYPE_PARAM, TRACE_STATUS_OPTIONS, TRACE_STATUS_PARAM, TRACE_STATUS_VALUES, TRACE_SYNTHETIC_FILTER_FIELD_IDS, applyTracePropertyFilterTokens, buildTraceListFilters, clearSavedTraceFilters, createTraceFilterBarFields, filterBarItemsToTraceTokens, getPreservedTraceFilterParams, getTracePropertyFilterTokens, hasAnyTraceFilterParams, isTraceMetadataFieldId, loadTraceFiltersFromStorage, metadataFieldIdToParam, metadataParamToFieldId, saveTraceFiltersToStorage, traceFilterFieldColor, traceFilterFieldIcon, traceFilterOperatorParam, traceFilterTokenOperator, traceTokensToFilterBarItems } from './traces/trace-filters.es.js';
|
|
60
|
-
export { TRACE_FILTER_OPERATOR_IDS, TRACE_QUERY_DISCOVERY_MAX_RANGE_MS, TRACE_QUERY_NUMERIC_FIELD_IDS, TRACE_QUERY_OPTIONAL_TRACE_FIELD_IDS, TRACE_QUERY_UNSUPPORTED_FILTER_FIELDS, buildTraceQueryRequest, clampTraceDiscoveryTimeRange, isTraceFilterOperatorId } from './traces/trace-query-filters.es.js';
|
|
59
|
+
export { DEFAULT_TRACE_FILTERS_STORAGE_KEY, ROOT_ENTITY_TYPES, ROOT_ENTITY_TYPE_OPTIONS, TRACE_ANCHOR_SPAN_ID_PARAM, TRACE_DATE_FROM_PARAM, TRACE_DATE_PRESET_PARAM, TRACE_DATE_PRESET_VALUES, TRACE_DATE_TO_PARAM, TRACE_FILTER_BAR_OPERATORS, TRACE_FILTER_GROUP_PARAM, TRACE_FILTER_OPERATOR_PARAM_SUFFIX, TRACE_LIST_MODE_OPTIONS, TRACE_LIST_MODE_PARAM, TRACE_LIST_MODE_VALUES, TRACE_METADATA_FILTER_FIELD_PREFIX, TRACE_METADATA_FILTER_PARAM_PREFIX, TRACE_PROPERTY_FILTER_FIELD_IDS, TRACE_PROPERTY_FILTER_PARAM_BY_FIELD, TRACE_ROOT_ENTITY_TYPE_PARAM, TRACE_STATUS_OPTIONS, TRACE_STATUS_PARAM, TRACE_STATUS_VALUES, TRACE_SYNTHETIC_FILTER_FIELD_IDS, applyTracePropertyFilterTokens, buildTraceListFilters, clearSavedTraceFilters, createTraceFilterBarFields, filterBarExpressionToTraceFilters, filterBarItemsToTraceTokens, getPreservedTraceFilterParams, getTraceFilterGroups, getTracePropertyFilterTokens, hasAnyTraceFilterParams, isTraceMetadataFieldId, loadTraceFiltersFromStorage, metadataFieldIdToParam, metadataParamToFieldId, parseTraceFilterGroupParam, saveTraceFiltersToStorage, serializeTraceFilterGroup, traceFilterFieldColor, traceFilterFieldIcon, traceFilterOperatorParam, traceFilterTokenOperator, traceFiltersToFilterBarExpression, traceTokensToFilterBarItems } from './traces/trace-filters.es.js';
|
|
60
|
+
export { TRACE_FILTER_OPERATOR_IDS, TRACE_QUERY_DISCOVERY_MAX_RANGE_MS, TRACE_QUERY_NUMERIC_FIELD_IDS, TRACE_QUERY_OPTIONAL_TRACE_FIELD_IDS, TRACE_QUERY_UNSUPPORTED_FILTER_FIELDS, buildTraceQueryRequest, clampTraceDiscoveryTimeRange, isTraceFilterGroup, isTraceFilterOperatorId } from './traces/trace-query-filters.es.js';
|
|
61
61
|
export { CONTEXT_FIELD_IDS } from './traces/types.es.js';
|
|
62
62
|
export { THREAD_TRACE_MESSAGES_TAB } from './traces/components/thread-trace/thread-trace-row.es.js';
|
|
63
63
|
export { useThreadTrace } from './traces/components/thread-trace/thread-trace-context.es.js';
|
|
@@ -6,6 +6,8 @@ const jsxRuntime = require('react/jsx-runtime');
|
|
|
6
6
|
const ee_signals_components_entityIndexModel = require('./entity-index-model.cjs.js');
|
|
7
7
|
const Badge = require('../../../Badge-BEeYtjmv.cjs');
|
|
8
8
|
const dataList = require('../../../data-list-CypPKOQ_.cjs');
|
|
9
|
+
require('react');
|
|
10
|
+
require('../../../keyboard/keyboard-shortcuts-context.cjs.js');
|
|
9
11
|
|
|
10
12
|
const columns = "minmax(12rem,1.5fr) minmax(7rem,0.6fr) minmax(8rem,0.7fr) minmax(8rem,0.7fr) minmax(12rem,1fr)";
|
|
11
13
|
function Status({ entity }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-index-list.cjs.js","sources":["../../../../src/ee/signals/components/entity-index-list.tsx"],"sourcesContent":["import type { ThemeLearningEntity } from '@mastra/client-js';\n\nimport { entityIndexMetadata, entityStatusLabel } from './entity-index-model';\nimport { Badge } from '@/ds/components/Badge';\nimport { DataList } from '@/ds/components/DataList';\nimport type { LinkComponent } from '@/ds/types/link-component';\n\nconst columns = 'minmax(12rem,1.5fr) minmax(7rem,0.6fr) minmax(8rem,0.7fr) minmax(8rem,0.7fr) minmax(12rem,1fr)';\n\nexport interface EntityIndexListProps {\n entities: readonly ThemeLearningEntity[];\n hasSearch: boolean;\n getEntityHref: (entity: ThemeLearningEntity) => string;\n LinkComponent: LinkComponent;\n}\n\nfunction Status({ entity }: { entity: ThemeLearningEntity }) {\n const label = entityStatusLabel(entity.status);\n const variant = entity.status === 'ready' ? 'green' : entity.status === 'processing' ? 'blue' : 'neutral';\n return (\n <Badge variant={variant} size=\"sm\" indicator={entity.status === undefined ? undefined : 'dot'}>\n {label}\n </Badge>\n );\n}\n\nexport function EntityIndexList({ entities, hasSearch, getEntityHref, LinkComponent }: EntityIndexListProps) {\n return (\n <section aria-label=\"Trace Intelligence entities\" className=\"min-h-0\">\n <DataList columns={columns} fit=\"container\">\n <DataList.Top>\n <DataList.TopCell>Entity</DataList.TopCell>\n <DataList.TopCell>Traces</DataList.TopCell>\n <DataList.TopCell>Signals set</DataList.TopCell>\n <DataList.TopCell>Status</DataList.TopCell>\n <DataList.TopCell>Updated</DataList.TopCell>\n </DataList.Top>\n {entities.length === 0 && hasSearch ? <DataList.NoMatch message=\"No entities match your search\" /> : null}\n {entities.map(entity => {\n const metadata = entityIndexMetadata(entity);\n return (\n <DataList.RowLink\n key={`${entity.entityType}:${entity.entityId}`}\n to={getEntityHref(entity)}\n LinkComponent={LinkComponent}\n className=\"min-w-0\"\n >\n <DataList.Cell className=\"min-w-0 overflow-visible text-left\">\n <span className=\"sr-only\">Open entity {entity.entityId}</span>\n <span aria-hidden=\"true\" className=\"block overflow-clip text-ellipsis whitespace-nowrap\">\n {entity.entityId}\n </span>\n </DataList.Cell>\n <DataList.NumberCell>{metadata.traceCount}</DataList.NumberCell>\n <DataList.Cell>{metadata.signalsSet}</DataList.Cell>\n <DataList.Cell>\n <Status entity={entity} />\n </DataList.Cell>\n <DataList.Cell title={entity.updatedAt}>{metadata.updatedAt}</DataList.Cell>\n </DataList.RowLink>\n );\n })}\n </DataList>\n </section>\n );\n}\n"],"names":["entityStatusLabel","jsx","Badge","jsxs","DataList","entityIndexMetadata"],"mappings":"
|
|
1
|
+
{"version":3,"file":"entity-index-list.cjs.js","sources":["../../../../src/ee/signals/components/entity-index-list.tsx"],"sourcesContent":["import type { ThemeLearningEntity } from '@mastra/client-js';\n\nimport { entityIndexMetadata, entityStatusLabel } from './entity-index-model';\nimport { Badge } from '@/ds/components/Badge';\nimport { DataList } from '@/ds/components/DataList';\nimport type { LinkComponent } from '@/ds/types/link-component';\n\nconst columns = 'minmax(12rem,1.5fr) minmax(7rem,0.6fr) minmax(8rem,0.7fr) minmax(8rem,0.7fr) minmax(12rem,1fr)';\n\nexport interface EntityIndexListProps {\n entities: readonly ThemeLearningEntity[];\n hasSearch: boolean;\n getEntityHref: (entity: ThemeLearningEntity) => string;\n LinkComponent: LinkComponent;\n}\n\nfunction Status({ entity }: { entity: ThemeLearningEntity }) {\n const label = entityStatusLabel(entity.status);\n const variant = entity.status === 'ready' ? 'green' : entity.status === 'processing' ? 'blue' : 'neutral';\n return (\n <Badge variant={variant} size=\"sm\" indicator={entity.status === undefined ? undefined : 'dot'}>\n {label}\n </Badge>\n );\n}\n\nexport function EntityIndexList({ entities, hasSearch, getEntityHref, LinkComponent }: EntityIndexListProps) {\n return (\n <section aria-label=\"Trace Intelligence entities\" className=\"min-h-0\">\n <DataList columns={columns} fit=\"container\">\n <DataList.Top>\n <DataList.TopCell>Entity</DataList.TopCell>\n <DataList.TopCell>Traces</DataList.TopCell>\n <DataList.TopCell>Signals set</DataList.TopCell>\n <DataList.TopCell>Status</DataList.TopCell>\n <DataList.TopCell>Updated</DataList.TopCell>\n </DataList.Top>\n {entities.length === 0 && hasSearch ? <DataList.NoMatch message=\"No entities match your search\" /> : null}\n {entities.map(entity => {\n const metadata = entityIndexMetadata(entity);\n return (\n <DataList.RowLink\n key={`${entity.entityType}:${entity.entityId}`}\n to={getEntityHref(entity)}\n LinkComponent={LinkComponent}\n className=\"min-w-0\"\n >\n <DataList.Cell className=\"min-w-0 overflow-visible text-left\">\n <span className=\"sr-only\">Open entity {entity.entityId}</span>\n <span aria-hidden=\"true\" className=\"block overflow-clip text-ellipsis whitespace-nowrap\">\n {entity.entityId}\n </span>\n </DataList.Cell>\n <DataList.NumberCell>{metadata.traceCount}</DataList.NumberCell>\n <DataList.Cell>{metadata.signalsSet}</DataList.Cell>\n <DataList.Cell>\n <Status entity={entity} />\n </DataList.Cell>\n <DataList.Cell title={entity.updatedAt}>{metadata.updatedAt}</DataList.Cell>\n </DataList.RowLink>\n );\n })}\n </DataList>\n </section>\n );\n}\n"],"names":["entityStatusLabel","jsx","Badge","jsxs","DataList","entityIndexMetadata"],"mappings":"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"}
|
|
@@ -2,6 +2,8 @@ import { jsx, jsxs } from 'react/jsx-runtime';
|
|
|
2
2
|
import { entityIndexMetadata, entityStatusLabel } from './entity-index-model.es.js';
|
|
3
3
|
import { B as Badge } from '../../../Badge-TD55_qZJ.js';
|
|
4
4
|
import { D as DataList } from '../../../data-list-DnSdaRES.js';
|
|
5
|
+
import 'react';
|
|
6
|
+
import '../../../keyboard/keyboard-shortcuts-context.es.js';
|
|
5
7
|
|
|
6
8
|
const columns = "minmax(12rem,1.5fr) minmax(7rem,0.6fr) minmax(8rem,0.7fr) minmax(8rem,0.7fr) minmax(12rem,1fr)";
|
|
7
9
|
function Status({ entity }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-index-list.es.js","sources":["../../../../src/ee/signals/components/entity-index-list.tsx"],"sourcesContent":["import type { ThemeLearningEntity } from '@mastra/client-js';\n\nimport { entityIndexMetadata, entityStatusLabel } from './entity-index-model';\nimport { Badge } from '@/ds/components/Badge';\nimport { DataList } from '@/ds/components/DataList';\nimport type { LinkComponent } from '@/ds/types/link-component';\n\nconst columns = 'minmax(12rem,1.5fr) minmax(7rem,0.6fr) minmax(8rem,0.7fr) minmax(8rem,0.7fr) minmax(12rem,1fr)';\n\nexport interface EntityIndexListProps {\n entities: readonly ThemeLearningEntity[];\n hasSearch: boolean;\n getEntityHref: (entity: ThemeLearningEntity) => string;\n LinkComponent: LinkComponent;\n}\n\nfunction Status({ entity }: { entity: ThemeLearningEntity }) {\n const label = entityStatusLabel(entity.status);\n const variant = entity.status === 'ready' ? 'green' : entity.status === 'processing' ? 'blue' : 'neutral';\n return (\n <Badge variant={variant} size=\"sm\" indicator={entity.status === undefined ? undefined : 'dot'}>\n {label}\n </Badge>\n );\n}\n\nexport function EntityIndexList({ entities, hasSearch, getEntityHref, LinkComponent }: EntityIndexListProps) {\n return (\n <section aria-label=\"Trace Intelligence entities\" className=\"min-h-0\">\n <DataList columns={columns} fit=\"container\">\n <DataList.Top>\n <DataList.TopCell>Entity</DataList.TopCell>\n <DataList.TopCell>Traces</DataList.TopCell>\n <DataList.TopCell>Signals set</DataList.TopCell>\n <DataList.TopCell>Status</DataList.TopCell>\n <DataList.TopCell>Updated</DataList.TopCell>\n </DataList.Top>\n {entities.length === 0 && hasSearch ? <DataList.NoMatch message=\"No entities match your search\" /> : null}\n {entities.map(entity => {\n const metadata = entityIndexMetadata(entity);\n return (\n <DataList.RowLink\n key={`${entity.entityType}:${entity.entityId}`}\n to={getEntityHref(entity)}\n LinkComponent={LinkComponent}\n className=\"min-w-0\"\n >\n <DataList.Cell className=\"min-w-0 overflow-visible text-left\">\n <span className=\"sr-only\">Open entity {entity.entityId}</span>\n <span aria-hidden=\"true\" className=\"block overflow-clip text-ellipsis whitespace-nowrap\">\n {entity.entityId}\n </span>\n </DataList.Cell>\n <DataList.NumberCell>{metadata.traceCount}</DataList.NumberCell>\n <DataList.Cell>{metadata.signalsSet}</DataList.Cell>\n <DataList.Cell>\n <Status entity={entity} />\n </DataList.Cell>\n <DataList.Cell title={entity.updatedAt}>{metadata.updatedAt}</DataList.Cell>\n </DataList.RowLink>\n );\n })}\n </DataList>\n </section>\n );\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"entity-index-list.es.js","sources":["../../../../src/ee/signals/components/entity-index-list.tsx"],"sourcesContent":["import type { ThemeLearningEntity } from '@mastra/client-js';\n\nimport { entityIndexMetadata, entityStatusLabel } from './entity-index-model';\nimport { Badge } from '@/ds/components/Badge';\nimport { DataList } from '@/ds/components/DataList';\nimport type { LinkComponent } from '@/ds/types/link-component';\n\nconst columns = 'minmax(12rem,1.5fr) minmax(7rem,0.6fr) minmax(8rem,0.7fr) minmax(8rem,0.7fr) minmax(12rem,1fr)';\n\nexport interface EntityIndexListProps {\n entities: readonly ThemeLearningEntity[];\n hasSearch: boolean;\n getEntityHref: (entity: ThemeLearningEntity) => string;\n LinkComponent: LinkComponent;\n}\n\nfunction Status({ entity }: { entity: ThemeLearningEntity }) {\n const label = entityStatusLabel(entity.status);\n const variant = entity.status === 'ready' ? 'green' : entity.status === 'processing' ? 'blue' : 'neutral';\n return (\n <Badge variant={variant} size=\"sm\" indicator={entity.status === undefined ? undefined : 'dot'}>\n {label}\n </Badge>\n );\n}\n\nexport function EntityIndexList({ entities, hasSearch, getEntityHref, LinkComponent }: EntityIndexListProps) {\n return (\n <section aria-label=\"Trace Intelligence entities\" className=\"min-h-0\">\n <DataList columns={columns} fit=\"container\">\n <DataList.Top>\n <DataList.TopCell>Entity</DataList.TopCell>\n <DataList.TopCell>Traces</DataList.TopCell>\n <DataList.TopCell>Signals set</DataList.TopCell>\n <DataList.TopCell>Status</DataList.TopCell>\n <DataList.TopCell>Updated</DataList.TopCell>\n </DataList.Top>\n {entities.length === 0 && hasSearch ? <DataList.NoMatch message=\"No entities match your search\" /> : null}\n {entities.map(entity => {\n const metadata = entityIndexMetadata(entity);\n return (\n <DataList.RowLink\n key={`${entity.entityType}:${entity.entityId}`}\n to={getEntityHref(entity)}\n LinkComponent={LinkComponent}\n className=\"min-w-0\"\n >\n <DataList.Cell className=\"min-w-0 overflow-visible text-left\">\n <span className=\"sr-only\">Open entity {entity.entityId}</span>\n <span aria-hidden=\"true\" className=\"block overflow-clip text-ellipsis whitespace-nowrap\">\n {entity.entityId}\n </span>\n </DataList.Cell>\n <DataList.NumberCell>{metadata.traceCount}</DataList.NumberCell>\n <DataList.Cell>{metadata.signalsSet}</DataList.Cell>\n <DataList.Cell>\n <Status entity={entity} />\n </DataList.Cell>\n <DataList.Cell title={entity.updatedAt}>{metadata.updatedAt}</DataList.Cell>\n </DataList.RowLink>\n );\n })}\n </DataList>\n </section>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
4
|
|
|
5
5
|
const jsxRuntime = require('react/jsx-runtime');
|
|
6
|
-
const lucideReact = require('lucide-react');
|
|
7
6
|
const React = require('react');
|
|
8
7
|
require('@tanstack/react-query');
|
|
9
8
|
const ee_signals_useTraceIntelligence = require('../use-trace-intelligence.cjs.js');
|
|
@@ -16,8 +15,7 @@ const ee_signals_signalsErrorState = require('../signals-error-state.cjs.js');
|
|
|
16
15
|
const ee_signals_signalsLoadingSkeleton = require('../signals-loading-skeleton.cjs.js');
|
|
17
16
|
const ee_signals_traceIntelligenceProvider = require('../trace-intelligence-provider.cjs.js');
|
|
18
17
|
const ee_signals_components_signalsEmptyState = require('./signals-empty-state.cjs.js');
|
|
19
|
-
const EmptyState = require('../../../EmptyState-
|
|
20
|
-
const noDataPageLayout = require('../../../no-data-page-layout-Drzbg_w8.cjs');
|
|
18
|
+
const EmptyState = require('../../../EmptyState-0MgNiP40.cjs');
|
|
21
19
|
|
|
22
20
|
function TraceIntelligenceEntityDetail({
|
|
23
21
|
entityId,
|
|
@@ -51,14 +49,14 @@ function TraceIntelligenceEntityDetail({
|
|
|
51
49
|
return /* @__PURE__ */ jsxRuntime.jsx(ee_signals_signalsErrorState.SignalsErrorState, { message: "Unable to load trace signal entity.", onRetry: () => void entitiesQuery.refetch() });
|
|
52
50
|
}
|
|
53
51
|
if (!entity) {
|
|
54
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
52
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
55
53
|
EmptyState.EmptyState,
|
|
56
54
|
{
|
|
57
|
-
iconSlot: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Radar, { "aria-hidden": "true" }),
|
|
58
55
|
titleSlot: "Trace Intelligence entity not found",
|
|
59
|
-
descriptionSlot: "The requested entity is unavailable in this project."
|
|
56
|
+
descriptionSlot: "The requested entity is unavailable in this project.",
|
|
57
|
+
variant: "fill"
|
|
60
58
|
}
|
|
61
|
-
)
|
|
59
|
+
);
|
|
62
60
|
}
|
|
63
61
|
if (signalNames.length < 2) {
|
|
64
62
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-intelligence-entity-detail.cjs.js","sources":["../../../../src/ee/signals/components/trace-intelligence-entity-detail.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"trace-intelligence-entity-detail.cjs.js","sources":["../../../../src/ee/signals/components/trace-intelligence-entity-detail.tsx"],"sourcesContent":["import { useState, type ReactNode } from 'react';\n\nimport { useEntityLearningProgress, useThemeEntities, useThemeSnapshots } from '../hooks';\nimport { SankeySignals } from '../sankey-signals';\nimport { orderedSignals } from '../signal-formatting';\nimport { SignalsErrorState } from '../signals-error-state';\nimport { SignalsLoadingSkeleton } from '../signals-loading-skeleton';\nimport { TraceIntelligenceProvider } from '../trace-intelligence-provider';\nimport { useTraceIntelligence } from '../use-trace-intelligence';\nimport { SignalsEmptyState } from './signals-empty-state';\nimport { EmptyState } from '@/ds/components/EmptyState';\n\nexport interface TraceIntelligenceEntityDetailProps {\n entityId: string;\n entityType: string;\n dateFrom?: Date;\n dateTo?: Date;\n dateRangePicker?: ReactNode;\n}\n\nexport function TraceIntelligenceEntityDetail({\n entityId,\n entityType,\n dateFrom,\n dateTo,\n dateRangePicker,\n}: TraceIntelligenceEntityDetailProps) {\n const [selectedThemeId, setSelectedThemeId] = useState<string>();\n const [selectedFrameId, setSelectedFrameId] = useState<string>();\n const context = useTraceIntelligence();\n const entitiesQuery = useThemeEntities(entityType);\n const entity = entitiesQuery.data?.entities.find(\n candidate => candidate.entityType === entityType && candidate.entityId === entityId,\n );\n const signalCatalog = entity?.signalCatalog ?? context.signalCatalog;\n const signalNames = entity ? orderedSignals(signalCatalog, entity.availableSignals) : [];\n const progressQuery = useEntityLearningProgress(\n entityId,\n entityType,\n !entitiesQuery.isPending && !entitiesQuery.isError && entity !== undefined && signalNames.length < 2,\n );\n const snapshotsQuery = useThemeSnapshots(entityId, entityType, signalNames, dateFrom, dateTo);\n const snapshots = snapshotsQuery.data?.snapshots ?? [];\n const sortedSnapshots = snapshots.toSorted((left, right) => left.ordinal - right.ordinal);\n const selectedSnapshot = sortedSnapshots.find(snapshot => snapshot.snapshotId === selectedFrameId);\n const frameId = selectedSnapshot?.snapshotId ?? sortedSnapshots[0]?.snapshotId;\n const pickerRow = dateRangePicker ? (\n <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>\n ) : undefined;\n\n if (entitiesQuery.isPending) return <SignalsLoadingSkeleton />;\n if (entitiesQuery.isError) {\n return (\n <SignalsErrorState message=\"Unable to load trace signal entity.\" onRetry={() => void entitiesQuery.refetch()} />\n );\n }\n if (!entity) {\n return (\n <EmptyState\n titleSlot=\"Trace Intelligence entity not found\"\n descriptionSlot=\"The requested entity is unavailable in this project.\"\n variant=\"fill\"\n />\n );\n }\n if (signalNames.length < 2) {\n return (\n <TraceIntelligenceProvider\n cacheScope={context.cacheScope}\n request={context.request}\n LinkComponent={context.LinkComponent}\n getTraceHref={context.getTraceHref}\n signalCatalog={signalCatalog}\n signalManagement={context.signalManagement}\n >\n <SignalsEmptyState\n LinkComponent={context.LinkComponent}\n progress={progressQuery.data}\n signalCatalog={signalCatalog}\n />\n </TraceIntelligenceProvider>\n );\n }\n if (snapshotsQuery.isPending) {\n return (\n <>\n {pickerRow}\n <SignalsLoadingSkeleton />\n </>\n );\n }\n if (snapshotsQuery.isError) {\n return (\n <>\n {pickerRow}\n <SignalsErrorState message=\"Unable to load trace signal flow.\" onRetry={() => void snapshotsQuery.refetch()} />\n </>\n );\n }\n if (!frameId) {\n return (\n <>\n {pickerRow}\n <SignalsEmptyState LinkComponent={context.LinkComponent} signalCatalog={signalCatalog} isRangeEmpty />\n </>\n );\n }\n\n return (\n <TraceIntelligenceProvider\n cacheScope={context.cacheScope}\n request={context.request}\n LinkComponent={context.LinkComponent}\n getTraceHref={context.getTraceHref}\n signalCatalog={signalCatalog}\n signalManagement={context.signalManagement}\n >\n <SankeySignals\n key={`${entity.entityId}:${signalNames.join(',')}`}\n entityId={entity.entityId}\n entityType={entity.entityType}\n signalNames={signalNames}\n dateFrom={dateFrom}\n dateTo={dateTo}\n selectedThemeId={selectedThemeId}\n onSelectedThemeIdChange={setSelectedThemeId}\n selectedFrameId={frameId}\n onFrameIdChange={setSelectedFrameId}\n dateRangePicker={dateRangePicker}\n />\n </TraceIntelligenceProvider>\n );\n}\n"],"names":["useState","useTraceIntelligence","useThemeEntities","orderedSignals","useEntityLearningProgress","useThemeSnapshots","jsx","SignalsLoadingSkeleton","SignalsErrorState","EmptyState","TraceIntelligenceProvider","SignalsEmptyState","jsxs","Fragment","SankeySignals"],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import { Radar } from 'lucide-react';
|
|
3
2
|
import { useState } from 'react';
|
|
4
3
|
import '@tanstack/react-query';
|
|
5
4
|
import { useTraceIntelligence } from '../use-trace-intelligence.es.js';
|
|
@@ -12,8 +11,7 @@ import { SignalsErrorState } from '../signals-error-state.es.js';
|
|
|
12
11
|
import { SignalsLoadingSkeleton } from '../signals-loading-skeleton.es.js';
|
|
13
12
|
import { TraceIntelligenceProvider } from '../trace-intelligence-provider.es.js';
|
|
14
13
|
import { SignalsEmptyState } from './signals-empty-state.es.js';
|
|
15
|
-
import { E as EmptyState } from '../../../EmptyState-
|
|
16
|
-
import { N as NoDataPageLayout } from '../../../no-data-page-layout-DcVPjj-J.js';
|
|
14
|
+
import { E as EmptyState } from '../../../EmptyState-CiZVWvpH.js';
|
|
17
15
|
|
|
18
16
|
function TraceIntelligenceEntityDetail({
|
|
19
17
|
entityId,
|
|
@@ -47,14 +45,14 @@ function TraceIntelligenceEntityDetail({
|
|
|
47
45
|
return /* @__PURE__ */ jsx(SignalsErrorState, { message: "Unable to load trace signal entity.", onRetry: () => void entitiesQuery.refetch() });
|
|
48
46
|
}
|
|
49
47
|
if (!entity) {
|
|
50
|
-
return /* @__PURE__ */ jsx(
|
|
48
|
+
return /* @__PURE__ */ jsx(
|
|
51
49
|
EmptyState,
|
|
52
50
|
{
|
|
53
|
-
iconSlot: /* @__PURE__ */ jsx(Radar, { "aria-hidden": "true" }),
|
|
54
51
|
titleSlot: "Trace Intelligence entity not found",
|
|
55
|
-
descriptionSlot: "The requested entity is unavailable in this project."
|
|
52
|
+
descriptionSlot: "The requested entity is unavailable in this project.",
|
|
53
|
+
variant: "fill"
|
|
56
54
|
}
|
|
57
|
-
)
|
|
55
|
+
);
|
|
58
56
|
}
|
|
59
57
|
if (signalNames.length < 2) {
|
|
60
58
|
return /* @__PURE__ */ jsx(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-intelligence-entity-detail.es.js","sources":["../../../../src/ee/signals/components/trace-intelligence-entity-detail.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"trace-intelligence-entity-detail.es.js","sources":["../../../../src/ee/signals/components/trace-intelligence-entity-detail.tsx"],"sourcesContent":["import { useState, type ReactNode } from 'react';\n\nimport { useEntityLearningProgress, useThemeEntities, useThemeSnapshots } from '../hooks';\nimport { SankeySignals } from '../sankey-signals';\nimport { orderedSignals } from '../signal-formatting';\nimport { SignalsErrorState } from '../signals-error-state';\nimport { SignalsLoadingSkeleton } from '../signals-loading-skeleton';\nimport { TraceIntelligenceProvider } from '../trace-intelligence-provider';\nimport { useTraceIntelligence } from '../use-trace-intelligence';\nimport { SignalsEmptyState } from './signals-empty-state';\nimport { EmptyState } from '@/ds/components/EmptyState';\n\nexport interface TraceIntelligenceEntityDetailProps {\n entityId: string;\n entityType: string;\n dateFrom?: Date;\n dateTo?: Date;\n dateRangePicker?: ReactNode;\n}\n\nexport function TraceIntelligenceEntityDetail({\n entityId,\n entityType,\n dateFrom,\n dateTo,\n dateRangePicker,\n}: TraceIntelligenceEntityDetailProps) {\n const [selectedThemeId, setSelectedThemeId] = useState<string>();\n const [selectedFrameId, setSelectedFrameId] = useState<string>();\n const context = useTraceIntelligence();\n const entitiesQuery = useThemeEntities(entityType);\n const entity = entitiesQuery.data?.entities.find(\n candidate => candidate.entityType === entityType && candidate.entityId === entityId,\n );\n const signalCatalog = entity?.signalCatalog ?? context.signalCatalog;\n const signalNames = entity ? orderedSignals(signalCatalog, entity.availableSignals) : [];\n const progressQuery = useEntityLearningProgress(\n entityId,\n entityType,\n !entitiesQuery.isPending && !entitiesQuery.isError && entity !== undefined && signalNames.length < 2,\n );\n const snapshotsQuery = useThemeSnapshots(entityId, entityType, signalNames, dateFrom, dateTo);\n const snapshots = snapshotsQuery.data?.snapshots ?? [];\n const sortedSnapshots = snapshots.toSorted((left, right) => left.ordinal - right.ordinal);\n const selectedSnapshot = sortedSnapshots.find(snapshot => snapshot.snapshotId === selectedFrameId);\n const frameId = selectedSnapshot?.snapshotId ?? sortedSnapshots[0]?.snapshotId;\n const pickerRow = dateRangePicker ? (\n <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>\n ) : undefined;\n\n if (entitiesQuery.isPending) return <SignalsLoadingSkeleton />;\n if (entitiesQuery.isError) {\n return (\n <SignalsErrorState message=\"Unable to load trace signal entity.\" onRetry={() => void entitiesQuery.refetch()} />\n );\n }\n if (!entity) {\n return (\n <EmptyState\n titleSlot=\"Trace Intelligence entity not found\"\n descriptionSlot=\"The requested entity is unavailable in this project.\"\n variant=\"fill\"\n />\n );\n }\n if (signalNames.length < 2) {\n return (\n <TraceIntelligenceProvider\n cacheScope={context.cacheScope}\n request={context.request}\n LinkComponent={context.LinkComponent}\n getTraceHref={context.getTraceHref}\n signalCatalog={signalCatalog}\n signalManagement={context.signalManagement}\n >\n <SignalsEmptyState\n LinkComponent={context.LinkComponent}\n progress={progressQuery.data}\n signalCatalog={signalCatalog}\n />\n </TraceIntelligenceProvider>\n );\n }\n if (snapshotsQuery.isPending) {\n return (\n <>\n {pickerRow}\n <SignalsLoadingSkeleton />\n </>\n );\n }\n if (snapshotsQuery.isError) {\n return (\n <>\n {pickerRow}\n <SignalsErrorState message=\"Unable to load trace signal flow.\" onRetry={() => void snapshotsQuery.refetch()} />\n </>\n );\n }\n if (!frameId) {\n return (\n <>\n {pickerRow}\n <SignalsEmptyState LinkComponent={context.LinkComponent} signalCatalog={signalCatalog} isRangeEmpty />\n </>\n );\n }\n\n return (\n <TraceIntelligenceProvider\n cacheScope={context.cacheScope}\n request={context.request}\n LinkComponent={context.LinkComponent}\n getTraceHref={context.getTraceHref}\n signalCatalog={signalCatalog}\n signalManagement={context.signalManagement}\n >\n <SankeySignals\n key={`${entity.entityId}:${signalNames.join(',')}`}\n entityId={entity.entityId}\n entityType={entity.entityType}\n signalNames={signalNames}\n dateFrom={dateFrom}\n dateTo={dateTo}\n selectedThemeId={selectedThemeId}\n onSelectedThemeIdChange={setSelectedThemeId}\n selectedFrameId={frameId}\n onFrameIdChange={setSelectedFrameId}\n dateRangePicker={dateRangePicker}\n />\n </TraceIntelligenceProvider>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -16,25 +16,24 @@ const ee_signals_components_entityIndexModel = require('./entity-index-model.cjs
|
|
|
16
16
|
const Button = require('../../../Button-CVewl8nT.cjs');
|
|
17
17
|
const buttonsGroup = require('../../../buttons-group-BiLEV_Ak.cjs');
|
|
18
18
|
const dataListSkeleton = require('../../../data-list-skeleton-ADXw-opu.cjs');
|
|
19
|
-
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
const PermissionDenied = require('../../../PermissionDenied-Dz5qXpQj.cjs');
|
|
19
|
+
require('../../../keyboard/keyboard-shortcuts-context.cjs.js');
|
|
20
|
+
const EmptyState = require('../../../EmptyState-0MgNiP40.cjs');
|
|
21
|
+
const ErrorState = require('../../../ErrorState-C7-4A-rB.cjs');
|
|
22
|
+
const listSearch = require('../../../list-search-BEDvqI5f.cjs');
|
|
23
|
+
const PermissionDenied = require('../../../PermissionDenied-CwLIzjpC.cjs');
|
|
25
24
|
const select = require('../../../select-7ACAVdGX.cjs');
|
|
26
|
-
const SessionExpired = require('../../../SessionExpired-
|
|
25
|
+
const SessionExpired = require('../../../SessionExpired-07Lz91i3.cjs');
|
|
27
26
|
const utils_queryUtils = require('../../../utils/query-utils.cjs.js');
|
|
28
27
|
|
|
29
28
|
const listColumns = "minmax(12rem,1.5fr) minmax(7rem,0.6fr) minmax(8rem,0.7fr) minmax(8rem,0.7fr) minmax(12rem,1fr)";
|
|
30
29
|
function EntityIndexError({ error }) {
|
|
31
30
|
if (utils_queryUtils.is401UnauthorizedError(error)) {
|
|
32
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
31
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-full items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(SessionExpired.SessionExpired, {}) });
|
|
33
32
|
}
|
|
34
33
|
if (utils_queryUtils.is403ForbiddenError(error)) {
|
|
35
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
34
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-full items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(PermissionDenied.PermissionDenied, { resource: "Trace Intelligence" }) });
|
|
36
35
|
}
|
|
37
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
36
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-full items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(ErrorState.ErrorState, { title: "Failed to load Trace Intelligence", message: error.message }) });
|
|
38
37
|
}
|
|
39
38
|
function EntityIndexControls({
|
|
40
39
|
search,
|
|
@@ -130,7 +129,6 @@ function TraceIntelligenceEntityIndex({
|
|
|
130
129
|
body = /* @__PURE__ */ jsxRuntime.jsx(
|
|
131
130
|
EmptyState.EmptyState,
|
|
132
131
|
{
|
|
133
|
-
iconSlot: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleSlashIcon, { "aria-hidden": "true" }),
|
|
134
132
|
titleSlot: "No Trace Intelligence entities yet",
|
|
135
133
|
descriptionSlot: "Entities appear after Trace Intelligence begins collecting generated signal data."
|
|
136
134
|
}
|
|
@@ -146,8 +144,8 @@ function TraceIntelligenceEntityIndex({
|
|
|
146
144
|
}
|
|
147
145
|
);
|
|
148
146
|
}
|
|
149
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
150
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
147
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mx-auto grid size-full min-h-0 max-w-7xl grid-rows-[auto_minmax(0,1fr)]", children: [
|
|
148
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "pb-3", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
151
149
|
EntityIndexControls,
|
|
152
150
|
{
|
|
153
151
|
search,
|