@mastra/playground-ui 65.0.0-alpha.8 → 65.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ask-user-card-DnvW7jXS.js → ask-user-card-B9q_GFTt.js} +2 -2
- package/dist/{ask-user-card-DnvW7jXS.js.map → ask-user-card-B9q_GFTt.js.map} +1 -1
- package/dist/{ask-user-card-DiFQcUzM.cjs → ask-user-card-C-N5rpYG.cjs} +2 -2
- package/dist/{ask-user-card-DiFQcUzM.cjs.map → ask-user-card-C-N5rpYG.cjs.map} +1 -1
- package/dist/{code-block-CAV4Flrx.cjs → code-block-BSJzgBt1.cjs} +2 -2
- package/dist/{code-block-CAV4Flrx.cjs.map → code-block-BSJzgBt1.cjs.map} +1 -1
- package/dist/{code-block-BB-5HSl3.js → code-block-JWCkGm3Q.js} +2 -2
- package/dist/{code-block-BB-5HSl3.js.map → code-block-JWCkGm3Q.js.map} +1 -1
- package/dist/{code-editor-CbyCb7CW.cjs → code-editor-4ukTuvqG.cjs} +18 -2
- package/dist/code-editor-4ukTuvqG.cjs.map +1 -0
- package/dist/{code-editor-DOv4jc-0.js → code-editor-8qu58Npy.js} +18 -2
- package/dist/code-editor-8qu58Npy.js.map +1 -0
- package/dist/{combobox-BCoCVZHs.js → combobox-Cff50hgT.js} +37 -49
- package/dist/combobox-Cff50hgT.js.map +1 -0
- package/dist/{combobox-DbZAWh8q.cjs → combobox-RlGW9Erz.cjs} +37 -49
- package/dist/combobox-RlGW9Erz.cjs.map +1 -0
- package/dist/components/BillingIllustration.cjs.js +524 -1
- package/dist/components/BillingIllustration.cjs.js.map +1 -1
- package/dist/components/BillingIllustration.es.js +524 -1
- package/dist/components/BillingIllustration.es.js.map +1 -1
- package/dist/components/Button.cjs.js +1 -1
- package/dist/components/Button.es.js +1 -1
- package/dist/components/CodeBlock.cjs.js +1 -1
- package/dist/components/CodeBlock.es.js +1 -1
- package/dist/components/CodeEditor.cjs.js +1 -1
- package/dist/components/CodeEditor.es.js +1 -1
- package/dist/components/Combobox.cjs.js +1 -1
- package/dist/components/Combobox.es.js +1 -1
- package/dist/components/CommandPalette.cjs.js +1 -1
- package/dist/components/CommandPalette.es.js +1 -1
- package/dist/components/Comment.cjs.js +1 -1
- package/dist/components/Comment.es.js +1 -1
- package/dist/components/DataCodeSection.cjs.js +1 -1
- package/dist/components/DataCodeSection.es.js +1 -1
- package/dist/components/DataList.cjs.js +15 -17
- package/dist/components/DataList.cjs.js.map +1 -1
- package/dist/components/DataList.es.js +4 -5
- package/dist/components/DataList.es.js.map +1 -1
- package/dist/components/DataPanel.cjs.js +1 -1
- package/dist/components/DataPanel.es.js +1 -1
- package/dist/components/DateTimePicker.cjs.js +2 -2
- package/dist/components/DateTimePicker.es.js +2 -2
- package/dist/components/DateTimeRangePicker.cjs.js +1 -1
- package/dist/components/DateTimeRangePicker.es.js +1 -1
- package/dist/components/EnvironmentVariablesEditor.cjs.js +2 -2
- package/dist/components/EnvironmentVariablesEditor.es.js +2 -2
- package/dist/components/Field.cjs.js +1 -1
- package/dist/components/Field.es.js +1 -1
- package/dist/components/FilterBar.cjs.js +8 -844
- package/dist/components/FilterBar.cjs.js.map +1 -1
- package/dist/components/FilterBar.es.js +4 -841
- package/dist/components/FilterBar.es.js.map +1 -1
- package/dist/components/FormFieldBlocks.cjs.js +1 -1
- package/dist/components/FormFieldBlocks.es.js +1 -1
- package/dist/components/JSONSchemaForm.cjs.js +2 -2
- package/dist/components/JSONSchemaForm.es.js +2 -2
- package/dist/components/Kbd.cjs.js +1 -1
- package/dist/components/Kbd.es.js +1 -1
- package/dist/components/ListSearch.cjs.js +1 -1
- package/dist/components/ListSearch.es.js +1 -1
- package/dist/components/LogsDataList.cjs.js +5 -2
- package/dist/components/LogsDataList.cjs.js.map +1 -1
- package/dist/components/LogsDataList.es.js +5 -2
- package/dist/components/LogsDataList.es.js.map +1 -1
- package/dist/components/MarkdownRenderer.cjs.js +1 -1
- package/dist/components/MarkdownRenderer.es.js +1 -1
- package/dist/components/PageLayout.cjs.js +3 -56
- package/dist/components/PageLayout.cjs.js.map +1 -1
- package/dist/components/PageLayout.es.js +1 -58
- package/dist/components/PageLayout.es.js.map +1 -1
- package/dist/components/PropertyFilter.cjs.js +2 -2
- package/dist/components/PropertyFilter.es.js +2 -2
- package/dist/components/RuleBuilder.cjs.js +1 -1
- package/dist/components/RuleBuilder.es.js +1 -1
- package/dist/components/SavedViews.cjs.js +1 -1
- package/dist/components/SavedViews.es.js +1 -1
- package/dist/components/SearchInput.cjs.js +1 -1
- package/dist/components/SearchInput.es.js +1 -1
- package/dist/components/Section.cjs.js +1 -1
- package/dist/components/Section.es.js +1 -1
- package/dist/components/Select.cjs.js +2 -1
- package/dist/components/Select.cjs.js.map +1 -1
- package/dist/components/Select.es.js +1 -1
- package/dist/components/SideDialog.cjs.js +225 -2
- package/dist/components/SideDialog.cjs.js.map +1 -1
- package/dist/components/SideDialog.es.js +210 -1
- package/dist/components/SideDialog.es.js.map +1 -1
- package/dist/components/Sidebar.cjs.js +64 -60
- package/dist/components/Sidebar.cjs.js.map +1 -1
- package/dist/components/Sidebar.es.js +65 -62
- package/dist/components/Sidebar.es.js.map +1 -1
- package/dist/components/Workflow.cjs.js +3 -3
- package/dist/components/Workflow.es.js +3 -3
- package/dist/components/ai/activity.cjs.js +2 -2
- package/dist/components/ai/activity.es.js +2 -2
- package/dist/components/ai/ask-user.cjs.js +1 -1
- package/dist/components/ai/ask-user.es.js +1 -1
- package/dist/components/ai/plan.cjs.js +1 -1
- package/dist/components/ai/plan.es.js +1 -1
- package/dist/components/ai/tool-approval.cjs.js +1 -1
- package/dist/components/ai/tool-approval.es.js +1 -1
- package/dist/components/ai/tool-call.cjs.js +1 -1
- package/dist/components/ai/tool-call.es.js +1 -1
- package/dist/{data-code-section-BjyHoHEB.cjs → data-code-section-BsvdKW08.cjs} +2 -2
- package/dist/{data-code-section-BjyHoHEB.cjs.map → data-code-section-BsvdKW08.cjs.map} +1 -1
- package/dist/{data-code-section-BWzfg-1n.js → data-code-section-y1BMLr3c.js} +2 -2
- package/dist/{data-code-section-BWzfg-1n.js.map → data-code-section-y1BMLr3c.js.map} +1 -1
- package/dist/{data-list-top-DJh08vFA.cjs → data-list-4t6Ueon8.cjs} +365 -16
- package/dist/data-list-4t6Ueon8.cjs.map +1 -0
- package/dist/{data-list-top-T-mtdIUp.js → data-list-BQMBFAyK.js} +357 -7
- package/dist/data-list-BQMBFAyK.js.map +1 -0
- package/dist/{data-list-skeleton-sdcaabdX.cjs → data-list-skeleton-CVXZYY0k.cjs} +6 -6
- package/dist/{data-list-skeleton-sdcaabdX.cjs.map → data-list-skeleton-CVXZYY0k.cjs.map} +1 -1
- package/dist/{data-list-skeleton-bNfITSHs.js → data-list-skeleton-D54r1ycU.js} +3 -3
- package/dist/{data-list-skeleton-bNfITSHs.js.map → data-list-skeleton-D54r1ycU.js.map} +1 -1
- package/dist/{data-panel-CUqcB4Vn.js → data-panel-DSgidnnv.js} +2 -2
- package/dist/{data-panel-CUqcB4Vn.js.map → data-panel-DSgidnnv.js.map} +1 -1
- package/dist/{data-panel-CGRPVnEe.cjs → data-panel-xqrai98b.cjs} +2 -2
- package/dist/{data-panel-CGRPVnEe.cjs.map → data-panel-xqrai98b.cjs.map} +1 -1
- package/dist/{date-time-range-picker-CcnDMZJu.js → date-time-range-picker-BnYWCqei.js} +3 -3
- package/dist/{date-time-range-picker-CcnDMZJu.js.map → date-time-range-picker-BnYWCqei.js.map} +1 -1
- package/dist/{date-time-range-picker-CXGab8Nj.cjs → date-time-range-picker-_2RJBOUn.cjs} +3 -3
- package/dist/{date-time-range-picker-CXGab8Nj.cjs.map → date-time-range-picker-_2RJBOUn.cjs.map} +1 -1
- package/dist/domains/capabilities.cjs.js +4 -0
- package/dist/domains/capabilities.cjs.js.map +1 -1
- package/dist/domains/capabilities.es.js +1 -1
- package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +1 -1
- package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +1 -1
- package/dist/domains/chat/messages/dataset-save-action.cjs.js +4 -3
- package/dist/domains/chat/messages/dataset-save-action.cjs.js.map +1 -1
- package/dist/domains/chat/messages/dataset-save-action.es.js +4 -3
- package/dist/domains/chat/messages/dataset-save-action.es.js.map +1 -1
- package/dist/domains/chat/messages/message-row.cjs.js +1 -1
- package/dist/domains/chat/messages/message-row.es.js +1 -1
- package/dist/domains/chat/messages/notification-signal-notice.cjs.js +23 -3
- package/dist/domains/chat/messages/notification-signal-notice.cjs.js.map +1 -1
- package/dist/domains/chat/messages/notification-signal-notice.es.js +24 -6
- package/dist/domains/chat/messages/notification-signal-notice.es.js.map +1 -1
- package/dist/domains/chat/messages/renderers/message-text.cjs.js +1 -1
- package/dist/domains/chat/messages/renderers/message-text.es.js +1 -1
- package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
- package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
- package/dist/domains/chat/messages/signal-data.cjs.js +12 -0
- package/dist/domains/chat/messages/signal-data.cjs.js.map +1 -1
- package/dist/domains/chat/messages/signal-data.es.js +12 -1
- package/dist/domains/chat/messages/signal-data.es.js.map +1 -1
- package/dist/domains/chat/messages/skill-message.cjs.js +1 -1
- package/dist/domains/chat/messages/skill-message.es.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge.cjs.js +2 -2
- package/dist/domains/chat/tools/badges/agent-badge.es.js +2 -2
- package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/background-task-metadata-dialog.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js +1 -1
- package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +2 -2
- package/dist/domains/chat/tools/badges/code-mode-badge.es.js +2 -2
- package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/file-tree-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-details.es.js +1 -1
- package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
- package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/tool-badge.cjs.js +2 -2
- package/dist/domains/chat/tools/badges/tool-badge.es.js +2 -2
- package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +5 -1
- package/dist/domains/chat/tools/badges/workflow-badge.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/workflow-badge.es.js +5 -1
- package/dist/domains/chat/tools/badges/workflow-badge.es.js.map +1 -1
- package/dist/domains/chat/tools/submit-plan-tool.cjs.js +1 -1
- package/dist/domains/chat/tools/submit-plan-tool.es.js +1 -1
- package/dist/domains/chat/tools/tool-card.cjs.js +1 -1
- package/dist/domains/chat/tools/tool-card.es.js +1 -1
- package/dist/domains/chat.cjs.js +1 -0
- package/dist/domains/chat.cjs.js.map +1 -1
- package/dist/domains/chat.es.js +1 -1
- package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.cjs.js +334 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.cjs.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.d.ts +2 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.es.js +330 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.es.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/build-add-item-payload.cjs.js +78 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/build-add-item-payload.cjs.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/build-add-item-payload.d.ts +2 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/build-add-item-payload.es.js +74 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/build-add-item-payload.es.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/collapsible-settings-row.cjs.js +25 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/collapsible-settings-row.cjs.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/collapsible-settings-row.d.ts +2 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/collapsible-settings-row.es.js +21 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/collapsible-settings-row.es.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-field-errors.cjs.js +22 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-field-errors.cjs.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-field-errors.d.ts +2 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-field-errors.es.js +18 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-field-errors.es.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-picker.cjs.js +54 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-picker.cjs.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-picker.d.ts +2 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-picker.es.js +50 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-picker.es.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/field-errors.cjs.js +21 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/field-errors.cjs.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/field-errors.d.ts +2 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/field-errors.es.js +17 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/field-errors.es.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.cjs.js +180 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.cjs.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.d.ts +2 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.es.js +176 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.es.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-types.cjs.js +57 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-types.cjs.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-types.d.ts +2 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-types.es.js +45 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-types.es.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/use-target-agent-tools.cjs.js +17 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/use-target-agent-tools.cjs.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/use-target-agent-tools.d.ts +2 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/use-target-agent-tools.es.js +13 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog/use-target-agent-tools.es.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog.cjs.js +10 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog.cjs.js.map +1 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog.d.ts +2 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog.es.js +2 -0
- package/dist/domains/datasets/components/add-dataset-item-dialog.es.js.map +1 -0
- package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js +4 -4
- package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js +4 -4
- package/dist/domains/datasets/components.cjs.js +2 -0
- package/dist/domains/datasets/components.cjs.js.map +1 -1
- package/dist/domains/datasets/components.es.js +1 -0
- package/dist/domains/datasets/components.es.js.map +1 -1
- package/dist/domains/datasets.cjs.js +2 -0
- package/dist/domains/datasets.cjs.js.map +1 -1
- package/dist/domains/datasets.es.js +1 -0
- package/dist/domains/datasets.es.js.map +1 -1
- package/dist/domains/logs/components/log-data-panel.cjs.js +1 -1
- package/dist/domains/logs/components/log-data-panel.es.js +1 -1
- package/dist/domains/logs/components/logs-list-view.cjs.js +3 -2
- package/dist/domains/logs/components/logs-list-view.cjs.js.map +1 -1
- package/dist/domains/logs/components/logs-list-view.es.js +3 -2
- package/dist/domains/logs/components/logs-list-view.es.js.map +1 -1
- package/dist/domains/logs/hooks/use-logs-filter-persistence.cjs.js.map +1 -1
- package/dist/domains/logs/hooks/use-logs-filter-persistence.es.js.map +1 -1
- package/dist/domains/logs/hooks/use-logs-url-state.cjs.js.map +1 -1
- package/dist/domains/logs/hooks/use-logs-url-state.es.js.map +1 -1
- package/dist/domains/memory/components/observation-detail-view.cjs.js +1 -1
- package/dist/domains/memory/components/observation-detail-view.es.js +1 -1
- package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
- package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
- package/dist/domains/metrics/drilldown.cjs.js +1 -1
- package/dist/domains/metrics/drilldown.es.js +1 -1
- package/dist/domains/metrics/metrics-filters.cjs.js +1 -1
- package/dist/domains/metrics/metrics-filters.es.js +1 -1
- package/dist/domains/observability/components/trace-as-item-dialog.cjs.js +45 -38
- package/dist/domains/observability/components/trace-as-item-dialog.cjs.js.map +1 -1
- package/dist/domains/observability/components/trace-as-item-dialog.es.js +45 -38
- package/dist/domains/observability/components/trace-as-item-dialog.es.js.map +1 -1
- package/dist/domains/scores/components/score-as-item-dialog.cjs.js +1 -0
- package/dist/domains/scores/components/score-as-item-dialog.cjs.js.map +1 -1
- package/dist/domains/scores/components/score-as-item-dialog.es.js +1 -0
- package/dist/domains/scores/components/score-as-item-dialog.es.js.map +1 -1
- package/dist/domains/scores/components/score-data-panel.cjs.js +1 -1
- package/dist/domains/scores/components/score-data-panel.es.js +1 -1
- package/dist/domains/scores/components/span-scoring.cjs.js +1 -1
- package/dist/domains/scores/components/span-scoring.es.js +1 -1
- package/dist/domains/scores/components/trace-scores-tab.cjs.js +2 -1
- package/dist/domains/scores/components/trace-scores-tab.cjs.js.map +1 -1
- package/dist/domains/scores/components/trace-scores-tab.es.js +2 -1
- package/dist/domains/scores/components/trace-scores-tab.es.js.map +1 -1
- package/dist/domains/traces/components/span-data-panel-view.cjs.js +1 -1
- package/dist/domains/traces/components/span-data-panel-view.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +2 -2
- package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +1 -1
- package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
- package/dist/domains/traces/components/span-summary-description.es.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
- package/dist/domains/traces/components/thread-view-by-trace.cjs.js +2 -0
- package/dist/domains/traces/components/thread-view-by-trace.cjs.js.map +1 -1
- package/dist/domains/traces/components/thread-view-by-trace.es.js +2 -0
- package/dist/domains/traces/components/thread-view-by-trace.es.js.map +1 -1
- package/dist/domains/traces/components/trace-columns-menu.cjs.js +2 -2
- package/dist/domains/traces/components/trace-columns-menu.es.js +2 -2
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js +3 -8
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel-view.es.js +4 -9
- package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel.cjs.js +4 -0
- package/dist/domains/traces/components/trace-data-panel.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel.es.js +4 -0
- package/dist/domains/traces/components/trace-data-panel.es.js.map +1 -1
- package/dist/domains/traces/components/trace-error-cell.cjs.js +3 -1
- package/dist/domains/traces/components/trace-error-cell.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-error-cell.es.js +3 -1
- package/dist/domains/traces/components/trace-error-cell.es.js.map +1 -1
- package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
- package/dist/domains/traces/components/trace-id-button.es.js +1 -1
- package/dist/domains/traces/components/trace-span-panel.cjs.js +0 -2
- package/dist/domains/traces/components/trace-span-panel.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-span-panel.es.js +0 -2
- package/dist/domains/traces/components/trace-span-panel.es.js.map +1 -1
- package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
- package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
- package/dist/domains/traces/components/trace-thread-panel.cjs.js +1 -1
- package/dist/domains/traces/components/trace-thread-panel.es.js +1 -1
- package/dist/domains/traces/components/trace-time-range-chip.cjs.js +3 -3
- package/dist/domains/traces/components/trace-time-range-chip.es.js +3 -3
- package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.cjs.js +117 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.cjs.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.d.ts +2 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.es.js +94 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.es.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-auto-refresh.cjs.js +20 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-auto-refresh.cjs.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-auto-refresh.d.ts +2 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-auto-refresh.es.js +16 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-auto-refresh.es.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-menu.cjs.js +39 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-menu.cjs.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-menu.d.ts +2 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-menu.es.js +35 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-menu.es.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-provider.cjs.js +16 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-provider.cjs.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-provider.d.ts +2 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-provider.es.js +12 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-provider.es.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-context.cjs.js +56 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-context.cjs.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-context.d.ts +2 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-context.es.js +40 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-context.es.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.cjs.js +78 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.cjs.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.d.ts +2 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.es.js +72 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.es.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-layout.cjs.js +52 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-layout.cjs.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-layout.d.ts +2 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-layout.es.js +48 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-layout.es.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.cjs.js +71 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.cjs.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.d.ts +2 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.es.js +67 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.es.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list.cjs.js +58 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list.cjs.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list.d.ts +2 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list.es.js +54 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list.es.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.cjs.js +134 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.cjs.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.d.ts +2 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.es.js +130 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.es.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-root.cjs.js +154 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-root.cjs.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-root.d.ts +2 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-root.es.js +150 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-root.es.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/use-traces-discovery.cjs.js +14 -0
- package/dist/domains/traces/components/traces-explorer/use-traces-discovery.cjs.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/use-traces-discovery.d.ts +2 -0
- package/dist/domains/traces/components/traces-explorer/use-traces-discovery.es.js +10 -0
- package/dist/domains/traces/components/traces-explorer/use-traces-discovery.es.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.cjs.js +86 -0
- package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.cjs.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.d.ts +2 -0
- package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.es.js +81 -0
- package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.es.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer.cjs.js +42 -0
- package/dist/domains/traces/components/traces-explorer.cjs.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer.d.ts +2 -0
- package/dist/domains/traces/components/traces-explorer.es.js +25 -0
- package/dist/domains/traces/components/traces-explorer.es.js.map +1 -0
- package/dist/domains/traces/components/traces-list-view.cjs.js +4 -5
- package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-list-view.es.js +3 -4
- package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
- package/dist/domains/traces/components/traces-page-skeleton.cjs.js +4 -1
- package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-page-skeleton.es.js +4 -1
- package/dist/domains/traces/components/traces-page-skeleton.es.js.map +1 -1
- package/dist/domains/traces/hooks/use-traces-list-source.cjs.js +38 -10
- package/dist/domains/traces/hooks/use-traces-list-source.cjs.js.map +1 -1
- package/dist/domains/traces/hooks/use-traces-list-source.es.js +39 -13
- package/dist/domains/traces/hooks/use-traces-list-source.es.js.map +1 -1
- package/dist/domains/traces/hooks.cjs.js +0 -4
- package/dist/domains/traces/hooks.cjs.js.map +1 -1
- package/dist/domains/traces/hooks.es.js +0 -2
- package/dist/domains/traces/hooks.es.js.map +1 -1
- package/dist/domains/traces/trace-filters.cjs.js +1 -1
- package/dist/domains/traces/trace-filters.es.js +1 -1
- package/dist/domains/traces/trace-query-filters.cjs.js +2 -1
- package/dist/domains/traces/trace-query-filters.cjs.js.map +1 -1
- package/dist/domains/traces/trace-query-filters.es.js +1 -1
- package/dist/domains/traces.cjs.js +2 -5
- package/dist/domains/traces.cjs.js.map +1 -1
- package/dist/domains/traces.es.js +1 -3
- package/dist/domains/traces.es.js.map +1 -1
- package/dist/domains/workflows/components/workflow-combobox.cjs.js +1 -1
- package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
- package/dist/domains/workflows/components/workflow-step-detail.cjs.js +2 -2
- package/dist/domains/workflows/components/workflow-step-detail.es.js +2 -2
- package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +2 -2
- package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +2 -2
- package/dist/domains/workflows/workflow/data/workflow-data-button.cjs.js +1 -1
- package/dist/domains/workflows/workflow/data/workflow-data-button.es.js +1 -1
- package/dist/domains/workflows/workflow/data/workflow-data-inspector.cjs.js +1 -1
- package/dist/domains/workflows/workflow/data/workflow-data-inspector.es.js +1 -1
- package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js +2 -2
- package/dist/domains/workflows/workflow/input/workflow-json-input.es.js +2 -2
- package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js +2 -2
- package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js +2 -2
- package/dist/domains/workflows/workflow/use-workflow-graph-runtime.cjs.js +1 -1
- package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-body-graph.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-body-graph.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-data-edge.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-data-edge.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-debug-mode-switch.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-debug-mode-switch.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-inner.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-node.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-node.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-map-config-dialog.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-map-config-dialog.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-nested-graph.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-run-data.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-run-data.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-status.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-status.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-step-action-bar.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-step-action-bar.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-suspended-steps.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +2 -2
- package/dist/domains/workspace/components/workspace-active-file.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-active-file.es.js +1 -1
- package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +4 -4
- package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +4 -4
- package/dist/domains/workspace/components/workspace-markdown-preview.cjs.js +2 -2
- package/dist/domains/workspace/components/workspace-markdown-preview.es.js +2 -2
- package/dist/ee/signals/components/entity-index-list.cjs.js +3 -1
- package/dist/ee/signals/components/entity-index-list.cjs.js.map +1 -1
- package/dist/ee/signals/components/entity-index-list.es.js +3 -1
- package/dist/ee/signals/components/entity-index-list.es.js.map +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +5 -3
- package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js.map +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +5 -3
- package/dist/ee/signals/components/trace-intelligence-entity-index.es.js.map +1 -1
- package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +1 -1
- package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +1 -1
- package/dist/ee/signals/trace-intelligence-explainer.cjs.js +1 -0
- package/dist/ee/signals/trace-intelligence-explainer.cjs.js.map +1 -1
- package/dist/ee/signals/trace-intelligence-explainer.es.js +1 -0
- package/dist/ee/signals/trace-intelligence-explainer.es.js.map +1 -1
- package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +2 -2
- package/dist/ee/topics/components/topic-trace-summary-list.es.js +2 -2
- package/dist/{field-BCU5ZtWV.cjs → field-CZ5fldpM.cjs} +2 -1
- package/dist/{field-BCU5ZtWV.cjs.map → field-CZ5fldpM.cjs.map} +1 -1
- package/dist/{field-Dl1zeXTv.js → field-CfA5-ixH.js} +2 -1
- package/dist/{field-Dl1zeXTv.js.map → field-CfA5-ixH.js.map} +1 -1
- package/dist/filter-bar-CjBb01b6.cjs +849 -0
- package/dist/filter-bar-CjBb01b6.cjs.map +1 -0
- package/dist/{filter-bar-chip-DgvuQv6c.cjs → filter-bar-chip-C_64m7nX.cjs} +2 -2
- package/dist/{filter-bar-chip-DgvuQv6c.cjs.map → filter-bar-chip-C_64m7nX.cjs.map} +1 -1
- package/dist/{filter-bar-chip-C9CXOudu.js → filter-bar-chip-D2kKMSRA.js} +3 -3
- package/dist/{filter-bar-chip-C9CXOudu.js.map → filter-bar-chip-D2kKMSRA.js.map} +1 -1
- package/dist/filter-bar-pXSJt2ye.js +842 -0
- package/dist/filter-bar-pXSJt2ye.js.map +1 -0
- package/dist/{kbd-Xgv5HKEi.cjs → kbd-B2zbS_A6.cjs} +2 -2
- package/dist/{kbd-Xgv5HKEi.cjs.map → kbd-B2zbS_A6.cjs.map} +1 -1
- package/dist/{kbd-7Xx2pm9f.js → kbd-CYtMrOov.js} +2 -2
- package/dist/{kbd-7Xx2pm9f.js.map → kbd-CYtMrOov.js.map} +1 -1
- package/dist/layout/tabbed-container.cjs.js +3 -3
- package/dist/layout/tabbed-container.es.js +3 -3
- package/dist/lib/form/components/boolean-field.cjs.js +1 -1
- package/dist/lib/form/components/boolean-field.es.js +1 -1
- package/dist/lib/form/components/field-wrapper.cjs.js +1 -1
- package/dist/lib/form/components/field-wrapper.es.js +1 -1
- package/dist/lib/form/components/select-field.cjs.js +1 -1
- package/dist/lib/form/components/select-field.es.js +1 -1
- package/dist/{list-search-ByJdIxIh.js → list-search-8jVOq9LK.js} +2 -2
- package/dist/{list-search-ByJdIxIh.js.map → list-search-8jVOq9LK.js.map} +1 -1
- package/dist/{list-search-DNJVeHmK.cjs → list-search-C7ckmZHa.cjs} +2 -2
- package/dist/{list-search-DNJVeHmK.cjs.map → list-search-C7ckmZHa.cjs.map} +1 -1
- package/dist/{logs-data-list-DCj8Pj77.cjs → logs-data-list-C4Z4rw62.cjs} +21 -22
- package/dist/{logs-data-list-DCj8Pj77.cjs.map → logs-data-list-C4Z4rw62.cjs.map} +1 -1
- package/dist/{logs-data-list-Db5dBRmc.js → logs-data-list-CL3iq_6r.js} +2 -3
- package/dist/{logs-data-list-Db5dBRmc.js.map → logs-data-list-CL3iq_6r.js.map} +1 -1
- package/dist/{markdown-renderer-CQ_pSSO7.cjs → markdown-renderer-73CdjgS4.cjs} +2 -2
- package/dist/{markdown-renderer-CQ_pSSO7.cjs.map → markdown-renderer-73CdjgS4.cjs.map} +1 -1
- package/dist/{markdown-renderer-DEoJ5aBR.js → markdown-renderer-Qv9-1YIp.js} +2 -2
- package/dist/{markdown-renderer-DEoJ5aBR.js.map → markdown-renderer-Qv9-1YIp.js.map} +1 -1
- package/dist/new/settings.cjs.js +3 -2
- package/dist/new/settings.cjs.js.map +1 -1
- package/dist/new/settings.es.js +2 -1
- package/dist/new/settings.es.js.map +1 -1
- package/dist/{notification-activity-BWXHmlTn.js → notification-activity-BRW1Xlj1.js} +9 -5
- package/dist/notification-activity-BRW1Xlj1.js.map +1 -0
- package/dist/{notification-activity-BSNuqJDd.cjs → notification-activity-DAZOALWI.cjs} +9 -5
- package/dist/notification-activity-DAZOALWI.cjs.map +1 -0
- package/dist/page-layout-D1AXJJrp.cjs +61 -0
- package/dist/page-layout-D1AXJJrp.cjs.map +1 -0
- package/dist/page-layout-DCMg_kJB.js +59 -0
- package/dist/page-layout-DCMg_kJB.js.map +1 -0
- package/dist/{plan-TYss51JK.cjs → plan-DBvoFFHO.cjs} +2 -2
- package/dist/{plan-TYss51JK.cjs.map → plan-DBvoFFHO.cjs.map} +1 -1
- package/dist/{plan-B6td0b8h.js → plan-TBs5kj_X.js} +2 -2
- package/dist/{plan-B6td0b8h.js.map → plan-TBs5kj_X.js.map} +1 -1
- package/dist/{reasoning-activity-I5-HcGou.cjs → reasoning-activity-BrZbS7pa.cjs} +2 -2
- package/dist/{reasoning-activity-I5-HcGou.cjs.map → reasoning-activity-BrZbS7pa.cjs.map} +1 -1
- package/dist/{reasoning-activity-Dz2hk9pU.js → reasoning-activity-CyMhxRL2.js} +2 -2
- package/dist/{reasoning-activity-Dz2hk9pU.js.map → reasoning-activity-CyMhxRL2.js.map} +1 -1
- package/dist/resize/collapsible-panel.cjs.js +1 -1
- package/dist/resize/collapsible-panel.es.js +1 -1
- package/dist/{search-input-CMNy0JWd.cjs → search-input-CGNENJDh.cjs} +2 -2
- package/dist/{search-input-CMNy0JWd.cjs.map → search-input-CGNENJDh.cjs.map} +1 -1
- package/dist/{search-input-C9qFBzn6.js → search-input-cIYk0pl3.js} +2 -2
- package/dist/{search-input-C9qFBzn6.js.map → search-input-cIYk0pl3.js.map} +1 -1
- package/dist/{section-CctlZIXp.cjs → section-BikCyHdf.cjs} +4 -3
- package/dist/{section-CctlZIXp.cjs.map → section-BikCyHdf.cjs.map} +1 -1
- package/dist/{section-D0hKTVXt.js → section-C71zDLKM.js} +3 -2
- package/dist/{section-D0hKTVXt.js.map → section-C71zDLKM.js.map} +1 -1
- package/dist/{select-A3AFKLd9.cjs → select-BqHt-fOI.cjs} +12 -1
- package/dist/select-BqHt-fOI.cjs.map +1 -0
- package/dist/{select-7rYaECQf.js → select-CCpQUIEg.js} +13 -3
- package/dist/select-CCpQUIEg.js.map +1 -0
- package/dist/settings-container-D6LsO77E.js +42 -0
- package/dist/settings-container-D6LsO77E.js.map +1 -0
- package/dist/settings-container-umHxLp1a.cjs +45 -0
- package/dist/settings-container-umHxLp1a.cjs.map +1 -0
- package/dist/{settings-row-m_4gDCwS.cjs → settings-row-C9lT2BJS.cjs} +3 -42
- package/dist/settings-row-C9lT2BJS.cjs.map +1 -0
- package/dist/{settings-row-yuQjwWTl.js → settings-row-CRpU1an-.js} +4 -41
- package/dist/settings-row-CRpU1an-.js.map +1 -0
- package/dist/{span-payload-primitives-n5uf4hOk.cjs → span-payload-primitives-CE124T1P.cjs} +2 -2
- package/dist/{span-payload-primitives-n5uf4hOk.cjs.map → span-payload-primitives-CE124T1P.cjs.map} +1 -1
- package/dist/{span-payload-primitives-CaT3DT8h.js → span-payload-primitives-v0iS2w26.js} +2 -2
- package/dist/{span-payload-primitives-CaT3DT8h.js.map → span-payload-primitives-v0iS2w26.js.map} +1 -1
- package/dist/src/domains/capabilities/index.d.ts +1 -1
- package/dist/src/domains/chat/messages/notification-signal-notice.d.ts +2 -0
- package/dist/src/domains/chat/messages/signal-data.d.ts +9 -0
- package/dist/src/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.d.ts +28 -0
- package/dist/src/domains/datasets/components/add-dataset-item-dialog/build-add-item-payload.d.ts +28 -0
- package/dist/src/domains/datasets/components/add-dataset-item-dialog/collapsible-settings-row.d.ts +14 -0
- package/dist/src/domains/datasets/components/add-dataset-item-dialog/dataset-field-errors.d.ts +8 -0
- package/dist/src/domains/datasets/components/add-dataset-item-dialog/dataset-picker.d.ts +11 -0
- package/dist/src/domains/datasets/components/add-dataset-item-dialog/field-errors.d.ts +10 -0
- package/dist/src/domains/datasets/components/add-dataset-item-dialog/index.d.ts +2 -0
- package/dist/src/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.d.ts +11 -0
- package/dist/src/domains/datasets/components/add-dataset-item-dialog/trajectory-types.d.ts +50 -0
- package/dist/src/domains/datasets/components/add-dataset-item-dialog/use-target-agent-tools.d.ts +7 -0
- package/dist/src/domains/datasets/components/index.d.ts +1 -0
- package/dist/src/domains/logs/hooks/use-logs-filter-persistence.d.ts +2 -3
- package/dist/src/domains/logs/hooks/use-logs-url-state.d.ts +1 -1
- package/dist/src/domains/memory/components/flame-graph-data.d.ts +1 -1
- package/dist/src/domains/observability/components/trace-as-item-dialog.d.ts +3 -5
- package/dist/src/domains/traces/components/trace-data-panel-view.d.ts +1 -5
- package/dist/src/domains/traces/components/trace-span-panel.d.ts +1 -2
- package/dist/src/domains/traces/components/traces-explorer/index.d.ts +27 -0
- package/dist/src/domains/traces/components/traces-explorer/traces-explorer-actions.d.ts +113 -0
- package/dist/src/domains/traces/components/traces-explorer/traces-explorer-auto-refresh.d.ts +1 -0
- package/dist/src/domains/traces/components/traces-explorer/traces-explorer-columns-menu.d.ts +1 -0
- package/dist/src/domains/traces/components/traces-explorer/traces-explorer-columns-provider.d.ts +9 -0
- package/dist/src/domains/traces/components/traces-explorer/traces-explorer-context.d.ts +114 -0
- package/dist/src/domains/traces/components/traces-explorer/traces-explorer-filter-bar.d.ts +24 -0
- package/dist/src/domains/traces/components/traces-explorer/traces-explorer-layout.d.ts +14 -0
- package/dist/src/domains/traces/components/traces-explorer/traces-explorer-list-provider.d.ts +13 -0
- package/dist/src/domains/traces/components/traces-explorer/traces-explorer-list.d.ts +1 -0
- package/dist/src/domains/traces/components/traces-explorer/traces-explorer-panel.d.ts +18 -0
- package/dist/src/domains/traces/components/traces-explorer/traces-explorer-root.d.ts +21 -0
- package/dist/src/domains/traces/components/traces-explorer/use-traces-discovery.d.ts +15 -0
- package/dist/src/domains/traces/components/traces-explorer/use-traces-filter-bar.d.ts +15 -0
- package/dist/src/domains/traces/hooks/index.d.ts +1 -2
- package/dist/src/domains/traces/hooks/use-traces-list-source.d.ts +7 -1
- package/dist/src/domains/traces/trace-query-filters.d.ts +2 -0
- package/dist/src/domains/workflows/context/use-persisted-workflow-run.d.ts +5 -5
- package/dist/src/ds/components/BillingIllustration/art/credits-art.d.ts +2 -0
- package/dist/src/ds/components/BillingIllustration/art/plan-art.d.ts +5 -0
- package/dist/src/ds/components/BillingIllustration/billing-illustration.d.ts +1 -1
- package/dist/src/ds/components/CodeEditor/code-editor.d.ts +4 -0
- package/dist/src/ds/components/Combobox/combobox-parts.d.ts +1 -1
- package/dist/src/ds/components/DataList/data-list-root.d.ts +2 -0
- package/dist/src/ds/components/Select/select.d.ts +5 -1
- package/dist/src/ds/components/Sidebar/header/sidebar-badge.d.ts +7 -0
- package/dist/src/ds/components/Sidebar/header/sidebar-button-hint.d.ts +7 -0
- package/dist/src/ds/components/Sidebar/header/sidebar-search-trigger.d.ts +14 -3
- package/dist/src/ds/components/Sidebar/index.d.ts +1 -0
- package/dist/src/ds/components/Sidebar/root/sidebar-trigger.d.ts +2 -2
- package/dist/src/ds/components/Sidebar/sidebar.d.ts +5 -1
- package/dist/src/ds/components/ai/activity/presets/notification-activity.d.ts +5 -1
- package/dist/style.css +101 -13
- package/dist/{time-picker-CyvG-fwX.cjs → time-picker-BGtAkRRp.cjs} +2 -2
- package/dist/{time-picker-CyvG-fwX.cjs.map → time-picker-BGtAkRRp.cjs.map} +1 -1
- package/dist/{time-picker-Bzdboi4W.js → time-picker-D1VsACkg.js} +2 -2
- package/dist/{time-picker-Bzdboi4W.js.map → time-picker-D1VsACkg.js.map} +1 -1
- package/dist/{tool-approval-meJYp8az.js → tool-approval-CW6YjYlc.js} +2 -2
- package/dist/{tool-approval-meJYp8az.js.map → tool-approval-CW6YjYlc.js.map} +1 -1
- package/dist/{tool-approval-tRkskd9l.cjs → tool-approval-DNw_9w1C.cjs} +2 -2
- package/dist/{tool-approval-tRkskd9l.cjs.map → tool-approval-DNw_9w1C.cjs.map} +1 -1
- package/dist/{tool-call-arguments-D4D9tT7-.cjs → tool-call-arguments-BdHtc5O4.cjs} +2 -2
- package/dist/{tool-call-arguments-D4D9tT7-.cjs.map → tool-call-arguments-BdHtc5O4.cjs.map} +1 -1
- package/dist/{tool-call-arguments-CyKLhuQC.js → tool-call-arguments-CByjFWnk.js} +2 -2
- package/dist/{tool-call-arguments-CyKLhuQC.js.map → tool-call-arguments-CByjFWnk.js.map} +1 -1
- package/dist/{tool-card-D9jh-XXM.cjs → tool-card-DULALXIR.cjs} +2 -2
- package/dist/{tool-card-D9jh-XXM.cjs.map → tool-card-DULALXIR.cjs.map} +1 -1
- package/dist/{tool-card-B7s_wQuV.js → tool-card-DyZaGWgD.js} +2 -2
- package/dist/{tool-card-B7s_wQuV.js.map → tool-card-DyZaGWgD.js.map} +1 -1
- package/dist/{trace-filters-tC2TkI42.cjs → trace-filters-BtyiQq7Y.cjs} +9 -5
- package/dist/trace-filters-BtyiQq7Y.cjs.map +1 -0
- package/dist/{trace-filters-D1Cs5f24.js → trace-filters-DXW-RdDz.js} +10 -7
- package/dist/trace-filters-DXW-RdDz.js.map +1 -0
- package/dist/{traces-data-list-CF_LFvnf.cjs → traces-data-list-BOHhsgDI.cjs} +18 -20
- package/dist/{traces-data-list-CF_LFvnf.cjs.map → traces-data-list-BOHhsgDI.cjs.map} +1 -1
- package/dist/{traces-data-list-SpVFLEy8.js → traces-data-list-CP6knkOn.js} +2 -4
- package/dist/{traces-data-list-SpVFLEy8.js.map → traces-data-list-CP6knkOn.js.map} +1 -1
- package/dist/{use-workflow-graph-runtime-B0k2hrMc.cjs → use-workflow-graph-runtime-CWgTtW-I.cjs} +2 -2
- package/dist/{use-workflow-graph-runtime-B0k2hrMc.cjs.map → use-workflow-graph-runtime-CWgTtW-I.cjs.map} +1 -1
- package/dist/{use-workflow-graph-runtime-DiiAs2oN.js → use-workflow-graph-runtime-vYcO5MFZ.js} +2 -2
- package/dist/{use-workflow-graph-runtime-DiiAs2oN.js.map → use-workflow-graph-runtime-vYcO5MFZ.js.map} +1 -1
- package/dist/{workflow-code-dialog-content-yV6Lecry.cjs → workflow-code-dialog-content-BeB3jC3z.cjs} +2 -2
- package/dist/{workflow-code-dialog-content-yV6Lecry.cjs.map → workflow-code-dialog-content-BeB3jC3z.cjs.map} +1 -1
- package/dist/{workflow-code-dialog-content-lRHRkDdW.js → workflow-code-dialog-content-BpWrCzH0.js} +2 -2
- package/dist/{workflow-code-dialog-content-lRHRkDdW.js.map → workflow-code-dialog-content-BpWrCzH0.js.map} +1 -1
- package/dist/{workflow-data-edge-view-DadIXKjI.cjs → workflow-data-edge-view-CYsZxUHx.cjs} +2 -2
- package/dist/{workflow-data-edge-view-DadIXKjI.cjs.map → workflow-data-edge-view-CYsZxUHx.cjs.map} +1 -1
- package/dist/{workflow-data-edge-view-BcLEbr1i.js → workflow-data-edge-view-Cqbhavjw.js} +2 -2
- package/dist/{workflow-data-edge-view-BcLEbr1i.js.map → workflow-data-edge-view-Cqbhavjw.js.map} +1 -1
- package/dist/{workflow-edge-data-button-AwaLTE7H.js → workflow-edge-data-button-BPUmnY9J.js} +2 -2
- package/dist/{workflow-edge-data-button-AwaLTE7H.js.map → workflow-edge-data-button-BPUmnY9J.js.map} +1 -1
- package/dist/{workflow-edge-data-button-B4_tt1pL.cjs → workflow-edge-data-button-DinmgZoJ.cjs} +2 -2
- package/dist/{workflow-edge-data-button-B4_tt1pL.cjs.map → workflow-edge-data-button-DinmgZoJ.cjs.map} +1 -1
- package/package.json +11 -11
- package/dist/code-editor-CbyCb7CW.cjs.map +0 -1
- package/dist/code-editor-DOv4jc-0.js.map +0 -1
- package/dist/combobox-BCoCVZHs.js.map +0 -1
- package/dist/combobox-DbZAWh8q.cjs.map +0 -1
- package/dist/data-list-CGD9hzcp.cjs +0 -142
- package/dist/data-list-CGD9hzcp.cjs.map +0 -1
- package/dist/data-list-aFlt9Du-.js +0 -138
- package/dist/data-list-aFlt9Du-.js.map +0 -1
- package/dist/data-list-spacer-BFAQT_lQ.js +0 -209
- package/dist/data-list-spacer-BFAQT_lQ.js.map +0 -1
- package/dist/data-list-spacer-Dpoj55mv.cjs +0 -218
- package/dist/data-list-spacer-Dpoj55mv.cjs.map +0 -1
- package/dist/data-list-top-DJh08vFA.cjs.map +0 -1
- package/dist/data-list-top-T-mtdIUp.js.map +0 -1
- package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js +0 -204
- package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js.map +0 -1
- package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.d.ts +0 -2
- package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js +0 -200
- package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js.map +0 -1
- package/dist/domains/traces/hooks/use-trace-filter-persistence.cjs.js +0 -52
- package/dist/domains/traces/hooks/use-trace-filter-persistence.cjs.js.map +0 -1
- package/dist/domains/traces/hooks/use-trace-filter-persistence.d.ts +0 -2
- package/dist/domains/traces/hooks/use-trace-filter-persistence.es.js +0 -48
- package/dist/domains/traces/hooks/use-trace-filter-persistence.es.js.map +0 -1
- package/dist/domains/traces/hooks/use-trace-url-state.cjs.js +0 -373
- package/dist/domains/traces/hooks/use-trace-url-state.cjs.js.map +0 -1
- package/dist/domains/traces/hooks/use-trace-url-state.d.ts +0 -2
- package/dist/domains/traces/hooks/use-trace-url-state.es.js +0 -369
- package/dist/domains/traces/hooks/use-trace-url-state.es.js.map +0 -1
- package/dist/notification-activity-BSNuqJDd.cjs.map +0 -1
- package/dist/notification-activity-BWXHmlTn.js.map +0 -1
- package/dist/select-7rYaECQf.js.map +0 -1
- package/dist/select-A3AFKLd9.cjs.map +0 -1
- package/dist/settings-row-m_4gDCwS.cjs.map +0 -1
- package/dist/settings-row-yuQjwWTl.js.map +0 -1
- package/dist/side-dialog-C-XvsAm_.cjs +0 -231
- package/dist/side-dialog-C-XvsAm_.cjs.map +0 -1
- package/dist/side-dialog-cUpWIkKq.js +0 -211
- package/dist/side-dialog-cUpWIkKq.js.map +0 -1
- package/dist/src/domains/observability/components/add-trace-mocks-to-item-dialog.d.ts +0 -9
- package/dist/src/domains/traces/hooks/use-trace-filter-persistence.d.ts +0 -22
- package/dist/src/domains/traces/hooks/use-trace-url-state.d.ts +0 -83
- package/dist/trace-filters-D1Cs5f24.js.map +0 -1
- package/dist/trace-filters-tC2TkI42.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs-list-view.cjs.js","sources":["../../../../src/domains/logs/components/logs-list-view.tsx"],"sourcesContent":["import { useVirtualizer } from '@tanstack/react-virtual';\nimport { useEffect, useRef } from 'react';\nimport type { LogRecord } from '../types';\nimport { useDataListKeyboard } from '@/ds/components/DataList';\nimport type { DataListSort } from '@/ds/components/DataList';\nimport { LogsDataList, LogsDataListSkeleton } from '@/ds/components/LogsDataList';\n\n// Fixed widths on non-flex columns prevent track shifts as the virtualizer swaps rows in/out.\nconst COLUMNS = '6rem 9rem 5rem 10rem minmax(8rem,1fr) minmax(8rem,1fr)';\n\nconst ROW_HEIGHT = 36;\nconst OVERSCAN = 8;\n\nexport interface LogsListViewProps {\n logs: LogRecord[];\n isLoading?: boolean;\n isFetchingNextPage?: boolean;\n hasNextPage?: boolean;\n setEndOfListElement?: (element: HTMLDivElement | null) => void;\n /** Stable per-render id for each log — used for React keys and for matching against `featuredLogId`.\n * Build with `useLogsListNavigation`. */\n logIdMap: Map<LogRecord, string>;\n /** Currently featured/selected log — its row gets the highlighted background. */\n featuredLogId?: string | null;\n /** Called when a row is clicked. The current toggle + trace-sync logic is the consumer's call. */\n onLogClick: (log: LogRecord) => void;\n /** Current timestamp sort direction. When `onSortChange` is provided the Date/Time headers become sortable. */\n timestampSort?: DataListSort;\n onSortChange?: (direction: DataListSort, key: 'timestamp') => void;\n}\n\n/**\n * Virtualized presentational list. Renders only the visible window of logs via\n * TanStack Virtual, sandwiched between top/bottom Spacers that preserve total\n * scroll height. Owns no state and fetches no data.\n */\nexport function LogsListView({\n logs,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n logIdMap,\n featuredLogId,\n onLogClick,\n timestampSort,\n onSortChange,\n}: LogsListViewProps) {\n const scrollRef = useRef<HTMLDivElement | null>(null);\n\n const virtualizer = useVirtualizer({\n count: logs.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: () => ROW_HEIGHT,\n overscan: OVERSCAN,\n });\n\n const { getRowProps } = useDataListKeyboard({\n count: logs.length,\n containerRef: scrollRef,\n onNavigate: index => virtualizer.scrollToIndex(index),\n global: true,\n });\n\n // Reset scroll to top whenever a fresh query resolves (filter / date range change).\n // `isLoading` only flips on initial fetches — `fetchNextPage` keeps it `false`, so this\n // effect doesn't fire during pagination.\n //\n // Why the manual scroll event: when the skeleton-vs-list branch swaps in the new scroll\n // container, it mounts at `scrollTop = 0`. The virtualizer rebinds its listener but\n // doesn't re-read `scrollTop`, so it keeps the stale `scrollOffset` from the previous\n // element. `scrollToOffset(0)` no-ops because the new element is already at 0 (no scroll\n // event fires). Dispatching a synthetic `scroll` forces the virtualizer's handler to\n // read the fresh `scrollTop` and recompute `virtualItems` with `paddingTop = 0`.\n const wasLoadingRef = useRef(isLoading);\n useEffect(() => {\n if (wasLoadingRef.current && !isLoading) {\n scrollRef.current?.dispatchEvent(new Event('scroll'));\n }\n wasLoadingRef.current = isLoading;\n }, [isLoading]);\n\n if (isLoading) {\n return <LogsDataListSkeleton columns={COLUMNS} fit=\"container\" />;\n }\n\n const virtualItems = virtualizer.getVirtualItems();\n const totalSize = virtualizer.getTotalSize();\n const paddingTop = virtualItems[0]?.start ?? 0;\n const paddingBottom =\n virtualItems.length > 0 ? Math.max(0, totalSize - (virtualItems[virtualItems.length - 1]?.end ?? 0)) : 0;\n\n return (\n <LogsDataList columns={COLUMNS} scrollRef={scrollRef} className=\"min-w-0\" fit=\"container\">\n <LogsDataList.Top>\n {onSortChange ? (\n <LogsDataList.SortableTopCell sortKey=\"timestamp\" sort={timestampSort} onSortChange={onSortChange}>\n Date\n </LogsDataList.SortableTopCell>\n ) : (\n <LogsDataList.TopCell>Date</LogsDataList.TopCell>\n )}\n <LogsDataList.TopCell>Time</LogsDataList.TopCell>\n <LogsDataList.TopCell>Level</LogsDataList.TopCell>\n <LogsDataList.TopCell>Entity</LogsDataList.TopCell>\n <LogsDataList.TopCell>Message</LogsDataList.TopCell>\n <LogsDataList.TopCell>Data</LogsDataList.TopCell>\n </LogsDataList.Top>\n\n {logs.length === 0 ? (\n <LogsDataList.NoMatch message=\"No logs match your search\" />\n ) : (\n <>\n <LogsDataList.Spacer height={paddingTop} />\n {virtualItems.map(vi => {\n const log = logs[vi.index];\n if (!log) return null;\n const id = logIdMap.get(log);\n // Defensive: consumer is expected to build `logIdMap` from the same `logs` list\n // (via `useLogsListNavigation`), but if they drift we'd rather drop the row than\n // ship a missing-key warning and broken selection highlighting.\n if (!id) return null;\n const isFeatured = id === featuredLogId;\n\n return (\n <LogsDataList.RowButton\n key={id}\n ref={virtualizer.measureElement}\n data-index={vi.index}\n {...getRowProps(vi.index)}\n onClick={() => onLogClick(log)}\n featured={isFeatured}\n variant={log.level === 'error' || log.level === 'fatal' ? 'error' : 'default'}\n >\n <LogsDataList.DateCell timestamp={log.timestamp} />\n <LogsDataList.TimeCell timestamp={log.timestamp} />\n <LogsDataList.LevelCell level={log.level} />\n <LogsDataList.EntityCell entityType={log.entityType} entityName={log.entityName} />\n <LogsDataList.MessageCell message={log.message} />\n <LogsDataList.DataCell data={log.data} />\n </LogsDataList.RowButton>\n );\n })}\n <LogsDataList.Spacer height={paddingBottom} />\n </>\n )}\n <LogsDataList.NextPageLoading\n isLoading={isFetchingNextPage}\n hasMore={hasNextPage}\n setEndOfListElement={setEndOfListElement}\n />\n </LogsDataList>\n );\n}\n"],"names":["useRef","useVirtualizer","useDataListKeyboard","useEffect","jsx","LogsDataListSkeleton","jsxs","LogsDataList","Fragment"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"logs-list-view.cjs.js","sources":["../../../../src/domains/logs/components/logs-list-view.tsx"],"sourcesContent":["import { useVirtualizer } from '@tanstack/react-virtual';\nimport { useEffect, useRef } from 'react';\nimport type { LogRecord } from '../types';\nimport { useDataListKeyboard } from '@/ds/components/DataList';\nimport type { DataListSort } from '@/ds/components/DataList';\nimport { LogsDataList, LogsDataListSkeleton } from '@/ds/components/LogsDataList';\n\n// Fixed widths on non-flex columns prevent track shifts as the virtualizer swaps rows in/out.\nconst COLUMNS = '6rem 9rem 5rem 10rem minmax(8rem,1fr) minmax(8rem,1fr)';\n\nconst ROW_HEIGHT = 36;\nconst OVERSCAN = 8;\n\nexport interface LogsListViewProps {\n logs: LogRecord[];\n isLoading?: boolean;\n isFetchingNextPage?: boolean;\n hasNextPage?: boolean;\n setEndOfListElement?: (element: HTMLDivElement | null) => void;\n /** Stable per-render id for each log — used for React keys and for matching against `featuredLogId`.\n * Build with `useLogsListNavigation`. */\n logIdMap: Map<LogRecord, string>;\n /** Currently featured/selected log — its row gets the highlighted background. */\n featuredLogId?: string | null;\n /** Called when a row is clicked. The current toggle + trace-sync logic is the consumer's call. */\n onLogClick: (log: LogRecord) => void;\n /** Current timestamp sort direction. When `onSortChange` is provided the Date/Time headers become sortable. */\n timestampSort?: DataListSort;\n onSortChange?: (direction: DataListSort, key: 'timestamp') => void;\n}\n\n/**\n * Virtualized presentational list. Renders only the visible window of logs via\n * TanStack Virtual, sandwiched between top/bottom Spacers that preserve total\n * scroll height. Owns no state and fetches no data.\n */\nexport function LogsListView({\n logs,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n logIdMap,\n featuredLogId,\n onLogClick,\n timestampSort,\n onSortChange,\n}: LogsListViewProps) {\n const scrollRef = useRef<HTMLDivElement | null>(null);\n\n const virtualizer = useVirtualizer({\n count: logs.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: () => ROW_HEIGHT,\n overscan: OVERSCAN,\n });\n\n const { getRowProps } = useDataListKeyboard({\n count: logs.length,\n containerRef: scrollRef,\n onNavigate: index => virtualizer.scrollToIndex(index),\n global: true,\n });\n\n // Reset scroll to top whenever a fresh query resolves (filter / date range change).\n // `isLoading` only flips on initial fetches — `fetchNextPage` keeps it `false`, so this\n // effect doesn't fire during pagination.\n //\n // Why the manual scroll event: when the skeleton-vs-list branch swaps in the new scroll\n // container, it mounts at `scrollTop = 0`. The virtualizer rebinds its listener but\n // doesn't re-read `scrollTop`, so it keeps the stale `scrollOffset` from the previous\n // element. `scrollToOffset(0)` no-ops because the new element is already at 0 (no scroll\n // event fires). Dispatching a synthetic `scroll` forces the virtualizer's handler to\n // read the fresh `scrollTop` and recompute `virtualItems` with `paddingTop = 0`.\n const wasLoadingRef = useRef(isLoading);\n useEffect(() => {\n if (wasLoadingRef.current && !isLoading) {\n scrollRef.current?.dispatchEvent(new Event('scroll'));\n }\n wasLoadingRef.current = isLoading;\n }, [isLoading]);\n\n if (isLoading) {\n return <LogsDataListSkeleton columns={COLUMNS} fit=\"container\" />;\n }\n\n const virtualItems = virtualizer.getVirtualItems();\n const totalSize = virtualizer.getTotalSize();\n const paddingTop = virtualItems[0]?.start ?? 0;\n const paddingBottom =\n virtualItems.length > 0 ? Math.max(0, totalSize - (virtualItems[virtualItems.length - 1]?.end ?? 0)) : 0;\n\n return (\n <LogsDataList columns={COLUMNS} scrollRef={scrollRef} className=\"min-w-0\" fit=\"container\">\n <LogsDataList.Top>\n {onSortChange ? (\n <LogsDataList.SortableTopCell sortKey=\"timestamp\" sort={timestampSort} onSortChange={onSortChange}>\n Date\n </LogsDataList.SortableTopCell>\n ) : (\n <LogsDataList.TopCell>Date</LogsDataList.TopCell>\n )}\n <LogsDataList.TopCell>Time</LogsDataList.TopCell>\n <LogsDataList.TopCell>Level</LogsDataList.TopCell>\n <LogsDataList.TopCell>Entity</LogsDataList.TopCell>\n <LogsDataList.TopCell>Message</LogsDataList.TopCell>\n <LogsDataList.TopCell>Data</LogsDataList.TopCell>\n </LogsDataList.Top>\n\n {logs.length === 0 ? (\n <LogsDataList.NoMatch message=\"No logs match your search\" />\n ) : (\n <>\n <LogsDataList.Spacer height={paddingTop} />\n {virtualItems.map(vi => {\n const log = logs[vi.index];\n if (!log) return null;\n const id = logIdMap.get(log);\n // Defensive: consumer is expected to build `logIdMap` from the same `logs` list\n // (via `useLogsListNavigation`), but if they drift we'd rather drop the row than\n // ship a missing-key warning and broken selection highlighting.\n if (!id) return null;\n const isFeatured = id === featuredLogId;\n\n return (\n <LogsDataList.RowButton\n key={id}\n ref={virtualizer.measureElement}\n data-index={vi.index}\n {...getRowProps(vi.index)}\n onClick={() => onLogClick(log)}\n featured={isFeatured}\n variant={log.level === 'error' || log.level === 'fatal' ? 'error' : 'default'}\n >\n <LogsDataList.DateCell timestamp={log.timestamp} />\n <LogsDataList.TimeCell timestamp={log.timestamp} />\n <LogsDataList.LevelCell level={log.level} />\n <LogsDataList.EntityCell entityType={log.entityType} entityName={log.entityName} />\n <LogsDataList.MessageCell message={log.message} />\n <LogsDataList.DataCell data={log.data} />\n </LogsDataList.RowButton>\n );\n })}\n <LogsDataList.Spacer height={paddingBottom} />\n </>\n )}\n <LogsDataList.NextPageLoading\n isLoading={isFetchingNextPage}\n hasMore={hasNextPage}\n setEndOfListElement={setEndOfListElement}\n />\n </LogsDataList>\n );\n}\n"],"names":["useRef","useVirtualizer","useDataListKeyboard","useEffect","jsx","LogsDataListSkeleton","jsxs","LogsDataList","Fragment"],"mappings":";;;;;;;;;;;;AAQA,MAAM,OAAA,GAAU,wDAAA;AAEhB,MAAM,UAAA,GAAa,EAAA;AACnB,MAAM,QAAA,GAAW,CAAA;AAyBV,SAAS,YAAA,CAAa;AAAA,EAC3B,IAAA;AAAA,EACA,SAAA;AAAA,EACA,kBAAA;AAAA,EACA,WAAA;AAAA,EACA,mBAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA,UAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,EAAsB;AACpB,EAAA,MAAM,SAAA,GAAYA,aAA8B,IAAI,CAAA;AAEpD,EAAA,MAAM,cAAcC,2BAAA,CAAe;AAAA,IACjC,OAAO,IAAA,CAAK,MAAA;AAAA,IACZ,gBAAA,EAAkB,MAAM,SAAA,CAAU,OAAA;AAAA,IAClC,cAAc,MAAM,UAAA;AAAA,IACpB,QAAA,EAAU;AAAA,GACX,CAAA;AAED,EAAA,MAAM,EAAE,WAAA,EAAY,GAAIC,uCAAA,CAAoB;AAAA,IAC1C,OAAO,IAAA,CAAK,MAAA;AAAA,IACZ,YAAA,EAAc,SAAA;AAAA,IACd,UAAA,EAAY,CAAA,KAAA,KAAS,WAAA,CAAY,aAAA,CAAc,KAAK,CAAA;AAAA,IACpD,MAAA,EAAQ;AAAA,GACT,CAAA;AAYD,EAAA,MAAM,aAAA,GAAgBF,aAAO,SAAS,CAAA;AACtC,EAAAG,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,aAAA,CAAc,OAAA,IAAW,CAAC,SAAA,EAAW;AACvC,MAAA,SAAA,CAAU,OAAA,EAAS,aAAA,CAAc,IAAI,KAAA,CAAM,QAAQ,CAAC,CAAA;AAAA,IACtD;AACA,IAAA,aAAA,CAAc,OAAA,GAAU,SAAA;AAAA,EAC1B,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,uBAAOC,cAAA,CAACC,iCAAA,EAAA,EAAqB,OAAA,EAAS,OAAA,EAAS,KAAI,WAAA,EAAY,CAAA;AAAA,EACjE;AAEA,EAAA,MAAM,YAAA,GAAe,YAAY,eAAA,EAAgB;AACjD,EAAA,MAAM,SAAA,GAAY,YAAY,YAAA,EAAa;AAC3C,EAAA,MAAM,UAAA,GAAa,YAAA,CAAa,CAAC,CAAA,EAAG,KAAA,IAAS,CAAA;AAC7C,EAAA,MAAM,aAAA,GACJ,YAAA,CAAa,MAAA,GAAS,CAAA,GAAI,KAAK,GAAA,CAAI,CAAA,EAAG,SAAA,IAAa,YAAA,CAAa,aAAa,MAAA,GAAS,CAAC,CAAA,EAAG,GAAA,IAAO,EAAE,CAAA,GAAI,CAAA;AAEzG,EAAA,uBACEC,eAAA,CAACC,6BAAa,OAAA,EAAS,OAAA,EAAS,WAAsB,SAAA,EAAU,SAAA,EAAU,KAAI,WAAA,EAC5E,QAAA,EAAA;AAAA,oBAAAD,eAAA,CAACC,yBAAA,CAAa,KAAb,EACE,QAAA,EAAA;AAAA,MAAA,YAAA,mBACCH,cAAA,CAACG,yBAAA,CAAa,eAAA,EAAb,EAA6B,SAAQ,WAAA,EAAY,IAAA,EAAM,aAAA,EAAe,YAAA,EAA4B,kBAEnG,CAAA,mBAEAH,cAAA,CAACG,yBAAA,CAAa,OAAA,EAAb,EAAqB,QAAA,EAAA,MAAA,EAAI,CAAA;AAAA,sBAE5BH,cAAA,CAACG,yBAAA,CAAa,OAAA,EAAb,EAAqB,QAAA,EAAA,MAAA,EAAI,CAAA;AAAA,sBAC1BH,cAAA,CAACG,yBAAA,CAAa,OAAA,EAAb,EAAqB,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,sBAC3BH,cAAA,CAACG,yBAAA,CAAa,OAAA,EAAb,EAAqB,QAAA,EAAA,QAAA,EAAM,CAAA;AAAA,sBAC5BH,cAAA,CAACG,yBAAA,CAAa,OAAA,EAAb,EAAqB,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,sBAC7BH,cAAA,CAACG,yBAAA,CAAa,OAAA,EAAb,EAAqB,QAAA,EAAA,MAAA,EAAI;AAAA,KAAA,EAC5B,CAAA;AAAA,IAEC,IAAA,CAAK,MAAA,KAAW,CAAA,mBACfH,cAAA,CAACG,yBAAA,CAAa,SAAb,EAAqB,OAAA,EAAQ,2BAAA,EAA4B,CAAA,mBAE1DD,eAAA,CAAAE,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAAJ,cAAA,CAACG,yBAAA,CAAa,MAAA,EAAb,EAAoB,MAAA,EAAQ,UAAA,EAAY,CAAA;AAAA,MACxC,YAAA,CAAa,IAAI,CAAA,EAAA,KAAM;AACtB,QAAA,MAAM,GAAA,GAAM,IAAA,CAAK,EAAA,CAAG,KAAK,CAAA;AACzB,QAAA,IAAI,CAAC,KAAK,OAAO,IAAA;AACjB,QAAA,MAAM,EAAA,GAAK,QAAA,CAAS,GAAA,CAAI,GAAG,CAAA;AAI3B,QAAA,IAAI,CAAC,IAAI,OAAO,IAAA;AAChB,QAAA,MAAM,aAAa,EAAA,KAAO,aAAA;AAE1B,QAAA,uBACED,eAAA;AAAA,UAACC,yBAAA,CAAa,SAAA;AAAA,UAAb;AAAA,YAEC,KAAK,WAAA,CAAY,cAAA;AAAA,YACjB,cAAY,EAAA,CAAG,KAAA;AAAA,YACd,GAAG,WAAA,CAAY,EAAA,CAAG,KAAK,CAAA;AAAA,YACxB,OAAA,EAAS,MAAM,UAAA,CAAW,GAAG,CAAA;AAAA,YAC7B,QAAA,EAAU,UAAA;AAAA,YACV,SAAS,GAAA,CAAI,KAAA,KAAU,WAAW,GAAA,CAAI,KAAA,KAAU,UAAU,OAAA,GAAU,SAAA;AAAA,YAEpE,QAAA,EAAA;AAAA,8BAAAH,cAAA,CAACG,yBAAA,CAAa,QAAA,EAAb,EAAsB,SAAA,EAAW,IAAI,SAAA,EAAW,CAAA;AAAA,6CAChDA,yBAAA,CAAa,QAAA,EAAb,EAAsB,SAAA,EAAW,IAAI,SAAA,EAAW,CAAA;AAAA,6CAChDA,yBAAA,CAAa,SAAA,EAAb,EAAuB,KAAA,EAAO,IAAI,KAAA,EAAO,CAAA;AAAA,8BAC1CH,cAAA,CAACG,0BAAa,UAAA,EAAb,EAAwB,YAAY,GAAA,CAAI,UAAA,EAAY,UAAA,EAAY,GAAA,CAAI,UAAA,EAAY,CAAA;AAAA,6CAChFA,yBAAA,CAAa,WAAA,EAAb,EAAyB,OAAA,EAAS,IAAI,OAAA,EAAS,CAAA;AAAA,6CAC/CA,yBAAA,CAAa,QAAA,EAAb,EAAsB,IAAA,EAAM,IAAI,IAAA,EAAM;AAAA;AAAA,WAAA;AAAA,UAblC;AAAA,SAcP;AAAA,MAEJ,CAAC,CAAA;AAAA,sBACDH,cAAA,CAACG,yBAAA,CAAa,MAAA,EAAb,EAAoB,QAAQ,aAAA,EAAe;AAAA,KAAA,EAC9C,CAAA;AAAA,oBAEFH,cAAA;AAAA,MAACG,yBAAA,CAAa,eAAA;AAAA,MAAb;AAAA,QACC,SAAA,EAAW,kBAAA;AAAA,QACX,OAAA,EAAS,WAAA;AAAA,QACT;AAAA;AAAA;AACF,GAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import { useVirtualizer } from '@tanstack/react-virtual';
|
|
3
3
|
import { useRef, useEffect } from 'react';
|
|
4
|
-
import
|
|
4
|
+
import '../../../data-list-BQMBFAyK.js';
|
|
5
|
+
import { D as DataListSkeleton } from '../../../data-list-skeleton-D54r1ycU.js';
|
|
5
6
|
import { u as useDataListKeyboard } from '../../../use-data-list-keyboard-DFQr4t38.js';
|
|
6
|
-
import { L as LogsDataList } from '../../../logs-data-list-
|
|
7
|
+
import { L as LogsDataList } from '../../../logs-data-list-CL3iq_6r.js';
|
|
7
8
|
|
|
8
9
|
const COLUMNS = "6rem 9rem 5rem 10rem minmax(8rem,1fr) minmax(8rem,1fr)";
|
|
9
10
|
const ROW_HEIGHT = 36;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs-list-view.es.js","sources":["../../../../src/domains/logs/components/logs-list-view.tsx"],"sourcesContent":["import { useVirtualizer } from '@tanstack/react-virtual';\nimport { useEffect, useRef } from 'react';\nimport type { LogRecord } from '../types';\nimport { useDataListKeyboard } from '@/ds/components/DataList';\nimport type { DataListSort } from '@/ds/components/DataList';\nimport { LogsDataList, LogsDataListSkeleton } from '@/ds/components/LogsDataList';\n\n// Fixed widths on non-flex columns prevent track shifts as the virtualizer swaps rows in/out.\nconst COLUMNS = '6rem 9rem 5rem 10rem minmax(8rem,1fr) minmax(8rem,1fr)';\n\nconst ROW_HEIGHT = 36;\nconst OVERSCAN = 8;\n\nexport interface LogsListViewProps {\n logs: LogRecord[];\n isLoading?: boolean;\n isFetchingNextPage?: boolean;\n hasNextPage?: boolean;\n setEndOfListElement?: (element: HTMLDivElement | null) => void;\n /** Stable per-render id for each log — used for React keys and for matching against `featuredLogId`.\n * Build with `useLogsListNavigation`. */\n logIdMap: Map<LogRecord, string>;\n /** Currently featured/selected log — its row gets the highlighted background. */\n featuredLogId?: string | null;\n /** Called when a row is clicked. The current toggle + trace-sync logic is the consumer's call. */\n onLogClick: (log: LogRecord) => void;\n /** Current timestamp sort direction. When `onSortChange` is provided the Date/Time headers become sortable. */\n timestampSort?: DataListSort;\n onSortChange?: (direction: DataListSort, key: 'timestamp') => void;\n}\n\n/**\n * Virtualized presentational list. Renders only the visible window of logs via\n * TanStack Virtual, sandwiched between top/bottom Spacers that preserve total\n * scroll height. Owns no state and fetches no data.\n */\nexport function LogsListView({\n logs,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n logIdMap,\n featuredLogId,\n onLogClick,\n timestampSort,\n onSortChange,\n}: LogsListViewProps) {\n const scrollRef = useRef<HTMLDivElement | null>(null);\n\n const virtualizer = useVirtualizer({\n count: logs.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: () => ROW_HEIGHT,\n overscan: OVERSCAN,\n });\n\n const { getRowProps } = useDataListKeyboard({\n count: logs.length,\n containerRef: scrollRef,\n onNavigate: index => virtualizer.scrollToIndex(index),\n global: true,\n });\n\n // Reset scroll to top whenever a fresh query resolves (filter / date range change).\n // `isLoading` only flips on initial fetches — `fetchNextPage` keeps it `false`, so this\n // effect doesn't fire during pagination.\n //\n // Why the manual scroll event: when the skeleton-vs-list branch swaps in the new scroll\n // container, it mounts at `scrollTop = 0`. The virtualizer rebinds its listener but\n // doesn't re-read `scrollTop`, so it keeps the stale `scrollOffset` from the previous\n // element. `scrollToOffset(0)` no-ops because the new element is already at 0 (no scroll\n // event fires). Dispatching a synthetic `scroll` forces the virtualizer's handler to\n // read the fresh `scrollTop` and recompute `virtualItems` with `paddingTop = 0`.\n const wasLoadingRef = useRef(isLoading);\n useEffect(() => {\n if (wasLoadingRef.current && !isLoading) {\n scrollRef.current?.dispatchEvent(new Event('scroll'));\n }\n wasLoadingRef.current = isLoading;\n }, [isLoading]);\n\n if (isLoading) {\n return <LogsDataListSkeleton columns={COLUMNS} fit=\"container\" />;\n }\n\n const virtualItems = virtualizer.getVirtualItems();\n const totalSize = virtualizer.getTotalSize();\n const paddingTop = virtualItems[0]?.start ?? 0;\n const paddingBottom =\n virtualItems.length > 0 ? Math.max(0, totalSize - (virtualItems[virtualItems.length - 1]?.end ?? 0)) : 0;\n\n return (\n <LogsDataList columns={COLUMNS} scrollRef={scrollRef} className=\"min-w-0\" fit=\"container\">\n <LogsDataList.Top>\n {onSortChange ? (\n <LogsDataList.SortableTopCell sortKey=\"timestamp\" sort={timestampSort} onSortChange={onSortChange}>\n Date\n </LogsDataList.SortableTopCell>\n ) : (\n <LogsDataList.TopCell>Date</LogsDataList.TopCell>\n )}\n <LogsDataList.TopCell>Time</LogsDataList.TopCell>\n <LogsDataList.TopCell>Level</LogsDataList.TopCell>\n <LogsDataList.TopCell>Entity</LogsDataList.TopCell>\n <LogsDataList.TopCell>Message</LogsDataList.TopCell>\n <LogsDataList.TopCell>Data</LogsDataList.TopCell>\n </LogsDataList.Top>\n\n {logs.length === 0 ? (\n <LogsDataList.NoMatch message=\"No logs match your search\" />\n ) : (\n <>\n <LogsDataList.Spacer height={paddingTop} />\n {virtualItems.map(vi => {\n const log = logs[vi.index];\n if (!log) return null;\n const id = logIdMap.get(log);\n // Defensive: consumer is expected to build `logIdMap` from the same `logs` list\n // (via `useLogsListNavigation`), but if they drift we'd rather drop the row than\n // ship a missing-key warning and broken selection highlighting.\n if (!id) return null;\n const isFeatured = id === featuredLogId;\n\n return (\n <LogsDataList.RowButton\n key={id}\n ref={virtualizer.measureElement}\n data-index={vi.index}\n {...getRowProps(vi.index)}\n onClick={() => onLogClick(log)}\n featured={isFeatured}\n variant={log.level === 'error' || log.level === 'fatal' ? 'error' : 'default'}\n >\n <LogsDataList.DateCell timestamp={log.timestamp} />\n <LogsDataList.TimeCell timestamp={log.timestamp} />\n <LogsDataList.LevelCell level={log.level} />\n <LogsDataList.EntityCell entityType={log.entityType} entityName={log.entityName} />\n <LogsDataList.MessageCell message={log.message} />\n <LogsDataList.DataCell data={log.data} />\n </LogsDataList.RowButton>\n );\n })}\n <LogsDataList.Spacer height={paddingBottom} />\n </>\n )}\n <LogsDataList.NextPageLoading\n isLoading={isFetchingNextPage}\n hasMore={hasNextPage}\n setEndOfListElement={setEndOfListElement}\n />\n </LogsDataList>\n );\n}\n"],"names":["LogsDataListSkeleton"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"logs-list-view.es.js","sources":["../../../../src/domains/logs/components/logs-list-view.tsx"],"sourcesContent":["import { useVirtualizer } from '@tanstack/react-virtual';\nimport { useEffect, useRef } from 'react';\nimport type { LogRecord } from '../types';\nimport { useDataListKeyboard } from '@/ds/components/DataList';\nimport type { DataListSort } from '@/ds/components/DataList';\nimport { LogsDataList, LogsDataListSkeleton } from '@/ds/components/LogsDataList';\n\n// Fixed widths on non-flex columns prevent track shifts as the virtualizer swaps rows in/out.\nconst COLUMNS = '6rem 9rem 5rem 10rem minmax(8rem,1fr) minmax(8rem,1fr)';\n\nconst ROW_HEIGHT = 36;\nconst OVERSCAN = 8;\n\nexport interface LogsListViewProps {\n logs: LogRecord[];\n isLoading?: boolean;\n isFetchingNextPage?: boolean;\n hasNextPage?: boolean;\n setEndOfListElement?: (element: HTMLDivElement | null) => void;\n /** Stable per-render id for each log — used for React keys and for matching against `featuredLogId`.\n * Build with `useLogsListNavigation`. */\n logIdMap: Map<LogRecord, string>;\n /** Currently featured/selected log — its row gets the highlighted background. */\n featuredLogId?: string | null;\n /** Called when a row is clicked. The current toggle + trace-sync logic is the consumer's call. */\n onLogClick: (log: LogRecord) => void;\n /** Current timestamp sort direction. When `onSortChange` is provided the Date/Time headers become sortable. */\n timestampSort?: DataListSort;\n onSortChange?: (direction: DataListSort, key: 'timestamp') => void;\n}\n\n/**\n * Virtualized presentational list. Renders only the visible window of logs via\n * TanStack Virtual, sandwiched between top/bottom Spacers that preserve total\n * scroll height. Owns no state and fetches no data.\n */\nexport function LogsListView({\n logs,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n logIdMap,\n featuredLogId,\n onLogClick,\n timestampSort,\n onSortChange,\n}: LogsListViewProps) {\n const scrollRef = useRef<HTMLDivElement | null>(null);\n\n const virtualizer = useVirtualizer({\n count: logs.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: () => ROW_HEIGHT,\n overscan: OVERSCAN,\n });\n\n const { getRowProps } = useDataListKeyboard({\n count: logs.length,\n containerRef: scrollRef,\n onNavigate: index => virtualizer.scrollToIndex(index),\n global: true,\n });\n\n // Reset scroll to top whenever a fresh query resolves (filter / date range change).\n // `isLoading` only flips on initial fetches — `fetchNextPage` keeps it `false`, so this\n // effect doesn't fire during pagination.\n //\n // Why the manual scroll event: when the skeleton-vs-list branch swaps in the new scroll\n // container, it mounts at `scrollTop = 0`. The virtualizer rebinds its listener but\n // doesn't re-read `scrollTop`, so it keeps the stale `scrollOffset` from the previous\n // element. `scrollToOffset(0)` no-ops because the new element is already at 0 (no scroll\n // event fires). Dispatching a synthetic `scroll` forces the virtualizer's handler to\n // read the fresh `scrollTop` and recompute `virtualItems` with `paddingTop = 0`.\n const wasLoadingRef = useRef(isLoading);\n useEffect(() => {\n if (wasLoadingRef.current && !isLoading) {\n scrollRef.current?.dispatchEvent(new Event('scroll'));\n }\n wasLoadingRef.current = isLoading;\n }, [isLoading]);\n\n if (isLoading) {\n return <LogsDataListSkeleton columns={COLUMNS} fit=\"container\" />;\n }\n\n const virtualItems = virtualizer.getVirtualItems();\n const totalSize = virtualizer.getTotalSize();\n const paddingTop = virtualItems[0]?.start ?? 0;\n const paddingBottom =\n virtualItems.length > 0 ? Math.max(0, totalSize - (virtualItems[virtualItems.length - 1]?.end ?? 0)) : 0;\n\n return (\n <LogsDataList columns={COLUMNS} scrollRef={scrollRef} className=\"min-w-0\" fit=\"container\">\n <LogsDataList.Top>\n {onSortChange ? (\n <LogsDataList.SortableTopCell sortKey=\"timestamp\" sort={timestampSort} onSortChange={onSortChange}>\n Date\n </LogsDataList.SortableTopCell>\n ) : (\n <LogsDataList.TopCell>Date</LogsDataList.TopCell>\n )}\n <LogsDataList.TopCell>Time</LogsDataList.TopCell>\n <LogsDataList.TopCell>Level</LogsDataList.TopCell>\n <LogsDataList.TopCell>Entity</LogsDataList.TopCell>\n <LogsDataList.TopCell>Message</LogsDataList.TopCell>\n <LogsDataList.TopCell>Data</LogsDataList.TopCell>\n </LogsDataList.Top>\n\n {logs.length === 0 ? (\n <LogsDataList.NoMatch message=\"No logs match your search\" />\n ) : (\n <>\n <LogsDataList.Spacer height={paddingTop} />\n {virtualItems.map(vi => {\n const log = logs[vi.index];\n if (!log) return null;\n const id = logIdMap.get(log);\n // Defensive: consumer is expected to build `logIdMap` from the same `logs` list\n // (via `useLogsListNavigation`), but if they drift we'd rather drop the row than\n // ship a missing-key warning and broken selection highlighting.\n if (!id) return null;\n const isFeatured = id === featuredLogId;\n\n return (\n <LogsDataList.RowButton\n key={id}\n ref={virtualizer.measureElement}\n data-index={vi.index}\n {...getRowProps(vi.index)}\n onClick={() => onLogClick(log)}\n featured={isFeatured}\n variant={log.level === 'error' || log.level === 'fatal' ? 'error' : 'default'}\n >\n <LogsDataList.DateCell timestamp={log.timestamp} />\n <LogsDataList.TimeCell timestamp={log.timestamp} />\n <LogsDataList.LevelCell level={log.level} />\n <LogsDataList.EntityCell entityType={log.entityType} entityName={log.entityName} />\n <LogsDataList.MessageCell message={log.message} />\n <LogsDataList.DataCell data={log.data} />\n </LogsDataList.RowButton>\n );\n })}\n <LogsDataList.Spacer height={paddingBottom} />\n </>\n )}\n <LogsDataList.NextPageLoading\n isLoading={isFetchingNextPage}\n hasMore={hasNextPage}\n setEndOfListElement={setEndOfListElement}\n />\n </LogsDataList>\n );\n}\n"],"names":["LogsDataListSkeleton"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-logs-filter-persistence.cjs.js","sources":["../../../../src/domains/logs/hooks/use-logs-filter-persistence.tsx"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\nimport
|
|
1
|
+
{"version":3,"file":"use-logs-filter-persistence.cjs.js","sources":["../../../../src/domains/logs/hooks/use-logs-filter-persistence.tsx"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\nimport {\n clearSavedLogsFilters,\n hasAnyLogsFilterParams,\n loadLogsFiltersFromStorage,\n saveLogsFiltersToStorage,\n} from '../log-filters';\nimport type { SetURLSearchParamsLike } from '@/lib/sort/use-url-sort';\nimport { toast } from '@/lib/toast';\n\nconst DEFAULT_SAVED_MESSAGE = 'Filters setting for Logs saved';\nconst DEFAULT_CLEARED_MESSAGE = 'Filters setting for Logs cleared up';\n\nexport interface LogsFilterPersistenceOptions {\n /** Override the localStorage key. Default: logs filters storage. */\n storageKey?: string;\n /** Toast text overrides; pass `false` to suppress the toast entirely. */\n messages?: {\n saved?: string | false;\n cleared?: string | false;\n };\n /** Skip the once-on-mount hydration from localStorage. Default: false. */\n skipHydration?: boolean;\n}\n\nexport interface UseLogsFilterPersistenceResult {\n hasSavedFilters: boolean;\n handleSave: () => void;\n handleRemoveSaved: () => void;\n}\n\n/**\n * Owns the localStorage save/restore lifecycle for logs filters.\n */\nexport function useLogsFilterPersistence(\n searchParams: URLSearchParams,\n setSearchParams: SetURLSearchParamsLike,\n options?: LogsFilterPersistenceOptions,\n): UseLogsFilterPersistenceResult {\n const { storageKey, messages, skipHydration } = options ?? {};\n\n const [hasSavedFilters, setHasSavedFilters] = useState(() => loadLogsFiltersFromStorage(storageKey) !== null);\n\n const handleSave = useCallback(() => {\n saveLogsFiltersToStorage(searchParams, storageKey);\n setHasSavedFilters(true);\n const text = messages?.saved ?? DEFAULT_SAVED_MESSAGE;\n if (text !== false) toast.success(text);\n }, [searchParams, storageKey, messages?.saved]);\n\n const handleRemoveSaved = useCallback(() => {\n clearSavedLogsFilters(storageKey);\n setHasSavedFilters(false);\n const text = messages?.cleared ?? DEFAULT_CLEARED_MESSAGE;\n if (text !== false) toast.success(text);\n }, [storageKey, messages?.cleared]);\n\n const hydratedRef = useRef(false);\n useEffect(() => {\n if (skipHydration) return;\n if (hydratedRef.current) return;\n hydratedRef.current = true;\n if (hasAnyLogsFilterParams(searchParams)) return;\n const saved = loadLogsFiltersFromStorage(storageKey);\n if (!saved) return;\n setSearchParams(\n prev => {\n const next = new URLSearchParams(prev);\n for (const [key, value] of saved) {\n next.append(key, value);\n }\n return next;\n },\n { replace: true },\n );\n // Run once on mount — searchParams intentionally read at mount time.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return { hasSavedFilters, handleSave, handleRemoveSaved };\n}\n"],"names":["useState","loadLogsFiltersFromStorage","useCallback","saveLogsFiltersToStorage","toast","clearSavedLogsFilters","useRef","useEffect","hasAnyLogsFilterParams"],"mappings":";;;;;;;;AAUA,MAAM,qBAAA,GAAwB,gCAAA;AAC9B,MAAM,uBAAA,GAA0B,qCAAA;AAuBzB,SAAS,wBAAA,CACd,YAAA,EACA,eAAA,EACA,OAAA,EACgC;AAChC,EAAA,MAAM,EAAE,UAAA,EAAY,QAAA,EAAU,aAAA,EAAc,GAAI,WAAW,EAAC;AAE5D,EAAA,MAAM,CAAC,iBAAiB,kBAAkB,CAAA,GAAIA,eAAS,MAAMC,kDAAA,CAA2B,UAAU,CAAA,KAAM,IAAI,CAAA;AAE5G,EAAA,MAAM,UAAA,GAAaC,kBAAY,MAAM;AACnC,IAAAC,gDAAA,CAAyB,cAAc,UAAU,CAAA;AACjD,IAAA,kBAAA,CAAmB,IAAI,CAAA;AACvB,IAAA,MAAM,IAAA,GAAO,UAAU,KAAA,IAAS,qBAAA;AAChC,IAAA,IAAI,IAAA,KAAS,KAAA,EAAOC,WAAA,CAAM,OAAA,CAAQ,IAAI,CAAA;AAAA,EACxC,GAAG,CAAC,YAAA,EAAc,UAAA,EAAY,QAAA,EAAU,KAAK,CAAC,CAAA;AAE9C,EAAA,MAAM,iBAAA,GAAoBF,kBAAY,MAAM;AAC1C,IAAAG,6CAAA,CAAsB,UAAU,CAAA;AAChC,IAAA,kBAAA,CAAmB,KAAK,CAAA;AACxB,IAAA,MAAM,IAAA,GAAO,UAAU,OAAA,IAAW,uBAAA;AAClC,IAAA,IAAI,IAAA,KAAS,KAAA,EAAOD,WAAA,CAAM,OAAA,CAAQ,IAAI,CAAA;AAAA,EACxC,CAAA,EAAG,CAAC,UAAA,EAAY,QAAA,EAAU,OAAO,CAAC,CAAA;AAElC,EAAA,MAAM,WAAA,GAAcE,aAAO,KAAK,CAAA;AAChC,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,aAAA,EAAe;AACnB,IAAA,IAAI,YAAY,OAAA,EAAS;AACzB,IAAA,WAAA,CAAY,OAAA,GAAU,IAAA;AACtB,IAAA,IAAIC,8CAAA,CAAuB,YAAY,CAAA,EAAG;AAC1C,IAAA,MAAM,KAAA,GAAQP,mDAA2B,UAAU,CAAA;AACnD,IAAA,IAAI,CAAC,KAAA,EAAO;AACZ,IAAA,eAAA;AAAA,MACE,CAAA,IAAA,KAAQ;AACN,QAAA,MAAM,IAAA,GAAO,IAAI,eAAA,CAAgB,IAAI,CAAA;AACrC,QAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,CAAA,IAAK,KAAA,EAAO;AAChC,UAAA,IAAA,CAAK,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA,QACxB;AACA,QAAA,OAAO,IAAA;AAAA,MACT,CAAA;AAAA,MACA,EAAE,SAAS,IAAA;AAAK,KAClB;AAAA,EAGF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO,EAAE,eAAA,EAAiB,UAAA,EAAY,iBAAA,EAAkB;AAC1D;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-logs-filter-persistence.es.js","sources":["../../../../src/domains/logs/hooks/use-logs-filter-persistence.tsx"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\nimport
|
|
1
|
+
{"version":3,"file":"use-logs-filter-persistence.es.js","sources":["../../../../src/domains/logs/hooks/use-logs-filter-persistence.tsx"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\nimport {\n clearSavedLogsFilters,\n hasAnyLogsFilterParams,\n loadLogsFiltersFromStorage,\n saveLogsFiltersToStorage,\n} from '../log-filters';\nimport type { SetURLSearchParamsLike } from '@/lib/sort/use-url-sort';\nimport { toast } from '@/lib/toast';\n\nconst DEFAULT_SAVED_MESSAGE = 'Filters setting for Logs saved';\nconst DEFAULT_CLEARED_MESSAGE = 'Filters setting for Logs cleared up';\n\nexport interface LogsFilterPersistenceOptions {\n /** Override the localStorage key. Default: logs filters storage. */\n storageKey?: string;\n /** Toast text overrides; pass `false` to suppress the toast entirely. */\n messages?: {\n saved?: string | false;\n cleared?: string | false;\n };\n /** Skip the once-on-mount hydration from localStorage. Default: false. */\n skipHydration?: boolean;\n}\n\nexport interface UseLogsFilterPersistenceResult {\n hasSavedFilters: boolean;\n handleSave: () => void;\n handleRemoveSaved: () => void;\n}\n\n/**\n * Owns the localStorage save/restore lifecycle for logs filters.\n */\nexport function useLogsFilterPersistence(\n searchParams: URLSearchParams,\n setSearchParams: SetURLSearchParamsLike,\n options?: LogsFilterPersistenceOptions,\n): UseLogsFilterPersistenceResult {\n const { storageKey, messages, skipHydration } = options ?? {};\n\n const [hasSavedFilters, setHasSavedFilters] = useState(() => loadLogsFiltersFromStorage(storageKey) !== null);\n\n const handleSave = useCallback(() => {\n saveLogsFiltersToStorage(searchParams, storageKey);\n setHasSavedFilters(true);\n const text = messages?.saved ?? DEFAULT_SAVED_MESSAGE;\n if (text !== false) toast.success(text);\n }, [searchParams, storageKey, messages?.saved]);\n\n const handleRemoveSaved = useCallback(() => {\n clearSavedLogsFilters(storageKey);\n setHasSavedFilters(false);\n const text = messages?.cleared ?? DEFAULT_CLEARED_MESSAGE;\n if (text !== false) toast.success(text);\n }, [storageKey, messages?.cleared]);\n\n const hydratedRef = useRef(false);\n useEffect(() => {\n if (skipHydration) return;\n if (hydratedRef.current) return;\n hydratedRef.current = true;\n if (hasAnyLogsFilterParams(searchParams)) return;\n const saved = loadLogsFiltersFromStorage(storageKey);\n if (!saved) return;\n setSearchParams(\n prev => {\n const next = new URLSearchParams(prev);\n for (const [key, value] of saved) {\n next.append(key, value);\n }\n return next;\n },\n { replace: true },\n );\n // Run once on mount — searchParams intentionally read at mount time.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return { hasSavedFilters, handleSave, handleRemoveSaved };\n}\n"],"names":[],"mappings":";;;;AAUA,MAAM,qBAAA,GAAwB,gCAAA;AAC9B,MAAM,uBAAA,GAA0B,qCAAA;AAuBzB,SAAS,wBAAA,CACd,YAAA,EACA,eAAA,EACA,OAAA,EACgC;AAChC,EAAA,MAAM,EAAE,UAAA,EAAY,QAAA,EAAU,aAAA,EAAc,GAAI,WAAW,EAAC;AAE5D,EAAA,MAAM,CAAC,iBAAiB,kBAAkB,CAAA,GAAI,SAAS,MAAM,0BAAA,CAA2B,UAAU,CAAA,KAAM,IAAI,CAAA;AAE5G,EAAA,MAAM,UAAA,GAAa,YAAY,MAAM;AACnC,IAAA,wBAAA,CAAyB,cAAc,UAAU,CAAA;AACjD,IAAA,kBAAA,CAAmB,IAAI,CAAA;AACvB,IAAA,MAAM,IAAA,GAAO,UAAU,KAAA,IAAS,qBAAA;AAChC,IAAA,IAAI,IAAA,KAAS,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA;AAAA,EACxC,GAAG,CAAC,YAAA,EAAc,UAAA,EAAY,QAAA,EAAU,KAAK,CAAC,CAAA;AAE9C,EAAA,MAAM,iBAAA,GAAoB,YAAY,MAAM;AAC1C,IAAA,qBAAA,CAAsB,UAAU,CAAA;AAChC,IAAA,kBAAA,CAAmB,KAAK,CAAA;AACxB,IAAA,MAAM,IAAA,GAAO,UAAU,OAAA,IAAW,uBAAA;AAClC,IAAA,IAAI,IAAA,KAAS,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA;AAAA,EACxC,CAAA,EAAG,CAAC,UAAA,EAAY,QAAA,EAAU,OAAO,CAAC,CAAA;AAElC,EAAA,MAAM,WAAA,GAAc,OAAO,KAAK,CAAA;AAChC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,aAAA,EAAe;AACnB,IAAA,IAAI,YAAY,OAAA,EAAS;AACzB,IAAA,WAAA,CAAY,OAAA,GAAU,IAAA;AACtB,IAAA,IAAI,sBAAA,CAAuB,YAAY,CAAA,EAAG;AAC1C,IAAA,MAAM,KAAA,GAAQ,2BAA2B,UAAU,CAAA;AACnD,IAAA,IAAI,CAAC,KAAA,EAAO;AACZ,IAAA,eAAA;AAAA,MACE,CAAA,IAAA,KAAQ;AACN,QAAA,MAAM,IAAA,GAAO,IAAI,eAAA,CAAgB,IAAI,CAAA;AACrC,QAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,CAAA,IAAK,KAAA,EAAO;AAChC,UAAA,IAAA,CAAK,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA,QACxB;AACA,QAAA,OAAO,IAAA;AAAA,MACT,CAAA;AAAA,MACA,EAAE,SAAS,IAAA;AAAK,KAClB;AAAA,EAGF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO,EAAE,eAAA,EAAiB,UAAA,EAAY,iBAAA,EAAkB;AAC1D;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-logs-url-state.cjs.js","sources":["../../../../src/domains/logs/hooks/use-logs-url-state.tsx"],"sourcesContent":["import { useCallback, useMemo, useRef } from 'react';\nimport type { SetURLSearchParamsLike } from '../../traces/hooks/use-trace-url-state';\nimport {\n LOGS_DATE_FROM_PARAM,\n LOGS_DATE_PRESET_PARAM,\n LOGS_DATE_PRESET_VALUES,\n LOGS_DATE_TO_PARAM,\n LOGS_PROPERTY_FILTER_FIELD_IDS,\n LOGS_PROPERTY_FILTER_PARAM_BY_FIELD,\n LOGS_ROOT_ENTITY_TYPE_OPTIONS,\n LOGS_ROOT_ENTITY_TYPE_PARAM,\n applyLogsPropertyFilterTokens,\n getLogsPropertyFilterTokens,\n} from '../log-filters';\nimport type { LogsDatePreset, LogsEntityOptions } from '../log-filters';\nimport type { PropertyFilterToken } from '@/ds/components/PropertyFilter/types';\n\nconst LOG_PARAM = 'logId';\nconst TRACE_PARAM = 'traceId';\nconst SPAN_PARAM = 'spanId';\n\nconst DAY_MS = 24 * 60 * 60 * 1000;\nconst PRESET_MS: Partial<Record<LogsDatePreset, number>> = {\n 'last-24h': DAY_MS,\n 'last-3d': 3 * DAY_MS,\n 'last-7d': 7 * DAY_MS,\n 'last-14d': 14 * DAY_MS,\n 'last-30d': 30 * DAY_MS,\n};\n\n/** Mutates `params` in place to drop the featured log/trace/span selection.\n * Used whenever a filter changes — selection no longer makes sense in the new result set. */\nfunction clearSelectionParams(params: URLSearchParams) {\n params.delete(LOG_PARAM);\n params.delete(TRACE_PARAM);\n params.delete(SPAN_PARAM);\n}\n\nexport interface LogsFeaturedIds {\n logId?: string | null;\n traceId?: string | null;\n spanId?: string | null;\n}\n\nexport interface UseLogsUrlStateOptions {\n /** Called after `handleRemoveAll` clears all filter URL params. */\n onRemoveAll?: () => void;\n}\n\nexport interface UseLogsUrlStateResult {\n searchParams: URLSearchParams;\n setSearchParams: SetURLSearchParamsLike;\n\n datePreset: LogsDatePreset;\n selectedDateFrom: Date | undefined;\n selectedDateTo: Date | undefined;\n datePresetRef: React.MutableRefObject<LogsDatePreset>;\n\n featuredLogId: string | null;\n featuredTraceId: string | null;\n featuredSpanId: string | null;\n\n selectedEntityOption: LogsEntityOptions | undefined;\n filterTokens: PropertyFilterToken[];\n\n /** Partial update of the featured log/trace/span selection. Omitted keys are left as-is. */\n handleFeaturedChange: (ids: LogsFeaturedIds) => void;\n handleFilterTokensChange: (nextTokens: PropertyFilterToken[]) => void;\n handleDateChange: (value: Date | undefined, type: 'from' | 'to') => void;\n handleDatePresetChange: (preset: LogsDatePreset) => void;\n handleRemoveAll: () => void;\n\n /** Lower-level helper used by `handleClear`: writes a token set and clears the log/trace/span selection. */\n applyFilterTokens: (tokens: PropertyFilterToken[]) => void;\n}\n\n/**\n * Owns all URL-derived state and URL-modifying handlers for the logs page. Routing-agnostic —\n * pass `searchParams` and `setSearchParams` from whichever router the consumer uses.\n */\nexport function useLogsUrlState(\n searchParams: URLSearchParams,\n setSearchParams: SetURLSearchParamsLike,\n options?: UseLogsUrlStateOptions,\n): UseLogsUrlStateResult {\n const { onRemoveAll } = options ?? {};\n\n const datePreset = useMemo<LogsDatePreset>(() => {\n const value = searchParams.get(LOGS_DATE_PRESET_PARAM);\n return value && LOGS_DATE_PRESET_VALUES.has(value as LogsDatePreset) ? (value as LogsDatePreset) : 'last-24h';\n }, [searchParams]);\n\n const dateFromParamRaw = searchParams.get(LOGS_DATE_FROM_PARAM);\n const dateToParamRaw = searchParams.get(LOGS_DATE_TO_PARAM);\n\n const selectedDateFrom = useMemo(() => {\n if (datePreset === 'custom') {\n if (!dateFromParamRaw) return undefined;\n const parsed = new Date(dateFromParamRaw);\n return Number.isNaN(parsed.getTime()) ? undefined : parsed;\n }\n if (datePreset === 'all') return undefined;\n const ms = PRESET_MS[datePreset];\n return ms ? new Date(Date.now() - ms) : undefined;\n }, [datePreset, dateFromParamRaw]);\n\n const selectedDateTo = useMemo(() => {\n if (datePreset !== 'custom' || !dateToParamRaw) return undefined;\n const parsed = new Date(dateToParamRaw);\n return Number.isNaN(parsed.getTime()) ? undefined : parsed;\n }, [datePreset, dateToParamRaw]);\n\n const datePresetRef = useRef(datePreset);\n datePresetRef.current = datePreset;\n\n const featuredLogId = searchParams.get(LOG_PARAM);\n const featuredTraceId = searchParams.get(TRACE_PARAM);\n const featuredSpanId = searchParams.get(SPAN_PARAM);\n\n const selectedEntityOption = useMemo(\n () =>\n LOGS_ROOT_ENTITY_TYPE_OPTIONS.find(option => option.entityType === searchParams.get(LOGS_ROOT_ENTITY_TYPE_PARAM)),\n [searchParams],\n );\n\n const filterTokens = useMemo(() => getLogsPropertyFilterTokens(searchParams), [searchParams]);\n\n const handleFeaturedChange = useCallback(\n (ids: LogsFeaturedIds) => {\n setSearchParams(\n prev => {\n const next = new URLSearchParams(prev);\n for (const [field, value] of Object.entries(ids)) {\n const param = field === 'logId' ? LOG_PARAM : field === 'traceId' ? TRACE_PARAM : SPAN_PARAM;\n if (value) {\n next.set(param, value);\n } else {\n next.delete(param);\n }\n }\n return next;\n },\n { replace: true },\n );\n },\n [setSearchParams],\n );\n\n const applyFilterTokens = useCallback(\n (tokens: PropertyFilterToken[]) => {\n setSearchParams(\n prev => {\n const next = new URLSearchParams(prev);\n applyLogsPropertyFilterTokens(next, tokens);\n clearSelectionParams(next);\n return next;\n },\n { replace: true },\n );\n },\n [setSearchParams],\n );\n\n const handleFilterTokensChange = applyFilterTokens;\n\n const handleDateChange = useCallback(\n (value: Date | undefined, type: 'from' | 'to') => {\n if (datePresetRef.current !== 'custom') return;\n const param = type === 'from' ? LOGS_DATE_FROM_PARAM : LOGS_DATE_TO_PARAM;\n setSearchParams(\n prev => {\n const next = new URLSearchParams(prev);\n if (value) {\n next.set(param, value.toISOString());\n } else {\n next.delete(param);\n }\n clearSelectionParams(next);\n return next;\n },\n { replace: true },\n );\n },\n [setSearchParams],\n );\n\n const handleDatePresetChange = useCallback(\n (preset: LogsDatePreset) => {\n datePresetRef.current = preset;\n setSearchParams(\n prev => {\n const next = new URLSearchParams(prev);\n if (preset === 'last-24h') {\n next.delete(LOGS_DATE_PRESET_PARAM);\n next.delete(LOGS_DATE_FROM_PARAM);\n next.delete(LOGS_DATE_TO_PARAM);\n } else if (preset === 'custom') {\n next.set(LOGS_DATE_PRESET_PARAM, 'custom');\n } else {\n next.set(LOGS_DATE_PRESET_PARAM, preset);\n next.delete(LOGS_DATE_FROM_PARAM);\n next.delete(LOGS_DATE_TO_PARAM);\n }\n clearSelectionParams(next);\n return next;\n },\n { replace: true },\n );\n },\n [setSearchParams],\n );\n\n const handleRemoveAll = useCallback(() => {\n setSearchParams(\n prev => {\n const next = new URLSearchParams(prev);\n next.delete(LOGS_ROOT_ENTITY_TYPE_PARAM);\n for (const fieldId of LOGS_PROPERTY_FILTER_FIELD_IDS) {\n next.delete(LOGS_PROPERTY_FILTER_PARAM_BY_FIELD[fieldId]);\n }\n next.delete(LOGS_DATE_PRESET_PARAM);\n next.delete(LOGS_DATE_FROM_PARAM);\n next.delete(LOGS_DATE_TO_PARAM);\n clearSelectionParams(next);\n return next;\n },\n { replace: true },\n );\n onRemoveAll?.();\n }, [setSearchParams, onRemoveAll]);\n\n return useMemo(\n () => ({\n searchParams,\n setSearchParams,\n datePreset,\n selectedDateFrom,\n selectedDateTo,\n datePresetRef,\n featuredLogId,\n featuredTraceId,\n featuredSpanId,\n selectedEntityOption,\n filterTokens,\n handleFeaturedChange,\n handleFilterTokensChange,\n handleDateChange,\n handleDatePresetChange,\n handleRemoveAll,\n applyFilterTokens,\n }),\n [\n searchParams,\n setSearchParams,\n datePreset,\n selectedDateFrom,\n selectedDateTo,\n datePresetRef,\n featuredLogId,\n featuredTraceId,\n featuredSpanId,\n selectedEntityOption,\n filterTokens,\n handleFeaturedChange,\n handleFilterTokensChange,\n handleDateChange,\n handleDatePresetChange,\n handleRemoveAll,\n applyFilterTokens,\n ],\n );\n}\n"],"names":["useMemo","LOGS_DATE_PRESET_PARAM","LOGS_DATE_PRESET_VALUES","LOGS_DATE_FROM_PARAM","LOGS_DATE_TO_PARAM","useRef","LOGS_ROOT_ENTITY_TYPE_OPTIONS","LOGS_ROOT_ENTITY_TYPE_PARAM","getLogsPropertyFilterTokens","useCallback","applyLogsPropertyFilterTokens","LOGS_PROPERTY_FILTER_FIELD_IDS","LOGS_PROPERTY_FILTER_PARAM_BY_FIELD"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"use-logs-url-state.cjs.js","sources":["../../../../src/domains/logs/hooks/use-logs-url-state.tsx"],"sourcesContent":["import { useCallback, useMemo, useRef } from 'react';\nimport {\n LOGS_DATE_FROM_PARAM,\n LOGS_DATE_PRESET_PARAM,\n LOGS_DATE_PRESET_VALUES,\n LOGS_DATE_TO_PARAM,\n LOGS_PROPERTY_FILTER_FIELD_IDS,\n LOGS_PROPERTY_FILTER_PARAM_BY_FIELD,\n LOGS_ROOT_ENTITY_TYPE_OPTIONS,\n LOGS_ROOT_ENTITY_TYPE_PARAM,\n applyLogsPropertyFilterTokens,\n getLogsPropertyFilterTokens,\n} from '../log-filters';\nimport type { LogsDatePreset, LogsEntityOptions } from '../log-filters';\nimport type { PropertyFilterToken } from '@/ds/components/PropertyFilter/types';\nimport type { SetURLSearchParamsLike } from '@/lib/sort/use-url-sort';\n\nconst LOG_PARAM = 'logId';\nconst TRACE_PARAM = 'traceId';\nconst SPAN_PARAM = 'spanId';\n\nconst DAY_MS = 24 * 60 * 60 * 1000;\nconst PRESET_MS: Partial<Record<LogsDatePreset, number>> = {\n 'last-24h': DAY_MS,\n 'last-3d': 3 * DAY_MS,\n 'last-7d': 7 * DAY_MS,\n 'last-14d': 14 * DAY_MS,\n 'last-30d': 30 * DAY_MS,\n};\n\n/** Mutates `params` in place to drop the featured log/trace/span selection.\n * Used whenever a filter changes — selection no longer makes sense in the new result set. */\nfunction clearSelectionParams(params: URLSearchParams) {\n params.delete(LOG_PARAM);\n params.delete(TRACE_PARAM);\n params.delete(SPAN_PARAM);\n}\n\nexport interface LogsFeaturedIds {\n logId?: string | null;\n traceId?: string | null;\n spanId?: string | null;\n}\n\nexport interface UseLogsUrlStateOptions {\n /** Called after `handleRemoveAll` clears all filter URL params. */\n onRemoveAll?: () => void;\n}\n\nexport interface UseLogsUrlStateResult {\n searchParams: URLSearchParams;\n setSearchParams: SetURLSearchParamsLike;\n\n datePreset: LogsDatePreset;\n selectedDateFrom: Date | undefined;\n selectedDateTo: Date | undefined;\n datePresetRef: React.MutableRefObject<LogsDatePreset>;\n\n featuredLogId: string | null;\n featuredTraceId: string | null;\n featuredSpanId: string | null;\n\n selectedEntityOption: LogsEntityOptions | undefined;\n filterTokens: PropertyFilterToken[];\n\n /** Partial update of the featured log/trace/span selection. Omitted keys are left as-is. */\n handleFeaturedChange: (ids: LogsFeaturedIds) => void;\n handleFilterTokensChange: (nextTokens: PropertyFilterToken[]) => void;\n handleDateChange: (value: Date | undefined, type: 'from' | 'to') => void;\n handleDatePresetChange: (preset: LogsDatePreset) => void;\n handleRemoveAll: () => void;\n\n /** Lower-level helper used by `handleClear`: writes a token set and clears the log/trace/span selection. */\n applyFilterTokens: (tokens: PropertyFilterToken[]) => void;\n}\n\n/**\n * Owns all URL-derived state and URL-modifying handlers for the logs page. Routing-agnostic —\n * pass `searchParams` and `setSearchParams` from whichever router the consumer uses.\n */\nexport function useLogsUrlState(\n searchParams: URLSearchParams,\n setSearchParams: SetURLSearchParamsLike,\n options?: UseLogsUrlStateOptions,\n): UseLogsUrlStateResult {\n const { onRemoveAll } = options ?? {};\n\n const datePreset = useMemo<LogsDatePreset>(() => {\n const value = searchParams.get(LOGS_DATE_PRESET_PARAM);\n return value && LOGS_DATE_PRESET_VALUES.has(value as LogsDatePreset) ? (value as LogsDatePreset) : 'last-24h';\n }, [searchParams]);\n\n const dateFromParamRaw = searchParams.get(LOGS_DATE_FROM_PARAM);\n const dateToParamRaw = searchParams.get(LOGS_DATE_TO_PARAM);\n\n const selectedDateFrom = useMemo(() => {\n if (datePreset === 'custom') {\n if (!dateFromParamRaw) return undefined;\n const parsed = new Date(dateFromParamRaw);\n return Number.isNaN(parsed.getTime()) ? undefined : parsed;\n }\n if (datePreset === 'all') return undefined;\n const ms = PRESET_MS[datePreset];\n return ms ? new Date(Date.now() - ms) : undefined;\n }, [datePreset, dateFromParamRaw]);\n\n const selectedDateTo = useMemo(() => {\n if (datePreset !== 'custom' || !dateToParamRaw) return undefined;\n const parsed = new Date(dateToParamRaw);\n return Number.isNaN(parsed.getTime()) ? undefined : parsed;\n }, [datePreset, dateToParamRaw]);\n\n const datePresetRef = useRef(datePreset);\n datePresetRef.current = datePreset;\n\n const featuredLogId = searchParams.get(LOG_PARAM);\n const featuredTraceId = searchParams.get(TRACE_PARAM);\n const featuredSpanId = searchParams.get(SPAN_PARAM);\n\n const selectedEntityOption = useMemo(\n () =>\n LOGS_ROOT_ENTITY_TYPE_OPTIONS.find(option => option.entityType === searchParams.get(LOGS_ROOT_ENTITY_TYPE_PARAM)),\n [searchParams],\n );\n\n const filterTokens = useMemo(() => getLogsPropertyFilterTokens(searchParams), [searchParams]);\n\n const handleFeaturedChange = useCallback(\n (ids: LogsFeaturedIds) => {\n setSearchParams(\n prev => {\n const next = new URLSearchParams(prev);\n for (const [field, value] of Object.entries(ids)) {\n const param = field === 'logId' ? LOG_PARAM : field === 'traceId' ? TRACE_PARAM : SPAN_PARAM;\n if (value) {\n next.set(param, value);\n } else {\n next.delete(param);\n }\n }\n return next;\n },\n { replace: true },\n );\n },\n [setSearchParams],\n );\n\n const applyFilterTokens = useCallback(\n (tokens: PropertyFilterToken[]) => {\n setSearchParams(\n prev => {\n const next = new URLSearchParams(prev);\n applyLogsPropertyFilterTokens(next, tokens);\n clearSelectionParams(next);\n return next;\n },\n { replace: true },\n );\n },\n [setSearchParams],\n );\n\n const handleFilterTokensChange = applyFilterTokens;\n\n const handleDateChange = useCallback(\n (value: Date | undefined, type: 'from' | 'to') => {\n if (datePresetRef.current !== 'custom') return;\n const param = type === 'from' ? LOGS_DATE_FROM_PARAM : LOGS_DATE_TO_PARAM;\n setSearchParams(\n prev => {\n const next = new URLSearchParams(prev);\n if (value) {\n next.set(param, value.toISOString());\n } else {\n next.delete(param);\n }\n clearSelectionParams(next);\n return next;\n },\n { replace: true },\n );\n },\n [setSearchParams],\n );\n\n const handleDatePresetChange = useCallback(\n (preset: LogsDatePreset) => {\n datePresetRef.current = preset;\n setSearchParams(\n prev => {\n const next = new URLSearchParams(prev);\n if (preset === 'last-24h') {\n next.delete(LOGS_DATE_PRESET_PARAM);\n next.delete(LOGS_DATE_FROM_PARAM);\n next.delete(LOGS_DATE_TO_PARAM);\n } else if (preset === 'custom') {\n next.set(LOGS_DATE_PRESET_PARAM, 'custom');\n } else {\n next.set(LOGS_DATE_PRESET_PARAM, preset);\n next.delete(LOGS_DATE_FROM_PARAM);\n next.delete(LOGS_DATE_TO_PARAM);\n }\n clearSelectionParams(next);\n return next;\n },\n { replace: true },\n );\n },\n [setSearchParams],\n );\n\n const handleRemoveAll = useCallback(() => {\n setSearchParams(\n prev => {\n const next = new URLSearchParams(prev);\n next.delete(LOGS_ROOT_ENTITY_TYPE_PARAM);\n for (const fieldId of LOGS_PROPERTY_FILTER_FIELD_IDS) {\n next.delete(LOGS_PROPERTY_FILTER_PARAM_BY_FIELD[fieldId]);\n }\n next.delete(LOGS_DATE_PRESET_PARAM);\n next.delete(LOGS_DATE_FROM_PARAM);\n next.delete(LOGS_DATE_TO_PARAM);\n clearSelectionParams(next);\n return next;\n },\n { replace: true },\n );\n onRemoveAll?.();\n }, [setSearchParams, onRemoveAll]);\n\n return useMemo(\n () => ({\n searchParams,\n setSearchParams,\n datePreset,\n selectedDateFrom,\n selectedDateTo,\n datePresetRef,\n featuredLogId,\n featuredTraceId,\n featuredSpanId,\n selectedEntityOption,\n filterTokens,\n handleFeaturedChange,\n handleFilterTokensChange,\n handleDateChange,\n handleDatePresetChange,\n handleRemoveAll,\n applyFilterTokens,\n }),\n [\n searchParams,\n setSearchParams,\n datePreset,\n selectedDateFrom,\n selectedDateTo,\n datePresetRef,\n featuredLogId,\n featuredTraceId,\n featuredSpanId,\n selectedEntityOption,\n filterTokens,\n handleFeaturedChange,\n handleFilterTokensChange,\n handleDateChange,\n handleDatePresetChange,\n handleRemoveAll,\n applyFilterTokens,\n ],\n );\n}\n"],"names":["useMemo","LOGS_DATE_PRESET_PARAM","LOGS_DATE_PRESET_VALUES","LOGS_DATE_FROM_PARAM","LOGS_DATE_TO_PARAM","useRef","LOGS_ROOT_ENTITY_TYPE_OPTIONS","LOGS_ROOT_ENTITY_TYPE_PARAM","getLogsPropertyFilterTokens","useCallback","applyLogsPropertyFilterTokens","LOGS_PROPERTY_FILTER_FIELD_IDS","LOGS_PROPERTY_FILTER_PARAM_BY_FIELD"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-logs-url-state.es.js","sources":["../../../../src/domains/logs/hooks/use-logs-url-state.tsx"],"sourcesContent":["import { useCallback, useMemo, useRef } from 'react';\nimport type { SetURLSearchParamsLike } from '../../traces/hooks/use-trace-url-state';\nimport {\n LOGS_DATE_FROM_PARAM,\n LOGS_DATE_PRESET_PARAM,\n LOGS_DATE_PRESET_VALUES,\n LOGS_DATE_TO_PARAM,\n LOGS_PROPERTY_FILTER_FIELD_IDS,\n LOGS_PROPERTY_FILTER_PARAM_BY_FIELD,\n LOGS_ROOT_ENTITY_TYPE_OPTIONS,\n LOGS_ROOT_ENTITY_TYPE_PARAM,\n applyLogsPropertyFilterTokens,\n getLogsPropertyFilterTokens,\n} from '../log-filters';\nimport type { LogsDatePreset, LogsEntityOptions } from '../log-filters';\nimport type { PropertyFilterToken } from '@/ds/components/PropertyFilter/types';\n\nconst LOG_PARAM = 'logId';\nconst TRACE_PARAM = 'traceId';\nconst SPAN_PARAM = 'spanId';\n\nconst DAY_MS = 24 * 60 * 60 * 1000;\nconst PRESET_MS: Partial<Record<LogsDatePreset, number>> = {\n 'last-24h': DAY_MS,\n 'last-3d': 3 * DAY_MS,\n 'last-7d': 7 * DAY_MS,\n 'last-14d': 14 * DAY_MS,\n 'last-30d': 30 * DAY_MS,\n};\n\n/** Mutates `params` in place to drop the featured log/trace/span selection.\n * Used whenever a filter changes — selection no longer makes sense in the new result set. */\nfunction clearSelectionParams(params: URLSearchParams) {\n params.delete(LOG_PARAM);\n params.delete(TRACE_PARAM);\n params.delete(SPAN_PARAM);\n}\n\nexport interface LogsFeaturedIds {\n logId?: string | null;\n traceId?: string | null;\n spanId?: string | null;\n}\n\nexport interface UseLogsUrlStateOptions {\n /** Called after `handleRemoveAll` clears all filter URL params. */\n onRemoveAll?: () => void;\n}\n\nexport interface UseLogsUrlStateResult {\n searchParams: URLSearchParams;\n setSearchParams: SetURLSearchParamsLike;\n\n datePreset: LogsDatePreset;\n selectedDateFrom: Date | undefined;\n selectedDateTo: Date | undefined;\n datePresetRef: React.MutableRefObject<LogsDatePreset>;\n\n featuredLogId: string | null;\n featuredTraceId: string | null;\n featuredSpanId: string | null;\n\n selectedEntityOption: LogsEntityOptions | undefined;\n filterTokens: PropertyFilterToken[];\n\n /** Partial update of the featured log/trace/span selection. Omitted keys are left as-is. */\n handleFeaturedChange: (ids: LogsFeaturedIds) => void;\n handleFilterTokensChange: (nextTokens: PropertyFilterToken[]) => void;\n handleDateChange: (value: Date | undefined, type: 'from' | 'to') => void;\n handleDatePresetChange: (preset: LogsDatePreset) => void;\n handleRemoveAll: () => void;\n\n /** Lower-level helper used by `handleClear`: writes a token set and clears the log/trace/span selection. */\n applyFilterTokens: (tokens: PropertyFilterToken[]) => void;\n}\n\n/**\n * Owns all URL-derived state and URL-modifying handlers for the logs page. Routing-agnostic —\n * pass `searchParams` and `setSearchParams` from whichever router the consumer uses.\n */\nexport function useLogsUrlState(\n searchParams: URLSearchParams,\n setSearchParams: SetURLSearchParamsLike,\n options?: UseLogsUrlStateOptions,\n): UseLogsUrlStateResult {\n const { onRemoveAll } = options ?? {};\n\n const datePreset = useMemo<LogsDatePreset>(() => {\n const value = searchParams.get(LOGS_DATE_PRESET_PARAM);\n return value && LOGS_DATE_PRESET_VALUES.has(value as LogsDatePreset) ? (value as LogsDatePreset) : 'last-24h';\n }, [searchParams]);\n\n const dateFromParamRaw = searchParams.get(LOGS_DATE_FROM_PARAM);\n const dateToParamRaw = searchParams.get(LOGS_DATE_TO_PARAM);\n\n const selectedDateFrom = useMemo(() => {\n if (datePreset === 'custom') {\n if (!dateFromParamRaw) return undefined;\n const parsed = new Date(dateFromParamRaw);\n return Number.isNaN(parsed.getTime()) ? undefined : parsed;\n }\n if (datePreset === 'all') return undefined;\n const ms = PRESET_MS[datePreset];\n return ms ? new Date(Date.now() - ms) : undefined;\n }, [datePreset, dateFromParamRaw]);\n\n const selectedDateTo = useMemo(() => {\n if (datePreset !== 'custom' || !dateToParamRaw) return undefined;\n const parsed = new Date(dateToParamRaw);\n return Number.isNaN(parsed.getTime()) ? undefined : parsed;\n }, [datePreset, dateToParamRaw]);\n\n const datePresetRef = useRef(datePreset);\n datePresetRef.current = datePreset;\n\n const featuredLogId = searchParams.get(LOG_PARAM);\n const featuredTraceId = searchParams.get(TRACE_PARAM);\n const featuredSpanId = searchParams.get(SPAN_PARAM);\n\n const selectedEntityOption = useMemo(\n () =>\n LOGS_ROOT_ENTITY_TYPE_OPTIONS.find(option => option.entityType === searchParams.get(LOGS_ROOT_ENTITY_TYPE_PARAM)),\n [searchParams],\n );\n\n const filterTokens = useMemo(() => getLogsPropertyFilterTokens(searchParams), [searchParams]);\n\n const handleFeaturedChange = useCallback(\n (ids: LogsFeaturedIds) => {\n setSearchParams(\n prev => {\n const next = new URLSearchParams(prev);\n for (const [field, value] of Object.entries(ids)) {\n const param = field === 'logId' ? LOG_PARAM : field === 'traceId' ? TRACE_PARAM : SPAN_PARAM;\n if (value) {\n next.set(param, value);\n } else {\n next.delete(param);\n }\n }\n return next;\n },\n { replace: true },\n );\n },\n [setSearchParams],\n );\n\n const applyFilterTokens = useCallback(\n (tokens: PropertyFilterToken[]) => {\n setSearchParams(\n prev => {\n const next = new URLSearchParams(prev);\n applyLogsPropertyFilterTokens(next, tokens);\n clearSelectionParams(next);\n return next;\n },\n { replace: true },\n );\n },\n [setSearchParams],\n );\n\n const handleFilterTokensChange = applyFilterTokens;\n\n const handleDateChange = useCallback(\n (value: Date | undefined, type: 'from' | 'to') => {\n if (datePresetRef.current !== 'custom') return;\n const param = type === 'from' ? LOGS_DATE_FROM_PARAM : LOGS_DATE_TO_PARAM;\n setSearchParams(\n prev => {\n const next = new URLSearchParams(prev);\n if (value) {\n next.set(param, value.toISOString());\n } else {\n next.delete(param);\n }\n clearSelectionParams(next);\n return next;\n },\n { replace: true },\n );\n },\n [setSearchParams],\n );\n\n const handleDatePresetChange = useCallback(\n (preset: LogsDatePreset) => {\n datePresetRef.current = preset;\n setSearchParams(\n prev => {\n const next = new URLSearchParams(prev);\n if (preset === 'last-24h') {\n next.delete(LOGS_DATE_PRESET_PARAM);\n next.delete(LOGS_DATE_FROM_PARAM);\n next.delete(LOGS_DATE_TO_PARAM);\n } else if (preset === 'custom') {\n next.set(LOGS_DATE_PRESET_PARAM, 'custom');\n } else {\n next.set(LOGS_DATE_PRESET_PARAM, preset);\n next.delete(LOGS_DATE_FROM_PARAM);\n next.delete(LOGS_DATE_TO_PARAM);\n }\n clearSelectionParams(next);\n return next;\n },\n { replace: true },\n );\n },\n [setSearchParams],\n );\n\n const handleRemoveAll = useCallback(() => {\n setSearchParams(\n prev => {\n const next = new URLSearchParams(prev);\n next.delete(LOGS_ROOT_ENTITY_TYPE_PARAM);\n for (const fieldId of LOGS_PROPERTY_FILTER_FIELD_IDS) {\n next.delete(LOGS_PROPERTY_FILTER_PARAM_BY_FIELD[fieldId]);\n }\n next.delete(LOGS_DATE_PRESET_PARAM);\n next.delete(LOGS_DATE_FROM_PARAM);\n next.delete(LOGS_DATE_TO_PARAM);\n clearSelectionParams(next);\n return next;\n },\n { replace: true },\n );\n onRemoveAll?.();\n }, [setSearchParams, onRemoveAll]);\n\n return useMemo(\n () => ({\n searchParams,\n setSearchParams,\n datePreset,\n selectedDateFrom,\n selectedDateTo,\n datePresetRef,\n featuredLogId,\n featuredTraceId,\n featuredSpanId,\n selectedEntityOption,\n filterTokens,\n handleFeaturedChange,\n handleFilterTokensChange,\n handleDateChange,\n handleDatePresetChange,\n handleRemoveAll,\n applyFilterTokens,\n }),\n [\n searchParams,\n setSearchParams,\n datePreset,\n selectedDateFrom,\n selectedDateTo,\n datePresetRef,\n featuredLogId,\n featuredTraceId,\n featuredSpanId,\n selectedEntityOption,\n filterTokens,\n handleFeaturedChange,\n handleFilterTokensChange,\n handleDateChange,\n handleDatePresetChange,\n handleRemoveAll,\n applyFilterTokens,\n ],\n );\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"use-logs-url-state.es.js","sources":["../../../../src/domains/logs/hooks/use-logs-url-state.tsx"],"sourcesContent":["import { useCallback, useMemo, useRef } from 'react';\nimport {\n LOGS_DATE_FROM_PARAM,\n LOGS_DATE_PRESET_PARAM,\n LOGS_DATE_PRESET_VALUES,\n LOGS_DATE_TO_PARAM,\n LOGS_PROPERTY_FILTER_FIELD_IDS,\n LOGS_PROPERTY_FILTER_PARAM_BY_FIELD,\n LOGS_ROOT_ENTITY_TYPE_OPTIONS,\n LOGS_ROOT_ENTITY_TYPE_PARAM,\n applyLogsPropertyFilterTokens,\n getLogsPropertyFilterTokens,\n} from '../log-filters';\nimport type { LogsDatePreset, LogsEntityOptions } from '../log-filters';\nimport type { PropertyFilterToken } from '@/ds/components/PropertyFilter/types';\nimport type { SetURLSearchParamsLike } from '@/lib/sort/use-url-sort';\n\nconst LOG_PARAM = 'logId';\nconst TRACE_PARAM = 'traceId';\nconst SPAN_PARAM = 'spanId';\n\nconst DAY_MS = 24 * 60 * 60 * 1000;\nconst PRESET_MS: Partial<Record<LogsDatePreset, number>> = {\n 'last-24h': DAY_MS,\n 'last-3d': 3 * DAY_MS,\n 'last-7d': 7 * DAY_MS,\n 'last-14d': 14 * DAY_MS,\n 'last-30d': 30 * DAY_MS,\n};\n\n/** Mutates `params` in place to drop the featured log/trace/span selection.\n * Used whenever a filter changes — selection no longer makes sense in the new result set. */\nfunction clearSelectionParams(params: URLSearchParams) {\n params.delete(LOG_PARAM);\n params.delete(TRACE_PARAM);\n params.delete(SPAN_PARAM);\n}\n\nexport interface LogsFeaturedIds {\n logId?: string | null;\n traceId?: string | null;\n spanId?: string | null;\n}\n\nexport interface UseLogsUrlStateOptions {\n /** Called after `handleRemoveAll` clears all filter URL params. */\n onRemoveAll?: () => void;\n}\n\nexport interface UseLogsUrlStateResult {\n searchParams: URLSearchParams;\n setSearchParams: SetURLSearchParamsLike;\n\n datePreset: LogsDatePreset;\n selectedDateFrom: Date | undefined;\n selectedDateTo: Date | undefined;\n datePresetRef: React.MutableRefObject<LogsDatePreset>;\n\n featuredLogId: string | null;\n featuredTraceId: string | null;\n featuredSpanId: string | null;\n\n selectedEntityOption: LogsEntityOptions | undefined;\n filterTokens: PropertyFilterToken[];\n\n /** Partial update of the featured log/trace/span selection. Omitted keys are left as-is. */\n handleFeaturedChange: (ids: LogsFeaturedIds) => void;\n handleFilterTokensChange: (nextTokens: PropertyFilterToken[]) => void;\n handleDateChange: (value: Date | undefined, type: 'from' | 'to') => void;\n handleDatePresetChange: (preset: LogsDatePreset) => void;\n handleRemoveAll: () => void;\n\n /** Lower-level helper used by `handleClear`: writes a token set and clears the log/trace/span selection. */\n applyFilterTokens: (tokens: PropertyFilterToken[]) => void;\n}\n\n/**\n * Owns all URL-derived state and URL-modifying handlers for the logs page. Routing-agnostic —\n * pass `searchParams` and `setSearchParams` from whichever router the consumer uses.\n */\nexport function useLogsUrlState(\n searchParams: URLSearchParams,\n setSearchParams: SetURLSearchParamsLike,\n options?: UseLogsUrlStateOptions,\n): UseLogsUrlStateResult {\n const { onRemoveAll } = options ?? {};\n\n const datePreset = useMemo<LogsDatePreset>(() => {\n const value = searchParams.get(LOGS_DATE_PRESET_PARAM);\n return value && LOGS_DATE_PRESET_VALUES.has(value as LogsDatePreset) ? (value as LogsDatePreset) : 'last-24h';\n }, [searchParams]);\n\n const dateFromParamRaw = searchParams.get(LOGS_DATE_FROM_PARAM);\n const dateToParamRaw = searchParams.get(LOGS_DATE_TO_PARAM);\n\n const selectedDateFrom = useMemo(() => {\n if (datePreset === 'custom') {\n if (!dateFromParamRaw) return undefined;\n const parsed = new Date(dateFromParamRaw);\n return Number.isNaN(parsed.getTime()) ? undefined : parsed;\n }\n if (datePreset === 'all') return undefined;\n const ms = PRESET_MS[datePreset];\n return ms ? new Date(Date.now() - ms) : undefined;\n }, [datePreset, dateFromParamRaw]);\n\n const selectedDateTo = useMemo(() => {\n if (datePreset !== 'custom' || !dateToParamRaw) return undefined;\n const parsed = new Date(dateToParamRaw);\n return Number.isNaN(parsed.getTime()) ? undefined : parsed;\n }, [datePreset, dateToParamRaw]);\n\n const datePresetRef = useRef(datePreset);\n datePresetRef.current = datePreset;\n\n const featuredLogId = searchParams.get(LOG_PARAM);\n const featuredTraceId = searchParams.get(TRACE_PARAM);\n const featuredSpanId = searchParams.get(SPAN_PARAM);\n\n const selectedEntityOption = useMemo(\n () =>\n LOGS_ROOT_ENTITY_TYPE_OPTIONS.find(option => option.entityType === searchParams.get(LOGS_ROOT_ENTITY_TYPE_PARAM)),\n [searchParams],\n );\n\n const filterTokens = useMemo(() => getLogsPropertyFilterTokens(searchParams), [searchParams]);\n\n const handleFeaturedChange = useCallback(\n (ids: LogsFeaturedIds) => {\n setSearchParams(\n prev => {\n const next = new URLSearchParams(prev);\n for (const [field, value] of Object.entries(ids)) {\n const param = field === 'logId' ? LOG_PARAM : field === 'traceId' ? TRACE_PARAM : SPAN_PARAM;\n if (value) {\n next.set(param, value);\n } else {\n next.delete(param);\n }\n }\n return next;\n },\n { replace: true },\n );\n },\n [setSearchParams],\n );\n\n const applyFilterTokens = useCallback(\n (tokens: PropertyFilterToken[]) => {\n setSearchParams(\n prev => {\n const next = new URLSearchParams(prev);\n applyLogsPropertyFilterTokens(next, tokens);\n clearSelectionParams(next);\n return next;\n },\n { replace: true },\n );\n },\n [setSearchParams],\n );\n\n const handleFilterTokensChange = applyFilterTokens;\n\n const handleDateChange = useCallback(\n (value: Date | undefined, type: 'from' | 'to') => {\n if (datePresetRef.current !== 'custom') return;\n const param = type === 'from' ? LOGS_DATE_FROM_PARAM : LOGS_DATE_TO_PARAM;\n setSearchParams(\n prev => {\n const next = new URLSearchParams(prev);\n if (value) {\n next.set(param, value.toISOString());\n } else {\n next.delete(param);\n }\n clearSelectionParams(next);\n return next;\n },\n { replace: true },\n );\n },\n [setSearchParams],\n );\n\n const handleDatePresetChange = useCallback(\n (preset: LogsDatePreset) => {\n datePresetRef.current = preset;\n setSearchParams(\n prev => {\n const next = new URLSearchParams(prev);\n if (preset === 'last-24h') {\n next.delete(LOGS_DATE_PRESET_PARAM);\n next.delete(LOGS_DATE_FROM_PARAM);\n next.delete(LOGS_DATE_TO_PARAM);\n } else if (preset === 'custom') {\n next.set(LOGS_DATE_PRESET_PARAM, 'custom');\n } else {\n next.set(LOGS_DATE_PRESET_PARAM, preset);\n next.delete(LOGS_DATE_FROM_PARAM);\n next.delete(LOGS_DATE_TO_PARAM);\n }\n clearSelectionParams(next);\n return next;\n },\n { replace: true },\n );\n },\n [setSearchParams],\n );\n\n const handleRemoveAll = useCallback(() => {\n setSearchParams(\n prev => {\n const next = new URLSearchParams(prev);\n next.delete(LOGS_ROOT_ENTITY_TYPE_PARAM);\n for (const fieldId of LOGS_PROPERTY_FILTER_FIELD_IDS) {\n next.delete(LOGS_PROPERTY_FILTER_PARAM_BY_FIELD[fieldId]);\n }\n next.delete(LOGS_DATE_PRESET_PARAM);\n next.delete(LOGS_DATE_FROM_PARAM);\n next.delete(LOGS_DATE_TO_PARAM);\n clearSelectionParams(next);\n return next;\n },\n { replace: true },\n );\n onRemoveAll?.();\n }, [setSearchParams, onRemoveAll]);\n\n return useMemo(\n () => ({\n searchParams,\n setSearchParams,\n datePreset,\n selectedDateFrom,\n selectedDateTo,\n datePresetRef,\n featuredLogId,\n featuredTraceId,\n featuredSpanId,\n selectedEntityOption,\n filterTokens,\n handleFeaturedChange,\n handleFilterTokensChange,\n handleDateChange,\n handleDatePresetChange,\n handleRemoveAll,\n applyFilterTokens,\n }),\n [\n searchParams,\n setSearchParams,\n datePreset,\n selectedDateFrom,\n selectedDateTo,\n datePresetRef,\n featuredLogId,\n featuredTraceId,\n featuredSpanId,\n selectedEntityOption,\n filterTokens,\n handleFeaturedChange,\n handleFilterTokensChange,\n handleDateChange,\n handleDatePresetChange,\n handleRemoveAll,\n applyFilterTokens,\n ],\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ const jsxRuntime = require('react/jsx-runtime');
|
|
|
6
6
|
const React = require('react');
|
|
7
7
|
const checkbox = require('../../../checkbox-8X8iYPf7.cjs');
|
|
8
8
|
const EmptyState = require('../../../EmptyState-FNJu74e8.cjs');
|
|
9
|
-
const field = require('../../../field-
|
|
9
|
+
const field = require('../../../field-CZ5fldpM.cjs');
|
|
10
10
|
require('../../../field-control-aria-WzMGs0A4.cjs');
|
|
11
11
|
const skeleton = require('../../../skeleton-lkFwOzqL.cjs');
|
|
12
12
|
const Txt = require('../../../Txt-CIS2G5Jx.cjs');
|
|
@@ -2,7 +2,7 @@ import { jsxs, jsx } from 'react/jsx-runtime';
|
|
|
2
2
|
import { lazy, useState, useMemo, useEffect, Suspense } from 'react';
|
|
3
3
|
import { C as Checkbox } from '../../../checkbox-ts1XgEEa.js';
|
|
4
4
|
import { E as EmptyState } from '../../../EmptyState-qVoRkUMf.js';
|
|
5
|
-
import { F as Field, e as FieldLabel } from '../../../field-
|
|
5
|
+
import { F as Field, e as FieldLabel } from '../../../field-CfA5-ixH.js';
|
|
6
6
|
import '../../../field-control-aria-DB6y41tQ.js';
|
|
7
7
|
import { S as Skeleton } from '../../../skeleton-Q4fDAXcz.js';
|
|
8
8
|
import { T as Txt } from '../../../Txt-BtIGLRk1.js';
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
4
4
|
|
|
5
5
|
const jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
const React = require('react');
|
|
7
|
-
const dateTimeRangePicker = require('../../../date-time-range-picker-
|
|
7
|
+
const dateTimeRangePicker = require('../../../date-time-range-picker-_2RJBOUn.cjs');
|
|
8
8
|
const domains_metrics_hooks_useMetrics = require('../hooks/use-metrics.cjs.js');
|
|
9
9
|
const domains_metrics_metricsDatePresets = require('../metrics-date-presets.cjs.js');
|
|
10
10
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { useRef } from 'react';
|
|
3
|
-
import { D as DateTimeRangePicker } from '../../../date-time-range-picker-
|
|
3
|
+
import { D as DateTimeRangePicker } from '../../../date-time-range-picker-BnYWCqei.js';
|
|
4
4
|
import { useMetrics } from '../hooks/use-metrics.es.js';
|
|
5
5
|
import { METRICS_PICKER_PRESETS, toPickerPreset, fromPickerPreset } from '../metrics-date-presets.es.js';
|
|
6
6
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
4
|
|
|
5
5
|
const domains_logs_logFilters = require('../logs/log-filters.cjs.js');
|
|
6
|
-
const domains_traces_traceQueryFilters = require('../../trace-filters-
|
|
6
|
+
const domains_traces_traceQueryFilters = require('../../trace-filters-BtyiQq7Y.cjs');
|
|
7
7
|
|
|
8
8
|
function mapPreset(preset) {
|
|
9
9
|
switch (preset) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { LOGS_DATE_TO_PARAM, LOGS_DATE_FROM_PARAM, LOGS_DATE_PRESET_PARAM, LOGS_ROOT_ENTITY_TYPE_PARAM, LOGS_PROPERTY_FILTER_PARAM_BY_FIELD } from '../logs/log-filters.es.js';
|
|
2
|
-
import { j as TRACE_LIST_MODE_PARAM, d as TRACE_DATE_TO_PARAM, a as TRACE_DATE_FROM_PARAM, b as TRACE_DATE_PRESET_PARAM, s as TRACE_ROOT_ENTITY_TYPE_PARAM, u as TRACE_STATUS_PARAM, o as TRACE_PROPERTY_FILTER_PARAM_BY_FIELD } from '../../trace-filters-
|
|
2
|
+
import { j as TRACE_LIST_MODE_PARAM, d as TRACE_DATE_TO_PARAM, a as TRACE_DATE_FROM_PARAM, b as TRACE_DATE_PRESET_PARAM, s as TRACE_ROOT_ENTITY_TYPE_PARAM, u as TRACE_STATUS_PARAM, o as TRACE_PROPERTY_FILTER_PARAM_BY_FIELD } from '../../trace-filters-DXW-RdDz.js';
|
|
3
3
|
|
|
4
4
|
function mapPreset(preset) {
|
|
5
5
|
switch (preset) {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
4
|
|
|
5
5
|
const lucideReact = require('lucide-react');
|
|
6
|
-
const domains_traces_traceQueryFilters = require('../../trace-filters-
|
|
6
|
+
const domains_traces_traceQueryFilters = require('../../trace-filters-BtyiQq7Y.cjs');
|
|
7
7
|
|
|
8
8
|
const METRICS_ROOT_ENTITY_TYPE_OPTIONS = [
|
|
9
9
|
{ label: "Agent", entityType: "agent" },
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CpuIcon, CloudIcon } from 'lucide-react';
|
|
2
|
-
import {
|
|
2
|
+
import { W as traceFilterFieldColor, X as traceFilterFieldIcon } from '../../trace-filters-DXW-RdDz.js';
|
|
3
3
|
|
|
4
4
|
const METRICS_ROOT_ENTITY_TYPE_OPTIONS = [
|
|
5
5
|
{ label: "Agent", entityType: "agent" },
|
|
@@ -8,16 +8,40 @@ const safeStringify = require('@mastra/core/utils/safe-stringify');
|
|
|
8
8
|
const react = require('@mastra/react');
|
|
9
9
|
const traces = require('@mastra/react/hooks/traces');
|
|
10
10
|
const reactQuery = require('@tanstack/react-query');
|
|
11
|
-
const domains_datasets_components_saveAsDatasetItemDialog = require('../../datasets/components/save-as-dataset-item-dialog.cjs.js');
|
|
12
11
|
require('@mastra/react/hooks/datasets');
|
|
13
|
-
|
|
12
|
+
require('lucide-react');
|
|
13
|
+
require('react');
|
|
14
|
+
require('../../../Button-C4I05uT4.cjs');
|
|
15
|
+
require('../../../highlight-DfnRU-Am.cjs');
|
|
16
|
+
require('../../../field-control-aria-WzMGs0A4.cjs');
|
|
17
|
+
require('@base-ui/react/use-render');
|
|
18
|
+
require('../../../lib/framework.cjs.js');
|
|
19
|
+
require('../../../toast-DxKdVSyw.cjs');
|
|
20
|
+
const domains_datasets_components_addDatasetItemDialog_addDatasetItemDialog = require('../../datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.cjs.js');
|
|
14
21
|
|
|
22
|
+
const readsAsJson = (text) => {
|
|
23
|
+
try {
|
|
24
|
+
JSON.parse(text);
|
|
25
|
+
return true;
|
|
26
|
+
} catch {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
function toEditorText(value) {
|
|
31
|
+
if (typeof value === "string" && !readsAsJson(value)) return value;
|
|
32
|
+
return safeStringify.safeStringify(value, 2);
|
|
33
|
+
}
|
|
15
34
|
function getInitialInput(traceDetails) {
|
|
16
35
|
if (traceDetails?.input == null) return "{}";
|
|
17
36
|
const spanInput = traceDetails.input;
|
|
18
37
|
const isWrappedAgentInput = traceDetails.spanType === "agent_run" && spanInput && typeof spanInput === "object" && !Array.isArray(spanInput) && "messages" in spanInput;
|
|
19
38
|
const rawInput = isWrappedAgentInput ? spanInput.messages ?? traceDetails.input : traceDetails.input;
|
|
20
|
-
return
|
|
39
|
+
return toEditorText(rawInput);
|
|
40
|
+
}
|
|
41
|
+
function toExpectedStep(step) {
|
|
42
|
+
if (step.stepType === "provider_tool_call") return { name: step.name };
|
|
43
|
+
const { children: _children, durationMs: _durationMs, metadata: _metadata, ...expected } = step;
|
|
44
|
+
return expected;
|
|
21
45
|
}
|
|
22
46
|
function TraceAsItemDialog({
|
|
23
47
|
traceDetails: externalTraceDetails,
|
|
@@ -25,53 +49,36 @@ function TraceAsItemDialog({
|
|
|
25
49
|
traceId,
|
|
26
50
|
isOpen,
|
|
27
51
|
onClose,
|
|
28
|
-
depth,
|
|
29
52
|
renderCreateDatasetDialog
|
|
30
53
|
}) {
|
|
31
54
|
const client = react.useMastraClient();
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
55
|
+
const spanTraceId = !externalTraceDetails && isOpen ? traceId : null;
|
|
56
|
+
const spanId = !externalTraceDetails && isOpen ? rootSpanId : null;
|
|
57
|
+
const { data: lazySpanDetail, isLoading: isSpanLoading } = traces.useSpanDetail({
|
|
58
|
+
traceId: spanTraceId,
|
|
59
|
+
spanId,
|
|
60
|
+
queryOptions: { enabled: Boolean(spanTraceId) && Boolean(spanId) }
|
|
38
61
|
});
|
|
39
62
|
const traceDetails = externalTraceDetails ?? lazySpanDetail?.span;
|
|
40
63
|
const { data: trajectory, isLoading: isTrajectoryLoading } = reactQuery.useQuery({
|
|
41
64
|
queryKey: ["trace-trajectory", traceId],
|
|
42
65
|
queryFn: () => client.getTraceTrajectory(traceId ?? ""),
|
|
43
|
-
enabled: isOpen &&
|
|
66
|
+
enabled: isOpen && Boolean(traceId)
|
|
44
67
|
});
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
const { name, stepType, children, ...rest } = step;
|
|
49
|
-
const expected = { name, stepType };
|
|
50
|
-
for (const [k, v] of Object.entries(rest)) {
|
|
51
|
-
if (v != null && k !== "durationMs" && k !== "metadata") {
|
|
52
|
-
expected[k] = v;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
return expected;
|
|
56
|
-
}),
|
|
57
|
-
ordering: "relaxed"
|
|
58
|
-
},
|
|
59
|
-
2
|
|
60
|
-
) : void 0;
|
|
61
|
-
const toolMocks = trajectory?.steps ? collectToolMocks.collectToolMocks(trajectory.steps) : [];
|
|
62
|
-
const initialToolMocks = toolMocks.length > 0 ? safeStringify.safeStringify(toolMocks, 2) : void 0;
|
|
68
|
+
const isReady = !isSpanLoading && !isTrajectoryLoading;
|
|
69
|
+
const steps = trajectory?.steps ?? [];
|
|
70
|
+
const toolMocks = collectToolMocks.collectToolMocks(steps);
|
|
63
71
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
64
|
-
|
|
72
|
+
domains_datasets_components_addDatasetItemDialog_addDatasetItemDialog.AddDatasetItemDialog,
|
|
65
73
|
{
|
|
74
|
+
open: isOpen && isReady,
|
|
75
|
+
onOpenChange: (open) => {
|
|
76
|
+
if (!open) onClose();
|
|
77
|
+
},
|
|
66
78
|
initialInput: getInitialInput(traceDetails),
|
|
67
|
-
initialGroundTruth: traceDetails?.output != null ?
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
initialToolMocks,
|
|
71
|
-
breadcrumb: utils_id.getShortId(traceId),
|
|
72
|
-
isOpen,
|
|
73
|
-
onClose,
|
|
74
|
-
depth,
|
|
79
|
+
initialGroundTruth: traceDetails?.output != null ? toEditorText(traceDetails.output) : "",
|
|
80
|
+
initialToolMocks: toolMocks.length > 0 ? safeStringify.safeStringify(toolMocks, 2) : void 0,
|
|
81
|
+
initialTrajectory: steps.length > 0 ? { steps: steps.map(toExpectedStep), ordering: "relaxed" } : void 0,
|
|
75
82
|
source: traceId ? { type: "trace", referenceId: traceId } : void 0,
|
|
76
83
|
renderCreateDatasetDialog
|
|
77
84
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-as-item-dialog.cjs.js","sources":["../../../../src/domains/observability/components/trace-as-item-dialog.tsx"],"sourcesContent":["'use client';\n\nimport { collectToolMocks } from '@mastra/core/utils/collect-tool-mocks';\nimport { safeStringify } from '@mastra/core/utils/safe-stringify';\nimport { useMastraClient } from '@mastra/react';\nimport { useSpanDetail } from '@mastra/react/hooks/traces';\nimport { useQuery } from '@tanstack/react-query';\nimport {
|
|
1
|
+
{"version":3,"file":"trace-as-item-dialog.cjs.js","sources":["../../../../src/domains/observability/components/trace-as-item-dialog.tsx"],"sourcesContent":["'use client';\n\nimport type { TrajectoryStep } from '@mastra/core/evals';\nimport { collectToolMocks } from '@mastra/core/utils/collect-tool-mocks';\nimport { safeStringify } from '@mastra/core/utils/safe-stringify';\nimport { useMastraClient } from '@mastra/react';\nimport { useSpanDetail } from '@mastra/react/hooks/traces';\nimport { useQuery } from '@tanstack/react-query';\nimport { AddDatasetItemDialog } from '@/domains/datasets';\nimport type { AddDatasetItemDialogProps, TrajectoryExpectation } from '@/domains/datasets';\nimport type { SpanRecord } from '@/domains/traces/types';\n\ntype ExpectedStep = NonNullable<TrajectoryExpectation['steps']>[number];\n\ntype TraceAsItemDialogProps = {\n /** Full span record — if provided, used directly (no fetch). */\n traceDetails?: SpanRecord;\n /** Root span ID for lazy-loading when traceDetails is not available. */\n rootSpanId?: string | null;\n traceId?: string;\n isOpen: boolean;\n onClose: () => void;\n renderCreateDatasetDialog?: AddDatasetItemDialogProps['renderCreateDatasetDialog'];\n};\n\nconst readsAsJson = (text: string) => {\n try {\n JSON.parse(text);\n return true;\n } catch {\n return false;\n }\n};\n\n/** Strings show as plain text, unless the text reads as JSON: those stay quoted so they are saved back as strings. */\nfunction toEditorText(value: unknown): string {\n if (typeof value === 'string' && !readsAsJson(value)) return value;\n return safeStringify(value, 2);\n}\n\nfunction getInitialInput(traceDetails?: SpanRecord): string {\n if (traceDetails?.input == null) return '{}';\n\n // Unwrap legacy { messages } wrapper from agent_run spans so the dataset item stores a valid MessageListInput\n const spanInput = traceDetails.input as Record<string, unknown> | undefined;\n const isWrappedAgentInput =\n traceDetails.spanType === 'agent_run' &&\n spanInput &&\n typeof spanInput === 'object' &&\n !Array.isArray(spanInput) &&\n 'messages' in spanInput;\n const rawInput = isWrappedAgentInput ? (spanInput.messages ?? traceDetails.input) : traceDetails.input;\n\n return toEditorText(rawInput);\n}\n\n/** A recorded step as an expectation: what it did, without how long it took or what ran inside it. */\nfunction toExpectedStep(step: TrajectoryStep): ExpectedStep {\n // Expectations can't type provider-executed tools yet, so those match by name only.\n if (step.stepType === 'provider_tool_call') return { name: step.name };\n const { children: _children, durationMs: _durationMs, metadata: _metadata, ...expected } = step;\n return expected;\n}\n\nexport function TraceAsItemDialog({\n traceDetails: externalTraceDetails,\n rootSpanId,\n traceId,\n isOpen,\n onClose,\n renderCreateDatasetDialog,\n}: TraceAsItemDialogProps) {\n const client = useMastraClient();\n\n // Lazy-load the root span details when dialog opens and no traceDetails provided\n const spanTraceId = !externalTraceDetails && isOpen ? traceId : null;\n const spanId = !externalTraceDetails && isOpen ? rootSpanId : null;\n const { data: lazySpanDetail, isLoading: isSpanLoading } = useSpanDetail({\n traceId: spanTraceId,\n spanId,\n queryOptions: { enabled: Boolean(spanTraceId) && Boolean(spanId) },\n });\n\n const traceDetails = externalTraceDetails ?? lazySpanDetail?.span;\n\n const { data: trajectory, isLoading: isTrajectoryLoading } = useQuery({\n queryKey: ['trace-trajectory', traceId],\n queryFn: () => client.getTraceTrajectory(traceId ?? ''),\n enabled: isOpen && Boolean(traceId),\n });\n\n // The dialog seeds its form when it opens, so it opens once everything the form is seeded from has arrived.\n const isReady = !isSpanLoading && !isTrajectoryLoading;\n const steps = trajectory?.steps ?? [];\n // Derive item-level tool mocks from the recorded tool calls in the trajectory\n const toolMocks = collectToolMocks(steps);\n\n return (\n <AddDatasetItemDialog\n open={isOpen && isReady}\n onOpenChange={open => {\n if (!open) onClose();\n }}\n initialInput={getInitialInput(traceDetails)}\n initialGroundTruth={traceDetails?.output != null ? toEditorText(traceDetails.output) : ''}\n initialToolMocks={toolMocks.length > 0 ? safeStringify(toolMocks, 2) : undefined}\n initialTrajectory={steps.length > 0 ? { steps: steps.map(toExpectedStep), ordering: 'relaxed' } : undefined}\n source={traceId ? { type: 'trace', referenceId: traceId } : undefined}\n renderCreateDatasetDialog={renderCreateDatasetDialog}\n />\n );\n}\n"],"names":["safeStringify","useMastraClient","useSpanDetail","useQuery","collectToolMocks","jsx","AddDatasetItemDialog"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAyBA,MAAM,WAAA,GAAc,CAAC,IAAA,KAAiB;AACpC,EAAA,IAAI;AACF,IAAA,IAAA,CAAK,MAAM,IAAI,CAAA;AACf,IAAA,OAAO,IAAA;AAAA,EACT,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,KAAA;AAAA,EACT;AACF,CAAA;AAGA,SAAS,aAAa,KAAA,EAAwB;AAC5C,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,CAAC,WAAA,CAAY,KAAK,GAAG,OAAO,KAAA;AAC7D,EAAA,OAAOA,2BAAA,CAAc,OAAO,CAAC,CAAA;AAC/B;AAEA,SAAS,gBAAgB,YAAA,EAAmC;AAC1D,EAAA,IAAI,YAAA,EAAc,KAAA,IAAS,IAAA,EAAM,OAAO,IAAA;AAGxC,EAAA,MAAM,YAAY,YAAA,CAAa,KAAA;AAC/B,EAAA,MAAM,mBAAA,GACJ,YAAA,CAAa,QAAA,KAAa,WAAA,IAC1B,SAAA,IACA,OAAO,SAAA,KAAc,QAAA,IACrB,CAAC,KAAA,CAAM,OAAA,CAAQ,SAAS,KACxB,UAAA,IAAc,SAAA;AAChB,EAAA,MAAM,WAAW,mBAAA,GAAuB,SAAA,CAAU,QAAA,IAAY,YAAA,CAAa,QAAS,YAAA,CAAa,KAAA;AAEjG,EAAA,OAAO,aAAa,QAAQ,CAAA;AAC9B;AAGA,SAAS,eAAe,IAAA,EAAoC;AAE1D,EAAA,IAAI,KAAK,QAAA,KAAa,oBAAA,SAA6B,EAAE,IAAA,EAAM,KAAK,IAAA,EAAK;AACrE,EAAA,MAAM,EAAE,UAAU,SAAA,EAAW,UAAA,EAAY,aAAa,QAAA,EAAU,SAAA,EAAW,GAAG,QAAA,EAAS,GAAI,IAAA;AAC3F,EAAA,OAAO,QAAA;AACT;AAEO,SAAS,iBAAA,CAAkB;AAAA,EAChC,YAAA,EAAc,oBAAA;AAAA,EACd,UAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAA2B;AACzB,EAAA,MAAM,SAASC,qBAAA,EAAgB;AAG/B,EAAA,MAAM,WAAA,GAAc,CAAC,oBAAA,IAAwB,MAAA,GAAS,OAAA,GAAU,IAAA;AAChE,EAAA,MAAM,MAAA,GAAS,CAAC,oBAAA,IAAwB,MAAA,GAAS,UAAA,GAAa,IAAA;AAC9D,EAAA,MAAM,EAAE,IAAA,EAAM,cAAA,EAAgB,SAAA,EAAW,aAAA,KAAkBC,oBAAA,CAAc;AAAA,IACvE,OAAA,EAAS,WAAA;AAAA,IACT,MAAA;AAAA,IACA,YAAA,EAAc,EAAE,OAAA,EAAS,OAAA,CAAQ,WAAW,CAAA,IAAK,OAAA,CAAQ,MAAM,CAAA;AAAE,GAClE,CAAA;AAED,EAAA,MAAM,YAAA,GAAe,wBAAwB,cAAA,EAAgB,IAAA;AAE7D,EAAA,MAAM,EAAE,IAAA,EAAM,UAAA,EAAY,SAAA,EAAW,mBAAA,KAAwBC,mBAAA,CAAS;AAAA,IACpE,QAAA,EAAU,CAAC,kBAAA,EAAoB,OAAO,CAAA;AAAA,IACtC,OAAA,EAAS,MAAM,MAAA,CAAO,kBAAA,CAAmB,WAAW,EAAE,CAAA;AAAA,IACtD,OAAA,EAAS,MAAA,IAAU,OAAA,CAAQ,OAAO;AAAA,GACnC,CAAA;AAGD,EAAA,MAAM,OAAA,GAAU,CAAC,aAAA,IAAiB,CAAC,mBAAA;AACnC,EAAA,MAAM,KAAA,GAAQ,UAAA,EAAY,KAAA,IAAS,EAAC;AAEpC,EAAA,MAAM,SAAA,GAAYC,kCAAiB,KAAK,CAAA;AAExC,EAAA,uBACEC,cAAA;AAAA,IAACC,0FAAA;AAAA,IAAA;AAAA,MACC,MAAM,MAAA,IAAU,OAAA;AAAA,MAChB,cAAc,CAAA,IAAA,KAAQ;AACpB,QAAA,IAAI,CAAC,MAAM,OAAA,EAAQ;AAAA,MACrB,CAAA;AAAA,MACA,YAAA,EAAc,gBAAgB,YAAY,CAAA;AAAA,MAC1C,oBAAoB,YAAA,EAAc,MAAA,IAAU,OAAO,YAAA,CAAa,YAAA,CAAa,MAAM,CAAA,GAAI,EAAA;AAAA,MACvF,kBAAkB,SAAA,CAAU,MAAA,GAAS,IAAIN,2BAAA,CAAc,SAAA,EAAW,CAAC,CAAA,GAAI,MAAA;AAAA,MACvE,iBAAA,EAAmB,KAAA,CAAM,MAAA,GAAS,CAAA,GAAI,EAAE,KAAA,EAAO,KAAA,CAAM,GAAA,CAAI,cAAc,CAAA,EAAG,QAAA,EAAU,SAAA,EAAU,GAAI,MAAA;AAAA,MAClG,QAAQ,OAAA,GAAU,EAAE,MAAM,OAAA,EAAS,WAAA,EAAa,SAAQ,GAAI,MAAA;AAAA,MAC5D;AAAA;AAAA,GACF;AAEJ;;;;"}
|