@mastra/playground-ui 65.0.0-alpha.8 → 65.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ask-user-card-DnvW7jXS.js → ask-user-card-B9q_GFTt.js} +2 -2
- package/dist/{ask-user-card-DnvW7jXS.js.map → ask-user-card-B9q_GFTt.js.map} +1 -1
- package/dist/{ask-user-card-DiFQcUzM.cjs → ask-user-card-C-N5rpYG.cjs} +2 -2
- package/dist/{ask-user-card-DiFQcUzM.cjs.map → ask-user-card-C-N5rpYG.cjs.map} +1 -1
- package/dist/{code-block-CAV4Flrx.cjs → code-block-BSJzgBt1.cjs} +2 -2
- package/dist/{code-block-CAV4Flrx.cjs.map → code-block-BSJzgBt1.cjs.map} +1 -1
- package/dist/{code-block-BB-5HSl3.js → code-block-JWCkGm3Q.js} +2 -2
- package/dist/{code-block-BB-5HSl3.js.map → code-block-JWCkGm3Q.js.map} +1 -1
- package/dist/{code-editor-CbyCb7CW.cjs → code-editor-4ukTuvqG.cjs} +18 -2
- package/dist/code-editor-4ukTuvqG.cjs.map +1 -0
- package/dist/{code-editor-DOv4jc-0.js → code-editor-8qu58Npy.js} +18 -2
- package/dist/code-editor-8qu58Npy.js.map +1 -0
- package/dist/{combobox-BCoCVZHs.js → combobox-Cff50hgT.js} +37 -49
- package/dist/combobox-Cff50hgT.js.map +1 -0
- package/dist/{combobox-DbZAWh8q.cjs → combobox-RlGW9Erz.cjs} +37 -49
- package/dist/combobox-RlGW9Erz.cjs.map +1 -0
- package/dist/components/BillingIllustration.cjs.js +524 -1
- package/dist/components/BillingIllustration.cjs.js.map +1 -1
- package/dist/components/BillingIllustration.es.js +524 -1
- package/dist/components/BillingIllustration.es.js.map +1 -1
- package/dist/components/Button.cjs.js +1 -1
- package/dist/components/Button.es.js +1 -1
- package/dist/components/CodeBlock.cjs.js +1 -1
- package/dist/components/CodeBlock.es.js +1 -1
- package/dist/components/CodeEditor.cjs.js +1 -1
- package/dist/components/CodeEditor.es.js +1 -1
- package/dist/components/Combobox.cjs.js +1 -1
- package/dist/components/Combobox.es.js +1 -1
- package/dist/components/CommandPalette.cjs.js +1 -1
- package/dist/components/CommandPalette.es.js +1 -1
- package/dist/components/Comment.cjs.js +1 -1
- package/dist/components/Comment.es.js +1 -1
- package/dist/components/DataCodeSection.cjs.js +1 -1
- package/dist/components/DataCodeSection.es.js +1 -1
- package/dist/components/DataList.cjs.js +15 -17
- package/dist/components/DataList.cjs.js.map +1 -1
- package/dist/components/DataList.es.js +4 -5
- package/dist/components/DataList.es.js.map +1 -1
- package/dist/components/DataPanel.cjs.js +1 -1
- package/dist/components/DataPanel.es.js +1 -1
- package/dist/components/DateTimePicker.cjs.js +2 -2
- package/dist/components/DateTimePicker.es.js +2 -2
- package/dist/components/DateTimeRangePicker.cjs.js +1 -1
- package/dist/components/DateTimeRangePicker.es.js +1 -1
- package/dist/components/EnvironmentVariablesEditor.cjs.js +2 -2
- package/dist/components/EnvironmentVariablesEditor.es.js +2 -2
- package/dist/components/Field.cjs.js +1 -1
- package/dist/components/Field.es.js +1 -1
- package/dist/components/FilterBar.cjs.js +8 -844
- package/dist/components/FilterBar.cjs.js.map +1 -1
- package/dist/components/FilterBar.es.js +4 -841
- package/dist/components/FilterBar.es.js.map +1 -1
- package/dist/components/FormFieldBlocks.cjs.js +1 -1
- package/dist/components/FormFieldBlocks.es.js +1 -1
- package/dist/components/JSONSchemaForm.cjs.js +2 -2
- package/dist/components/JSONSchemaForm.es.js +2 -2
- package/dist/components/Kbd.cjs.js +1 -1
- package/dist/components/Kbd.es.js +1 -1
- package/dist/components/ListSearch.cjs.js +1 -1
- package/dist/components/ListSearch.es.js +1 -1
- package/dist/components/LogsDataList.cjs.js +5 -2
- package/dist/components/LogsDataList.cjs.js.map +1 -1
- package/dist/components/LogsDataList.es.js +5 -2
- package/dist/components/LogsDataList.es.js.map +1 -1
- package/dist/components/MarkdownRenderer.cjs.js +1 -1
- package/dist/components/MarkdownRenderer.es.js +1 -1
- package/dist/components/PageLayout.cjs.js +3 -56
- package/dist/components/PageLayout.cjs.js.map +1 -1
- package/dist/components/PageLayout.es.js +1 -58
- package/dist/components/PageLayout.es.js.map +1 -1
- package/dist/components/PropertyFilter.cjs.js +2 -2
- package/dist/components/PropertyFilter.es.js +2 -2
- package/dist/components/RuleBuilder.cjs.js +1 -1
- package/dist/components/RuleBuilder.es.js +1 -1
- package/dist/components/SavedViews.cjs.js +1 -1
- package/dist/components/SavedViews.es.js +1 -1
- package/dist/components/SearchInput.cjs.js +1 -1
- package/dist/components/SearchInput.es.js +1 -1
- package/dist/components/Section.cjs.js +1 -1
- package/dist/components/Section.es.js +1 -1
- package/dist/components/Select.cjs.js +2 -1
- package/dist/components/Select.cjs.js.map +1 -1
- package/dist/components/Select.es.js +1 -1
- package/dist/components/SideDialog.cjs.js +225 -2
- package/dist/components/SideDialog.cjs.js.map +1 -1
- package/dist/components/SideDialog.es.js +210 -1
- package/dist/components/SideDialog.es.js.map +1 -1
- package/dist/components/Sidebar.cjs.js +64 -60
- package/dist/components/Sidebar.cjs.js.map +1 -1
- package/dist/components/Sidebar.es.js +65 -62
- package/dist/components/Sidebar.es.js.map +1 -1
- package/dist/components/Workflow.cjs.js +3 -3
- package/dist/components/Workflow.es.js +3 -3
- package/dist/components/ai/activity.cjs.js +2 -2
- package/dist/components/ai/activity.es.js +2 -2
- package/dist/components/ai/ask-user.cjs.js +1 -1
- package/dist/components/ai/ask-user.es.js +1 -1
- package/dist/components/ai/plan.cjs.js +1 -1
- package/dist/components/ai/plan.es.js +1 -1
- package/dist/components/ai/tool-approval.cjs.js +1 -1
- package/dist/components/ai/tool-approval.es.js +1 -1
- package/dist/components/ai/tool-call.cjs.js +1 -1
- package/dist/components/ai/tool-call.es.js +1 -1
- package/dist/{data-code-section-BjyHoHEB.cjs → data-code-section-BsvdKW08.cjs} +2 -2
- package/dist/{data-code-section-BjyHoHEB.cjs.map → data-code-section-BsvdKW08.cjs.map} +1 -1
- package/dist/{data-code-section-BWzfg-1n.js → data-code-section-y1BMLr3c.js} +2 -2
- package/dist/{data-code-section-BWzfg-1n.js.map → data-code-section-y1BMLr3c.js.map} +1 -1
- package/dist/{data-list-top-DJh08vFA.cjs → data-list-4t6Ueon8.cjs} +365 -16
- package/dist/data-list-4t6Ueon8.cjs.map +1 -0
- package/dist/{data-list-top-T-mtdIUp.js → data-list-BQMBFAyK.js} +357 -7
- package/dist/data-list-BQMBFAyK.js.map +1 -0
- package/dist/{data-list-skeleton-sdcaabdX.cjs → data-list-skeleton-CVXZYY0k.cjs} +6 -6
- package/dist/{data-list-skeleton-sdcaabdX.cjs.map → data-list-skeleton-CVXZYY0k.cjs.map} +1 -1
- package/dist/{data-list-skeleton-bNfITSHs.js → data-list-skeleton-D54r1ycU.js} +3 -3
- package/dist/{data-list-skeleton-bNfITSHs.js.map → data-list-skeleton-D54r1ycU.js.map} +1 -1
- package/dist/{data-panel-CUqcB4Vn.js → data-panel-DSgidnnv.js} +2 -2
- package/dist/{data-panel-CUqcB4Vn.js.map → data-panel-DSgidnnv.js.map} +1 -1
- package/dist/{data-panel-CGRPVnEe.cjs → data-panel-xqrai98b.cjs} +2 -2
- package/dist/{data-panel-CGRPVnEe.cjs.map → data-panel-xqrai98b.cjs.map} +1 -1
- package/dist/{date-time-range-picker-CcnDMZJu.js → date-time-range-picker-BnYWCqei.js} +3 -3
- package/dist/{date-time-range-picker-CcnDMZJu.js.map → date-time-range-picker-BnYWCqei.js.map} +1 -1
- package/dist/{date-time-range-picker-CXGab8Nj.cjs → date-time-range-picker-_2RJBOUn.cjs} +3 -3
- package/dist/{date-time-range-picker-CXGab8Nj.cjs.map → date-time-range-picker-_2RJBOUn.cjs.map} +1 -1
- package/dist/domains/capabilities.cjs.js +4 -0
- package/dist/domains/capabilities.cjs.js.map +1 -1
- package/dist/domains/capabilities.es.js +1 -1
- package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +1 -1
- package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +1 -1
- package/dist/domains/chat/messages/dataset-save-action.cjs.js +4 -3
- package/dist/domains/chat/messages/dataset-save-action.cjs.js.map +1 -1
- package/dist/domains/chat/messages/dataset-save-action.es.js +4 -3
- package/dist/domains/chat/messages/dataset-save-action.es.js.map +1 -1
- package/dist/domains/chat/messages/message-row.cjs.js +1 -1
- package/dist/domains/chat/messages/message-row.es.js +1 -1
- package/dist/domains/chat/messages/notification-signal-notice.cjs.js +23 -3
- package/dist/domains/chat/messages/notification-signal-notice.cjs.js.map +1 -1
- package/dist/domains/chat/messages/notification-signal-notice.es.js +24 -6
- package/dist/domains/chat/messages/notification-signal-notice.es.js.map +1 -1
- package/dist/domains/chat/messages/renderers/message-text.cjs.js +1 -1
- package/dist/domains/chat/messages/renderers/message-text.es.js +1 -1
- package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
- package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
- package/dist/domains/chat/messages/signal-data.cjs.js +12 -0
- package/dist/domains/chat/messages/signal-data.cjs.js.map +1 -1
- package/dist/domains/chat/messages/signal-data.es.js +12 -1
- package/dist/domains/chat/messages/signal-data.es.js.map +1 -1
- package/dist/domains/chat/messages/skill-message.cjs.js +1 -1
- package/dist/domains/chat/messages/skill-message.es.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge.cjs.js +2 -2
- package/dist/domains/chat/tools/badges/agent-badge.es.js +2 -2
- package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/background-task-metadata-dialog.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js +1 -1
- package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +2 -2
- package/dist/domains/chat/tools/badges/code-mode-badge.es.js +2 -2
- package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/file-tree-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-details.es.js +1 -1
- package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
- package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/tool-badge.cjs.js +2 -2
- package/dist/domains/chat/tools/badges/tool-badge.es.js +2 -2
- package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +5 -1
- package/dist/domains/chat/tools/badges/workflow-badge.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/workflow-badge.es.js +5 -1
- package/dist/domains/chat/tools/badges/workflow-badge.es.js.map +1 -1
- package/dist/domains/chat/tools/submit-plan-tool.cjs.js +1 -1
- package/dist/domains/chat/tools/submit-plan-tool.es.js +1 -1
- package/dist/domains/chat/tools/tool-card.cjs.js +1 -1
- package/dist/domains/chat/tools/tool-card.es.js +1 -1
- package/dist/domains/chat.cjs.js +1 -0
- package/dist/domains/chat.cjs.js.map +1 -1
- package/dist/domains/chat.es.js +1 -1
- package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.cjs.js +334 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.cjs.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.d.ts +2 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.es.js +330 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.es.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/build-add-item-payload.cjs.js +78 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/build-add-item-payload.cjs.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/build-add-item-payload.d.ts +2 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/build-add-item-payload.es.js +74 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/build-add-item-payload.es.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/collapsible-settings-row.cjs.js +25 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/collapsible-settings-row.cjs.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/collapsible-settings-row.d.ts +2 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/collapsible-settings-row.es.js +21 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/collapsible-settings-row.es.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-field-errors.cjs.js +22 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-field-errors.cjs.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-field-errors.d.ts +2 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-field-errors.es.js +18 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-field-errors.es.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-picker.cjs.js +54 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-picker.cjs.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-picker.d.ts +2 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-picker.es.js +50 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-picker.es.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/field-errors.cjs.js +21 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/field-errors.cjs.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/field-errors.d.ts +2 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/field-errors.es.js +17 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/field-errors.es.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.cjs.js +180 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.cjs.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.d.ts +2 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.es.js +176 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.es.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-types.cjs.js +57 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-types.cjs.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-types.d.ts +2 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-types.es.js +45 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-types.es.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/use-target-agent-tools.cjs.js +17 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/use-target-agent-tools.cjs.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/use-target-agent-tools.d.ts +2 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/use-target-agent-tools.es.js +13 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/use-target-agent-tools.es.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog.cjs.js +10 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog.cjs.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog.d.ts +2 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog.es.js +2 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog.es.js.map +1 -0
- package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js +4 -4
- package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js +4 -4
- package/dist/domains/datasets/components.cjs.js +2 -0
- package/dist/domains/datasets/components.cjs.js.map +1 -1
- package/dist/domains/datasets/components.es.js +1 -0
- package/dist/domains/datasets/components.es.js.map +1 -1
- package/dist/domains/datasets.cjs.js +2 -0
- package/dist/domains/datasets.cjs.js.map +1 -1
- package/dist/domains/datasets.es.js +1 -0
- package/dist/domains/datasets.es.js.map +1 -1
- package/dist/domains/logs/components/log-data-panel.cjs.js +1 -1
- package/dist/domains/logs/components/log-data-panel.es.js +1 -1
- package/dist/domains/logs/components/logs-list-view.cjs.js +3 -2
- package/dist/domains/logs/components/logs-list-view.cjs.js.map +1 -1
- package/dist/domains/logs/components/logs-list-view.es.js +3 -2
- package/dist/domains/logs/components/logs-list-view.es.js.map +1 -1
- package/dist/domains/logs/hooks/use-logs-filter-persistence.cjs.js.map +1 -1
- package/dist/domains/logs/hooks/use-logs-filter-persistence.es.js.map +1 -1
- package/dist/domains/logs/hooks/use-logs-url-state.cjs.js.map +1 -1
- package/dist/domains/logs/hooks/use-logs-url-state.es.js.map +1 -1
- package/dist/domains/memory/components/observation-detail-view.cjs.js +1 -1
- package/dist/domains/memory/components/observation-detail-view.es.js +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/drilldown.cjs.js +1 -1
- package/dist/domains/metrics/drilldown.es.js +1 -1
- package/dist/domains/metrics/metrics-filters.cjs.js +1 -1
- package/dist/domains/metrics/metrics-filters.es.js +1 -1
- package/dist/domains/observability/components/trace-as-item-dialog.cjs.js +45 -38
- package/dist/domains/observability/components/trace-as-item-dialog.cjs.js.map +1 -1
- package/dist/domains/observability/components/trace-as-item-dialog.es.js +45 -38
- package/dist/domains/observability/components/trace-as-item-dialog.es.js.map +1 -1
- package/dist/domains/scores/components/score-as-item-dialog.cjs.js +1 -0
- package/dist/domains/scores/components/score-as-item-dialog.cjs.js.map +1 -1
- package/dist/domains/scores/components/score-as-item-dialog.es.js +1 -0
- package/dist/domains/scores/components/score-as-item-dialog.es.js.map +1 -1
- package/dist/domains/scores/components/score-data-panel.cjs.js +1 -1
- package/dist/domains/scores/components/score-data-panel.es.js +1 -1
- package/dist/domains/scores/components/span-scoring.cjs.js +1 -1
- package/dist/domains/scores/components/span-scoring.es.js +1 -1
- package/dist/domains/scores/components/trace-scores-tab.cjs.js +2 -1
- package/dist/domains/scores/components/trace-scores-tab.cjs.js.map +1 -1
- package/dist/domains/scores/components/trace-scores-tab.es.js +2 -1
- package/dist/domains/scores/components/trace-scores-tab.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 +2 -2
- package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +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 +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +1 -1
- 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-view-by-trace.cjs.js +2 -0
- package/dist/domains/traces/components/thread-view-by-trace.cjs.js.map +1 -1
- package/dist/domains/traces/components/thread-view-by-trace.es.js +2 -0
- package/dist/domains/traces/components/thread-view-by-trace.es.js.map +1 -1
- package/dist/domains/traces/components/trace-columns-menu.cjs.js +2 -2
- package/dist/domains/traces/components/trace-columns-menu.es.js +2 -2
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js +3 -8
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel-view.es.js +4 -9
- package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel.cjs.js +4 -0
- package/dist/domains/traces/components/trace-data-panel.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel.es.js +4 -0
- package/dist/domains/traces/components/trace-data-panel.es.js.map +1 -1
- package/dist/domains/traces/components/trace-error-cell.cjs.js +3 -1
- package/dist/domains/traces/components/trace-error-cell.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-error-cell.es.js +3 -1
- package/dist/domains/traces/components/trace-error-cell.es.js.map +1 -1
- package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
- package/dist/domains/traces/components/trace-id-button.es.js +1 -1
- package/dist/domains/traces/components/trace-span-panel.cjs.js +0 -2
- package/dist/domains/traces/components/trace-span-panel.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-span-panel.es.js +0 -2
- package/dist/domains/traces/components/trace-span-panel.es.js.map +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-thread-panel.cjs.js +1 -1
- package/dist/domains/traces/components/trace-thread-panel.es.js +1 -1
- package/dist/domains/traces/components/trace-time-range-chip.cjs.js +3 -3
- package/dist/domains/traces/components/trace-time-range-chip.es.js +3 -3
- package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.cjs.js +117 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.cjs.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.d.ts +2 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.es.js +94 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.es.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-auto-refresh.cjs.js +20 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-auto-refresh.cjs.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-auto-refresh.d.ts +2 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-auto-refresh.es.js +16 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-auto-refresh.es.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-menu.cjs.js +39 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-menu.cjs.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-menu.d.ts +2 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-menu.es.js +35 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-menu.es.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-provider.cjs.js +16 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-provider.cjs.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-provider.d.ts +2 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-provider.es.js +12 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-provider.es.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-context.cjs.js +56 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-context.cjs.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-context.d.ts +2 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-context.es.js +40 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-context.es.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.cjs.js +78 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.cjs.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.d.ts +2 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.es.js +72 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.es.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-layout.cjs.js +52 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-layout.cjs.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-layout.d.ts +2 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-layout.es.js +48 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-layout.es.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.cjs.js +71 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.cjs.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.d.ts +2 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.es.js +67 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.es.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list.cjs.js +58 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list.cjs.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list.d.ts +2 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list.es.js +54 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list.es.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.cjs.js +134 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.cjs.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.d.ts +2 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.es.js +130 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.es.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-root.cjs.js +154 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-root.cjs.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-root.d.ts +2 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-root.es.js +150 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-root.es.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/use-traces-discovery.cjs.js +14 -0
- package/dist/domains/traces/components/traces-explorer/use-traces-discovery.cjs.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/use-traces-discovery.d.ts +2 -0
- package/dist/domains/traces/components/traces-explorer/use-traces-discovery.es.js +10 -0
- package/dist/domains/traces/components/traces-explorer/use-traces-discovery.es.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.cjs.js +86 -0
- package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.cjs.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.d.ts +2 -0
- package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.es.js +81 -0
- package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.es.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer.cjs.js +42 -0
- package/dist/domains/traces/components/traces-explorer.cjs.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer.d.ts +2 -0
- package/dist/domains/traces/components/traces-explorer.es.js +25 -0
- package/dist/domains/traces/components/traces-explorer.es.js.map +1 -0
- package/dist/domains/traces/components/traces-list-view.cjs.js +4 -5
- package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-list-view.es.js +3 -4
- package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
- package/dist/domains/traces/components/traces-page-skeleton.cjs.js +4 -1
- package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-page-skeleton.es.js +4 -1
- package/dist/domains/traces/components/traces-page-skeleton.es.js.map +1 -1
- package/dist/domains/traces/hooks/use-traces-list-source.cjs.js +38 -10
- package/dist/domains/traces/hooks/use-traces-list-source.cjs.js.map +1 -1
- package/dist/domains/traces/hooks/use-traces-list-source.es.js +39 -13
- package/dist/domains/traces/hooks/use-traces-list-source.es.js.map +1 -1
- package/dist/domains/traces/hooks.cjs.js +0 -4
- package/dist/domains/traces/hooks.cjs.js.map +1 -1
- package/dist/domains/traces/hooks.es.js +0 -2
- package/dist/domains/traces/hooks.es.js.map +1 -1
- package/dist/domains/traces/trace-filters.cjs.js +1 -1
- package/dist/domains/traces/trace-filters.es.js +1 -1
- package/dist/domains/traces/trace-query-filters.cjs.js +2 -1
- package/dist/domains/traces/trace-query-filters.cjs.js.map +1 -1
- package/dist/domains/traces/trace-query-filters.es.js +1 -1
- package/dist/domains/traces.cjs.js +2 -5
- package/dist/domains/traces.cjs.js.map +1 -1
- package/dist/domains/traces.es.js +1 -3
- package/dist/domains/traces.es.js.map +1 -1
- package/dist/domains/workflows/components/workflow-combobox.cjs.js +1 -1
- package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
- package/dist/domains/workflows/components/workflow-step-detail.cjs.js +2 -2
- package/dist/domains/workflows/components/workflow-step-detail.es.js +2 -2
- package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +2 -2
- package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +2 -2
- package/dist/domains/workflows/workflow/data/workflow-data-button.cjs.js +1 -1
- package/dist/domains/workflows/workflow/data/workflow-data-button.es.js +1 -1
- package/dist/domains/workflows/workflow/data/workflow-data-inspector.cjs.js +1 -1
- package/dist/domains/workflows/workflow/data/workflow-data-inspector.es.js +1 -1
- package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js +2 -2
- package/dist/domains/workflows/workflow/input/workflow-json-input.es.js +2 -2
- package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js +2 -2
- package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js +2 -2
- package/dist/domains/workflows/workflow/use-workflow-graph-runtime.cjs.js +1 -1
- package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-body-graph.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-body-graph.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-data-edge.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-data-edge.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-debug-mode-switch.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-debug-mode-switch.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-inner.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-node.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-node.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-map-config-dialog.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-map-config-dialog.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-nested-graph.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-run-data.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-run-data.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-status.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-status.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-step-action-bar.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-step-action-bar.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-suspended-steps.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +2 -2
- package/dist/domains/workspace/components/workspace-active-file.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-active-file.es.js +1 -1
- package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +4 -4
- package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +4 -4
- package/dist/domains/workspace/components/workspace-markdown-preview.cjs.js +2 -2
- package/dist/domains/workspace/components/workspace-markdown-preview.es.js +2 -2
- package/dist/ee/signals/components/entity-index-list.cjs.js +3 -1
- package/dist/ee/signals/components/entity-index-list.cjs.js.map +1 -1
- package/dist/ee/signals/components/entity-index-list.es.js +3 -1
- package/dist/ee/signals/components/entity-index-list.es.js.map +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +5 -3
- 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 +5 -3
- package/dist/ee/signals/components/trace-intelligence-entity-index.es.js.map +1 -1
- package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +1 -1
- package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +1 -1
- package/dist/ee/signals/trace-intelligence-explainer.cjs.js +1 -0
- package/dist/ee/signals/trace-intelligence-explainer.cjs.js.map +1 -1
- package/dist/ee/signals/trace-intelligence-explainer.es.js +1 -0
- package/dist/ee/signals/trace-intelligence-explainer.es.js.map +1 -1
- package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +2 -2
- package/dist/ee/topics/components/topic-trace-summary-list.es.js +2 -2
- package/dist/{field-BCU5ZtWV.cjs → field-CZ5fldpM.cjs} +2 -1
- package/dist/{field-BCU5ZtWV.cjs.map → field-CZ5fldpM.cjs.map} +1 -1
- package/dist/{field-Dl1zeXTv.js → field-CfA5-ixH.js} +2 -1
- package/dist/{field-Dl1zeXTv.js.map → field-CfA5-ixH.js.map} +1 -1
- package/dist/filter-bar-CjBb01b6.cjs +849 -0
- package/dist/filter-bar-CjBb01b6.cjs.map +1 -0
- package/dist/{filter-bar-chip-DgvuQv6c.cjs → filter-bar-chip-C_64m7nX.cjs} +2 -2
- package/dist/{filter-bar-chip-DgvuQv6c.cjs.map → filter-bar-chip-C_64m7nX.cjs.map} +1 -1
- package/dist/{filter-bar-chip-C9CXOudu.js → filter-bar-chip-D2kKMSRA.js} +3 -3
- package/dist/{filter-bar-chip-C9CXOudu.js.map → filter-bar-chip-D2kKMSRA.js.map} +1 -1
- package/dist/filter-bar-pXSJt2ye.js +842 -0
- package/dist/filter-bar-pXSJt2ye.js.map +1 -0
- package/dist/{kbd-Xgv5HKEi.cjs → kbd-B2zbS_A6.cjs} +2 -2
- package/dist/{kbd-Xgv5HKEi.cjs.map → kbd-B2zbS_A6.cjs.map} +1 -1
- package/dist/{kbd-7Xx2pm9f.js → kbd-CYtMrOov.js} +2 -2
- package/dist/{kbd-7Xx2pm9f.js.map → kbd-CYtMrOov.js.map} +1 -1
- package/dist/layout/tabbed-container.cjs.js +3 -3
- package/dist/layout/tabbed-container.es.js +3 -3
- package/dist/lib/form/components/boolean-field.cjs.js +1 -1
- package/dist/lib/form/components/boolean-field.es.js +1 -1
- package/dist/lib/form/components/field-wrapper.cjs.js +1 -1
- package/dist/lib/form/components/field-wrapper.es.js +1 -1
- package/dist/lib/form/components/select-field.cjs.js +1 -1
- package/dist/lib/form/components/select-field.es.js +1 -1
- package/dist/{list-search-ByJdIxIh.js → list-search-8jVOq9LK.js} +2 -2
- package/dist/{list-search-ByJdIxIh.js.map → list-search-8jVOq9LK.js.map} +1 -1
- package/dist/{list-search-DNJVeHmK.cjs → list-search-C7ckmZHa.cjs} +2 -2
- package/dist/{list-search-DNJVeHmK.cjs.map → list-search-C7ckmZHa.cjs.map} +1 -1
- package/dist/{logs-data-list-DCj8Pj77.cjs → logs-data-list-C4Z4rw62.cjs} +21 -22
- package/dist/{logs-data-list-DCj8Pj77.cjs.map → logs-data-list-C4Z4rw62.cjs.map} +1 -1
- package/dist/{logs-data-list-Db5dBRmc.js → logs-data-list-CL3iq_6r.js} +2 -3
- package/dist/{logs-data-list-Db5dBRmc.js.map → logs-data-list-CL3iq_6r.js.map} +1 -1
- package/dist/{markdown-renderer-CQ_pSSO7.cjs → markdown-renderer-73CdjgS4.cjs} +2 -2
- package/dist/{markdown-renderer-CQ_pSSO7.cjs.map → markdown-renderer-73CdjgS4.cjs.map} +1 -1
- package/dist/{markdown-renderer-DEoJ5aBR.js → markdown-renderer-Qv9-1YIp.js} +2 -2
- package/dist/{markdown-renderer-DEoJ5aBR.js.map → markdown-renderer-Qv9-1YIp.js.map} +1 -1
- package/dist/new/settings.cjs.js +3 -2
- package/dist/new/settings.cjs.js.map +1 -1
- package/dist/new/settings.es.js +2 -1
- package/dist/new/settings.es.js.map +1 -1
- package/dist/{notification-activity-BWXHmlTn.js → notification-activity-BRW1Xlj1.js} +9 -5
- package/dist/notification-activity-BRW1Xlj1.js.map +1 -0
- package/dist/{notification-activity-BSNuqJDd.cjs → notification-activity-DAZOALWI.cjs} +9 -5
- package/dist/notification-activity-DAZOALWI.cjs.map +1 -0
- package/dist/page-layout-D1AXJJrp.cjs +61 -0
- package/dist/page-layout-D1AXJJrp.cjs.map +1 -0
- package/dist/page-layout-DCMg_kJB.js +59 -0
- package/dist/page-layout-DCMg_kJB.js.map +1 -0
- package/dist/{plan-TYss51JK.cjs → plan-DBvoFFHO.cjs} +2 -2
- package/dist/{plan-TYss51JK.cjs.map → plan-DBvoFFHO.cjs.map} +1 -1
- package/dist/{plan-B6td0b8h.js → plan-TBs5kj_X.js} +2 -2
- package/dist/{plan-B6td0b8h.js.map → plan-TBs5kj_X.js.map} +1 -1
- package/dist/{reasoning-activity-I5-HcGou.cjs → reasoning-activity-BrZbS7pa.cjs} +2 -2
- package/dist/{reasoning-activity-I5-HcGou.cjs.map → reasoning-activity-BrZbS7pa.cjs.map} +1 -1
- package/dist/{reasoning-activity-Dz2hk9pU.js → reasoning-activity-CyMhxRL2.js} +2 -2
- package/dist/{reasoning-activity-Dz2hk9pU.js.map → reasoning-activity-CyMhxRL2.js.map} +1 -1
- package/dist/resize/collapsible-panel.cjs.js +1 -1
- package/dist/resize/collapsible-panel.es.js +1 -1
- package/dist/{search-input-CMNy0JWd.cjs → search-input-CGNENJDh.cjs} +2 -2
- package/dist/{search-input-CMNy0JWd.cjs.map → search-input-CGNENJDh.cjs.map} +1 -1
- package/dist/{search-input-C9qFBzn6.js → search-input-cIYk0pl3.js} +2 -2
- package/dist/{search-input-C9qFBzn6.js.map → search-input-cIYk0pl3.js.map} +1 -1
- package/dist/{section-CctlZIXp.cjs → section-BikCyHdf.cjs} +4 -3
- package/dist/{section-CctlZIXp.cjs.map → section-BikCyHdf.cjs.map} +1 -1
- package/dist/{section-D0hKTVXt.js → section-C71zDLKM.js} +3 -2
- package/dist/{section-D0hKTVXt.js.map → section-C71zDLKM.js.map} +1 -1
- package/dist/{select-A3AFKLd9.cjs → select-BqHt-fOI.cjs} +12 -1
- package/dist/select-BqHt-fOI.cjs.map +1 -0
- package/dist/{select-7rYaECQf.js → select-CCpQUIEg.js} +13 -3
- package/dist/select-CCpQUIEg.js.map +1 -0
- package/dist/settings-container-D6LsO77E.js +42 -0
- package/dist/settings-container-D6LsO77E.js.map +1 -0
- package/dist/settings-container-umHxLp1a.cjs +45 -0
- package/dist/settings-container-umHxLp1a.cjs.map +1 -0
- package/dist/{settings-row-m_4gDCwS.cjs → settings-row-C9lT2BJS.cjs} +3 -42
- package/dist/settings-row-C9lT2BJS.cjs.map +1 -0
- package/dist/{settings-row-yuQjwWTl.js → settings-row-CRpU1an-.js} +4 -41
- package/dist/settings-row-CRpU1an-.js.map +1 -0
- package/dist/{span-payload-primitives-n5uf4hOk.cjs → span-payload-primitives-CE124T1P.cjs} +2 -2
- package/dist/{span-payload-primitives-n5uf4hOk.cjs.map → span-payload-primitives-CE124T1P.cjs.map} +1 -1
- package/dist/{span-payload-primitives-CaT3DT8h.js → span-payload-primitives-v0iS2w26.js} +2 -2
- package/dist/{span-payload-primitives-CaT3DT8h.js.map → span-payload-primitives-v0iS2w26.js.map} +1 -1
- package/dist/src/domains/capabilities/index.d.ts +1 -1
- package/dist/src/domains/chat/messages/notification-signal-notice.d.ts +2 -0
- package/dist/src/domains/chat/messages/signal-data.d.ts +9 -0
- package/dist/src/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.d.ts +28 -0
- package/dist/src/domains/datasets/components/add-dataset-item-dialog/build-add-item-payload.d.ts +28 -0
- package/dist/src/domains/datasets/components/add-dataset-item-dialog/collapsible-settings-row.d.ts +14 -0
- package/dist/src/domains/datasets/components/add-dataset-item-dialog/dataset-field-errors.d.ts +8 -0
- package/dist/src/domains/datasets/components/add-dataset-item-dialog/dataset-picker.d.ts +11 -0
- package/dist/src/domains/datasets/components/add-dataset-item-dialog/field-errors.d.ts +10 -0
- package/dist/src/domains/datasets/components/add-dataset-item-dialog/index.d.ts +2 -0
- package/dist/src/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.d.ts +11 -0
- package/dist/src/domains/datasets/components/add-dataset-item-dialog/trajectory-types.d.ts +50 -0
- package/dist/src/domains/datasets/components/add-dataset-item-dialog/use-target-agent-tools.d.ts +7 -0
- package/dist/src/domains/datasets/components/index.d.ts +1 -0
- package/dist/src/domains/logs/hooks/use-logs-filter-persistence.d.ts +2 -3
- package/dist/src/domains/logs/hooks/use-logs-url-state.d.ts +1 -1
- package/dist/src/domains/memory/components/flame-graph-data.d.ts +1 -1
- package/dist/src/domains/observability/components/trace-as-item-dialog.d.ts +3 -5
- package/dist/src/domains/traces/components/trace-data-panel-view.d.ts +1 -5
- package/dist/src/domains/traces/components/trace-span-panel.d.ts +1 -2
- package/dist/src/domains/traces/components/traces-explorer/index.d.ts +27 -0
- package/dist/src/domains/traces/components/traces-explorer/traces-explorer-actions.d.ts +113 -0
- package/dist/src/domains/traces/components/traces-explorer/traces-explorer-auto-refresh.d.ts +1 -0
- package/dist/src/domains/traces/components/traces-explorer/traces-explorer-columns-menu.d.ts +1 -0
- package/dist/src/domains/traces/components/traces-explorer/traces-explorer-columns-provider.d.ts +9 -0
- package/dist/src/domains/traces/components/traces-explorer/traces-explorer-context.d.ts +114 -0
- package/dist/src/domains/traces/components/traces-explorer/traces-explorer-filter-bar.d.ts +24 -0
- package/dist/src/domains/traces/components/traces-explorer/traces-explorer-layout.d.ts +14 -0
- package/dist/src/domains/traces/components/traces-explorer/traces-explorer-list-provider.d.ts +13 -0
- package/dist/src/domains/traces/components/traces-explorer/traces-explorer-list.d.ts +1 -0
- package/dist/src/domains/traces/components/traces-explorer/traces-explorer-panel.d.ts +18 -0
- package/dist/src/domains/traces/components/traces-explorer/traces-explorer-root.d.ts +21 -0
- package/dist/src/domains/traces/components/traces-explorer/use-traces-discovery.d.ts +15 -0
- package/dist/src/domains/traces/components/traces-explorer/use-traces-filter-bar.d.ts +15 -0
- package/dist/src/domains/traces/hooks/index.d.ts +1 -2
- package/dist/src/domains/traces/hooks/use-traces-list-source.d.ts +7 -1
- package/dist/src/domains/traces/trace-query-filters.d.ts +2 -0
- package/dist/src/domains/workflows/context/use-persisted-workflow-run.d.ts +5 -5
- package/dist/src/ds/components/BillingIllustration/art/credits-art.d.ts +2 -0
- package/dist/src/ds/components/BillingIllustration/art/plan-art.d.ts +5 -0
- package/dist/src/ds/components/BillingIllustration/billing-illustration.d.ts +1 -1
- package/dist/src/ds/components/CodeEditor/code-editor.d.ts +4 -0
- package/dist/src/ds/components/Combobox/combobox-parts.d.ts +1 -1
- package/dist/src/ds/components/DataList/data-list-root.d.ts +2 -0
- package/dist/src/ds/components/Select/select.d.ts +5 -1
- package/dist/src/ds/components/Sidebar/header/sidebar-badge.d.ts +7 -0
- package/dist/src/ds/components/Sidebar/header/sidebar-button-hint.d.ts +7 -0
- package/dist/src/ds/components/Sidebar/header/sidebar-search-trigger.d.ts +14 -3
- package/dist/src/ds/components/Sidebar/index.d.ts +1 -0
- package/dist/src/ds/components/Sidebar/root/sidebar-trigger.d.ts +2 -2
- package/dist/src/ds/components/Sidebar/sidebar.d.ts +5 -1
- package/dist/src/ds/components/ai/activity/presets/notification-activity.d.ts +5 -1
- package/dist/style.css +101 -13
- package/dist/{time-picker-CyvG-fwX.cjs → time-picker-BGtAkRRp.cjs} +2 -2
- package/dist/{time-picker-CyvG-fwX.cjs.map → time-picker-BGtAkRRp.cjs.map} +1 -1
- package/dist/{time-picker-Bzdboi4W.js → time-picker-D1VsACkg.js} +2 -2
- package/dist/{time-picker-Bzdboi4W.js.map → time-picker-D1VsACkg.js.map} +1 -1
- package/dist/{tool-approval-meJYp8az.js → tool-approval-CW6YjYlc.js} +2 -2
- package/dist/{tool-approval-meJYp8az.js.map → tool-approval-CW6YjYlc.js.map} +1 -1
- package/dist/{tool-approval-tRkskd9l.cjs → tool-approval-DNw_9w1C.cjs} +2 -2
- package/dist/{tool-approval-tRkskd9l.cjs.map → tool-approval-DNw_9w1C.cjs.map} +1 -1
- package/dist/{tool-call-arguments-D4D9tT7-.cjs → tool-call-arguments-BdHtc5O4.cjs} +2 -2
- package/dist/{tool-call-arguments-D4D9tT7-.cjs.map → tool-call-arguments-BdHtc5O4.cjs.map} +1 -1
- package/dist/{tool-call-arguments-CyKLhuQC.js → tool-call-arguments-CByjFWnk.js} +2 -2
- package/dist/{tool-call-arguments-CyKLhuQC.js.map → tool-call-arguments-CByjFWnk.js.map} +1 -1
- package/dist/{tool-card-D9jh-XXM.cjs → tool-card-DULALXIR.cjs} +2 -2
- package/dist/{tool-card-D9jh-XXM.cjs.map → tool-card-DULALXIR.cjs.map} +1 -1
- package/dist/{tool-card-B7s_wQuV.js → tool-card-DyZaGWgD.js} +2 -2
- package/dist/{tool-card-B7s_wQuV.js.map → tool-card-DyZaGWgD.js.map} +1 -1
- package/dist/{trace-filters-tC2TkI42.cjs → trace-filters-BtyiQq7Y.cjs} +9 -5
- package/dist/trace-filters-BtyiQq7Y.cjs.map +1 -0
- package/dist/{trace-filters-D1Cs5f24.js → trace-filters-DXW-RdDz.js} +10 -7
- package/dist/trace-filters-DXW-RdDz.js.map +1 -0
- package/dist/{traces-data-list-CF_LFvnf.cjs → traces-data-list-BOHhsgDI.cjs} +18 -20
- package/dist/{traces-data-list-CF_LFvnf.cjs.map → traces-data-list-BOHhsgDI.cjs.map} +1 -1
- package/dist/{traces-data-list-SpVFLEy8.js → traces-data-list-CP6knkOn.js} +2 -4
- package/dist/{traces-data-list-SpVFLEy8.js.map → traces-data-list-CP6knkOn.js.map} +1 -1
- package/dist/{use-workflow-graph-runtime-B0k2hrMc.cjs → use-workflow-graph-runtime-CWgTtW-I.cjs} +2 -2
- package/dist/{use-workflow-graph-runtime-B0k2hrMc.cjs.map → use-workflow-graph-runtime-CWgTtW-I.cjs.map} +1 -1
- package/dist/{use-workflow-graph-runtime-DiiAs2oN.js → use-workflow-graph-runtime-vYcO5MFZ.js} +2 -2
- package/dist/{use-workflow-graph-runtime-DiiAs2oN.js.map → use-workflow-graph-runtime-vYcO5MFZ.js.map} +1 -1
- package/dist/{workflow-code-dialog-content-yV6Lecry.cjs → workflow-code-dialog-content-BeB3jC3z.cjs} +2 -2
- package/dist/{workflow-code-dialog-content-yV6Lecry.cjs.map → workflow-code-dialog-content-BeB3jC3z.cjs.map} +1 -1
- package/dist/{workflow-code-dialog-content-lRHRkDdW.js → workflow-code-dialog-content-BpWrCzH0.js} +2 -2
- package/dist/{workflow-code-dialog-content-lRHRkDdW.js.map → workflow-code-dialog-content-BpWrCzH0.js.map} +1 -1
- package/dist/{workflow-data-edge-view-DadIXKjI.cjs → workflow-data-edge-view-CYsZxUHx.cjs} +2 -2
- package/dist/{workflow-data-edge-view-DadIXKjI.cjs.map → workflow-data-edge-view-CYsZxUHx.cjs.map} +1 -1
- package/dist/{workflow-data-edge-view-BcLEbr1i.js → workflow-data-edge-view-Cqbhavjw.js} +2 -2
- package/dist/{workflow-data-edge-view-BcLEbr1i.js.map → workflow-data-edge-view-Cqbhavjw.js.map} +1 -1
- package/dist/{workflow-edge-data-button-AwaLTE7H.js → workflow-edge-data-button-BPUmnY9J.js} +2 -2
- package/dist/{workflow-edge-data-button-AwaLTE7H.js.map → workflow-edge-data-button-BPUmnY9J.js.map} +1 -1
- package/dist/{workflow-edge-data-button-B4_tt1pL.cjs → workflow-edge-data-button-DinmgZoJ.cjs} +2 -2
- package/dist/{workflow-edge-data-button-B4_tt1pL.cjs.map → workflow-edge-data-button-DinmgZoJ.cjs.map} +1 -1
- package/package.json +11 -11
- package/dist/code-editor-CbyCb7CW.cjs.map +0 -1
- package/dist/code-editor-DOv4jc-0.js.map +0 -1
- package/dist/combobox-BCoCVZHs.js.map +0 -1
- package/dist/combobox-DbZAWh8q.cjs.map +0 -1
- package/dist/data-list-CGD9hzcp.cjs +0 -142
- package/dist/data-list-CGD9hzcp.cjs.map +0 -1
- package/dist/data-list-aFlt9Du-.js +0 -138
- package/dist/data-list-aFlt9Du-.js.map +0 -1
- package/dist/data-list-spacer-BFAQT_lQ.js +0 -209
- package/dist/data-list-spacer-BFAQT_lQ.js.map +0 -1
- package/dist/data-list-spacer-Dpoj55mv.cjs +0 -218
- package/dist/data-list-spacer-Dpoj55mv.cjs.map +0 -1
- package/dist/data-list-top-DJh08vFA.cjs.map +0 -1
- package/dist/data-list-top-T-mtdIUp.js.map +0 -1
- package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js +0 -204
- package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js.map +0 -1
- package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.d.ts +0 -2
- package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js +0 -200
- package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js.map +0 -1
- package/dist/domains/traces/hooks/use-trace-filter-persistence.cjs.js +0 -52
- package/dist/domains/traces/hooks/use-trace-filter-persistence.cjs.js.map +0 -1
- package/dist/domains/traces/hooks/use-trace-filter-persistence.d.ts +0 -2
- package/dist/domains/traces/hooks/use-trace-filter-persistence.es.js +0 -48
- package/dist/domains/traces/hooks/use-trace-filter-persistence.es.js.map +0 -1
- package/dist/domains/traces/hooks/use-trace-url-state.cjs.js +0 -373
- package/dist/domains/traces/hooks/use-trace-url-state.cjs.js.map +0 -1
- package/dist/domains/traces/hooks/use-trace-url-state.d.ts +0 -2
- package/dist/domains/traces/hooks/use-trace-url-state.es.js +0 -369
- package/dist/domains/traces/hooks/use-trace-url-state.es.js.map +0 -1
- package/dist/notification-activity-BSNuqJDd.cjs.map +0 -1
- package/dist/notification-activity-BWXHmlTn.js.map +0 -1
- package/dist/select-7rYaECQf.js.map +0 -1
- package/dist/select-A3AFKLd9.cjs.map +0 -1
- package/dist/settings-row-m_4gDCwS.cjs.map +0 -1
- package/dist/settings-row-yuQjwWTl.js.map +0 -1
- package/dist/side-dialog-C-XvsAm_.cjs +0 -231
- package/dist/side-dialog-C-XvsAm_.cjs.map +0 -1
- package/dist/side-dialog-cUpWIkKq.js +0 -211
- package/dist/side-dialog-cUpWIkKq.js.map +0 -1
- package/dist/src/domains/observability/components/add-trace-mocks-to-item-dialog.d.ts +0 -9
- package/dist/src/domains/traces/hooks/use-trace-filter-persistence.d.ts +0 -22
- package/dist/src/domains/traces/hooks/use-trace-url-state.d.ts +0 -83
- package/dist/trace-filters-D1Cs5f24.js.map +0 -1
- package/dist/trace-filters-tC2TkI42.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traces-list-view.cjs.js","sources":["../../../../src/domains/traces/components/traces-list-view.tsx"],"sourcesContent":["import { useVirtualizer } from '@tanstack/react-virtual';\nimport { ListFilterIcon } from 'lucide-react';\nimport { useRef } from 'react';\nimport {\n DEFAULT_TRACE_COLUMN_PREFERENCES,\n TRACE_CUSTOM_COLUMN_LABELS,\n buildTraceListColumnKeys,\n buildTraceListColumns,\n formatTraceMetadataValue,\n hasTraceColumn,\n} from '../trace-list-columns';\nimport type { TraceColumnPreferences, TraceCustomColumn, TraceUsageSummary } from '../trace-list-columns';\nimport { getInputPreview, getSpanDurationMs } from '../utils/span-utils';\nimport { TraceErrorCell } from './trace-error-cell';\nimport { DataList, DataListSkeletonRows, TracesDataList, useDataListKeyboard } from '@/ds/components/DataList';\nimport type { DataListSort } from '@/ds/components/DataList';\nimport { splitColumns } from '@/ds/components/DataList/shared';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu';\nimport { Txt } from '@/ds/components/Txt/Txt';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { formatCompactNumber, formatCost } from '@/lib/cost';\nimport { cn } from '@/lib/utils';\nimport { formatDuration } from '@/utils/duration';\n\nexport type TracesListViewTrace = {\n traceId: string;\n /** Required for branch rows; absent on plain trace rows (which are root-rooted). */\n spanId?: string | null;\n /** `null`/missing → root span. Drives the Kind column's icon (top-level trace vs nested branch). */\n parentSpanId?: string | null;\n name: string;\n entityType?: string | null;\n entityId?: string | null;\n entityName?: string | null;\n threadId?: string | null;\n resourceId?: string | null;\n environment?: string | null;\n status?: string | null;\n /** Server-rendered preview of `input`. Present on lightweight rows, which omit `input` itself. */\n inputPreview?: string | null;\n input?: unknown;\n /** Server-rendered preview of the root span's output. */\n outputPreview?: string;\n /** Server-rendered preview of the root span's error. Shown in place of the output when `status` is `'error'`. */\n errorPreview?: string;\n metadata?: Record<string, unknown> | null;\n startedAt?: Date | string | null;\n endedAt?: Date | string | null;\n createdAt: Date | string;\n};\n\nconst ROW_HEIGHT = 36;\nconst OVERSCAN = 8;\n/** Distinct values offered in a custom column's \"filter by value\" header menu. */\nconst MAX_FILTER_VALUES = 20;\n\nfunction customColumnValue(trace: TracesListViewTrace, field: TraceCustomColumn): string | null | undefined {\n return trace[field];\n}\n\nfunction distinctCustomColumnValues(traces: TracesListViewTrace[], field: TraceCustomColumn): string[] {\n const values = new Set<string>();\n for (const trace of traces) {\n const value = trace[field];\n if (typeof value === 'string' && value) values.add(value);\n if (values.size >= MAX_FILTER_VALUES) break;\n }\n return [...values];\n}\n\nfunction sumTokens(usage: TraceUsageSummary | undefined): number | undefined {\n if (usage?.inputTokens === undefined && usage?.outputTokens === undefined) return undefined;\n return (usage?.inputTokens ?? 0) + (usage?.outputTokens ?? 0);\n}\n\ntype FailedTrace = TracesListViewTrace & { spanId: string; errorPreview: string };\n\n/** A failed row whose error preview can open the full error from its span. */\nfunction isFailedTrace(trace: TracesListViewTrace): trace is FailedTrace {\n return trace.status === 'error' && !!trace.errorPreview && !!trace.spanId;\n}\n\nexport type TracesListViewProps = {\n traces: TracesListViewTrace[];\n isLoading?: boolean;\n isFetchingNextPage?: boolean;\n hasNextPage?: boolean;\n setEndOfListElement?: (element: HTMLDivElement | null) => void;\n filtersApplied?: boolean;\n /** Currently featured/selected trace — its row gets the highlighted background. */\n featuredTraceId?: string | null;\n /**\n * Required in branches mode to disambiguate rows sharing a `traceId`. When set,\n * a row is featured only when both `traceId` and `spanId` match.\n */\n featuredSpanId?: string | null;\n /** Branches mode mixes root traces with subtraces — enables the Trace/Subtrace tooltip on the\n * level icon in the Name column, which is meaningless when every row is a root. */\n isBranchesMode?: boolean;\n /** Keys (`traceId:spanId`) of rows that just arrived via delta polling. Rows whose key is in\n * this set get a temporary tint to distinguish them from rows present since the last page-mode\n * fetch. Auto-expires upstream (in useTraces) after a short window. */\n recentlyAddedKeys?: Set<string>;\n /** Optional and metadata columns selected for this project. */\n columnPreferences?: TraceColumnPreferences;\n /** Token and estimated-cost totals, aggregated across model spans by trace ID. */\n usageByTraceId?: ReadonlyMap<string, TraceUsageSummary>;\n /** Called when a row is clicked. The current selection logic (toggle on same id) is the consumer's call. */\n onTraceClick: (trace: TracesListViewTrace) => void;\n /** Current sort of the Created column. When `onSortChange` is provided the header becomes sortable. */\n createdSort?: DataListSort;\n onSortChange?: (direction: DataListSort, key: 'startedAt') => void;\n /** When provided, custom column headers offer an `is <value>` filter for every value currently listed. */\n onFilterByField?: (field: TraceCustomColumn, value: string) => void;\n /** Storage id for the persisted column order. Use a distinct id per page so each keeps its own order. */\n listId?: string;\n};\n\n/**\n * Virtualized presentational list. Renders only the visible window via TanStack Virtual, and\n * uses DataList primitives for layout (CSS Grid with subgrid rows).\n */\nexport function TracesListView({\n traces,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n filtersApplied,\n featuredTraceId,\n featuredSpanId,\n isBranchesMode,\n recentlyAddedKeys,\n columnPreferences = DEFAULT_TRACE_COLUMN_PREFERENCES,\n usageByTraceId,\n onTraceClick,\n createdSort,\n onSortChange,\n onFilterByField,\n listId = 'all-traces',\n}: TracesListViewProps) {\n const scrollRef = useRef<HTMLDivElement | null>(null);\n const columns = buildTraceListColumns(columnPreferences);\n const columnKeys = buildTraceListColumnKeys(columnPreferences);\n\n const virtualizer = useVirtualizer({\n count: traces.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: () => ROW_HEIGHT,\n overscan: OVERSCAN,\n });\n\n const { getRowProps } = useDataListKeyboard({\n count: traces.length,\n containerRef: scrollRef,\n onNavigate: index => virtualizer.scrollToIndex(index),\n global: true,\n });\n\n const virtualItems = virtualizer.getVirtualItems();\n const totalSize = virtualizer.getTotalSize();\n const paddingTop = virtualItems[0]?.start ?? 0;\n const paddingBottom =\n virtualItems.length > 0 ? Math.max(0, totalSize - (virtualItems[virtualItems.length - 1]?.end ?? 0)) : 0;\n\n return (\n <TracesDataList\n reorderable\n id={listId}\n columns={columns}\n columnKeys={columnKeys}\n fit=\"container\"\n scrollRef={scrollRef}\n className=\"min-w-0\"\n >\n <TracesDataList.Top>\n {onSortChange ? (\n <TracesDataList.SortableTopCell sortKey=\"startedAt\" sort={createdSort} onSortChange={onSortChange}>\n Start\n </TracesDataList.SortableTopCell>\n ) : (\n <TracesDataList.TopCell>Start</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'type') && <TracesDataList.TopCell>Primitive type</TracesDataList.TopCell>}\n <TracesDataList.TopCell>Primitive name</TracesDataList.TopCell>\n {hasTraceColumn(columnPreferences, 'input') && <TracesDataList.TopCell>Input</TracesDataList.TopCell>}\n {hasTraceColumn(columnPreferences, 'output') && <TracesDataList.TopCell>Output</TracesDataList.TopCell>}\n <TracesDataList.TopCell>Status</TracesDataList.TopCell>\n {hasTraceColumn(columnPreferences, 'duration') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Duration</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'endTime') && <TracesDataList.TopCell>End</TracesDataList.TopCell>}\n {hasTraceColumn(columnPreferences, 'environment') && (\n <TracesDataList.TopCell>Environment</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'inputTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Input tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'outputTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Output tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'totalTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Total tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'estimatedCost') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Est. cost</TracesDataList.TopCell>\n )}\n {columnPreferences.customColumns.map(field => {\n const label = TRACE_CUSTOM_COLUMN_LABELS[field];\n const filterValues = onFilterByField ? distinctCustomColumnValues(traces, field) : [];\n if (!onFilterByField || filterValues.length === 0) {\n return <TracesDataList.TopCell key={field}>{label}</TracesDataList.TopCell>;\n }\n return (\n <TracesDataList.TopCell key={field} className=\"overflow-visible\">\n <DropdownMenu>\n <DropdownMenu.Trigger\n render={\n <button\n type=\"button\"\n className={cn('flex min-w-0 items-center gap-1 rounded-sm hover:text-foreground', focusRing)}\n >\n <span className=\"min-w-0 truncate\">{label}</span>\n <ListFilterIcon aria-hidden className=\"size-[1.2em] shrink-0\" />\n </button>\n }\n />\n <DropdownMenu.Content align=\"start\">\n <DropdownMenu.Label>Filter by value</DropdownMenu.Label>\n {filterValues.map(value => (\n <DropdownMenu.Item key={value} onSelect={() => onFilterByField(field, value)}>\n <Txt as=\"span\" variant=\"body-sm\" font=\"mono\" className=\"min-w-0 truncate\">\n {value}\n </Txt>\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n </TracesDataList.TopCell>\n );\n })}\n {columnPreferences.metadataKeys.map(key => (\n <TracesDataList.TopCellWithTooltip key={key} tooltip={key}>\n {key}\n </TracesDataList.TopCellWithTooltip>\n ))}\n </TracesDataList.Top>\n\n {isLoading ? (\n <DataListSkeletonRows columnCount={splitColumns(columns).length} />\n ) : traces.length === 0 ? (\n <TracesDataList.NoMatch\n message={filtersApplied ? 'No traces found for applied filters' : 'No traces found yet'}\n />\n ) : (\n <>\n <TracesDataList.Spacer height={paddingTop} />\n {virtualItems.map(vi => {\n const trace = traces[vi.index];\n if (!trace) return null;\n\n const isFeatured =\n trace.traceId === featuredTraceId && (featuredSpanId == null || trace.spanId === featuredSpanId);\n const rowKey = `${trace.traceId}:${trace.spanId ?? ''}`;\n const isRecentlyAdded = recentlyAddedKeys?.has(rowKey) ?? false;\n const displayDate = trace.startedAt ?? trace.createdAt;\n const usage = usageByTraceId?.get(trace.traceId);\n\n return (\n <TracesDataList.RowButton\n key={rowKey}\n ref={virtualizer.measureElement}\n data-index={vi.index}\n {...getRowProps(vi.index)}\n onClick={() => onTraceClick(trace)}\n featured={isFeatured}\n className={cn(isRecentlyAdded && 'animate-row-highlight')}\n >\n <TracesDataList.CreatedCell timestamp={displayDate} preset=\"day-time-seconds\" />\n {hasTraceColumn(columnPreferences, 'type') && <TracesDataList.TypeCell entityType={trace.entityType} />}\n <TracesDataList.NameCell\n name={trace.entityName || trace.name}\n parentSpanId={trace.parentSpanId}\n showLevelTooltip={isBranchesMode}\n />\n {hasTraceColumn(columnPreferences, 'input') && (\n <TracesDataList.InputCell input={trace.inputPreview ?? getInputPreview(trace.input)} />\n )}\n {hasTraceColumn(columnPreferences, 'output') &&\n (isFailedTrace(trace) ? (\n <TraceErrorCell traceId={trace.traceId} spanId={trace.spanId} errorPreview={trace.errorPreview} />\n ) : (\n <TracesDataList.OutputCell\n output={trace.outputPreview}\n error={trace.errorPreview}\n status={trace.status}\n />\n ))}\n <TracesDataList.StatusCell status={trace.status} />\n {hasTraceColumn(columnPreferences, 'duration') && (\n <DataList.NumberCell font=\"mono\">\n {formatDuration(getSpanDurationMs(trace.startedAt, trace.endedAt))}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'endTime') && (\n <TracesDataList.CreatedCell timestamp={trace.endedAt ?? ''} preset=\"day-time-seconds\" />\n )}\n {hasTraceColumn(columnPreferences, 'environment') && (\n <DataList.TextCell>{trace.environment || '—'}</DataList.TextCell>\n )}\n {hasTraceColumn(columnPreferences, 'inputTokens') && (\n <DataList.NumberCell>\n {usage?.inputTokens === undefined ? undefined : formatCompactNumber(usage.inputTokens)}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'outputTokens') && (\n <DataList.NumberCell>\n {usage?.outputTokens === undefined ? undefined : formatCompactNumber(usage.outputTokens)}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'totalTokens') && (\n <DataList.NumberCell>\n {(() => {\n const total = sumTokens(usage);\n return total === undefined ? undefined : formatCompactNumber(total);\n })()}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'estimatedCost') && (\n <DataList.NumberCell>\n {usage?.estimatedCost === undefined ? undefined : formatCost(usage.estimatedCost, usage.costUnit)}\n </DataList.NumberCell>\n )}\n {columnPreferences.customColumns.map(field => (\n <DataList.TextCell font=\"mono\" key={field}>\n {customColumnValue(trace, field) ?? undefined}\n </DataList.TextCell>\n ))}\n {columnPreferences.metadataKeys.map(key => {\n const value = formatTraceMetadataValue(trace.metadata, key);\n return (\n <DataList.TextCell font=\"mono\" key={key}>\n {value}\n </DataList.TextCell>\n );\n })}\n </TracesDataList.RowButton>\n );\n })}\n <TracesDataList.Spacer height={paddingBottom} />\n <TracesDataList.NextPageLoading\n isLoading={isFetchingNextPage}\n hasMore={hasNextPage}\n setEndOfListElement={setEndOfListElement}\n />\n </>\n )}\n </TracesDataList>\n );\n}\n"],"names":["DEFAULT_TRACE_COLUMN_PREFERENCES","useRef","buildTraceListColumns","buildTraceListColumnKeys","useVirtualizer","useDataListKeyboard","jsxs","TracesDataList","jsx","hasTraceColumn","TRACE_CUSTOM_COLUMN_LABELS","DropdownMenu","cn","focusRing","ListFilterIcon","Txt","DataListSkeletonRows","splitColumns","Fragment","getInputPreview","TraceErrorCell","DataList","getSpanDurationMs","formatCompactNumber","formatCost","formatTraceMetadataValue"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"traces-list-view.cjs.js","sources":["../../../../src/domains/traces/components/traces-list-view.tsx"],"sourcesContent":["import { useVirtualizer } from '@tanstack/react-virtual';\nimport { ListFilterIcon } from 'lucide-react';\nimport { useRef } from 'react';\nimport {\n DEFAULT_TRACE_COLUMN_PREFERENCES,\n TRACE_CUSTOM_COLUMN_LABELS,\n buildTraceListColumnKeys,\n buildTraceListColumns,\n formatTraceMetadataValue,\n hasTraceColumn,\n} from '../trace-list-columns';\nimport type { TraceColumnPreferences, TraceCustomColumn, TraceUsageSummary } from '../trace-list-columns';\nimport { getInputPreview, getSpanDurationMs } from '../utils/span-utils';\nimport { TraceErrorCell } from './trace-error-cell';\nimport { DataList, DataListSkeletonRows, TracesDataList, useDataListKeyboard } from '@/ds/components/DataList';\nimport type { DataListSort } from '@/ds/components/DataList';\nimport { splitColumns } from '@/ds/components/DataList/shared';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu';\nimport { Txt } from '@/ds/components/Txt/Txt';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { formatCompactNumber, formatCost } from '@/lib/cost';\nimport { cn } from '@/lib/utils';\nimport { formatDuration } from '@/utils/duration';\n\nexport type TracesListViewTrace = {\n traceId: string;\n /** Required for branch rows; absent on plain trace rows (which are root-rooted). */\n spanId?: string | null;\n /** `null`/missing → root span. Drives the Kind column's icon (top-level trace vs nested branch). */\n parentSpanId?: string | null;\n name: string;\n entityType?: string | null;\n entityId?: string | null;\n entityName?: string | null;\n threadId?: string | null;\n resourceId?: string | null;\n environment?: string | null;\n status?: string | null;\n /** Server-rendered preview of `input`. Present on lightweight rows, which omit `input` itself. */\n inputPreview?: string | null;\n input?: unknown;\n /** Server-rendered preview of the root span's output. */\n outputPreview?: string;\n /** Server-rendered preview of the root span's error. Shown in place of the output when `status` is `'error'`. */\n errorPreview?: string;\n metadata?: Record<string, unknown> | null;\n startedAt?: Date | string | null;\n endedAt?: Date | string | null;\n createdAt: Date | string;\n};\n\nconst ROW_HEIGHT = 36;\nconst OVERSCAN = 8;\n/** Distinct values offered in a custom column's \"filter by value\" header menu. */\nconst MAX_FILTER_VALUES = 20;\n\nfunction customColumnValue(trace: TracesListViewTrace, field: TraceCustomColumn): string | null | undefined {\n return trace[field];\n}\n\nfunction distinctCustomColumnValues(traces: TracesListViewTrace[], field: TraceCustomColumn): string[] {\n const values = new Set<string>();\n for (const trace of traces) {\n const value = trace[field];\n if (typeof value === 'string' && value) values.add(value);\n if (values.size >= MAX_FILTER_VALUES) break;\n }\n return [...values];\n}\n\nfunction sumTokens(usage: TraceUsageSummary | undefined): number | undefined {\n if (usage?.inputTokens === undefined && usage?.outputTokens === undefined) return undefined;\n return (usage?.inputTokens ?? 0) + (usage?.outputTokens ?? 0);\n}\n\ntype FailedTrace = TracesListViewTrace & { spanId: string; errorPreview: string };\n\n/** A failed row whose error preview can open the full error from its span. */\nfunction isFailedTrace(trace: TracesListViewTrace): trace is FailedTrace {\n return trace.status === 'error' && !!trace.errorPreview && !!trace.spanId;\n}\n\nexport type TracesListViewProps = {\n traces: TracesListViewTrace[];\n isLoading?: boolean;\n isFetchingNextPage?: boolean;\n hasNextPage?: boolean;\n setEndOfListElement?: (element: HTMLDivElement | null) => void;\n filtersApplied?: boolean;\n /** Currently featured/selected trace — its row gets the highlighted background. */\n featuredTraceId?: string | null;\n /**\n * Required in branches mode to disambiguate rows sharing a `traceId`. When set,\n * a row is featured only when both `traceId` and `spanId` match.\n */\n featuredSpanId?: string | null;\n /** Branches mode mixes root traces with subtraces — enables the Trace/Subtrace tooltip on the\n * level icon in the Name column, which is meaningless when every row is a root. */\n isBranchesMode?: boolean;\n /** Keys (`traceId:spanId`) of rows that just arrived via delta polling. Rows whose key is in\n * this set get a temporary tint to distinguish them from rows present since the last page-mode\n * fetch. Auto-expires upstream (in useTraces) after a short window. */\n recentlyAddedKeys?: Set<string>;\n /** Optional and metadata columns selected for this project. */\n columnPreferences?: TraceColumnPreferences;\n /** Token and estimated-cost totals, aggregated across model spans by trace ID. */\n usageByTraceId?: ReadonlyMap<string, TraceUsageSummary>;\n /** Called when a row is clicked. The current selection logic (toggle on same id) is the consumer's call. */\n onTraceClick: (trace: TracesListViewTrace) => void;\n /** Current sort of the Created column. When `onSortChange` is provided the header becomes sortable. */\n createdSort?: DataListSort;\n onSortChange?: (direction: DataListSort, key: 'startedAt') => void;\n /** When provided, custom column headers offer an `is <value>` filter for every value currently listed. */\n onFilterByField?: (field: TraceCustomColumn, value: string) => void;\n /** Storage id for the persisted column order. Use a distinct id per page so each keeps its own order. */\n listId?: string;\n};\n\n/**\n * Virtualized presentational list. Renders only the visible window via TanStack Virtual, and\n * uses DataList primitives for layout (CSS Grid with subgrid rows).\n */\nexport function TracesListView({\n traces,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n filtersApplied,\n featuredTraceId,\n featuredSpanId,\n isBranchesMode,\n recentlyAddedKeys,\n columnPreferences = DEFAULT_TRACE_COLUMN_PREFERENCES,\n usageByTraceId,\n onTraceClick,\n createdSort,\n onSortChange,\n onFilterByField,\n listId = 'all-traces',\n}: TracesListViewProps) {\n const scrollRef = useRef<HTMLDivElement | null>(null);\n const columns = buildTraceListColumns(columnPreferences);\n const columnKeys = buildTraceListColumnKeys(columnPreferences);\n\n const virtualizer = useVirtualizer({\n count: traces.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: () => ROW_HEIGHT,\n overscan: OVERSCAN,\n });\n\n const { getRowProps } = useDataListKeyboard({\n count: traces.length,\n containerRef: scrollRef,\n onNavigate: index => virtualizer.scrollToIndex(index),\n global: true,\n });\n\n const virtualItems = virtualizer.getVirtualItems();\n const totalSize = virtualizer.getTotalSize();\n const paddingTop = virtualItems[0]?.start ?? 0;\n const paddingBottom =\n virtualItems.length > 0 ? Math.max(0, totalSize - (virtualItems[virtualItems.length - 1]?.end ?? 0)) : 0;\n\n return (\n <TracesDataList\n reorderable\n id={listId}\n columns={columns}\n columnKeys={columnKeys}\n fit=\"container\"\n scrollRef={scrollRef}\n className=\"min-w-0\"\n >\n <TracesDataList.Top>\n {onSortChange ? (\n <TracesDataList.SortableTopCell sortKey=\"startedAt\" sort={createdSort} onSortChange={onSortChange}>\n Start\n </TracesDataList.SortableTopCell>\n ) : (\n <TracesDataList.TopCell>Start</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'type') && <TracesDataList.TopCell>Primitive type</TracesDataList.TopCell>}\n <TracesDataList.TopCell>Primitive name</TracesDataList.TopCell>\n {hasTraceColumn(columnPreferences, 'input') && <TracesDataList.TopCell>Input</TracesDataList.TopCell>}\n {hasTraceColumn(columnPreferences, 'output') && <TracesDataList.TopCell>Output</TracesDataList.TopCell>}\n <TracesDataList.TopCell>Status</TracesDataList.TopCell>\n {hasTraceColumn(columnPreferences, 'duration') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Duration</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'endTime') && <TracesDataList.TopCell>End</TracesDataList.TopCell>}\n {hasTraceColumn(columnPreferences, 'environment') && (\n <TracesDataList.TopCell>Environment</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'inputTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Input tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'outputTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Output tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'totalTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Total tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'estimatedCost') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Est. cost</TracesDataList.TopCell>\n )}\n {columnPreferences.customColumns.map(field => {\n const label = TRACE_CUSTOM_COLUMN_LABELS[field];\n const filterValues = onFilterByField ? distinctCustomColumnValues(traces, field) : [];\n if (!onFilterByField || filterValues.length === 0) {\n return <TracesDataList.TopCell key={field}>{label}</TracesDataList.TopCell>;\n }\n return (\n <TracesDataList.TopCell key={field} className=\"overflow-visible\">\n <DropdownMenu>\n <DropdownMenu.Trigger\n render={\n <button\n type=\"button\"\n className={cn('flex min-w-0 items-center gap-1 rounded-sm hover:text-foreground', focusRing)}\n >\n <span className=\"min-w-0 truncate\">{label}</span>\n <ListFilterIcon aria-hidden className=\"size-[1.2em] shrink-0\" />\n </button>\n }\n />\n <DropdownMenu.Content align=\"start\">\n <DropdownMenu.Label>Filter by value</DropdownMenu.Label>\n {filterValues.map(value => (\n <DropdownMenu.Item key={value} onSelect={() => onFilterByField(field, value)}>\n <Txt as=\"span\" variant=\"body-sm\" font=\"mono\" className=\"min-w-0 truncate\">\n {value}\n </Txt>\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n </TracesDataList.TopCell>\n );\n })}\n {columnPreferences.metadataKeys.map(key => (\n <TracesDataList.TopCellWithTooltip key={key} tooltip={key}>\n {key}\n </TracesDataList.TopCellWithTooltip>\n ))}\n </TracesDataList.Top>\n\n {isLoading ? (\n <DataListSkeletonRows columnCount={splitColumns(columns).length} />\n ) : traces.length === 0 ? (\n <TracesDataList.NoMatch\n message={filtersApplied ? 'No traces found for applied filters' : 'No traces found yet'}\n />\n ) : (\n <>\n <TracesDataList.Spacer height={paddingTop} />\n {virtualItems.map(vi => {\n const trace = traces[vi.index];\n if (!trace) return null;\n\n const isFeatured =\n trace.traceId === featuredTraceId && (featuredSpanId == null || trace.spanId === featuredSpanId);\n const rowKey = `${trace.traceId}:${trace.spanId ?? ''}`;\n const isRecentlyAdded = recentlyAddedKeys?.has(rowKey) ?? false;\n const displayDate = trace.startedAt ?? trace.createdAt;\n const usage = usageByTraceId?.get(trace.traceId);\n\n return (\n <TracesDataList.RowButton\n key={rowKey}\n ref={virtualizer.measureElement}\n data-index={vi.index}\n {...getRowProps(vi.index)}\n onClick={() => onTraceClick(trace)}\n featured={isFeatured}\n className={cn(isRecentlyAdded && 'animate-row-highlight')}\n >\n <TracesDataList.CreatedCell timestamp={displayDate} preset=\"day-time-seconds\" />\n {hasTraceColumn(columnPreferences, 'type') && <TracesDataList.TypeCell entityType={trace.entityType} />}\n <TracesDataList.NameCell\n name={trace.entityName || trace.name}\n parentSpanId={trace.parentSpanId}\n showLevelTooltip={isBranchesMode}\n />\n {hasTraceColumn(columnPreferences, 'input') && (\n <TracesDataList.InputCell input={trace.inputPreview ?? getInputPreview(trace.input)} />\n )}\n {hasTraceColumn(columnPreferences, 'output') &&\n (isFailedTrace(trace) ? (\n <TraceErrorCell traceId={trace.traceId} spanId={trace.spanId} errorPreview={trace.errorPreview} />\n ) : (\n <TracesDataList.OutputCell\n output={trace.outputPreview}\n error={trace.errorPreview}\n status={trace.status}\n />\n ))}\n <TracesDataList.StatusCell status={trace.status} />\n {hasTraceColumn(columnPreferences, 'duration') && (\n <DataList.NumberCell font=\"mono\">\n {formatDuration(getSpanDurationMs(trace.startedAt, trace.endedAt))}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'endTime') && (\n <TracesDataList.CreatedCell timestamp={trace.endedAt ?? ''} preset=\"day-time-seconds\" />\n )}\n {hasTraceColumn(columnPreferences, 'environment') && (\n <DataList.TextCell>{trace.environment || '—'}</DataList.TextCell>\n )}\n {hasTraceColumn(columnPreferences, 'inputTokens') && (\n <DataList.NumberCell>\n {usage?.inputTokens === undefined ? undefined : formatCompactNumber(usage.inputTokens)}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'outputTokens') && (\n <DataList.NumberCell>\n {usage?.outputTokens === undefined ? undefined : formatCompactNumber(usage.outputTokens)}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'totalTokens') && (\n <DataList.NumberCell>\n {(() => {\n const total = sumTokens(usage);\n return total === undefined ? undefined : formatCompactNumber(total);\n })()}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'estimatedCost') && (\n <DataList.NumberCell>\n {usage?.estimatedCost === undefined ? undefined : formatCost(usage.estimatedCost, usage.costUnit)}\n </DataList.NumberCell>\n )}\n {columnPreferences.customColumns.map(field => (\n <DataList.TextCell font=\"mono\" key={field}>\n {customColumnValue(trace, field) ?? undefined}\n </DataList.TextCell>\n ))}\n {columnPreferences.metadataKeys.map(key => {\n const value = formatTraceMetadataValue(trace.metadata, key);\n return (\n <DataList.TextCell font=\"mono\" key={key}>\n {value}\n </DataList.TextCell>\n );\n })}\n </TracesDataList.RowButton>\n );\n })}\n <TracesDataList.Spacer height={paddingBottom} />\n <TracesDataList.NextPageLoading\n isLoading={isFetchingNextPage}\n hasMore={hasNextPage}\n setEndOfListElement={setEndOfListElement}\n />\n </>\n )}\n </TracesDataList>\n );\n}\n"],"names":["DEFAULT_TRACE_COLUMN_PREFERENCES","useRef","buildTraceListColumns","buildTraceListColumnKeys","useVirtualizer","useDataListKeyboard","jsxs","TracesDataList","jsx","hasTraceColumn","TRACE_CUSTOM_COLUMN_LABELS","DropdownMenu","cn","focusRing","ListFilterIcon","Txt","DataListSkeletonRows","splitColumns","Fragment","getInputPreview","TraceErrorCell","DataList","getSpanDurationMs","formatCompactNumber","formatCost","formatTraceMetadataValue"],"mappings":"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"}
|
|
@@ -5,11 +5,10 @@ import { useRef } from 'react';
|
|
|
5
5
|
import { buildTraceListColumns, buildTraceListColumnKeys, hasTraceColumn, DEFAULT_TRACE_COLUMN_PREFERENCES, TRACE_CUSTOM_COLUMN_LABELS, formatTraceMetadataValue } from '../trace-list-columns.es.js';
|
|
6
6
|
import { getInputPreview, getSpanDurationMs } from '../utils/span-utils.es.js';
|
|
7
7
|
import { TraceErrorCell } from './trace-error-cell.es.js';
|
|
8
|
-
import {
|
|
9
|
-
import { a as DataListSkeletonRows } from '../../../data-list-skeleton-
|
|
10
|
-
import { T as TracesDataList } from '../../../traces-data-list-
|
|
8
|
+
import { s as splitColumns, e as DataList } from '../../../data-list-BQMBFAyK.js';
|
|
9
|
+
import { a as DataListSkeletonRows } from '../../../data-list-skeleton-D54r1ycU.js';
|
|
10
|
+
import { T as TracesDataList } from '../../../traces-data-list-CP6knkOn.js';
|
|
11
11
|
import { u as useDataListKeyboard } from '../../../use-data-list-keyboard-DFQr4t38.js';
|
|
12
|
-
import { s as splitColumns } from '../../../data-list-top-T-mtdIUp.js';
|
|
13
12
|
import { D as DropdownMenu } from '../../../dropdown-menu-CQ_48tVI.js';
|
|
14
13
|
import { T as Txt } from '../../../Txt-BtIGLRk1.js';
|
|
15
14
|
import { focusRing } from '../../../primitives/transitions.es.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traces-list-view.es.js","sources":["../../../../src/domains/traces/components/traces-list-view.tsx"],"sourcesContent":["import { useVirtualizer } from '@tanstack/react-virtual';\nimport { ListFilterIcon } from 'lucide-react';\nimport { useRef } from 'react';\nimport {\n DEFAULT_TRACE_COLUMN_PREFERENCES,\n TRACE_CUSTOM_COLUMN_LABELS,\n buildTraceListColumnKeys,\n buildTraceListColumns,\n formatTraceMetadataValue,\n hasTraceColumn,\n} from '../trace-list-columns';\nimport type { TraceColumnPreferences, TraceCustomColumn, TraceUsageSummary } from '../trace-list-columns';\nimport { getInputPreview, getSpanDurationMs } from '../utils/span-utils';\nimport { TraceErrorCell } from './trace-error-cell';\nimport { DataList, DataListSkeletonRows, TracesDataList, useDataListKeyboard } from '@/ds/components/DataList';\nimport type { DataListSort } from '@/ds/components/DataList';\nimport { splitColumns } from '@/ds/components/DataList/shared';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu';\nimport { Txt } from '@/ds/components/Txt/Txt';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { formatCompactNumber, formatCost } from '@/lib/cost';\nimport { cn } from '@/lib/utils';\nimport { formatDuration } from '@/utils/duration';\n\nexport type TracesListViewTrace = {\n traceId: string;\n /** Required for branch rows; absent on plain trace rows (which are root-rooted). */\n spanId?: string | null;\n /** `null`/missing → root span. Drives the Kind column's icon (top-level trace vs nested branch). */\n parentSpanId?: string | null;\n name: string;\n entityType?: string | null;\n entityId?: string | null;\n entityName?: string | null;\n threadId?: string | null;\n resourceId?: string | null;\n environment?: string | null;\n status?: string | null;\n /** Server-rendered preview of `input`. Present on lightweight rows, which omit `input` itself. */\n inputPreview?: string | null;\n input?: unknown;\n /** Server-rendered preview of the root span's output. */\n outputPreview?: string;\n /** Server-rendered preview of the root span's error. Shown in place of the output when `status` is `'error'`. */\n errorPreview?: string;\n metadata?: Record<string, unknown> | null;\n startedAt?: Date | string | null;\n endedAt?: Date | string | null;\n createdAt: Date | string;\n};\n\nconst ROW_HEIGHT = 36;\nconst OVERSCAN = 8;\n/** Distinct values offered in a custom column's \"filter by value\" header menu. */\nconst MAX_FILTER_VALUES = 20;\n\nfunction customColumnValue(trace: TracesListViewTrace, field: TraceCustomColumn): string | null | undefined {\n return trace[field];\n}\n\nfunction distinctCustomColumnValues(traces: TracesListViewTrace[], field: TraceCustomColumn): string[] {\n const values = new Set<string>();\n for (const trace of traces) {\n const value = trace[field];\n if (typeof value === 'string' && value) values.add(value);\n if (values.size >= MAX_FILTER_VALUES) break;\n }\n return [...values];\n}\n\nfunction sumTokens(usage: TraceUsageSummary | undefined): number | undefined {\n if (usage?.inputTokens === undefined && usage?.outputTokens === undefined) return undefined;\n return (usage?.inputTokens ?? 0) + (usage?.outputTokens ?? 0);\n}\n\ntype FailedTrace = TracesListViewTrace & { spanId: string; errorPreview: string };\n\n/** A failed row whose error preview can open the full error from its span. */\nfunction isFailedTrace(trace: TracesListViewTrace): trace is FailedTrace {\n return trace.status === 'error' && !!trace.errorPreview && !!trace.spanId;\n}\n\nexport type TracesListViewProps = {\n traces: TracesListViewTrace[];\n isLoading?: boolean;\n isFetchingNextPage?: boolean;\n hasNextPage?: boolean;\n setEndOfListElement?: (element: HTMLDivElement | null) => void;\n filtersApplied?: boolean;\n /** Currently featured/selected trace — its row gets the highlighted background. */\n featuredTraceId?: string | null;\n /**\n * Required in branches mode to disambiguate rows sharing a `traceId`. When set,\n * a row is featured only when both `traceId` and `spanId` match.\n */\n featuredSpanId?: string | null;\n /** Branches mode mixes root traces with subtraces — enables the Trace/Subtrace tooltip on the\n * level icon in the Name column, which is meaningless when every row is a root. */\n isBranchesMode?: boolean;\n /** Keys (`traceId:spanId`) of rows that just arrived via delta polling. Rows whose key is in\n * this set get a temporary tint to distinguish them from rows present since the last page-mode\n * fetch. Auto-expires upstream (in useTraces) after a short window. */\n recentlyAddedKeys?: Set<string>;\n /** Optional and metadata columns selected for this project. */\n columnPreferences?: TraceColumnPreferences;\n /** Token and estimated-cost totals, aggregated across model spans by trace ID. */\n usageByTraceId?: ReadonlyMap<string, TraceUsageSummary>;\n /** Called when a row is clicked. The current selection logic (toggle on same id) is the consumer's call. */\n onTraceClick: (trace: TracesListViewTrace) => void;\n /** Current sort of the Created column. When `onSortChange` is provided the header becomes sortable. */\n createdSort?: DataListSort;\n onSortChange?: (direction: DataListSort, key: 'startedAt') => void;\n /** When provided, custom column headers offer an `is <value>` filter for every value currently listed. */\n onFilterByField?: (field: TraceCustomColumn, value: string) => void;\n /** Storage id for the persisted column order. Use a distinct id per page so each keeps its own order. */\n listId?: string;\n};\n\n/**\n * Virtualized presentational list. Renders only the visible window via TanStack Virtual, and\n * uses DataList primitives for layout (CSS Grid with subgrid rows).\n */\nexport function TracesListView({\n traces,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n filtersApplied,\n featuredTraceId,\n featuredSpanId,\n isBranchesMode,\n recentlyAddedKeys,\n columnPreferences = DEFAULT_TRACE_COLUMN_PREFERENCES,\n usageByTraceId,\n onTraceClick,\n createdSort,\n onSortChange,\n onFilterByField,\n listId = 'all-traces',\n}: TracesListViewProps) {\n const scrollRef = useRef<HTMLDivElement | null>(null);\n const columns = buildTraceListColumns(columnPreferences);\n const columnKeys = buildTraceListColumnKeys(columnPreferences);\n\n const virtualizer = useVirtualizer({\n count: traces.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: () => ROW_HEIGHT,\n overscan: OVERSCAN,\n });\n\n const { getRowProps } = useDataListKeyboard({\n count: traces.length,\n containerRef: scrollRef,\n onNavigate: index => virtualizer.scrollToIndex(index),\n global: true,\n });\n\n const virtualItems = virtualizer.getVirtualItems();\n const totalSize = virtualizer.getTotalSize();\n const paddingTop = virtualItems[0]?.start ?? 0;\n const paddingBottom =\n virtualItems.length > 0 ? Math.max(0, totalSize - (virtualItems[virtualItems.length - 1]?.end ?? 0)) : 0;\n\n return (\n <TracesDataList\n reorderable\n id={listId}\n columns={columns}\n columnKeys={columnKeys}\n fit=\"container\"\n scrollRef={scrollRef}\n className=\"min-w-0\"\n >\n <TracesDataList.Top>\n {onSortChange ? (\n <TracesDataList.SortableTopCell sortKey=\"startedAt\" sort={createdSort} onSortChange={onSortChange}>\n Start\n </TracesDataList.SortableTopCell>\n ) : (\n <TracesDataList.TopCell>Start</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'type') && <TracesDataList.TopCell>Primitive type</TracesDataList.TopCell>}\n <TracesDataList.TopCell>Primitive name</TracesDataList.TopCell>\n {hasTraceColumn(columnPreferences, 'input') && <TracesDataList.TopCell>Input</TracesDataList.TopCell>}\n {hasTraceColumn(columnPreferences, 'output') && <TracesDataList.TopCell>Output</TracesDataList.TopCell>}\n <TracesDataList.TopCell>Status</TracesDataList.TopCell>\n {hasTraceColumn(columnPreferences, 'duration') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Duration</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'endTime') && <TracesDataList.TopCell>End</TracesDataList.TopCell>}\n {hasTraceColumn(columnPreferences, 'environment') && (\n <TracesDataList.TopCell>Environment</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'inputTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Input tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'outputTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Output tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'totalTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Total tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'estimatedCost') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Est. cost</TracesDataList.TopCell>\n )}\n {columnPreferences.customColumns.map(field => {\n const label = TRACE_CUSTOM_COLUMN_LABELS[field];\n const filterValues = onFilterByField ? distinctCustomColumnValues(traces, field) : [];\n if (!onFilterByField || filterValues.length === 0) {\n return <TracesDataList.TopCell key={field}>{label}</TracesDataList.TopCell>;\n }\n return (\n <TracesDataList.TopCell key={field} className=\"overflow-visible\">\n <DropdownMenu>\n <DropdownMenu.Trigger\n render={\n <button\n type=\"button\"\n className={cn('flex min-w-0 items-center gap-1 rounded-sm hover:text-foreground', focusRing)}\n >\n <span className=\"min-w-0 truncate\">{label}</span>\n <ListFilterIcon aria-hidden className=\"size-[1.2em] shrink-0\" />\n </button>\n }\n />\n <DropdownMenu.Content align=\"start\">\n <DropdownMenu.Label>Filter by value</DropdownMenu.Label>\n {filterValues.map(value => (\n <DropdownMenu.Item key={value} onSelect={() => onFilterByField(field, value)}>\n <Txt as=\"span\" variant=\"body-sm\" font=\"mono\" className=\"min-w-0 truncate\">\n {value}\n </Txt>\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n </TracesDataList.TopCell>\n );\n })}\n {columnPreferences.metadataKeys.map(key => (\n <TracesDataList.TopCellWithTooltip key={key} tooltip={key}>\n {key}\n </TracesDataList.TopCellWithTooltip>\n ))}\n </TracesDataList.Top>\n\n {isLoading ? (\n <DataListSkeletonRows columnCount={splitColumns(columns).length} />\n ) : traces.length === 0 ? (\n <TracesDataList.NoMatch\n message={filtersApplied ? 'No traces found for applied filters' : 'No traces found yet'}\n />\n ) : (\n <>\n <TracesDataList.Spacer height={paddingTop} />\n {virtualItems.map(vi => {\n const trace = traces[vi.index];\n if (!trace) return null;\n\n const isFeatured =\n trace.traceId === featuredTraceId && (featuredSpanId == null || trace.spanId === featuredSpanId);\n const rowKey = `${trace.traceId}:${trace.spanId ?? ''}`;\n const isRecentlyAdded = recentlyAddedKeys?.has(rowKey) ?? false;\n const displayDate = trace.startedAt ?? trace.createdAt;\n const usage = usageByTraceId?.get(trace.traceId);\n\n return (\n <TracesDataList.RowButton\n key={rowKey}\n ref={virtualizer.measureElement}\n data-index={vi.index}\n {...getRowProps(vi.index)}\n onClick={() => onTraceClick(trace)}\n featured={isFeatured}\n className={cn(isRecentlyAdded && 'animate-row-highlight')}\n >\n <TracesDataList.CreatedCell timestamp={displayDate} preset=\"day-time-seconds\" />\n {hasTraceColumn(columnPreferences, 'type') && <TracesDataList.TypeCell entityType={trace.entityType} />}\n <TracesDataList.NameCell\n name={trace.entityName || trace.name}\n parentSpanId={trace.parentSpanId}\n showLevelTooltip={isBranchesMode}\n />\n {hasTraceColumn(columnPreferences, 'input') && (\n <TracesDataList.InputCell input={trace.inputPreview ?? getInputPreview(trace.input)} />\n )}\n {hasTraceColumn(columnPreferences, 'output') &&\n (isFailedTrace(trace) ? (\n <TraceErrorCell traceId={trace.traceId} spanId={trace.spanId} errorPreview={trace.errorPreview} />\n ) : (\n <TracesDataList.OutputCell\n output={trace.outputPreview}\n error={trace.errorPreview}\n status={trace.status}\n />\n ))}\n <TracesDataList.StatusCell status={trace.status} />\n {hasTraceColumn(columnPreferences, 'duration') && (\n <DataList.NumberCell font=\"mono\">\n {formatDuration(getSpanDurationMs(trace.startedAt, trace.endedAt))}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'endTime') && (\n <TracesDataList.CreatedCell timestamp={trace.endedAt ?? ''} preset=\"day-time-seconds\" />\n )}\n {hasTraceColumn(columnPreferences, 'environment') && (\n <DataList.TextCell>{trace.environment || '—'}</DataList.TextCell>\n )}\n {hasTraceColumn(columnPreferences, 'inputTokens') && (\n <DataList.NumberCell>\n {usage?.inputTokens === undefined ? undefined : formatCompactNumber(usage.inputTokens)}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'outputTokens') && (\n <DataList.NumberCell>\n {usage?.outputTokens === undefined ? undefined : formatCompactNumber(usage.outputTokens)}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'totalTokens') && (\n <DataList.NumberCell>\n {(() => {\n const total = sumTokens(usage);\n return total === undefined ? undefined : formatCompactNumber(total);\n })()}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'estimatedCost') && (\n <DataList.NumberCell>\n {usage?.estimatedCost === undefined ? undefined : formatCost(usage.estimatedCost, usage.costUnit)}\n </DataList.NumberCell>\n )}\n {columnPreferences.customColumns.map(field => (\n <DataList.TextCell font=\"mono\" key={field}>\n {customColumnValue(trace, field) ?? undefined}\n </DataList.TextCell>\n ))}\n {columnPreferences.metadataKeys.map(key => {\n const value = formatTraceMetadataValue(trace.metadata, key);\n return (\n <DataList.TextCell font=\"mono\" key={key}>\n {value}\n </DataList.TextCell>\n );\n })}\n </TracesDataList.RowButton>\n );\n })}\n <TracesDataList.Spacer height={paddingBottom} />\n <TracesDataList.NextPageLoading\n isLoading={isFetchingNextPage}\n hasMore={hasNextPage}\n setEndOfListElement={setEndOfListElement}\n />\n </>\n )}\n </TracesDataList>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"traces-list-view.es.js","sources":["../../../../src/domains/traces/components/traces-list-view.tsx"],"sourcesContent":["import { useVirtualizer } from '@tanstack/react-virtual';\nimport { ListFilterIcon } from 'lucide-react';\nimport { useRef } from 'react';\nimport {\n DEFAULT_TRACE_COLUMN_PREFERENCES,\n TRACE_CUSTOM_COLUMN_LABELS,\n buildTraceListColumnKeys,\n buildTraceListColumns,\n formatTraceMetadataValue,\n hasTraceColumn,\n} from '../trace-list-columns';\nimport type { TraceColumnPreferences, TraceCustomColumn, TraceUsageSummary } from '../trace-list-columns';\nimport { getInputPreview, getSpanDurationMs } from '../utils/span-utils';\nimport { TraceErrorCell } from './trace-error-cell';\nimport { DataList, DataListSkeletonRows, TracesDataList, useDataListKeyboard } from '@/ds/components/DataList';\nimport type { DataListSort } from '@/ds/components/DataList';\nimport { splitColumns } from '@/ds/components/DataList/shared';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu';\nimport { Txt } from '@/ds/components/Txt/Txt';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { formatCompactNumber, formatCost } from '@/lib/cost';\nimport { cn } from '@/lib/utils';\nimport { formatDuration } from '@/utils/duration';\n\nexport type TracesListViewTrace = {\n traceId: string;\n /** Required for branch rows; absent on plain trace rows (which are root-rooted). */\n spanId?: string | null;\n /** `null`/missing → root span. Drives the Kind column's icon (top-level trace vs nested branch). */\n parentSpanId?: string | null;\n name: string;\n entityType?: string | null;\n entityId?: string | null;\n entityName?: string | null;\n threadId?: string | null;\n resourceId?: string | null;\n environment?: string | null;\n status?: string | null;\n /** Server-rendered preview of `input`. Present on lightweight rows, which omit `input` itself. */\n inputPreview?: string | null;\n input?: unknown;\n /** Server-rendered preview of the root span's output. */\n outputPreview?: string;\n /** Server-rendered preview of the root span's error. Shown in place of the output when `status` is `'error'`. */\n errorPreview?: string;\n metadata?: Record<string, unknown> | null;\n startedAt?: Date | string | null;\n endedAt?: Date | string | null;\n createdAt: Date | string;\n};\n\nconst ROW_HEIGHT = 36;\nconst OVERSCAN = 8;\n/** Distinct values offered in a custom column's \"filter by value\" header menu. */\nconst MAX_FILTER_VALUES = 20;\n\nfunction customColumnValue(trace: TracesListViewTrace, field: TraceCustomColumn): string | null | undefined {\n return trace[field];\n}\n\nfunction distinctCustomColumnValues(traces: TracesListViewTrace[], field: TraceCustomColumn): string[] {\n const values = new Set<string>();\n for (const trace of traces) {\n const value = trace[field];\n if (typeof value === 'string' && value) values.add(value);\n if (values.size >= MAX_FILTER_VALUES) break;\n }\n return [...values];\n}\n\nfunction sumTokens(usage: TraceUsageSummary | undefined): number | undefined {\n if (usage?.inputTokens === undefined && usage?.outputTokens === undefined) return undefined;\n return (usage?.inputTokens ?? 0) + (usage?.outputTokens ?? 0);\n}\n\ntype FailedTrace = TracesListViewTrace & { spanId: string; errorPreview: string };\n\n/** A failed row whose error preview can open the full error from its span. */\nfunction isFailedTrace(trace: TracesListViewTrace): trace is FailedTrace {\n return trace.status === 'error' && !!trace.errorPreview && !!trace.spanId;\n}\n\nexport type TracesListViewProps = {\n traces: TracesListViewTrace[];\n isLoading?: boolean;\n isFetchingNextPage?: boolean;\n hasNextPage?: boolean;\n setEndOfListElement?: (element: HTMLDivElement | null) => void;\n filtersApplied?: boolean;\n /** Currently featured/selected trace — its row gets the highlighted background. */\n featuredTraceId?: string | null;\n /**\n * Required in branches mode to disambiguate rows sharing a `traceId`. When set,\n * a row is featured only when both `traceId` and `spanId` match.\n */\n featuredSpanId?: string | null;\n /** Branches mode mixes root traces with subtraces — enables the Trace/Subtrace tooltip on the\n * level icon in the Name column, which is meaningless when every row is a root. */\n isBranchesMode?: boolean;\n /** Keys (`traceId:spanId`) of rows that just arrived via delta polling. Rows whose key is in\n * this set get a temporary tint to distinguish them from rows present since the last page-mode\n * fetch. Auto-expires upstream (in useTraces) after a short window. */\n recentlyAddedKeys?: Set<string>;\n /** Optional and metadata columns selected for this project. */\n columnPreferences?: TraceColumnPreferences;\n /** Token and estimated-cost totals, aggregated across model spans by trace ID. */\n usageByTraceId?: ReadonlyMap<string, TraceUsageSummary>;\n /** Called when a row is clicked. The current selection logic (toggle on same id) is the consumer's call. */\n onTraceClick: (trace: TracesListViewTrace) => void;\n /** Current sort of the Created column. When `onSortChange` is provided the header becomes sortable. */\n createdSort?: DataListSort;\n onSortChange?: (direction: DataListSort, key: 'startedAt') => void;\n /** When provided, custom column headers offer an `is <value>` filter for every value currently listed. */\n onFilterByField?: (field: TraceCustomColumn, value: string) => void;\n /** Storage id for the persisted column order. Use a distinct id per page so each keeps its own order. */\n listId?: string;\n};\n\n/**\n * Virtualized presentational list. Renders only the visible window via TanStack Virtual, and\n * uses DataList primitives for layout (CSS Grid with subgrid rows).\n */\nexport function TracesListView({\n traces,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n filtersApplied,\n featuredTraceId,\n featuredSpanId,\n isBranchesMode,\n recentlyAddedKeys,\n columnPreferences = DEFAULT_TRACE_COLUMN_PREFERENCES,\n usageByTraceId,\n onTraceClick,\n createdSort,\n onSortChange,\n onFilterByField,\n listId = 'all-traces',\n}: TracesListViewProps) {\n const scrollRef = useRef<HTMLDivElement | null>(null);\n const columns = buildTraceListColumns(columnPreferences);\n const columnKeys = buildTraceListColumnKeys(columnPreferences);\n\n const virtualizer = useVirtualizer({\n count: traces.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: () => ROW_HEIGHT,\n overscan: OVERSCAN,\n });\n\n const { getRowProps } = useDataListKeyboard({\n count: traces.length,\n containerRef: scrollRef,\n onNavigate: index => virtualizer.scrollToIndex(index),\n global: true,\n });\n\n const virtualItems = virtualizer.getVirtualItems();\n const totalSize = virtualizer.getTotalSize();\n const paddingTop = virtualItems[0]?.start ?? 0;\n const paddingBottom =\n virtualItems.length > 0 ? Math.max(0, totalSize - (virtualItems[virtualItems.length - 1]?.end ?? 0)) : 0;\n\n return (\n <TracesDataList\n reorderable\n id={listId}\n columns={columns}\n columnKeys={columnKeys}\n fit=\"container\"\n scrollRef={scrollRef}\n className=\"min-w-0\"\n >\n <TracesDataList.Top>\n {onSortChange ? (\n <TracesDataList.SortableTopCell sortKey=\"startedAt\" sort={createdSort} onSortChange={onSortChange}>\n Start\n </TracesDataList.SortableTopCell>\n ) : (\n <TracesDataList.TopCell>Start</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'type') && <TracesDataList.TopCell>Primitive type</TracesDataList.TopCell>}\n <TracesDataList.TopCell>Primitive name</TracesDataList.TopCell>\n {hasTraceColumn(columnPreferences, 'input') && <TracesDataList.TopCell>Input</TracesDataList.TopCell>}\n {hasTraceColumn(columnPreferences, 'output') && <TracesDataList.TopCell>Output</TracesDataList.TopCell>}\n <TracesDataList.TopCell>Status</TracesDataList.TopCell>\n {hasTraceColumn(columnPreferences, 'duration') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Duration</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'endTime') && <TracesDataList.TopCell>End</TracesDataList.TopCell>}\n {hasTraceColumn(columnPreferences, 'environment') && (\n <TracesDataList.TopCell>Environment</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'inputTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Input tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'outputTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Output tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'totalTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Total tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'estimatedCost') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Est. cost</TracesDataList.TopCell>\n )}\n {columnPreferences.customColumns.map(field => {\n const label = TRACE_CUSTOM_COLUMN_LABELS[field];\n const filterValues = onFilterByField ? distinctCustomColumnValues(traces, field) : [];\n if (!onFilterByField || filterValues.length === 0) {\n return <TracesDataList.TopCell key={field}>{label}</TracesDataList.TopCell>;\n }\n return (\n <TracesDataList.TopCell key={field} className=\"overflow-visible\">\n <DropdownMenu>\n <DropdownMenu.Trigger\n render={\n <button\n type=\"button\"\n className={cn('flex min-w-0 items-center gap-1 rounded-sm hover:text-foreground', focusRing)}\n >\n <span className=\"min-w-0 truncate\">{label}</span>\n <ListFilterIcon aria-hidden className=\"size-[1.2em] shrink-0\" />\n </button>\n }\n />\n <DropdownMenu.Content align=\"start\">\n <DropdownMenu.Label>Filter by value</DropdownMenu.Label>\n {filterValues.map(value => (\n <DropdownMenu.Item key={value} onSelect={() => onFilterByField(field, value)}>\n <Txt as=\"span\" variant=\"body-sm\" font=\"mono\" className=\"min-w-0 truncate\">\n {value}\n </Txt>\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n </TracesDataList.TopCell>\n );\n })}\n {columnPreferences.metadataKeys.map(key => (\n <TracesDataList.TopCellWithTooltip key={key} tooltip={key}>\n {key}\n </TracesDataList.TopCellWithTooltip>\n ))}\n </TracesDataList.Top>\n\n {isLoading ? (\n <DataListSkeletonRows columnCount={splitColumns(columns).length} />\n ) : traces.length === 0 ? (\n <TracesDataList.NoMatch\n message={filtersApplied ? 'No traces found for applied filters' : 'No traces found yet'}\n />\n ) : (\n <>\n <TracesDataList.Spacer height={paddingTop} />\n {virtualItems.map(vi => {\n const trace = traces[vi.index];\n if (!trace) return null;\n\n const isFeatured =\n trace.traceId === featuredTraceId && (featuredSpanId == null || trace.spanId === featuredSpanId);\n const rowKey = `${trace.traceId}:${trace.spanId ?? ''}`;\n const isRecentlyAdded = recentlyAddedKeys?.has(rowKey) ?? false;\n const displayDate = trace.startedAt ?? trace.createdAt;\n const usage = usageByTraceId?.get(trace.traceId);\n\n return (\n <TracesDataList.RowButton\n key={rowKey}\n ref={virtualizer.measureElement}\n data-index={vi.index}\n {...getRowProps(vi.index)}\n onClick={() => onTraceClick(trace)}\n featured={isFeatured}\n className={cn(isRecentlyAdded && 'animate-row-highlight')}\n >\n <TracesDataList.CreatedCell timestamp={displayDate} preset=\"day-time-seconds\" />\n {hasTraceColumn(columnPreferences, 'type') && <TracesDataList.TypeCell entityType={trace.entityType} />}\n <TracesDataList.NameCell\n name={trace.entityName || trace.name}\n parentSpanId={trace.parentSpanId}\n showLevelTooltip={isBranchesMode}\n />\n {hasTraceColumn(columnPreferences, 'input') && (\n <TracesDataList.InputCell input={trace.inputPreview ?? getInputPreview(trace.input)} />\n )}\n {hasTraceColumn(columnPreferences, 'output') &&\n (isFailedTrace(trace) ? (\n <TraceErrorCell traceId={trace.traceId} spanId={trace.spanId} errorPreview={trace.errorPreview} />\n ) : (\n <TracesDataList.OutputCell\n output={trace.outputPreview}\n error={trace.errorPreview}\n status={trace.status}\n />\n ))}\n <TracesDataList.StatusCell status={trace.status} />\n {hasTraceColumn(columnPreferences, 'duration') && (\n <DataList.NumberCell font=\"mono\">\n {formatDuration(getSpanDurationMs(trace.startedAt, trace.endedAt))}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'endTime') && (\n <TracesDataList.CreatedCell timestamp={trace.endedAt ?? ''} preset=\"day-time-seconds\" />\n )}\n {hasTraceColumn(columnPreferences, 'environment') && (\n <DataList.TextCell>{trace.environment || '—'}</DataList.TextCell>\n )}\n {hasTraceColumn(columnPreferences, 'inputTokens') && (\n <DataList.NumberCell>\n {usage?.inputTokens === undefined ? undefined : formatCompactNumber(usage.inputTokens)}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'outputTokens') && (\n <DataList.NumberCell>\n {usage?.outputTokens === undefined ? undefined : formatCompactNumber(usage.outputTokens)}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'totalTokens') && (\n <DataList.NumberCell>\n {(() => {\n const total = sumTokens(usage);\n return total === undefined ? undefined : formatCompactNumber(total);\n })()}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'estimatedCost') && (\n <DataList.NumberCell>\n {usage?.estimatedCost === undefined ? undefined : formatCost(usage.estimatedCost, usage.costUnit)}\n </DataList.NumberCell>\n )}\n {columnPreferences.customColumns.map(field => (\n <DataList.TextCell font=\"mono\" key={field}>\n {customColumnValue(trace, field) ?? undefined}\n </DataList.TextCell>\n ))}\n {columnPreferences.metadataKeys.map(key => {\n const value = formatTraceMetadataValue(trace.metadata, key);\n return (\n <DataList.TextCell font=\"mono\" key={key}>\n {value}\n </DataList.TextCell>\n );\n })}\n </TracesDataList.RowButton>\n );\n })}\n <TracesDataList.Spacer height={paddingBottom} />\n <TracesDataList.NextPageLoading\n isLoading={isFetchingNextPage}\n hasMore={hasNextPage}\n setEndOfListElement={setEndOfListElement}\n />\n </>\n )}\n </TracesDataList>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,10 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
4
4
|
|
|
5
5
|
const jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
const domains_traces_traceListColumns = require('../trace-list-columns.cjs.js');
|
|
7
|
-
|
|
7
|
+
require('../../../data-list-4t6Ueon8.cjs');
|
|
8
|
+
const dataListSkeleton = require('../../../data-list-skeleton-CVXZYY0k.cjs');
|
|
9
|
+
require('react');
|
|
10
|
+
require('../../../keyboard/keyboard-shortcuts-context.cjs.js');
|
|
8
11
|
const skeleton = require('../../../skeleton-lkFwOzqL.cjs');
|
|
9
12
|
|
|
10
13
|
function TracesPageSkeleton({ columnPreferences = domains_traces_traceListColumns.DEFAULT_TRACE_COLUMN_PREFERENCES }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traces-page-skeleton.cjs.js","sources":["../../../../src/domains/traces/components/traces-page-skeleton.tsx"],"sourcesContent":["import { buildTraceListColumns, DEFAULT_TRACE_COLUMN_PREFERENCES } from '../trace-list-columns';\nimport type { TraceColumnPreferences } from '../trace-list-columns';\nimport { DataListSkeleton } from '@/ds/components/DataList';\nimport { Skeleton } from '@/ds/components/Skeleton';\n\nexport type TracesPageSkeletonProps = {\n columnPreferences?: TraceColumnPreferences;\n};\n\n/**\n * Page-level placeholder shown while filter-field discovery is pending: a toolbar-height\n * bar stands in for the FilterBar and the usual list skeleton for the trace rows.\n */\nexport function TracesPageSkeleton({ columnPreferences = DEFAULT_TRACE_COLUMN_PREFERENCES }: TracesPageSkeletonProps) {\n const columns = buildTraceListColumns(columnPreferences);\n return (\n <div\n className=\"flex h-full min-h-0 flex-col gap-2\"\n role=\"status\"\n aria-label=\"Loading traces\"\n data-testid=\"traces-page-skeleton\"\n >\n <div className=\"flex items-center gap-2\">\n <Skeleton className=\"h-control-md min-w-64 flex-1\" />\n <Skeleton className=\"h-control-md w-28\" />\n </div>\n <DataListSkeleton columns={columns} fit=\"container\" />\n </div>\n );\n}\n"],"names":["DEFAULT_TRACE_COLUMN_PREFERENCES","buildTraceListColumns","jsxs","jsx","Skeleton","DataListSkeleton"],"mappings":"
|
|
1
|
+
{"version":3,"file":"traces-page-skeleton.cjs.js","sources":["../../../../src/domains/traces/components/traces-page-skeleton.tsx"],"sourcesContent":["import { buildTraceListColumns, DEFAULT_TRACE_COLUMN_PREFERENCES } from '../trace-list-columns';\nimport type { TraceColumnPreferences } from '../trace-list-columns';\nimport { DataListSkeleton } from '@/ds/components/DataList';\nimport { Skeleton } from '@/ds/components/Skeleton';\n\nexport type TracesPageSkeletonProps = {\n columnPreferences?: TraceColumnPreferences;\n};\n\n/**\n * Page-level placeholder shown while filter-field discovery is pending: a toolbar-height\n * bar stands in for the FilterBar and the usual list skeleton for the trace rows.\n */\nexport function TracesPageSkeleton({ columnPreferences = DEFAULT_TRACE_COLUMN_PREFERENCES }: TracesPageSkeletonProps) {\n const columns = buildTraceListColumns(columnPreferences);\n return (\n <div\n className=\"flex h-full min-h-0 flex-col gap-2\"\n role=\"status\"\n aria-label=\"Loading traces\"\n data-testid=\"traces-page-skeleton\"\n >\n <div className=\"flex items-center gap-2\">\n <Skeleton className=\"h-control-md min-w-64 flex-1\" />\n <Skeleton className=\"h-control-md w-28\" />\n </div>\n <DataListSkeleton columns={columns} fit=\"container\" />\n </div>\n );\n}\n"],"names":["DEFAULT_TRACE_COLUMN_PREFERENCES","buildTraceListColumns","jsxs","jsx","Skeleton","DataListSkeleton"],"mappings":";;;;;;;;;;;;AAaO,SAAS,kBAAA,CAAmB,EAAE,iBAAA,GAAoBA,gEAAA,EAAiC,EAA4B;AACpH,EAAA,MAAM,OAAA,GAAUC,sDAAsB,iBAAiB,CAAA;AACvD,EAAA,uBACEC,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,oCAAA;AAAA,MACV,IAAA,EAAK,QAAA;AAAA,MACL,YAAA,EAAW,gBAAA;AAAA,MACX,aAAA,EAAY,sBAAA;AAAA,MAEZ,QAAA,EAAA;AAAA,wBAAAA,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACb,QAAA,EAAA;AAAA,0BAAAC,cAAA,CAACC,iBAAA,EAAA,EAAS,WAAU,8BAAA,EAA+B,CAAA;AAAA,0BACnDD,cAAA,CAACC,iBAAA,EAAA,EAAS,SAAA,EAAU,mBAAA,EAAoB;AAAA,SAAA,EAC1C,CAAA;AAAA,wBACAD,cAAA,CAACE,iCAAA,EAAA,EAAiB,OAAA,EAAkB,GAAA,EAAI,WAAA,EAAY;AAAA;AAAA;AAAA,GACtD;AAEJ;;;;"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { buildTraceListColumns, DEFAULT_TRACE_COLUMN_PREFERENCES } from '../trace-list-columns.es.js';
|
|
3
|
-
import
|
|
3
|
+
import '../../../data-list-BQMBFAyK.js';
|
|
4
|
+
import { D as DataListSkeleton } from '../../../data-list-skeleton-D54r1ycU.js';
|
|
5
|
+
import 'react';
|
|
6
|
+
import '../../../keyboard/keyboard-shortcuts-context.es.js';
|
|
4
7
|
import { S as Skeleton } from '../../../skeleton-Q4fDAXcz.js';
|
|
5
8
|
|
|
6
9
|
function TracesPageSkeleton({ columnPreferences = DEFAULT_TRACE_COLUMN_PREFERENCES }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traces-page-skeleton.es.js","sources":["../../../../src/domains/traces/components/traces-page-skeleton.tsx"],"sourcesContent":["import { buildTraceListColumns, DEFAULT_TRACE_COLUMN_PREFERENCES } from '../trace-list-columns';\nimport type { TraceColumnPreferences } from '../trace-list-columns';\nimport { DataListSkeleton } from '@/ds/components/DataList';\nimport { Skeleton } from '@/ds/components/Skeleton';\n\nexport type TracesPageSkeletonProps = {\n columnPreferences?: TraceColumnPreferences;\n};\n\n/**\n * Page-level placeholder shown while filter-field discovery is pending: a toolbar-height\n * bar stands in for the FilterBar and the usual list skeleton for the trace rows.\n */\nexport function TracesPageSkeleton({ columnPreferences = DEFAULT_TRACE_COLUMN_PREFERENCES }: TracesPageSkeletonProps) {\n const columns = buildTraceListColumns(columnPreferences);\n return (\n <div\n className=\"flex h-full min-h-0 flex-col gap-2\"\n role=\"status\"\n aria-label=\"Loading traces\"\n data-testid=\"traces-page-skeleton\"\n >\n <div className=\"flex items-center gap-2\">\n <Skeleton className=\"h-control-md min-w-64 flex-1\" />\n <Skeleton className=\"h-control-md w-28\" />\n </div>\n <DataListSkeleton columns={columns} fit=\"container\" />\n </div>\n );\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"traces-page-skeleton.es.js","sources":["../../../../src/domains/traces/components/traces-page-skeleton.tsx"],"sourcesContent":["import { buildTraceListColumns, DEFAULT_TRACE_COLUMN_PREFERENCES } from '../trace-list-columns';\nimport type { TraceColumnPreferences } from '../trace-list-columns';\nimport { DataListSkeleton } from '@/ds/components/DataList';\nimport { Skeleton } from '@/ds/components/Skeleton';\n\nexport type TracesPageSkeletonProps = {\n columnPreferences?: TraceColumnPreferences;\n};\n\n/**\n * Page-level placeholder shown while filter-field discovery is pending: a toolbar-height\n * bar stands in for the FilterBar and the usual list skeleton for the trace rows.\n */\nexport function TracesPageSkeleton({ columnPreferences = DEFAULT_TRACE_COLUMN_PREFERENCES }: TracesPageSkeletonProps) {\n const columns = buildTraceListColumns(columnPreferences);\n return (\n <div\n className=\"flex h-full min-h-0 flex-col gap-2\"\n role=\"status\"\n aria-label=\"Loading traces\"\n data-testid=\"traces-page-skeleton\"\n >\n <div className=\"flex items-center gap-2\">\n <Skeleton className=\"h-control-md min-w-64 flex-1\" />\n <Skeleton className=\"h-control-md w-28\" />\n </div>\n <DataListSkeleton columns={columns} fit=\"container\" />\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;;;AAaO,SAAS,kBAAA,CAAmB,EAAE,iBAAA,GAAoB,gCAAA,EAAiC,EAA4B;AACpH,EAAA,MAAM,OAAA,GAAU,sBAAsB,iBAAiB,CAAA;AACvD,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,oCAAA;AAAA,MACV,IAAA,EAAK,QAAA;AAAA,MACL,YAAA,EAAW,gBAAA;AAAA,MACX,aAAA,EAAY,sBAAA;AAAA,MAEZ,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACb,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,QAAA,EAAA,EAAS,WAAU,8BAAA,EAA+B,CAAA;AAAA,0BACnD,GAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,mBAAA,EAAoB;AAAA,SAAA,EAC1C,CAAA;AAAA,wBACA,GAAA,CAAC,gBAAA,EAAA,EAAiB,OAAA,EAAkB,GAAA,EAAI,WAAA,EAAY;AAAA;AAAA;AAAA,GACtD;AAEJ;;;;"}
|
|
@@ -8,49 +8,77 @@ const React = require('react');
|
|
|
8
8
|
const domains_traces_components_tracesListViewAdapter = require('../components/traces-list-view-adapter.cjs.js');
|
|
9
9
|
|
|
10
10
|
const TRACES_LIST_REFETCH_INTERVAL_MS = 1e4;
|
|
11
|
+
const TRACES_LIST_DELTA_POLL_INTERVAL_MS = 3e4;
|
|
12
|
+
const TRACES_LIST_DELTA_HORIZON_MS = 24 * 60 * 60 * 1e3;
|
|
13
|
+
const SELECTION_CLOCK = /* @__PURE__ */ new Date(0);
|
|
11
14
|
function isRejectedTraceListRequest(error) {
|
|
12
15
|
return error instanceof clientJs.MastraClientError && error.status >= 400 && error.status < 500;
|
|
13
16
|
}
|
|
14
17
|
function fixedWindowRefetchInterval(error) {
|
|
15
18
|
return isRejectedTraceListRequest(error) ? false : TRACES_LIST_REFETCH_INTERVAL_MS;
|
|
16
19
|
}
|
|
20
|
+
function deltaListRefetchInterval(error) {
|
|
21
|
+
return error && !isRejectedTraceListRequest(error) ? TRACES_LIST_REFETCH_INTERVAL_MS : false;
|
|
22
|
+
}
|
|
17
23
|
function useTracesListSource({
|
|
18
24
|
query: buildQuery,
|
|
19
25
|
orderBy,
|
|
20
26
|
rolling = true,
|
|
21
27
|
initialAutoRefetch = true,
|
|
22
28
|
withQueryTrace,
|
|
29
|
+
withDeltaPolling = false,
|
|
23
30
|
legacyFilters,
|
|
24
31
|
limit,
|
|
25
|
-
enabled
|
|
32
|
+
enabled = true
|
|
26
33
|
}) {
|
|
27
|
-
const [
|
|
34
|
+
const [tickNow, setTickNow] = React.useState(() => /* @__PURE__ */ new Date());
|
|
28
35
|
const [autoRefetch, setAutoRefetch] = React.useState(initialAutoRefetch);
|
|
29
|
-
const
|
|
36
|
+
const delta = withDeltaPolling && withQueryTrace !== false;
|
|
37
|
+
const refetchInterval = !autoRefetch ? false : delta ? (query2) => deltaListRefetchInterval(query2.state.error) : !rolling ? (query2) => fixedWindowRefetchInterval(query2.state.error) : false;
|
|
38
|
+
const refetchOnWindowFocus = autoRefetch && !delta;
|
|
39
|
+
const selection = JSON.stringify(buildQuery(SELECTION_CLOCK));
|
|
40
|
+
const anchoredNow = React.useMemo(() => /* @__PURE__ */ new Date(), [selection]);
|
|
41
|
+
const now = delta ? anchoredNow : tickNow;
|
|
42
|
+
const built = buildQuery(now);
|
|
43
|
+
const anchored = delta && rolling && built.timeRange ? {
|
|
44
|
+
...built,
|
|
45
|
+
timeRange: { ...built.timeRange, to: new Date(now.getTime() + TRACES_LIST_DELTA_HORIZON_MS).toISOString() }
|
|
46
|
+
} : built;
|
|
47
|
+
const query = orderBy ? { ...anchored, orderBy } : anchored;
|
|
30
48
|
const result = traces.useTraceQuery({
|
|
31
49
|
queryOptions: {
|
|
32
|
-
traceQuery: { refetchInterval, refetchOnWindowFocus
|
|
33
|
-
legacy: { refetchInterval, refetchOnWindowFocus
|
|
50
|
+
traceQuery: { refetchInterval, refetchOnWindowFocus },
|
|
51
|
+
legacy: { refetchInterval, refetchOnWindowFocus }
|
|
34
52
|
},
|
|
35
|
-
query
|
|
53
|
+
query,
|
|
36
54
|
withQueryTrace,
|
|
37
55
|
legacyFilters,
|
|
38
56
|
limit,
|
|
39
57
|
enabled
|
|
40
58
|
});
|
|
59
|
+
traces.useTraceQueryLatest({
|
|
60
|
+
query,
|
|
61
|
+
limit,
|
|
62
|
+
enabled: enabled && delta && autoRefetch,
|
|
63
|
+
refetchInterval: TRACES_LIST_DELTA_POLL_INTERVAL_MS,
|
|
64
|
+
queryOptions: { refetchOnWindowFocus: autoRefetch }
|
|
65
|
+
});
|
|
41
66
|
React.useEffect(() => {
|
|
42
|
-
if (!autoRefetch || !rolling || result.error) return;
|
|
43
|
-
const timer = setInterval(() =>
|
|
67
|
+
if (delta || !autoRefetch || !rolling || result.error) return;
|
|
68
|
+
const timer = setInterval(() => setTickNow(/* @__PURE__ */ new Date()), TRACES_LIST_REFETCH_INTERVAL_MS);
|
|
44
69
|
return () => clearInterval(timer);
|
|
45
|
-
}, [autoRefetch, rolling, result.error]);
|
|
70
|
+
}, [delta, autoRefetch, rolling, result.error]);
|
|
71
|
+
const rows = React.useMemo(() => domains_traces_components_tracesListViewAdapter.toTracesListViewTraces(result.data ?? []), [result.data]);
|
|
46
72
|
return {
|
|
47
73
|
...result,
|
|
48
|
-
rows
|
|
74
|
+
rows,
|
|
49
75
|
autoRefetch,
|
|
50
76
|
setAutoRefetch
|
|
51
77
|
};
|
|
52
78
|
}
|
|
53
79
|
|
|
80
|
+
exports.TRACES_LIST_DELTA_HORIZON_MS = TRACES_LIST_DELTA_HORIZON_MS;
|
|
81
|
+
exports.TRACES_LIST_DELTA_POLL_INTERVAL_MS = TRACES_LIST_DELTA_POLL_INTERVAL_MS;
|
|
54
82
|
exports.TRACES_LIST_REFETCH_INTERVAL_MS = TRACES_LIST_REFETCH_INTERVAL_MS;
|
|
55
83
|
exports.fixedWindowRefetchInterval = fixedWindowRefetchInterval;
|
|
56
84
|
exports.isRejectedTraceListRequest = isRejectedTraceListRequest;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-traces-list-source.cjs.js","sources":["../../../../src/domains/traces/hooks/use-traces-list-source.ts"],"sourcesContent":["import { MastraClientError } from '@mastra/client-js';\nimport { useTraceQuery } from '@mastra/react/hooks/traces';\nimport type { TraceQueryArgs, UseTraceQueryArgs } from '@mastra/react/hooks/traces';\nimport { useEffect, useState } from 'react';\nimport { toTracesListViewTraces } from '../components/traces-list-view-adapter';\n\nexport const TRACES_LIST_REFETCH_INTERVAL_MS = 10_000;\n\n/** The server refused the request (e.g. a time range over its cap); retrying cannot change that. */\nexport function isRejectedTraceListRequest(error: unknown): boolean {\n return error instanceof MastraClientError && error.status >= 400 && error.status < 500;\n}\n\nexport function fixedWindowRefetchInterval(error: unknown): number | false {\n return isRejectedTraceListRequest(error) ? false : TRACES_LIST_REFETCH_INTERVAL_MS;\n}\n\nexport interface UseTracesListSourceArgs {\n query: (now: Date) => TraceQueryArgs;\n orderBy?: TraceQueryArgs['orderBy'];\n rolling?: boolean;\n initialAutoRefetch?: boolean;\n withQueryTrace?: boolean;\n legacyFilters?: UseTraceQueryArgs['legacyFilters'];\n /** Rows per page; defaults to `TRACE_QUERY_PER_PAGE`. */\n limit?: number;\n enabled?: boolean;\n}\n\nexport function useTracesListSource({\n query: buildQuery,\n orderBy,\n rolling = true,\n initialAutoRefetch = true,\n withQueryTrace,\n legacyFilters,\n limit,\n enabled,\n}: UseTracesListSourceArgs) {\n const [
|
|
1
|
+
{"version":3,"file":"use-traces-list-source.cjs.js","sources":["../../../../src/domains/traces/hooks/use-traces-list-source.ts"],"sourcesContent":["import { MastraClientError } from '@mastra/client-js';\nimport { useTraceQuery, useTraceQueryLatest } from '@mastra/react/hooks/traces';\nimport type { TraceQueryArgs, UseTraceQueryArgs } from '@mastra/react/hooks/traces';\nimport { useEffect, useMemo, useState } from 'react';\nimport { toTracesListViewTraces } from '../components/traces-list-view-adapter';\n\nexport const TRACES_LIST_REFETCH_INTERVAL_MS = 10_000;\n/** Delta polls only ask for what changed since the cursor, so they can run less often. */\nexport const TRACES_LIST_DELTA_POLL_INTERVAL_MS = 30_000;\n/** How far past the anchor a delta-polled rolling window reaches, so traces started after mount still match. */\nexport const TRACES_LIST_DELTA_HORIZON_MS = 24 * 60 * 60 * 1000;\n/** Fixed clock for comparing selections: filter and date changes move the query, time passing does not. */\nconst SELECTION_CLOCK = new Date(0);\n\n/** The server refused the request (e.g. a time range over its cap); retrying cannot change that. */\nexport function isRejectedTraceListRequest(error: unknown): boolean {\n return error instanceof MastraClientError && error.status >= 400 && error.status < 500;\n}\n\nexport function fixedWindowRefetchInterval(error: unknown): number | false {\n return isRejectedTraceListRequest(error) ? false : TRACES_LIST_REFETCH_INTERVAL_MS;\n}\n\n/** With delta polling the list only reloads to recover from a transient failure; delta polls bring new traces. */\nfunction deltaListRefetchInterval(error: unknown): number | false {\n return error && !isRejectedTraceListRequest(error) ? TRACES_LIST_REFETCH_INTERVAL_MS : false;\n}\n\nexport interface UseTracesListSourceArgs {\n query: (now: Date) => TraceQueryArgs;\n orderBy?: TraceQueryArgs['orderBy'];\n rolling?: boolean;\n initialAutoRefetch?: boolean;\n withQueryTrace?: boolean;\n /** The server supports delta polling: auto-refresh merges new traces instead of reloading the pages. */\n withDeltaPolling?: boolean;\n legacyFilters?: UseTraceQueryArgs['legacyFilters'];\n /** Rows per page; defaults to `TRACE_QUERY_PER_PAGE`. */\n limit?: number;\n enabled?: boolean;\n}\n\nexport function useTracesListSource({\n query: buildQuery,\n orderBy,\n rolling = true,\n initialAutoRefetch = true,\n withQueryTrace,\n withDeltaPolling = false,\n legacyFilters,\n limit,\n enabled = true,\n}: UseTracesListSourceArgs) {\n const [tickNow, setTickNow] = useState(() => new Date());\n const [autoRefetch, setAutoRefetch] = useState(initialAutoRefetch);\n const delta = withDeltaPolling && withQueryTrace !== false;\n // A fixed window polls in place. Transient failures keep polling (a blip must not silence the\n // list), but a request the server refuses ends it: each retry would only clear the error, flash\n // the placeholder list, and fail again. With delta polling the list stays put and only retries\n // a transient failure.\n const refetchInterval = !autoRefetch\n ? false\n : delta\n ? (query: { state: { error: unknown } }) => deltaListRefetchInterval(query.state.error)\n : !rolling\n ? (query: { state: { error: unknown } }) => fixedWindowRefetchInterval(query.state.error)\n : false;\n const refetchOnWindowFocus = autoRefetch && !delta;\n\n // Delta polls need the same time range every poll, so `now` only moves when the filters or dates\n // change: the new list and the new cursor start from the current time. Sorting is not part of the\n // selection and keeps the cursor.\n const selection = JSON.stringify(buildQuery(SELECTION_CLOCK));\n // eslint-disable-next-line react-hooks/exhaustive-deps -- `selection` is the trigger, not an input.\n const anchoredNow = useMemo(() => new Date(), [selection]);\n const now = delta ? anchoredNow : tickNow;\n\n const built = buildQuery(now);\n // Delta polls must keep the exact time range, so a rolling window reaches into the future\n // instead of moving its end every tick.\n const anchored =\n delta && rolling && built.timeRange\n ? {\n ...built,\n timeRange: { ...built.timeRange, to: new Date(now.getTime() + TRACES_LIST_DELTA_HORIZON_MS).toISOString() },\n }\n : built;\n const query = orderBy ? { ...anchored, orderBy } : anchored;\n\n const result = useTraceQuery({\n queryOptions: {\n traceQuery: { refetchInterval, refetchOnWindowFocus },\n legacy: { refetchInterval, refetchOnWindowFocus },\n },\n query,\n withQueryTrace,\n legacyFilters,\n limit,\n enabled,\n });\n\n useTraceQueryLatest({\n query,\n limit,\n enabled: enabled && delta && autoRefetch,\n refetchInterval: TRACES_LIST_DELTA_POLL_INTERVAL_MS,\n queryOptions: { refetchOnWindowFocus: autoRefetch },\n });\n\n // Moving the query key refreshes the cursor chain once, without a second polling request.\n useEffect(() => {\n if (delta || !autoRefetch || !rolling || result.error) return;\n const timer = setInterval(() => setTickNow(new Date()), TRACES_LIST_REFETCH_INTERVAL_MS);\n return () => clearInterval(timer);\n }, [delta, autoRefetch, rolling, result.error]);\n\n // A rolling tick moves the query key; keep the previous rows when the data is the same so\n // consumers keyed on `rows` don't re-render every tick.\n const rows = useMemo(() => toTracesListViewTraces(result.data ?? []), [result.data]);\n\n return {\n ...result,\n rows,\n autoRefetch,\n setAutoRefetch,\n };\n}\n"],"names":["MastraClientError","useState","query","useMemo","useTraceQuery","useTraceQueryLatest","useEffect","toTracesListViewTraces"],"mappings":"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"}
|
|
@@ -1,51 +1,77 @@
|
|
|
1
1
|
import { MastraClientError } from '@mastra/client-js';
|
|
2
|
-
import { useTraceQuery } from '@mastra/react/hooks/traces';
|
|
3
|
-
import { useState, useEffect } from 'react';
|
|
2
|
+
import { useTraceQuery, useTraceQueryLatest } from '@mastra/react/hooks/traces';
|
|
3
|
+
import { useState, useMemo, useEffect } from 'react';
|
|
4
4
|
import { toTracesListViewTraces } from '../components/traces-list-view-adapter.es.js';
|
|
5
5
|
|
|
6
6
|
const TRACES_LIST_REFETCH_INTERVAL_MS = 1e4;
|
|
7
|
+
const TRACES_LIST_DELTA_POLL_INTERVAL_MS = 3e4;
|
|
8
|
+
const TRACES_LIST_DELTA_HORIZON_MS = 24 * 60 * 60 * 1e3;
|
|
9
|
+
const SELECTION_CLOCK = /* @__PURE__ */ new Date(0);
|
|
7
10
|
function isRejectedTraceListRequest(error) {
|
|
8
11
|
return error instanceof MastraClientError && error.status >= 400 && error.status < 500;
|
|
9
12
|
}
|
|
10
13
|
function fixedWindowRefetchInterval(error) {
|
|
11
14
|
return isRejectedTraceListRequest(error) ? false : TRACES_LIST_REFETCH_INTERVAL_MS;
|
|
12
15
|
}
|
|
16
|
+
function deltaListRefetchInterval(error) {
|
|
17
|
+
return error && !isRejectedTraceListRequest(error) ? TRACES_LIST_REFETCH_INTERVAL_MS : false;
|
|
18
|
+
}
|
|
13
19
|
function useTracesListSource({
|
|
14
20
|
query: buildQuery,
|
|
15
21
|
orderBy,
|
|
16
22
|
rolling = true,
|
|
17
23
|
initialAutoRefetch = true,
|
|
18
24
|
withQueryTrace,
|
|
25
|
+
withDeltaPolling = false,
|
|
19
26
|
legacyFilters,
|
|
20
27
|
limit,
|
|
21
|
-
enabled
|
|
28
|
+
enabled = true
|
|
22
29
|
}) {
|
|
23
|
-
const [
|
|
30
|
+
const [tickNow, setTickNow] = useState(() => /* @__PURE__ */ new Date());
|
|
24
31
|
const [autoRefetch, setAutoRefetch] = useState(initialAutoRefetch);
|
|
25
|
-
const
|
|
32
|
+
const delta = withDeltaPolling && withQueryTrace !== false;
|
|
33
|
+
const refetchInterval = !autoRefetch ? false : delta ? (query2) => deltaListRefetchInterval(query2.state.error) : !rolling ? (query2) => fixedWindowRefetchInterval(query2.state.error) : false;
|
|
34
|
+
const refetchOnWindowFocus = autoRefetch && !delta;
|
|
35
|
+
const selection = JSON.stringify(buildQuery(SELECTION_CLOCK));
|
|
36
|
+
const anchoredNow = useMemo(() => /* @__PURE__ */ new Date(), [selection]);
|
|
37
|
+
const now = delta ? anchoredNow : tickNow;
|
|
38
|
+
const built = buildQuery(now);
|
|
39
|
+
const anchored = delta && rolling && built.timeRange ? {
|
|
40
|
+
...built,
|
|
41
|
+
timeRange: { ...built.timeRange, to: new Date(now.getTime() + TRACES_LIST_DELTA_HORIZON_MS).toISOString() }
|
|
42
|
+
} : built;
|
|
43
|
+
const query = orderBy ? { ...anchored, orderBy } : anchored;
|
|
26
44
|
const result = useTraceQuery({
|
|
27
45
|
queryOptions: {
|
|
28
|
-
traceQuery: { refetchInterval, refetchOnWindowFocus
|
|
29
|
-
legacy: { refetchInterval, refetchOnWindowFocus
|
|
46
|
+
traceQuery: { refetchInterval, refetchOnWindowFocus },
|
|
47
|
+
legacy: { refetchInterval, refetchOnWindowFocus }
|
|
30
48
|
},
|
|
31
|
-
query
|
|
49
|
+
query,
|
|
32
50
|
withQueryTrace,
|
|
33
51
|
legacyFilters,
|
|
34
52
|
limit,
|
|
35
53
|
enabled
|
|
36
54
|
});
|
|
55
|
+
useTraceQueryLatest({
|
|
56
|
+
query,
|
|
57
|
+
limit,
|
|
58
|
+
enabled: enabled && delta && autoRefetch,
|
|
59
|
+
refetchInterval: TRACES_LIST_DELTA_POLL_INTERVAL_MS,
|
|
60
|
+
queryOptions: { refetchOnWindowFocus: autoRefetch }
|
|
61
|
+
});
|
|
37
62
|
useEffect(() => {
|
|
38
|
-
if (!autoRefetch || !rolling || result.error) return;
|
|
39
|
-
const timer = setInterval(() =>
|
|
63
|
+
if (delta || !autoRefetch || !rolling || result.error) return;
|
|
64
|
+
const timer = setInterval(() => setTickNow(/* @__PURE__ */ new Date()), TRACES_LIST_REFETCH_INTERVAL_MS);
|
|
40
65
|
return () => clearInterval(timer);
|
|
41
|
-
}, [autoRefetch, rolling, result.error]);
|
|
66
|
+
}, [delta, autoRefetch, rolling, result.error]);
|
|
67
|
+
const rows = useMemo(() => toTracesListViewTraces(result.data ?? []), [result.data]);
|
|
42
68
|
return {
|
|
43
69
|
...result,
|
|
44
|
-
rows
|
|
70
|
+
rows,
|
|
45
71
|
autoRefetch,
|
|
46
72
|
setAutoRefetch
|
|
47
73
|
};
|
|
48
74
|
}
|
|
49
75
|
|
|
50
|
-
export { TRACES_LIST_REFETCH_INTERVAL_MS, fixedWindowRefetchInterval, isRejectedTraceListRequest, useTracesListSource };
|
|
76
|
+
export { TRACES_LIST_DELTA_HORIZON_MS, TRACES_LIST_DELTA_POLL_INTERVAL_MS, TRACES_LIST_REFETCH_INTERVAL_MS, fixedWindowRefetchInterval, isRejectedTraceListRequest, useTracesListSource };
|
|
51
77
|
//# sourceMappingURL=use-traces-list-source.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-traces-list-source.es.js","sources":["../../../../src/domains/traces/hooks/use-traces-list-source.ts"],"sourcesContent":["import { MastraClientError } from '@mastra/client-js';\nimport { useTraceQuery } from '@mastra/react/hooks/traces';\nimport type { TraceQueryArgs, UseTraceQueryArgs } from '@mastra/react/hooks/traces';\nimport { useEffect, useState } from 'react';\nimport { toTracesListViewTraces } from '../components/traces-list-view-adapter';\n\nexport const TRACES_LIST_REFETCH_INTERVAL_MS = 10_000;\n\n/** The server refused the request (e.g. a time range over its cap); retrying cannot change that. */\nexport function isRejectedTraceListRequest(error: unknown): boolean {\n return error instanceof MastraClientError && error.status >= 400 && error.status < 500;\n}\n\nexport function fixedWindowRefetchInterval(error: unknown): number | false {\n return isRejectedTraceListRequest(error) ? false : TRACES_LIST_REFETCH_INTERVAL_MS;\n}\n\nexport interface UseTracesListSourceArgs {\n query: (now: Date) => TraceQueryArgs;\n orderBy?: TraceQueryArgs['orderBy'];\n rolling?: boolean;\n initialAutoRefetch?: boolean;\n withQueryTrace?: boolean;\n legacyFilters?: UseTraceQueryArgs['legacyFilters'];\n /** Rows per page; defaults to `TRACE_QUERY_PER_PAGE`. */\n limit?: number;\n enabled?: boolean;\n}\n\nexport function useTracesListSource({\n query: buildQuery,\n orderBy,\n rolling = true,\n initialAutoRefetch = true,\n withQueryTrace,\n legacyFilters,\n limit,\n enabled,\n}: UseTracesListSourceArgs) {\n const [
|
|
1
|
+
{"version":3,"file":"use-traces-list-source.es.js","sources":["../../../../src/domains/traces/hooks/use-traces-list-source.ts"],"sourcesContent":["import { MastraClientError } from '@mastra/client-js';\nimport { useTraceQuery, useTraceQueryLatest } from '@mastra/react/hooks/traces';\nimport type { TraceQueryArgs, UseTraceQueryArgs } from '@mastra/react/hooks/traces';\nimport { useEffect, useMemo, useState } from 'react';\nimport { toTracesListViewTraces } from '../components/traces-list-view-adapter';\n\nexport const TRACES_LIST_REFETCH_INTERVAL_MS = 10_000;\n/** Delta polls only ask for what changed since the cursor, so they can run less often. */\nexport const TRACES_LIST_DELTA_POLL_INTERVAL_MS = 30_000;\n/** How far past the anchor a delta-polled rolling window reaches, so traces started after mount still match. */\nexport const TRACES_LIST_DELTA_HORIZON_MS = 24 * 60 * 60 * 1000;\n/** Fixed clock for comparing selections: filter and date changes move the query, time passing does not. */\nconst SELECTION_CLOCK = new Date(0);\n\n/** The server refused the request (e.g. a time range over its cap); retrying cannot change that. */\nexport function isRejectedTraceListRequest(error: unknown): boolean {\n return error instanceof MastraClientError && error.status >= 400 && error.status < 500;\n}\n\nexport function fixedWindowRefetchInterval(error: unknown): number | false {\n return isRejectedTraceListRequest(error) ? false : TRACES_LIST_REFETCH_INTERVAL_MS;\n}\n\n/** With delta polling the list only reloads to recover from a transient failure; delta polls bring new traces. */\nfunction deltaListRefetchInterval(error: unknown): number | false {\n return error && !isRejectedTraceListRequest(error) ? TRACES_LIST_REFETCH_INTERVAL_MS : false;\n}\n\nexport interface UseTracesListSourceArgs {\n query: (now: Date) => TraceQueryArgs;\n orderBy?: TraceQueryArgs['orderBy'];\n rolling?: boolean;\n initialAutoRefetch?: boolean;\n withQueryTrace?: boolean;\n /** The server supports delta polling: auto-refresh merges new traces instead of reloading the pages. */\n withDeltaPolling?: boolean;\n legacyFilters?: UseTraceQueryArgs['legacyFilters'];\n /** Rows per page; defaults to `TRACE_QUERY_PER_PAGE`. */\n limit?: number;\n enabled?: boolean;\n}\n\nexport function useTracesListSource({\n query: buildQuery,\n orderBy,\n rolling = true,\n initialAutoRefetch = true,\n withQueryTrace,\n withDeltaPolling = false,\n legacyFilters,\n limit,\n enabled = true,\n}: UseTracesListSourceArgs) {\n const [tickNow, setTickNow] = useState(() => new Date());\n const [autoRefetch, setAutoRefetch] = useState(initialAutoRefetch);\n const delta = withDeltaPolling && withQueryTrace !== false;\n // A fixed window polls in place. Transient failures keep polling (a blip must not silence the\n // list), but a request the server refuses ends it: each retry would only clear the error, flash\n // the placeholder list, and fail again. With delta polling the list stays put and only retries\n // a transient failure.\n const refetchInterval = !autoRefetch\n ? false\n : delta\n ? (query: { state: { error: unknown } }) => deltaListRefetchInterval(query.state.error)\n : !rolling\n ? (query: { state: { error: unknown } }) => fixedWindowRefetchInterval(query.state.error)\n : false;\n const refetchOnWindowFocus = autoRefetch && !delta;\n\n // Delta polls need the same time range every poll, so `now` only moves when the filters or dates\n // change: the new list and the new cursor start from the current time. Sorting is not part of the\n // selection and keeps the cursor.\n const selection = JSON.stringify(buildQuery(SELECTION_CLOCK));\n // eslint-disable-next-line react-hooks/exhaustive-deps -- `selection` is the trigger, not an input.\n const anchoredNow = useMemo(() => new Date(), [selection]);\n const now = delta ? anchoredNow : tickNow;\n\n const built = buildQuery(now);\n // Delta polls must keep the exact time range, so a rolling window reaches into the future\n // instead of moving its end every tick.\n const anchored =\n delta && rolling && built.timeRange\n ? {\n ...built,\n timeRange: { ...built.timeRange, to: new Date(now.getTime() + TRACES_LIST_DELTA_HORIZON_MS).toISOString() },\n }\n : built;\n const query = orderBy ? { ...anchored, orderBy } : anchored;\n\n const result = useTraceQuery({\n queryOptions: {\n traceQuery: { refetchInterval, refetchOnWindowFocus },\n legacy: { refetchInterval, refetchOnWindowFocus },\n },\n query,\n withQueryTrace,\n legacyFilters,\n limit,\n enabled,\n });\n\n useTraceQueryLatest({\n query,\n limit,\n enabled: enabled && delta && autoRefetch,\n refetchInterval: TRACES_LIST_DELTA_POLL_INTERVAL_MS,\n queryOptions: { refetchOnWindowFocus: autoRefetch },\n });\n\n // Moving the query key refreshes the cursor chain once, without a second polling request.\n useEffect(() => {\n if (delta || !autoRefetch || !rolling || result.error) return;\n const timer = setInterval(() => setTickNow(new Date()), TRACES_LIST_REFETCH_INTERVAL_MS);\n return () => clearInterval(timer);\n }, [delta, autoRefetch, rolling, result.error]);\n\n // A rolling tick moves the query key; keep the previous rows when the data is the same so\n // consumers keyed on `rows` don't re-render every tick.\n const rows = useMemo(() => toTracesListViewTraces(result.data ?? []), [result.data]);\n\n return {\n ...result,\n rows,\n autoRefetch,\n setAutoRefetch,\n };\n}\n"],"names":["query"],"mappings":"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"}
|