@mastra/playground-ui 62.0.0 → 63.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/alert-dialog-R9z2SJLl.js +40 -0
- package/dist/alert-dialog-R9z2SJLl.js.map +1 -0
- package/dist/alert-dialog-j626w-Qb.cjs +42 -0
- package/dist/alert-dialog-j626w-Qb.cjs.map +1 -0
- package/dist/{ask-user-card-xR8YiiQa.js → ask-user-card-CwKfl6M2.js} +5 -6
- package/dist/{ask-user-card-xR8YiiQa.js.map → ask-user-card-CwKfl6M2.js.map} +1 -1
- package/dist/{ask-user-card-40a18Qea.cjs → ask-user-card-g8cqh8KI.cjs} +1 -2
- package/dist/{ask-user-card-40a18Qea.cjs.map → ask-user-card-g8cqh8KI.cjs.map} +1 -1
- package/dist/{checkbox-mmR3rD2j.js → checkbox-B3tvJLCl.js} +2 -2
- package/dist/{checkbox-mmR3rD2j.js.map → checkbox-B3tvJLCl.js.map} +1 -1
- package/dist/{code-block-BQZUoOfS.js → code-block-9sT-CaoF.js} +2 -2
- package/dist/{code-block-BQZUoOfS.js.map → code-block-9sT-CaoF.js.map} +1 -1
- package/dist/{code-editor-D69saH4C.js → code-editor-DgfDaPAD.js} +2 -2
- package/dist/{code-editor-D69saH4C.js.map → code-editor-DgfDaPAD.js.map} +1 -1
- package/dist/{combobox-DDUIREaG.js → combobox-DJu0ggNa.js} +2 -2
- package/dist/{combobox-DDUIREaG.js.map → combobox-DJu0ggNa.js.map} +1 -1
- package/dist/{command-Cx5QAS4E.cjs → command-DbZ6CSAy.cjs} +3 -3
- package/dist/command-DbZ6CSAy.cjs.map +1 -0
- package/dist/{command-B141Sxts.js → command-DtIlcv-t.js} +3 -3
- package/dist/command-DtIlcv-t.js.map +1 -0
- package/dist/components/AlertDialog.cjs.js +1 -1
- package/dist/components/AlertDialog.es.js +1 -1
- package/dist/components/Checkbox.es.js +1 -1
- package/dist/components/CodeBlock.es.js +1 -1
- package/dist/components/CodeEditor.es.js +1 -1
- package/dist/components/Combobox.es.js +1 -1
- package/dist/components/Command.cjs.js +1 -1
- package/dist/components/Command.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 +0 -1
- package/dist/components/Comment.cjs.js.map +1 -1
- package/dist/components/Comment.es.js +2 -3
- package/dist/components/Comment.es.js.map +1 -1
- package/dist/components/DataCodeSection.cjs.js +1 -1
- package/dist/components/DataCodeSection.es.js +1 -1
- package/dist/components/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 +0 -1
- package/dist/components/DateTimePicker.cjs.js.map +1 -1
- package/dist/components/DateTimePicker.es.js +3 -4
- package/dist/components/DateTimePicker.es.js.map +1 -1
- package/dist/components/DateTimeRangePicker.cjs.js +1 -1
- package/dist/components/DateTimeRangePicker.es.js +1 -1
- package/dist/components/Dialog.cjs.js +2 -2
- package/dist/components/Dialog.es.js +2 -2
- package/dist/components/Drawer.cjs.js +1 -1
- package/dist/components/Drawer.es.js +1 -1
- package/dist/components/EnvironmentVariablesEditor.cjs.js +1 -2
- package/dist/components/EnvironmentVariablesEditor.cjs.js.map +1 -1
- package/dist/components/EnvironmentVariablesEditor.es.js +3 -4
- package/dist/components/EnvironmentVariablesEditor.es.js.map +1 -1
- package/dist/components/Field.es.js +2 -2
- package/dist/components/FilterBar.cjs.js +2 -2
- package/dist/components/FilterBar.cjs.js.map +1 -1
- package/dist/components/FilterBar.es.js +3 -3
- package/dist/components/FilterBar.es.js.map +1 -1
- package/dist/components/FormFieldBlocks.es.js +2 -2
- package/dist/components/Input.es.js +1 -1
- package/dist/components/InputGroup.es.js +1 -1
- package/dist/components/InputNumber.es.js +1 -1
- package/dist/components/JSONSchemaForm.cjs.js +0 -1
- package/dist/components/JSONSchemaForm.cjs.js.map +1 -1
- package/dist/components/JSONSchemaForm.es.js +4 -5
- package/dist/components/JSONSchemaForm.es.js.map +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.es.js +1 -1
- package/dist/components/PropertyFilter.cjs.js +0 -1
- package/dist/components/PropertyFilter.cjs.js.map +1 -1
- package/dist/components/PropertyFilter.es.js +4 -5
- package/dist/components/PropertyFilter.es.js.map +1 -1
- package/dist/components/RadioGroup.es.js +1 -1
- package/dist/components/RuleBuilder.es.js +2 -2
- 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/SegmentedControl.es.js +1 -1
- package/dist/components/Select.es.js +1 -1
- package/dist/components/SideDialog.cjs.js +1 -1
- package/dist/components/SideDialog.es.js +1 -1
- package/dist/components/Sidebar.cjs.js +2 -2
- package/dist/components/Sidebar.es.js +3 -3
- package/dist/components/Switch.es.js +1 -1
- package/dist/components/ThemeToggle.es.js +1 -1
- package/dist/components/Workflow.cjs.js +2 -2
- package/dist/components/Workflow.es.js +3 -3
- package/dist/components/ai/activity.es.js +1 -1
- package/dist/components/ai/ask-user.cjs.js +1 -1
- package/dist/components/ai/ask-user.es.js +1 -1
- package/dist/components/ai/plan.es.js +1 -1
- package/dist/components/ai/tool-approval.es.js +1 -1
- package/dist/components/ai/tool-call.es.js +1 -1
- package/dist/{data-code-section-zG2S1MPX.js → data-code-section-BGLC-hxm.js} +3 -3
- package/dist/{data-code-section-zG2S1MPX.js.map → data-code-section-BGLC-hxm.js.map} +1 -1
- package/dist/{data-code-section-hVbIXLNC.cjs → data-code-section-BTRNa1SD.cjs} +3 -3
- package/dist/{data-code-section-hVbIXLNC.cjs.map → data-code-section-BTRNa1SD.cjs.map} +1 -1
- package/dist/{data-list-top-BJCC62oy.js → data-list-DDGpWucH.js} +333 -6
- package/dist/data-list-DDGpWucH.js.map +1 -0
- package/dist/{data-list-top-Ds-NWyPO.cjs → data-list-_yDPF5wR.cjs} +339 -13
- package/dist/data-list-_yDPF5wR.cjs.map +1 -0
- package/dist/{data-list-skeleton-BmsDYJrA.js → data-list-skeleton-CJFwZBlW.js} +2 -2
- package/dist/{data-list-skeleton-BmsDYJrA.js.map → data-list-skeleton-CJFwZBlW.js.map} +1 -1
- package/dist/{data-list-skeleton-CfVsXhx1.cjs → data-list-skeleton-maUWF7Ri.cjs} +6 -6
- package/dist/{data-list-skeleton-CfVsXhx1.cjs.map → data-list-skeleton-maUWF7Ri.cjs.map} +1 -1
- package/dist/{data-panel-BLqydW68.js → data-panel-DfVGx0Ea.js} +3 -3
- package/dist/{data-panel-BLqydW68.js.map → data-panel-DfVGx0Ea.js.map} +1 -1
- package/dist/{data-panel-BdeebdMA.cjs → data-panel-Dhg7s3fD.cjs} +4 -4
- package/dist/{data-panel-BdeebdMA.cjs.map → data-panel-Dhg7s3fD.cjs.map} +1 -1
- package/dist/{date-time-range-picker-BvRPfy1i.cjs → date-time-range-picker-BNaXCa7r.cjs} +1 -2
- package/dist/{date-time-range-picker-BvRPfy1i.cjs.map → date-time-range-picker-BNaXCa7r.cjs.map} +1 -1
- package/dist/{date-time-range-picker-CIfaXUuy.js → date-time-range-picker-C5x_33hB.js} +3 -4
- package/dist/{date-time-range-picker-CIfaXUuy.js.map → date-time-range-picker-C5x_33hB.js.map} +1 -1
- package/dist/{dialog-wL-fuFON.cjs → dialog-DQI9ChYf.cjs} +74 -37
- package/dist/dialog-DQI9ChYf.cjs.map +1 -0
- package/dist/{dialog-BYsQZGIj.js → dialog-DlZmNahd.js} +75 -35
- package/dist/dialog-DlZmNahd.js.map +1 -0
- package/dist/{dialog-action-B-pF99m0.js → dialog-action-c4nfPomF.js} +2 -2
- package/dist/{dialog-action-B-pF99m0.js.map → dialog-action-c4nfPomF.js.map} +1 -1
- package/dist/{dialog-action-CcMhvjM-.cjs → dialog-action-gdo9CwUv.cjs} +2 -2
- package/dist/{dialog-action-CcMhvjM-.cjs.map → dialog-action-gdo9CwUv.cjs.map} +1 -1
- package/dist/domains/chat/attachments/attachment-preview-dialog.cjs.js +1 -1
- package/dist/domains/chat/attachments/attachment-preview-dialog.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 +2 -2
- package/dist/domains/chat/messages/dataset-save-action.cjs.js +2 -3
- package/dist/domains/chat/messages/dataset-save-action.cjs.js.map +1 -1
- package/dist/domains/chat/messages/dataset-save-action.es.js +5 -6
- package/dist/domains/chat/messages/dataset-save-action.es.js.map +1 -1
- package/dist/domains/chat/messages/message-row.cjs.js +0 -1
- package/dist/domains/chat/messages/message-row.cjs.js.map +1 -1
- package/dist/domains/chat/messages/message-row.es.js +1 -2
- package/dist/domains/chat/messages/message-row.es.js.map +1 -1
- package/dist/domains/chat/messages/renderers/message-text.es.js +1 -1
- package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
- package/dist/domains/chat/messages/skill-message.es.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
- 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 +2 -2
- package/dist/domains/chat/tools/badges/code-mode-badge.es.js +2 -2
- package/dist/domains/chat/tools/badges/file-tree-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-details.es.js +1 -1
- package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
- package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/tool-badge.es.js +2 -2
- package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +2 -2
- package/dist/domains/chat/tools/badges/workflow-badge.es.js +3 -3
- package/dist/domains/chat/tools/submit-plan-tool.es.js +1 -1
- package/dist/domains/chat/tools/tool-card.es.js +1 -1
- package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js +1 -2
- package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js.map +1 -1
- package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js +4 -5
- package/dist/domains/datasets/components/save-as-dataset-item-dialog.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/components/logs-toolbar.es.js +1 -1
- package/dist/domains/memory/components/observation-detail-view.cjs.js +0 -1
- package/dist/domains/memory/components/observation-detail-view.cjs.js.map +1 -1
- package/dist/domains/memory/components/observation-detail-view.es.js +2 -3
- package/dist/domains/memory/components/observation-detail-view.es.js.map +1 -1
- package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
- package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
- package/dist/domains/metrics/drilldown.cjs.js +1 -1
- package/dist/domains/metrics/drilldown.es.js +1 -1
- package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js +1 -2
- package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js.map +1 -1
- package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js +4 -5
- package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js.map +1 -1
- package/dist/domains/request-context/components/request-context-label.cjs.js +0 -1
- package/dist/domains/request-context/components/request-context-label.cjs.js.map +1 -1
- package/dist/domains/request-context/components/request-context-label.es.js +1 -2
- package/dist/domains/request-context/components/request-context-label.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 +2 -2
- package/dist/domains/scores/components/span-scoring.es.js +3 -3
- 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/feedback-thread.cjs.js +1 -1
- package/dist/domains/traces/components/feedback-thread.es.js +2 -2
- package/dist/domains/traces/components/span-data-panel-view.cjs.js +1 -2
- package/dist/domains/traces/components/span-data-panel-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-data-panel-view.es.js +1 -2
- package/dist/domains/traces/components/span-data-panel-view.es.js.map +1 -1
- package/dist/domains/traces/components/span-details-view.cjs.js +0 -1
- package/dist/domains/traces/components/span-details-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-details-view.es.js +0 -1
- package/dist/domains/traces/components/span-details-view.es.js.map +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.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-output-renderers.es.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.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-processor.es.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.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 +0 -2
- 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 +0 -2
- 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 -3
- package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-columns-menu.es.js +4 -5
- package/dist/domains/traces/components/trace-columns-menu.es.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js +2 -2
- package/dist/domains/traces/components/trace-data-panel-view.es.js +2 -2
- package/dist/domains/traces/components/trace-data-panel.cjs.js +3 -4
- package/dist/domains/traces/components/trace-data-panel.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel.es.js +3 -4
- package/dist/domains/traces/components/trace-data-panel.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-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-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-trace-filter-persistence.cjs.js +1 -1
- package/dist/domains/traces/hooks/use-trace-filter-persistence.es.js +1 -1
- package/dist/domains/traces/hooks/use-trace-url-state.cjs.js +1 -1
- package/dist/domains/traces/hooks/use-trace-url-state.es.js +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 +1 -1
- package/dist/domains/traces/trace-query-filters.es.js +1 -1
- package/dist/domains/traces.cjs.js +1 -1
- package/dist/domains/traces.es.js +1 -1
- package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
- 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/runs/workflow-run-list.cjs.js +1 -1
- package/dist/domains/workflows/runs/workflow-run-list.es.js +1 -1
- 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.es.js +1 -1
- package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js +0 -1
- package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/input/workflow-json-input.es.js +2 -3
- package/dist/domains/workflows/workflow/input/workflow-json-input.es.js.map +1 -1
- package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js +0 -1
- package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js +2 -3
- package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js.map +1 -1
- package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.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 +0 -1
- package/dist/domains/workflows/workflow/workflow-debug-mode-switch.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-debug-mode-switch.es.js +2 -3
- package/dist/domains/workflows/workflow/workflow-debug-mode-switch.es.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-node.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-input-data.cjs.js +0 -2
- package/dist/domains/workflows/workflow/workflow-input-data.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-input-data.es.js +0 -2
- package/dist/domains/workflows/workflow/workflow-input-data.es.js.map +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 +2 -2
- package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-run-data.es.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 +2 -2
- package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +0 -1
- package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +2 -3
- package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js.map +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 +3 -4
- package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js.map +1 -1
- package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +6 -7
- package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js.map +1 -1
- package/dist/domains/workspace/components/workspace-create-directory.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-create-directory.es.js +2 -2
- package/dist/domains/workspace/components/workspace-markdown-preview.es.js +2 -2
- package/dist/domains/workspace/components/workspace-search.es.js +1 -1
- package/dist/domains/workspace/components/workspace-tree.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-tree.es.js +1 -1
- package/dist/{drawer-B-t4ydEh.js → drawer-CZlqOjd2.js} +17 -7
- package/dist/{drawer-B-t4ydEh.js.map → drawer-CZlqOjd2.js.map} +1 -1
- package/dist/{drawer-DE2b3eld.cjs → drawer-CeUYCG-S.cjs} +16 -6
- package/dist/{drawer-DE2b3eld.cjs.map → drawer-CeUYCG-S.cjs.map} +1 -1
- 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 +4 -2
- 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/noise-detail-panel.cjs.js +1 -1
- package/dist/ee/signals/noise-detail-panel.es.js +1 -1
- package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +2 -3
- package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js.map +1 -1
- package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +4 -5
- package/dist/ee/signals/settings/signal-definition-form-dialog.es.js.map +1 -1
- package/dist/ee/signals/settings/trace-signal-settings.es.js +1 -1
- package/dist/ee/signals/theme-detail-panel.cjs.js +1 -1
- package/dist/ee/signals/theme-detail-panel.es.js +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-B89BEZg4.js → field-Bc8Ewf_M.js} +2 -2
- package/dist/{field-B89BEZg4.js.map → field-Bc8Ewf_M.js.map} +1 -1
- package/dist/{field-control-aria-DB6y41tQ.js → field-control-aria-CCJ4-mUe.js} +2 -2
- package/dist/{field-control-aria-DB6y41tQ.js.map → field-control-aria-CCJ4-mUe.js.map} +1 -1
- package/dist/{filter-bar-chip-uPmGVzPR.cjs → filter-bar-chip-C_371aon.cjs} +35 -6
- package/dist/filter-bar-chip-C_371aon.cjs.map +1 -0
- package/dist/{filter-bar-chip-Bu27EjSO.js → filter-bar-chip-Dc6phYqZ.js} +35 -6
- package/dist/filter-bar-chip-Dc6phYqZ.js.map +1 -0
- package/dist/hooks/use-is-mobile.cjs.js +14 -10
- package/dist/hooks/use-is-mobile.cjs.js.map +1 -1
- package/dist/hooks/use-is-mobile.es.js +15 -11
- package/dist/hooks/use-is-mobile.es.js.map +1 -1
- package/dist/{input-DQFUjtnh.js → input-Ds171RJ5.js} +2 -2
- package/dist/{input-DQFUjtnh.js.map → input-Ds171RJ5.js.map} +1 -1
- package/dist/{input-group-BWsGYnES.js → input-group-Cxv64rPB.js} +2 -2
- package/dist/{input-group-BWsGYnES.js.map → input-group-Cxv64rPB.js.map} +1 -1
- package/dist/layout/tabbed-container.cjs.js +2 -2
- package/dist/layout/tabbed-container.es.js +3 -3
- package/dist/lib/form/components/boolean-field.cjs.js +0 -1
- package/dist/lib/form/components/boolean-field.cjs.js.map +1 -1
- package/dist/lib/form/components/boolean-field.es.js +2 -3
- package/dist/lib/form/components/boolean-field.es.js.map +1 -1
- package/dist/lib/form/components/date-field.es.js +1 -1
- package/dist/lib/form/components/field-wrapper.cjs.js +0 -1
- package/dist/lib/form/components/field-wrapper.cjs.js.map +1 -1
- package/dist/lib/form/components/field-wrapper.es.js +1 -2
- package/dist/lib/form/components/field-wrapper.es.js.map +1 -1
- package/dist/lib/form/components/number-field.es.js +1 -1
- package/dist/lib/form/components/record-field.es.js +1 -1
- package/dist/lib/form/components/select-field.es.js +1 -1
- package/dist/{list-search-xHadeMHl.cjs → list-search-C3yXcTRO.cjs} +2 -2
- package/dist/{list-search-xHadeMHl.cjs.map → list-search-C3yXcTRO.cjs.map} +1 -1
- package/dist/{list-search-BNnMwbpv.js → list-search-CmPRFDsn.js} +2 -2
- package/dist/{list-search-BNnMwbpv.js.map → list-search-CmPRFDsn.js.map} +1 -1
- package/dist/{logs-data-list-DfuVMd6f.cjs → logs-data-list-Bf_vIsFb.cjs} +21 -22
- package/dist/{logs-data-list-DfuVMd6f.cjs.map → logs-data-list-Bf_vIsFb.cjs.map} +1 -1
- package/dist/{logs-data-list-C262Be3o.js → logs-data-list-Cudh6b-c.js} +2 -3
- package/dist/{logs-data-list-C262Be3o.js.map → logs-data-list-Cudh6b-c.js.map} +1 -1
- package/dist/{markdown-renderer-D5Wjk1Cs.js → markdown-renderer-Cly6VMDr.js} +2 -2
- package/dist/{markdown-renderer-D5Wjk1Cs.js.map → markdown-renderer-Cly6VMDr.js.map} +1 -1
- package/dist/new/settings.cjs.js +1 -1
- package/dist/new/settings.es.js +1 -1
- package/dist/{plan-Cl3-JgbI.js → plan-DIbhFPRL.js} +2 -2
- package/dist/{plan-Cl3-JgbI.js.map → plan-DIbhFPRL.js.map} +1 -1
- package/dist/primitives/textarea-control.es.js +1 -1
- package/dist/{property-filter-applied-CZLzY0OH.js → property-filter-applied-DXH81ffT.js} +2 -2
- package/dist/{property-filter-applied-CZLzY0OH.js.map → property-filter-applied-DXH81ffT.js.map} +1 -1
- package/dist/{radio-group-Bk52hNNb.js → radio-group-C2zsCipq.js} +2 -2
- package/dist/{radio-group-Bk52hNNb.js.map → radio-group-C2zsCipq.js.map} +1 -1
- package/dist/{reasoning-activity-CIuVSAGA.js → reasoning-activity-B1r4JQxm.js} +2 -2
- package/dist/{reasoning-activity-CIuVSAGA.js.map → reasoning-activity-B1r4JQxm.js.map} +1 -1
- package/dist/resize/panel-drawer.cjs.js +1 -1
- package/dist/resize/panel-drawer.es.js +1 -1
- package/dist/{search-input-fqSrRTLU.js → search-input-D23h16CB.js} +3 -4
- package/dist/{search-input-fqSrRTLU.js.map → search-input-D23h16CB.js.map} +1 -1
- package/dist/{search-input-UtTJMjJu.cjs → search-input-DbEE2zEz.cjs} +1 -2
- package/dist/{search-input-UtTJMjJu.cjs.map → search-input-DbEE2zEz.cjs.map} +1 -1
- package/dist/{section-DhZbtWhu.cjs → section-CdaSS9M7.cjs} +2 -2
- package/dist/{section-DhZbtWhu.cjs.map → section-CdaSS9M7.cjs.map} +1 -1
- package/dist/{section-Dq6aFxlH.js → section-DcjTdrqz.js} +2 -2
- package/dist/{section-Dq6aFxlH.js.map → section-DcjTdrqz.js.map} +1 -1
- package/dist/{segmented-control-CUnvFStD.js → segmented-control-BfY7F0NZ.js} +2 -2
- package/dist/{segmented-control-CUnvFStD.js.map → segmented-control-BfY7F0NZ.js.map} +1 -1
- package/dist/{select-N2lgBRsg.js → select-BGAiIHnS.js} +2 -2
- package/dist/{select-N2lgBRsg.js.map → select-BGAiIHnS.js.map} +1 -1
- package/dist/{settings-row-CwZ3JffC.cjs → settings-row-rOI4yGvi.cjs} +1 -2
- package/dist/{settings-row-CwZ3JffC.cjs.map → settings-row-rOI4yGvi.cjs.map} +1 -1
- package/dist/{settings-row-gpwIVAMN.js → settings-row-ylIw4rfC.js} +2 -3
- package/dist/{settings-row-gpwIVAMN.js.map → settings-row-ylIw4rfC.js.map} +1 -1
- package/dist/{side-dialog-BIyr498B.js → side-dialog-CB_wrLtE.js} +3 -3
- package/dist/{side-dialog-BIyr498B.js.map → side-dialog-CB_wrLtE.js.map} +1 -1
- package/dist/{side-dialog-BT2xywA8.cjs → side-dialog-OPXvmRDA.cjs} +3 -3
- package/dist/{side-dialog-BT2xywA8.cjs.map → side-dialog-OPXvmRDA.cjs.map} +1 -1
- package/dist/{span-payload-primitives-WqYTBiGx.js → span-payload-primitives-Cixom2Py.js} +2 -2
- package/dist/{span-payload-primitives-WqYTBiGx.js.map → span-payload-primitives-Cixom2Py.js.map} +1 -1
- package/dist/src/ds/components/AlertDialog/alert-dialog.d.ts +8 -11
- package/dist/src/ds/components/Dialog/dialog-shell.d.ts +1 -0
- package/dist/src/ds/components/Dialog/dialog.d.ts +9 -3
- package/dist/src/ds/components/FilterBar/filter-bar-tree.d.ts +9 -1
- package/dist/src/ds/components/FilterBar/types.d.ts +6 -0
- package/dist/style.css +17 -4
- package/dist/{switch-DiSlsWUt.js → switch-BBeMfeQ2.js} +2 -2
- package/dist/{switch-DiSlsWUt.js.map → switch-BBeMfeQ2.js.map} +1 -1
- package/dist/{time-picker-J7GaNaEd.js → time-picker-Bo6GJcmz.js} +2 -2
- package/dist/{time-picker-J7GaNaEd.js.map → time-picker-Bo6GJcmz.js.map} +1 -1
- package/dist/{tool-approval-nsbG8-qI.js → tool-approval-BQ6sDvyS.js} +2 -2
- package/dist/{tool-approval-nsbG8-qI.js.map → tool-approval-BQ6sDvyS.js.map} +1 -1
- package/dist/{tool-call-arguments-RKyYP3xh.js → tool-call-arguments-B86JP3Dy.js} +2 -2
- package/dist/{tool-call-arguments-RKyYP3xh.js.map → tool-call-arguments-B86JP3Dy.js.map} +1 -1
- package/dist/{tool-card-BtPh44u6.js → tool-card-C8IrtMuQ.js} +2 -2
- package/dist/{tool-card-BtPh44u6.js.map → tool-card-C8IrtMuQ.js.map} +1 -1
- package/dist/{trace-filters-B9myZP-l.cjs → trace-filters-Bh4dVNPX.cjs} +16 -20
- package/dist/trace-filters-Bh4dVNPX.cjs.map +1 -0
- package/dist/{trace-filters-Cvra0Aum.js → trace-filters-C71gmCq4.js} +16 -20
- package/dist/trace-filters-C71gmCq4.js.map +1 -0
- package/dist/{traces-data-list-Cf_PpmSN.cjs → traces-data-list-DaFA1Ccg.cjs} +17 -19
- package/dist/{traces-data-list-Cf_PpmSN.cjs.map → traces-data-list-DaFA1Ccg.cjs.map} +1 -1
- package/dist/{traces-data-list-_mFOMw0U.js → traces-data-list-L_r2GAtr.js} +2 -4
- package/dist/{traces-data-list-_mFOMw0U.js.map → traces-data-list-L_r2GAtr.js.map} +1 -1
- package/dist/types-CIPrYAzY.js.map +1 -1
- package/dist/types-Ns4ZNp-g.cjs.map +1 -1
- package/dist/{use-workflow-graph-runtime-CAyNWN_Z.js → use-workflow-graph-runtime-DS7eWso7.js} +2 -2
- package/dist/{use-workflow-graph-runtime-CAyNWN_Z.js.map → use-workflow-graph-runtime-DS7eWso7.js.map} +1 -1
- package/dist/{workflow-code-dialog-content-CNDoMFAV.js → workflow-code-dialog-content-BUCZZoKf.js} +2 -2
- package/dist/{workflow-code-dialog-content-CNDoMFAV.js.map → workflow-code-dialog-content-BUCZZoKf.js.map} +1 -1
- package/dist/{workflow-data-edge-view-CMdPlcQj.cjs → workflow-data-edge-view-BHvpuvmp.cjs} +2 -2
- package/dist/{workflow-data-edge-view-CMdPlcQj.cjs.map → workflow-data-edge-view-BHvpuvmp.cjs.map} +1 -1
- package/dist/{workflow-data-edge-view-DeX0gykV.js → workflow-data-edge-view-BIiMA9zg.js} +2 -2
- package/dist/{workflow-data-edge-view-DeX0gykV.js.map → workflow-data-edge-view-BIiMA9zg.js.map} +1 -1
- package/dist/{workflow-edge-data-button-CSeMH2Ky.cjs → workflow-edge-data-button-Cz2rcoDr.cjs} +2 -2
- package/dist/{workflow-edge-data-button-CSeMH2Ky.cjs.map → workflow-edge-data-button-Cz2rcoDr.cjs.map} +1 -1
- package/dist/{workflow-edge-data-button-DfyJCI6R.js → workflow-edge-data-button-D5oK4NS5.js} +3 -3
- package/dist/{workflow-edge-data-button-DfyJCI6R.js.map → workflow-edge-data-button-D5oK4NS5.js.map} +1 -1
- package/package.json +9 -9
- package/dist/alert-dialog-BJlS-v3z.cjs +0 -55
- package/dist/alert-dialog-BJlS-v3z.cjs.map +0 -1
- package/dist/alert-dialog-BvzVYar8.js +0 -53
- package/dist/alert-dialog-BvzVYar8.js.map +0 -1
- package/dist/command-B141Sxts.js.map +0 -1
- package/dist/command-Cx5QAS4E.cjs.map +0 -1
- package/dist/data-list-DkVOwk8l.cjs +0 -142
- package/dist/data-list-DkVOwk8l.cjs.map +0 -1
- package/dist/data-list-Dv2lP-dU.js +0 -138
- package/dist/data-list-Dv2lP-dU.js.map +0 -1
- package/dist/data-list-spacer-DEMquKp9.js +0 -209
- package/dist/data-list-spacer-DEMquKp9.js.map +0 -1
- package/dist/data-list-spacer-pXP8xDlg.cjs +0 -218
- package/dist/data-list-spacer-pXP8xDlg.cjs.map +0 -1
- package/dist/data-list-top-BJCC62oy.js.map +0 -1
- package/dist/data-list-top-Ds-NWyPO.cjs.map +0 -1
- package/dist/dialog-BYsQZGIj.js.map +0 -1
- package/dist/dialog-wL-fuFON.cjs.map +0 -1
- package/dist/filter-bar-chip-Bu27EjSO.js.map +0 -1
- package/dist/filter-bar-chip-uPmGVzPR.cjs.map +0 -1
- package/dist/trace-filters-B9myZP-l.cjs.map +0 -1
- package/dist/trace-filters-Cvra0Aum.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-scores-tab.es.js","sources":["../../../../src/domains/scores/components/trace-scores-tab.tsx"],"sourcesContent":["import type { ClientScoreRowData, ListScoresResponse } from '@mastra/client-js';\nimport { useTraceSpanScores } from '@mastra/react/hooks/scores';\nimport { useState } from 'react';\nimport { DataList } from '@/ds/components/DataList';\nimport { EmptyState } from '@/ds/components/EmptyState';\nimport { MetricsKpiCard } from '@/ds/components/MetricsKpiCard';\nimport { Spinner } from '@/ds/components/Spinner';\nimport { getShortId } from '@/ds/components/Text';\nimport { Txt } from '@/ds/components/Txt';\nimport { controlStateColorTransition } from '@/ds/primitives/transitions';\nimport { quietTextHover } from '@/ds/primitives/typography';\nimport { cn } from '@/utils/cn';\nimport { formatDate } from '@/utils/date-format';\n\nconst REASON_PREVIEW_LENGTH = 100;\n\nexport type TraceScoresTabProps = {\n traceId: string;\n spanId: string;\n onScoreSelect: (scoreId: string) => void;\n};\n\n/**\n * Scores for the trace's anchor span, one card per scoring. Owns its own pagination:\n * mount it with a `key` on the trace/anchor pair so a page index never leaks across traces.\n */\nexport function TraceScoresTab({ traceId, spanId, onScoreSelect }: TraceScoresTabProps) {\n const [page, setPage] = useState(0);\n const { data: scoresData, isLoading } = useTraceSpanScores({\n traceId,\n spanId,\n page,\n queryOptions: { enabled: !!traceId && !!spanId },\n });\n\n if (isLoading) {\n return (\n <div className=\"flex justify-center py-6\">\n <Spinner size=\"md\" variant=\"pulse\" className=\"text-placeholder\" />\n </div>\n );\n }\n\n const scores = scoresData?.scores ?? [];\n\n if (scores.length === 0) {\n return <EmptyState titleSlot=\"No scores yet\" descriptionSlot=\"Score this trace to see results here.\" />;\n }\n\n return (\n <div className=\"grid content-start gap-3\">\n {scores.map(score => (\n <TraceScoreCard key={score.id} score={score} onSelect={() => onScoreSelect(score.id)} />\n ))}\n <TraceScoresPagination pagination={scoresData?.pagination} onPageChange={setPage} />\n </div>\n );\n}\n\nfunction TraceScoreCard({ score, onSelect }: { score: ClientScoreRowData; onSelect: () => void }) {\n const createdAt = new Date(score.createdAt);\n const scorerName = String(score.scorer?.name || score.scorer?.id || 'Scorer');\n\n return (\n <MetricsKpiCard className=\"relative min-w-0 cursor-pointer\">\n <button\n type=\"button\"\n onClick={onSelect}\n aria-label={`Score ${getShortId(score.id)}`}\n className=\"grid cursor-pointer gap-1 text-left after:absolute after:inset-0 after:content-['']\"\n >\n <MetricsKpiCard.Label>{scorerName}</MetricsKpiCard.Label>\n <MetricsKpiCard.Value>{String(score.score)}</MetricsKpiCard.Value>\n <Txt as=\"span\" variant=\"meta\" tone=\"muted\" className=\"tabular-nums\">\n <Txt as=\"span\" variant=\"meta\" font=\"mono\">\n {getShortId(score.id)}\n </Txt>{' '}\n · {formatDate(createdAt, 'date-time-seconds')}\n </Txt>\n </button>\n {score.reason && <TraceScoreReason reason={score.reason} />}\n </MetricsKpiCard>\n );\n}\n\nfunction TraceScoreReason({ reason }: { reason: string }) {\n const [expanded, setExpanded] = useState(false);\n const isLong = reason.length > REASON_PREVIEW_LENGTH;\n const text = isLong && !expanded ? `${reason.slice(0, REASON_PREVIEW_LENGTH).trimEnd()}…` : reason;\n\n return (\n <Txt variant=\"caption\" tone=\"faint\">\n {text}\n {isLong && (\n <>\n {' '}\n <button\n type=\"button\"\n onClick={() => setExpanded(value => !value)}\n className={cn(quietTextHover, controlStateColorTransition, 'relative z-10 underline underline-offset-2')}\n >\n <Txt as=\"span\" variant=\"caption\">\n {expanded ? 'Read less' : 'Read more'}\n </Txt>\n </button>\n </>\n )}\n </Txt>\n );\n}\n\nfunction TraceScoresPagination({\n pagination,\n onPageChange,\n}: {\n pagination?: ListScoresResponse['pagination'];\n onPageChange: (page: number) => void;\n}) {\n const currentPage = pagination?.page ?? 0;\n if (currentPage === 0 && !pagination?.hasMore) return null;\n\n return (\n <DataList.Pagination\n currentPage={currentPage}\n hasMore={pagination?.hasMore}\n onNextPage={() => onPageChange(currentPage + 1)}\n onPrevPage={() => onPageChange(currentPage - 1)}\n />\n );\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"trace-scores-tab.es.js","sources":["../../../../src/domains/scores/components/trace-scores-tab.tsx"],"sourcesContent":["import type { ClientScoreRowData, ListScoresResponse } from '@mastra/client-js';\nimport { useTraceSpanScores } from '@mastra/react/hooks/scores';\nimport { useState } from 'react';\nimport { DataList } from '@/ds/components/DataList';\nimport { EmptyState } from '@/ds/components/EmptyState';\nimport { MetricsKpiCard } from '@/ds/components/MetricsKpiCard';\nimport { Spinner } from '@/ds/components/Spinner';\nimport { getShortId } from '@/ds/components/Text';\nimport { Txt } from '@/ds/components/Txt';\nimport { controlStateColorTransition } from '@/ds/primitives/transitions';\nimport { quietTextHover } from '@/ds/primitives/typography';\nimport { cn } from '@/utils/cn';\nimport { formatDate } from '@/utils/date-format';\n\nconst REASON_PREVIEW_LENGTH = 100;\n\nexport type TraceScoresTabProps = {\n traceId: string;\n spanId: string;\n onScoreSelect: (scoreId: string) => void;\n};\n\n/**\n * Scores for the trace's anchor span, one card per scoring. Owns its own pagination:\n * mount it with a `key` on the trace/anchor pair so a page index never leaks across traces.\n */\nexport function TraceScoresTab({ traceId, spanId, onScoreSelect }: TraceScoresTabProps) {\n const [page, setPage] = useState(0);\n const { data: scoresData, isLoading } = useTraceSpanScores({\n traceId,\n spanId,\n page,\n queryOptions: { enabled: !!traceId && !!spanId },\n });\n\n if (isLoading) {\n return (\n <div className=\"flex justify-center py-6\">\n <Spinner size=\"md\" variant=\"pulse\" className=\"text-placeholder\" />\n </div>\n );\n }\n\n const scores = scoresData?.scores ?? [];\n\n if (scores.length === 0) {\n return <EmptyState titleSlot=\"No scores yet\" descriptionSlot=\"Score this trace to see results here.\" />;\n }\n\n return (\n <div className=\"grid content-start gap-3\">\n {scores.map(score => (\n <TraceScoreCard key={score.id} score={score} onSelect={() => onScoreSelect(score.id)} />\n ))}\n <TraceScoresPagination pagination={scoresData?.pagination} onPageChange={setPage} />\n </div>\n );\n}\n\nfunction TraceScoreCard({ score, onSelect }: { score: ClientScoreRowData; onSelect: () => void }) {\n const createdAt = new Date(score.createdAt);\n const scorerName = String(score.scorer?.name || score.scorer?.id || 'Scorer');\n\n return (\n <MetricsKpiCard className=\"relative min-w-0 cursor-pointer\">\n <button\n type=\"button\"\n onClick={onSelect}\n aria-label={`Score ${getShortId(score.id)}`}\n className=\"grid cursor-pointer gap-1 text-left after:absolute after:inset-0 after:content-['']\"\n >\n <MetricsKpiCard.Label>{scorerName}</MetricsKpiCard.Label>\n <MetricsKpiCard.Value>{String(score.score)}</MetricsKpiCard.Value>\n <Txt as=\"span\" variant=\"meta\" tone=\"muted\" className=\"tabular-nums\">\n <Txt as=\"span\" variant=\"meta\" font=\"mono\">\n {getShortId(score.id)}\n </Txt>{' '}\n · {formatDate(createdAt, 'date-time-seconds')}\n </Txt>\n </button>\n {score.reason && <TraceScoreReason reason={score.reason} />}\n </MetricsKpiCard>\n );\n}\n\nfunction TraceScoreReason({ reason }: { reason: string }) {\n const [expanded, setExpanded] = useState(false);\n const isLong = reason.length > REASON_PREVIEW_LENGTH;\n const text = isLong && !expanded ? `${reason.slice(0, REASON_PREVIEW_LENGTH).trimEnd()}…` : reason;\n\n return (\n <Txt variant=\"caption\" tone=\"faint\">\n {text}\n {isLong && (\n <>\n {' '}\n <button\n type=\"button\"\n onClick={() => setExpanded(value => !value)}\n className={cn(quietTextHover, controlStateColorTransition, 'relative z-10 underline underline-offset-2')}\n >\n <Txt as=\"span\" variant=\"caption\">\n {expanded ? 'Read less' : 'Read more'}\n </Txt>\n </button>\n </>\n )}\n </Txt>\n );\n}\n\nfunction TraceScoresPagination({\n pagination,\n onPageChange,\n}: {\n pagination?: ListScoresResponse['pagination'];\n onPageChange: (page: number) => void;\n}) {\n const currentPage = pagination?.page ?? 0;\n if (currentPage === 0 && !pagination?.hasMore) return null;\n\n return (\n <DataList.Pagination\n currentPage={currentPage}\n hasMore={pagination?.hasMore}\n onNextPage={() => onPageChange(currentPage + 1)}\n onPrevPage={() => onPageChange(currentPage - 1)}\n />\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ const lucideReact = require('lucide-react');
|
|
|
7
7
|
const React = require('react');
|
|
8
8
|
const domains_review_components_reviewStatusBadge = require('../../review/components/review-status-badge.cjs.js');
|
|
9
9
|
const domains_traces_utils_feedbackAuthor = require('../utils/feedback-author.cjs.js');
|
|
10
|
-
const alertDialog = require('../../../alert-dialog-
|
|
10
|
+
const alertDialog = require('../../../alert-dialog-j626w-Qb.cjs');
|
|
11
11
|
const Avatar = require('../../../Avatar-BPHG0wrq.cjs');
|
|
12
12
|
const Button = require('../../../Button-BfZzgZrA.cjs');
|
|
13
13
|
const comment = require('../../../comment-Bd78bCbX.cjs');
|
|
@@ -3,12 +3,12 @@ import { ArrowUp, ChevronLeft, ChevronRight, Trash2, EllipsisIcon, ClipboardChec
|
|
|
3
3
|
import { useState } from 'react';
|
|
4
4
|
import { ReviewStatusBadge } from '../../review/components/review-status-badge.es.js';
|
|
5
5
|
import { feedbackAuthorLabel } from '../utils/feedback-author.es.js';
|
|
6
|
-
import { A as AlertDialog } from '../../../alert-dialog-
|
|
6
|
+
import { A as AlertDialog } from '../../../alert-dialog-R9z2SJLl.js';
|
|
7
7
|
import { A as Avatar } from '../../../Avatar-DAnyIHjm.js';
|
|
8
8
|
import { B as Button } from '../../../Button-C8QDEN9j.js';
|
|
9
9
|
import { C as Comment, a as CommentItemTimestamp, b as CommentItemActions, c as CommentItemBody, d as CommentItem, e as CommentItemAvatar, f as CommentItemContent, g as CommentItemHeader, h as CommentList, i as CommentItemAuthor } from '../../../comment-Cve6rKxc.js';
|
|
10
10
|
import { D as DropdownMenu } from '../../../dropdown-menu-D8GR_NhL.js';
|
|
11
|
-
import { I as InputGroup, c as InputGroupInput, a as InputGroupAddon, b as InputGroupButton } from '../../../input-group-
|
|
11
|
+
import { I as InputGroup, c as InputGroupInput, a as InputGroupAddon, b as InputGroupButton } from '../../../input-group-Cxv64rPB.js';
|
|
12
12
|
import { T as Txt } from '../../../Txt-BuzYj7Vy.js';
|
|
13
13
|
import { Icon } from '../../../icons/Icon.es.js';
|
|
14
14
|
import { formatDate } from '../../../utils/date-format.es.js';
|
|
@@ -15,7 +15,6 @@ const utils_cn = require('../../../cn-TqD01zH-.cjs');
|
|
|
15
15
|
require('react');
|
|
16
16
|
require('../../chat/attachments/composer-attachment-context.cjs.js');
|
|
17
17
|
require('@base-ui/react/use-render');
|
|
18
|
-
require('../../../Button-BfZzgZrA.cjs');
|
|
19
18
|
require('../../chat/context/chat-context.cjs.js');
|
|
20
19
|
require('./span-payload/span-payload-processor.cjs.js');
|
|
21
20
|
const domains_traces_components_spanPayload_spanProcessorAttributes = require('./span-payload/span-processor-attributes.cjs.js');
|
|
@@ -24,7 +23,7 @@ const domains_traces_components_spanSummaryDescription = require('./span-summary
|
|
|
24
23
|
const domains_traces_components_spanTokenUsage = require('./span-token-usage.cjs.js');
|
|
25
24
|
const domains_traces_components_traceIdButton = require('./trace-id-button.cjs.js');
|
|
26
25
|
const dataKeysAndValues = require('../../../data-keys-and-values-C1I--hWn.cjs');
|
|
27
|
-
const dataPanel = require('../../../data-panel-
|
|
26
|
+
const dataPanel = require('../../../data-panel-Dhg7s3fD.cjs');
|
|
28
27
|
const Notice = require('../../../Notice-c8dMiAtZ.cjs');
|
|
29
28
|
const tabsRoot = require('../../../tabs-root-Phsi-P1b.cjs');
|
|
30
29
|
const tabsList = require('../../../tabs-list-xikY_dug.cjs');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"span-data-panel-view.cjs.js","sources":["../../../../src/domains/traces/components/span-data-panel-view.tsx"],"sourcesContent":["import { describeProcessorPipeline, describeSpanInput, describeSpanOutput } from '@mastra/core/observability';\nimport { BracesIcon, FileInputIcon, FileOutputIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport type { SpanRecord } from '../types';\nimport { getTokenLimitMessage, isTokenLimitExceeded } from '../utils/span-utils';\nimport {\n SpanErrorRenderer,\n SpanInputRenderer,\n SpanOutputRenderer,\n SpanPayloadSection,\n SpanProcessorAttributes,\n} from './span-payload';\nimport { asCoreSpan } from './span-payload/span-payload-registry';\nimport { SpanSummaryDescription } from './span-summary-description';\nimport { SpanTokenUsage } from './span-token-usage';\nimport type { TokenUsage } from './span-token-usage';\nimport { TraceIdButton } from './trace-id-button';\nimport { DataKeysAndValues } from '@/ds/components/DataKeysAndValues';\nimport { DataPanel } from '@/ds/components/DataPanel';\nimport { Notice } from '@/ds/components/Notice';\nimport { Tab, TabContent, TabList, Tabs } from '@/ds/components/Tabs';\nimport { cn } from '@/lib/utils';\n\n// Mirrors `DataPanel.Content` padding without requiring the Drawer root (this view also renders standalone).\nconst BODY_CLASS = 'min-h-0 flex-1 overflow-y-auto px-2 py-3';\n\nexport interface SpanDataPanelViewProps {\n traceId: string;\n spanId: string;\n /** Full span record. Caller fetches via useSpanDetail. */\n span: SpanRecord | undefined;\n isLoading?: boolean;\n onPrevious?: () => void;\n onNext?: () => void;\n /** When provided, an × button in the header closes the span column. */\n onClose?: () => void;\n activeTab?: string;\n onTabChange?: (tab: string) => void;\n /**\n * When provided, a \"Feedback\" tab appears; the slot receives the loaded span and renders\n * whatever feedback UI the consumer wants.\n */\n feedbackTabSlot?: (args: { span: SpanRecord; traceId: string; spanId: string }) => ReactNode;\n /** Optional indicator rendered after the \"Feedback\" tab label (e.g. a needs-review dot). */\n feedbackTabBadge?: ReactNode;\n /**\n * Whether this span is the displayed root of the current view (trace root or\n * branch anchor). Controls visibility of trace-level metadata fields. Defaults\n * to `span.parentSpanId == null` (trace case) when omitted.\n */\n isAnchor?: boolean;\n /** Extra classes for the panel root (e.g. flattening the card when nested in the trace panel). */\n className?: string;\n}\n\nexport function SpanDataPanelView({\n traceId,\n spanId,\n span,\n isLoading,\n onPrevious,\n onNext,\n onClose,\n activeTab,\n onTabChange,\n feedbackTabSlot,\n feedbackTabBadge,\n isAnchor,\n className,\n}: SpanDataPanelViewProps) {\n // Not a DataPanel: this is the span column rendered inside `TraceDataPanelView`,\n // which already provides the panel chrome.\n return (\n <section className={cn('flex min-h-0 flex-1 flex-col overflow-hidden', className)}>\n <DataPanel.Header>\n <DataPanel.HeaderContent>\n <DataPanel.Heading>\n Span\n <TraceIdButton id={spanId} />\n </DataPanel.Heading>\n {span && <SpanSummaryDescription span={span} />}\n </DataPanel.HeaderContent>\n <DataPanel.HeaderActions>\n <DataPanel.NextPrevNav\n onPrevious={onPrevious}\n onNext={onNext}\n previousLabel=\"Go to previous span\"\n nextLabel=\"Go to next span\"\n />\n {onClose && <DataPanel.CloseButton icon=\"x\" onClick={onClose} label=\"Close span\" tooltip=\"Close span\" />}\n </DataPanel.HeaderActions>\n </DataPanel.Header>\n\n {isLoading ? (\n <DataPanel.LoadingData>Loading span details...</DataPanel.LoadingData>\n ) : !span ? (\n <DataPanel.NoData>Span not found.</DataPanel.NoData>\n ) : (\n <SpanDataPanelContent\n span={span}\n traceId={traceId}\n spanId={spanId}\n activeTab={activeTab}\n onTabChange={onTabChange}\n feedbackTabSlot={feedbackTabSlot}\n feedbackTabBadge={feedbackTabBadge}\n isAnchor={isAnchor}\n />\n )}\n </section>\n );\n}\n\nfunction SpanDataPanelContent({\n span,\n traceId,\n spanId,\n activeTab,\n onTabChange,\n feedbackTabSlot,\n feedbackTabBadge,\n isAnchor,\n}: {\n span: SpanRecord;\n traceId: string;\n spanId: string;\n activeTab?: string;\n onTabChange?: (tab: string) => void;\n feedbackTabSlot?: (args: { span: SpanRecord; traceId: string; spanId: string }) => ReactNode;\n feedbackTabBadge?: ReactNode;\n isAnchor?: boolean;\n}) {\n const usage = span.attributes?.usage as TokenUsage | undefined;\n const hasContext =\n (isAnchor ?? span.parentSpanId == null) &&\n Boolean(\n span.tags?.length || span.sessionId || span.requestId || span.userId || span.organizationId || span.experimentId,\n );\n\n const detailsBody = (\n <>\n {isTokenLimitExceeded(span) && (\n <div className=\"mb-3\">\n <Notice variant=\"warning\" title=\"Token Limit Exceeded\">\n <Notice.Message>{getTokenLimitMessage(span)}</Notice.Message>\n </Notice>\n </div>\n )}\n\n <SpanPayloadSection title=\"Error\" raw={span.error} className=\"mb-3\">\n <SpanErrorRenderer span={span} />\n </SpanPayloadSection>\n\n {usage && <SpanTokenUsage usage={usage} className=\"mb-3\" />}\n\n {hasContext && (\n <DataKeysAndValues>\n {/* Anchor-only: rich trace-context fields. Live on the full SpanRecord, not on the\n * lightweight payload, so they only have values once the full span is loaded. */}\n {(isAnchor ?? span.parentSpanId == null) && (\n <>\n {span.tags && span.tags.length > 0 && (\n <>\n <DataKeysAndValues.Key>Tags</DataKeysAndValues.Key>\n <DataKeysAndValues.Value>{span.tags.join(', ')}</DataKeysAndValues.Value>\n </>\n )}\n {span.sessionId && (\n <>\n <DataKeysAndValues.Key>Session Id</DataKeysAndValues.Key>\n <DataKeysAndValues.ValueWithCopyBtn\n copyTooltip=\"Copy Session Id to clipboard\"\n copyValue={span.sessionId}\n >\n {span.sessionId}\n </DataKeysAndValues.ValueWithCopyBtn>\n </>\n )}\n {span.requestId && (\n <>\n <DataKeysAndValues.Key>Request Id</DataKeysAndValues.Key>\n <DataKeysAndValues.ValueWithCopyBtn\n copyTooltip=\"Copy Request Id to clipboard\"\n copyValue={span.requestId}\n >\n {span.requestId}\n </DataKeysAndValues.ValueWithCopyBtn>\n </>\n )}\n {span.userId && (\n <>\n <DataKeysAndValues.Key>User Id</DataKeysAndValues.Key>\n <DataKeysAndValues.ValueWithCopyBtn copyTooltip=\"Copy User Id to clipboard\" copyValue={span.userId}>\n {span.userId}\n </DataKeysAndValues.ValueWithCopyBtn>\n </>\n )}\n {span.organizationId && (\n <>\n <DataKeysAndValues.Key>Organization Id</DataKeysAndValues.Key>\n <DataKeysAndValues.ValueWithCopyBtn\n copyTooltip=\"Copy Organization Id to clipboard\"\n copyValue={span.organizationId}\n >\n {span.organizationId}\n </DataKeysAndValues.ValueWithCopyBtn>\n </>\n )}\n {span.experimentId && (\n <>\n <DataKeysAndValues.Key>Experiment Id</DataKeysAndValues.Key>\n <DataKeysAndValues.ValueWithCopyBtn\n copyTooltip=\"Copy Experiment Id to clipboard\"\n copyValue={span.experimentId}\n >\n {span.experimentId}\n </DataKeysAndValues.ValueWithCopyBtn>\n </>\n )}\n </>\n )}\n </DataKeysAndValues>\n )}\n\n <div className={cn('grid gap-4', hasContext && 'mt-4')}>\n <SpanPayloadSection\n title=\"Input\"\n icon={<FileInputIcon />}\n raw={span.input}\n hasPreview={describeSpanInput(asCoreSpan(span))?.type !== 'json'}\n >\n <SpanInputRenderer span={span} />\n </SpanPayloadSection>\n <SpanPayloadSection\n title=\"Output\"\n icon={<FileOutputIcon />}\n raw={span.output}\n hasPreview={describeSpanOutput(asCoreSpan(span))?.type !== 'json'}\n >\n <SpanOutputRenderer span={span} />\n </SpanPayloadSection>\n <SpanPayloadSection title=\"Metadata\" icon={<BracesIcon />} raw={span.metadata} hasPreview={false}>\n {null}\n </SpanPayloadSection>\n <SpanPayloadSection\n title=\"Attributes\"\n icon={<BracesIcon />}\n raw={span.attributes}\n hasPreview={describeProcessorPipeline(asCoreSpan(span)) !== undefined}\n >\n <SpanProcessorAttributes span={span} />\n </SpanPayloadSection>\n </div>\n </>\n );\n\n // No extra tab slots → render details directly without the Tabs/TabList wrapper.\n if (!feedbackTabSlot) {\n return <div className={BODY_CLASS}>{detailsBody}</div>;\n }\n\n // Same chrome as the trace column: tab list in a header row, content scrolling beneath it.\n return (\n <Tabs\n defaultTab=\"details\"\n value={activeTab}\n onValueChange={onTabChange}\n className=\"grid min-h-0 flex-1 grid-rows-[auto_1fr]\"\n >\n <DataPanel.Header>\n <TabList variant=\"pill-ghost\" size=\"sm\">\n <Tab value=\"details\">Details</Tab>\n <Tab value=\"feedback\">Feedback{feedbackTabBadge != null && <> ({feedbackTabBadge})</>}</Tab>\n </TabList>\n </DataPanel.Header>\n\n <TabContent value=\"details\" flush>\n <div className={BODY_CLASS}>{detailsBody}</div>\n </TabContent>\n <TabContent value=\"feedback\" flush>\n <div className={BODY_CLASS}>{feedbackTabSlot({ span, traceId, spanId })}</div>\n </TabContent>\n </Tabs>\n );\n}\n"],"names":["cn","jsxs","DataPanel","jsx","TraceIdButton","SpanSummaryDescription","Fragment","isTokenLimitExceeded","Notice","SpanPayloadSection","SpanErrorRenderer","SpanTokenUsage","DataKeysAndValues","FileInputIcon","describeSpanInput","asCoreSpan","SpanInputRenderer","FileOutputIcon","describeSpanOutput","SpanOutputRenderer","BracesIcon","describeProcessorPipeline","SpanProcessorAttributes","Tabs","TabList","Tab","TabContent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"span-data-panel-view.cjs.js","sources":["../../../../src/domains/traces/components/span-data-panel-view.tsx"],"sourcesContent":["import { describeProcessorPipeline, describeSpanInput, describeSpanOutput } from '@mastra/core/observability';\nimport { BracesIcon, FileInputIcon, FileOutputIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport type { SpanRecord } from '../types';\nimport { getTokenLimitMessage, isTokenLimitExceeded } from '../utils/span-utils';\nimport {\n SpanErrorRenderer,\n SpanInputRenderer,\n SpanOutputRenderer,\n SpanPayloadSection,\n SpanProcessorAttributes,\n} from './span-payload';\nimport { asCoreSpan } from './span-payload/span-payload-registry';\nimport { SpanSummaryDescription } from './span-summary-description';\nimport { SpanTokenUsage } from './span-token-usage';\nimport type { TokenUsage } from './span-token-usage';\nimport { TraceIdButton } from './trace-id-button';\nimport { DataKeysAndValues } from '@/ds/components/DataKeysAndValues';\nimport { DataPanel } from '@/ds/components/DataPanel';\nimport { Notice } from '@/ds/components/Notice';\nimport { Tab, TabContent, TabList, Tabs } from '@/ds/components/Tabs';\nimport { cn } from '@/lib/utils';\n\n// Mirrors `DataPanel.Content` padding without requiring the Drawer root (this view also renders standalone).\nconst BODY_CLASS = 'min-h-0 flex-1 overflow-y-auto px-2 py-3';\n\nexport interface SpanDataPanelViewProps {\n traceId: string;\n spanId: string;\n /** Full span record. Caller fetches via useSpanDetail. */\n span: SpanRecord | undefined;\n isLoading?: boolean;\n onPrevious?: () => void;\n onNext?: () => void;\n /** When provided, an × button in the header closes the span column. */\n onClose?: () => void;\n activeTab?: string;\n onTabChange?: (tab: string) => void;\n /**\n * When provided, a \"Feedback\" tab appears; the slot receives the loaded span and renders\n * whatever feedback UI the consumer wants.\n */\n feedbackTabSlot?: (args: { span: SpanRecord; traceId: string; spanId: string }) => ReactNode;\n /** Optional indicator rendered after the \"Feedback\" tab label (e.g. a needs-review dot). */\n feedbackTabBadge?: ReactNode;\n /**\n * Whether this span is the displayed root of the current view (trace root or\n * branch anchor). Controls visibility of trace-level metadata fields. Defaults\n * to `span.parentSpanId == null` (trace case) when omitted.\n */\n isAnchor?: boolean;\n /** Extra classes for the panel root (e.g. flattening the card when nested in the trace panel). */\n className?: string;\n}\n\nexport function SpanDataPanelView({\n traceId,\n spanId,\n span,\n isLoading,\n onPrevious,\n onNext,\n onClose,\n activeTab,\n onTabChange,\n feedbackTabSlot,\n feedbackTabBadge,\n isAnchor,\n className,\n}: SpanDataPanelViewProps) {\n // Not a DataPanel: this is the span column rendered inside `TraceDataPanelView`,\n // which already provides the panel chrome.\n return (\n <section className={cn('flex min-h-0 flex-1 flex-col overflow-hidden', className)}>\n <DataPanel.Header>\n <DataPanel.HeaderContent>\n <DataPanel.Heading>\n Span\n <TraceIdButton id={spanId} />\n </DataPanel.Heading>\n {span && <SpanSummaryDescription span={span} />}\n </DataPanel.HeaderContent>\n <DataPanel.HeaderActions>\n <DataPanel.NextPrevNav\n onPrevious={onPrevious}\n onNext={onNext}\n previousLabel=\"Go to previous span\"\n nextLabel=\"Go to next span\"\n />\n {onClose && <DataPanel.CloseButton icon=\"x\" onClick={onClose} label=\"Close span\" tooltip=\"Close span\" />}\n </DataPanel.HeaderActions>\n </DataPanel.Header>\n\n {isLoading ? (\n <DataPanel.LoadingData>Loading span details...</DataPanel.LoadingData>\n ) : !span ? (\n <DataPanel.NoData>Span not found.</DataPanel.NoData>\n ) : (\n <SpanDataPanelContent\n span={span}\n traceId={traceId}\n spanId={spanId}\n activeTab={activeTab}\n onTabChange={onTabChange}\n feedbackTabSlot={feedbackTabSlot}\n feedbackTabBadge={feedbackTabBadge}\n isAnchor={isAnchor}\n />\n )}\n </section>\n );\n}\n\nfunction SpanDataPanelContent({\n span,\n traceId,\n spanId,\n activeTab,\n onTabChange,\n feedbackTabSlot,\n feedbackTabBadge,\n isAnchor,\n}: {\n span: SpanRecord;\n traceId: string;\n spanId: string;\n activeTab?: string;\n onTabChange?: (tab: string) => void;\n feedbackTabSlot?: (args: { span: SpanRecord; traceId: string; spanId: string }) => ReactNode;\n feedbackTabBadge?: ReactNode;\n isAnchor?: boolean;\n}) {\n const usage = span.attributes?.usage as TokenUsage | undefined;\n const hasContext =\n (isAnchor ?? span.parentSpanId == null) &&\n Boolean(\n span.tags?.length || span.sessionId || span.requestId || span.userId || span.organizationId || span.experimentId,\n );\n\n const detailsBody = (\n <>\n {isTokenLimitExceeded(span) && (\n <div className=\"mb-3\">\n <Notice variant=\"warning\" title=\"Token Limit Exceeded\">\n <Notice.Message>{getTokenLimitMessage(span)}</Notice.Message>\n </Notice>\n </div>\n )}\n\n <SpanPayloadSection title=\"Error\" raw={span.error} className=\"mb-3\">\n <SpanErrorRenderer span={span} />\n </SpanPayloadSection>\n\n {usage && <SpanTokenUsage usage={usage} className=\"mb-3\" />}\n\n {hasContext && (\n <DataKeysAndValues>\n {/* Anchor-only: rich trace-context fields. Live on the full SpanRecord, not on the\n * lightweight payload, so they only have values once the full span is loaded. */}\n {(isAnchor ?? span.parentSpanId == null) && (\n <>\n {span.tags && span.tags.length > 0 && (\n <>\n <DataKeysAndValues.Key>Tags</DataKeysAndValues.Key>\n <DataKeysAndValues.Value>{span.tags.join(', ')}</DataKeysAndValues.Value>\n </>\n )}\n {span.sessionId && (\n <>\n <DataKeysAndValues.Key>Session Id</DataKeysAndValues.Key>\n <DataKeysAndValues.ValueWithCopyBtn\n copyTooltip=\"Copy Session Id to clipboard\"\n copyValue={span.sessionId}\n >\n {span.sessionId}\n </DataKeysAndValues.ValueWithCopyBtn>\n </>\n )}\n {span.requestId && (\n <>\n <DataKeysAndValues.Key>Request Id</DataKeysAndValues.Key>\n <DataKeysAndValues.ValueWithCopyBtn\n copyTooltip=\"Copy Request Id to clipboard\"\n copyValue={span.requestId}\n >\n {span.requestId}\n </DataKeysAndValues.ValueWithCopyBtn>\n </>\n )}\n {span.userId && (\n <>\n <DataKeysAndValues.Key>User Id</DataKeysAndValues.Key>\n <DataKeysAndValues.ValueWithCopyBtn copyTooltip=\"Copy User Id to clipboard\" copyValue={span.userId}>\n {span.userId}\n </DataKeysAndValues.ValueWithCopyBtn>\n </>\n )}\n {span.organizationId && (\n <>\n <DataKeysAndValues.Key>Organization Id</DataKeysAndValues.Key>\n <DataKeysAndValues.ValueWithCopyBtn\n copyTooltip=\"Copy Organization Id to clipboard\"\n copyValue={span.organizationId}\n >\n {span.organizationId}\n </DataKeysAndValues.ValueWithCopyBtn>\n </>\n )}\n {span.experimentId && (\n <>\n <DataKeysAndValues.Key>Experiment Id</DataKeysAndValues.Key>\n <DataKeysAndValues.ValueWithCopyBtn\n copyTooltip=\"Copy Experiment Id to clipboard\"\n copyValue={span.experimentId}\n >\n {span.experimentId}\n </DataKeysAndValues.ValueWithCopyBtn>\n </>\n )}\n </>\n )}\n </DataKeysAndValues>\n )}\n\n <div className={cn('grid gap-4', hasContext && 'mt-4')}>\n <SpanPayloadSection\n title=\"Input\"\n icon={<FileInputIcon />}\n raw={span.input}\n hasPreview={describeSpanInput(asCoreSpan(span))?.type !== 'json'}\n >\n <SpanInputRenderer span={span} />\n </SpanPayloadSection>\n <SpanPayloadSection\n title=\"Output\"\n icon={<FileOutputIcon />}\n raw={span.output}\n hasPreview={describeSpanOutput(asCoreSpan(span))?.type !== 'json'}\n >\n <SpanOutputRenderer span={span} />\n </SpanPayloadSection>\n <SpanPayloadSection title=\"Metadata\" icon={<BracesIcon />} raw={span.metadata} hasPreview={false}>\n {null}\n </SpanPayloadSection>\n <SpanPayloadSection\n title=\"Attributes\"\n icon={<BracesIcon />}\n raw={span.attributes}\n hasPreview={describeProcessorPipeline(asCoreSpan(span)) !== undefined}\n >\n <SpanProcessorAttributes span={span} />\n </SpanPayloadSection>\n </div>\n </>\n );\n\n // No extra tab slots → render details directly without the Tabs/TabList wrapper.\n if (!feedbackTabSlot) {\n return <div className={BODY_CLASS}>{detailsBody}</div>;\n }\n\n // Same chrome as the trace column: tab list in a header row, content scrolling beneath it.\n return (\n <Tabs\n defaultTab=\"details\"\n value={activeTab}\n onValueChange={onTabChange}\n className=\"grid min-h-0 flex-1 grid-rows-[auto_1fr]\"\n >\n <DataPanel.Header>\n <TabList variant=\"pill-ghost\" size=\"sm\">\n <Tab value=\"details\">Details</Tab>\n <Tab value=\"feedback\">Feedback{feedbackTabBadge != null && <> ({feedbackTabBadge})</>}</Tab>\n </TabList>\n </DataPanel.Header>\n\n <TabContent value=\"details\" flush>\n <div className={BODY_CLASS}>{detailsBody}</div>\n </TabContent>\n <TabContent value=\"feedback\" flush>\n <div className={BODY_CLASS}>{feedbackTabSlot({ span, traceId, spanId })}</div>\n </TabContent>\n </Tabs>\n );\n}\n"],"names":["cn","jsxs","DataPanel","jsx","TraceIdButton","SpanSummaryDescription","Fragment","isTokenLimitExceeded","Notice","SpanPayloadSection","SpanErrorRenderer","SpanTokenUsage","DataKeysAndValues","FileInputIcon","describeSpanInput","asCoreSpan","SpanInputRenderer","FileOutputIcon","describeSpanOutput","SpanOutputRenderer","BracesIcon","describeProcessorPipeline","SpanProcessorAttributes","Tabs","TabList","Tab","TabContent"],"mappings":"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"}
|
|
@@ -11,7 +11,6 @@ import { c as cn } from '../../../cn-coERSHz5.js';
|
|
|
11
11
|
import 'react';
|
|
12
12
|
import '../../chat/attachments/composer-attachment-context.es.js';
|
|
13
13
|
import '@base-ui/react/use-render';
|
|
14
|
-
import '../../../Button-C8QDEN9j.js';
|
|
15
14
|
import '../../chat/context/chat-context.es.js';
|
|
16
15
|
import './span-payload/span-payload-processor.es.js';
|
|
17
16
|
import { SpanProcessorAttributes } from './span-payload/span-processor-attributes.es.js';
|
|
@@ -20,7 +19,7 @@ import { SpanSummaryDescription } from './span-summary-description.es.js';
|
|
|
20
19
|
import { SpanTokenUsage } from './span-token-usage.es.js';
|
|
21
20
|
import { TraceIdButton } from './trace-id-button.es.js';
|
|
22
21
|
import { D as DataKeysAndValues } from '../../../data-keys-and-values-B1u00ihh.js';
|
|
23
|
-
import { D as DataPanel } from '../../../data-panel-
|
|
22
|
+
import { D as DataPanel } from '../../../data-panel-DfVGx0Ea.js';
|
|
24
23
|
import { N as Notice } from '../../../Notice-Wy1grdLu.js';
|
|
25
24
|
import { T as Tabs } from '../../../tabs-root-CvGhdNKc.js';
|
|
26
25
|
import { T as TabList } from '../../../tabs-list-DY_hziv7.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"span-data-panel-view.es.js","sources":["../../../../src/domains/traces/components/span-data-panel-view.tsx"],"sourcesContent":["import { describeProcessorPipeline, describeSpanInput, describeSpanOutput } from '@mastra/core/observability';\nimport { BracesIcon, FileInputIcon, FileOutputIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport type { SpanRecord } from '../types';\nimport { getTokenLimitMessage, isTokenLimitExceeded } from '../utils/span-utils';\nimport {\n SpanErrorRenderer,\n SpanInputRenderer,\n SpanOutputRenderer,\n SpanPayloadSection,\n SpanProcessorAttributes,\n} from './span-payload';\nimport { asCoreSpan } from './span-payload/span-payload-registry';\nimport { SpanSummaryDescription } from './span-summary-description';\nimport { SpanTokenUsage } from './span-token-usage';\nimport type { TokenUsage } from './span-token-usage';\nimport { TraceIdButton } from './trace-id-button';\nimport { DataKeysAndValues } from '@/ds/components/DataKeysAndValues';\nimport { DataPanel } from '@/ds/components/DataPanel';\nimport { Notice } from '@/ds/components/Notice';\nimport { Tab, TabContent, TabList, Tabs } from '@/ds/components/Tabs';\nimport { cn } from '@/lib/utils';\n\n// Mirrors `DataPanel.Content` padding without requiring the Drawer root (this view also renders standalone).\nconst BODY_CLASS = 'min-h-0 flex-1 overflow-y-auto px-2 py-3';\n\nexport interface SpanDataPanelViewProps {\n traceId: string;\n spanId: string;\n /** Full span record. Caller fetches via useSpanDetail. */\n span: SpanRecord | undefined;\n isLoading?: boolean;\n onPrevious?: () => void;\n onNext?: () => void;\n /** When provided, an × button in the header closes the span column. */\n onClose?: () => void;\n activeTab?: string;\n onTabChange?: (tab: string) => void;\n /**\n * When provided, a \"Feedback\" tab appears; the slot receives the loaded span and renders\n * whatever feedback UI the consumer wants.\n */\n feedbackTabSlot?: (args: { span: SpanRecord; traceId: string; spanId: string }) => ReactNode;\n /** Optional indicator rendered after the \"Feedback\" tab label (e.g. a needs-review dot). */\n feedbackTabBadge?: ReactNode;\n /**\n * Whether this span is the displayed root of the current view (trace root or\n * branch anchor). Controls visibility of trace-level metadata fields. Defaults\n * to `span.parentSpanId == null` (trace case) when omitted.\n */\n isAnchor?: boolean;\n /** Extra classes for the panel root (e.g. flattening the card when nested in the trace panel). */\n className?: string;\n}\n\nexport function SpanDataPanelView({\n traceId,\n spanId,\n span,\n isLoading,\n onPrevious,\n onNext,\n onClose,\n activeTab,\n onTabChange,\n feedbackTabSlot,\n feedbackTabBadge,\n isAnchor,\n className,\n}: SpanDataPanelViewProps) {\n // Not a DataPanel: this is the span column rendered inside `TraceDataPanelView`,\n // which already provides the panel chrome.\n return (\n <section className={cn('flex min-h-0 flex-1 flex-col overflow-hidden', className)}>\n <DataPanel.Header>\n <DataPanel.HeaderContent>\n <DataPanel.Heading>\n Span\n <TraceIdButton id={spanId} />\n </DataPanel.Heading>\n {span && <SpanSummaryDescription span={span} />}\n </DataPanel.HeaderContent>\n <DataPanel.HeaderActions>\n <DataPanel.NextPrevNav\n onPrevious={onPrevious}\n onNext={onNext}\n previousLabel=\"Go to previous span\"\n nextLabel=\"Go to next span\"\n />\n {onClose && <DataPanel.CloseButton icon=\"x\" onClick={onClose} label=\"Close span\" tooltip=\"Close span\" />}\n </DataPanel.HeaderActions>\n </DataPanel.Header>\n\n {isLoading ? (\n <DataPanel.LoadingData>Loading span details...</DataPanel.LoadingData>\n ) : !span ? (\n <DataPanel.NoData>Span not found.</DataPanel.NoData>\n ) : (\n <SpanDataPanelContent\n span={span}\n traceId={traceId}\n spanId={spanId}\n activeTab={activeTab}\n onTabChange={onTabChange}\n feedbackTabSlot={feedbackTabSlot}\n feedbackTabBadge={feedbackTabBadge}\n isAnchor={isAnchor}\n />\n )}\n </section>\n );\n}\n\nfunction SpanDataPanelContent({\n span,\n traceId,\n spanId,\n activeTab,\n onTabChange,\n feedbackTabSlot,\n feedbackTabBadge,\n isAnchor,\n}: {\n span: SpanRecord;\n traceId: string;\n spanId: string;\n activeTab?: string;\n onTabChange?: (tab: string) => void;\n feedbackTabSlot?: (args: { span: SpanRecord; traceId: string; spanId: string }) => ReactNode;\n feedbackTabBadge?: ReactNode;\n isAnchor?: boolean;\n}) {\n const usage = span.attributes?.usage as TokenUsage | undefined;\n const hasContext =\n (isAnchor ?? span.parentSpanId == null) &&\n Boolean(\n span.tags?.length || span.sessionId || span.requestId || span.userId || span.organizationId || span.experimentId,\n );\n\n const detailsBody = (\n <>\n {isTokenLimitExceeded(span) && (\n <div className=\"mb-3\">\n <Notice variant=\"warning\" title=\"Token Limit Exceeded\">\n <Notice.Message>{getTokenLimitMessage(span)}</Notice.Message>\n </Notice>\n </div>\n )}\n\n <SpanPayloadSection title=\"Error\" raw={span.error} className=\"mb-3\">\n <SpanErrorRenderer span={span} />\n </SpanPayloadSection>\n\n {usage && <SpanTokenUsage usage={usage} className=\"mb-3\" />}\n\n {hasContext && (\n <DataKeysAndValues>\n {/* Anchor-only: rich trace-context fields. Live on the full SpanRecord, not on the\n * lightweight payload, so they only have values once the full span is loaded. */}\n {(isAnchor ?? span.parentSpanId == null) && (\n <>\n {span.tags && span.tags.length > 0 && (\n <>\n <DataKeysAndValues.Key>Tags</DataKeysAndValues.Key>\n <DataKeysAndValues.Value>{span.tags.join(', ')}</DataKeysAndValues.Value>\n </>\n )}\n {span.sessionId && (\n <>\n <DataKeysAndValues.Key>Session Id</DataKeysAndValues.Key>\n <DataKeysAndValues.ValueWithCopyBtn\n copyTooltip=\"Copy Session Id to clipboard\"\n copyValue={span.sessionId}\n >\n {span.sessionId}\n </DataKeysAndValues.ValueWithCopyBtn>\n </>\n )}\n {span.requestId && (\n <>\n <DataKeysAndValues.Key>Request Id</DataKeysAndValues.Key>\n <DataKeysAndValues.ValueWithCopyBtn\n copyTooltip=\"Copy Request Id to clipboard\"\n copyValue={span.requestId}\n >\n {span.requestId}\n </DataKeysAndValues.ValueWithCopyBtn>\n </>\n )}\n {span.userId && (\n <>\n <DataKeysAndValues.Key>User Id</DataKeysAndValues.Key>\n <DataKeysAndValues.ValueWithCopyBtn copyTooltip=\"Copy User Id to clipboard\" copyValue={span.userId}>\n {span.userId}\n </DataKeysAndValues.ValueWithCopyBtn>\n </>\n )}\n {span.organizationId && (\n <>\n <DataKeysAndValues.Key>Organization Id</DataKeysAndValues.Key>\n <DataKeysAndValues.ValueWithCopyBtn\n copyTooltip=\"Copy Organization Id to clipboard\"\n copyValue={span.organizationId}\n >\n {span.organizationId}\n </DataKeysAndValues.ValueWithCopyBtn>\n </>\n )}\n {span.experimentId && (\n <>\n <DataKeysAndValues.Key>Experiment Id</DataKeysAndValues.Key>\n <DataKeysAndValues.ValueWithCopyBtn\n copyTooltip=\"Copy Experiment Id to clipboard\"\n copyValue={span.experimentId}\n >\n {span.experimentId}\n </DataKeysAndValues.ValueWithCopyBtn>\n </>\n )}\n </>\n )}\n </DataKeysAndValues>\n )}\n\n <div className={cn('grid gap-4', hasContext && 'mt-4')}>\n <SpanPayloadSection\n title=\"Input\"\n icon={<FileInputIcon />}\n raw={span.input}\n hasPreview={describeSpanInput(asCoreSpan(span))?.type !== 'json'}\n >\n <SpanInputRenderer span={span} />\n </SpanPayloadSection>\n <SpanPayloadSection\n title=\"Output\"\n icon={<FileOutputIcon />}\n raw={span.output}\n hasPreview={describeSpanOutput(asCoreSpan(span))?.type !== 'json'}\n >\n <SpanOutputRenderer span={span} />\n </SpanPayloadSection>\n <SpanPayloadSection title=\"Metadata\" icon={<BracesIcon />} raw={span.metadata} hasPreview={false}>\n {null}\n </SpanPayloadSection>\n <SpanPayloadSection\n title=\"Attributes\"\n icon={<BracesIcon />}\n raw={span.attributes}\n hasPreview={describeProcessorPipeline(asCoreSpan(span)) !== undefined}\n >\n <SpanProcessorAttributes span={span} />\n </SpanPayloadSection>\n </div>\n </>\n );\n\n // No extra tab slots → render details directly without the Tabs/TabList wrapper.\n if (!feedbackTabSlot) {\n return <div className={BODY_CLASS}>{detailsBody}</div>;\n }\n\n // Same chrome as the trace column: tab list in a header row, content scrolling beneath it.\n return (\n <Tabs\n defaultTab=\"details\"\n value={activeTab}\n onValueChange={onTabChange}\n className=\"grid min-h-0 flex-1 grid-rows-[auto_1fr]\"\n >\n <DataPanel.Header>\n <TabList variant=\"pill-ghost\" size=\"sm\">\n <Tab value=\"details\">Details</Tab>\n <Tab value=\"feedback\">Feedback{feedbackTabBadge != null && <> ({feedbackTabBadge})</>}</Tab>\n </TabList>\n </DataPanel.Header>\n\n <TabContent value=\"details\" flush>\n <div className={BODY_CLASS}>{detailsBody}</div>\n </TabContent>\n <TabContent value=\"feedback\" flush>\n <div className={BODY_CLASS}>{feedbackTabSlot({ span, traceId, spanId })}</div>\n </TabContent>\n </Tabs>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"span-data-panel-view.es.js","sources":["../../../../src/domains/traces/components/span-data-panel-view.tsx"],"sourcesContent":["import { describeProcessorPipeline, describeSpanInput, describeSpanOutput } from '@mastra/core/observability';\nimport { BracesIcon, FileInputIcon, FileOutputIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport type { SpanRecord } from '../types';\nimport { getTokenLimitMessage, isTokenLimitExceeded } from '../utils/span-utils';\nimport {\n SpanErrorRenderer,\n SpanInputRenderer,\n SpanOutputRenderer,\n SpanPayloadSection,\n SpanProcessorAttributes,\n} from './span-payload';\nimport { asCoreSpan } from './span-payload/span-payload-registry';\nimport { SpanSummaryDescription } from './span-summary-description';\nimport { SpanTokenUsage } from './span-token-usage';\nimport type { TokenUsage } from './span-token-usage';\nimport { TraceIdButton } from './trace-id-button';\nimport { DataKeysAndValues } from '@/ds/components/DataKeysAndValues';\nimport { DataPanel } from '@/ds/components/DataPanel';\nimport { Notice } from '@/ds/components/Notice';\nimport { Tab, TabContent, TabList, Tabs } from '@/ds/components/Tabs';\nimport { cn } from '@/lib/utils';\n\n// Mirrors `DataPanel.Content` padding without requiring the Drawer root (this view also renders standalone).\nconst BODY_CLASS = 'min-h-0 flex-1 overflow-y-auto px-2 py-3';\n\nexport interface SpanDataPanelViewProps {\n traceId: string;\n spanId: string;\n /** Full span record. Caller fetches via useSpanDetail. */\n span: SpanRecord | undefined;\n isLoading?: boolean;\n onPrevious?: () => void;\n onNext?: () => void;\n /** When provided, an × button in the header closes the span column. */\n onClose?: () => void;\n activeTab?: string;\n onTabChange?: (tab: string) => void;\n /**\n * When provided, a \"Feedback\" tab appears; the slot receives the loaded span and renders\n * whatever feedback UI the consumer wants.\n */\n feedbackTabSlot?: (args: { span: SpanRecord; traceId: string; spanId: string }) => ReactNode;\n /** Optional indicator rendered after the \"Feedback\" tab label (e.g. a needs-review dot). */\n feedbackTabBadge?: ReactNode;\n /**\n * Whether this span is the displayed root of the current view (trace root or\n * branch anchor). Controls visibility of trace-level metadata fields. Defaults\n * to `span.parentSpanId == null` (trace case) when omitted.\n */\n isAnchor?: boolean;\n /** Extra classes for the panel root (e.g. flattening the card when nested in the trace panel). */\n className?: string;\n}\n\nexport function SpanDataPanelView({\n traceId,\n spanId,\n span,\n isLoading,\n onPrevious,\n onNext,\n onClose,\n activeTab,\n onTabChange,\n feedbackTabSlot,\n feedbackTabBadge,\n isAnchor,\n className,\n}: SpanDataPanelViewProps) {\n // Not a DataPanel: this is the span column rendered inside `TraceDataPanelView`,\n // which already provides the panel chrome.\n return (\n <section className={cn('flex min-h-0 flex-1 flex-col overflow-hidden', className)}>\n <DataPanel.Header>\n <DataPanel.HeaderContent>\n <DataPanel.Heading>\n Span\n <TraceIdButton id={spanId} />\n </DataPanel.Heading>\n {span && <SpanSummaryDescription span={span} />}\n </DataPanel.HeaderContent>\n <DataPanel.HeaderActions>\n <DataPanel.NextPrevNav\n onPrevious={onPrevious}\n onNext={onNext}\n previousLabel=\"Go to previous span\"\n nextLabel=\"Go to next span\"\n />\n {onClose && <DataPanel.CloseButton icon=\"x\" onClick={onClose} label=\"Close span\" tooltip=\"Close span\" />}\n </DataPanel.HeaderActions>\n </DataPanel.Header>\n\n {isLoading ? (\n <DataPanel.LoadingData>Loading span details...</DataPanel.LoadingData>\n ) : !span ? (\n <DataPanel.NoData>Span not found.</DataPanel.NoData>\n ) : (\n <SpanDataPanelContent\n span={span}\n traceId={traceId}\n spanId={spanId}\n activeTab={activeTab}\n onTabChange={onTabChange}\n feedbackTabSlot={feedbackTabSlot}\n feedbackTabBadge={feedbackTabBadge}\n isAnchor={isAnchor}\n />\n )}\n </section>\n );\n}\n\nfunction SpanDataPanelContent({\n span,\n traceId,\n spanId,\n activeTab,\n onTabChange,\n feedbackTabSlot,\n feedbackTabBadge,\n isAnchor,\n}: {\n span: SpanRecord;\n traceId: string;\n spanId: string;\n activeTab?: string;\n onTabChange?: (tab: string) => void;\n feedbackTabSlot?: (args: { span: SpanRecord; traceId: string; spanId: string }) => ReactNode;\n feedbackTabBadge?: ReactNode;\n isAnchor?: boolean;\n}) {\n const usage = span.attributes?.usage as TokenUsage | undefined;\n const hasContext =\n (isAnchor ?? span.parentSpanId == null) &&\n Boolean(\n span.tags?.length || span.sessionId || span.requestId || span.userId || span.organizationId || span.experimentId,\n );\n\n const detailsBody = (\n <>\n {isTokenLimitExceeded(span) && (\n <div className=\"mb-3\">\n <Notice variant=\"warning\" title=\"Token Limit Exceeded\">\n <Notice.Message>{getTokenLimitMessage(span)}</Notice.Message>\n </Notice>\n </div>\n )}\n\n <SpanPayloadSection title=\"Error\" raw={span.error} className=\"mb-3\">\n <SpanErrorRenderer span={span} />\n </SpanPayloadSection>\n\n {usage && <SpanTokenUsage usage={usage} className=\"mb-3\" />}\n\n {hasContext && (\n <DataKeysAndValues>\n {/* Anchor-only: rich trace-context fields. Live on the full SpanRecord, not on the\n * lightweight payload, so they only have values once the full span is loaded. */}\n {(isAnchor ?? span.parentSpanId == null) && (\n <>\n {span.tags && span.tags.length > 0 && (\n <>\n <DataKeysAndValues.Key>Tags</DataKeysAndValues.Key>\n <DataKeysAndValues.Value>{span.tags.join(', ')}</DataKeysAndValues.Value>\n </>\n )}\n {span.sessionId && (\n <>\n <DataKeysAndValues.Key>Session Id</DataKeysAndValues.Key>\n <DataKeysAndValues.ValueWithCopyBtn\n copyTooltip=\"Copy Session Id to clipboard\"\n copyValue={span.sessionId}\n >\n {span.sessionId}\n </DataKeysAndValues.ValueWithCopyBtn>\n </>\n )}\n {span.requestId && (\n <>\n <DataKeysAndValues.Key>Request Id</DataKeysAndValues.Key>\n <DataKeysAndValues.ValueWithCopyBtn\n copyTooltip=\"Copy Request Id to clipboard\"\n copyValue={span.requestId}\n >\n {span.requestId}\n </DataKeysAndValues.ValueWithCopyBtn>\n </>\n )}\n {span.userId && (\n <>\n <DataKeysAndValues.Key>User Id</DataKeysAndValues.Key>\n <DataKeysAndValues.ValueWithCopyBtn copyTooltip=\"Copy User Id to clipboard\" copyValue={span.userId}>\n {span.userId}\n </DataKeysAndValues.ValueWithCopyBtn>\n </>\n )}\n {span.organizationId && (\n <>\n <DataKeysAndValues.Key>Organization Id</DataKeysAndValues.Key>\n <DataKeysAndValues.ValueWithCopyBtn\n copyTooltip=\"Copy Organization Id to clipboard\"\n copyValue={span.organizationId}\n >\n {span.organizationId}\n </DataKeysAndValues.ValueWithCopyBtn>\n </>\n )}\n {span.experimentId && (\n <>\n <DataKeysAndValues.Key>Experiment Id</DataKeysAndValues.Key>\n <DataKeysAndValues.ValueWithCopyBtn\n copyTooltip=\"Copy Experiment Id to clipboard\"\n copyValue={span.experimentId}\n >\n {span.experimentId}\n </DataKeysAndValues.ValueWithCopyBtn>\n </>\n )}\n </>\n )}\n </DataKeysAndValues>\n )}\n\n <div className={cn('grid gap-4', hasContext && 'mt-4')}>\n <SpanPayloadSection\n title=\"Input\"\n icon={<FileInputIcon />}\n raw={span.input}\n hasPreview={describeSpanInput(asCoreSpan(span))?.type !== 'json'}\n >\n <SpanInputRenderer span={span} />\n </SpanPayloadSection>\n <SpanPayloadSection\n title=\"Output\"\n icon={<FileOutputIcon />}\n raw={span.output}\n hasPreview={describeSpanOutput(asCoreSpan(span))?.type !== 'json'}\n >\n <SpanOutputRenderer span={span} />\n </SpanPayloadSection>\n <SpanPayloadSection title=\"Metadata\" icon={<BracesIcon />} raw={span.metadata} hasPreview={false}>\n {null}\n </SpanPayloadSection>\n <SpanPayloadSection\n title=\"Attributes\"\n icon={<BracesIcon />}\n raw={span.attributes}\n hasPreview={describeProcessorPipeline(asCoreSpan(span)) !== undefined}\n >\n <SpanProcessorAttributes span={span} />\n </SpanPayloadSection>\n </div>\n </>\n );\n\n // No extra tab slots → render details directly without the Tabs/TabList wrapper.\n if (!feedbackTabSlot) {\n return <div className={BODY_CLASS}>{detailsBody}</div>;\n }\n\n // Same chrome as the trace column: tab list in a header row, content scrolling beneath it.\n return (\n <Tabs\n defaultTab=\"details\"\n value={activeTab}\n onValueChange={onTabChange}\n className=\"grid min-h-0 flex-1 grid-rows-[auto_1fr]\"\n >\n <DataPanel.Header>\n <TabList variant=\"pill-ghost\" size=\"sm\">\n <Tab value=\"details\">Details</Tab>\n <Tab value=\"feedback\">Feedback{feedbackTabBadge != null && <> ({feedbackTabBadge})</>}</Tab>\n </TabList>\n </DataPanel.Header>\n\n <TabContent value=\"details\" flush>\n <div className={BODY_CLASS}>{detailsBody}</div>\n </TabContent>\n <TabContent value=\"feedback\" flush>\n <div className={BODY_CLASS}>{feedbackTabSlot({ span, traceId, spanId })}</div>\n </TabContent>\n </Tabs>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,6 @@ require('../../../code-Dcah35Gp.cjs');
|
|
|
13
13
|
require('react');
|
|
14
14
|
require('../../chat/attachments/composer-attachment-context.cjs.js');
|
|
15
15
|
require('@base-ui/react/use-render');
|
|
16
|
-
require('../../../Button-BfZzgZrA.cjs');
|
|
17
16
|
require('../../chat/context/chat-context.cjs.js');
|
|
18
17
|
require('./span-payload/span-payload-processor.cjs.js');
|
|
19
18
|
const domains_traces_components_spanPayload_spanProcessorAttributes = require('./span-payload/span-processor-attributes.cjs.js');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"span-details-view.cjs.js","sources":["../../../../src/domains/traces/components/span-details-view.tsx"],"sourcesContent":["import { describeProcessorPipeline, describeSpanInput, describeSpanOutput } from '@mastra/core/observability';\nimport { BracesIcon, FileInputIcon, FileOutputIcon } from 'lucide-react';\nimport type { SpanRecord } from '../types';\nimport {\n SpanErrorRenderer,\n SpanInputRenderer,\n SpanOutputRenderer,\n SpanPayloadSection,\n SpanProcessorAttributes,\n} from './span-payload';\nimport { asCoreSpan } from './span-payload/span-payload-registry';\nimport { SpanSummaryDescription } from './span-summary-description';\nimport { TraceIdButton } from './trace-id-button';\nimport { DataDetailsPanel } from '@/ds/components/DataDetailsPanel';\n\nconst KV = DataDetailsPanel.KeyValueList;\n\nexport interface SpanDetailsViewProps {\n spanId: string;\n /** Full span record. Caller fetches via useSpanDetail. */\n span: SpanRecord | undefined;\n isLoading?: boolean;\n onClose: () => void;\n}\n\n/**\n * Compact span panel using `DataDetailsPanel` (popover-style). Shows basic span metadata +\n * input/output/metadata/attributes code sections. Use this for inline span inspection; for the\n * full-width span view with scoring tab + prev/next nav, use `SpanDataPanelView`.\n */\nexport function SpanDetailsView({ spanId, span, isLoading, onClose }: SpanDetailsViewProps) {\n return (\n <DataDetailsPanel>\n <DataDetailsPanel.Header>\n <div className=\"flex min-w-0 flex-1 flex-col gap-1\">\n <DataDetailsPanel.Heading className=\"items-center\">\n Span\n <TraceIdButton id={spanId} />\n </DataDetailsPanel.Heading>\n {span && <SpanSummaryDescription span={span} />}\n </div>\n <DataDetailsPanel.CloseButton onClick={onClose} />\n </DataDetailsPanel.Header>\n\n {isLoading ? (\n <DataDetailsPanel.LoadingData>Loading span...</DataDetailsPanel.LoadingData>\n ) : !span ? (\n <DataDetailsPanel.NoData>Span not found.</DataDetailsPanel.NoData>\n ) : (\n <DataDetailsPanel.Content>\n {span.spanType && (\n <>\n <KV>\n <KV.Key>Type</KV.Key>\n <KV.Value>{span.spanType}</KV.Value>\n </KV>\n <br />\n </>\n )}\n\n <SpanPayloadSection title=\"Error\" raw={span.error} layout=\"details\" className=\"mb-3\">\n <SpanErrorRenderer span={span} />\n </SpanPayloadSection>\n\n <SpanPayloadSection\n title=\"Input\"\n icon={<FileInputIcon />}\n raw={span.input}\n hasPreview={describeSpanInput(asCoreSpan(span))?.type !== 'json'}\n layout=\"details\"\n >\n <SpanInputRenderer span={span} />\n </SpanPayloadSection>\n <SpanPayloadSection\n title=\"Output\"\n icon={<FileOutputIcon />}\n raw={span.output}\n hasPreview={describeSpanOutput(asCoreSpan(span))?.type !== 'json'}\n layout=\"details\"\n >\n <SpanOutputRenderer span={span} />\n </SpanPayloadSection>\n <SpanPayloadSection\n title=\"Metadata\"\n icon={<BracesIcon />}\n raw={span.metadata}\n hasPreview={false}\n layout=\"details\"\n >\n {null}\n </SpanPayloadSection>\n <SpanPayloadSection\n title=\"Attributes\"\n icon={<BracesIcon />}\n raw={span.attributes}\n hasPreview={describeProcessorPipeline(asCoreSpan(span)) !== undefined}\n layout=\"details\"\n >\n <SpanProcessorAttributes span={span} />\n </SpanPayloadSection>\n </DataDetailsPanel.Content>\n )}\n </DataDetailsPanel>\n );\n}\n"],"names":["DataDetailsPanel","jsxs","jsx","TraceIdButton","SpanSummaryDescription","Fragment","SpanPayloadSection","SpanErrorRenderer","FileInputIcon","describeSpanInput","asCoreSpan","SpanInputRenderer","FileOutputIcon","describeSpanOutput","SpanOutputRenderer","BracesIcon","describeProcessorPipeline","SpanProcessorAttributes"],"mappings":"
|
|
1
|
+
{"version":3,"file":"span-details-view.cjs.js","sources":["../../../../src/domains/traces/components/span-details-view.tsx"],"sourcesContent":["import { describeProcessorPipeline, describeSpanInput, describeSpanOutput } from '@mastra/core/observability';\nimport { BracesIcon, FileInputIcon, FileOutputIcon } from 'lucide-react';\nimport type { SpanRecord } from '../types';\nimport {\n SpanErrorRenderer,\n SpanInputRenderer,\n SpanOutputRenderer,\n SpanPayloadSection,\n SpanProcessorAttributes,\n} from './span-payload';\nimport { asCoreSpan } from './span-payload/span-payload-registry';\nimport { SpanSummaryDescription } from './span-summary-description';\nimport { TraceIdButton } from './trace-id-button';\nimport { DataDetailsPanel } from '@/ds/components/DataDetailsPanel';\n\nconst KV = DataDetailsPanel.KeyValueList;\n\nexport interface SpanDetailsViewProps {\n spanId: string;\n /** Full span record. Caller fetches via useSpanDetail. */\n span: SpanRecord | undefined;\n isLoading?: boolean;\n onClose: () => void;\n}\n\n/**\n * Compact span panel using `DataDetailsPanel` (popover-style). Shows basic span metadata +\n * input/output/metadata/attributes code sections. Use this for inline span inspection; for the\n * full-width span view with scoring tab + prev/next nav, use `SpanDataPanelView`.\n */\nexport function SpanDetailsView({ spanId, span, isLoading, onClose }: SpanDetailsViewProps) {\n return (\n <DataDetailsPanel>\n <DataDetailsPanel.Header>\n <div className=\"flex min-w-0 flex-1 flex-col gap-1\">\n <DataDetailsPanel.Heading className=\"items-center\">\n Span\n <TraceIdButton id={spanId} />\n </DataDetailsPanel.Heading>\n {span && <SpanSummaryDescription span={span} />}\n </div>\n <DataDetailsPanel.CloseButton onClick={onClose} />\n </DataDetailsPanel.Header>\n\n {isLoading ? (\n <DataDetailsPanel.LoadingData>Loading span...</DataDetailsPanel.LoadingData>\n ) : !span ? (\n <DataDetailsPanel.NoData>Span not found.</DataDetailsPanel.NoData>\n ) : (\n <DataDetailsPanel.Content>\n {span.spanType && (\n <>\n <KV>\n <KV.Key>Type</KV.Key>\n <KV.Value>{span.spanType}</KV.Value>\n </KV>\n <br />\n </>\n )}\n\n <SpanPayloadSection title=\"Error\" raw={span.error} layout=\"details\" className=\"mb-3\">\n <SpanErrorRenderer span={span} />\n </SpanPayloadSection>\n\n <SpanPayloadSection\n title=\"Input\"\n icon={<FileInputIcon />}\n raw={span.input}\n hasPreview={describeSpanInput(asCoreSpan(span))?.type !== 'json'}\n layout=\"details\"\n >\n <SpanInputRenderer span={span} />\n </SpanPayloadSection>\n <SpanPayloadSection\n title=\"Output\"\n icon={<FileOutputIcon />}\n raw={span.output}\n hasPreview={describeSpanOutput(asCoreSpan(span))?.type !== 'json'}\n layout=\"details\"\n >\n <SpanOutputRenderer span={span} />\n </SpanPayloadSection>\n <SpanPayloadSection\n title=\"Metadata\"\n icon={<BracesIcon />}\n raw={span.metadata}\n hasPreview={false}\n layout=\"details\"\n >\n {null}\n </SpanPayloadSection>\n <SpanPayloadSection\n title=\"Attributes\"\n icon={<BracesIcon />}\n raw={span.attributes}\n hasPreview={describeProcessorPipeline(asCoreSpan(span)) !== undefined}\n layout=\"details\"\n >\n <SpanProcessorAttributes span={span} />\n </SpanPayloadSection>\n </DataDetailsPanel.Content>\n )}\n </DataDetailsPanel>\n );\n}\n"],"names":["DataDetailsPanel","jsxs","jsx","TraceIdButton","SpanSummaryDescription","Fragment","SpanPayloadSection","SpanErrorRenderer","FileInputIcon","describeSpanInput","asCoreSpan","SpanInputRenderer","FileOutputIcon","describeSpanOutput","SpanOutputRenderer","BracesIcon","describeProcessorPipeline","SpanProcessorAttributes"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAeA,MAAM,KAAKA,4CAAA,CAAiB,YAAA;AAerB,SAAS,gBAAgB,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,SAAQ,EAAyB;AAC1F,EAAA,uCACGA,4CAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAC,eAAA,CAACD,4CAAA,CAAiB,QAAjB,EACC,QAAA,EAAA;AAAA,sBAAAC,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,oCAAA,EACb,QAAA,EAAA;AAAA,wBAAAA,eAAA,CAACD,4CAAA,CAAiB,OAAA,EAAjB,EAAyB,SAAA,EAAU,cAAA,EAAe,QAAA,EAAA;AAAA,UAAA,MAAA;AAAA,0BAEjDE,cAAA,CAACC,qDAAA,EAAA,EAAc,EAAA,EAAI,MAAA,EAAQ;AAAA,SAAA,EAC7B,CAAA;AAAA,QACC,IAAA,oBAAQD,cAAA,CAACE,uEAAA,EAAA,EAAuB,IAAA,EAAY;AAAA,OAAA,EAC/C,CAAA;AAAA,sBACAF,cAAA,CAACF,4CAAA,CAAiB,WAAA,EAAjB,EAA6B,SAAS,OAAA,EAAS;AAAA,KAAA,EAClD,CAAA;AAAA,IAEC,4BACCE,cAAA,CAACF,4CAAA,CAAiB,aAAjB,EAA6B,QAAA,EAAA,iBAAA,EAAe,IAC3C,CAAC,IAAA,mBACHE,cAAA,CAACF,4CAAA,CAAiB,QAAjB,EAAwB,QAAA,EAAA,iBAAA,EAAe,oBAExCC,eAAA,CAACD,4CAAA,CAAiB,SAAjB,EACE,QAAA,EAAA;AAAA,MAAA,IAAA,CAAK,4BACJC,eAAA,CAAAI,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAAJ,eAAA,CAAC,EAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAAC,cAAA,CAAC,EAAA,CAAG,GAAA,EAAH,EAAO,QAAA,EAAA,MAAA,EAAI,CAAA;AAAA,0BACZA,cAAA,CAAC,EAAA,CAAG,KAAA,EAAH,EAAU,eAAK,QAAA,EAAS;AAAA,SAAA,EAC3B,CAAA;AAAA,uCACC,IAAA,EAAA,EAAG;AAAA,OAAA,EACN,CAAA;AAAA,sBAGFA,cAAA,CAACI,2EAAA,EAAA,EAAmB,KAAA,EAAM,OAAA,EAAQ,KAAK,IAAA,CAAK,KAAA,EAAO,MAAA,EAAO,SAAA,EAAU,SAAA,EAAU,MAAA,EAC5E,QAAA,kBAAAJ,cAAA,CAACK,yEAAA,EAAA,EAAkB,MAAY,CAAA,EACjC,CAAA;AAAA,sBAEAL,cAAA;AAAA,QAACI,2EAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,OAAA;AAAA,UACN,IAAA,iCAAOE,yBAAA,EAAA,EAAc,CAAA;AAAA,UACrB,KAAK,IAAA,CAAK,KAAA;AAAA,UACV,YAAYC,+BAAA,CAAkBC,oEAAA,CAAW,IAAI,CAAC,GAAG,IAAA,KAAS,MAAA;AAAA,UAC1D,MAAA,EAAO,SAAA;AAAA,UAEP,QAAA,kBAAAR,cAAA,CAACS,8EAAkB,IAAA,EAAY;AAAA;AAAA,OACjC;AAAA,sBACAT,cAAA;AAAA,QAACI,2EAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,QAAA;AAAA,UACN,IAAA,iCAAOM,0BAAA,EAAA,EAAe,CAAA;AAAA,UACtB,KAAK,IAAA,CAAK,MAAA;AAAA,UACV,YAAYC,gCAAA,CAAmBH,oEAAA,CAAW,IAAI,CAAC,GAAG,IAAA,KAAS,MAAA;AAAA,UAC3D,MAAA,EAAO,SAAA;AAAA,UAEP,QAAA,kBAAAR,cAAA,CAACY,gFAAmB,IAAA,EAAY;AAAA;AAAA,OAClC;AAAA,sBACAZ,cAAA;AAAA,QAACI,2EAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,UAAA;AAAA,UACN,IAAA,iCAAOS,sBAAA,EAAA,EAAW,CAAA;AAAA,UAClB,KAAK,IAAA,CAAK,QAAA;AAAA,UACV,UAAA,EAAY,KAAA;AAAA,UACZ,MAAA,EAAO,SAAA;AAAA,UAEN,QAAA,EAAA;AAAA;AAAA,OACH;AAAA,sBACAb,cAAA;AAAA,QAACI,2EAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,YAAA;AAAA,UACN,IAAA,iCAAOS,sBAAA,EAAA,EAAW,CAAA;AAAA,UAClB,KAAK,IAAA,CAAK,UAAA;AAAA,UACV,UAAA,EAAYC,uCAAA,CAA0BN,oEAAA,CAAW,IAAI,CAAC,CAAA,KAAM,MAAA;AAAA,UAC5D,MAAA,EAAO,SAAA;AAAA,UAEP,QAAA,kBAAAR,cAAA,CAACe,yFAAwB,IAAA,EAAY;AAAA;AAAA;AACvC,KAAA,EACF;AAAA,GAAA,EAEJ,CAAA;AAEJ;;;;"}
|
|
@@ -9,7 +9,6 @@ import '../../../code-DAXWNzvf.js';
|
|
|
9
9
|
import 'react';
|
|
10
10
|
import '../../chat/attachments/composer-attachment-context.es.js';
|
|
11
11
|
import '@base-ui/react/use-render';
|
|
12
|
-
import '../../../Button-C8QDEN9j.js';
|
|
13
12
|
import '../../chat/context/chat-context.es.js';
|
|
14
13
|
import './span-payload/span-payload-processor.es.js';
|
|
15
14
|
import { SpanProcessorAttributes } from './span-payload/span-processor-attributes.es.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"span-details-view.es.js","sources":["../../../../src/domains/traces/components/span-details-view.tsx"],"sourcesContent":["import { describeProcessorPipeline, describeSpanInput, describeSpanOutput } from '@mastra/core/observability';\nimport { BracesIcon, FileInputIcon, FileOutputIcon } from 'lucide-react';\nimport type { SpanRecord } from '../types';\nimport {\n SpanErrorRenderer,\n SpanInputRenderer,\n SpanOutputRenderer,\n SpanPayloadSection,\n SpanProcessorAttributes,\n} from './span-payload';\nimport { asCoreSpan } from './span-payload/span-payload-registry';\nimport { SpanSummaryDescription } from './span-summary-description';\nimport { TraceIdButton } from './trace-id-button';\nimport { DataDetailsPanel } from '@/ds/components/DataDetailsPanel';\n\nconst KV = DataDetailsPanel.KeyValueList;\n\nexport interface SpanDetailsViewProps {\n spanId: string;\n /** Full span record. Caller fetches via useSpanDetail. */\n span: SpanRecord | undefined;\n isLoading?: boolean;\n onClose: () => void;\n}\n\n/**\n * Compact span panel using `DataDetailsPanel` (popover-style). Shows basic span metadata +\n * input/output/metadata/attributes code sections. Use this for inline span inspection; for the\n * full-width span view with scoring tab + prev/next nav, use `SpanDataPanelView`.\n */\nexport function SpanDetailsView({ spanId, span, isLoading, onClose }: SpanDetailsViewProps) {\n return (\n <DataDetailsPanel>\n <DataDetailsPanel.Header>\n <div className=\"flex min-w-0 flex-1 flex-col gap-1\">\n <DataDetailsPanel.Heading className=\"items-center\">\n Span\n <TraceIdButton id={spanId} />\n </DataDetailsPanel.Heading>\n {span && <SpanSummaryDescription span={span} />}\n </div>\n <DataDetailsPanel.CloseButton onClick={onClose} />\n </DataDetailsPanel.Header>\n\n {isLoading ? (\n <DataDetailsPanel.LoadingData>Loading span...</DataDetailsPanel.LoadingData>\n ) : !span ? (\n <DataDetailsPanel.NoData>Span not found.</DataDetailsPanel.NoData>\n ) : (\n <DataDetailsPanel.Content>\n {span.spanType && (\n <>\n <KV>\n <KV.Key>Type</KV.Key>\n <KV.Value>{span.spanType}</KV.Value>\n </KV>\n <br />\n </>\n )}\n\n <SpanPayloadSection title=\"Error\" raw={span.error} layout=\"details\" className=\"mb-3\">\n <SpanErrorRenderer span={span} />\n </SpanPayloadSection>\n\n <SpanPayloadSection\n title=\"Input\"\n icon={<FileInputIcon />}\n raw={span.input}\n hasPreview={describeSpanInput(asCoreSpan(span))?.type !== 'json'}\n layout=\"details\"\n >\n <SpanInputRenderer span={span} />\n </SpanPayloadSection>\n <SpanPayloadSection\n title=\"Output\"\n icon={<FileOutputIcon />}\n raw={span.output}\n hasPreview={describeSpanOutput(asCoreSpan(span))?.type !== 'json'}\n layout=\"details\"\n >\n <SpanOutputRenderer span={span} />\n </SpanPayloadSection>\n <SpanPayloadSection\n title=\"Metadata\"\n icon={<BracesIcon />}\n raw={span.metadata}\n hasPreview={false}\n layout=\"details\"\n >\n {null}\n </SpanPayloadSection>\n <SpanPayloadSection\n title=\"Attributes\"\n icon={<BracesIcon />}\n raw={span.attributes}\n hasPreview={describeProcessorPipeline(asCoreSpan(span)) !== undefined}\n layout=\"details\"\n >\n <SpanProcessorAttributes span={span} />\n </SpanPayloadSection>\n </DataDetailsPanel.Content>\n )}\n </DataDetailsPanel>\n );\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"span-details-view.es.js","sources":["../../../../src/domains/traces/components/span-details-view.tsx"],"sourcesContent":["import { describeProcessorPipeline, describeSpanInput, describeSpanOutput } from '@mastra/core/observability';\nimport { BracesIcon, FileInputIcon, FileOutputIcon } from 'lucide-react';\nimport type { SpanRecord } from '../types';\nimport {\n SpanErrorRenderer,\n SpanInputRenderer,\n SpanOutputRenderer,\n SpanPayloadSection,\n SpanProcessorAttributes,\n} from './span-payload';\nimport { asCoreSpan } from './span-payload/span-payload-registry';\nimport { SpanSummaryDescription } from './span-summary-description';\nimport { TraceIdButton } from './trace-id-button';\nimport { DataDetailsPanel } from '@/ds/components/DataDetailsPanel';\n\nconst KV = DataDetailsPanel.KeyValueList;\n\nexport interface SpanDetailsViewProps {\n spanId: string;\n /** Full span record. Caller fetches via useSpanDetail. */\n span: SpanRecord | undefined;\n isLoading?: boolean;\n onClose: () => void;\n}\n\n/**\n * Compact span panel using `DataDetailsPanel` (popover-style). Shows basic span metadata +\n * input/output/metadata/attributes code sections. Use this for inline span inspection; for the\n * full-width span view with scoring tab + prev/next nav, use `SpanDataPanelView`.\n */\nexport function SpanDetailsView({ spanId, span, isLoading, onClose }: SpanDetailsViewProps) {\n return (\n <DataDetailsPanel>\n <DataDetailsPanel.Header>\n <div className=\"flex min-w-0 flex-1 flex-col gap-1\">\n <DataDetailsPanel.Heading className=\"items-center\">\n Span\n <TraceIdButton id={spanId} />\n </DataDetailsPanel.Heading>\n {span && <SpanSummaryDescription span={span} />}\n </div>\n <DataDetailsPanel.CloseButton onClick={onClose} />\n </DataDetailsPanel.Header>\n\n {isLoading ? (\n <DataDetailsPanel.LoadingData>Loading span...</DataDetailsPanel.LoadingData>\n ) : !span ? (\n <DataDetailsPanel.NoData>Span not found.</DataDetailsPanel.NoData>\n ) : (\n <DataDetailsPanel.Content>\n {span.spanType && (\n <>\n <KV>\n <KV.Key>Type</KV.Key>\n <KV.Value>{span.spanType}</KV.Value>\n </KV>\n <br />\n </>\n )}\n\n <SpanPayloadSection title=\"Error\" raw={span.error} layout=\"details\" className=\"mb-3\">\n <SpanErrorRenderer span={span} />\n </SpanPayloadSection>\n\n <SpanPayloadSection\n title=\"Input\"\n icon={<FileInputIcon />}\n raw={span.input}\n hasPreview={describeSpanInput(asCoreSpan(span))?.type !== 'json'}\n layout=\"details\"\n >\n <SpanInputRenderer span={span} />\n </SpanPayloadSection>\n <SpanPayloadSection\n title=\"Output\"\n icon={<FileOutputIcon />}\n raw={span.output}\n hasPreview={describeSpanOutput(asCoreSpan(span))?.type !== 'json'}\n layout=\"details\"\n >\n <SpanOutputRenderer span={span} />\n </SpanPayloadSection>\n <SpanPayloadSection\n title=\"Metadata\"\n icon={<BracesIcon />}\n raw={span.metadata}\n hasPreview={false}\n layout=\"details\"\n >\n {null}\n </SpanPayloadSection>\n <SpanPayloadSection\n title=\"Attributes\"\n icon={<BracesIcon />}\n raw={span.attributes}\n hasPreview={describeProcessorPipeline(asCoreSpan(span)) !== undefined}\n layout=\"details\"\n >\n <SpanProcessorAttributes span={span} />\n </SpanPayloadSection>\n </DataDetailsPanel.Content>\n )}\n </DataDetailsPanel>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAeA,MAAM,KAAK,gBAAA,CAAiB,YAAA;AAerB,SAAS,gBAAgB,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,SAAQ,EAAyB;AAC1F,EAAA,4BACG,gBAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,gBAAA,CAAiB,QAAjB,EACC,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,oCAAA,EACb,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,gBAAA,CAAiB,OAAA,EAAjB,EAAyB,SAAA,EAAU,cAAA,EAAe,QAAA,EAAA;AAAA,UAAA,MAAA;AAAA,0BAEjD,GAAA,CAAC,aAAA,EAAA,EAAc,EAAA,EAAI,MAAA,EAAQ;AAAA,SAAA,EAC7B,CAAA;AAAA,QACC,IAAA,oBAAQ,GAAA,CAAC,sBAAA,EAAA,EAAuB,IAAA,EAAY;AAAA,OAAA,EAC/C,CAAA;AAAA,sBACA,GAAA,CAAC,gBAAA,CAAiB,WAAA,EAAjB,EAA6B,SAAS,OAAA,EAAS;AAAA,KAAA,EAClD,CAAA;AAAA,IAEC,4BACC,GAAA,CAAC,gBAAA,CAAiB,aAAjB,EAA6B,QAAA,EAAA,iBAAA,EAAe,IAC3C,CAAC,IAAA,mBACH,GAAA,CAAC,gBAAA,CAAiB,QAAjB,EAAwB,QAAA,EAAA,iBAAA,EAAe,oBAExC,IAAA,CAAC,gBAAA,CAAiB,SAAjB,EACE,QAAA,EAAA;AAAA,MAAA,IAAA,CAAK,4BACJ,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,EAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,EAAA,CAAG,GAAA,EAAH,EAAO,QAAA,EAAA,MAAA,EAAI,CAAA;AAAA,0BACZ,GAAA,CAAC,EAAA,CAAG,KAAA,EAAH,EAAU,eAAK,QAAA,EAAS;AAAA,SAAA,EAC3B,CAAA;AAAA,4BACC,IAAA,EAAA,EAAG;AAAA,OAAA,EACN,CAAA;AAAA,sBAGF,GAAA,CAAC,kBAAA,EAAA,EAAmB,KAAA,EAAM,OAAA,EAAQ,KAAK,IAAA,CAAK,KAAA,EAAO,MAAA,EAAO,SAAA,EAAU,SAAA,EAAU,MAAA,EAC5E,QAAA,kBAAA,GAAA,CAAC,iBAAA,EAAA,EAAkB,MAAY,CAAA,EACjC,CAAA;AAAA,sBAEA,GAAA;AAAA,QAAC,kBAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,OAAA;AAAA,UACN,IAAA,sBAAO,aAAA,EAAA,EAAc,CAAA;AAAA,UACrB,KAAK,IAAA,CAAK,KAAA;AAAA,UACV,YAAY,iBAAA,CAAkB,UAAA,CAAW,IAAI,CAAC,GAAG,IAAA,KAAS,MAAA;AAAA,UAC1D,MAAA,EAAO,SAAA;AAAA,UAEP,QAAA,kBAAA,GAAA,CAAC,qBAAkB,IAAA,EAAY;AAAA;AAAA,OACjC;AAAA,sBACA,GAAA;AAAA,QAAC,kBAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,QAAA;AAAA,UACN,IAAA,sBAAO,cAAA,EAAA,EAAe,CAAA;AAAA,UACtB,KAAK,IAAA,CAAK,MAAA;AAAA,UACV,YAAY,kBAAA,CAAmB,UAAA,CAAW,IAAI,CAAC,GAAG,IAAA,KAAS,MAAA;AAAA,UAC3D,MAAA,EAAO,SAAA;AAAA,UAEP,QAAA,kBAAA,GAAA,CAAC,sBAAmB,IAAA,EAAY;AAAA;AAAA,OAClC;AAAA,sBACA,GAAA;AAAA,QAAC,kBAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,UAAA;AAAA,UACN,IAAA,sBAAO,UAAA,EAAA,EAAW,CAAA;AAAA,UAClB,KAAK,IAAA,CAAK,QAAA;AAAA,UACV,UAAA,EAAY,KAAA;AAAA,UACZ,MAAA,EAAO,SAAA;AAAA,UAEN,QAAA,EAAA;AAAA;AAAA,OACH;AAAA,sBACA,GAAA;AAAA,QAAC,kBAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,YAAA;AAAA,UACN,IAAA,sBAAO,UAAA,EAAA,EAAW,CAAA;AAAA,UAClB,KAAK,IAAA,CAAK,UAAA;AAAA,UACV,UAAA,EAAY,yBAAA,CAA0B,UAAA,CAAW,IAAI,CAAC,CAAA,KAAM,MAAA;AAAA,UAC5D,MAAA,EAAO,SAAA;AAAA,UAEP,QAAA,kBAAA,GAAA,CAAC,2BAAwB,IAAA,EAAY;AAAA;AAAA;AACvC,KAAA,EACF;AAAA,GAAA,EAEJ,CAAA;AAEJ;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import { describeSpanError } from '@mastra/core/observability';
|
|
3
3
|
import { SpanPayloadJson } from './span-payload-json.es.js';
|
|
4
|
-
import { c as SpanPayloadCollapsible } from '../../../../span-payload-primitives-
|
|
4
|
+
import { c as SpanPayloadCollapsible } from '../../../../span-payload-primitives-Cixom2Py.js';
|
|
5
5
|
import { asCoreSpan } from './span-payload-registry.es.js';
|
|
6
6
|
import { D as DataKeysAndValues } from '../../../../data-keys-and-values-B1u00ihh.js';
|
|
7
7
|
import { N as Notice } from '../../../../Notice-Wy1grdLu.js';
|
|
@@ -2,7 +2,7 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
|
2
2
|
import { describeSpanInput } from '@mastra/core/observability';
|
|
3
3
|
import { SpanPayloadJson } from './span-payload-json.es.js';
|
|
4
4
|
import { SpanPayloadMessages } from './span-payload-messages.es.js';
|
|
5
|
-
import { S as SpanPayloadField, a as SpanPayloadMarkdown } from '../../../../span-payload-primitives-
|
|
5
|
+
import { S as SpanPayloadField, a as SpanPayloadMarkdown } from '../../../../span-payload-primitives-Cixom2Py.js';
|
|
6
6
|
import { SpanPayloadProcessor } from './span-payload-processor.es.js';
|
|
7
7
|
import { asCoreSpan, pickRenderer } from './span-payload-registry.es.js';
|
|
8
8
|
import { C as Card, a as CardContent } from '../../../../Card-BQtRz0KD.js';
|
|
@@ -2,10 +2,10 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
|
2
2
|
import { describeSpanOutput } from '@mastra/core/observability';
|
|
3
3
|
import { SpanPayloadAttachment } from './span-payload-attachment.es.js';
|
|
4
4
|
import { SpanPayloadJson } from './span-payload-json.es.js';
|
|
5
|
-
import { a as SpanPayloadMarkdown, S as SpanPayloadField, b as SpanPayloadToolCalls, c as SpanPayloadCollapsible } from '../../../../span-payload-primitives-
|
|
5
|
+
import { a as SpanPayloadMarkdown, S as SpanPayloadField, b as SpanPayloadToolCalls, c as SpanPayloadCollapsible } from '../../../../span-payload-primitives-Cixom2Py.js';
|
|
6
6
|
import { SpanPayloadProcessor } from './span-payload-processor.es.js';
|
|
7
7
|
import { asCoreSpan, pickRenderer, hasItems } from './span-payload-registry.es.js';
|
|
8
|
-
import { R as ReasoningActivity } from '../../../../reasoning-activity-
|
|
8
|
+
import { R as ReasoningActivity } from '../../../../reasoning-activity-B1r4JQxm.js';
|
|
9
9
|
import { C as Card, a as CardContent } from '../../../../Card-BQtRz0KD.js';
|
|
10
10
|
import { D as DataKeysAndValues } from '../../../../data-keys-and-values-B1u00ihh.js';
|
|
11
11
|
import { I as InlineCode } from '../../../../inline-code-DMYc7Ng2.js';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import { SpanPayloadAttachment } from './span-payload-attachment.es.js';
|
|
3
3
|
import { SpanPayloadJson } from './span-payload-json.es.js';
|
|
4
|
-
import { d as SpanPayloadLabel, a as SpanPayloadMarkdown, e as SpanPayloadTool } from '../../../../span-payload-primitives-
|
|
5
|
-
import { R as ReasoningActivity } from '../../../../reasoning-activity-
|
|
4
|
+
import { d as SpanPayloadLabel, a as SpanPayloadMarkdown, e as SpanPayloadTool } from '../../../../span-payload-primitives-Cixom2Py.js';
|
|
5
|
+
import { R as ReasoningActivity } from '../../../../reasoning-activity-B1r4JQxm.js';
|
|
6
6
|
import { a as Message } from '../../../../message-C2s3YTLa.js';
|
|
7
7
|
|
|
8
8
|
const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import 'react/jsx-runtime';
|
|
2
|
-
export { c as SpanPayloadCollapsible, S as SpanPayloadField, d as SpanPayloadLabel, a as SpanPayloadMarkdown, b as SpanPayloadToolCalls } from '../../../../span-payload-primitives-
|
|
2
|
+
export { c as SpanPayloadCollapsible, S as SpanPayloadField, d as SpanPayloadLabel, a as SpanPayloadMarkdown, b as SpanPayloadToolCalls } from '../../../../span-payload-primitives-Cixom2Py.js';
|
|
3
3
|
import '../../../../collapsible-DglEffBF.js';
|
|
4
4
|
import '../../../../disclosure-chevron-BWZ8Alz1.js';
|
|
5
|
-
import '../../../../markdown-renderer-
|
|
5
|
+
import '../../../../markdown-renderer-Cly6VMDr.js';
|
|
6
6
|
import '../../../../Txt-BuzYj7Vy.js';
|
|
7
7
|
//# sourceMappingURL=span-payload-primitives.es.js.map
|
|
@@ -2,7 +2,7 @@ import { jsxs, jsx } from 'react/jsx-runtime';
|
|
|
2
2
|
import { Fragment } from 'react';
|
|
3
3
|
import { SpanPayloadJson } from './span-payload-json.es.js';
|
|
4
4
|
import { SpanPayloadMessages } from './span-payload-messages.es.js';
|
|
5
|
-
import { S as SpanPayloadField, b as SpanPayloadToolCalls, a as SpanPayloadMarkdown, c as SpanPayloadCollapsible } from '../../../../span-payload-primitives-
|
|
5
|
+
import { S as SpanPayloadField, b as SpanPayloadToolCalls, a as SpanPayloadMarkdown, c as SpanPayloadCollapsible } from '../../../../span-payload-primitives-Cixom2Py.js';
|
|
6
6
|
import { hasItems } from './span-payload-registry.es.js';
|
|
7
7
|
import { D as DataKeysAndValues } from '../../../../data-keys-and-values-B1u00ihh.js';
|
|
8
8
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import 'react/jsx-runtime';
|
|
2
2
|
import './span-payload-json.es.js';
|
|
3
|
-
export { e as SpanPayloadTool } from '../../../../span-payload-primitives-
|
|
3
|
+
export { e as SpanPayloadTool } from '../../../../span-payload-primitives-Cixom2Py.js';
|
|
4
4
|
import '../../../chat/components/badge-wrapper.es.js';
|
|
5
5
|
import '../../../../activity-BsrB5ADa.js';
|
|
6
6
|
import '../../../../tool-presentation-BXAo24Ir.js';
|
|
@@ -2,7 +2,7 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
|
2
2
|
import { describeProcessorPipeline } from '@mastra/core/observability';
|
|
3
3
|
import { SpanPayloadJson } from './span-payload-json.es.js';
|
|
4
4
|
import { SpanPayloadMessages } from './span-payload-messages.es.js';
|
|
5
|
-
import { c as SpanPayloadCollapsible, S as SpanPayloadField } from '../../../../span-payload-primitives-
|
|
5
|
+
import { c as SpanPayloadCollapsible, S as SpanPayloadField } from '../../../../span-payload-primitives-Cixom2Py.js';
|
|
6
6
|
import { asCoreSpan } from './span-payload-registry.es.js';
|
|
7
7
|
import { C as Card, a as CardContent } from '../../../../Card-BQtRz0KD.js';
|
|
8
8
|
import { D as DataKeysAndValues } from '../../../../data-keys-and-values-B1u00ihh.js';
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
5
5
|
const jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
const lucideReact = require('lucide-react');
|
|
7
7
|
const domains_traces_utils_spanUtils = require('../utils/span-utils.cjs.js');
|
|
8
|
-
const dataPanel = require('../../../data-panel-
|
|
8
|
+
const dataPanel = require('../../../data-panel-Dhg7s3fD.cjs');
|
|
9
9
|
const utils_truncateString = require('../../../utils/truncate-string.cjs.js');
|
|
10
10
|
const utils_dateFormat = require('../../../utils/date-format.cjs.js');
|
|
11
11
|
const utils_duration = require('../../../utils/duration.cjs.js');
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { CalendarClockIcon, TimerIcon, HashIcon } from 'lucide-react';
|
|
3
3
|
import { getSpanDurationMs } from '../utils/span-utils.es.js';
|
|
4
|
-
import { D as DataPanel } from '../../../data-panel-
|
|
4
|
+
import { D as DataPanel } from '../../../data-panel-DfVGx0Ea.js';
|
|
5
5
|
import { truncateString } from '../../../utils/truncate-string.es.js';
|
|
6
6
|
import { formatDate, formatTimestampPrecise } from '../../../utils/date-format.es.js';
|
|
7
7
|
import { formatDurationPrecise } from '../../../utils/duration.es.js';
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
5
5
|
const jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
const domains_traces_components_threadTrace_threadTraceRowContext = require('./thread-trace-row-context.cjs.js');
|
|
7
7
|
const Card = require('../../../../Card-RlL14eS5.cjs');
|
|
8
|
-
const dataPanel = require('../../../../data-panel-
|
|
8
|
+
const dataPanel = require('../../../../data-panel-Dhg7s3fD.cjs');
|
|
9
9
|
const utils_cn = require('../../../../cn-TqD01zH-.cjs');
|
|
10
10
|
|
|
11
11
|
function ThreadTraceDetails({ className, children, ...props }) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { useThreadTraceRow } from './thread-trace-row-context.es.js';
|
|
3
3
|
import { C as Card } from '../../../../Card-BQtRz0KD.js';
|
|
4
|
-
import { D as DataPanel } from '../../../../data-panel-
|
|
4
|
+
import { D as DataPanel } from '../../../../data-panel-DfVGx0Ea.js';
|
|
5
5
|
import { c as cn } from '../../../../cn-coERSHz5.js';
|
|
6
6
|
|
|
7
7
|
function ThreadTraceDetails({ className, children, ...props }) {
|
|
@@ -10,12 +10,10 @@ const lucideReact = require('lucide-react');
|
|
|
10
10
|
const React = require('react');
|
|
11
11
|
require('@mastra/react/hooks/scores');
|
|
12
12
|
require('@base-ui/react/combobox');
|
|
13
|
-
require('../../../toast-C8a7bWV8.cjs');
|
|
14
13
|
const domains_scores_components_traceScoresTab = require('../../scores/components/trace-scores-tab.cjs.js');
|
|
15
14
|
require('@mastra/core/utils/safe-stringify');
|
|
16
15
|
require('@mastra/react/hooks/datasets');
|
|
17
16
|
const Button = require('../../../Button-BfZzgZrA.cjs');
|
|
18
|
-
require('../../../field-control-aria-WzMGs0A4.cjs');
|
|
19
17
|
const Txt = require('../../../Txt-DXjXpX9r.cjs');
|
|
20
18
|
const lib_framework = require('../../../lib/framework.cjs.js');
|
|
21
19
|
const domains_traces_components_threadTrace = require('./thread-trace.cjs.js');
|