@mastra/playground-ui 63.0.0-alpha.1 → 63.0.0-alpha.2
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/Avatar-C2Sz53u5.js +190 -0
- package/dist/Avatar-C2Sz53u5.js.map +1 -0
- package/dist/Avatar-D6ybWljK.cjs +192 -0
- package/dist/Avatar-D6ybWljK.cjs.map +1 -0
- package/dist/{ask-user-card-g8cqh8KI.cjs → ask-user-card-40a18Qea.cjs} +2 -1
- package/dist/{ask-user-card-g8cqh8KI.cjs.map → ask-user-card-40a18Qea.cjs.map} +1 -1
- package/dist/{ask-user-card-CwKfl6M2.js → ask-user-card-xR8YiiQa.js} +6 -5
- package/dist/{ask-user-card-CwKfl6M2.js.map → ask-user-card-xR8YiiQa.js.map} +1 -1
- package/dist/{checkbox-B3tvJLCl.js → checkbox-mmR3rD2j.js} +2 -2
- package/dist/{checkbox-B3tvJLCl.js.map → checkbox-mmR3rD2j.js.map} +1 -1
- package/dist/{code-block-9sT-CaoF.js → code-block-BQZUoOfS.js} +2 -2
- package/dist/{code-block-9sT-CaoF.js.map → code-block-BQZUoOfS.js.map} +1 -1
- package/dist/{code-editor-DgfDaPAD.js → code-editor-D69saH4C.js} +2 -2
- package/dist/{code-editor-DgfDaPAD.js.map → code-editor-D69saH4C.js.map} +1 -1
- package/dist/{combobox-DJu0ggNa.js → combobox-DDUIREaG.js} +2 -2
- package/dist/{combobox-DJu0ggNa.js.map → combobox-DDUIREaG.js.map} +1 -1
- package/dist/components/Avatar.cjs.js +1 -1
- package/dist/components/Avatar.es.js +1 -1
- package/dist/components/Checkbox.es.js +1 -1
- package/dist/components/CodeBlock.es.js +1 -1
- package/dist/components/CodeEditor.es.js +1 -1
- package/dist/components/Combobox.es.js +1 -1
- package/dist/components/Comment.cjs.js +1 -0
- package/dist/components/Comment.cjs.js.map +1 -1
- package/dist/components/Comment.es.js +3 -2
- package/dist/components/Comment.es.js.map +1 -1
- package/dist/components/DataCodeSection.cjs.js +1 -1
- package/dist/components/DataCodeSection.es.js +1 -1
- package/dist/components/DataList.cjs.js +17 -15
- package/dist/components/DataList.cjs.js.map +1 -1
- package/dist/components/DataList.es.js +5 -4
- 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 +1 -0
- package/dist/components/DateTimePicker.cjs.js.map +1 -1
- package/dist/components/DateTimePicker.es.js +4 -3
- package/dist/components/DateTimePicker.es.js.map +1 -1
- package/dist/components/DateTimeRangePicker.cjs.js +1 -1
- package/dist/components/DateTimeRangePicker.es.js +1 -1
- package/dist/components/EnvironmentVariablesEditor.cjs.js +2 -1
- package/dist/components/EnvironmentVariablesEditor.cjs.js.map +1 -1
- package/dist/components/EnvironmentVariablesEditor.es.js +4 -3
- package/dist/components/EnvironmentVariablesEditor.es.js.map +1 -1
- package/dist/components/Field.es.js +2 -2
- package/dist/components/FormFieldBlocks.es.js +2 -2
- package/dist/components/Input.es.js +1 -1
- package/dist/components/InputGroup.es.js +1 -1
- package/dist/components/InputNumber.es.js +1 -1
- package/dist/components/JSONSchemaForm.cjs.js +1 -0
- package/dist/components/JSONSchemaForm.cjs.js.map +1 -1
- package/dist/components/JSONSchemaForm.es.js +5 -4
- package/dist/components/JSONSchemaForm.es.js.map +1 -1
- package/dist/components/ListSearch.cjs.js +1 -1
- package/dist/components/ListSearch.es.js +1 -1
- package/dist/components/LogsDataList.cjs.js +2 -5
- package/dist/components/LogsDataList.cjs.js.map +1 -1
- package/dist/components/LogsDataList.es.js +2 -5
- package/dist/components/LogsDataList.es.js.map +1 -1
- package/dist/components/MarkdownRenderer.es.js +1 -1
- package/dist/components/PropertyFilter.cjs.js +1 -0
- package/dist/components/PropertyFilter.cjs.js.map +1 -1
- package/dist/components/PropertyFilter.es.js +5 -4
- package/dist/components/PropertyFilter.es.js.map +1 -1
- package/dist/components/RadioGroup.es.js +1 -1
- package/dist/components/RuleBuilder.es.js +2 -2
- package/dist/components/SearchInput.cjs.js +1 -1
- package/dist/components/SearchInput.es.js +1 -1
- package/dist/components/Section.cjs.js +1 -1
- package/dist/components/Section.es.js +1 -1
- package/dist/components/SegmentedControl.es.js +1 -1
- package/dist/components/Select.es.js +1 -1
- package/dist/components/SideDialog.cjs.js +1 -1
- package/dist/components/SideDialog.es.js +1 -1
- package/dist/components/Sidebar.es.js +1 -1
- package/dist/components/Switch.es.js +1 -1
- package/dist/components/ThemeToggle.es.js +1 -1
- package/dist/components/Workflow.es.js +3 -3
- package/dist/components/ai/activity.es.js +1 -1
- package/dist/components/ai/ask-user.cjs.js +1 -1
- package/dist/components/ai/ask-user.es.js +1 -1
- package/dist/components/ai/plan.es.js +1 -1
- package/dist/components/ai/tool-approval.es.js +1 -1
- package/dist/components/ai/tool-call.es.js +1 -1
- package/dist/{data-code-section-BTRNa1SD.cjs → data-code-section-B2Ea7FwM.cjs} +2 -2
- package/dist/{data-code-section-BTRNa1SD.cjs.map → data-code-section-B2Ea7FwM.cjs.map} +1 -1
- package/dist/{data-code-section-BGLC-hxm.js → data-code-section-DrJYy1dR.js} +2 -2
- package/dist/{data-code-section-BGLC-hxm.js.map → data-code-section-DrJYy1dR.js.map} +1 -1
- package/dist/data-list-DkVOwk8l.cjs +142 -0
- package/dist/data-list-DkVOwk8l.cjs.map +1 -0
- package/dist/data-list-Dv2lP-dU.js +138 -0
- package/dist/data-list-Dv2lP-dU.js.map +1 -0
- package/dist/{data-list-skeleton-CJFwZBlW.js → data-list-skeleton-BmsDYJrA.js} +2 -2
- package/dist/{data-list-skeleton-CJFwZBlW.js.map → data-list-skeleton-BmsDYJrA.js.map} +1 -1
- package/dist/{data-list-skeleton-maUWF7Ri.cjs → data-list-skeleton-CfVsXhx1.cjs} +6 -6
- package/dist/{data-list-skeleton-maUWF7Ri.cjs.map → data-list-skeleton-CfVsXhx1.cjs.map} +1 -1
- package/dist/data-list-spacer-DEMquKp9.js +209 -0
- package/dist/data-list-spacer-DEMquKp9.js.map +1 -0
- package/dist/data-list-spacer-pXP8xDlg.cjs +218 -0
- package/dist/data-list-spacer-pXP8xDlg.cjs.map +1 -0
- package/dist/{data-list-DDGpWucH.js → data-list-top-BJCC62oy.js} +6 -333
- package/dist/data-list-top-BJCC62oy.js.map +1 -0
- package/dist/{data-list-_yDPF5wR.cjs → data-list-top-Ds-NWyPO.cjs} +13 -339
- package/dist/data-list-top-Ds-NWyPO.cjs.map +1 -0
- package/dist/{data-panel-DfVGx0Ea.js → data-panel-COU5dbUJ.js} +2 -2
- package/dist/{data-panel-DfVGx0Ea.js.map → data-panel-COU5dbUJ.js.map} +1 -1
- package/dist/{data-panel-Dhg7s3fD.cjs → data-panel-CTqb-0qN.cjs} +2 -2
- package/dist/{data-panel-Dhg7s3fD.cjs.map → data-panel-CTqb-0qN.cjs.map} +1 -1
- package/dist/{date-time-range-picker-BNaXCa7r.cjs → date-time-range-picker-BvRPfy1i.cjs} +2 -1
- package/dist/{date-time-range-picker-BNaXCa7r.cjs.map → date-time-range-picker-BvRPfy1i.cjs.map} +1 -1
- package/dist/{date-time-range-picker-C5x_33hB.js → date-time-range-picker-CIfaXUuy.js} +4 -3
- package/dist/{date-time-range-picker-C5x_33hB.js.map → date-time-range-picker-CIfaXUuy.js.map} +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 +1 -0
- 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 -0
- package/dist/domains/chat/messages/message-row.cjs.js.map +1 -1
- package/dist/domains/chat/messages/message-row.es.js +2 -1
- package/dist/domains/chat/messages/message-row.es.js.map +1 -1
- package/dist/domains/chat/messages/renderers/message-text.es.js +1 -1
- package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
- package/dist/domains/chat/messages/skill-message.es.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge.es.js +2 -2
- package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js +1 -1
- package/dist/domains/chat/tools/badges/code-mode-badge.es.js +2 -2
- package/dist/domains/chat/tools/badges/file-tree-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-details.es.js +1 -1
- package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
- package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/tool-badge.es.js +2 -2
- package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +2 -2
- package/dist/domains/chat/tools/badges/workflow-badge.es.js +3 -3
- package/dist/domains/chat/tools/submit-plan-tool.es.js +1 -1
- package/dist/domains/chat/tools/tool-card.es.js +1 -1
- package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js +2 -1
- package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js.map +1 -1
- package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js +5 -4
- package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js.map +1 -1
- package/dist/domains/logs/components/log-data-panel.cjs.js +1 -1
- package/dist/domains/logs/components/log-data-panel.es.js +1 -1
- package/dist/domains/logs/components/logs-list-view.cjs.js +2 -3
- package/dist/domains/logs/components/logs-list-view.cjs.js.map +1 -1
- package/dist/domains/logs/components/logs-list-view.es.js +2 -3
- package/dist/domains/logs/components/logs-list-view.es.js.map +1 -1
- package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
- package/dist/domains/memory/components/observation-detail-view.cjs.js +1 -0
- package/dist/domains/memory/components/observation-detail-view.cjs.js.map +1 -1
- package/dist/domains/memory/components/observation-detail-view.es.js +3 -2
- package/dist/domains/memory/components/observation-detail-view.es.js.map +1 -1
- package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
- package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
- package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js +2 -1
- package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js.map +1 -1
- package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js +5 -4
- package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js.map +1 -1
- package/dist/domains/request-context/components/request-context-label.cjs.js +1 -0
- package/dist/domains/request-context/components/request-context-label.cjs.js.map +1 -1
- package/dist/domains/request-context/components/request-context-label.es.js +2 -1
- package/dist/domains/request-context/components/request-context-label.es.js.map +1 -1
- package/dist/domains/scores/components/score-data-panel.cjs.js +1 -1
- package/dist/domains/scores/components/score-data-panel.es.js +1 -1
- package/dist/domains/scores/components/span-scoring.es.js +1 -1
- package/dist/domains/scores/components/trace-scores-tab.cjs.js +1 -2
- package/dist/domains/scores/components/trace-scores-tab.cjs.js.map +1 -1
- package/dist/domains/scores/components/trace-scores-tab.es.js +1 -2
- package/dist/domains/scores/components/trace-scores-tab.es.js.map +1 -1
- package/dist/domains/traces/components/feedback-thread.cjs.js +1 -1
- package/dist/domains/traces/components/feedback-thread.es.js +2 -2
- package/dist/domains/traces/components/span-data-panel-view.cjs.js +2 -1
- package/dist/domains/traces/components/span-data-panel-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-data-panel-view.es.js +2 -1
- package/dist/domains/traces/components/span-data-panel-view.es.js.map +1 -1
- package/dist/domains/traces/components/span-details-view.cjs.js +1 -0
- package/dist/domains/traces/components/span-details-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-details-view.es.js +1 -0
- package/dist/domains/traces/components/span-details-view.es.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +1 -1
- package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
- package/dist/domains/traces/components/span-summary-description.es.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
- package/dist/domains/traces/components/thread-view-by-trace.cjs.js +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 +1 -0
- package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-columns-menu.es.js +3 -2
- package/dist/domains/traces/components/trace-columns-menu.es.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js +2 -2
- package/dist/domains/traces/components/trace-data-panel-view.es.js +2 -2
- package/dist/domains/traces/components/trace-data-panel.cjs.js +3 -2
- package/dist/domains/traces/components/trace-data-panel.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel.es.js +3 -2
- package/dist/domains/traces/components/trace-data-panel.es.js.map +1 -1
- package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
- package/dist/domains/traces/components/trace-id-button.es.js +1 -1
- package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
- package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
- package/dist/domains/traces/components/trace-thread-panel.cjs.js +1 -1
- package/dist/domains/traces/components/trace-thread-panel.es.js +1 -1
- package/dist/domains/traces/components/trace-time-range-chip.cjs.js +1 -1
- package/dist/domains/traces/components/trace-time-range-chip.es.js +1 -1
- package/dist/domains/traces/components/traces-list-view.cjs.js +5 -4
- package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-list-view.es.js +4 -3
- package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
- package/dist/domains/traces/components/traces-page-skeleton.cjs.js +1 -4
- package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-page-skeleton.es.js +1 -4
- package/dist/domains/traces/components/traces-page-skeleton.es.js.map +1 -1
- package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
- package/dist/domains/workflows/components/workflow-step-detail.es.js +2 -2
- package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +2 -2
- package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +2 -2
- package/dist/domains/workflows/workflow/data/workflow-data-button.es.js +1 -1
- package/dist/domains/workflows/workflow/data/workflow-data-inspector.es.js +1 -1
- package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js +1 -0
- package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/input/workflow-json-input.es.js +3 -2
- package/dist/domains/workflows/workflow/input/workflow-json-input.es.js.map +1 -1
- package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js +1 -0
- package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js +3 -2
- package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js.map +1 -1
- package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-body-graph.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-data-edge.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-debug-mode-switch.cjs.js +1 -0
- package/dist/domains/workflows/workflow/workflow-debug-mode-switch.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-debug-mode-switch.es.js +3 -2
- package/dist/domains/workflows/workflow/workflow-debug-mode-switch.es.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-node.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-input-data.cjs.js +2 -0
- package/dist/domains/workflows/workflow/workflow-input-data.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-input-data.es.js +2 -0
- package/dist/domains/workflows/workflow/workflow-input-data.es.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-map-config-dialog.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-run-data.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-status.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-step-action-bar.es.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 +1 -0
- package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +3 -2
- package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js.map +1 -1
- package/dist/domains/workspace/components/workspace-active-file.es.js +1 -1
- package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +2 -1
- package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js.map +1 -1
- package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +5 -4
- package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js.map +1 -1
- package/dist/domains/workspace/components/workspace-create-directory.es.js +1 -1
- package/dist/domains/workspace/components/workspace-markdown-preview.es.js +2 -2
- package/dist/domains/workspace/components/workspace-search.es.js +1 -1
- package/dist/ee/signals/components/entity-index-list.cjs.js +1 -3
- package/dist/ee/signals/components/entity-index-list.cjs.js.map +1 -1
- package/dist/ee/signals/components/entity-index-list.es.js +1 -3
- package/dist/ee/signals/components/entity-index-list.es.js.map +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +2 -4
- 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 +3 -5
- 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 -0
- package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js.map +1 -1
- package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +3 -2
- package/dist/ee/signals/settings/signal-definition-form-dialog.es.js.map +1 -1
- package/dist/ee/signals/settings/trace-signal-settings.es.js +1 -1
- package/dist/ee/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-Bc8Ewf_M.js → field-B89BEZg4.js} +2 -2
- package/dist/{field-Bc8Ewf_M.js.map → field-B89BEZg4.js.map} +1 -1
- package/dist/{field-control-aria-CCJ4-mUe.js → field-control-aria-DB6y41tQ.js} +2 -2
- package/dist/{field-control-aria-CCJ4-mUe.js.map → field-control-aria-DB6y41tQ.js.map} +1 -1
- package/dist/{input-Ds171RJ5.js → input-DQFUjtnh.js} +2 -2
- package/dist/{input-Ds171RJ5.js.map → input-DQFUjtnh.js.map} +1 -1
- package/dist/{input-group-Cxv64rPB.js → input-group-BWsGYnES.js} +2 -2
- package/dist/{input-group-Cxv64rPB.js.map → input-group-BWsGYnES.js.map} +1 -1
- package/dist/layout/tabbed-container.cjs.js +2 -2
- package/dist/layout/tabbed-container.es.js +3 -3
- package/dist/lib/form/components/boolean-field.cjs.js +1 -0
- package/dist/lib/form/components/boolean-field.cjs.js.map +1 -1
- package/dist/lib/form/components/boolean-field.es.js +3 -2
- package/dist/lib/form/components/boolean-field.es.js.map +1 -1
- package/dist/lib/form/components/date-field.es.js +1 -1
- package/dist/lib/form/components/field-wrapper.cjs.js +1 -0
- package/dist/lib/form/components/field-wrapper.cjs.js.map +1 -1
- package/dist/lib/form/components/field-wrapper.es.js +2 -1
- package/dist/lib/form/components/field-wrapper.es.js.map +1 -1
- package/dist/lib/form/components/number-field.es.js +1 -1
- package/dist/lib/form/components/record-field.es.js +1 -1
- package/dist/lib/form/components/select-field.es.js +1 -1
- package/dist/{list-search-CmPRFDsn.js → list-search-BNnMwbpv.js} +2 -2
- package/dist/{list-search-CmPRFDsn.js.map → list-search-BNnMwbpv.js.map} +1 -1
- package/dist/{list-search-C3yXcTRO.cjs → list-search-xHadeMHl.cjs} +2 -2
- package/dist/{list-search-C3yXcTRO.cjs.map → list-search-xHadeMHl.cjs.map} +1 -1
- package/dist/{logs-data-list-Cudh6b-c.js → logs-data-list-C262Be3o.js} +3 -2
- package/dist/{logs-data-list-Cudh6b-c.js.map → logs-data-list-C262Be3o.js.map} +1 -1
- package/dist/{logs-data-list-Bf_vIsFb.cjs → logs-data-list-DfuVMd6f.cjs} +22 -21
- package/dist/{logs-data-list-Bf_vIsFb.cjs.map → logs-data-list-DfuVMd6f.cjs.map} +1 -1
- package/dist/{markdown-renderer-Cly6VMDr.js → markdown-renderer-D5Wjk1Cs.js} +2 -2
- package/dist/{markdown-renderer-Cly6VMDr.js.map → markdown-renderer-D5Wjk1Cs.js.map} +1 -1
- package/dist/new/settings.cjs.js +1 -1
- package/dist/new/settings.es.js +1 -1
- package/dist/{plan-DIbhFPRL.js → plan-Cl3-JgbI.js} +2 -2
- package/dist/{plan-DIbhFPRL.js.map → plan-Cl3-JgbI.js.map} +1 -1
- package/dist/primitives/textarea-control.es.js +1 -1
- package/dist/{property-filter-applied-DXH81ffT.js → property-filter-applied-CZLzY0OH.js} +2 -2
- package/dist/{property-filter-applied-DXH81ffT.js.map → property-filter-applied-CZLzY0OH.js.map} +1 -1
- package/dist/{radio-group-C2zsCipq.js → radio-group-Bk52hNNb.js} +2 -2
- package/dist/{radio-group-C2zsCipq.js.map → radio-group-Bk52hNNb.js.map} +1 -1
- package/dist/{reasoning-activity-B1r4JQxm.js → reasoning-activity-CIuVSAGA.js} +2 -2
- package/dist/{reasoning-activity-B1r4JQxm.js.map → reasoning-activity-CIuVSAGA.js.map} +1 -1
- package/dist/{search-input-DbEE2zEz.cjs → search-input-UtTJMjJu.cjs} +2 -1
- package/dist/{search-input-DbEE2zEz.cjs.map → search-input-UtTJMjJu.cjs.map} +1 -1
- package/dist/{search-input-D23h16CB.js → search-input-fqSrRTLU.js} +4 -3
- package/dist/{search-input-D23h16CB.js.map → search-input-fqSrRTLU.js.map} +1 -1
- package/dist/{section-CdaSS9M7.cjs → section-DhZbtWhu.cjs} +2 -2
- package/dist/{section-CdaSS9M7.cjs.map → section-DhZbtWhu.cjs.map} +1 -1
- package/dist/{section-DcjTdrqz.js → section-Dq6aFxlH.js} +2 -2
- package/dist/{section-DcjTdrqz.js.map → section-Dq6aFxlH.js.map} +1 -1
- package/dist/{segmented-control-BfY7F0NZ.js → segmented-control-CUnvFStD.js} +2 -2
- package/dist/{segmented-control-BfY7F0NZ.js.map → segmented-control-CUnvFStD.js.map} +1 -1
- package/dist/{select-BGAiIHnS.js → select-N2lgBRsg.js} +2 -2
- package/dist/{select-BGAiIHnS.js.map → select-N2lgBRsg.js.map} +1 -1
- package/dist/{settings-row-rOI4yGvi.cjs → settings-row-CwZ3JffC.cjs} +2 -1
- package/dist/{settings-row-rOI4yGvi.cjs.map → settings-row-CwZ3JffC.cjs.map} +1 -1
- package/dist/{settings-row-ylIw4rfC.js → settings-row-gpwIVAMN.js} +3 -2
- package/dist/{settings-row-ylIw4rfC.js.map → settings-row-gpwIVAMN.js.map} +1 -1
- package/dist/{side-dialog-CB_wrLtE.js → side-dialog-CWQL33WR.js} +2 -2
- package/dist/{side-dialog-CB_wrLtE.js.map → side-dialog-CWQL33WR.js.map} +1 -1
- package/dist/{side-dialog-OPXvmRDA.cjs → side-dialog-DldgOJIk.cjs} +2 -2
- package/dist/{side-dialog-OPXvmRDA.cjs.map → side-dialog-DldgOJIk.cjs.map} +1 -1
- package/dist/{span-payload-primitives-Cixom2Py.js → span-payload-primitives-WqYTBiGx.js} +2 -2
- package/dist/{span-payload-primitives-Cixom2Py.js.map → span-payload-primitives-WqYTBiGx.js.map} +1 -1
- package/dist/src/ds/components/Avatar/Avatar.d.ts +20 -9
- package/dist/src/ds/components/Avatar/avatar-badge.d.ts +6 -0
- package/dist/src/ds/components/Avatar/avatar-element.d.ts +3 -0
- package/dist/src/ds/components/Avatar/avatar-fallback.d.ts +5 -0
- package/dist/src/ds/components/Avatar/avatar-group-count.d.ts +3 -0
- package/dist/src/ds/components/Avatar/avatar-group.d.ts +6 -0
- package/dist/src/ds/components/Avatar/avatar-image.d.ts +6 -0
- package/dist/src/ds/components/Avatar/avatar-named.d.ts +10 -0
- package/dist/src/ds/components/Avatar/avatar-root.d.ts +8 -0
- package/dist/src/ds/components/Avatar/avatar-size.d.ts +5 -0
- package/dist/style.css +91 -24
- package/dist/{switch-BBeMfeQ2.js → switch-DiSlsWUt.js} +2 -2
- package/dist/{switch-BBeMfeQ2.js.map → switch-DiSlsWUt.js.map} +1 -1
- package/dist/{time-picker-Bo6GJcmz.js → time-picker-J7GaNaEd.js} +2 -2
- package/dist/{time-picker-Bo6GJcmz.js.map → time-picker-J7GaNaEd.js.map} +1 -1
- package/dist/{tool-approval-BQ6sDvyS.js → tool-approval-nsbG8-qI.js} +2 -2
- package/dist/{tool-approval-BQ6sDvyS.js.map → tool-approval-nsbG8-qI.js.map} +1 -1
- package/dist/{tool-call-arguments-B86JP3Dy.js → tool-call-arguments-RKyYP3xh.js} +2 -2
- package/dist/{tool-call-arguments-B86JP3Dy.js.map → tool-call-arguments-RKyYP3xh.js.map} +1 -1
- package/dist/{tool-card-C8IrtMuQ.js → tool-card-BtPh44u6.js} +2 -2
- package/dist/{tool-card-C8IrtMuQ.js.map → tool-card-BtPh44u6.js.map} +1 -1
- package/dist/{traces-data-list-DaFA1Ccg.cjs → traces-data-list-Cf_PpmSN.cjs} +19 -17
- package/dist/{traces-data-list-DaFA1Ccg.cjs.map → traces-data-list-Cf_PpmSN.cjs.map} +1 -1
- package/dist/{traces-data-list-L_r2GAtr.js → traces-data-list-_mFOMw0U.js} +4 -2
- package/dist/{traces-data-list-L_r2GAtr.js.map → traces-data-list-_mFOMw0U.js.map} +1 -1
- package/dist/{use-workflow-graph-runtime-DS7eWso7.js → use-workflow-graph-runtime-CAyNWN_Z.js} +2 -2
- package/dist/{use-workflow-graph-runtime-DS7eWso7.js.map → use-workflow-graph-runtime-CAyNWN_Z.js.map} +1 -1
- package/dist/{workflow-code-dialog-content-BUCZZoKf.js → workflow-code-dialog-content-CNDoMFAV.js} +2 -2
- package/dist/{workflow-code-dialog-content-BUCZZoKf.js.map → workflow-code-dialog-content-CNDoMFAV.js.map} +1 -1
- package/dist/{workflow-data-edge-view-BIiMA9zg.js → workflow-data-edge-view-BaA6YJye.js} +2 -2
- package/dist/{workflow-data-edge-view-BIiMA9zg.js.map → workflow-data-edge-view-BaA6YJye.js.map} +1 -1
- package/dist/{workflow-edge-data-button-D5oK4NS5.js → workflow-edge-data-button-6EDXzRxr.js} +2 -2
- package/dist/{workflow-edge-data-button-D5oK4NS5.js.map → workflow-edge-data-button-6EDXzRxr.js.map} +1 -1
- package/package.json +7 -7
- package/dist/Avatar-BPHG0wrq.cjs +0 -45
- package/dist/Avatar-BPHG0wrq.cjs.map +0 -1
- package/dist/Avatar-DAnyIHjm.js +0 -43
- package/dist/Avatar-DAnyIHjm.js.map +0 -1
- package/dist/data-list-DDGpWucH.js.map +0 -1
- package/dist/data-list-_yDPF5wR.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traces-list-view.cjs.js","sources":["../../../../src/domains/traces/components/traces-list-view.tsx"],"sourcesContent":["import { useVirtualizer } from '@tanstack/react-virtual';\nimport { ListFilterIcon } from 'lucide-react';\nimport { useRef } from 'react';\nimport {\n DEFAULT_TRACE_COLUMN_PREFERENCES,\n TRACE_CUSTOM_COLUMN_LABELS,\n buildTraceListColumnKeys,\n buildTraceListColumns,\n formatTraceMetadataValue,\n hasTraceColumn,\n} from '../trace-list-columns';\nimport type { TraceColumnPreferences, TraceCustomColumn, TraceUsageSummary } from '../trace-list-columns';\nimport { getInputPreview, getSpanDurationMs } from '../utils/span-utils';\nimport { DataList, DataListSkeletonRows, TracesDataList, useDataListKeyboard } from '@/ds/components/DataList';\nimport type { DataListSort } from '@/ds/components/DataList';\nimport { splitColumns } from '@/ds/components/DataList/shared';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu';\nimport { Txt } from '@/ds/components/Txt/Txt';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { formatCompactNumber, formatCost } from '@/lib/cost';\nimport { cn } from '@/lib/utils';\nimport { formatDuration } from '@/utils/duration';\n\nexport type TracesListViewTrace = {\n traceId: string;\n /** Required for branch rows; absent on plain trace rows (which are root-rooted). */\n spanId?: string | null;\n /** `null`/missing → root span. Drives the Kind column's icon (top-level trace vs nested branch). */\n parentSpanId?: string | null;\n name: string;\n entityType?: string | null;\n entityId?: string | null;\n entityName?: string | null;\n threadId?: string | null;\n resourceId?: string | null;\n environment?: string | null;\n status?: string | null;\n /** Server-rendered preview of `input`. Present on lightweight rows, which omit `input` itself. */\n inputPreview?: string | null;\n input?: unknown;\n metadata?: Record<string, unknown> | null;\n startedAt?: Date | string | null;\n endedAt?: Date | string | null;\n createdAt: Date | string;\n};\n\nconst ROW_HEIGHT = 36;\nconst OVERSCAN = 8;\n/** Distinct values offered in a custom column's \"filter by value\" header menu. */\nconst MAX_FILTER_VALUES = 20;\n\nfunction customColumnValue(trace: TracesListViewTrace, field: TraceCustomColumn): string | null | undefined {\n return trace[field];\n}\n\nfunction distinctCustomColumnValues(traces: TracesListViewTrace[], field: TraceCustomColumn): string[] {\n const values = new Set<string>();\n for (const trace of traces) {\n const value = trace[field];\n if (typeof value === 'string' && value) values.add(value);\n if (values.size >= MAX_FILTER_VALUES) break;\n }\n return [...values];\n}\n\nfunction sumTokens(usage: TraceUsageSummary | undefined): number | undefined {\n if (usage?.inputTokens === undefined && usage?.outputTokens === undefined) return undefined;\n return (usage?.inputTokens ?? 0) + (usage?.outputTokens ?? 0);\n}\n\nexport type TracesListViewProps = {\n traces: TracesListViewTrace[];\n isLoading?: boolean;\n isFetchingNextPage?: boolean;\n hasNextPage?: boolean;\n setEndOfListElement?: (element: HTMLDivElement | null) => void;\n filtersApplied?: boolean;\n /** Currently featured/selected trace — its row gets the highlighted background. */\n featuredTraceId?: string | null;\n /**\n * Required in branches mode to disambiguate rows sharing a `traceId`. When set,\n * a row is featured only when both `traceId` and `spanId` match.\n */\n featuredSpanId?: string | null;\n /** Branches mode mixes root traces with subtraces — enables the Trace/Subtrace tooltip on the\n * level icon in the Name column, which is meaningless when every row is a root. */\n isBranchesMode?: boolean;\n /** Keys (`traceId:spanId`) of rows that just arrived via delta polling. Rows whose key is in\n * this set get a temporary tint to distinguish them from rows present since the last page-mode\n * fetch. Auto-expires upstream (in useTraces) after a short window. */\n recentlyAddedKeys?: Set<string>;\n /** Optional and metadata columns selected for this project. */\n columnPreferences?: TraceColumnPreferences;\n /** Token and estimated-cost totals, aggregated across model spans by trace ID. */\n usageByTraceId?: ReadonlyMap<string, TraceUsageSummary>;\n /** Called when a row is clicked. The current selection logic (toggle on same id) is the consumer's call. */\n onTraceClick: (trace: TracesListViewTrace) => void;\n /** Current sort of the Created column. When `onSortChange` is provided the header becomes sortable. */\n createdSort?: DataListSort;\n onSortChange?: (direction: DataListSort, key: 'startedAt') => void;\n /** When provided, custom column headers offer an `is <value>` filter for every value currently listed. */\n onFilterByField?: (field: TraceCustomColumn, value: string) => void;\n /** Storage id for the persisted column order. Use a distinct id per page so each keeps its own order. */\n listId?: string;\n};\n\n/**\n * Virtualized presentational list. Renders only the visible window via TanStack Virtual, and\n * uses DataList primitives for layout (CSS Grid with subgrid rows).\n */\nexport function TracesListView({\n traces,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n filtersApplied,\n featuredTraceId,\n featuredSpanId,\n isBranchesMode,\n recentlyAddedKeys,\n columnPreferences = DEFAULT_TRACE_COLUMN_PREFERENCES,\n usageByTraceId,\n onTraceClick,\n createdSort,\n onSortChange,\n onFilterByField,\n listId = 'all-traces',\n}: TracesListViewProps) {\n const scrollRef = useRef<HTMLDivElement | null>(null);\n const columns = buildTraceListColumns(columnPreferences);\n const columnKeys = buildTraceListColumnKeys(columnPreferences);\n\n const virtualizer = useVirtualizer({\n count: traces.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: () => ROW_HEIGHT,\n overscan: OVERSCAN,\n });\n\n const { getRowProps } = useDataListKeyboard({\n count: traces.length,\n containerRef: scrollRef,\n onNavigate: index => virtualizer.scrollToIndex(index),\n global: true,\n });\n\n const virtualItems = virtualizer.getVirtualItems();\n const totalSize = virtualizer.getTotalSize();\n const paddingTop = virtualItems[0]?.start ?? 0;\n const paddingBottom =\n virtualItems.length > 0 ? Math.max(0, totalSize - (virtualItems[virtualItems.length - 1]?.end ?? 0)) : 0;\n\n return (\n <TracesDataList\n reorderable\n id={listId}\n columns={columns}\n columnKeys={columnKeys}\n fit=\"container\"\n scrollRef={scrollRef}\n className=\"min-w-0\"\n >\n <TracesDataList.Top>\n {onSortChange ? (\n <TracesDataList.SortableTopCell sortKey=\"startedAt\" sort={createdSort} onSortChange={onSortChange}>\n Start\n </TracesDataList.SortableTopCell>\n ) : (\n <TracesDataList.TopCell>Start</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'type') && <TracesDataList.TopCell>Primitive type</TracesDataList.TopCell>}\n <TracesDataList.TopCell>Primitive name</TracesDataList.TopCell>\n {hasTraceColumn(columnPreferences, 'input') && <TracesDataList.TopCell>Input</TracesDataList.TopCell>}\n <TracesDataList.TopCell>Status</TracesDataList.TopCell>\n {hasTraceColumn(columnPreferences, 'duration') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Duration</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'endTime') && <TracesDataList.TopCell>End</TracesDataList.TopCell>}\n {hasTraceColumn(columnPreferences, 'environment') && (\n <TracesDataList.TopCell>Environment</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'inputTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Input tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'outputTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Output tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'totalTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Total tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'estimatedCost') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Est. cost</TracesDataList.TopCell>\n )}\n {columnPreferences.customColumns.map(field => {\n const label = TRACE_CUSTOM_COLUMN_LABELS[field];\n const filterValues = onFilterByField ? distinctCustomColumnValues(traces, field) : [];\n if (!onFilterByField || filterValues.length === 0) {\n return <TracesDataList.TopCell key={field}>{label}</TracesDataList.TopCell>;\n }\n return (\n <TracesDataList.TopCell key={field} className=\"overflow-visible\">\n <DropdownMenu>\n <DropdownMenu.Trigger\n render={\n <button\n type=\"button\"\n className={cn('flex min-w-0 items-center gap-1 rounded-sm hover:text-foreground', focusRing)}\n >\n <span className=\"min-w-0 truncate\">{label}</span>\n <ListFilterIcon aria-hidden className=\"size-[1.2em] shrink-0\" />\n </button>\n }\n />\n <DropdownMenu.Content align=\"start\">\n <DropdownMenu.Label>Filter by value</DropdownMenu.Label>\n {filterValues.map(value => (\n <DropdownMenu.Item key={value} onSelect={() => onFilterByField(field, value)}>\n <Txt as=\"span\" variant=\"body-sm\" font=\"mono\" className=\"min-w-0 truncate\">\n {value}\n </Txt>\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n </TracesDataList.TopCell>\n );\n })}\n {columnPreferences.metadataKeys.map(key => (\n <TracesDataList.TopCellWithTooltip key={key} tooltip={key}>\n {key}\n </TracesDataList.TopCellWithTooltip>\n ))}\n </TracesDataList.Top>\n\n {isLoading ? (\n <DataListSkeletonRows columnCount={splitColumns(columns).length} />\n ) : traces.length === 0 ? (\n <TracesDataList.NoMatch\n message={filtersApplied ? 'No traces found for applied filters' : 'No traces found yet'}\n />\n ) : (\n <>\n <TracesDataList.Spacer height={paddingTop} />\n {virtualItems.map(vi => {\n const trace = traces[vi.index];\n if (!trace) return null;\n\n const isFeatured =\n trace.traceId === featuredTraceId && (featuredSpanId == null || trace.spanId === featuredSpanId);\n const rowKey = `${trace.traceId}:${trace.spanId ?? ''}`;\n const isRecentlyAdded = recentlyAddedKeys?.has(rowKey) ?? false;\n const displayDate = trace.startedAt ?? trace.createdAt;\n const usage = usageByTraceId?.get(trace.traceId);\n\n return (\n <TracesDataList.RowButton\n key={rowKey}\n ref={virtualizer.measureElement}\n data-index={vi.index}\n {...getRowProps(vi.index)}\n onClick={() => onTraceClick(trace)}\n featured={isFeatured}\n className={cn(isRecentlyAdded && 'animate-row-highlight')}\n >\n <TracesDataList.CreatedCell timestamp={displayDate} preset=\"day-time-seconds\" />\n {hasTraceColumn(columnPreferences, 'type') && <TracesDataList.TypeCell entityType={trace.entityType} />}\n <TracesDataList.NameCell\n name={trace.entityName || trace.name}\n parentSpanId={trace.parentSpanId}\n showLevelTooltip={isBranchesMode}\n />\n {hasTraceColumn(columnPreferences, 'input') && (\n <TracesDataList.InputCell input={trace.inputPreview ?? getInputPreview(trace.input)} />\n )}\n <TracesDataList.StatusCell status={trace.status} />\n {hasTraceColumn(columnPreferences, 'duration') && (\n <DataList.NumberCell font=\"mono\">\n {formatDuration(getSpanDurationMs(trace.startedAt, trace.endedAt))}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'endTime') && (\n <TracesDataList.CreatedCell timestamp={trace.endedAt ?? ''} preset=\"day-time-seconds\" />\n )}\n {hasTraceColumn(columnPreferences, 'environment') && (\n <DataList.TextCell>{trace.environment || '—'}</DataList.TextCell>\n )}\n {hasTraceColumn(columnPreferences, 'inputTokens') && (\n <DataList.NumberCell>\n {usage?.inputTokens === undefined ? undefined : formatCompactNumber(usage.inputTokens)}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'outputTokens') && (\n <DataList.NumberCell>\n {usage?.outputTokens === undefined ? undefined : formatCompactNumber(usage.outputTokens)}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'totalTokens') && (\n <DataList.NumberCell>\n {(() => {\n const total = sumTokens(usage);\n return total === undefined ? undefined : formatCompactNumber(total);\n })()}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'estimatedCost') && (\n <DataList.NumberCell>\n {usage?.estimatedCost === undefined ? undefined : formatCost(usage.estimatedCost, usage.costUnit)}\n </DataList.NumberCell>\n )}\n {columnPreferences.customColumns.map(field => (\n <DataList.TextCell font=\"mono\" key={field}>\n {customColumnValue(trace, field) ?? undefined}\n </DataList.TextCell>\n ))}\n {columnPreferences.metadataKeys.map(key => {\n const value = formatTraceMetadataValue(trace.metadata, key);\n return (\n <DataList.TextCell font=\"mono\" key={key}>\n {value}\n </DataList.TextCell>\n );\n })}\n </TracesDataList.RowButton>\n );\n })}\n <TracesDataList.Spacer height={paddingBottom} />\n <TracesDataList.NextPageLoading\n isLoading={isFetchingNextPage}\n hasMore={hasNextPage}\n setEndOfListElement={setEndOfListElement}\n />\n </>\n )}\n </TracesDataList>\n );\n}\n"],"names":["DEFAULT_TRACE_COLUMN_PREFERENCES","useRef","buildTraceListColumns","buildTraceListColumnKeys","useVirtualizer","useDataListKeyboard","jsxs","TracesDataList","jsx","hasTraceColumn","TRACE_CUSTOM_COLUMN_LABELS","DropdownMenu","cn","focusRing","ListFilterIcon","Txt","DataListSkeletonRows","splitColumns","Fragment","getInputPreview","DataList","getSpanDurationMs","formatCompactNumber","formatCost","formatTraceMetadataValue"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"traces-list-view.cjs.js","sources":["../../../../src/domains/traces/components/traces-list-view.tsx"],"sourcesContent":["import { useVirtualizer } from '@tanstack/react-virtual';\nimport { ListFilterIcon } from 'lucide-react';\nimport { useRef } from 'react';\nimport {\n DEFAULT_TRACE_COLUMN_PREFERENCES,\n TRACE_CUSTOM_COLUMN_LABELS,\n buildTraceListColumnKeys,\n buildTraceListColumns,\n formatTraceMetadataValue,\n hasTraceColumn,\n} from '../trace-list-columns';\nimport type { TraceColumnPreferences, TraceCustomColumn, TraceUsageSummary } from '../trace-list-columns';\nimport { getInputPreview, getSpanDurationMs } from '../utils/span-utils';\nimport { DataList, DataListSkeletonRows, TracesDataList, useDataListKeyboard } from '@/ds/components/DataList';\nimport type { DataListSort } from '@/ds/components/DataList';\nimport { splitColumns } from '@/ds/components/DataList/shared';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu';\nimport { Txt } from '@/ds/components/Txt/Txt';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { formatCompactNumber, formatCost } from '@/lib/cost';\nimport { cn } from '@/lib/utils';\nimport { formatDuration } from '@/utils/duration';\n\nexport type TracesListViewTrace = {\n traceId: string;\n /** Required for branch rows; absent on plain trace rows (which are root-rooted). */\n spanId?: string | null;\n /** `null`/missing → root span. Drives the Kind column's icon (top-level trace vs nested branch). */\n parentSpanId?: string | null;\n name: string;\n entityType?: string | null;\n entityId?: string | null;\n entityName?: string | null;\n threadId?: string | null;\n resourceId?: string | null;\n environment?: string | null;\n status?: string | null;\n /** Server-rendered preview of `input`. Present on lightweight rows, which omit `input` itself. */\n inputPreview?: string | null;\n input?: unknown;\n metadata?: Record<string, unknown> | null;\n startedAt?: Date | string | null;\n endedAt?: Date | string | null;\n createdAt: Date | string;\n};\n\nconst ROW_HEIGHT = 36;\nconst OVERSCAN = 8;\n/** Distinct values offered in a custom column's \"filter by value\" header menu. */\nconst MAX_FILTER_VALUES = 20;\n\nfunction customColumnValue(trace: TracesListViewTrace, field: TraceCustomColumn): string | null | undefined {\n return trace[field];\n}\n\nfunction distinctCustomColumnValues(traces: TracesListViewTrace[], field: TraceCustomColumn): string[] {\n const values = new Set<string>();\n for (const trace of traces) {\n const value = trace[field];\n if (typeof value === 'string' && value) values.add(value);\n if (values.size >= MAX_FILTER_VALUES) break;\n }\n return [...values];\n}\n\nfunction sumTokens(usage: TraceUsageSummary | undefined): number | undefined {\n if (usage?.inputTokens === undefined && usage?.outputTokens === undefined) return undefined;\n return (usage?.inputTokens ?? 0) + (usage?.outputTokens ?? 0);\n}\n\nexport type TracesListViewProps = {\n traces: TracesListViewTrace[];\n isLoading?: boolean;\n isFetchingNextPage?: boolean;\n hasNextPage?: boolean;\n setEndOfListElement?: (element: HTMLDivElement | null) => void;\n filtersApplied?: boolean;\n /** Currently featured/selected trace — its row gets the highlighted background. */\n featuredTraceId?: string | null;\n /**\n * Required in branches mode to disambiguate rows sharing a `traceId`. When set,\n * a row is featured only when both `traceId` and `spanId` match.\n */\n featuredSpanId?: string | null;\n /** Branches mode mixes root traces with subtraces — enables the Trace/Subtrace tooltip on the\n * level icon in the Name column, which is meaningless when every row is a root. */\n isBranchesMode?: boolean;\n /** Keys (`traceId:spanId`) of rows that just arrived via delta polling. Rows whose key is in\n * this set get a temporary tint to distinguish them from rows present since the last page-mode\n * fetch. Auto-expires upstream (in useTraces) after a short window. */\n recentlyAddedKeys?: Set<string>;\n /** Optional and metadata columns selected for this project. */\n columnPreferences?: TraceColumnPreferences;\n /** Token and estimated-cost totals, aggregated across model spans by trace ID. */\n usageByTraceId?: ReadonlyMap<string, TraceUsageSummary>;\n /** Called when a row is clicked. The current selection logic (toggle on same id) is the consumer's call. */\n onTraceClick: (trace: TracesListViewTrace) => void;\n /** Current sort of the Created column. When `onSortChange` is provided the header becomes sortable. */\n createdSort?: DataListSort;\n onSortChange?: (direction: DataListSort, key: 'startedAt') => void;\n /** When provided, custom column headers offer an `is <value>` filter for every value currently listed. */\n onFilterByField?: (field: TraceCustomColumn, value: string) => void;\n /** Storage id for the persisted column order. Use a distinct id per page so each keeps its own order. */\n listId?: string;\n};\n\n/**\n * Virtualized presentational list. Renders only the visible window via TanStack Virtual, and\n * uses DataList primitives for layout (CSS Grid with subgrid rows).\n */\nexport function TracesListView({\n traces,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n filtersApplied,\n featuredTraceId,\n featuredSpanId,\n isBranchesMode,\n recentlyAddedKeys,\n columnPreferences = DEFAULT_TRACE_COLUMN_PREFERENCES,\n usageByTraceId,\n onTraceClick,\n createdSort,\n onSortChange,\n onFilterByField,\n listId = 'all-traces',\n}: TracesListViewProps) {\n const scrollRef = useRef<HTMLDivElement | null>(null);\n const columns = buildTraceListColumns(columnPreferences);\n const columnKeys = buildTraceListColumnKeys(columnPreferences);\n\n const virtualizer = useVirtualizer({\n count: traces.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: () => ROW_HEIGHT,\n overscan: OVERSCAN,\n });\n\n const { getRowProps } = useDataListKeyboard({\n count: traces.length,\n containerRef: scrollRef,\n onNavigate: index => virtualizer.scrollToIndex(index),\n global: true,\n });\n\n const virtualItems = virtualizer.getVirtualItems();\n const totalSize = virtualizer.getTotalSize();\n const paddingTop = virtualItems[0]?.start ?? 0;\n const paddingBottom =\n virtualItems.length > 0 ? Math.max(0, totalSize - (virtualItems[virtualItems.length - 1]?.end ?? 0)) : 0;\n\n return (\n <TracesDataList\n reorderable\n id={listId}\n columns={columns}\n columnKeys={columnKeys}\n fit=\"container\"\n scrollRef={scrollRef}\n className=\"min-w-0\"\n >\n <TracesDataList.Top>\n {onSortChange ? (\n <TracesDataList.SortableTopCell sortKey=\"startedAt\" sort={createdSort} onSortChange={onSortChange}>\n Start\n </TracesDataList.SortableTopCell>\n ) : (\n <TracesDataList.TopCell>Start</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'type') && <TracesDataList.TopCell>Primitive type</TracesDataList.TopCell>}\n <TracesDataList.TopCell>Primitive name</TracesDataList.TopCell>\n {hasTraceColumn(columnPreferences, 'input') && <TracesDataList.TopCell>Input</TracesDataList.TopCell>}\n <TracesDataList.TopCell>Status</TracesDataList.TopCell>\n {hasTraceColumn(columnPreferences, 'duration') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Duration</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'endTime') && <TracesDataList.TopCell>End</TracesDataList.TopCell>}\n {hasTraceColumn(columnPreferences, 'environment') && (\n <TracesDataList.TopCell>Environment</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'inputTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Input tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'outputTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Output tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'totalTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Total tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'estimatedCost') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Est. cost</TracesDataList.TopCell>\n )}\n {columnPreferences.customColumns.map(field => {\n const label = TRACE_CUSTOM_COLUMN_LABELS[field];\n const filterValues = onFilterByField ? distinctCustomColumnValues(traces, field) : [];\n if (!onFilterByField || filterValues.length === 0) {\n return <TracesDataList.TopCell key={field}>{label}</TracesDataList.TopCell>;\n }\n return (\n <TracesDataList.TopCell key={field} className=\"overflow-visible\">\n <DropdownMenu>\n <DropdownMenu.Trigger\n render={\n <button\n type=\"button\"\n className={cn('flex min-w-0 items-center gap-1 rounded-sm hover:text-foreground', focusRing)}\n >\n <span className=\"min-w-0 truncate\">{label}</span>\n <ListFilterIcon aria-hidden className=\"size-[1.2em] shrink-0\" />\n </button>\n }\n />\n <DropdownMenu.Content align=\"start\">\n <DropdownMenu.Label>Filter by value</DropdownMenu.Label>\n {filterValues.map(value => (\n <DropdownMenu.Item key={value} onSelect={() => onFilterByField(field, value)}>\n <Txt as=\"span\" variant=\"body-sm\" font=\"mono\" className=\"min-w-0 truncate\">\n {value}\n </Txt>\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n </TracesDataList.TopCell>\n );\n })}\n {columnPreferences.metadataKeys.map(key => (\n <TracesDataList.TopCellWithTooltip key={key} tooltip={key}>\n {key}\n </TracesDataList.TopCellWithTooltip>\n ))}\n </TracesDataList.Top>\n\n {isLoading ? (\n <DataListSkeletonRows columnCount={splitColumns(columns).length} />\n ) : traces.length === 0 ? (\n <TracesDataList.NoMatch\n message={filtersApplied ? 'No traces found for applied filters' : 'No traces found yet'}\n />\n ) : (\n <>\n <TracesDataList.Spacer height={paddingTop} />\n {virtualItems.map(vi => {\n const trace = traces[vi.index];\n if (!trace) return null;\n\n const isFeatured =\n trace.traceId === featuredTraceId && (featuredSpanId == null || trace.spanId === featuredSpanId);\n const rowKey = `${trace.traceId}:${trace.spanId ?? ''}`;\n const isRecentlyAdded = recentlyAddedKeys?.has(rowKey) ?? false;\n const displayDate = trace.startedAt ?? trace.createdAt;\n const usage = usageByTraceId?.get(trace.traceId);\n\n return (\n <TracesDataList.RowButton\n key={rowKey}\n ref={virtualizer.measureElement}\n data-index={vi.index}\n {...getRowProps(vi.index)}\n onClick={() => onTraceClick(trace)}\n featured={isFeatured}\n className={cn(isRecentlyAdded && 'animate-row-highlight')}\n >\n <TracesDataList.CreatedCell timestamp={displayDate} preset=\"day-time-seconds\" />\n {hasTraceColumn(columnPreferences, 'type') && <TracesDataList.TypeCell entityType={trace.entityType} />}\n <TracesDataList.NameCell\n name={trace.entityName || trace.name}\n parentSpanId={trace.parentSpanId}\n showLevelTooltip={isBranchesMode}\n />\n {hasTraceColumn(columnPreferences, 'input') && (\n <TracesDataList.InputCell input={trace.inputPreview ?? getInputPreview(trace.input)} />\n )}\n <TracesDataList.StatusCell status={trace.status} />\n {hasTraceColumn(columnPreferences, 'duration') && (\n <DataList.NumberCell font=\"mono\">\n {formatDuration(getSpanDurationMs(trace.startedAt, trace.endedAt))}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'endTime') && (\n <TracesDataList.CreatedCell timestamp={trace.endedAt ?? ''} preset=\"day-time-seconds\" />\n )}\n {hasTraceColumn(columnPreferences, 'environment') && (\n <DataList.TextCell>{trace.environment || '—'}</DataList.TextCell>\n )}\n {hasTraceColumn(columnPreferences, 'inputTokens') && (\n <DataList.NumberCell>\n {usage?.inputTokens === undefined ? undefined : formatCompactNumber(usage.inputTokens)}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'outputTokens') && (\n <DataList.NumberCell>\n {usage?.outputTokens === undefined ? undefined : formatCompactNumber(usage.outputTokens)}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'totalTokens') && (\n <DataList.NumberCell>\n {(() => {\n const total = sumTokens(usage);\n return total === undefined ? undefined : formatCompactNumber(total);\n })()}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'estimatedCost') && (\n <DataList.NumberCell>\n {usage?.estimatedCost === undefined ? undefined : formatCost(usage.estimatedCost, usage.costUnit)}\n </DataList.NumberCell>\n )}\n {columnPreferences.customColumns.map(field => (\n <DataList.TextCell font=\"mono\" key={field}>\n {customColumnValue(trace, field) ?? undefined}\n </DataList.TextCell>\n ))}\n {columnPreferences.metadataKeys.map(key => {\n const value = formatTraceMetadataValue(trace.metadata, key);\n return (\n <DataList.TextCell font=\"mono\" key={key}>\n {value}\n </DataList.TextCell>\n );\n })}\n </TracesDataList.RowButton>\n );\n })}\n <TracesDataList.Spacer height={paddingBottom} />\n <TracesDataList.NextPageLoading\n isLoading={isFetchingNextPage}\n hasMore={hasNextPage}\n setEndOfListElement={setEndOfListElement}\n />\n </>\n )}\n </TracesDataList>\n );\n}\n"],"names":["DEFAULT_TRACE_COLUMN_PREFERENCES","useRef","buildTraceListColumns","buildTraceListColumnKeys","useVirtualizer","useDataListKeyboard","jsxs","TracesDataList","jsx","hasTraceColumn","TRACE_CUSTOM_COLUMN_LABELS","DropdownMenu","cn","focusRing","ListFilterIcon","Txt","DataListSkeletonRows","splitColumns","Fragment","getInputPreview","DataList","getSpanDurationMs","formatCompactNumber","formatCost","formatTraceMetadataValue"],"mappings":"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"}
|
|
@@ -4,10 +4,11 @@ import { ListFilterIcon } from 'lucide-react';
|
|
|
4
4
|
import { useRef } from 'react';
|
|
5
5
|
import { buildTraceListColumns, buildTraceListColumnKeys, hasTraceColumn, DEFAULT_TRACE_COLUMN_PREFERENCES, TRACE_CUSTOM_COLUMN_LABELS, formatTraceMetadataValue } from '../trace-list-columns.es.js';
|
|
6
6
|
import { getInputPreview, getSpanDurationMs } from '../utils/span-utils.es.js';
|
|
7
|
-
import {
|
|
8
|
-
import { a as DataListSkeletonRows } from '../../../data-list-skeleton-
|
|
9
|
-
import { T as TracesDataList } from '../../../traces-data-list-
|
|
7
|
+
import { D as DataList } from '../../../data-list-Dv2lP-dU.js';
|
|
8
|
+
import { a as DataListSkeletonRows } from '../../../data-list-skeleton-BmsDYJrA.js';
|
|
9
|
+
import { T as TracesDataList } from '../../../traces-data-list-_mFOMw0U.js';
|
|
10
10
|
import { u as useDataListKeyboard } from '../../../use-data-list-keyboard-DFQr4t38.js';
|
|
11
|
+
import { s as splitColumns } from '../../../data-list-top-BJCC62oy.js';
|
|
11
12
|
import { D as DropdownMenu } from '../../../dropdown-menu-D8GR_NhL.js';
|
|
12
13
|
import { T as Txt } from '../../../Txt-BuzYj7Vy.js';
|
|
13
14
|
import { focusRing } from '../../../primitives/transitions.es.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traces-list-view.es.js","sources":["../../../../src/domains/traces/components/traces-list-view.tsx"],"sourcesContent":["import { useVirtualizer } from '@tanstack/react-virtual';\nimport { ListFilterIcon } from 'lucide-react';\nimport { useRef } from 'react';\nimport {\n DEFAULT_TRACE_COLUMN_PREFERENCES,\n TRACE_CUSTOM_COLUMN_LABELS,\n buildTraceListColumnKeys,\n buildTraceListColumns,\n formatTraceMetadataValue,\n hasTraceColumn,\n} from '../trace-list-columns';\nimport type { TraceColumnPreferences, TraceCustomColumn, TraceUsageSummary } from '../trace-list-columns';\nimport { getInputPreview, getSpanDurationMs } from '../utils/span-utils';\nimport { DataList, DataListSkeletonRows, TracesDataList, useDataListKeyboard } from '@/ds/components/DataList';\nimport type { DataListSort } from '@/ds/components/DataList';\nimport { splitColumns } from '@/ds/components/DataList/shared';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu';\nimport { Txt } from '@/ds/components/Txt/Txt';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { formatCompactNumber, formatCost } from '@/lib/cost';\nimport { cn } from '@/lib/utils';\nimport { formatDuration } from '@/utils/duration';\n\nexport type TracesListViewTrace = {\n traceId: string;\n /** Required for branch rows; absent on plain trace rows (which are root-rooted). */\n spanId?: string | null;\n /** `null`/missing → root span. Drives the Kind column's icon (top-level trace vs nested branch). */\n parentSpanId?: string | null;\n name: string;\n entityType?: string | null;\n entityId?: string | null;\n entityName?: string | null;\n threadId?: string | null;\n resourceId?: string | null;\n environment?: string | null;\n status?: string | null;\n /** Server-rendered preview of `input`. Present on lightweight rows, which omit `input` itself. */\n inputPreview?: string | null;\n input?: unknown;\n metadata?: Record<string, unknown> | null;\n startedAt?: Date | string | null;\n endedAt?: Date | string | null;\n createdAt: Date | string;\n};\n\nconst ROW_HEIGHT = 36;\nconst OVERSCAN = 8;\n/** Distinct values offered in a custom column's \"filter by value\" header menu. */\nconst MAX_FILTER_VALUES = 20;\n\nfunction customColumnValue(trace: TracesListViewTrace, field: TraceCustomColumn): string | null | undefined {\n return trace[field];\n}\n\nfunction distinctCustomColumnValues(traces: TracesListViewTrace[], field: TraceCustomColumn): string[] {\n const values = new Set<string>();\n for (const trace of traces) {\n const value = trace[field];\n if (typeof value === 'string' && value) values.add(value);\n if (values.size >= MAX_FILTER_VALUES) break;\n }\n return [...values];\n}\n\nfunction sumTokens(usage: TraceUsageSummary | undefined): number | undefined {\n if (usage?.inputTokens === undefined && usage?.outputTokens === undefined) return undefined;\n return (usage?.inputTokens ?? 0) + (usage?.outputTokens ?? 0);\n}\n\nexport type TracesListViewProps = {\n traces: TracesListViewTrace[];\n isLoading?: boolean;\n isFetchingNextPage?: boolean;\n hasNextPage?: boolean;\n setEndOfListElement?: (element: HTMLDivElement | null) => void;\n filtersApplied?: boolean;\n /** Currently featured/selected trace — its row gets the highlighted background. */\n featuredTraceId?: string | null;\n /**\n * Required in branches mode to disambiguate rows sharing a `traceId`. When set,\n * a row is featured only when both `traceId` and `spanId` match.\n */\n featuredSpanId?: string | null;\n /** Branches mode mixes root traces with subtraces — enables the Trace/Subtrace tooltip on the\n * level icon in the Name column, which is meaningless when every row is a root. */\n isBranchesMode?: boolean;\n /** Keys (`traceId:spanId`) of rows that just arrived via delta polling. Rows whose key is in\n * this set get a temporary tint to distinguish them from rows present since the last page-mode\n * fetch. Auto-expires upstream (in useTraces) after a short window. */\n recentlyAddedKeys?: Set<string>;\n /** Optional and metadata columns selected for this project. */\n columnPreferences?: TraceColumnPreferences;\n /** Token and estimated-cost totals, aggregated across model spans by trace ID. */\n usageByTraceId?: ReadonlyMap<string, TraceUsageSummary>;\n /** Called when a row is clicked. The current selection logic (toggle on same id) is the consumer's call. */\n onTraceClick: (trace: TracesListViewTrace) => void;\n /** Current sort of the Created column. When `onSortChange` is provided the header becomes sortable. */\n createdSort?: DataListSort;\n onSortChange?: (direction: DataListSort, key: 'startedAt') => void;\n /** When provided, custom column headers offer an `is <value>` filter for every value currently listed. */\n onFilterByField?: (field: TraceCustomColumn, value: string) => void;\n /** Storage id for the persisted column order. Use a distinct id per page so each keeps its own order. */\n listId?: string;\n};\n\n/**\n * Virtualized presentational list. Renders only the visible window via TanStack Virtual, and\n * uses DataList primitives for layout (CSS Grid with subgrid rows).\n */\nexport function TracesListView({\n traces,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n filtersApplied,\n featuredTraceId,\n featuredSpanId,\n isBranchesMode,\n recentlyAddedKeys,\n columnPreferences = DEFAULT_TRACE_COLUMN_PREFERENCES,\n usageByTraceId,\n onTraceClick,\n createdSort,\n onSortChange,\n onFilterByField,\n listId = 'all-traces',\n}: TracesListViewProps) {\n const scrollRef = useRef<HTMLDivElement | null>(null);\n const columns = buildTraceListColumns(columnPreferences);\n const columnKeys = buildTraceListColumnKeys(columnPreferences);\n\n const virtualizer = useVirtualizer({\n count: traces.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: () => ROW_HEIGHT,\n overscan: OVERSCAN,\n });\n\n const { getRowProps } = useDataListKeyboard({\n count: traces.length,\n containerRef: scrollRef,\n onNavigate: index => virtualizer.scrollToIndex(index),\n global: true,\n });\n\n const virtualItems = virtualizer.getVirtualItems();\n const totalSize = virtualizer.getTotalSize();\n const paddingTop = virtualItems[0]?.start ?? 0;\n const paddingBottom =\n virtualItems.length > 0 ? Math.max(0, totalSize - (virtualItems[virtualItems.length - 1]?.end ?? 0)) : 0;\n\n return (\n <TracesDataList\n reorderable\n id={listId}\n columns={columns}\n columnKeys={columnKeys}\n fit=\"container\"\n scrollRef={scrollRef}\n className=\"min-w-0\"\n >\n <TracesDataList.Top>\n {onSortChange ? (\n <TracesDataList.SortableTopCell sortKey=\"startedAt\" sort={createdSort} onSortChange={onSortChange}>\n Start\n </TracesDataList.SortableTopCell>\n ) : (\n <TracesDataList.TopCell>Start</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'type') && <TracesDataList.TopCell>Primitive type</TracesDataList.TopCell>}\n <TracesDataList.TopCell>Primitive name</TracesDataList.TopCell>\n {hasTraceColumn(columnPreferences, 'input') && <TracesDataList.TopCell>Input</TracesDataList.TopCell>}\n <TracesDataList.TopCell>Status</TracesDataList.TopCell>\n {hasTraceColumn(columnPreferences, 'duration') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Duration</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'endTime') && <TracesDataList.TopCell>End</TracesDataList.TopCell>}\n {hasTraceColumn(columnPreferences, 'environment') && (\n <TracesDataList.TopCell>Environment</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'inputTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Input tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'outputTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Output tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'totalTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Total tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'estimatedCost') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Est. cost</TracesDataList.TopCell>\n )}\n {columnPreferences.customColumns.map(field => {\n const label = TRACE_CUSTOM_COLUMN_LABELS[field];\n const filterValues = onFilterByField ? distinctCustomColumnValues(traces, field) : [];\n if (!onFilterByField || filterValues.length === 0) {\n return <TracesDataList.TopCell key={field}>{label}</TracesDataList.TopCell>;\n }\n return (\n <TracesDataList.TopCell key={field} className=\"overflow-visible\">\n <DropdownMenu>\n <DropdownMenu.Trigger\n render={\n <button\n type=\"button\"\n className={cn('flex min-w-0 items-center gap-1 rounded-sm hover:text-foreground', focusRing)}\n >\n <span className=\"min-w-0 truncate\">{label}</span>\n <ListFilterIcon aria-hidden className=\"size-[1.2em] shrink-0\" />\n </button>\n }\n />\n <DropdownMenu.Content align=\"start\">\n <DropdownMenu.Label>Filter by value</DropdownMenu.Label>\n {filterValues.map(value => (\n <DropdownMenu.Item key={value} onSelect={() => onFilterByField(field, value)}>\n <Txt as=\"span\" variant=\"body-sm\" font=\"mono\" className=\"min-w-0 truncate\">\n {value}\n </Txt>\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n </TracesDataList.TopCell>\n );\n })}\n {columnPreferences.metadataKeys.map(key => (\n <TracesDataList.TopCellWithTooltip key={key} tooltip={key}>\n {key}\n </TracesDataList.TopCellWithTooltip>\n ))}\n </TracesDataList.Top>\n\n {isLoading ? (\n <DataListSkeletonRows columnCount={splitColumns(columns).length} />\n ) : traces.length === 0 ? (\n <TracesDataList.NoMatch\n message={filtersApplied ? 'No traces found for applied filters' : 'No traces found yet'}\n />\n ) : (\n <>\n <TracesDataList.Spacer height={paddingTop} />\n {virtualItems.map(vi => {\n const trace = traces[vi.index];\n if (!trace) return null;\n\n const isFeatured =\n trace.traceId === featuredTraceId && (featuredSpanId == null || trace.spanId === featuredSpanId);\n const rowKey = `${trace.traceId}:${trace.spanId ?? ''}`;\n const isRecentlyAdded = recentlyAddedKeys?.has(rowKey) ?? false;\n const displayDate = trace.startedAt ?? trace.createdAt;\n const usage = usageByTraceId?.get(trace.traceId);\n\n return (\n <TracesDataList.RowButton\n key={rowKey}\n ref={virtualizer.measureElement}\n data-index={vi.index}\n {...getRowProps(vi.index)}\n onClick={() => onTraceClick(trace)}\n featured={isFeatured}\n className={cn(isRecentlyAdded && 'animate-row-highlight')}\n >\n <TracesDataList.CreatedCell timestamp={displayDate} preset=\"day-time-seconds\" />\n {hasTraceColumn(columnPreferences, 'type') && <TracesDataList.TypeCell entityType={trace.entityType} />}\n <TracesDataList.NameCell\n name={trace.entityName || trace.name}\n parentSpanId={trace.parentSpanId}\n showLevelTooltip={isBranchesMode}\n />\n {hasTraceColumn(columnPreferences, 'input') && (\n <TracesDataList.InputCell input={trace.inputPreview ?? getInputPreview(trace.input)} />\n )}\n <TracesDataList.StatusCell status={trace.status} />\n {hasTraceColumn(columnPreferences, 'duration') && (\n <DataList.NumberCell font=\"mono\">\n {formatDuration(getSpanDurationMs(trace.startedAt, trace.endedAt))}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'endTime') && (\n <TracesDataList.CreatedCell timestamp={trace.endedAt ?? ''} preset=\"day-time-seconds\" />\n )}\n {hasTraceColumn(columnPreferences, 'environment') && (\n <DataList.TextCell>{trace.environment || '—'}</DataList.TextCell>\n )}\n {hasTraceColumn(columnPreferences, 'inputTokens') && (\n <DataList.NumberCell>\n {usage?.inputTokens === undefined ? undefined : formatCompactNumber(usage.inputTokens)}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'outputTokens') && (\n <DataList.NumberCell>\n {usage?.outputTokens === undefined ? undefined : formatCompactNumber(usage.outputTokens)}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'totalTokens') && (\n <DataList.NumberCell>\n {(() => {\n const total = sumTokens(usage);\n return total === undefined ? undefined : formatCompactNumber(total);\n })()}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'estimatedCost') && (\n <DataList.NumberCell>\n {usage?.estimatedCost === undefined ? undefined : formatCost(usage.estimatedCost, usage.costUnit)}\n </DataList.NumberCell>\n )}\n {columnPreferences.customColumns.map(field => (\n <DataList.TextCell font=\"mono\" key={field}>\n {customColumnValue(trace, field) ?? undefined}\n </DataList.TextCell>\n ))}\n {columnPreferences.metadataKeys.map(key => {\n const value = formatTraceMetadataValue(trace.metadata, key);\n return (\n <DataList.TextCell font=\"mono\" key={key}>\n {value}\n </DataList.TextCell>\n );\n })}\n </TracesDataList.RowButton>\n );\n })}\n <TracesDataList.Spacer height={paddingBottom} />\n <TracesDataList.NextPageLoading\n isLoading={isFetchingNextPage}\n hasMore={hasNextPage}\n setEndOfListElement={setEndOfListElement}\n />\n </>\n )}\n </TracesDataList>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"traces-list-view.es.js","sources":["../../../../src/domains/traces/components/traces-list-view.tsx"],"sourcesContent":["import { useVirtualizer } from '@tanstack/react-virtual';\nimport { ListFilterIcon } from 'lucide-react';\nimport { useRef } from 'react';\nimport {\n DEFAULT_TRACE_COLUMN_PREFERENCES,\n TRACE_CUSTOM_COLUMN_LABELS,\n buildTraceListColumnKeys,\n buildTraceListColumns,\n formatTraceMetadataValue,\n hasTraceColumn,\n} from '../trace-list-columns';\nimport type { TraceColumnPreferences, TraceCustomColumn, TraceUsageSummary } from '../trace-list-columns';\nimport { getInputPreview, getSpanDurationMs } from '../utils/span-utils';\nimport { DataList, DataListSkeletonRows, TracesDataList, useDataListKeyboard } from '@/ds/components/DataList';\nimport type { DataListSort } from '@/ds/components/DataList';\nimport { splitColumns } from '@/ds/components/DataList/shared';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu';\nimport { Txt } from '@/ds/components/Txt/Txt';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { formatCompactNumber, formatCost } from '@/lib/cost';\nimport { cn } from '@/lib/utils';\nimport { formatDuration } from '@/utils/duration';\n\nexport type TracesListViewTrace = {\n traceId: string;\n /** Required for branch rows; absent on plain trace rows (which are root-rooted). */\n spanId?: string | null;\n /** `null`/missing → root span. Drives the Kind column's icon (top-level trace vs nested branch). */\n parentSpanId?: string | null;\n name: string;\n entityType?: string | null;\n entityId?: string | null;\n entityName?: string | null;\n threadId?: string | null;\n resourceId?: string | null;\n environment?: string | null;\n status?: string | null;\n /** Server-rendered preview of `input`. Present on lightweight rows, which omit `input` itself. */\n inputPreview?: string | null;\n input?: unknown;\n metadata?: Record<string, unknown> | null;\n startedAt?: Date | string | null;\n endedAt?: Date | string | null;\n createdAt: Date | string;\n};\n\nconst ROW_HEIGHT = 36;\nconst OVERSCAN = 8;\n/** Distinct values offered in a custom column's \"filter by value\" header menu. */\nconst MAX_FILTER_VALUES = 20;\n\nfunction customColumnValue(trace: TracesListViewTrace, field: TraceCustomColumn): string | null | undefined {\n return trace[field];\n}\n\nfunction distinctCustomColumnValues(traces: TracesListViewTrace[], field: TraceCustomColumn): string[] {\n const values = new Set<string>();\n for (const trace of traces) {\n const value = trace[field];\n if (typeof value === 'string' && value) values.add(value);\n if (values.size >= MAX_FILTER_VALUES) break;\n }\n return [...values];\n}\n\nfunction sumTokens(usage: TraceUsageSummary | undefined): number | undefined {\n if (usage?.inputTokens === undefined && usage?.outputTokens === undefined) return undefined;\n return (usage?.inputTokens ?? 0) + (usage?.outputTokens ?? 0);\n}\n\nexport type TracesListViewProps = {\n traces: TracesListViewTrace[];\n isLoading?: boolean;\n isFetchingNextPage?: boolean;\n hasNextPage?: boolean;\n setEndOfListElement?: (element: HTMLDivElement | null) => void;\n filtersApplied?: boolean;\n /** Currently featured/selected trace — its row gets the highlighted background. */\n featuredTraceId?: string | null;\n /**\n * Required in branches mode to disambiguate rows sharing a `traceId`. When set,\n * a row is featured only when both `traceId` and `spanId` match.\n */\n featuredSpanId?: string | null;\n /** Branches mode mixes root traces with subtraces — enables the Trace/Subtrace tooltip on the\n * level icon in the Name column, which is meaningless when every row is a root. */\n isBranchesMode?: boolean;\n /** Keys (`traceId:spanId`) of rows that just arrived via delta polling. Rows whose key is in\n * this set get a temporary tint to distinguish them from rows present since the last page-mode\n * fetch. Auto-expires upstream (in useTraces) after a short window. */\n recentlyAddedKeys?: Set<string>;\n /** Optional and metadata columns selected for this project. */\n columnPreferences?: TraceColumnPreferences;\n /** Token and estimated-cost totals, aggregated across model spans by trace ID. */\n usageByTraceId?: ReadonlyMap<string, TraceUsageSummary>;\n /** Called when a row is clicked. The current selection logic (toggle on same id) is the consumer's call. */\n onTraceClick: (trace: TracesListViewTrace) => void;\n /** Current sort of the Created column. When `onSortChange` is provided the header becomes sortable. */\n createdSort?: DataListSort;\n onSortChange?: (direction: DataListSort, key: 'startedAt') => void;\n /** When provided, custom column headers offer an `is <value>` filter for every value currently listed. */\n onFilterByField?: (field: TraceCustomColumn, value: string) => void;\n /** Storage id for the persisted column order. Use a distinct id per page so each keeps its own order. */\n listId?: string;\n};\n\n/**\n * Virtualized presentational list. Renders only the visible window via TanStack Virtual, and\n * uses DataList primitives for layout (CSS Grid with subgrid rows).\n */\nexport function TracesListView({\n traces,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n filtersApplied,\n featuredTraceId,\n featuredSpanId,\n isBranchesMode,\n recentlyAddedKeys,\n columnPreferences = DEFAULT_TRACE_COLUMN_PREFERENCES,\n usageByTraceId,\n onTraceClick,\n createdSort,\n onSortChange,\n onFilterByField,\n listId = 'all-traces',\n}: TracesListViewProps) {\n const scrollRef = useRef<HTMLDivElement | null>(null);\n const columns = buildTraceListColumns(columnPreferences);\n const columnKeys = buildTraceListColumnKeys(columnPreferences);\n\n const virtualizer = useVirtualizer({\n count: traces.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: () => ROW_HEIGHT,\n overscan: OVERSCAN,\n });\n\n const { getRowProps } = useDataListKeyboard({\n count: traces.length,\n containerRef: scrollRef,\n onNavigate: index => virtualizer.scrollToIndex(index),\n global: true,\n });\n\n const virtualItems = virtualizer.getVirtualItems();\n const totalSize = virtualizer.getTotalSize();\n const paddingTop = virtualItems[0]?.start ?? 0;\n const paddingBottom =\n virtualItems.length > 0 ? Math.max(0, totalSize - (virtualItems[virtualItems.length - 1]?.end ?? 0)) : 0;\n\n return (\n <TracesDataList\n reorderable\n id={listId}\n columns={columns}\n columnKeys={columnKeys}\n fit=\"container\"\n scrollRef={scrollRef}\n className=\"min-w-0\"\n >\n <TracesDataList.Top>\n {onSortChange ? (\n <TracesDataList.SortableTopCell sortKey=\"startedAt\" sort={createdSort} onSortChange={onSortChange}>\n Start\n </TracesDataList.SortableTopCell>\n ) : (\n <TracesDataList.TopCell>Start</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'type') && <TracesDataList.TopCell>Primitive type</TracesDataList.TopCell>}\n <TracesDataList.TopCell>Primitive name</TracesDataList.TopCell>\n {hasTraceColumn(columnPreferences, 'input') && <TracesDataList.TopCell>Input</TracesDataList.TopCell>}\n <TracesDataList.TopCell>Status</TracesDataList.TopCell>\n {hasTraceColumn(columnPreferences, 'duration') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Duration</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'endTime') && <TracesDataList.TopCell>End</TracesDataList.TopCell>}\n {hasTraceColumn(columnPreferences, 'environment') && (\n <TracesDataList.TopCell>Environment</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'inputTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Input tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'outputTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Output tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'totalTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Total tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'estimatedCost') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Est. cost</TracesDataList.TopCell>\n )}\n {columnPreferences.customColumns.map(field => {\n const label = TRACE_CUSTOM_COLUMN_LABELS[field];\n const filterValues = onFilterByField ? distinctCustomColumnValues(traces, field) : [];\n if (!onFilterByField || filterValues.length === 0) {\n return <TracesDataList.TopCell key={field}>{label}</TracesDataList.TopCell>;\n }\n return (\n <TracesDataList.TopCell key={field} className=\"overflow-visible\">\n <DropdownMenu>\n <DropdownMenu.Trigger\n render={\n <button\n type=\"button\"\n className={cn('flex min-w-0 items-center gap-1 rounded-sm hover:text-foreground', focusRing)}\n >\n <span className=\"min-w-0 truncate\">{label}</span>\n <ListFilterIcon aria-hidden className=\"size-[1.2em] shrink-0\" />\n </button>\n }\n />\n <DropdownMenu.Content align=\"start\">\n <DropdownMenu.Label>Filter by value</DropdownMenu.Label>\n {filterValues.map(value => (\n <DropdownMenu.Item key={value} onSelect={() => onFilterByField(field, value)}>\n <Txt as=\"span\" variant=\"body-sm\" font=\"mono\" className=\"min-w-0 truncate\">\n {value}\n </Txt>\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n </TracesDataList.TopCell>\n );\n })}\n {columnPreferences.metadataKeys.map(key => (\n <TracesDataList.TopCellWithTooltip key={key} tooltip={key}>\n {key}\n </TracesDataList.TopCellWithTooltip>\n ))}\n </TracesDataList.Top>\n\n {isLoading ? (\n <DataListSkeletonRows columnCount={splitColumns(columns).length} />\n ) : traces.length === 0 ? (\n <TracesDataList.NoMatch\n message={filtersApplied ? 'No traces found for applied filters' : 'No traces found yet'}\n />\n ) : (\n <>\n <TracesDataList.Spacer height={paddingTop} />\n {virtualItems.map(vi => {\n const trace = traces[vi.index];\n if (!trace) return null;\n\n const isFeatured =\n trace.traceId === featuredTraceId && (featuredSpanId == null || trace.spanId === featuredSpanId);\n const rowKey = `${trace.traceId}:${trace.spanId ?? ''}`;\n const isRecentlyAdded = recentlyAddedKeys?.has(rowKey) ?? false;\n const displayDate = trace.startedAt ?? trace.createdAt;\n const usage = usageByTraceId?.get(trace.traceId);\n\n return (\n <TracesDataList.RowButton\n key={rowKey}\n ref={virtualizer.measureElement}\n data-index={vi.index}\n {...getRowProps(vi.index)}\n onClick={() => onTraceClick(trace)}\n featured={isFeatured}\n className={cn(isRecentlyAdded && 'animate-row-highlight')}\n >\n <TracesDataList.CreatedCell timestamp={displayDate} preset=\"day-time-seconds\" />\n {hasTraceColumn(columnPreferences, 'type') && <TracesDataList.TypeCell entityType={trace.entityType} />}\n <TracesDataList.NameCell\n name={trace.entityName || trace.name}\n parentSpanId={trace.parentSpanId}\n showLevelTooltip={isBranchesMode}\n />\n {hasTraceColumn(columnPreferences, 'input') && (\n <TracesDataList.InputCell input={trace.inputPreview ?? getInputPreview(trace.input)} />\n )}\n <TracesDataList.StatusCell status={trace.status} />\n {hasTraceColumn(columnPreferences, 'duration') && (\n <DataList.NumberCell font=\"mono\">\n {formatDuration(getSpanDurationMs(trace.startedAt, trace.endedAt))}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'endTime') && (\n <TracesDataList.CreatedCell timestamp={trace.endedAt ?? ''} preset=\"day-time-seconds\" />\n )}\n {hasTraceColumn(columnPreferences, 'environment') && (\n <DataList.TextCell>{trace.environment || '—'}</DataList.TextCell>\n )}\n {hasTraceColumn(columnPreferences, 'inputTokens') && (\n <DataList.NumberCell>\n {usage?.inputTokens === undefined ? undefined : formatCompactNumber(usage.inputTokens)}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'outputTokens') && (\n <DataList.NumberCell>\n {usage?.outputTokens === undefined ? undefined : formatCompactNumber(usage.outputTokens)}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'totalTokens') && (\n <DataList.NumberCell>\n {(() => {\n const total = sumTokens(usage);\n return total === undefined ? undefined : formatCompactNumber(total);\n })()}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'estimatedCost') && (\n <DataList.NumberCell>\n {usage?.estimatedCost === undefined ? undefined : formatCost(usage.estimatedCost, usage.costUnit)}\n </DataList.NumberCell>\n )}\n {columnPreferences.customColumns.map(field => (\n <DataList.TextCell font=\"mono\" key={field}>\n {customColumnValue(trace, field) ?? undefined}\n </DataList.TextCell>\n ))}\n {columnPreferences.metadataKeys.map(key => {\n const value = formatTraceMetadataValue(trace.metadata, key);\n return (\n <DataList.TextCell font=\"mono\" key={key}>\n {value}\n </DataList.TextCell>\n );\n })}\n </TracesDataList.RowButton>\n );\n })}\n <TracesDataList.Spacer height={paddingBottom} />\n <TracesDataList.NextPageLoading\n isLoading={isFetchingNextPage}\n hasMore={hasNextPage}\n setEndOfListElement={setEndOfListElement}\n />\n </>\n )}\n </TracesDataList>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -4,10 +4,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
4
4
|
|
|
5
5
|
const jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
const domains_traces_traceListColumns = require('../trace-list-columns.cjs.js');
|
|
7
|
-
require('../../../data-list-
|
|
8
|
-
const dataListSkeleton = require('../../../data-list-skeleton-maUWF7Ri.cjs');
|
|
9
|
-
require('react');
|
|
10
|
-
require('../../../keyboard/keyboard-shortcuts-context.cjs.js');
|
|
7
|
+
const dataListSkeleton = require('../../../data-list-skeleton-CfVsXhx1.cjs');
|
|
11
8
|
const skeleton = require('../../../skeleton-bUFvB8ok.cjs');
|
|
12
9
|
|
|
13
10
|
function TracesPageSkeleton({ columnPreferences = domains_traces_traceListColumns.DEFAULT_TRACE_COLUMN_PREFERENCES }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traces-page-skeleton.cjs.js","sources":["../../../../src/domains/traces/components/traces-page-skeleton.tsx"],"sourcesContent":["import { buildTraceListColumns, DEFAULT_TRACE_COLUMN_PREFERENCES } from '../trace-list-columns';\nimport type { TraceColumnPreferences } from '../trace-list-columns';\nimport { DataListSkeleton } from '@/ds/components/DataList';\nimport { Skeleton } from '@/ds/components/Skeleton';\n\nexport type TracesPageSkeletonProps = {\n columnPreferences?: TraceColumnPreferences;\n};\n\n/**\n * Page-level placeholder shown while filter-field discovery is pending: a toolbar-height\n * bar stands in for the FilterBar and the usual list skeleton for the trace rows.\n */\nexport function TracesPageSkeleton({ columnPreferences = DEFAULT_TRACE_COLUMN_PREFERENCES }: TracesPageSkeletonProps) {\n const columns = buildTraceListColumns(columnPreferences);\n return (\n <div\n className=\"flex h-full min-h-0 flex-col gap-2\"\n role=\"status\"\n aria-label=\"Loading traces\"\n data-testid=\"traces-page-skeleton\"\n >\n <div className=\"flex items-center gap-2\">\n <Skeleton className=\"h-control-md min-w-64 flex-1\" />\n <Skeleton className=\"h-control-md w-28\" />\n </div>\n <DataListSkeleton columns={columns} fit=\"container\" />\n </div>\n );\n}\n"],"names":["DEFAULT_TRACE_COLUMN_PREFERENCES","buildTraceListColumns","jsxs","jsx","Skeleton","DataListSkeleton"],"mappings":"
|
|
1
|
+
{"version":3,"file":"traces-page-skeleton.cjs.js","sources":["../../../../src/domains/traces/components/traces-page-skeleton.tsx"],"sourcesContent":["import { buildTraceListColumns, DEFAULT_TRACE_COLUMN_PREFERENCES } from '../trace-list-columns';\nimport type { TraceColumnPreferences } from '../trace-list-columns';\nimport { DataListSkeleton } from '@/ds/components/DataList';\nimport { Skeleton } from '@/ds/components/Skeleton';\n\nexport type TracesPageSkeletonProps = {\n columnPreferences?: TraceColumnPreferences;\n};\n\n/**\n * Page-level placeholder shown while filter-field discovery is pending: a toolbar-height\n * bar stands in for the FilterBar and the usual list skeleton for the trace rows.\n */\nexport function TracesPageSkeleton({ columnPreferences = DEFAULT_TRACE_COLUMN_PREFERENCES }: TracesPageSkeletonProps) {\n const columns = buildTraceListColumns(columnPreferences);\n return (\n <div\n className=\"flex h-full min-h-0 flex-col gap-2\"\n role=\"status\"\n aria-label=\"Loading traces\"\n data-testid=\"traces-page-skeleton\"\n >\n <div className=\"flex items-center gap-2\">\n <Skeleton className=\"h-control-md min-w-64 flex-1\" />\n <Skeleton className=\"h-control-md w-28\" />\n </div>\n <DataListSkeleton columns={columns} fit=\"container\" />\n </div>\n );\n}\n"],"names":["DEFAULT_TRACE_COLUMN_PREFERENCES","buildTraceListColumns","jsxs","jsx","Skeleton","DataListSkeleton"],"mappings":";;;;;;;;;AAaO,SAAS,kBAAA,CAAmB,EAAE,iBAAA,GAAoBA,gEAAA,EAAiC,EAA4B;AACpH,EAAA,MAAM,OAAA,GAAUC,sDAAsB,iBAAiB,CAAA;AACvD,EAAA,uBACEC,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,oCAAA;AAAA,MACV,IAAA,EAAK,QAAA;AAAA,MACL,YAAA,EAAW,gBAAA;AAAA,MACX,aAAA,EAAY,sBAAA;AAAA,MAEZ,QAAA,EAAA;AAAA,wBAAAA,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACb,QAAA,EAAA;AAAA,0BAAAC,cAAA,CAACC,iBAAA,EAAA,EAAS,WAAU,8BAAA,EAA+B,CAAA;AAAA,0BACnDD,cAAA,CAACC,iBAAA,EAAA,EAAS,SAAA,EAAU,mBAAA,EAAoB;AAAA,SAAA,EAC1C,CAAA;AAAA,wBACAD,cAAA,CAACE,iCAAA,EAAA,EAAiB,OAAA,EAAkB,GAAA,EAAI,WAAA,EAAY;AAAA;AAAA;AAAA,GACtD;AAEJ;;;;"}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { buildTraceListColumns, DEFAULT_TRACE_COLUMN_PREFERENCES } from '../trace-list-columns.es.js';
|
|
3
|
-
import '../../../data-list-
|
|
4
|
-
import { D as DataListSkeleton } from '../../../data-list-skeleton-CJFwZBlW.js';
|
|
5
|
-
import 'react';
|
|
6
|
-
import '../../../keyboard/keyboard-shortcuts-context.es.js';
|
|
3
|
+
import { D as DataListSkeleton } from '../../../data-list-skeleton-BmsDYJrA.js';
|
|
7
4
|
import { S as Skeleton } from '../../../skeleton-Bjxvf3Y-.js';
|
|
8
5
|
|
|
9
6
|
function TracesPageSkeleton({ columnPreferences = DEFAULT_TRACE_COLUMN_PREFERENCES }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traces-page-skeleton.es.js","sources":["../../../../src/domains/traces/components/traces-page-skeleton.tsx"],"sourcesContent":["import { buildTraceListColumns, DEFAULT_TRACE_COLUMN_PREFERENCES } from '../trace-list-columns';\nimport type { TraceColumnPreferences } from '../trace-list-columns';\nimport { DataListSkeleton } from '@/ds/components/DataList';\nimport { Skeleton } from '@/ds/components/Skeleton';\n\nexport type TracesPageSkeletonProps = {\n columnPreferences?: TraceColumnPreferences;\n};\n\n/**\n * Page-level placeholder shown while filter-field discovery is pending: a toolbar-height\n * bar stands in for the FilterBar and the usual list skeleton for the trace rows.\n */\nexport function TracesPageSkeleton({ columnPreferences = DEFAULT_TRACE_COLUMN_PREFERENCES }: TracesPageSkeletonProps) {\n const columns = buildTraceListColumns(columnPreferences);\n return (\n <div\n className=\"flex h-full min-h-0 flex-col gap-2\"\n role=\"status\"\n aria-label=\"Loading traces\"\n data-testid=\"traces-page-skeleton\"\n >\n <div className=\"flex items-center gap-2\">\n <Skeleton className=\"h-control-md min-w-64 flex-1\" />\n <Skeleton className=\"h-control-md w-28\" />\n </div>\n <DataListSkeleton columns={columns} fit=\"container\" />\n </div>\n );\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"traces-page-skeleton.es.js","sources":["../../../../src/domains/traces/components/traces-page-skeleton.tsx"],"sourcesContent":["import { buildTraceListColumns, DEFAULT_TRACE_COLUMN_PREFERENCES } from '../trace-list-columns';\nimport type { TraceColumnPreferences } from '../trace-list-columns';\nimport { DataListSkeleton } from '@/ds/components/DataList';\nimport { Skeleton } from '@/ds/components/Skeleton';\n\nexport type TracesPageSkeletonProps = {\n columnPreferences?: TraceColumnPreferences;\n};\n\n/**\n * Page-level placeholder shown while filter-field discovery is pending: a toolbar-height\n * bar stands in for the FilterBar and the usual list skeleton for the trace rows.\n */\nexport function TracesPageSkeleton({ columnPreferences = DEFAULT_TRACE_COLUMN_PREFERENCES }: TracesPageSkeletonProps) {\n const columns = buildTraceListColumns(columnPreferences);\n return (\n <div\n className=\"flex h-full min-h-0 flex-col gap-2\"\n role=\"status\"\n aria-label=\"Loading traces\"\n data-testid=\"traces-page-skeleton\"\n >\n <div className=\"flex items-center gap-2\">\n <Skeleton className=\"h-control-md min-w-64 flex-1\" />\n <Skeleton className=\"h-control-md w-28\" />\n </div>\n <DataListSkeleton columns={columns} fit=\"container\" />\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;AAaO,SAAS,kBAAA,CAAmB,EAAE,iBAAA,GAAoB,gCAAA,EAAiC,EAA4B;AACpH,EAAA,MAAM,OAAA,GAAU,sBAAsB,iBAAiB,CAAA;AACvD,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,oCAAA;AAAA,MACV,IAAA,EAAK,QAAA;AAAA,MACL,YAAA,EAAW,gBAAA;AAAA,MACX,aAAA,EAAY,sBAAA;AAAA,MAEZ,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACb,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,QAAA,EAAA,EAAS,WAAU,8BAAA,EAA+B,CAAA;AAAA,0BACnD,GAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,mBAAA,EAAoB;AAAA,SAAA,EAC1C,CAAA;AAAA,wBACA,GAAA,CAAC,gBAAA,EAAA,EAAiB,OAAA,EAAkB,GAAA,EAAI,WAAA,EAAY;AAAA;AAAA;AAAA,GACtD;AAEJ;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { useWorkflows } from '@mastra/react/hooks/workflows';
|
|
3
3
|
import { useEffect } from 'react';
|
|
4
|
-
import { C as Combobox } from '../../../combobox-
|
|
4
|
+
import { C as Combobox } from '../../../combobox-DDUIREaG.js';
|
|
5
5
|
import '@base-ui/react/combobox';
|
|
6
6
|
import { useLinkComponent } from '../../../lib/framework.es.js';
|
|
7
7
|
import { t as toast } from '../../../toast-WCmYXnuT.js';
|
|
@@ -3,10 +3,10 @@ import { ReactFlowProvider } from '@xyflow/react';
|
|
|
3
3
|
import { List, X } from 'lucide-react';
|
|
4
4
|
import { useWorkflowStepDetail } from '../context/workflow-step-detail-context.es.js';
|
|
5
5
|
import { WorkflowDataInspector } from '../workflow/data/workflow-data-inspector.es.js';
|
|
6
|
-
import { W as WorkflowNestedGraph } from '../../../use-workflow-graph-runtime-
|
|
6
|
+
import { W as WorkflowNestedGraph } from '../../../use-workflow-graph-runtime-CAyNWN_Z.js';
|
|
7
7
|
import { T as Txt } from '../../../Txt-BuzYj7Vy.js';
|
|
8
8
|
import { B as BADGE_COLORS } from '../../../workflow-condition-card-DnSlcZ2s.js';
|
|
9
|
-
import { W as WorkflowCodeContent } from '../../../workflow-code-dialog-content-
|
|
9
|
+
import { W as WorkflowCodeContent } from '../../../workflow-code-dialog-content-CNDoMFAV.js';
|
|
10
10
|
import { WorkflowIcon } from '../../../icons/WorkflowIcon.es.js';
|
|
11
11
|
|
|
12
12
|
function WorkflowStepDetailContent({ requestContext }) {
|
|
@@ -9,8 +9,8 @@ const React = require('react');
|
|
|
9
9
|
const domains_workflows_components_workflowsList_workflowsSort = require('./workflows-sort.cjs.js');
|
|
10
10
|
const domains_workflows_utils_nestedWorkflows = require('../../utils/nested-workflows.cjs.js');
|
|
11
11
|
const Badge = require('../../../../Badge-BF6FbLH_.cjs');
|
|
12
|
-
const dataList = require('../../../../data-list-
|
|
13
|
-
const dataListSkeleton = require('../../../../data-list-skeleton-
|
|
12
|
+
const dataList = require('../../../../data-list-DkVOwk8l.cjs');
|
|
13
|
+
const dataListSkeleton = require('../../../../data-list-skeleton-CfVsXhx1.cjs');
|
|
14
14
|
const useDataListKeyboard = require('../../../../use-data-list-keyboard-DF3tLe10.cjs');
|
|
15
15
|
const disclosureChevron = require('../../../../disclosure-chevron-B_gmYFR5.cjs');
|
|
16
16
|
const tooltip = require('../../../../tooltip-C4txPRSa.cjs');
|
|
@@ -5,8 +5,8 @@ import { useState, useMemo, useRef } from 'react';
|
|
|
5
5
|
import { sortWorkflows } from './workflows-sort.es.js';
|
|
6
6
|
import { flattenWorkflowTree } from '../../utils/nested-workflows.es.js';
|
|
7
7
|
import { B as Badge } from '../../../../Badge-3-G2I_cx.js';
|
|
8
|
-
import {
|
|
9
|
-
import { D as DataListSkeleton } from '../../../../data-list-skeleton-
|
|
8
|
+
import { D as DataList } from '../../../../data-list-Dv2lP-dU.js';
|
|
9
|
+
import { D as DataListSkeleton } from '../../../../data-list-skeleton-BmsDYJrA.js';
|
|
10
10
|
import { u as useDataListKeyboard } from '../../../../use-data-list-keyboard-DFQr4t38.js';
|
|
11
11
|
import { D as DisclosureChevron } from '../../../../disclosure-chevron-BWZ8Alz1.js';
|
|
12
12
|
import { T as Tooltip, c as TooltipTrigger, a as TooltipContent } from '../../../../tooltip-CCZcMbgy.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { useWorkflowStepDetail } from '../../context/workflow-step-detail-context.es.js';
|
|
3
3
|
import { useWorkflowData, workflowDataKey } from './use-workflow-data.es.js';
|
|
4
|
-
import { W as WorkflowEdgeDataButton } from '../../../../workflow-edge-data-button-
|
|
4
|
+
import { W as WorkflowEdgeDataButton } from '../../../../workflow-edge-data-button-6EDXzRxr.js';
|
|
5
5
|
|
|
6
6
|
function WorkflowDataButton({ selection }) {
|
|
7
7
|
const { stepDetail, showData } = useWorkflowStepDetail();
|
|
@@ -8,7 +8,7 @@ import { useWorkflowStepDetail } from '../../context/workflow-step-detail-contex
|
|
|
8
8
|
import { useWorkflowData, workflowDataKey } from './use-workflow-data.es.js';
|
|
9
9
|
import { B as Badge } from '../../../../Badge-3-G2I_cx.js';
|
|
10
10
|
import { B as Button } from '../../../../Button-C8QDEN9j.js';
|
|
11
|
-
import { C as CodeEditor } from '../../../../code-editor-
|
|
11
|
+
import { C as CodeEditor } from '../../../../code-editor-D69saH4C.js';
|
|
12
12
|
import { T as Txt } from '../../../../Txt-BuzYj7Vy.js';
|
|
13
13
|
|
|
14
14
|
const DIRECTION_ICONS = { input: ArrowDownToLine, output: ArrowUpFromLine };
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
5
5
|
const jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
const codeEditor = require('../../../../code-editor-Dg6Y6Q8z.cjs');
|
|
7
7
|
const field = require('../../../../field-D1SVMPMz.cjs');
|
|
8
|
+
require('../../../../field-control-aria-WzMGs0A4.cjs');
|
|
8
9
|
const lib_form_components_formSubmitRow = require('../../../../lib/form/components/form-submit-row.cjs.js');
|
|
9
10
|
|
|
10
11
|
function WorkflowJsonInput({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-json-input.cjs.js","sources":["../../../../../src/domains/workflows/workflow/input/workflow-json-input.tsx"],"sourcesContent":["import type { WorkflowInputDataProps } from '../workflow-input-data';\nimport { CodeEditor } from '@/ds/components/CodeEditor';\nimport { Field, FieldError } from '@/ds/components/Field';\nimport { FormSubmitRow } from '@/lib/form/components/form-submit-row';\n\ntype WorkflowJsonInputProps = Omit<WorkflowInputDataProps, 'schema' | 'defaultValues' | 'onSubmit'> & {\n value: string;\n onChange: (value: string) => void;\n errors: string[];\n onSubmit: () => void;\n};\n\nexport function WorkflowJsonInput({\n value,\n onChange,\n errors,\n children,\n isSubmitLoading,\n onSubmit,\n ...submitProps\n}: WorkflowJsonInputProps) {\n return (\n <div className=\"flex flex-col gap-4\">\n <Field invalid={errors.length > 0}>\n <CodeEditor value={value} onChange={onChange} editable={!isSubmitLoading} />\n <FieldError>\n {errors.length > 0 && (\n <span className=\"space-y-1\">\n {errors.map(error => (\n <span key={error} className=\"block\">\n {error}\n </span>\n ))}\n </span>\n )}\n </FieldError>\n </Field>\n {children}\n <FormSubmitRow {...submitProps} isSubmitLoading={isSubmitLoading} onSubmit={onSubmit} />\n </div>\n );\n}\n"],"names":["jsxs","Field","jsx","CodeEditor","FieldError","FormSubmitRow"],"mappings":"
|
|
1
|
+
{"version":3,"file":"workflow-json-input.cjs.js","sources":["../../../../../src/domains/workflows/workflow/input/workflow-json-input.tsx"],"sourcesContent":["import type { WorkflowInputDataProps } from '../workflow-input-data';\nimport { CodeEditor } from '@/ds/components/CodeEditor';\nimport { Field, FieldError } from '@/ds/components/Field';\nimport { FormSubmitRow } from '@/lib/form/components/form-submit-row';\n\ntype WorkflowJsonInputProps = Omit<WorkflowInputDataProps, 'schema' | 'defaultValues' | 'onSubmit'> & {\n value: string;\n onChange: (value: string) => void;\n errors: string[];\n onSubmit: () => void;\n};\n\nexport function WorkflowJsonInput({\n value,\n onChange,\n errors,\n children,\n isSubmitLoading,\n onSubmit,\n ...submitProps\n}: WorkflowJsonInputProps) {\n return (\n <div className=\"flex flex-col gap-4\">\n <Field invalid={errors.length > 0}>\n <CodeEditor value={value} onChange={onChange} editable={!isSubmitLoading} />\n <FieldError>\n {errors.length > 0 && (\n <span className=\"space-y-1\">\n {errors.map(error => (\n <span key={error} className=\"block\">\n {error}\n </span>\n ))}\n </span>\n )}\n </FieldError>\n </Field>\n {children}\n <FormSubmitRow {...submitProps} isSubmitLoading={isSubmitLoading} onSubmit={onSubmit} />\n </div>\n );\n}\n"],"names":["jsxs","Field","jsx","CodeEditor","FieldError","FormSubmitRow"],"mappings":";;;;;;;;;;AAYO,SAAS,iBAAA,CAAkB;AAAA,EAChC,KAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA2B;AACzB,EAAA,uBACEA,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,eAAA,CAACC,WAAA,EAAA,EAAM,OAAA,EAAS,MAAA,CAAO,MAAA,GAAS,CAAA,EAC9B,QAAA,EAAA;AAAA,sBAAAC,cAAA,CAACC,qBAAA,EAAA,EAAW,KAAA,EAAc,QAAA,EAAoB,QAAA,EAAU,CAAC,eAAA,EAAiB,CAAA;AAAA,sBAC1ED,cAAA,CAACE,oBACE,QAAA,EAAA,MAAA,CAAO,MAAA,GAAS,qBACfF,cAAA,CAAC,MAAA,EAAA,EAAK,WAAU,WAAA,EACb,QAAA,EAAA,MAAA,CAAO,IAAI,CAAA,KAAA,qBACVA,cAAA,CAAC,UAAiB,SAAA,EAAU,OAAA,EACzB,mBADQ,KAEX,CACD,GACH,CAAA,EAEJ;AAAA,KAAA,EACF,CAAA;AAAA,IACC,QAAA;AAAA,oBACDA,cAAA,CAACG,+CAAA,EAAA,EAAe,GAAG,WAAA,EAAa,iBAAkC,QAAA,EAAoB;AAAA,GAAA,EACxF,CAAA;AAEJ;;;;"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { C as CodeEditor } from '../../../../code-editor-
|
|
3
|
-
import { F as Field, c as FieldError } from '../../../../field-
|
|
2
|
+
import { C as CodeEditor } from '../../../../code-editor-D69saH4C.js';
|
|
3
|
+
import { F as Field, c as FieldError } from '../../../../field-B89BEZg4.js';
|
|
4
|
+
import '../../../../field-control-aria-DB6y41tQ.js';
|
|
4
5
|
import { FormSubmitRow } from '../../../../lib/form/components/form-submit-row.es.js';
|
|
5
6
|
|
|
6
7
|
function WorkflowJsonInput({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-json-input.es.js","sources":["../../../../../src/domains/workflows/workflow/input/workflow-json-input.tsx"],"sourcesContent":["import type { WorkflowInputDataProps } from '../workflow-input-data';\nimport { CodeEditor } from '@/ds/components/CodeEditor';\nimport { Field, FieldError } from '@/ds/components/Field';\nimport { FormSubmitRow } from '@/lib/form/components/form-submit-row';\n\ntype WorkflowJsonInputProps = Omit<WorkflowInputDataProps, 'schema' | 'defaultValues' | 'onSubmit'> & {\n value: string;\n onChange: (value: string) => void;\n errors: string[];\n onSubmit: () => void;\n};\n\nexport function WorkflowJsonInput({\n value,\n onChange,\n errors,\n children,\n isSubmitLoading,\n onSubmit,\n ...submitProps\n}: WorkflowJsonInputProps) {\n return (\n <div className=\"flex flex-col gap-4\">\n <Field invalid={errors.length > 0}>\n <CodeEditor value={value} onChange={onChange} editable={!isSubmitLoading} />\n <FieldError>\n {errors.length > 0 && (\n <span className=\"space-y-1\">\n {errors.map(error => (\n <span key={error} className=\"block\">\n {error}\n </span>\n ))}\n </span>\n )}\n </FieldError>\n </Field>\n {children}\n <FormSubmitRow {...submitProps} isSubmitLoading={isSubmitLoading} onSubmit={onSubmit} />\n </div>\n );\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"workflow-json-input.es.js","sources":["../../../../../src/domains/workflows/workflow/input/workflow-json-input.tsx"],"sourcesContent":["import type { WorkflowInputDataProps } from '../workflow-input-data';\nimport { CodeEditor } from '@/ds/components/CodeEditor';\nimport { Field, FieldError } from '@/ds/components/Field';\nimport { FormSubmitRow } from '@/lib/form/components/form-submit-row';\n\ntype WorkflowJsonInputProps = Omit<WorkflowInputDataProps, 'schema' | 'defaultValues' | 'onSubmit'> & {\n value: string;\n onChange: (value: string) => void;\n errors: string[];\n onSubmit: () => void;\n};\n\nexport function WorkflowJsonInput({\n value,\n onChange,\n errors,\n children,\n isSubmitLoading,\n onSubmit,\n ...submitProps\n}: WorkflowJsonInputProps) {\n return (\n <div className=\"flex flex-col gap-4\">\n <Field invalid={errors.length > 0}>\n <CodeEditor value={value} onChange={onChange} editable={!isSubmitLoading} />\n <FieldError>\n {errors.length > 0 && (\n <span className=\"space-y-1\">\n {errors.map(error => (\n <span key={error} className=\"block\">\n {error}\n </span>\n ))}\n </span>\n )}\n </FieldError>\n </Field>\n {children}\n <FormSubmitRow {...submitProps} isSubmitLoading={isSubmitLoading} onSubmit={onSubmit} />\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;AAYO,SAAS,iBAAA,CAAkB;AAAA,EAChC,KAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA2B;AACzB,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAA,EACb,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,KAAA,EAAA,EAAM,OAAA,EAAS,MAAA,CAAO,MAAA,GAAS,CAAA,EAC9B,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAc,QAAA,EAAoB,QAAA,EAAU,CAAC,eAAA,EAAiB,CAAA;AAAA,sBAC1E,GAAA,CAAC,cACE,QAAA,EAAA,MAAA,CAAO,MAAA,GAAS,qBACf,GAAA,CAAC,MAAA,EAAA,EAAK,WAAU,WAAA,EACb,QAAA,EAAA,MAAA,CAAO,IAAI,CAAA,KAAA,qBACV,GAAA,CAAC,UAAiB,SAAA,EAAU,OAAA,EACzB,mBADQ,KAEX,CACD,GACH,CAAA,EAEJ;AAAA,KAAA,EACF,CAAA;AAAA,IACC,QAAA;AAAA,oBACD,GAAA,CAAC,aAAA,EAAA,EAAe,GAAG,WAAA,EAAa,iBAAkC,QAAA,EAAoB;AAAA,GAAA,EACxF,CAAA;AAEJ;;;;"}
|
|
@@ -6,6 +6,7 @@ const jsxRuntime = require('react/jsx-runtime');
|
|
|
6
6
|
const React = require('react');
|
|
7
7
|
const domains_workflows_workflow_input_processorInput = require('./processor-input.cjs.js');
|
|
8
8
|
const field = require('../../../../field-D1SVMPMz.cjs');
|
|
9
|
+
require('../../../../field-control-aria-WzMGs0A4.cjs');
|
|
9
10
|
const select = require('../../../../select-Cdz5I0A5.cjs');
|
|
10
11
|
const textarea = require('../../../../textarea-Cy51PMd4.cjs');
|
|
11
12
|
const lib_form_components_formSubmitRow = require('../../../../lib/form/components/form-submit-row.cjs.js');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-processor-input.cjs.js","sources":["../../../../../src/domains/workflows/workflow/input/workflow-processor-input.tsx"],"sourcesContent":["import { useState } from 'react';\nimport type { WorkflowInputDataProps } from '../workflow-input-data';\nimport { getProcessorMessage, updateProcessorMessage, withPhaseRole } from './processor-input';\nimport type { ProcessorDraft } from './processor-input';\nimport { Field, FieldDescription, FieldError, FieldLabel } from '@/ds/components/Field';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select';\nimport { Textarea } from '@/ds/components/Textarea';\nimport { FormSubmitRow } from '@/lib/form/components/form-submit-row';\n\nconst PROCESSOR_PHASES = [\n { value: 'input', label: 'Input - Process input messages before LLM' },\n { value: 'inputStep', label: 'Input Step - Process at each agentic loop step' },\n { value: 'outputStream', label: 'Output Stream - Process streaming chunks' },\n { value: 'outputResult', label: 'Output Result - Process complete output' },\n { value: 'outputStep', label: 'Output Step - Process after each LLM response' },\n];\n\ntype WorkflowProcessorInputProps = Omit<WorkflowInputDataProps, 'defaultValues'> & {\n value: ProcessorDraft;\n onChange: (draft: ProcessorDraft) => void;\n};\n\ntype ProcessorErrors = { phase: string[]; message: string[] };\n\nconst NO_ERRORS: ProcessorErrors = { phase: [], message: [] };\n\nfunction ErrorLines({ errors }: { errors: string[] }) {\n return (\n <span className=\"space-y-1\">\n {errors.map(error => (\n <span key={error} className=\"block\">\n {error}\n </span>\n ))}\n </span>\n );\n}\n\nexport const WorkflowProcessorInput = ({\n schema,\n value,\n onChange,\n isSubmitLoading,\n submitButtonLabel,\n onSubmit,\n children,\n submitActions,\n leftActions,\n submitButtonIcon,\n submitButtonVariant,\n submitButtonFullWidth,\n}: WorkflowProcessorInputProps) => {\n const [errors, setErrors] = useState<ProcessorErrors>(NO_ERRORS);\n\n const handleSubmit = () => {\n setErrors(NO_ERRORS);\n\n const result = schema.safeParse(value);\n if (!result.success) {\n const nextErrors: ProcessorErrors = { phase: [], message: [] };\n for (const issue of result.error.issues) {\n const fieldErrors = issue.path[0] === 'phase' ? nextErrors.phase : nextErrors.message;\n fieldErrors.push(`${issue.path.join('.')}: ${issue.message}`);\n }\n setErrors(nextErrors);\n return;\n }\n onSubmit(result.data);\n };\n\n return (\n <div className=\"flex flex-col gap-4\">\n <Field invalid={errors.phase.length > 0}>\n <FieldLabel>Phase</FieldLabel>\n <Select\n value={value.phase}\n onValueChange={phase => {\n setErrors(NO_ERRORS);\n onChange(withPhaseRole({ ...value, phase }));\n }}\n disabled={isSubmitLoading}\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue placeholder=\"Select phase\" />\n </SelectTrigger>\n <SelectContent>\n {PROCESSOR_PHASES.map(phaseOption => (\n <SelectItem key={phaseOption.value} value={phaseOption.value}>\n {phaseOption.value}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <FieldDescription>\n {PROCESSOR_PHASES.find(phaseOption => phaseOption.value === value.phase)?.label}\n </FieldDescription>\n <FieldError>{errors.phase.length > 0 && <ErrorLines errors={errors.phase} />}</FieldError>\n </Field>\n\n <Field invalid={errors.message.length > 0}>\n <FieldLabel>Test Message</FieldLabel>\n <Textarea\n value={getProcessorMessage(value)}\n onChange={event => {\n setErrors(NO_ERRORS);\n onChange(withPhaseRole(updateProcessorMessage(value, event.target.value)));\n }}\n placeholder=\"Enter a test message...\"\n rows={4}\n disabled={isSubmitLoading}\n />\n <FieldError>{errors.message.length > 0 && <ErrorLines errors={errors.message} />}</FieldError>\n </Field>\n\n {children}\n\n <FormSubmitRow\n isSubmitLoading={isSubmitLoading}\n submitButtonLabel={submitButtonLabel}\n submitActions={submitActions}\n leftActions={leftActions}\n submitButtonIcon={submitButtonIcon}\n submitButtonVariant={submitButtonVariant}\n submitButtonFullWidth={submitButtonFullWidth}\n onSubmit={handleSubmit}\n />\n </div>\n );\n};\n"],"names":["jsx","useState","jsxs","Field","FieldLabel","Select","withPhaseRole","SelectTrigger","SelectValue","SelectContent","SelectItem","FieldDescription","FieldError","Textarea","getProcessorMessage","updateProcessorMessage","FormSubmitRow"],"mappings":"
|
|
1
|
+
{"version":3,"file":"workflow-processor-input.cjs.js","sources":["../../../../../src/domains/workflows/workflow/input/workflow-processor-input.tsx"],"sourcesContent":["import { useState } from 'react';\nimport type { WorkflowInputDataProps } from '../workflow-input-data';\nimport { getProcessorMessage, updateProcessorMessage, withPhaseRole } from './processor-input';\nimport type { ProcessorDraft } from './processor-input';\nimport { Field, FieldDescription, FieldError, FieldLabel } from '@/ds/components/Field';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select';\nimport { Textarea } from '@/ds/components/Textarea';\nimport { FormSubmitRow } from '@/lib/form/components/form-submit-row';\n\nconst PROCESSOR_PHASES = [\n { value: 'input', label: 'Input - Process input messages before LLM' },\n { value: 'inputStep', label: 'Input Step - Process at each agentic loop step' },\n { value: 'outputStream', label: 'Output Stream - Process streaming chunks' },\n { value: 'outputResult', label: 'Output Result - Process complete output' },\n { value: 'outputStep', label: 'Output Step - Process after each LLM response' },\n];\n\ntype WorkflowProcessorInputProps = Omit<WorkflowInputDataProps, 'defaultValues'> & {\n value: ProcessorDraft;\n onChange: (draft: ProcessorDraft) => void;\n};\n\ntype ProcessorErrors = { phase: string[]; message: string[] };\n\nconst NO_ERRORS: ProcessorErrors = { phase: [], message: [] };\n\nfunction ErrorLines({ errors }: { errors: string[] }) {\n return (\n <span className=\"space-y-1\">\n {errors.map(error => (\n <span key={error} className=\"block\">\n {error}\n </span>\n ))}\n </span>\n );\n}\n\nexport const WorkflowProcessorInput = ({\n schema,\n value,\n onChange,\n isSubmitLoading,\n submitButtonLabel,\n onSubmit,\n children,\n submitActions,\n leftActions,\n submitButtonIcon,\n submitButtonVariant,\n submitButtonFullWidth,\n}: WorkflowProcessorInputProps) => {\n const [errors, setErrors] = useState<ProcessorErrors>(NO_ERRORS);\n\n const handleSubmit = () => {\n setErrors(NO_ERRORS);\n\n const result = schema.safeParse(value);\n if (!result.success) {\n const nextErrors: ProcessorErrors = { phase: [], message: [] };\n for (const issue of result.error.issues) {\n const fieldErrors = issue.path[0] === 'phase' ? nextErrors.phase : nextErrors.message;\n fieldErrors.push(`${issue.path.join('.')}: ${issue.message}`);\n }\n setErrors(nextErrors);\n return;\n }\n onSubmit(result.data);\n };\n\n return (\n <div className=\"flex flex-col gap-4\">\n <Field invalid={errors.phase.length > 0}>\n <FieldLabel>Phase</FieldLabel>\n <Select\n value={value.phase}\n onValueChange={phase => {\n setErrors(NO_ERRORS);\n onChange(withPhaseRole({ ...value, phase }));\n }}\n disabled={isSubmitLoading}\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue placeholder=\"Select phase\" />\n </SelectTrigger>\n <SelectContent>\n {PROCESSOR_PHASES.map(phaseOption => (\n <SelectItem key={phaseOption.value} value={phaseOption.value}>\n {phaseOption.value}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <FieldDescription>\n {PROCESSOR_PHASES.find(phaseOption => phaseOption.value === value.phase)?.label}\n </FieldDescription>\n <FieldError>{errors.phase.length > 0 && <ErrorLines errors={errors.phase} />}</FieldError>\n </Field>\n\n <Field invalid={errors.message.length > 0}>\n <FieldLabel>Test Message</FieldLabel>\n <Textarea\n value={getProcessorMessage(value)}\n onChange={event => {\n setErrors(NO_ERRORS);\n onChange(withPhaseRole(updateProcessorMessage(value, event.target.value)));\n }}\n placeholder=\"Enter a test message...\"\n rows={4}\n disabled={isSubmitLoading}\n />\n <FieldError>{errors.message.length > 0 && <ErrorLines errors={errors.message} />}</FieldError>\n </Field>\n\n {children}\n\n <FormSubmitRow\n isSubmitLoading={isSubmitLoading}\n submitButtonLabel={submitButtonLabel}\n submitActions={submitActions}\n leftActions={leftActions}\n submitButtonIcon={submitButtonIcon}\n submitButtonVariant={submitButtonVariant}\n submitButtonFullWidth={submitButtonFullWidth}\n onSubmit={handleSubmit}\n />\n </div>\n );\n};\n"],"names":["jsx","useState","jsxs","Field","FieldLabel","Select","withPhaseRole","SelectTrigger","SelectValue","SelectContent","SelectItem","FieldDescription","FieldError","Textarea","getProcessorMessage","updateProcessorMessage","FormSubmitRow"],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { useState } from 'react';
|
|
3
3
|
import { withPhaseRole, updateProcessorMessage, getProcessorMessage } from './processor-input.es.js';
|
|
4
|
-
import { F as Field, e as FieldLabel, b as FieldDescription, c as FieldError } from '../../../../field-
|
|
5
|
-
import
|
|
4
|
+
import { F as Field, e as FieldLabel, b as FieldDescription, c as FieldError } from '../../../../field-B89BEZg4.js';
|
|
5
|
+
import '../../../../field-control-aria-DB6y41tQ.js';
|
|
6
|
+
import { S as Select, d as SelectTrigger, e as SelectValue, a as SelectContent, c as SelectItem } from '../../../../select-N2lgBRsg.js';
|
|
6
7
|
import { T as Textarea } from '../../../../textarea-Bl3htAGs.js';
|
|
7
8
|
import { FormSubmitRow } from '../../../../lib/form/components/form-submit-row.es.js';
|
|
8
9
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-processor-input.es.js","sources":["../../../../../src/domains/workflows/workflow/input/workflow-processor-input.tsx"],"sourcesContent":["import { useState } from 'react';\nimport type { WorkflowInputDataProps } from '../workflow-input-data';\nimport { getProcessorMessage, updateProcessorMessage, withPhaseRole } from './processor-input';\nimport type { ProcessorDraft } from './processor-input';\nimport { Field, FieldDescription, FieldError, FieldLabel } from '@/ds/components/Field';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select';\nimport { Textarea } from '@/ds/components/Textarea';\nimport { FormSubmitRow } from '@/lib/form/components/form-submit-row';\n\nconst PROCESSOR_PHASES = [\n { value: 'input', label: 'Input - Process input messages before LLM' },\n { value: 'inputStep', label: 'Input Step - Process at each agentic loop step' },\n { value: 'outputStream', label: 'Output Stream - Process streaming chunks' },\n { value: 'outputResult', label: 'Output Result - Process complete output' },\n { value: 'outputStep', label: 'Output Step - Process after each LLM response' },\n];\n\ntype WorkflowProcessorInputProps = Omit<WorkflowInputDataProps, 'defaultValues'> & {\n value: ProcessorDraft;\n onChange: (draft: ProcessorDraft) => void;\n};\n\ntype ProcessorErrors = { phase: string[]; message: string[] };\n\nconst NO_ERRORS: ProcessorErrors = { phase: [], message: [] };\n\nfunction ErrorLines({ errors }: { errors: string[] }) {\n return (\n <span className=\"space-y-1\">\n {errors.map(error => (\n <span key={error} className=\"block\">\n {error}\n </span>\n ))}\n </span>\n );\n}\n\nexport const WorkflowProcessorInput = ({\n schema,\n value,\n onChange,\n isSubmitLoading,\n submitButtonLabel,\n onSubmit,\n children,\n submitActions,\n leftActions,\n submitButtonIcon,\n submitButtonVariant,\n submitButtonFullWidth,\n}: WorkflowProcessorInputProps) => {\n const [errors, setErrors] = useState<ProcessorErrors>(NO_ERRORS);\n\n const handleSubmit = () => {\n setErrors(NO_ERRORS);\n\n const result = schema.safeParse(value);\n if (!result.success) {\n const nextErrors: ProcessorErrors = { phase: [], message: [] };\n for (const issue of result.error.issues) {\n const fieldErrors = issue.path[0] === 'phase' ? nextErrors.phase : nextErrors.message;\n fieldErrors.push(`${issue.path.join('.')}: ${issue.message}`);\n }\n setErrors(nextErrors);\n return;\n }\n onSubmit(result.data);\n };\n\n return (\n <div className=\"flex flex-col gap-4\">\n <Field invalid={errors.phase.length > 0}>\n <FieldLabel>Phase</FieldLabel>\n <Select\n value={value.phase}\n onValueChange={phase => {\n setErrors(NO_ERRORS);\n onChange(withPhaseRole({ ...value, phase }));\n }}\n disabled={isSubmitLoading}\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue placeholder=\"Select phase\" />\n </SelectTrigger>\n <SelectContent>\n {PROCESSOR_PHASES.map(phaseOption => (\n <SelectItem key={phaseOption.value} value={phaseOption.value}>\n {phaseOption.value}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <FieldDescription>\n {PROCESSOR_PHASES.find(phaseOption => phaseOption.value === value.phase)?.label}\n </FieldDescription>\n <FieldError>{errors.phase.length > 0 && <ErrorLines errors={errors.phase} />}</FieldError>\n </Field>\n\n <Field invalid={errors.message.length > 0}>\n <FieldLabel>Test Message</FieldLabel>\n <Textarea\n value={getProcessorMessage(value)}\n onChange={event => {\n setErrors(NO_ERRORS);\n onChange(withPhaseRole(updateProcessorMessage(value, event.target.value)));\n }}\n placeholder=\"Enter a test message...\"\n rows={4}\n disabled={isSubmitLoading}\n />\n <FieldError>{errors.message.length > 0 && <ErrorLines errors={errors.message} />}</FieldError>\n </Field>\n\n {children}\n\n <FormSubmitRow\n isSubmitLoading={isSubmitLoading}\n submitButtonLabel={submitButtonLabel}\n submitActions={submitActions}\n leftActions={leftActions}\n submitButtonIcon={submitButtonIcon}\n submitButtonVariant={submitButtonVariant}\n submitButtonFullWidth={submitButtonFullWidth}\n onSubmit={handleSubmit}\n />\n </div>\n );\n};\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"workflow-processor-input.es.js","sources":["../../../../../src/domains/workflows/workflow/input/workflow-processor-input.tsx"],"sourcesContent":["import { useState } from 'react';\nimport type { WorkflowInputDataProps } from '../workflow-input-data';\nimport { getProcessorMessage, updateProcessorMessage, withPhaseRole } from './processor-input';\nimport type { ProcessorDraft } from './processor-input';\nimport { Field, FieldDescription, FieldError, FieldLabel } from '@/ds/components/Field';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select';\nimport { Textarea } from '@/ds/components/Textarea';\nimport { FormSubmitRow } from '@/lib/form/components/form-submit-row';\n\nconst PROCESSOR_PHASES = [\n { value: 'input', label: 'Input - Process input messages before LLM' },\n { value: 'inputStep', label: 'Input Step - Process at each agentic loop step' },\n { value: 'outputStream', label: 'Output Stream - Process streaming chunks' },\n { value: 'outputResult', label: 'Output Result - Process complete output' },\n { value: 'outputStep', label: 'Output Step - Process after each LLM response' },\n];\n\ntype WorkflowProcessorInputProps = Omit<WorkflowInputDataProps, 'defaultValues'> & {\n value: ProcessorDraft;\n onChange: (draft: ProcessorDraft) => void;\n};\n\ntype ProcessorErrors = { phase: string[]; message: string[] };\n\nconst NO_ERRORS: ProcessorErrors = { phase: [], message: [] };\n\nfunction ErrorLines({ errors }: { errors: string[] }) {\n return (\n <span className=\"space-y-1\">\n {errors.map(error => (\n <span key={error} className=\"block\">\n {error}\n </span>\n ))}\n </span>\n );\n}\n\nexport const WorkflowProcessorInput = ({\n schema,\n value,\n onChange,\n isSubmitLoading,\n submitButtonLabel,\n onSubmit,\n children,\n submitActions,\n leftActions,\n submitButtonIcon,\n submitButtonVariant,\n submitButtonFullWidth,\n}: WorkflowProcessorInputProps) => {\n const [errors, setErrors] = useState<ProcessorErrors>(NO_ERRORS);\n\n const handleSubmit = () => {\n setErrors(NO_ERRORS);\n\n const result = schema.safeParse(value);\n if (!result.success) {\n const nextErrors: ProcessorErrors = { phase: [], message: [] };\n for (const issue of result.error.issues) {\n const fieldErrors = issue.path[0] === 'phase' ? nextErrors.phase : nextErrors.message;\n fieldErrors.push(`${issue.path.join('.')}: ${issue.message}`);\n }\n setErrors(nextErrors);\n return;\n }\n onSubmit(result.data);\n };\n\n return (\n <div className=\"flex flex-col gap-4\">\n <Field invalid={errors.phase.length > 0}>\n <FieldLabel>Phase</FieldLabel>\n <Select\n value={value.phase}\n onValueChange={phase => {\n setErrors(NO_ERRORS);\n onChange(withPhaseRole({ ...value, phase }));\n }}\n disabled={isSubmitLoading}\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue placeholder=\"Select phase\" />\n </SelectTrigger>\n <SelectContent>\n {PROCESSOR_PHASES.map(phaseOption => (\n <SelectItem key={phaseOption.value} value={phaseOption.value}>\n {phaseOption.value}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <FieldDescription>\n {PROCESSOR_PHASES.find(phaseOption => phaseOption.value === value.phase)?.label}\n </FieldDescription>\n <FieldError>{errors.phase.length > 0 && <ErrorLines errors={errors.phase} />}</FieldError>\n </Field>\n\n <Field invalid={errors.message.length > 0}>\n <FieldLabel>Test Message</FieldLabel>\n <Textarea\n value={getProcessorMessage(value)}\n onChange={event => {\n setErrors(NO_ERRORS);\n onChange(withPhaseRole(updateProcessorMessage(value, event.target.value)));\n }}\n placeholder=\"Enter a test message...\"\n rows={4}\n disabled={isSubmitLoading}\n />\n <FieldError>{errors.message.length > 0 && <ErrorLines errors={errors.message} />}</FieldError>\n </Field>\n\n {children}\n\n <FormSubmitRow\n isSubmitLoading={isSubmitLoading}\n submitButtonLabel={submitButtonLabel}\n submitActions={submitActions}\n leftActions={leftActions}\n submitButtonIcon={submitButtonIcon}\n submitButtonVariant={submitButtonVariant}\n submitButtonFullWidth={submitButtonFullWidth}\n onSubmit={handleSubmit}\n />\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AASA,MAAM,gBAAA,GAAmB;AAAA,EACvB,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,2CAAA,EAA4C;AAAA,EACrE,EAAE,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,gDAAA,EAAiD;AAAA,EAC9E,EAAE,KAAA,EAAO,cAAA,EAAgB,KAAA,EAAO,0CAAA,EAA2C;AAAA,EAC3E,EAAE,KAAA,EAAO,cAAA,EAAgB,KAAA,EAAO,yCAAA,EAA0C;AAAA,EAC1E,EAAE,KAAA,EAAO,YAAA,EAAc,KAAA,EAAO,+CAAA;AAChC,CAAA;AASA,MAAM,YAA6B,EAAE,KAAA,EAAO,EAAC,EAAG,OAAA,EAAS,EAAC,EAAE;AAE5D,SAAS,UAAA,CAAW,EAAE,MAAA,EAAO,EAAyB;AACpD,EAAA,uBACE,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAA,EACb,iBAAO,GAAA,CAAI,CAAA,KAAA,qBACV,GAAA,CAAC,MAAA,EAAA,EAAiB,SAAA,EAAU,OAAA,EACzB,QAAA,EAAA,KAAA,EAAA,EADQ,KAEX,CACD,CAAA,EACH,CAAA;AAEJ;AAEO,MAAM,yBAAyB,CAAC;AAAA,EACrC,MAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA,WAAA;AAAA,EACA,gBAAA;AAAA,EACA,mBAAA;AAAA,EACA;AACF,CAAA,KAAmC;AACjC,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,SAA0B,SAAS,CAAA;AAE/D,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,SAAA,CAAU,SAAS,CAAA;AAEnB,IAAA,MAAM,MAAA,GAAS,MAAA,CAAO,SAAA,CAAU,KAAK,CAAA;AACrC,IAAA,IAAI,CAAC,OAAO,OAAA,EAAS;AACnB,MAAA,MAAM,aAA8B,EAAE,KAAA,EAAO,EAAC,EAAG,OAAA,EAAS,EAAC,EAAE;AAC7D,MAAA,KAAA,MAAW,KAAA,IAAS,MAAA,CAAO,KAAA,CAAM,MAAA,EAAQ;AACvC,QAAA,MAAM,WAAA,GAAc,MAAM,IAAA,CAAK,CAAC,MAAM,OAAA,GAAU,UAAA,CAAW,QAAQ,UAAA,CAAW,OAAA;AAC9E,QAAA,WAAA,CAAY,IAAA,CAAK,CAAA,EAAG,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,GAAG,CAAC,CAAA,EAAA,EAAK,KAAA,CAAM,OAAO,CAAA,CAAE,CAAA;AAAA,MAC9D;AACA,MAAA,SAAA,CAAU,UAAU,CAAA;AACpB,MAAA;AAAA,IACF;AACA,IAAA,QAAA,CAAS,OAAO,IAAI,CAAA;AAAA,EACtB,CAAA;AAEA,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAA,EACb,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,KAAA,EAAA,EAAM,OAAA,EAAS,MAAA,CAAO,KAAA,CAAM,SAAS,CAAA,EACpC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,cAAW,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,sBACjB,IAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,OAAO,KAAA,CAAM,KAAA;AAAA,UACb,eAAe,CAAA,KAAA,KAAS;AACtB,YAAA,SAAA,CAAU,SAAS,CAAA;AACnB,YAAA,QAAA,CAAS,cAAc,EAAE,GAAG,KAAA,EAAO,KAAA,EAAO,CAAC,CAAA;AAAA,UAC7C,CAAA;AAAA,UACA,QAAA,EAAU,eAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,iBAAc,SAAA,EAAU,QAAA,EACvB,8BAAC,WAAA,EAAA,EAAY,WAAA,EAAY,gBAAe,CAAA,EAC1C,CAAA;AAAA,4BACA,GAAA,CAAC,aAAA,EAAA,EACE,QAAA,EAAA,gBAAA,CAAiB,GAAA,CAAI,iCACpB,GAAA,CAAC,UAAA,EAAA,EAAmC,KAAA,EAAO,WAAA,CAAY,OACpD,QAAA,EAAA,WAAA,CAAY,KAAA,EAAA,EADE,WAAA,CAAY,KAE7B,CACD,CAAA,EACH;AAAA;AAAA;AAAA,OACF;AAAA,sBACA,GAAA,CAAC,gBAAA,EAAA,EACE,QAAA,EAAA,gBAAA,CAAiB,IAAA,CAAK,CAAA,WAAA,KAAe,YAAY,KAAA,KAAU,KAAA,CAAM,KAAK,CAAA,EAAG,KAAA,EAC5E,CAAA;AAAA,sBACA,GAAA,CAAC,UAAA,EAAA,EAAY,QAAA,EAAA,MAAA,CAAO,KAAA,CAAM,MAAA,GAAS,CAAA,oBAAK,GAAA,CAAC,UAAA,EAAA,EAAW,MAAA,EAAQ,MAAA,CAAO,KAAA,EAAO,CAAA,EAAG;AAAA,KAAA,EAC/E,CAAA;AAAA,yBAEC,KAAA,EAAA,EAAM,OAAA,EAAS,MAAA,CAAO,OAAA,CAAQ,SAAS,CAAA,EACtC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,cAAW,QAAA,EAAA,cAAA,EAAY,CAAA;AAAA,sBACxB,GAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,oBAAoB,KAAK,CAAA;AAAA,UAChC,UAAU,CAAA,KAAA,KAAS;AACjB,YAAA,SAAA,CAAU,SAAS,CAAA;AACnB,YAAA,QAAA,CAAS,cAAc,sBAAA,CAAuB,KAAA,EAAO,MAAM,MAAA,CAAO,KAAK,CAAC,CAAC,CAAA;AAAA,UAC3E,CAAA;AAAA,UACA,WAAA,EAAY,yBAAA;AAAA,UACZ,IAAA,EAAM,CAAA;AAAA,UACN,QAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACA,GAAA,CAAC,UAAA,EAAA,EAAY,QAAA,EAAA,MAAA,CAAO,OAAA,CAAQ,MAAA,GAAS,CAAA,oBAAK,GAAA,CAAC,UAAA,EAAA,EAAW,MAAA,EAAQ,MAAA,CAAO,OAAA,EAAS,CAAA,EAAG;AAAA,KAAA,EACnF,CAAA;AAAA,IAEC,QAAA;AAAA,oBAED,GAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,eAAA;AAAA,QACA,iBAAA;AAAA,QACA,aAAA;AAAA,QACA,WAAA;AAAA,QACA,gBAAA;AAAA,QACA,mBAAA;AAAA,QACA,qBAAA;AAAA,QACA,QAAA,EAAU;AAAA;AAAA;AACZ,GAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -6,7 +6,7 @@ import './data/workflow-edge-data-groups.es.js';
|
|
|
6
6
|
import './utils.es.js';
|
|
7
7
|
import './workflow-boundary-data.es.js';
|
|
8
8
|
import './workflow-data-edge.es.js';
|
|
9
|
-
export { u as useWorkflowGraphRuntime } from '../../../use-workflow-graph-runtime-
|
|
9
|
+
export { u as useWorkflowGraphRuntime } from '../../../use-workflow-graph-runtime-CAyNWN_Z.js';
|
|
10
10
|
import './workflow-step-node-utils.es.js';
|
|
11
11
|
import '../../../types-CvneO3z0.js';
|
|
12
12
|
import '../../../workflow-condition-card-DnSlcZ2s.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import 'react/jsx-runtime';
|
|
2
2
|
import '@xyflow/react';
|
|
3
3
|
import 'lucide-react';
|
|
4
|
-
export { a as WorkflowBodyGraph } from '../../../use-workflow-graph-runtime-
|
|
4
|
+
export { a as WorkflowBodyGraph } from '../../../use-workflow-graph-runtime-CAyNWN_Z.js';
|
|
5
5
|
import '../../../Txt-BuzYj7Vy.js';
|
|
6
6
|
//# sourceMappingURL=workflow-body-graph.es.js.map
|