@mastra/playground-ui 62.0.0-alpha.2 → 62.0.0-alpha.4
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/{activity-maXCNWZp.js → activity-BsrB5ADa.js} +7 -5
- package/dist/activity-BsrB5ADa.js.map +1 -0
- package/dist/{activity-pXCpwxxi.cjs → activity-CaFdLiPz.cjs} +6 -4
- package/dist/activity-CaFdLiPz.cjs.map +1 -0
- package/dist/app-shell.css +7 -0
- package/dist/{ask-user-card-C14RGsoO.cjs → ask-user-card-BHIYyRdy.cjs} +2 -2
- package/dist/{ask-user-card-C14RGsoO.cjs.map → ask-user-card-BHIYyRdy.cjs.map} +1 -1
- package/dist/{ask-user-card-C01JQ7bo.js → ask-user-card-BaaCfWFs.js} +2 -2
- package/dist/{ask-user-card-C01JQ7bo.js.map → ask-user-card-BaaCfWFs.js.map} +1 -1
- package/dist/{collapsible-BzlQAuym.cjs → collapsible-C6BZhVRG.cjs} +2 -10
- package/dist/collapsible-C6BZhVRG.cjs.map +1 -0
- package/dist/{collapsible-8h5KBZPX.js → collapsible-DglEffBF.js} +2 -10
- package/dist/collapsible-DglEffBF.js.map +1 -0
- package/dist/{combobox-8_JEWMYs.js → combobox-CMu7NDj6.js} +10 -2
- package/dist/combobox-CMu7NDj6.js.map +1 -0
- package/dist/{combobox-Csiduxme.cjs → combobox-DW7-4bGp.cjs} +10 -2
- package/dist/combobox-DW7-4bGp.cjs.map +1 -0
- package/dist/{command-C-i5cx8D.js → command-BW5Jyad6.js} +4 -2
- package/dist/command-BW5Jyad6.js.map +1 -0
- package/dist/{command-Cq-K24jI.cjs → command-Bv53_kMY.cjs} +4 -2
- package/dist/command-Bv53_kMY.cjs.map +1 -0
- package/dist/components/ClampedText.cjs.js +2 -2
- package/dist/components/ClampedText.cjs.js.map +1 -1
- package/dist/components/ClampedText.es.js +2 -2
- package/dist/components/ClampedText.es.js.map +1 -1
- package/dist/components/Collapsible.cjs.js +1 -1
- package/dist/components/Collapsible.es.js +1 -1
- package/dist/components/Combobox.cjs.js +1 -1
- package/dist/components/Combobox.es.js +1 -1
- package/dist/components/Command.cjs.js +1 -1
- package/dist/components/Command.es.js +1 -1
- package/dist/components/CommandPalette.cjs.js +1 -1
- package/dist/components/CommandPalette.es.js +1 -1
- package/dist/components/Comment.cjs.js +1 -1
- package/dist/components/Comment.es.js +1 -1
- package/dist/components/Composer.cjs.js +1 -1
- package/dist/components/Composer.es.js +1 -1
- package/dist/components/DataCodeSection.cjs.js +1 -1
- package/dist/components/DataCodeSection.es.js +1 -1
- package/dist/components/DataList.cjs.js +3 -3
- package/dist/components/DataList.es.js +4 -4
- package/dist/components/DataPanel.cjs.js +1 -1
- package/dist/components/DataPanel.es.js +1 -1
- package/dist/components/DateTimePicker.cjs.js +1 -1
- package/dist/components/DateTimePicker.es.js +1 -1
- package/dist/components/DateTimeRangePicker.cjs.js +1 -1
- package/dist/components/DateTimeRangePicker.es.js +1 -1
- package/dist/components/DisclosureChevron.cjs.js +10 -0
- package/dist/components/DisclosureChevron.cjs.js.map +1 -0
- package/dist/components/DisclosureChevron.d.ts +2 -0
- package/dist/components/DisclosureChevron.es.js +2 -0
- package/dist/components/DisclosureChevron.es.js.map +1 -0
- package/dist/components/EnvironmentVariablesEditor.cjs.js +2 -2
- package/dist/components/EnvironmentVariablesEditor.es.js +2 -2
- package/dist/components/FilterBar.cjs.js +3 -1
- package/dist/components/FilterBar.cjs.js.map +1 -1
- package/dist/components/FilterBar.es.js +4 -2
- package/dist/components/FilterBar.es.js.map +1 -1
- package/dist/components/FormFieldBlocks.cjs.js +1 -1
- package/dist/components/FormFieldBlocks.es.js +1 -1
- package/dist/components/Input.cjs.js +1 -1
- package/dist/components/Input.es.js +1 -1
- package/dist/components/InputGroup.cjs.js +1 -1
- package/dist/components/InputGroup.es.js +1 -1
- package/dist/components/InputNumber.cjs.js +5 -3
- package/dist/components/InputNumber.cjs.js.map +1 -1
- package/dist/components/InputNumber.es.js +5 -3
- package/dist/components/InputNumber.es.js.map +1 -1
- package/dist/components/JSONSchemaForm.cjs.js +1 -1
- package/dist/components/JSONSchemaForm.es.js +1 -1
- package/dist/components/ListSearch.cjs.js +1 -1
- package/dist/components/ListSearch.es.js +1 -1
- package/dist/components/LogsDataList.cjs.js +3 -3
- package/dist/components/LogsDataList.es.js +3 -3
- package/dist/components/PageLayout.cjs.js +1 -1
- package/dist/components/PageLayout.cjs.js.map +1 -1
- package/dist/components/PageLayout.es.js +1 -1
- package/dist/components/PageLayout.es.js.map +1 -1
- package/dist/components/PropertyFilter.cjs.js +2 -2
- package/dist/components/PropertyFilter.es.js +3 -3
- package/dist/components/RuleBuilder.cjs.js +1 -1
- package/dist/components/RuleBuilder.es.js +1 -1
- package/dist/components/SavedViews.cjs.js +3 -1
- package/dist/components/SavedViews.cjs.js.map +1 -1
- package/dist/components/SavedViews.es.js +3 -1
- package/dist/components/SavedViews.es.js.map +1 -1
- package/dist/components/SearchInput.cjs.js +1 -1
- package/dist/components/SearchInput.es.js +1 -1
- package/dist/components/Sidebar.cjs.js +5 -4
- package/dist/components/Sidebar.cjs.js.map +1 -1
- package/dist/components/Sidebar.es.js +5 -4
- package/dist/components/Sidebar.es.js.map +1 -1
- package/dist/components/Tree.cjs.js +1 -1
- package/dist/components/Tree.es.js +1 -1
- package/dist/components/Workflow.cjs.js +1 -1
- package/dist/components/Workflow.es.js +1 -1
- package/dist/components/ai/activity.cjs.js +4 -4
- package/dist/components/ai/activity.es.js +4 -4
- package/dist/components/ai/ask-user.cjs.js +1 -1
- package/dist/components/ai/ask-user.es.js +1 -1
- package/dist/components/ai/tool-approval.cjs.js +1 -1
- package/dist/components/ai/tool-approval.es.js +1 -1
- package/dist/components/ai/tool-call.cjs.js +1 -1
- package/dist/components/ai/tool-call.es.js +1 -1
- package/dist/{composer-DhxSetWI.cjs → composer-Cg5bXN1r.cjs} +5 -3
- package/dist/composer-Cg5bXN1r.cjs.map +1 -0
- package/dist/{composer-CIfMr8q5.js → composer-CxmOOUX8.js} +5 -3
- package/dist/composer-CxmOOUX8.js.map +1 -0
- package/dist/{data-code-section-CvLs4lM8.js → data-code-section-B1dGZ0ds.js} +2 -2
- package/dist/{data-code-section-CvLs4lM8.js.map → data-code-section-B1dGZ0ds.js.map} +1 -1
- package/dist/{data-code-section-D0NR1REP.cjs → data-code-section-BTZPG2zM.cjs} +2 -2
- package/dist/{data-code-section-D0NR1REP.cjs.map → data-code-section-BTZPG2zM.cjs.map} +1 -1
- package/dist/{data-list-BfepBJLG.js → data-list-4UMxoFNU.js} +192 -11
- package/dist/data-list-4UMxoFNU.js.map +1 -0
- package/dist/{data-list-oQsJVUa6.cjs → data-list-CqVYt2aN.cjs} +191 -10
- package/dist/data-list-CqVYt2aN.cjs.map +1 -0
- package/dist/{data-list-skeleton-BE7yRNks.cjs → data-list-skeleton-BMGppDAy.cjs} +3 -3
- package/dist/data-list-skeleton-BMGppDAy.cjs.map +1 -0
- package/dist/{data-list-skeleton-DnVnqTGL.js → data-list-skeleton-DGNzfd4Y.js} +3 -3
- package/dist/data-list-skeleton-DGNzfd4Y.js.map +1 -0
- package/dist/{data-panel-BLk0mZe6.js → data-panel-VYp4slDb.js} +2 -2
- package/dist/{data-panel-BLk0mZe6.js.map → data-panel-VYp4slDb.js.map} +1 -1
- package/dist/{data-panel-BaqnMzRn.cjs → data-panel-r1LYHphg.cjs} +2 -2
- package/dist/{data-panel-BaqnMzRn.cjs.map → data-panel-r1LYHphg.cjs.map} +1 -1
- package/dist/date-time-range-picker-BBbF3LWF.cjs +210 -0
- package/dist/date-time-range-picker-BBbF3LWF.cjs.map +1 -0
- package/dist/date-time-range-picker-CUUg0sIl.js +208 -0
- package/dist/date-time-range-picker-CUUg0sIl.js.map +1 -0
- package/dist/disclosure-chevron-BWZ8Alz1.js +33 -0
- package/dist/disclosure-chevron-BWZ8Alz1.js.map +1 -0
- package/dist/disclosure-chevron-B_gmYFR5.cjs +35 -0
- package/dist/disclosure-chevron-B_gmYFR5.cjs.map +1 -0
- package/dist/domains/chat/attachments/composer-attachment-list.cjs.js +1 -1
- package/dist/domains/chat/attachments/composer-attachment-list.es.js +1 -1
- package/dist/domains/chat/components/badge-wrapper.cjs.js +1 -1
- package/dist/domains/chat/components/badge-wrapper.es.js +1 -1
- package/dist/domains/chat/context/chat-context.cjs.js.map +1 -1
- package/dist/domains/chat/context/chat-context.es.js.map +1 -1
- package/dist/domains/chat/messages/message-row.cjs.js +2 -2
- package/dist/domains/chat/messages/message-row.es.js +2 -2
- package/dist/domains/chat/messages/notification-signal-notice.cjs.js +1 -1
- package/dist/domains/chat/messages/notification-signal-notice.es.js +1 -1
- package/dist/domains/chat/messages/renderers/message-text.cjs.js +16 -8
- package/dist/domains/chat/messages/renderers/message-text.cjs.js.map +1 -1
- package/dist/domains/chat/messages/renderers/message-text.es.js +17 -9
- package/dist/domains/chat/messages/renderers/message-text.es.js.map +1 -1
- package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
- package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
- package/dist/domains/chat/messages/signal-badge.cjs.js +1 -1
- package/dist/domains/chat/messages/signal-badge.es.js +1 -1
- package/dist/domains/chat/messages/skill-message.cjs.js +2 -2
- package/dist/domains/chat/messages/skill-message.es.js +2 -2
- package/dist/domains/chat/messages/system-reminder-badge.cjs.js +1 -1
- package/dist/domains/chat/messages/system-reminder-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge.es.js +1 -1
- 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/observation-marker-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-details.es.js +1 -1
- package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +1 -2
- package/dist/domains/chat/tools/badges/workflow-badge.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/workflow-badge.es.js +1 -2
- package/dist/domains/chat/tools/badges/workflow-badge.es.js.map +1 -1
- package/dist/domains/chat/tools/tool-card.cjs.js +1 -1
- package/dist/domains/chat/tools/tool-card.es.js +1 -1
- package/dist/domains/logs/components/log-data-panel.cjs.js +1 -1
- package/dist/domains/logs/components/log-data-panel.es.js +1 -1
- package/dist/domains/logs/components/logs-list-view.cjs.js +3 -3
- package/dist/domains/logs/components/logs-list-view.es.js +3 -3
- package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
- package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
- package/dist/domains/metrics/components/agent-runs-card.cjs.js +0 -1
- package/dist/domains/metrics/components/agent-runs-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/agent-runs-card.es.js +0 -1
- package/dist/domains/metrics/components/agent-runs-card.es.js.map +1 -1
- package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
- package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
- package/dist/domains/metrics/components/failure-rate-card.cjs.js +2 -1
- package/dist/domains/metrics/components/failure-rate-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/failure-rate-card.es.js +2 -1
- package/dist/domains/metrics/components/failure-rate-card.es.js.map +1 -1
- package/dist/domains/metrics/components/latency-card.cjs.js +0 -1
- package/dist/domains/metrics/components/latency-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/latency-card.es.js +0 -1
- package/dist/domains/metrics/components/latency-card.es.js.map +1 -1
- package/dist/domains/metrics/components/scores-card.cjs.js +0 -1
- package/dist/domains/metrics/components/scores-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/scores-card.es.js +0 -1
- package/dist/domains/metrics/components/scores-card.es.js.map +1 -1
- package/dist/domains/metrics/components/token-usage-card.cjs.js +0 -1
- package/dist/domains/metrics/components/token-usage-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/token-usage-card.es.js +0 -1
- package/dist/domains/metrics/components/token-usage-card.es.js.map +1 -1
- package/dist/domains/scores/components/score-data-panel.cjs.js +13 -11
- package/dist/domains/scores/components/score-data-panel.cjs.js.map +1 -1
- package/dist/domains/scores/components/score-data-panel.es.js +13 -11
- package/dist/domains/scores/components/score-data-panel.es.js.map +1 -1
- package/dist/domains/scores/components/span-scoring.cjs.js +1 -1
- package/dist/domains/scores/components/span-scoring.es.js +1 -1
- package/dist/domains/scores/components/trace-scores-tab.cjs.js +5 -21
- package/dist/domains/scores/components/trace-scores-tab.cjs.js.map +1 -1
- package/dist/domains/scores/components/trace-scores-tab.es.js +5 -21
- 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 +1 -1
- package/dist/domains/traces/components/span-data-panel-view.cjs.js +1 -1
- package/dist/domains/traces/components/span-data-panel-view.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +2 -2
- package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +3 -3
- package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +3 -3
- package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +1 -1
- package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
- package/dist/domains/traces/components/span-summary-description.es.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
- package/dist/domains/traces/components/thread-view-by-trace.cjs.js +0 -1
- package/dist/domains/traces/components/thread-view-by-trace.cjs.js.map +1 -1
- package/dist/domains/traces/components/thread-view-by-trace.es.js +0 -1
- 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 -1
- package/dist/domains/traces/components/trace-columns-menu.es.js +1 -1
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js +56 -21
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel-view.es.js +57 -22
- package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel.cjs.js +4 -5
- package/dist/domains/traces/components/trace-data-panel.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel.es.js +4 -5
- 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 +2 -2
- package/dist/domains/traces/components/trace-time-range-chip.es.js +2 -2
- package/dist/domains/traces/components/traces-list-view.cjs.js +126 -112
- package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-list-view.es.js +127 -113
- package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
- package/dist/domains/traces/components/traces-page-skeleton.cjs.js +2 -2
- package/dist/domains/traces/components/traces-page-skeleton.es.js +2 -2
- package/dist/domains/traces/trace-list-columns.cjs.js +15 -0
- package/dist/domains/traces/trace-list-columns.cjs.js.map +1 -1
- package/dist/domains/traces/trace-list-columns.es.js +15 -1
- package/dist/domains/traces/trace-list-columns.es.js.map +1 -1
- package/dist/domains/workflows/components/workflow-combobox.cjs.js +1 -1
- package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
- package/dist/domains/workflows/components/workflow-information.cjs.js +3 -2
- package/dist/domains/workflows/components/workflow-information.cjs.js.map +1 -1
- package/dist/domains/workflows/components/workflow-information.es.js +4 -3
- package/dist/domains/workflows/components/workflow-information.es.js.map +1 -1
- package/dist/domains/workflows/components/workflow-step-detail.cjs.js +2 -2
- package/dist/domains/workflows/components/workflow-step-detail.es.js +2 -2
- package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +4 -3
- package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js.map +1 -1
- package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +5 -4
- package/dist/domains/workflows/components/workflows-list/workflows-list.es.js.map +1 -1
- package/dist/domains/workflows/runs/workflow-run-list.cjs.js +3 -3
- package/dist/domains/workflows/runs/workflow-run-list.cjs.js.map +1 -1
- package/dist/domains/workflows/runs/workflow-run-list.es.js +3 -3
- package/dist/domains/workflows/runs/workflow-run-list.es.js.map +1 -1
- package/dist/domains/workflows/workflow/use-workflow-graph-runtime.cjs.js +2 -2
- package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-body-graph.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-body-graph.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-card.cjs.js +13 -11
- package/dist/domains/workflows/workflow/workflow-card.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-card.es.js +13 -11
- package/dist/domains/workflows/workflow/workflow-card.es.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-inner.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-graph-node.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-graph-node.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-input-data.cjs.js +3 -2
- package/dist/domains/workflows/workflow/workflow-input-data.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-input-data.es.js +4 -3
- package/dist/domains/workflows/workflow/workflow-input-data.es.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-nested-graph.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-run-data.cjs.js +3 -2
- package/dist/domains/workflows/workflow/workflow-run-data.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-run-data.es.js +4 -3
- package/dist/domains/workflows/workflow/workflow-run-data.es.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-suspended-steps.cjs.js +3 -9
- package/dist/domains/workflows/workflow/workflow-suspended-steps.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +4 -10
- package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +3 -2
- 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 +4 -3
- package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-timeline.cjs.js +3 -8
- package/dist/domains/workflows/workflow/workflow-timeline.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-timeline.es.js +4 -9
- package/dist/domains/workflows/workflow/workflow-timeline.es.js.map +1 -1
- package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +1 -1
- package/dist/domains/workspace/components/workspace-create-directory.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-create-directory.es.js +1 -1
- package/dist/domains/workspace/components/workspace-search.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-search.es.js +1 -1
- package/dist/domains/workspace/components/workspace-tree.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-tree.es.js +1 -1
- package/dist/ee/signals/components/entity-index-list.cjs.js +1 -1
- package/dist/ee/signals/components/entity-index-list.es.js +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +3 -3
- package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +3 -3
- package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +1 -1
- package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +1 -1
- package/dist/ee/signals/signal-lifelines.cjs.js +2 -8
- package/dist/ee/signals/signal-lifelines.cjs.js.map +1 -1
- package/dist/ee/signals/signal-lifelines.es.js +2 -8
- package/dist/ee/signals/signal-lifelines.es.js.map +1 -1
- package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +2 -2
- package/dist/ee/topics/components/topic-trace-summary-list.es.js +2 -2
- package/dist/{filter-bar-chip-BBPHw-rX.cjs → filter-bar-chip-BUlEVUgT.cjs} +3 -1
- package/dist/filter-bar-chip-BUlEVUgT.cjs.map +1 -0
- package/dist/{filter-bar-chip-SX3vDA7h.js → filter-bar-chip-DBjcrQFh.js} +3 -1
- package/dist/filter-bar-chip-DBjcrQFh.js.map +1 -0
- package/dist/hooks/use-local-storage-state.es.js +1 -1
- package/dist/{input-vi0ICZHe.js → input-DQFUjtnh.js} +4 -2
- package/dist/input-DQFUjtnh.js.map +1 -0
- package/dist/{input-group-C7WC6xGL.js → input-group-C_2SrLdX.js} +4 -2
- package/dist/input-group-C_2SrLdX.js.map +1 -0
- package/dist/{input-group-CGbhXsmd.cjs → input-group-Cxfp0mxQ.cjs} +4 -2
- package/dist/input-group-Cxfp0mxQ.cjs.map +1 -0
- package/dist/{input-HPE241gI.cjs → input-zdqTky_C.cjs} +4 -2
- package/dist/input-zdqTky_C.cjs.map +1 -0
- package/dist/layout/tabbed-container.cjs.js +3 -3
- package/dist/layout/tabbed-container.es.js +3 -3
- package/dist/lib/form/components/array-element-wrapper.cjs.js +3 -2
- package/dist/lib/form/components/array-element-wrapper.cjs.js.map +1 -1
- package/dist/lib/form/components/array-element-wrapper.es.js +4 -3
- package/dist/lib/form/components/array-element-wrapper.es.js.map +1 -1
- package/dist/lib/form/components/number-field.cjs.js +1 -1
- package/dist/lib/form/components/number-field.es.js +1 -1
- package/dist/lib/form/components/object-wrapper.cjs.js +3 -2
- package/dist/lib/form/components/object-wrapper.cjs.js.map +1 -1
- package/dist/lib/form/components/object-wrapper.es.js +4 -3
- package/dist/lib/form/components/object-wrapper.es.js.map +1 -1
- package/dist/lib/form/components/record-field.cjs.js +1 -1
- package/dist/lib/form/components/record-field.es.js +1 -1
- package/dist/{list-search-DTVH9Fbj.cjs → list-search-CA5w3QHa.cjs} +2 -2
- package/dist/{list-search-DTVH9Fbj.cjs.map → list-search-CA5w3QHa.cjs.map} +1 -1
- package/dist/{list-search-CTZVTRUd.js → list-search-Ce89eOzO.js} +2 -2
- package/dist/{list-search-CTZVTRUd.js.map → list-search-Ce89eOzO.js.map} +1 -1
- package/dist/{logs-data-list-BgFT_0qi.cjs → logs-data-list-C5UGLFo1.cjs} +2 -2
- package/dist/{logs-data-list-BgFT_0qi.cjs.map → logs-data-list-C5UGLFo1.cjs.map} +1 -1
- package/dist/{logs-data-list-C-F2jh04.js → logs-data-list-CgrUlafS.js} +2 -2
- package/dist/{logs-data-list-C-F2jh04.js.map → logs-data-list-CgrUlafS.js.map} +1 -1
- package/dist/new/layout/app-shell.cjs.js +1 -1
- package/dist/new/layout/app-shell.cjs.js.map +1 -1
- package/dist/new/layout/app-shell.es.js +1 -1
- package/dist/new/layout/app-shell.es.js.map +1 -1
- package/dist/{notification-activity-Bz0h5LOR.cjs → notification-activity-C2AcNOyq.cjs} +2 -2
- package/dist/{notification-activity-Bz0h5LOR.cjs.map → notification-activity-C2AcNOyq.cjs.map} +1 -1
- package/dist/{notification-activity-DTXzghFr.js → notification-activity-DquzIOZw.js} +2 -2
- package/dist/{notification-activity-DTXzghFr.js.map → notification-activity-DquzIOZw.js.map} +1 -1
- package/dist/primitives/chart-frame.cjs.js +1 -1
- package/dist/primitives/chart-frame.cjs.js.map +1 -1
- package/dist/primitives/chart-frame.es.js +1 -1
- package/dist/primitives/chart-frame.es.js.map +1 -1
- package/dist/primitives/password-manager-autofill.cjs.js +34 -0
- package/dist/primitives/password-manager-autofill.cjs.js.map +1 -0
- package/dist/primitives/password-manager-autofill.d.ts +2 -0
- package/dist/primitives/password-manager-autofill.es.js +28 -0
- package/dist/primitives/password-manager-autofill.es.js.map +1 -0
- package/dist/primitives/textarea-control.cjs.js +12 -2
- package/dist/primitives/textarea-control.cjs.js.map +1 -1
- package/dist/primitives/textarea-control.es.js +12 -2
- package/dist/primitives/textarea-control.es.js.map +1 -1
- package/dist/{property-filter-applied-7dHzckeW.cjs → property-filter-applied-ACNa3kYG.cjs} +4 -2
- package/dist/property-filter-applied-ACNa3kYG.cjs.map +1 -0
- package/dist/{property-filter-applied-CdbOixsW.js → property-filter-applied-e0Vg1895.js} +4 -2
- package/dist/property-filter-applied-e0Vg1895.js.map +1 -0
- package/dist/{reasoning-activity-D2sXBAxE.cjs → reasoning-activity-Cl7kaqgZ.cjs} +2 -2
- package/dist/{reasoning-activity-D2sXBAxE.cjs.map → reasoning-activity-Cl7kaqgZ.cjs.map} +1 -1
- package/dist/{reasoning-activity-Cpp4iYTw.js → reasoning-activity-D8AF1htp.js} +2 -2
- package/dist/{reasoning-activity-Cpp4iYTw.js.map → reasoning-activity-D8AF1htp.js.map} +1 -1
- package/dist/{search-input-CUGl4cVg.cjs → search-input-BHF2RziH.cjs} +2 -2
- package/dist/{search-input-CUGl4cVg.cjs.map → search-input-BHF2RziH.cjs.map} +1 -1
- package/dist/{search-input-iS3IW0Qo.js → search-input-BgVjoPtF.js} +2 -2
- package/dist/{search-input-iS3IW0Qo.js.map → search-input-BgVjoPtF.js.map} +1 -1
- package/dist/{signal-activity-CtSExTzh.js → signal-activity-BiWlOFhu.js} +2 -2
- package/dist/{signal-activity-CtSExTzh.js.map → signal-activity-BiWlOFhu.js.map} +1 -1
- package/dist/{signal-activity-Rh1YO0x6.cjs → signal-activity-aXcUgxDg.cjs} +2 -2
- package/dist/{signal-activity-Rh1YO0x6.cjs.map → signal-activity-aXcUgxDg.cjs.map} +1 -1
- package/dist/{span-payload-primitives-wxQ0IDhF.js → span-payload-primitives-D_Z6D-Aj.js} +6 -6
- package/dist/span-payload-primitives-D_Z6D-Aj.js.map +1 -0
- package/dist/{span-payload-primitives-DqZn_Q29.cjs → span-payload-primitives-XZgE4FGT.cjs} +6 -6
- package/dist/span-payload-primitives-XZgE4FGT.cjs.map +1 -0
- package/dist/src/domains/chat/context/chat-context.d.ts +5 -1
- package/dist/src/domains/traces/components/traces-list-view.d.ts +3 -1
- package/dist/src/domains/traces/trace-list-columns.d.ts +2 -0
- package/dist/src/ds/components/DataList/data-list-column-order.d.ts +22 -0
- package/dist/src/ds/components/DataList/data-list-reorder-context.d.ts +9 -0
- package/dist/src/ds/components/DataList/data-list-root.d.ts +16 -1
- package/dist/src/ds/components/DateTimeRangePicker/custom-range-editor.d.ts +12 -0
- package/dist/src/ds/components/DisclosureChevron/disclosure-chevron.d.ts +13 -0
- package/dist/src/ds/components/DisclosureChevron/index.d.ts +1 -0
- package/dist/src/ds/components/Input/input.d.ts +12 -1
- package/dist/src/ds/components/InputGroup/input-group.d.ts +1 -1
- package/dist/src/ds/components/InputNumber/input-number.d.ts +1 -1
- package/dist/src/ds/components/Tree/tree-context.d.ts +1 -0
- package/dist/src/ds/primitives/chart-frame.d.ts +4 -1
- package/dist/src/ds/primitives/password-manager-autofill.d.ts +29 -0
- package/dist/src/ds/primitives/textarea-control.d.ts +1 -1
- package/dist/style.css +18 -23
- package/dist/{tool-approval-CWOuZz47.cjs → tool-approval-DEfU8dPG.cjs} +2 -2
- package/dist/{tool-approval-CWOuZz47.cjs.map → tool-approval-DEfU8dPG.cjs.map} +1 -1
- package/dist/{tool-approval-BabMPJSL.js → tool-approval-DM8lvaCK.js} +2 -2
- package/dist/{tool-approval-BabMPJSL.js.map → tool-approval-DM8lvaCK.js.map} +1 -1
- package/dist/{tool-call-group-BPQTXJST.cjs → tool-call-group-CFpdexuw.cjs} +2 -2
- package/dist/{tool-call-group-BPQTXJST.cjs.map → tool-call-group-CFpdexuw.cjs.map} +1 -1
- package/dist/{tool-call-group-bE2C2hCK.js → tool-call-group-CZBqGjMh.js} +2 -2
- package/dist/{tool-call-group-bE2C2hCK.js.map → tool-call-group-CZBqGjMh.js.map} +1 -1
- package/dist/{tool-card-D-w1SgXq.js → tool-card-B0HX-uhD.js} +2 -2
- package/dist/tool-card-B0HX-uhD.js.map +1 -0
- package/dist/{tool-card-LNK49o-E.cjs → tool-card-CHyHNezE.cjs} +2 -2
- package/dist/tool-card-CHyHNezE.cjs.map +1 -0
- package/dist/{traces-data-list-DRSy_7KT.cjs → traces-data-list-DCa7QLQ3.cjs} +2 -2
- package/dist/{traces-data-list-DRSy_7KT.cjs.map → traces-data-list-DCa7QLQ3.cjs.map} +1 -1
- package/dist/{traces-data-list-C89IFLf8.js → traces-data-list-Dig7T40-.js} +2 -2
- package/dist/{traces-data-list-C89IFLf8.js.map → traces-data-list-Dig7T40-.js.map} +1 -1
- package/dist/{tree-DyVaMIwA.js → tree-BodKFJWV.js} +8 -5
- package/dist/tree-BodKFJWV.js.map +1 -0
- package/dist/{tree-JtAQw7a7.cjs → tree-vhKmzihm.cjs} +7 -4
- package/dist/tree-vhKmzihm.cjs.map +1 -0
- package/dist/{use-workflow-graph-runtime-FHoQYtWa.cjs → use-workflow-graph-runtime-B_ihs9Ev.cjs} +2 -2
- package/dist/{use-workflow-graph-runtime-FHoQYtWa.cjs.map → use-workflow-graph-runtime-B_ihs9Ev.cjs.map} +1 -1
- package/dist/{use-workflow-graph-runtime-XT_aoo-Z.js → use-workflow-graph-runtime-OyDXm_6V.js} +2 -2
- package/dist/{use-workflow-graph-runtime-XT_aoo-Z.js.map → use-workflow-graph-runtime-OyDXm_6V.js.map} +1 -1
- package/dist/{workflow-condition-card-Dy-0c_PT.cjs → workflow-condition-card-BF0PmJDV.cjs} +5 -4
- package/dist/workflow-condition-card-BF0PmJDV.cjs.map +1 -0
- package/dist/{workflow-condition-card-D30tufXt.js → workflow-condition-card-BVnfl6Zi.js} +5 -4
- package/dist/workflow-condition-card-BVnfl6Zi.js.map +1 -0
- package/package.json +9 -9
- package/dist/activity-maXCNWZp.js.map +0 -1
- package/dist/activity-pXCpwxxi.cjs.map +0 -1
- package/dist/collapsible-8h5KBZPX.js.map +0 -1
- package/dist/collapsible-BzlQAuym.cjs.map +0 -1
- package/dist/combobox-8_JEWMYs.js.map +0 -1
- package/dist/combobox-Csiduxme.cjs.map +0 -1
- package/dist/command-C-i5cx8D.js.map +0 -1
- package/dist/command-Cq-K24jI.cjs.map +0 -1
- package/dist/composer-CIfMr8q5.js.map +0 -1
- package/dist/composer-DhxSetWI.cjs.map +0 -1
- package/dist/data-list-BfepBJLG.js.map +0 -1
- package/dist/data-list-oQsJVUa6.cjs.map +0 -1
- package/dist/data-list-skeleton-BE7yRNks.cjs.map +0 -1
- package/dist/data-list-skeleton-DnVnqTGL.js.map +0 -1
- package/dist/date-time-range-picker-BA3e2LFA.js +0 -180
- package/dist/date-time-range-picker-BA3e2LFA.js.map +0 -1
- package/dist/date-time-range-picker-BNepacnP.cjs +0 -182
- package/dist/date-time-range-picker-BNepacnP.cjs.map +0 -1
- package/dist/filter-bar-chip-BBPHw-rX.cjs.map +0 -1
- package/dist/filter-bar-chip-SX3vDA7h.js.map +0 -1
- package/dist/input-HPE241gI.cjs.map +0 -1
- package/dist/input-group-C7WC6xGL.js.map +0 -1
- package/dist/input-group-CGbhXsmd.cjs.map +0 -1
- package/dist/input-vi0ICZHe.js.map +0 -1
- package/dist/property-filter-applied-7dHzckeW.cjs.map +0 -1
- package/dist/property-filter-applied-CdbOixsW.js.map +0 -1
- package/dist/span-payload-primitives-DqZn_Q29.cjs.map +0 -1
- package/dist/span-payload-primitives-wxQ0IDhF.js.map +0 -1
- package/dist/tool-card-D-w1SgXq.js.map +0 -1
- package/dist/tool-card-LNK49o-E.cjs.map +0 -1
- package/dist/tree-DyVaMIwA.js.map +0 -1
- package/dist/tree-JtAQw7a7.cjs.map +0 -1
- package/dist/workflow-condition-card-D30tufXt.js.map +0 -1
- package/dist/workflow-condition-card-Dy-0c_PT.cjs.map +0 -1
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
5
5
|
const jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
const workflows = require('@mastra/react/hooks/workflows');
|
|
7
7
|
const React = require('react');
|
|
8
|
-
const combobox = require('../../../combobox-
|
|
8
|
+
const combobox = require('../../../combobox-DW7-4bGp.cjs');
|
|
9
9
|
require('@base-ui/react/combobox');
|
|
10
10
|
const lib_framework = require('../../../lib/framework.cjs.js');
|
|
11
11
|
const toast = require('../../../toast-C8a7bWV8.cjs');
|
|
@@ -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-CMu7NDj6.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';
|
|
@@ -14,7 +14,8 @@ const domains_workflows_workflow_workflowRunHeader = require('../workflow/workfl
|
|
|
14
14
|
const domains_workflows_workflow_workflowTrigger = require('../workflow/workflow-trigger.cjs.js');
|
|
15
15
|
const domains_workflows_components_workflowLayout = require('./workflow-layout.cjs.js');
|
|
16
16
|
const Button = require('../../../Button-BpSkkuzG.cjs');
|
|
17
|
-
const collapsible = require('../../../collapsible-
|
|
17
|
+
const collapsible = require('../../../collapsible-C6BZhVRG.cjs');
|
|
18
|
+
const disclosureChevron = require('../../../disclosure-chevron-B_gmYFR5.cjs');
|
|
18
19
|
const scrollArea = require('../../../scroll-area-CVgjRzTS.cjs');
|
|
19
20
|
const lib_framework = require('../../../lib/framework.cjs.js');
|
|
20
21
|
const utils_cn = require('../../../cn-TqD01zH-.cjs');
|
|
@@ -60,7 +61,7 @@ function WorkflowInformationTopSection({
|
|
|
60
61
|
children: [
|
|
61
62
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex shrink-0 items-center gap-1 pr-2", children: [
|
|
62
63
|
/* @__PURE__ */ jsxRuntime.jsxs(collapsible.CollapsibleTrigger, { className: "flex min-w-0 flex-1 items-center gap-2 px-4 py-3 text-column text-muted-foreground", children: [
|
|
63
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
64
|
+
/* @__PURE__ */ jsxRuntime.jsx(disclosureChevron.DisclosureChevron, { direction: "right", className: "size-4 text-muted-foreground" }),
|
|
64
65
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "Workflow run" }),
|
|
65
66
|
!isOpen && result?.status && /* @__PURE__ */ jsxRuntime.jsx(domains_workflows_workflow_workflowRunHeader.WorkflowRunStatusBadge, { status: result.status })
|
|
66
67
|
] }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-information.cjs.js","sources":["../../../../src/domains/workflows/components/workflow-information.tsx"],"sourcesContent":["import type { GetWorkflowResponse } from '@mastra/client-js';\nimport { useWorkflow } from '@mastra/react/hooks/workflows';\nimport { ChevronRight, Plus } from 'lucide-react';\nimport type { ContextType, ReactNode } from 'react';\nimport { useEffect, useContext, useState } from 'react';\n\nimport { useWorkflowSelectedStep } from '../context/use-workflow-selected-step';\nimport { WorkflowRunContext } from '../context/workflow-run-context';\nimport { WorkflowRunDetail } from '../runs/workflow-run-details';\nimport { WorkflowRecentRuns } from '../runs/workflow-run-list';\nimport { WorkflowRunStatusBadge } from '../workflow/workflow-run-header';\nimport { WorkflowTrigger } from '../workflow/workflow-trigger';\nimport type { WorkflowRunActionsContext } from '../workflow/workflow-trigger';\nimport { panelSurfaceStyle, WorkflowPanelResizeHandle } from './workflow-layout';\n\nimport { Button } from '@/ds/components/Button';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/ds/components/Collapsible';\nimport { ScrollArea, ScrollAreaViewport } from '@/ds/components/ScrollArea';\nimport { useLinkComponent } from '@/lib/framework';\nimport { cn } from '@/utils/cn';\nimport { toast } from '@/utils/toast';\n\nexport interface WorkflowInformationProps {\n workflowId: string;\n initialRunId?: string;\n requestContext: Record<string, any>;\n runActionsSlot?: (ctx: WorkflowRunActionsContext) => ReactNode;\n canExecute: boolean;\n canDelete: boolean;\n}\n\ntype WorkflowActionProps = Pick<\n ContextType<typeof WorkflowRunContext>,\n | 'createWorkflowRun'\n | 'streamWorkflow'\n | 'resumeWorkflow'\n | 'isStreamingWorkflow'\n | 'isCancellingWorkflowRun'\n | 'cancelWorkflowRun'\n>;\n\ntype InitialWorkflowSidebarProps = WorkflowActionProps & {\n workflowId: string;\n requestContext: Record<string, any>;\n runActionsSlot?: (ctx: WorkflowRunActionsContext) => ReactNode;\n canExecute: boolean;\n workflow?: GetWorkflowResponse;\n isLoading: boolean;\n};\n\ntype RunWorkflowSidebarProps = InitialWorkflowSidebarProps & {\n runId: string;\n observeWorkflowStream?: ContextType<typeof WorkflowRunContext>['observeWorkflowStream'];\n};\n\nconst FLOATING_PANEL_SURFACE = cn(panelSurfaceStyle, 'pointer-events-auto');\n\nfunction FloatingPanel({ className, children }: { className: string; children: ReactNode }) {\n return (\n <div className={cn('relative flex min-h-0 min-w-0 flex-col', className)}>\n {children}\n <WorkflowPanelResizeHandle />\n </div>\n );\n}\n\nfunction NewWorkflowRunButton({ workflowId, onClick }: { workflowId: string; onClick: () => void }) {\n const { Link, paths } = useLinkComponent();\n\n return (\n <Button\n render={<Link href={`${paths.workflowLink(workflowId)}/graph`} />}\n\n variant=\"ghost\"\n size=\"icon-md\"\n tooltip=\"New workflow run\"\n onClick={onClick}\n >\n <Plus />\n </Button>\n );\n}\n\nfunction WorkflowInformationTopSection({\n children,\n workflowId,\n showNewRunButton,\n onNewRun,\n}: {\n children: ReactNode;\n workflowId: string;\n showNewRunButton: boolean;\n onNewRun: () => void;\n}) {\n const { result } = useContext(WorkflowRunContext);\n const [isOpen, setIsOpen] = useState(true);\n return (\n <FloatingPanel className=\"max-h-[75%] flex-initial\">\n <Collapsible\n render={<section />}\n open={isOpen}\n onOpenChange={setIsOpen}\n data-testid=\"workflow-information-top-section\"\n className={cn(FLOATING_PANEL_SURFACE, 'flex min-h-0 min-w-0 flex-col overflow-hidden')}\n >\n <div className=\"flex shrink-0 items-center gap-1 pr-2\">\n <CollapsibleTrigger className=\"flex min-w-0 flex-1 items-center gap-2 px-4 py-3 text-column text-muted-foreground\">\n <ChevronRight aria-hidden className=\"size-4 shrink-0 text-muted-foreground motion-reduce:transition-none\" />\n <span>Workflow run</span>\n {!isOpen && result?.status && <WorkflowRunStatusBadge status={result.status} />}\n </CollapsibleTrigger>\n {showNewRunButton && (\n <NewWorkflowRunButton\n workflowId={workflowId}\n onClick={() => {\n setIsOpen(true);\n onNewRun();\n }}\n />\n )}\n </div>\n <CollapsibleContent keepMounted fill className=\"flex min-h-0 flex-col\">\n <ScrollArea\n data-testid=\"workflow-information-top-scroll-area\"\n className=\"min-h-0 flex-1 border-t border-border\"\n mask={{ top: false, bottom: false }}\n >\n <ScrollAreaViewport className=\"h-full\">{children}</ScrollAreaViewport>\n </ScrollArea>\n </CollapsibleContent>\n </Collapsible>\n </FloatingPanel>\n );\n}\n\nfunction InitialWorkflowSidebar(props: InitialWorkflowSidebarProps) {\n return <WorkflowTrigger {...props} />;\n}\n\nfunction RunWorkflowSidebar({ runId, observeWorkflowStream, ...props }: RunWorkflowSidebarProps) {\n return <WorkflowRunDetail {...props} runId={runId} observeWorkflowStream={observeWorkflowStream} />;\n}\n\nfunction RecentWorkflowRunsSection({\n workflowId,\n activeRunId,\n canDelete,\n}: {\n workflowId: string;\n activeRunId?: string;\n canDelete: boolean;\n}) {\n return (\n <FloatingPanel className=\"mt-auto max-h-[min(35%,280px)] shrink-0\">\n <section className={cn(FLOATING_PANEL_SURFACE, 'flex min-h-0 min-w-0 flex-col overflow-hidden')}>\n <WorkflowRecentRuns workflowId={workflowId} runId={activeRunId} canDelete={canDelete} />\n </section>\n </FloatingPanel>\n );\n}\n\nexport function WorkflowInformation({\n workflowId,\n initialRunId,\n requestContext,\n runActionsSlot,\n canExecute,\n canDelete,\n}: WorkflowInformationProps) {\n const {\n data: workflow,\n isLoading,\n error,\n } = useWorkflow({\n workflowId: workflowId,\n requestContext: requestContext,\n queryOptions: { enabled: Boolean(workflowId) },\n });\n\n const {\n createWorkflowRun,\n streamWorkflow,\n isStreamingWorkflow,\n observeWorkflowStream,\n resumeWorkflow,\n cancelWorkflowRun,\n isCancellingWorkflowRun,\n clearData,\n runId: contextRunId,\n } = useContext(WorkflowRunContext);\n\n const { setSelectedStepId } = useWorkflowSelectedStep();\n\n const activeRunId = initialRunId || contextRunId;\n\n const actionProps = {\n workflowId,\n workflow: workflow ?? undefined,\n isLoading,\n createWorkflowRun,\n streamWorkflow,\n resumeWorkflow,\n isStreamingWorkflow,\n isCancellingWorkflowRun,\n cancelWorkflowRun,\n requestContext,\n runActionsSlot,\n canExecute,\n };\n\n useEffect(() => {\n if (error) {\n const errorMessage = error instanceof Error ? error.message : 'Failed to load workflow';\n toast.error(`Error loading workflow: ${errorMessage}`);\n }\n }, [error]);\n\n if (error) {\n return null;\n }\n\n if (!workflowId) {\n return (\n <div\n data-testid=\"workflow-information-panel\"\n className=\"workflow-information-panel pointer-events-none flex size-full min-h-0 flex-col gap-2 p-2\"\n />\n );\n }\n\n const resetToNewRun = () => {\n clearData();\n setSelectedStepId(null);\n };\n\n return (\n <div\n data-testid=\"workflow-information-panel\"\n className=\"workflow-information-panel pointer-events-none flex size-full min-h-0 flex-col gap-2 p-2\"\n >\n <WorkflowInformationTopSection\n workflowId={workflowId}\n showNewRunButton={Boolean(activeRunId)}\n onNewRun={resetToNewRun}\n >\n {initialRunId ? (\n <RunWorkflowSidebar {...actionProps} runId={initialRunId} observeWorkflowStream={observeWorkflowStream} />\n ) : (\n <InitialWorkflowSidebar {...actionProps} />\n )}\n </WorkflowInformationTopSection>\n\n <RecentWorkflowRunsSection workflowId={workflowId} activeRunId={activeRunId} canDelete={canDelete} />\n </div>\n );\n}\n"],"names":["cn","panelSurfaceStyle","WorkflowPanelResizeHandle","useLinkComponent","jsx","Button","Plus","useContext","WorkflowRunContext","useState","jsxs","Collapsible","CollapsibleTrigger","ChevronRight","WorkflowRunStatusBadge","CollapsibleContent","ScrollArea","ScrollAreaViewport","WorkflowTrigger","WorkflowRunDetail","WorkflowRecentRuns","useWorkflow","useWorkflowSelectedStep","useEffect","toast"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workflow-information.cjs.js","sources":["../../../../src/domains/workflows/components/workflow-information.tsx"],"sourcesContent":["import type { GetWorkflowResponse } from '@mastra/client-js';\nimport { useWorkflow } from '@mastra/react/hooks/workflows';\nimport { Plus } from 'lucide-react';\nimport type { ContextType, ReactNode } from 'react';\nimport { useEffect, useContext, useState } from 'react';\n\nimport { useWorkflowSelectedStep } from '../context/use-workflow-selected-step';\nimport { WorkflowRunContext } from '../context/workflow-run-context';\nimport { WorkflowRunDetail } from '../runs/workflow-run-details';\nimport { WorkflowRecentRuns } from '../runs/workflow-run-list';\nimport { WorkflowRunStatusBadge } from '../workflow/workflow-run-header';\nimport { WorkflowTrigger } from '../workflow/workflow-trigger';\nimport type { WorkflowRunActionsContext } from '../workflow/workflow-trigger';\nimport { panelSurfaceStyle, WorkflowPanelResizeHandle } from './workflow-layout';\n\nimport { Button } from '@/ds/components/Button';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/ds/components/Collapsible';\nimport { DisclosureChevron } from '@/ds/components/DisclosureChevron';\nimport { ScrollArea, ScrollAreaViewport } from '@/ds/components/ScrollArea';\nimport { useLinkComponent } from '@/lib/framework';\nimport { cn } from '@/utils/cn';\nimport { toast } from '@/utils/toast';\n\nexport interface WorkflowInformationProps {\n workflowId: string;\n initialRunId?: string;\n requestContext: Record<string, any>;\n runActionsSlot?: (ctx: WorkflowRunActionsContext) => ReactNode;\n canExecute: boolean;\n canDelete: boolean;\n}\n\ntype WorkflowActionProps = Pick<\n ContextType<typeof WorkflowRunContext>,\n | 'createWorkflowRun'\n | 'streamWorkflow'\n | 'resumeWorkflow'\n | 'isStreamingWorkflow'\n | 'isCancellingWorkflowRun'\n | 'cancelWorkflowRun'\n>;\n\ntype InitialWorkflowSidebarProps = WorkflowActionProps & {\n workflowId: string;\n requestContext: Record<string, any>;\n runActionsSlot?: (ctx: WorkflowRunActionsContext) => ReactNode;\n canExecute: boolean;\n workflow?: GetWorkflowResponse;\n isLoading: boolean;\n};\n\ntype RunWorkflowSidebarProps = InitialWorkflowSidebarProps & {\n runId: string;\n observeWorkflowStream?: ContextType<typeof WorkflowRunContext>['observeWorkflowStream'];\n};\n\nconst FLOATING_PANEL_SURFACE = cn(panelSurfaceStyle, 'pointer-events-auto');\n\nfunction FloatingPanel({ className, children }: { className: string; children: ReactNode }) {\n return (\n <div className={cn('relative flex min-h-0 min-w-0 flex-col', className)}>\n {children}\n <WorkflowPanelResizeHandle />\n </div>\n );\n}\n\nfunction NewWorkflowRunButton({ workflowId, onClick }: { workflowId: string; onClick: () => void }) {\n const { Link, paths } = useLinkComponent();\n\n return (\n <Button\n render={<Link href={`${paths.workflowLink(workflowId)}/graph`} />}\n\n variant=\"ghost\"\n size=\"icon-md\"\n tooltip=\"New workflow run\"\n onClick={onClick}\n >\n <Plus />\n </Button>\n );\n}\n\nfunction WorkflowInformationTopSection({\n children,\n workflowId,\n showNewRunButton,\n onNewRun,\n}: {\n children: ReactNode;\n workflowId: string;\n showNewRunButton: boolean;\n onNewRun: () => void;\n}) {\n const { result } = useContext(WorkflowRunContext);\n const [isOpen, setIsOpen] = useState(true);\n return (\n <FloatingPanel className=\"max-h-[75%] flex-initial\">\n <Collapsible\n render={<section />}\n open={isOpen}\n onOpenChange={setIsOpen}\n data-testid=\"workflow-information-top-section\"\n className={cn(FLOATING_PANEL_SURFACE, 'flex min-h-0 min-w-0 flex-col overflow-hidden')}\n >\n <div className=\"flex shrink-0 items-center gap-1 pr-2\">\n <CollapsibleTrigger className=\"flex min-w-0 flex-1 items-center gap-2 px-4 py-3 text-column text-muted-foreground\">\n <DisclosureChevron direction=\"right\" className=\"size-4 text-muted-foreground\" />\n <span>Workflow run</span>\n {!isOpen && result?.status && <WorkflowRunStatusBadge status={result.status} />}\n </CollapsibleTrigger>\n {showNewRunButton && (\n <NewWorkflowRunButton\n workflowId={workflowId}\n onClick={() => {\n setIsOpen(true);\n onNewRun();\n }}\n />\n )}\n </div>\n <CollapsibleContent keepMounted fill className=\"flex min-h-0 flex-col\">\n <ScrollArea\n data-testid=\"workflow-information-top-scroll-area\"\n className=\"min-h-0 flex-1 border-t border-border\"\n mask={{ top: false, bottom: false }}\n >\n <ScrollAreaViewport className=\"h-full\">{children}</ScrollAreaViewport>\n </ScrollArea>\n </CollapsibleContent>\n </Collapsible>\n </FloatingPanel>\n );\n}\n\nfunction InitialWorkflowSidebar(props: InitialWorkflowSidebarProps) {\n return <WorkflowTrigger {...props} />;\n}\n\nfunction RunWorkflowSidebar({ runId, observeWorkflowStream, ...props }: RunWorkflowSidebarProps) {\n return <WorkflowRunDetail {...props} runId={runId} observeWorkflowStream={observeWorkflowStream} />;\n}\n\nfunction RecentWorkflowRunsSection({\n workflowId,\n activeRunId,\n canDelete,\n}: {\n workflowId: string;\n activeRunId?: string;\n canDelete: boolean;\n}) {\n return (\n <FloatingPanel className=\"mt-auto max-h-[min(35%,280px)] shrink-0\">\n <section className={cn(FLOATING_PANEL_SURFACE, 'flex min-h-0 min-w-0 flex-col overflow-hidden')}>\n <WorkflowRecentRuns workflowId={workflowId} runId={activeRunId} canDelete={canDelete} />\n </section>\n </FloatingPanel>\n );\n}\n\nexport function WorkflowInformation({\n workflowId,\n initialRunId,\n requestContext,\n runActionsSlot,\n canExecute,\n canDelete,\n}: WorkflowInformationProps) {\n const {\n data: workflow,\n isLoading,\n error,\n } = useWorkflow({\n workflowId: workflowId,\n requestContext: requestContext,\n queryOptions: { enabled: Boolean(workflowId) },\n });\n\n const {\n createWorkflowRun,\n streamWorkflow,\n isStreamingWorkflow,\n observeWorkflowStream,\n resumeWorkflow,\n cancelWorkflowRun,\n isCancellingWorkflowRun,\n clearData,\n runId: contextRunId,\n } = useContext(WorkflowRunContext);\n\n const { setSelectedStepId } = useWorkflowSelectedStep();\n\n const activeRunId = initialRunId || contextRunId;\n\n const actionProps = {\n workflowId,\n workflow: workflow ?? undefined,\n isLoading,\n createWorkflowRun,\n streamWorkflow,\n resumeWorkflow,\n isStreamingWorkflow,\n isCancellingWorkflowRun,\n cancelWorkflowRun,\n requestContext,\n runActionsSlot,\n canExecute,\n };\n\n useEffect(() => {\n if (error) {\n const errorMessage = error instanceof Error ? error.message : 'Failed to load workflow';\n toast.error(`Error loading workflow: ${errorMessage}`);\n }\n }, [error]);\n\n if (error) {\n return null;\n }\n\n if (!workflowId) {\n return (\n <div\n data-testid=\"workflow-information-panel\"\n className=\"workflow-information-panel pointer-events-none flex size-full min-h-0 flex-col gap-2 p-2\"\n />\n );\n }\n\n const resetToNewRun = () => {\n clearData();\n setSelectedStepId(null);\n };\n\n return (\n <div\n data-testid=\"workflow-information-panel\"\n className=\"workflow-information-panel pointer-events-none flex size-full min-h-0 flex-col gap-2 p-2\"\n >\n <WorkflowInformationTopSection\n workflowId={workflowId}\n showNewRunButton={Boolean(activeRunId)}\n onNewRun={resetToNewRun}\n >\n {initialRunId ? (\n <RunWorkflowSidebar {...actionProps} runId={initialRunId} observeWorkflowStream={observeWorkflowStream} />\n ) : (\n <InitialWorkflowSidebar {...actionProps} />\n )}\n </WorkflowInformationTopSection>\n\n <RecentWorkflowRunsSection workflowId={workflowId} activeRunId={activeRunId} canDelete={canDelete} />\n </div>\n );\n}\n"],"names":["cn","panelSurfaceStyle","WorkflowPanelResizeHandle","useLinkComponent","jsx","Button","Plus","useContext","WorkflowRunContext","useState","jsxs","Collapsible","CollapsibleTrigger","DisclosureChevron","WorkflowRunStatusBadge","CollapsibleContent","ScrollArea","ScrollAreaViewport","WorkflowTrigger","WorkflowRunDetail","WorkflowRecentRuns","useWorkflow","useWorkflowSelectedStep","useEffect","toast"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import { useWorkflow } from '@mastra/react/hooks/workflows';
|
|
3
|
-
import {
|
|
3
|
+
import { Plus } from 'lucide-react';
|
|
4
4
|
import { useContext, useEffect, useState } from 'react';
|
|
5
5
|
import { useWorkflowSelectedStep } from '../context/use-workflow-selected-step.es.js';
|
|
6
6
|
import { WorkflowRunContext } from '../context/workflow-run-context.es.js';
|
|
@@ -10,7 +10,8 @@ import { WorkflowRunStatusBadge } from '../workflow/workflow-run-header.es.js';
|
|
|
10
10
|
import { WorkflowTrigger } from '../workflow/workflow-trigger.es.js';
|
|
11
11
|
import { panelSurfaceStyle, WorkflowPanelResizeHandle } from './workflow-layout.es.js';
|
|
12
12
|
import { B as Button } from '../../../Button-MHlMpc97.js';
|
|
13
|
-
import { C as Collapsible, b as CollapsibleTrigger, a as CollapsibleContent } from '../../../collapsible-
|
|
13
|
+
import { C as Collapsible, b as CollapsibleTrigger, a as CollapsibleContent } from '../../../collapsible-DglEffBF.js';
|
|
14
|
+
import { D as DisclosureChevron } from '../../../disclosure-chevron-BWZ8Alz1.js';
|
|
14
15
|
import { S as ScrollArea, a as ScrollAreaViewport } from '../../../scroll-area-BywIlj3F.js';
|
|
15
16
|
import { useLinkComponent } from '../../../lib/framework.es.js';
|
|
16
17
|
import { c as cn } from '../../../cn-coERSHz5.js';
|
|
@@ -56,7 +57,7 @@ function WorkflowInformationTopSection({
|
|
|
56
57
|
children: [
|
|
57
58
|
/* @__PURE__ */ jsxs("div", { className: "flex shrink-0 items-center gap-1 pr-2", children: [
|
|
58
59
|
/* @__PURE__ */ jsxs(CollapsibleTrigger, { className: "flex min-w-0 flex-1 items-center gap-2 px-4 py-3 text-column text-muted-foreground", children: [
|
|
59
|
-
/* @__PURE__ */ jsx(
|
|
60
|
+
/* @__PURE__ */ jsx(DisclosureChevron, { direction: "right", className: "size-4 text-muted-foreground" }),
|
|
60
61
|
/* @__PURE__ */ jsx("span", { children: "Workflow run" }),
|
|
61
62
|
!isOpen && result?.status && /* @__PURE__ */ jsx(WorkflowRunStatusBadge, { status: result.status })
|
|
62
63
|
] }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-information.es.js","sources":["../../../../src/domains/workflows/components/workflow-information.tsx"],"sourcesContent":["import type { GetWorkflowResponse } from '@mastra/client-js';\nimport { useWorkflow } from '@mastra/react/hooks/workflows';\nimport { ChevronRight, Plus } from 'lucide-react';\nimport type { ContextType, ReactNode } from 'react';\nimport { useEffect, useContext, useState } from 'react';\n\nimport { useWorkflowSelectedStep } from '../context/use-workflow-selected-step';\nimport { WorkflowRunContext } from '../context/workflow-run-context';\nimport { WorkflowRunDetail } from '../runs/workflow-run-details';\nimport { WorkflowRecentRuns } from '../runs/workflow-run-list';\nimport { WorkflowRunStatusBadge } from '../workflow/workflow-run-header';\nimport { WorkflowTrigger } from '../workflow/workflow-trigger';\nimport type { WorkflowRunActionsContext } from '../workflow/workflow-trigger';\nimport { panelSurfaceStyle, WorkflowPanelResizeHandle } from './workflow-layout';\n\nimport { Button } from '@/ds/components/Button';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/ds/components/Collapsible';\nimport { ScrollArea, ScrollAreaViewport } from '@/ds/components/ScrollArea';\nimport { useLinkComponent } from '@/lib/framework';\nimport { cn } from '@/utils/cn';\nimport { toast } from '@/utils/toast';\n\nexport interface WorkflowInformationProps {\n workflowId: string;\n initialRunId?: string;\n requestContext: Record<string, any>;\n runActionsSlot?: (ctx: WorkflowRunActionsContext) => ReactNode;\n canExecute: boolean;\n canDelete: boolean;\n}\n\ntype WorkflowActionProps = Pick<\n ContextType<typeof WorkflowRunContext>,\n | 'createWorkflowRun'\n | 'streamWorkflow'\n | 'resumeWorkflow'\n | 'isStreamingWorkflow'\n | 'isCancellingWorkflowRun'\n | 'cancelWorkflowRun'\n>;\n\ntype InitialWorkflowSidebarProps = WorkflowActionProps & {\n workflowId: string;\n requestContext: Record<string, any>;\n runActionsSlot?: (ctx: WorkflowRunActionsContext) => ReactNode;\n canExecute: boolean;\n workflow?: GetWorkflowResponse;\n isLoading: boolean;\n};\n\ntype RunWorkflowSidebarProps = InitialWorkflowSidebarProps & {\n runId: string;\n observeWorkflowStream?: ContextType<typeof WorkflowRunContext>['observeWorkflowStream'];\n};\n\nconst FLOATING_PANEL_SURFACE = cn(panelSurfaceStyle, 'pointer-events-auto');\n\nfunction FloatingPanel({ className, children }: { className: string; children: ReactNode }) {\n return (\n <div className={cn('relative flex min-h-0 min-w-0 flex-col', className)}>\n {children}\n <WorkflowPanelResizeHandle />\n </div>\n );\n}\n\nfunction NewWorkflowRunButton({ workflowId, onClick }: { workflowId: string; onClick: () => void }) {\n const { Link, paths } = useLinkComponent();\n\n return (\n <Button\n render={<Link href={`${paths.workflowLink(workflowId)}/graph`} />}\n\n variant=\"ghost\"\n size=\"icon-md\"\n tooltip=\"New workflow run\"\n onClick={onClick}\n >\n <Plus />\n </Button>\n );\n}\n\nfunction WorkflowInformationTopSection({\n children,\n workflowId,\n showNewRunButton,\n onNewRun,\n}: {\n children: ReactNode;\n workflowId: string;\n showNewRunButton: boolean;\n onNewRun: () => void;\n}) {\n const { result } = useContext(WorkflowRunContext);\n const [isOpen, setIsOpen] = useState(true);\n return (\n <FloatingPanel className=\"max-h-[75%] flex-initial\">\n <Collapsible\n render={<section />}\n open={isOpen}\n onOpenChange={setIsOpen}\n data-testid=\"workflow-information-top-section\"\n className={cn(FLOATING_PANEL_SURFACE, 'flex min-h-0 min-w-0 flex-col overflow-hidden')}\n >\n <div className=\"flex shrink-0 items-center gap-1 pr-2\">\n <CollapsibleTrigger className=\"flex min-w-0 flex-1 items-center gap-2 px-4 py-3 text-column text-muted-foreground\">\n <ChevronRight aria-hidden className=\"size-4 shrink-0 text-muted-foreground motion-reduce:transition-none\" />\n <span>Workflow run</span>\n {!isOpen && result?.status && <WorkflowRunStatusBadge status={result.status} />}\n </CollapsibleTrigger>\n {showNewRunButton && (\n <NewWorkflowRunButton\n workflowId={workflowId}\n onClick={() => {\n setIsOpen(true);\n onNewRun();\n }}\n />\n )}\n </div>\n <CollapsibleContent keepMounted fill className=\"flex min-h-0 flex-col\">\n <ScrollArea\n data-testid=\"workflow-information-top-scroll-area\"\n className=\"min-h-0 flex-1 border-t border-border\"\n mask={{ top: false, bottom: false }}\n >\n <ScrollAreaViewport className=\"h-full\">{children}</ScrollAreaViewport>\n </ScrollArea>\n </CollapsibleContent>\n </Collapsible>\n </FloatingPanel>\n );\n}\n\nfunction InitialWorkflowSidebar(props: InitialWorkflowSidebarProps) {\n return <WorkflowTrigger {...props} />;\n}\n\nfunction RunWorkflowSidebar({ runId, observeWorkflowStream, ...props }: RunWorkflowSidebarProps) {\n return <WorkflowRunDetail {...props} runId={runId} observeWorkflowStream={observeWorkflowStream} />;\n}\n\nfunction RecentWorkflowRunsSection({\n workflowId,\n activeRunId,\n canDelete,\n}: {\n workflowId: string;\n activeRunId?: string;\n canDelete: boolean;\n}) {\n return (\n <FloatingPanel className=\"mt-auto max-h-[min(35%,280px)] shrink-0\">\n <section className={cn(FLOATING_PANEL_SURFACE, 'flex min-h-0 min-w-0 flex-col overflow-hidden')}>\n <WorkflowRecentRuns workflowId={workflowId} runId={activeRunId} canDelete={canDelete} />\n </section>\n </FloatingPanel>\n );\n}\n\nexport function WorkflowInformation({\n workflowId,\n initialRunId,\n requestContext,\n runActionsSlot,\n canExecute,\n canDelete,\n}: WorkflowInformationProps) {\n const {\n data: workflow,\n isLoading,\n error,\n } = useWorkflow({\n workflowId: workflowId,\n requestContext: requestContext,\n queryOptions: { enabled: Boolean(workflowId) },\n });\n\n const {\n createWorkflowRun,\n streamWorkflow,\n isStreamingWorkflow,\n observeWorkflowStream,\n resumeWorkflow,\n cancelWorkflowRun,\n isCancellingWorkflowRun,\n clearData,\n runId: contextRunId,\n } = useContext(WorkflowRunContext);\n\n const { setSelectedStepId } = useWorkflowSelectedStep();\n\n const activeRunId = initialRunId || contextRunId;\n\n const actionProps = {\n workflowId,\n workflow: workflow ?? undefined,\n isLoading,\n createWorkflowRun,\n streamWorkflow,\n resumeWorkflow,\n isStreamingWorkflow,\n isCancellingWorkflowRun,\n cancelWorkflowRun,\n requestContext,\n runActionsSlot,\n canExecute,\n };\n\n useEffect(() => {\n if (error) {\n const errorMessage = error instanceof Error ? error.message : 'Failed to load workflow';\n toast.error(`Error loading workflow: ${errorMessage}`);\n }\n }, [error]);\n\n if (error) {\n return null;\n }\n\n if (!workflowId) {\n return (\n <div\n data-testid=\"workflow-information-panel\"\n className=\"workflow-information-panel pointer-events-none flex size-full min-h-0 flex-col gap-2 p-2\"\n />\n );\n }\n\n const resetToNewRun = () => {\n clearData();\n setSelectedStepId(null);\n };\n\n return (\n <div\n data-testid=\"workflow-information-panel\"\n className=\"workflow-information-panel pointer-events-none flex size-full min-h-0 flex-col gap-2 p-2\"\n >\n <WorkflowInformationTopSection\n workflowId={workflowId}\n showNewRunButton={Boolean(activeRunId)}\n onNewRun={resetToNewRun}\n >\n {initialRunId ? (\n <RunWorkflowSidebar {...actionProps} runId={initialRunId} observeWorkflowStream={observeWorkflowStream} />\n ) : (\n <InitialWorkflowSidebar {...actionProps} />\n )}\n </WorkflowInformationTopSection>\n\n <RecentWorkflowRunsSection workflowId={workflowId} activeRunId={activeRunId} canDelete={canDelete} />\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workflow-information.es.js","sources":["../../../../src/domains/workflows/components/workflow-information.tsx"],"sourcesContent":["import type { GetWorkflowResponse } from '@mastra/client-js';\nimport { useWorkflow } from '@mastra/react/hooks/workflows';\nimport { Plus } from 'lucide-react';\nimport type { ContextType, ReactNode } from 'react';\nimport { useEffect, useContext, useState } from 'react';\n\nimport { useWorkflowSelectedStep } from '../context/use-workflow-selected-step';\nimport { WorkflowRunContext } from '../context/workflow-run-context';\nimport { WorkflowRunDetail } from '../runs/workflow-run-details';\nimport { WorkflowRecentRuns } from '../runs/workflow-run-list';\nimport { WorkflowRunStatusBadge } from '../workflow/workflow-run-header';\nimport { WorkflowTrigger } from '../workflow/workflow-trigger';\nimport type { WorkflowRunActionsContext } from '../workflow/workflow-trigger';\nimport { panelSurfaceStyle, WorkflowPanelResizeHandle } from './workflow-layout';\n\nimport { Button } from '@/ds/components/Button';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/ds/components/Collapsible';\nimport { DisclosureChevron } from '@/ds/components/DisclosureChevron';\nimport { ScrollArea, ScrollAreaViewport } from '@/ds/components/ScrollArea';\nimport { useLinkComponent } from '@/lib/framework';\nimport { cn } from '@/utils/cn';\nimport { toast } from '@/utils/toast';\n\nexport interface WorkflowInformationProps {\n workflowId: string;\n initialRunId?: string;\n requestContext: Record<string, any>;\n runActionsSlot?: (ctx: WorkflowRunActionsContext) => ReactNode;\n canExecute: boolean;\n canDelete: boolean;\n}\n\ntype WorkflowActionProps = Pick<\n ContextType<typeof WorkflowRunContext>,\n | 'createWorkflowRun'\n | 'streamWorkflow'\n | 'resumeWorkflow'\n | 'isStreamingWorkflow'\n | 'isCancellingWorkflowRun'\n | 'cancelWorkflowRun'\n>;\n\ntype InitialWorkflowSidebarProps = WorkflowActionProps & {\n workflowId: string;\n requestContext: Record<string, any>;\n runActionsSlot?: (ctx: WorkflowRunActionsContext) => ReactNode;\n canExecute: boolean;\n workflow?: GetWorkflowResponse;\n isLoading: boolean;\n};\n\ntype RunWorkflowSidebarProps = InitialWorkflowSidebarProps & {\n runId: string;\n observeWorkflowStream?: ContextType<typeof WorkflowRunContext>['observeWorkflowStream'];\n};\n\nconst FLOATING_PANEL_SURFACE = cn(panelSurfaceStyle, 'pointer-events-auto');\n\nfunction FloatingPanel({ className, children }: { className: string; children: ReactNode }) {\n return (\n <div className={cn('relative flex min-h-0 min-w-0 flex-col', className)}>\n {children}\n <WorkflowPanelResizeHandle />\n </div>\n );\n}\n\nfunction NewWorkflowRunButton({ workflowId, onClick }: { workflowId: string; onClick: () => void }) {\n const { Link, paths } = useLinkComponent();\n\n return (\n <Button\n render={<Link href={`${paths.workflowLink(workflowId)}/graph`} />}\n\n variant=\"ghost\"\n size=\"icon-md\"\n tooltip=\"New workflow run\"\n onClick={onClick}\n >\n <Plus />\n </Button>\n );\n}\n\nfunction WorkflowInformationTopSection({\n children,\n workflowId,\n showNewRunButton,\n onNewRun,\n}: {\n children: ReactNode;\n workflowId: string;\n showNewRunButton: boolean;\n onNewRun: () => void;\n}) {\n const { result } = useContext(WorkflowRunContext);\n const [isOpen, setIsOpen] = useState(true);\n return (\n <FloatingPanel className=\"max-h-[75%] flex-initial\">\n <Collapsible\n render={<section />}\n open={isOpen}\n onOpenChange={setIsOpen}\n data-testid=\"workflow-information-top-section\"\n className={cn(FLOATING_PANEL_SURFACE, 'flex min-h-0 min-w-0 flex-col overflow-hidden')}\n >\n <div className=\"flex shrink-0 items-center gap-1 pr-2\">\n <CollapsibleTrigger className=\"flex min-w-0 flex-1 items-center gap-2 px-4 py-3 text-column text-muted-foreground\">\n <DisclosureChevron direction=\"right\" className=\"size-4 text-muted-foreground\" />\n <span>Workflow run</span>\n {!isOpen && result?.status && <WorkflowRunStatusBadge status={result.status} />}\n </CollapsibleTrigger>\n {showNewRunButton && (\n <NewWorkflowRunButton\n workflowId={workflowId}\n onClick={() => {\n setIsOpen(true);\n onNewRun();\n }}\n />\n )}\n </div>\n <CollapsibleContent keepMounted fill className=\"flex min-h-0 flex-col\">\n <ScrollArea\n data-testid=\"workflow-information-top-scroll-area\"\n className=\"min-h-0 flex-1 border-t border-border\"\n mask={{ top: false, bottom: false }}\n >\n <ScrollAreaViewport className=\"h-full\">{children}</ScrollAreaViewport>\n </ScrollArea>\n </CollapsibleContent>\n </Collapsible>\n </FloatingPanel>\n );\n}\n\nfunction InitialWorkflowSidebar(props: InitialWorkflowSidebarProps) {\n return <WorkflowTrigger {...props} />;\n}\n\nfunction RunWorkflowSidebar({ runId, observeWorkflowStream, ...props }: RunWorkflowSidebarProps) {\n return <WorkflowRunDetail {...props} runId={runId} observeWorkflowStream={observeWorkflowStream} />;\n}\n\nfunction RecentWorkflowRunsSection({\n workflowId,\n activeRunId,\n canDelete,\n}: {\n workflowId: string;\n activeRunId?: string;\n canDelete: boolean;\n}) {\n return (\n <FloatingPanel className=\"mt-auto max-h-[min(35%,280px)] shrink-0\">\n <section className={cn(FLOATING_PANEL_SURFACE, 'flex min-h-0 min-w-0 flex-col overflow-hidden')}>\n <WorkflowRecentRuns workflowId={workflowId} runId={activeRunId} canDelete={canDelete} />\n </section>\n </FloatingPanel>\n );\n}\n\nexport function WorkflowInformation({\n workflowId,\n initialRunId,\n requestContext,\n runActionsSlot,\n canExecute,\n canDelete,\n}: WorkflowInformationProps) {\n const {\n data: workflow,\n isLoading,\n error,\n } = useWorkflow({\n workflowId: workflowId,\n requestContext: requestContext,\n queryOptions: { enabled: Boolean(workflowId) },\n });\n\n const {\n createWorkflowRun,\n streamWorkflow,\n isStreamingWorkflow,\n observeWorkflowStream,\n resumeWorkflow,\n cancelWorkflowRun,\n isCancellingWorkflowRun,\n clearData,\n runId: contextRunId,\n } = useContext(WorkflowRunContext);\n\n const { setSelectedStepId } = useWorkflowSelectedStep();\n\n const activeRunId = initialRunId || contextRunId;\n\n const actionProps = {\n workflowId,\n workflow: workflow ?? undefined,\n isLoading,\n createWorkflowRun,\n streamWorkflow,\n resumeWorkflow,\n isStreamingWorkflow,\n isCancellingWorkflowRun,\n cancelWorkflowRun,\n requestContext,\n runActionsSlot,\n canExecute,\n };\n\n useEffect(() => {\n if (error) {\n const errorMessage = error instanceof Error ? error.message : 'Failed to load workflow';\n toast.error(`Error loading workflow: ${errorMessage}`);\n }\n }, [error]);\n\n if (error) {\n return null;\n }\n\n if (!workflowId) {\n return (\n <div\n data-testid=\"workflow-information-panel\"\n className=\"workflow-information-panel pointer-events-none flex size-full min-h-0 flex-col gap-2 p-2\"\n />\n );\n }\n\n const resetToNewRun = () => {\n clearData();\n setSelectedStepId(null);\n };\n\n return (\n <div\n data-testid=\"workflow-information-panel\"\n className=\"workflow-information-panel pointer-events-none flex size-full min-h-0 flex-col gap-2 p-2\"\n >\n <WorkflowInformationTopSection\n workflowId={workflowId}\n showNewRunButton={Boolean(activeRunId)}\n onNewRun={resetToNewRun}\n >\n {initialRunId ? (\n <RunWorkflowSidebar {...actionProps} runId={initialRunId} observeWorkflowStream={observeWorkflowStream} />\n ) : (\n <InitialWorkflowSidebar {...actionProps} />\n )}\n </WorkflowInformationTopSection>\n\n <RecentWorkflowRunsSection workflowId={workflowId} activeRunId={activeRunId} canDelete={canDelete} />\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -7,9 +7,9 @@ const react = require('@xyflow/react');
|
|
|
7
7
|
const lucideReact = require('lucide-react');
|
|
8
8
|
const domains_workflows_context_workflowStepDetailContext = require('../context/workflow-step-detail-context.cjs.js');
|
|
9
9
|
const domains_workflows_workflow_data_workflowDataInspector = require('../workflow/data/workflow-data-inspector.cjs.js');
|
|
10
|
-
const domains_workflows_workflow_workflowNestedGraph = require('../../../use-workflow-graph-runtime-
|
|
10
|
+
const domains_workflows_workflow_workflowNestedGraph = require('../../../use-workflow-graph-runtime-B_ihs9Ev.cjs');
|
|
11
11
|
const Txt = require('../../../Txt-DXjXpX9r.cjs');
|
|
12
|
-
const workflowConditionCard = require('../../../workflow-condition-card-
|
|
12
|
+
const workflowConditionCard = require('../../../workflow-condition-card-BF0PmJDV.cjs');
|
|
13
13
|
const workflowCodeDialogContent = require('../../../workflow-code-dialog-content-BP55qUnT.cjs');
|
|
14
14
|
const icons_WorkflowIcon = require('../../../icons/WorkflowIcon.cjs.js');
|
|
15
15
|
|
|
@@ -3,9 +3,9 @@ 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-OyDXm_6V.js';
|
|
7
7
|
import { T as Txt } from '../../../Txt-BuzYj7Vy.js';
|
|
8
|
-
import { B as BADGE_COLORS } from '../../../workflow-condition-card-
|
|
8
|
+
import { B as BADGE_COLORS } from '../../../workflow-condition-card-BVnfl6Zi.js';
|
|
9
9
|
import { W as WorkflowCodeContent } from '../../../workflow-code-dialog-content-CmnuHQzF.js';
|
|
10
10
|
import { WorkflowIcon } from '../../../icons/WorkflowIcon.es.js';
|
|
11
11
|
|
|
@@ -9,9 +9,10 @@ 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-CqVYt2aN.cjs');
|
|
13
|
+
const dataListSkeleton = require('../../../../data-list-skeleton-BMGppDAy.cjs');
|
|
14
14
|
const useDataListKeyboard = require('../../../../use-data-list-keyboard-DF3tLe10.cjs');
|
|
15
|
+
const disclosureChevron = require('../../../../disclosure-chevron-B_gmYFR5.cjs');
|
|
15
16
|
const tooltip = require('../../../../tooltip-C4txPRSa.cjs');
|
|
16
17
|
const Txt = require('../../../../Txt-DXjXpX9r.cjs');
|
|
17
18
|
const primitives_transitions = require('../../../../primitives/transitions.cjs.js');
|
|
@@ -51,7 +52,7 @@ function TreeToggleCell({
|
|
|
51
52
|
event.stopPropagation();
|
|
52
53
|
onToggle();
|
|
53
54
|
},
|
|
54
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
55
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(disclosureChevron.DisclosureChevron, { direction: "right", className: "size-4" })
|
|
55
56
|
}
|
|
56
57
|
) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "size-5 shrink-0", "aria-hidden": true }) });
|
|
57
58
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflows-list.cjs.js","sources":["../../../../../src/domains/workflows/components/workflows-list/workflows-list.tsx"],"sourcesContent":["import type { GetWorkflowResponse } from '@mastra/client-js';\nimport { useWorkflowsRunCounts } from '@mastra/react/hooks/workflows';\nimport { ChevronRightIcon, PauseIcon, WorkflowIcon } from 'lucide-react';\nimport { useMemo, useRef, useState } from 'react';\nimport type { SyntheticEvent } from 'react';\nimport { sortWorkflows } from './workflows-sort';\nimport type { WorkflowsSort, WorkflowsSortKey } from './workflows-sort';\nimport { flattenWorkflowTree } from '@/domains/workflows/utils/nested-workflows';\nimport type { WorkflowTreeRow } from '@/domains/workflows/utils/nested-workflows';\nimport { Badge } from '@/ds/components/Badge';\nimport type { DataListSort } from '@/ds/components/DataList';\nimport { DataList, DataListSkeleton, useDataListKeyboard } from '@/ds/components/DataList';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { Txt } from '@/ds/components/Txt';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { quietTextHover } from '@/ds/primitives/typography';\nimport { useLinkComponent } from '@/lib/framework';\nimport { cn } from '@/utils/cn';\nimport { truncateString } from '@/utils/truncate-string';\n\nexport interface WorkflowsListProps {\n workflows: Record<string, GetWorkflowResponse>;\n isLoading: boolean;\n search?: string;\n sort?: WorkflowsSort;\n onSortChange?: (direction: DataListSort, key: WorkflowsSortKey) => void;\n requestContext?: Record<string, any>;\n}\n\n// Leading fixed expander column (outside the row link), then Name /\n// Description / Running / Pending input / Steps. The Name column width is\n// FIXED so tree indentation grows inside it (names truncate) — expanding\n// nested levels can never widen columns and shift the table.\nconst GRID_COLUMNS = 'auto 24rem minmax(0, 1fr) auto auto auto';\n\n/**\n * Tree connector for nested rows: one vertical guide per ancestor level that\n * has more siblings below, then a ├ stub (└ for the last child) linking the\n * row to its parent. Overshooting vertical margins let the lines span the\n * full row height; the cell's overflow clipping trims the excess.\n */\nfunction TreeConnector({ guides, isLastChild }: { guides: boolean[]; isLastChild: boolean }) {\n return (\n <span aria-hidden className=\"-my-6 flex shrink-0 self-stretch\">\n {guides.map((show, index) => (\n <span key={index} className={cn('w-6', show && 'border-l border-border')} />\n ))}\n <span className=\"relative w-6\">\n <span className={cn('absolute top-0 left-0 border-l border-border', isLastChild ? 'h-1/2' : 'h-full')} />\n <span className=\"absolute top-1/2 left-0 w-3.5 border-b border-border\" />\n </span>\n </span>\n );\n}\n\n/**\n * Fixed-width expander cell at the start of every row. Only the button lives\n * here — OUTSIDE the row link, so the toggle is never an interactive element\n * nested inside the anchor — while the tree lines stay in the Name cell. The\n * cell's content is identical in size on every row, so expanding a deep tree\n * never widens the column and shifts the table.\n */\nfunction TreeToggleCell({\n row,\n isExpanded,\n onToggle,\n}: {\n row: WorkflowTreeRow;\n isExpanded: boolean;\n onToggle: () => void;\n}) {\n const hasToggle = row.kind === 'workflow' && row.nestedIds.length > 0;\n const workflowName = row.kind === 'workflow' ? row.workflow.name : row.stepId;\n\n return (\n <div className=\"flex items-center pl-5\">\n {hasToggle ? (\n <button\n type=\"button\"\n aria-expanded={isExpanded}\n aria-label={`${isExpanded ? 'Collapse' : 'Expand'} nested workflows of ${workflowName}`}\n className={cn(\n quietTextHover,\n \"relative grid size-5 shrink-0 place-items-center before:absolute before:-inset-1.5 before:content-['']\",\n )}\n onClick={event => {\n event.stopPropagation();\n onToggle();\n }}\n >\n <ChevronRightIcon className={cn('size-4 transition-transform', isExpanded && 'rotate-90')} />\n </button>\n ) : (\n <span className=\"size-5 shrink-0\" aria-hidden />\n )}\n </div>\n );\n}\n\nconst stopPropagation = (event: SyntheticEvent) => event.stopPropagation();\n\n/** Sortable header when the parent owns sort state; plain header otherwise. */\nfunction SortHeader({\n sortKey,\n sort,\n onSortChange,\n children,\n}: Pick<WorkflowsListProps, 'sort' | 'onSortChange'> & { sortKey: WorkflowsSortKey; children: string }) {\n if (!onSortChange) return <DataList.TopCell>{children}</DataList.TopCell>;\n return (\n <DataList.SortableTopCell\n sortKey={sortKey}\n sort={sort?.key === sortKey ? sort.direction : undefined}\n onSortChange={direction => onSortChange(direction, sortKey)}\n >\n {children}\n </DataList.SortableTopCell>\n );\n}\n\n/**\n * Wrapper owns focus/roving and activation so the expander gutter also\n * navigates; the link and the toggle stop propagation to avoid double\n * activation.\n */\nfunction WorkflowRow({\n row,\n isExpanded,\n onToggle,\n runCount,\n rowProps,\n}: {\n row: Extract<WorkflowTreeRow, { kind: 'workflow' }>;\n isExpanded: boolean;\n onToggle: () => void;\n runCount: { running?: number; suspended?: number } | undefined;\n rowProps: ReturnType<ReturnType<typeof useDataListKeyboard>['getRowProps']>;\n}) {\n const { paths, Link } = useLinkComponent();\n const linkRef = useRef<HTMLAnchorElement>(null);\n const { workflow: wf, nestedIds } = row;\n const name = truncateString(wf.name, 50);\n const description = truncateString(wf.description ?? '', 200);\n const stepsCount = Object.keys(wf.steps ?? {}).length;\n const runningCount = runCount?.running ?? 0;\n const suspendedCount = runCount?.suspended ?? 0;\n const hasNested = nestedIds.length > 0;\n\n return (\n <DataList.RowWrapper {...rowProps} onSelectRow={() => linkRef.current?.click()}>\n <TreeToggleCell row={row} isExpanded={isExpanded} onToggle={onToggle} />\n <DataList.RowLink\n ref={linkRef}\n colStart={2}\n to={paths.workflowLink(wf.id)}\n LinkComponent={Link}\n tabIndex={-1}\n onClick={stopPropagation}\n >\n <DataList.NameCell>\n <span className=\"flex items-center gap-1.5\">\n {row.depth > 0 ? <TreeConnector guides={row.guides} isLastChild={row.isLastChild} /> : null}\n <span className=\"truncate\">{name}</span>\n {wf.origin === 'dynamic' ? (\n <Badge size=\"xs\" variant=\"blue\" title=\"Registered via the dynamic-workflows API\">\n Dynamic\n </Badge>\n ) : null}\n {hasNested ? (\n <Txt\n as=\"span\"\n variant=\"body-sm\"\n tone=\"muted\"\n title={`Nested workflows: ${nestedIds.join(', ')}`}\n className=\"inline-flex shrink-0 items-center gap-1\"\n >\n <WorkflowIcon aria-hidden className=\"size-3.5\" />\n {nestedIds.length}\n </Txt>\n ) : null}\n </span>\n </DataList.NameCell>\n <DataList.DescriptionCell>{description}</DataList.DescriptionCell>\n <DataList.TextCell className=\"text-center\">\n {runningCount > 0 ? (\n <span\n className=\"inline-flex items-center gap-1.5 text-info-indicator\"\n aria-label={`${runningCount} run${runningCount === 1 ? '' : 's'} in progress`}\n >\n <span aria-hidden className=\"size-2 rounded-full bg-info-indicator motion-safe:animate-pulse\" />\n {runningCount}\n </span>\n ) : (\n ''\n )}\n </DataList.TextCell>\n <DataList.TextCell className=\"text-center\">\n {suspendedCount > 0 ? (\n <span\n className=\"inline-flex items-center gap-1.5 text-warning-foreground\"\n aria-label={`${suspendedCount} run${suspendedCount === 1 ? '' : 's'} awaiting input`}\n >\n <PauseIcon aria-hidden className=\"size-3.5\" />\n {suspendedCount}\n </span>\n ) : (\n ''\n )}\n </DataList.TextCell>\n <DataList.TextCell className=\"text-center\">{stepsCount || ''}</DataList.TextCell>\n </DataList.RowLink>\n </DataList.RowWrapper>\n );\n}\n\nexport function WorkflowsList({\n workflows,\n isLoading,\n search = '',\n sort,\n onSortChange,\n requestContext,\n}: WorkflowsListProps) {\n const [expandedPaths, setExpandedPaths] = useState<ReadonlySet<string>>(new Set());\n const runCounts = useWorkflowsRunCounts({ requestContext });\n\n const workflowData = useMemo(\n () =>\n Object.entries(workflows).map(([key, workflow]) => ({\n ...workflow,\n id: key,\n })),\n [workflows],\n );\n\n const filteredData = useMemo(() => {\n const term = search.toLowerCase();\n return workflowData.filter(\n wf => wf.name?.toLowerCase().includes(term) || wf.description?.toLowerCase().includes(term),\n );\n }, [workflowData, search]);\n\n // Sort applies to root workflows only; nested rows keep their tree order.\n const sortedData = useMemo(() => sortWorkflows(filteredData, sort, runCounts), [filteredData, sort, runCounts]);\n\n const rows = useMemo(\n () => flattenWorkflowTree(sortedData, workflows, expandedPaths),\n [sortedData, workflows, expandedPaths],\n );\n\n // Unregistered rows are non-interactive; keyboard navigation only visits workflow rows.\n const interactiveIndexByPathKey = useMemo(() => {\n const map = new Map<string, number>();\n for (const row of rows) {\n if (row.kind === 'workflow') map.set(row.pathKey, map.size);\n }\n return map;\n }, [rows]);\n\n const { containerRef, getRowProps } = useDataListKeyboard({ count: interactiveIndexByPathKey.size, global: true });\n\n const toggleExpanded = (pathKey: string) => {\n setExpandedPaths(previous => {\n const next = new Set(previous);\n if (next.has(pathKey)) {\n next.delete(pathKey);\n } else {\n next.add(pathKey);\n }\n return next;\n });\n };\n\n if (isLoading) {\n return <DataListSkeleton columns={GRID_COLUMNS} fit=\"container\" />;\n }\n\n return (\n <DataList columns={GRID_COLUMNS} fit=\"container\" scrollRef={containerRef}>\n <DataList.Top>\n <DataList.TopCell>\n <span className=\"sr-only\">Expand</span>\n </DataList.TopCell>\n <SortHeader sortKey=\"name\" sort={sort} onSortChange={onSortChange}>\n Name\n </SortHeader>\n <DataList.TopCell>Description</DataList.TopCell>\n <SortHeader sortKey=\"running\" sort={sort} onSortChange={onSortChange}>\n Running\n </SortHeader>\n <SortHeader sortKey=\"suspended\" sort={sort} onSortChange={onSortChange}>\n Pending input\n </SortHeader>\n <SortHeader sortKey=\"steps\" sort={sort} onSortChange={onSortChange}>\n Number of steps\n </SortHeader>\n </DataList.Top>\n\n {rows.length === 0 && search ? <DataList.NoMatch message=\"No Workflows match your search\" /> : null}\n\n {rows.map(row => {\n const isExpanded = expandedPaths.has(row.pathKey);\n const toggle = () => toggleExpanded(row.pathKey);\n\n if (row.kind === 'unregistered') {\n // Mirrors WorkflowRow's RowWrapper + RowLink layout, minus hover and press states.\n return (\n <DataList.RowStatic key={`workflow-${row.pathKey}`} className=\"gap-0 px-0\">\n <TreeToggleCell row={row} isExpanded={isExpanded} onToggle={toggle} />\n <div className=\"col-span-5 col-start-2 grid grid-cols-subgrid gap-4 px-3\">\n <DataList.NameCell>\n <span className=\"flex items-center gap-1.5\">\n <TreeConnector guides={row.guides} isLastChild={row.isLastChild} />\n <span className=\"truncate\">{truncateString(row.stepId, 50)}</span>\n <Tooltip>\n <TooltipTrigger\n render={<Txt as=\"span\" variant=\"body-sm\" tone=\"muted\" />}\n role=\"note\"\n tabIndex={0}\n className={cn('shrink-0 rounded-sm', focusRing)}\n >\n not registered\n </TooltipTrigger>\n <TooltipContent className=\"max-w-72\">\n Runs as a step of its parent workflow. Add it to the workflows of your Mastra instance to open,\n run, and inspect it on its own page.\n </TooltipContent>\n </Tooltip>\n </span>\n </DataList.NameCell>\n <DataList.DescriptionCell>{truncateString(row.description ?? '', 200)}</DataList.DescriptionCell>\n <DataList.TextCell className=\"text-center\">{''}</DataList.TextCell>\n <DataList.TextCell className=\"text-center\">{''}</DataList.TextCell>\n <DataList.TextCell className=\"text-center\">{''}</DataList.TextCell>\n </div>\n </DataList.RowStatic>\n );\n }\n\n return (\n <WorkflowRow\n key={`workflow-${row.pathKey}`}\n row={row}\n isExpanded={isExpanded}\n onToggle={toggle}\n runCount={runCounts[row.workflow.id]}\n rowProps={getRowProps(interactiveIndexByPathKey.get(row.pathKey) ?? -1)}\n />\n );\n })}\n </DataList>\n );\n}\n"],"names":["jsxs","jsx","cn","quietTextHover","ChevronRightIcon","DataList","useLinkComponent","useRef","truncateString","Badge","Txt","WorkflowIcon","PauseIcon","workflows","useState","useWorkflowsRunCounts","useMemo","sortWorkflows","flattenWorkflowTree","useDataListKeyboard","DataListSkeleton","Tooltip","TooltipTrigger","focusRing","TooltipContent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workflows-list.cjs.js","sources":["../../../../../src/domains/workflows/components/workflows-list/workflows-list.tsx"],"sourcesContent":["import type { GetWorkflowResponse } from '@mastra/client-js';\nimport { useWorkflowsRunCounts } from '@mastra/react/hooks/workflows';\nimport { PauseIcon, WorkflowIcon } from 'lucide-react';\nimport { useMemo, useRef, useState } from 'react';\nimport type { SyntheticEvent } from 'react';\nimport { sortWorkflows } from './workflows-sort';\nimport type { WorkflowsSort, WorkflowsSortKey } from './workflows-sort';\nimport { flattenWorkflowTree } from '@/domains/workflows/utils/nested-workflows';\nimport type { WorkflowTreeRow } from '@/domains/workflows/utils/nested-workflows';\nimport { Badge } from '@/ds/components/Badge';\nimport type { DataListSort } from '@/ds/components/DataList';\nimport { DataList, DataListSkeleton, useDataListKeyboard } from '@/ds/components/DataList';\nimport { DisclosureChevron } from '@/ds/components/DisclosureChevron';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { Txt } from '@/ds/components/Txt';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { quietTextHover } from '@/ds/primitives/typography';\nimport { useLinkComponent } from '@/lib/framework';\nimport { cn } from '@/utils/cn';\nimport { truncateString } from '@/utils/truncate-string';\n\nexport interface WorkflowsListProps {\n workflows: Record<string, GetWorkflowResponse>;\n isLoading: boolean;\n search?: string;\n sort?: WorkflowsSort;\n onSortChange?: (direction: DataListSort, key: WorkflowsSortKey) => void;\n requestContext?: Record<string, any>;\n}\n\n// Leading fixed expander column (outside the row link), then Name /\n// Description / Running / Pending input / Steps. The Name column width is\n// FIXED so tree indentation grows inside it (names truncate) — expanding\n// nested levels can never widen columns and shift the table.\nconst GRID_COLUMNS = 'auto 24rem minmax(0, 1fr) auto auto auto';\n\n/**\n * Tree connector for nested rows: one vertical guide per ancestor level that\n * has more siblings below, then a ├ stub (└ for the last child) linking the\n * row to its parent. Overshooting vertical margins let the lines span the\n * full row height; the cell's overflow clipping trims the excess.\n */\nfunction TreeConnector({ guides, isLastChild }: { guides: boolean[]; isLastChild: boolean }) {\n return (\n <span aria-hidden className=\"-my-6 flex shrink-0 self-stretch\">\n {guides.map((show, index) => (\n <span key={index} className={cn('w-6', show && 'border-l border-border')} />\n ))}\n <span className=\"relative w-6\">\n <span className={cn('absolute top-0 left-0 border-l border-border', isLastChild ? 'h-1/2' : 'h-full')} />\n <span className=\"absolute top-1/2 left-0 w-3.5 border-b border-border\" />\n </span>\n </span>\n );\n}\n\n/**\n * Fixed-width expander cell at the start of every row. Only the button lives\n * here — OUTSIDE the row link, so the toggle is never an interactive element\n * nested inside the anchor — while the tree lines stay in the Name cell. The\n * cell's content is identical in size on every row, so expanding a deep tree\n * never widens the column and shifts the table.\n */\nfunction TreeToggleCell({\n row,\n isExpanded,\n onToggle,\n}: {\n row: WorkflowTreeRow;\n isExpanded: boolean;\n onToggle: () => void;\n}) {\n const hasToggle = row.kind === 'workflow' && row.nestedIds.length > 0;\n const workflowName = row.kind === 'workflow' ? row.workflow.name : row.stepId;\n\n return (\n <div className=\"flex items-center pl-5\">\n {hasToggle ? (\n <button\n type=\"button\"\n aria-expanded={isExpanded}\n aria-label={`${isExpanded ? 'Collapse' : 'Expand'} nested workflows of ${workflowName}`}\n className={cn(\n quietTextHover,\n \"relative grid size-5 shrink-0 place-items-center before:absolute before:-inset-1.5 before:content-['']\",\n )}\n onClick={event => {\n event.stopPropagation();\n onToggle();\n }}\n >\n <DisclosureChevron direction=\"right\" className=\"size-4\" />\n </button>\n ) : (\n <span className=\"size-5 shrink-0\" aria-hidden />\n )}\n </div>\n );\n}\n\nconst stopPropagation = (event: SyntheticEvent) => event.stopPropagation();\n\n/** Sortable header when the parent owns sort state; plain header otherwise. */\nfunction SortHeader({\n sortKey,\n sort,\n onSortChange,\n children,\n}: Pick<WorkflowsListProps, 'sort' | 'onSortChange'> & { sortKey: WorkflowsSortKey; children: string }) {\n if (!onSortChange) return <DataList.TopCell>{children}</DataList.TopCell>;\n return (\n <DataList.SortableTopCell\n sortKey={sortKey}\n sort={sort?.key === sortKey ? sort.direction : undefined}\n onSortChange={direction => onSortChange(direction, sortKey)}\n >\n {children}\n </DataList.SortableTopCell>\n );\n}\n\n/**\n * Wrapper owns focus/roving and activation so the expander gutter also\n * navigates; the link and the toggle stop propagation to avoid double\n * activation.\n */\nfunction WorkflowRow({\n row,\n isExpanded,\n onToggle,\n runCount,\n rowProps,\n}: {\n row: Extract<WorkflowTreeRow, { kind: 'workflow' }>;\n isExpanded: boolean;\n onToggle: () => void;\n runCount: { running?: number; suspended?: number } | undefined;\n rowProps: ReturnType<ReturnType<typeof useDataListKeyboard>['getRowProps']>;\n}) {\n const { paths, Link } = useLinkComponent();\n const linkRef = useRef<HTMLAnchorElement>(null);\n const { workflow: wf, nestedIds } = row;\n const name = truncateString(wf.name, 50);\n const description = truncateString(wf.description ?? '', 200);\n const stepsCount = Object.keys(wf.steps ?? {}).length;\n const runningCount = runCount?.running ?? 0;\n const suspendedCount = runCount?.suspended ?? 0;\n const hasNested = nestedIds.length > 0;\n\n return (\n <DataList.RowWrapper {...rowProps} onSelectRow={() => linkRef.current?.click()}>\n <TreeToggleCell row={row} isExpanded={isExpanded} onToggle={onToggle} />\n <DataList.RowLink\n ref={linkRef}\n colStart={2}\n to={paths.workflowLink(wf.id)}\n LinkComponent={Link}\n tabIndex={-1}\n onClick={stopPropagation}\n >\n <DataList.NameCell>\n <span className=\"flex items-center gap-1.5\">\n {row.depth > 0 ? <TreeConnector guides={row.guides} isLastChild={row.isLastChild} /> : null}\n <span className=\"truncate\">{name}</span>\n {wf.origin === 'dynamic' ? (\n <Badge size=\"xs\" variant=\"blue\" title=\"Registered via the dynamic-workflows API\">\n Dynamic\n </Badge>\n ) : null}\n {hasNested ? (\n <Txt\n as=\"span\"\n variant=\"body-sm\"\n tone=\"muted\"\n title={`Nested workflows: ${nestedIds.join(', ')}`}\n className=\"inline-flex shrink-0 items-center gap-1\"\n >\n <WorkflowIcon aria-hidden className=\"size-3.5\" />\n {nestedIds.length}\n </Txt>\n ) : null}\n </span>\n </DataList.NameCell>\n <DataList.DescriptionCell>{description}</DataList.DescriptionCell>\n <DataList.TextCell className=\"text-center\">\n {runningCount > 0 ? (\n <span\n className=\"inline-flex items-center gap-1.5 text-info-indicator\"\n aria-label={`${runningCount} run${runningCount === 1 ? '' : 's'} in progress`}\n >\n <span aria-hidden className=\"size-2 rounded-full bg-info-indicator motion-safe:animate-pulse\" />\n {runningCount}\n </span>\n ) : (\n ''\n )}\n </DataList.TextCell>\n <DataList.TextCell className=\"text-center\">\n {suspendedCount > 0 ? (\n <span\n className=\"inline-flex items-center gap-1.5 text-warning-foreground\"\n aria-label={`${suspendedCount} run${suspendedCount === 1 ? '' : 's'} awaiting input`}\n >\n <PauseIcon aria-hidden className=\"size-3.5\" />\n {suspendedCount}\n </span>\n ) : (\n ''\n )}\n </DataList.TextCell>\n <DataList.TextCell className=\"text-center\">{stepsCount || ''}</DataList.TextCell>\n </DataList.RowLink>\n </DataList.RowWrapper>\n );\n}\n\nexport function WorkflowsList({\n workflows,\n isLoading,\n search = '',\n sort,\n onSortChange,\n requestContext,\n}: WorkflowsListProps) {\n const [expandedPaths, setExpandedPaths] = useState<ReadonlySet<string>>(new Set());\n const runCounts = useWorkflowsRunCounts({ requestContext });\n\n const workflowData = useMemo(\n () =>\n Object.entries(workflows).map(([key, workflow]) => ({\n ...workflow,\n id: key,\n })),\n [workflows],\n );\n\n const filteredData = useMemo(() => {\n const term = search.toLowerCase();\n return workflowData.filter(\n wf => wf.name?.toLowerCase().includes(term) || wf.description?.toLowerCase().includes(term),\n );\n }, [workflowData, search]);\n\n // Sort applies to root workflows only; nested rows keep their tree order.\n const sortedData = useMemo(() => sortWorkflows(filteredData, sort, runCounts), [filteredData, sort, runCounts]);\n\n const rows = useMemo(\n () => flattenWorkflowTree(sortedData, workflows, expandedPaths),\n [sortedData, workflows, expandedPaths],\n );\n\n // Unregistered rows are non-interactive; keyboard navigation only visits workflow rows.\n const interactiveIndexByPathKey = useMemo(() => {\n const map = new Map<string, number>();\n for (const row of rows) {\n if (row.kind === 'workflow') map.set(row.pathKey, map.size);\n }\n return map;\n }, [rows]);\n\n const { containerRef, getRowProps } = useDataListKeyboard({ count: interactiveIndexByPathKey.size, global: true });\n\n const toggleExpanded = (pathKey: string) => {\n setExpandedPaths(previous => {\n const next = new Set(previous);\n if (next.has(pathKey)) {\n next.delete(pathKey);\n } else {\n next.add(pathKey);\n }\n return next;\n });\n };\n\n if (isLoading) {\n return <DataListSkeleton columns={GRID_COLUMNS} fit=\"container\" />;\n }\n\n return (\n <DataList columns={GRID_COLUMNS} fit=\"container\" scrollRef={containerRef}>\n <DataList.Top>\n <DataList.TopCell>\n <span className=\"sr-only\">Expand</span>\n </DataList.TopCell>\n <SortHeader sortKey=\"name\" sort={sort} onSortChange={onSortChange}>\n Name\n </SortHeader>\n <DataList.TopCell>Description</DataList.TopCell>\n <SortHeader sortKey=\"running\" sort={sort} onSortChange={onSortChange}>\n Running\n </SortHeader>\n <SortHeader sortKey=\"suspended\" sort={sort} onSortChange={onSortChange}>\n Pending input\n </SortHeader>\n <SortHeader sortKey=\"steps\" sort={sort} onSortChange={onSortChange}>\n Number of steps\n </SortHeader>\n </DataList.Top>\n\n {rows.length === 0 && search ? <DataList.NoMatch message=\"No Workflows match your search\" /> : null}\n\n {rows.map(row => {\n const isExpanded = expandedPaths.has(row.pathKey);\n const toggle = () => toggleExpanded(row.pathKey);\n\n if (row.kind === 'unregistered') {\n // Mirrors WorkflowRow's RowWrapper + RowLink layout, minus hover and press states.\n return (\n <DataList.RowStatic key={`workflow-${row.pathKey}`} className=\"gap-0 px-0\">\n <TreeToggleCell row={row} isExpanded={isExpanded} onToggle={toggle} />\n <div className=\"col-span-5 col-start-2 grid grid-cols-subgrid gap-4 px-3\">\n <DataList.NameCell>\n <span className=\"flex items-center gap-1.5\">\n <TreeConnector guides={row.guides} isLastChild={row.isLastChild} />\n <span className=\"truncate\">{truncateString(row.stepId, 50)}</span>\n <Tooltip>\n <TooltipTrigger\n render={<Txt as=\"span\" variant=\"body-sm\" tone=\"muted\" />}\n role=\"note\"\n tabIndex={0}\n className={cn('shrink-0 rounded-sm', focusRing)}\n >\n not registered\n </TooltipTrigger>\n <TooltipContent className=\"max-w-72\">\n Runs as a step of its parent workflow. Add it to the workflows of your Mastra instance to open,\n run, and inspect it on its own page.\n </TooltipContent>\n </Tooltip>\n </span>\n </DataList.NameCell>\n <DataList.DescriptionCell>{truncateString(row.description ?? '', 200)}</DataList.DescriptionCell>\n <DataList.TextCell className=\"text-center\">{''}</DataList.TextCell>\n <DataList.TextCell className=\"text-center\">{''}</DataList.TextCell>\n <DataList.TextCell className=\"text-center\">{''}</DataList.TextCell>\n </div>\n </DataList.RowStatic>\n );\n }\n\n return (\n <WorkflowRow\n key={`workflow-${row.pathKey}`}\n row={row}\n isExpanded={isExpanded}\n onToggle={toggle}\n runCount={runCounts[row.workflow.id]}\n rowProps={getRowProps(interactiveIndexByPathKey.get(row.pathKey) ?? -1)}\n />\n );\n })}\n </DataList>\n );\n}\n"],"names":["jsxs","jsx","cn","quietTextHover","DisclosureChevron","DataList","useLinkComponent","useRef","truncateString","Badge","Txt","WorkflowIcon","PauseIcon","workflows","useState","useWorkflowsRunCounts","useMemo","sortWorkflows","flattenWorkflowTree","useDataListKeyboard","DataListSkeleton","Tooltip","TooltipTrigger","focusRing","TooltipContent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAkCA,MAAM,YAAA,GAAe,0CAAA;AAQrB,SAAS,aAAA,CAAc,EAAE,MAAA,EAAQ,WAAA,EAAY,EAAgD;AAC3F,EAAA,uBACEA,eAAA,CAAC,MAAA,EAAA,EAAK,aAAA,EAAW,IAAA,EAAC,WAAU,kCAAA,EACzB,QAAA,EAAA;AAAA,IAAA,MAAA,CAAO,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,qBACjBC,cAAA,CAAC,MAAA,EAAA,EAAiB,SAAA,EAAWC,WAAA,CAAG,KAAA,EAAO,IAAA,IAAQ,wBAAwB,CAAA,EAAA,EAA5D,KAA+D,CAC3E,CAAA;AAAA,oBACDF,eAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,cAAA,EACd,QAAA,EAAA;AAAA,sBAAAC,cAAA,CAAC,UAAK,SAAA,EAAWC,WAAA,CAAG,gDAAgD,WAAA,GAAc,OAAA,GAAU,QAAQ,CAAA,EAAG,CAAA;AAAA,sBACvGD,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,sDAAA,EAAuD;AAAA,KAAA,EACzE;AAAA,GAAA,EACF,CAAA;AAEJ;AASA,SAAS,cAAA,CAAe;AAAA,EACtB,GAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAIG;AACD,EAAA,MAAM,YAAY,GAAA,CAAI,IAAA,KAAS,UAAA,IAAc,GAAA,CAAI,UAAU,MAAA,GAAS,CAAA;AACpE,EAAA,MAAM,eAAe,GAAA,CAAI,IAAA,KAAS,aAAa,GAAA,CAAI,QAAA,CAAS,OAAO,GAAA,CAAI,MAAA;AAEvE,EAAA,uBACEA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EACZ,QAAA,EAAA,SAAA,mBACCA,cAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,eAAA,EAAe,UAAA;AAAA,MACf,cAAY,CAAA,EAAG,UAAA,GAAa,UAAA,GAAa,QAAQ,wBAAwB,YAAY,CAAA,CAAA;AAAA,MACrF,SAAA,EAAWC,WAAA;AAAA,QACTC,oCAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,SAAS,CAAA,KAAA,KAAS;AAChB,QAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,QAAA,QAAA,EAAS;AAAA,MACX,CAAA;AAAA,MAEA,QAAA,kBAAAF,cAAA,CAACG,mCAAA,EAAA,EAAkB,SAAA,EAAU,OAAA,EAAQ,WAAU,QAAA,EAAS;AAAA;AAAA,sBAG1DH,cAAA,CAAC,MAAA,EAAA,EAAK,WAAU,iBAAA,EAAkB,aAAA,EAAW,MAAC,CAAA,EAElD,CAAA;AAEJ;AAEA,MAAM,eAAA,GAAkB,CAAC,KAAA,KAA0B,KAAA,CAAM,eAAA,EAAgB;AAGzE,SAAS,UAAA,CAAW;AAAA,EAClB,OAAA;AAAA,EACA,IAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAAwG;AACtG,EAAA,IAAI,CAAC,YAAA,EAAc,sCAAQI,iBAAA,CAAS,OAAA,EAAT,EAAkB,QAAA,EAAS,CAAA;AACtD,EAAA,uBACEJ,cAAA;AAAA,IAACI,iBAAA,CAAS,eAAA;AAAA,IAAT;AAAA,MACC,OAAA;AAAA,MACA,IAAA,EAAM,IAAA,EAAM,GAAA,KAAQ,OAAA,GAAU,KAAK,SAAA,GAAY,MAAA;AAAA,MAC/C,YAAA,EAAc,CAAA,SAAA,KAAa,YAAA,CAAa,SAAA,EAAW,OAAO,CAAA;AAAA,MAEzD;AAAA;AAAA,GACH;AAEJ;AAOA,SAAS,WAAA,CAAY;AAAA,EACnB,GAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,EAMG;AACD,EAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAK,GAAIC,8BAAA,EAAiB;AACzC,EAAA,MAAM,OAAA,GAAUC,aAA0B,IAAI,CAAA;AAC9C,EAAA,MAAM,EAAE,QAAA,EAAU,EAAA,EAAI,SAAA,EAAU,GAAI,GAAA;AACpC,EAAA,MAAM,IAAA,GAAOC,mCAAA,CAAe,EAAA,CAAG,IAAA,EAAM,EAAE,CAAA;AACvC,EAAA,MAAM,WAAA,GAAcA,mCAAA,CAAe,EAAA,CAAG,WAAA,IAAe,IAAI,GAAG,CAAA;AAC5D,EAAA,MAAM,aAAa,MAAA,CAAO,IAAA,CAAK,GAAG,KAAA,IAAS,EAAE,CAAA,CAAE,MAAA;AAC/C,EAAA,MAAM,YAAA,GAAe,UAAU,OAAA,IAAW,CAAA;AAC1C,EAAA,MAAM,cAAA,GAAiB,UAAU,SAAA,IAAa,CAAA;AAC9C,EAAA,MAAM,SAAA,GAAY,UAAU,MAAA,GAAS,CAAA;AAErC,EAAA,uBACER,eAAA,CAACK,iBAAA,CAAS,UAAA,EAAT,EAAqB,GAAG,QAAA,EAAU,WAAA,EAAa,MAAM,OAAA,CAAQ,OAAA,EAAS,KAAA,EAAM,EAC3E,QAAA,EAAA;AAAA,oBAAAJ,cAAA,CAAC,cAAA,EAAA,EAAe,GAAA,EAAU,UAAA,EAAwB,QAAA,EAAoB,CAAA;AAAA,oBACtED,eAAA;AAAA,MAACK,iBAAA,CAAS,OAAA;AAAA,MAAT;AAAA,QACC,GAAA,EAAK,OAAA;AAAA,QACL,QAAA,EAAU,CAAA;AAAA,QACV,EAAA,EAAI,KAAA,CAAM,YAAA,CAAa,EAAA,CAAG,EAAE,CAAA;AAAA,QAC5B,aAAA,EAAe,IAAA;AAAA,QACf,QAAA,EAAU,EAAA;AAAA,QACV,OAAA,EAAS,eAAA;AAAA,QAET,QAAA,EAAA;AAAA,0BAAAJ,cAAA,CAACI,kBAAS,QAAA,EAAT,EACC,QAAA,kBAAAL,eAAA,CAAC,MAAA,EAAA,EAAK,WAAU,2BAAA,EACb,QAAA,EAAA;AAAA,YAAA,GAAA,CAAI,KAAA,GAAQ,CAAA,mBAAIC,cAAA,CAAC,aAAA,EAAA,EAAc,MAAA,EAAQ,IAAI,MAAA,EAAQ,WAAA,EAAa,GAAA,CAAI,WAAA,EAAa,CAAA,GAAK,IAAA;AAAA,4BACvFA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,UAAA,EAAY,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,YAChC,EAAA,CAAG,MAAA,KAAW,SAAA,mBACbA,cAAA,CAACQ,WAAA,EAAA,EAAM,IAAA,EAAK,IAAA,EAAK,OAAA,EAAQ,MAAA,EAAO,KAAA,EAAM,0CAAA,EAA2C,QAAA,EAAA,SAAA,EAEjF,CAAA,GACE,IAAA;AAAA,YACH,SAAA,mBACCT,eAAA;AAAA,cAACU,OAAA;AAAA,cAAA;AAAA,gBACC,EAAA,EAAG,MAAA;AAAA,gBACH,OAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAK,OAAA;AAAA,gBACL,KAAA,EAAO,CAAA,kBAAA,EAAqB,SAAA,CAAU,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA;AAAA,gBAChD,SAAA,EAAU,yCAAA;AAAA,gBAEV,QAAA,EAAA;AAAA,kCAAAT,cAAA,CAACU,wBAAA,EAAA,EAAa,aAAA,EAAW,IAAA,EAAC,SAAA,EAAU,UAAA,EAAW,CAAA;AAAA,kBAC9C,SAAA,CAAU;AAAA;AAAA;AAAA,aACb,GACE;AAAA,WAAA,EACN,CAAA,EACF,CAAA;AAAA,0BACAV,cAAA,CAACI,iBAAA,CAAS,eAAA,EAAT,EAA0B,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,yCACtCA,iBAAA,CAAS,QAAA,EAAT,EAAkB,SAAA,EAAU,aAAA,EAC1B,yBAAe,CAAA,mBACdL,eAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,sDAAA;AAAA,cACV,cAAY,CAAA,EAAG,YAAY,OAAO,YAAA,KAAiB,CAAA,GAAI,KAAK,GAAG,CAAA,YAAA,CAAA;AAAA,cAE/D,QAAA,EAAA;AAAA,gCAAAC,cAAA,CAAC,MAAA,EAAA,EAAK,aAAA,EAAW,IAAA,EAAC,SAAA,EAAU,iEAAA,EAAkE,CAAA;AAAA,gBAC7F;AAAA;AAAA;AAAA,cAGH,EAAA,EAEJ,CAAA;AAAA,yCACCI,iBAAA,CAAS,QAAA,EAAT,EAAkB,SAAA,EAAU,aAAA,EAC1B,2BAAiB,CAAA,mBAChBL,eAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,0DAAA;AAAA,cACV,cAAY,CAAA,EAAG,cAAc,OAAO,cAAA,KAAmB,CAAA,GAAI,KAAK,GAAG,CAAA,eAAA,CAAA;AAAA,cAEnE,QAAA,EAAA;AAAA,gCAAAC,cAAA,CAACW,qBAAA,EAAA,EAAU,aAAA,EAAW,IAAA,EAAC,SAAA,EAAU,UAAA,EAAW,CAAA;AAAA,gBAC3C;AAAA;AAAA;AAAA,cAGH,EAAA,EAEJ,CAAA;AAAA,yCACCP,iBAAA,CAAS,QAAA,EAAT,EAAkB,SAAA,EAAU,aAAA,EAAe,wBAAc,EAAA,EAAG;AAAA;AAAA;AAAA;AAC/D,GAAA,EACF,CAAA;AAEJ;AAEO,SAAS,aAAA,CAAc;AAAA,aAC5BQ,WAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA,GAAS,EAAA;AAAA,EACT,IAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAAuB;AACrB,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,IAAIC,cAAA,iBAA8B,IAAI,KAAK,CAAA;AACjF,EAAA,MAAM,SAAA,GAAYC,+BAAA,CAAsB,EAAE,cAAA,EAAgB,CAAA;AAE1D,EAAA,MAAM,YAAA,GAAeC,aAAA;AAAA,IACnB,MACE,MAAA,CAAO,OAAA,CAAQH,WAAS,CAAA,CAAE,IAAI,CAAC,CAAC,GAAA,EAAK,QAAQ,CAAA,MAAO;AAAA,MAClD,GAAG,QAAA;AAAA,MACH,EAAA,EAAI;AAAA,KACN,CAAE,CAAA;AAAA,IACJ,CAACA,WAAS;AAAA,GACZ;AAEA,EAAA,MAAM,YAAA,GAAeG,cAAQ,MAAM;AACjC,IAAA,MAAM,IAAA,GAAO,OAAO,WAAA,EAAY;AAChC,IAAA,OAAO,YAAA,CAAa,MAAA;AAAA,MAClB,CAAA,EAAA,KAAM,EAAA,CAAG,IAAA,EAAM,WAAA,EAAY,CAAE,QAAA,CAAS,IAAI,CAAA,IAAK,EAAA,CAAG,WAAA,EAAa,WAAA,EAAY,CAAE,SAAS,IAAI;AAAA,KAC5F;AAAA,EACF,CAAA,EAAG,CAAC,YAAA,EAAc,MAAM,CAAC,CAAA;AAGzB,EAAA,MAAM,UAAA,GAAaA,aAAA,CAAQ,MAAMC,sEAAA,CAAc,YAAA,EAAc,IAAA,EAAM,SAAS,CAAA,EAAG,CAAC,YAAA,EAAc,IAAA,EAAM,SAAS,CAAC,CAAA;AAE9G,EAAA,MAAM,IAAA,GAAOD,aAAA;AAAA,IACX,MAAME,2DAAA,CAAoB,UAAA,EAAYL,WAAA,EAAW,aAAa,CAAA;AAAA,IAC9D,CAAC,UAAA,EAAYA,WAAA,EAAW,aAAa;AAAA,GACvC;AAGA,EAAA,MAAM,yBAAA,GAA4BG,cAAQ,MAAM;AAC9C,IAAA,MAAM,GAAA,uBAAU,GAAA,EAAoB;AACpC,IAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AACtB,MAAA,IAAI,GAAA,CAAI,SAAS,UAAA,EAAY,GAAA,CAAI,IAAI,GAAA,CAAI,OAAA,EAAS,IAAI,IAAI,CAAA;AAAA,IAC5D;AACA,IAAA,OAAO,GAAA;AAAA,EACT,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,MAAM,EAAE,YAAA,EAAc,WAAA,EAAY,GAAIG,uCAAA,CAAoB,EAAE,KAAA,EAAO,yBAAA,CAA0B,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,CAAA;AAEjH,EAAA,MAAM,cAAA,GAAiB,CAAC,OAAA,KAAoB;AAC1C,IAAA,gBAAA,CAAiB,CAAA,QAAA,KAAY;AAC3B,MAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,QAAQ,CAAA;AAC7B,MAAA,IAAI,IAAA,CAAK,GAAA,CAAI,OAAO,CAAA,EAAG;AACrB,QAAA,IAAA,CAAK,OAAO,OAAO,CAAA;AAAA,MACrB,CAAA,MAAO;AACL,QAAA,IAAA,CAAK,IAAI,OAAO,CAAA;AAAA,MAClB;AACA,MAAA,OAAO,IAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,uBAAOlB,cAAA,CAACmB,iCAAA,EAAA,EAAiB,OAAA,EAAS,YAAA,EAAc,KAAI,WAAA,EAAY,CAAA;AAAA,EAClE;AAEA,EAAA,uCACGf,iBAAA,EAAA,EAAS,OAAA,EAAS,cAAc,GAAA,EAAI,WAAA,EAAY,WAAW,YAAA,EAC1D,QAAA,EAAA;AAAA,oBAAAL,eAAA,CAACK,iBAAA,CAAS,KAAT,EACC,QAAA,EAAA;AAAA,sBAAAJ,cAAA,CAACI,iBAAA,CAAS,SAAT,EACC,QAAA,kBAAAJ,cAAA,CAAC,UAAK,SAAA,EAAU,SAAA,EAAU,oBAAM,CAAA,EAClC,CAAA;AAAA,qCACC,UAAA,EAAA,EAAW,OAAA,EAAQ,MAAA,EAAO,IAAA,EAAY,cAA4B,QAAA,EAAA,MAAA,EAEnE,CAAA;AAAA,sBACAA,cAAA,CAACI,iBAAA,CAAS,OAAA,EAAT,EAAiB,QAAA,EAAA,aAAA,EAAW,CAAA;AAAA,qCAC5B,UAAA,EAAA,EAAW,OAAA,EAAQ,SAAA,EAAU,IAAA,EAAY,cAA4B,QAAA,EAAA,SAAA,EAEtE,CAAA;AAAA,qCACC,UAAA,EAAA,EAAW,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAY,cAA4B,QAAA,EAAA,eAAA,EAExE,CAAA;AAAA,qCACC,UAAA,EAAA,EAAW,OAAA,EAAQ,OAAA,EAAQ,IAAA,EAAY,cAA4B,QAAA,EAAA,iBAAA,EAEpE;AAAA,KAAA,EACF,CAAA;AAAA,IAEC,IAAA,CAAK,MAAA,KAAW,CAAA,IAAK,MAAA,mBAASJ,cAAA,CAACI,kBAAS,OAAA,EAAT,EAAiB,OAAA,EAAQ,gCAAA,EAAiC,CAAA,GAAK,IAAA;AAAA,IAE9F,IAAA,CAAK,IAAI,CAAA,GAAA,KAAO;AACf,MAAA,MAAM,UAAA,GAAa,aAAA,CAAc,GAAA,CAAI,GAAA,CAAI,OAAO,CAAA;AAChD,MAAA,MAAM,MAAA,GAAS,MAAM,cAAA,CAAe,GAAA,CAAI,OAAO,CAAA;AAE/C,MAAA,IAAI,GAAA,CAAI,SAAS,cAAA,EAAgB;AAE/B,QAAA,uBACEL,eAAA,CAACK,iBAAA,CAAS,SAAA,EAAT,EAAmD,WAAU,YAAA,EAC5D,QAAA,EAAA;AAAA,0BAAAJ,cAAA,CAAC,cAAA,EAAA,EAAe,GAAA,EAAU,UAAA,EAAwB,QAAA,EAAU,MAAA,EAAQ,CAAA;AAAA,0BACpED,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0DAAA,EACb,QAAA,EAAA;AAAA,4BAAAC,cAAA,CAACI,kBAAS,QAAA,EAAT,EACC,QAAA,kBAAAL,eAAA,CAAC,MAAA,EAAA,EAAK,WAAU,2BAAA,EACd,QAAA,EAAA;AAAA,8BAAAC,cAAA,CAAC,iBAAc,MAAA,EAAQ,GAAA,CAAI,MAAA,EAAQ,WAAA,EAAa,IAAI,WAAA,EAAa,CAAA;AAAA,8BACjEA,cAAA,CAAC,UAAK,SAAA,EAAU,UAAA,EAAY,8CAAe,GAAA,CAAI,MAAA,EAAQ,EAAE,CAAA,EAAE,CAAA;AAAA,8CAC1DoB,eAAA,EAAA,EACC,QAAA,EAAA;AAAA,gCAAApB,cAAA;AAAA,kBAACqB,sBAAA;AAAA,kBAAA;AAAA,oBACC,MAAA,iCAASZ,OAAA,EAAA,EAAI,EAAA,EAAG,QAAO,OAAA,EAAQ,SAAA,EAAU,MAAK,OAAA,EAAQ,CAAA;AAAA,oBACtD,IAAA,EAAK,MAAA;AAAA,oBACL,QAAA,EAAU,CAAA;AAAA,oBACV,SAAA,EAAWR,WAAA,CAAG,qBAAA,EAAuBqB,gCAAS,CAAA;AAAA,oBAC/C,QAAA,EAAA;AAAA;AAAA,iBAED;AAAA,gCACAtB,cAAA,CAACuB,sBAAA,EAAA,EAAe,SAAA,EAAU,UAAA,EAAW,QAAA,EAAA,sIAAA,EAGrC;AAAA,eAAA,EACF;AAAA,aAAA,EACF,CAAA,EACF,CAAA;AAAA,4BACAvB,cAAA,CAACI,kBAAS,eAAA,EAAT,EAA0B,8CAAe,GAAA,CAAI,WAAA,IAAe,EAAA,EAAI,GAAG,CAAA,EAAE,CAAA;AAAA,2CACrEA,iBAAA,CAAS,QAAA,EAAT,EAAkB,SAAA,EAAU,eAAe,QAAA,EAAA,EAAA,EAAG,CAAA;AAAA,2CAC9CA,iBAAA,CAAS,QAAA,EAAT,EAAkB,SAAA,EAAU,eAAe,QAAA,EAAA,EAAA,EAAG,CAAA;AAAA,2CAC9CA,iBAAA,CAAS,QAAA,EAAT,EAAkB,SAAA,EAAU,eAAe,QAAA,EAAA,EAAA,EAAG;AAAA,WAAA,EACjD;AAAA,SAAA,EAAA,EA3BuB,CAAA,SAAA,EAAY,GAAA,CAAI,OAAO,CAAA,CA4BhD,CAAA;AAAA,MAEJ;AAEA,MAAA,uBACEJ,cAAA;AAAA,QAAC,WAAA;AAAA,QAAA;AAAA,UAEC,GAAA;AAAA,UACA,UAAA;AAAA,UACA,QAAA,EAAU,MAAA;AAAA,UACV,QAAA,EAAU,SAAA,CAAU,GAAA,CAAI,QAAA,CAAS,EAAE,CAAA;AAAA,UACnC,UAAU,WAAA,CAAY,yBAAA,CAA0B,IAAI,GAAA,CAAI,OAAO,KAAK,EAAE;AAAA,SAAA;AAAA,QALjE,CAAA,SAAA,EAAY,IAAI,OAAO,CAAA;AAAA,OAM9B;AAAA,IAEJ,CAAC;AAAA,GAAA,EACH,CAAA;AAEJ;;;;"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import { useWorkflowsRunCounts } from '@mastra/react/hooks/workflows';
|
|
3
|
-
import {
|
|
3
|
+
import { WorkflowIcon, PauseIcon } from 'lucide-react';
|
|
4
4
|
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 { e as DataList } from '../../../../data-list-
|
|
9
|
-
import { D as DataListSkeleton } from '../../../../data-list-skeleton-
|
|
8
|
+
import { e as DataList } from '../../../../data-list-4UMxoFNU.js';
|
|
9
|
+
import { D as DataListSkeleton } from '../../../../data-list-skeleton-DGNzfd4Y.js';
|
|
10
10
|
import { u as useDataListKeyboard } from '../../../../use-data-list-keyboard-DFQr4t38.js';
|
|
11
|
+
import { D as DisclosureChevron } from '../../../../disclosure-chevron-BWZ8Alz1.js';
|
|
11
12
|
import { T as Tooltip, c as TooltipTrigger, a as TooltipContent } from '../../../../tooltip-CCZcMbgy.js';
|
|
12
13
|
import { T as Txt } from '../../../../Txt-BuzYj7Vy.js';
|
|
13
14
|
import { focusRing } from '../../../../primitives/transitions.es.js';
|
|
@@ -47,7 +48,7 @@ function TreeToggleCell({
|
|
|
47
48
|
event.stopPropagation();
|
|
48
49
|
onToggle();
|
|
49
50
|
},
|
|
50
|
-
children: /* @__PURE__ */ jsx(
|
|
51
|
+
children: /* @__PURE__ */ jsx(DisclosureChevron, { direction: "right", className: "size-4" })
|
|
51
52
|
}
|
|
52
53
|
) : /* @__PURE__ */ jsx("span", { className: "size-5 shrink-0", "aria-hidden": true }) });
|
|
53
54
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflows-list.es.js","sources":["../../../../../src/domains/workflows/components/workflows-list/workflows-list.tsx"],"sourcesContent":["import type { GetWorkflowResponse } from '@mastra/client-js';\nimport { useWorkflowsRunCounts } from '@mastra/react/hooks/workflows';\nimport { ChevronRightIcon, PauseIcon, WorkflowIcon } from 'lucide-react';\nimport { useMemo, useRef, useState } from 'react';\nimport type { SyntheticEvent } from 'react';\nimport { sortWorkflows } from './workflows-sort';\nimport type { WorkflowsSort, WorkflowsSortKey } from './workflows-sort';\nimport { flattenWorkflowTree } from '@/domains/workflows/utils/nested-workflows';\nimport type { WorkflowTreeRow } from '@/domains/workflows/utils/nested-workflows';\nimport { Badge } from '@/ds/components/Badge';\nimport type { DataListSort } from '@/ds/components/DataList';\nimport { DataList, DataListSkeleton, useDataListKeyboard } from '@/ds/components/DataList';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { Txt } from '@/ds/components/Txt';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { quietTextHover } from '@/ds/primitives/typography';\nimport { useLinkComponent } from '@/lib/framework';\nimport { cn } from '@/utils/cn';\nimport { truncateString } from '@/utils/truncate-string';\n\nexport interface WorkflowsListProps {\n workflows: Record<string, GetWorkflowResponse>;\n isLoading: boolean;\n search?: string;\n sort?: WorkflowsSort;\n onSortChange?: (direction: DataListSort, key: WorkflowsSortKey) => void;\n requestContext?: Record<string, any>;\n}\n\n// Leading fixed expander column (outside the row link), then Name /\n// Description / Running / Pending input / Steps. The Name column width is\n// FIXED so tree indentation grows inside it (names truncate) — expanding\n// nested levels can never widen columns and shift the table.\nconst GRID_COLUMNS = 'auto 24rem minmax(0, 1fr) auto auto auto';\n\n/**\n * Tree connector for nested rows: one vertical guide per ancestor level that\n * has more siblings below, then a ├ stub (└ for the last child) linking the\n * row to its parent. Overshooting vertical margins let the lines span the\n * full row height; the cell's overflow clipping trims the excess.\n */\nfunction TreeConnector({ guides, isLastChild }: { guides: boolean[]; isLastChild: boolean }) {\n return (\n <span aria-hidden className=\"-my-6 flex shrink-0 self-stretch\">\n {guides.map((show, index) => (\n <span key={index} className={cn('w-6', show && 'border-l border-border')} />\n ))}\n <span className=\"relative w-6\">\n <span className={cn('absolute top-0 left-0 border-l border-border', isLastChild ? 'h-1/2' : 'h-full')} />\n <span className=\"absolute top-1/2 left-0 w-3.5 border-b border-border\" />\n </span>\n </span>\n );\n}\n\n/**\n * Fixed-width expander cell at the start of every row. Only the button lives\n * here — OUTSIDE the row link, so the toggle is never an interactive element\n * nested inside the anchor — while the tree lines stay in the Name cell. The\n * cell's content is identical in size on every row, so expanding a deep tree\n * never widens the column and shifts the table.\n */\nfunction TreeToggleCell({\n row,\n isExpanded,\n onToggle,\n}: {\n row: WorkflowTreeRow;\n isExpanded: boolean;\n onToggle: () => void;\n}) {\n const hasToggle = row.kind === 'workflow' && row.nestedIds.length > 0;\n const workflowName = row.kind === 'workflow' ? row.workflow.name : row.stepId;\n\n return (\n <div className=\"flex items-center pl-5\">\n {hasToggle ? (\n <button\n type=\"button\"\n aria-expanded={isExpanded}\n aria-label={`${isExpanded ? 'Collapse' : 'Expand'} nested workflows of ${workflowName}`}\n className={cn(\n quietTextHover,\n \"relative grid size-5 shrink-0 place-items-center before:absolute before:-inset-1.5 before:content-['']\",\n )}\n onClick={event => {\n event.stopPropagation();\n onToggle();\n }}\n >\n <ChevronRightIcon className={cn('size-4 transition-transform', isExpanded && 'rotate-90')} />\n </button>\n ) : (\n <span className=\"size-5 shrink-0\" aria-hidden />\n )}\n </div>\n );\n}\n\nconst stopPropagation = (event: SyntheticEvent) => event.stopPropagation();\n\n/** Sortable header when the parent owns sort state; plain header otherwise. */\nfunction SortHeader({\n sortKey,\n sort,\n onSortChange,\n children,\n}: Pick<WorkflowsListProps, 'sort' | 'onSortChange'> & { sortKey: WorkflowsSortKey; children: string }) {\n if (!onSortChange) return <DataList.TopCell>{children}</DataList.TopCell>;\n return (\n <DataList.SortableTopCell\n sortKey={sortKey}\n sort={sort?.key === sortKey ? sort.direction : undefined}\n onSortChange={direction => onSortChange(direction, sortKey)}\n >\n {children}\n </DataList.SortableTopCell>\n );\n}\n\n/**\n * Wrapper owns focus/roving and activation so the expander gutter also\n * navigates; the link and the toggle stop propagation to avoid double\n * activation.\n */\nfunction WorkflowRow({\n row,\n isExpanded,\n onToggle,\n runCount,\n rowProps,\n}: {\n row: Extract<WorkflowTreeRow, { kind: 'workflow' }>;\n isExpanded: boolean;\n onToggle: () => void;\n runCount: { running?: number; suspended?: number } | undefined;\n rowProps: ReturnType<ReturnType<typeof useDataListKeyboard>['getRowProps']>;\n}) {\n const { paths, Link } = useLinkComponent();\n const linkRef = useRef<HTMLAnchorElement>(null);\n const { workflow: wf, nestedIds } = row;\n const name = truncateString(wf.name, 50);\n const description = truncateString(wf.description ?? '', 200);\n const stepsCount = Object.keys(wf.steps ?? {}).length;\n const runningCount = runCount?.running ?? 0;\n const suspendedCount = runCount?.suspended ?? 0;\n const hasNested = nestedIds.length > 0;\n\n return (\n <DataList.RowWrapper {...rowProps} onSelectRow={() => linkRef.current?.click()}>\n <TreeToggleCell row={row} isExpanded={isExpanded} onToggle={onToggle} />\n <DataList.RowLink\n ref={linkRef}\n colStart={2}\n to={paths.workflowLink(wf.id)}\n LinkComponent={Link}\n tabIndex={-1}\n onClick={stopPropagation}\n >\n <DataList.NameCell>\n <span className=\"flex items-center gap-1.5\">\n {row.depth > 0 ? <TreeConnector guides={row.guides} isLastChild={row.isLastChild} /> : null}\n <span className=\"truncate\">{name}</span>\n {wf.origin === 'dynamic' ? (\n <Badge size=\"xs\" variant=\"blue\" title=\"Registered via the dynamic-workflows API\">\n Dynamic\n </Badge>\n ) : null}\n {hasNested ? (\n <Txt\n as=\"span\"\n variant=\"body-sm\"\n tone=\"muted\"\n title={`Nested workflows: ${nestedIds.join(', ')}`}\n className=\"inline-flex shrink-0 items-center gap-1\"\n >\n <WorkflowIcon aria-hidden className=\"size-3.5\" />\n {nestedIds.length}\n </Txt>\n ) : null}\n </span>\n </DataList.NameCell>\n <DataList.DescriptionCell>{description}</DataList.DescriptionCell>\n <DataList.TextCell className=\"text-center\">\n {runningCount > 0 ? (\n <span\n className=\"inline-flex items-center gap-1.5 text-info-indicator\"\n aria-label={`${runningCount} run${runningCount === 1 ? '' : 's'} in progress`}\n >\n <span aria-hidden className=\"size-2 rounded-full bg-info-indicator motion-safe:animate-pulse\" />\n {runningCount}\n </span>\n ) : (\n ''\n )}\n </DataList.TextCell>\n <DataList.TextCell className=\"text-center\">\n {suspendedCount > 0 ? (\n <span\n className=\"inline-flex items-center gap-1.5 text-warning-foreground\"\n aria-label={`${suspendedCount} run${suspendedCount === 1 ? '' : 's'} awaiting input`}\n >\n <PauseIcon aria-hidden className=\"size-3.5\" />\n {suspendedCount}\n </span>\n ) : (\n ''\n )}\n </DataList.TextCell>\n <DataList.TextCell className=\"text-center\">{stepsCount || ''}</DataList.TextCell>\n </DataList.RowLink>\n </DataList.RowWrapper>\n );\n}\n\nexport function WorkflowsList({\n workflows,\n isLoading,\n search = '',\n sort,\n onSortChange,\n requestContext,\n}: WorkflowsListProps) {\n const [expandedPaths, setExpandedPaths] = useState<ReadonlySet<string>>(new Set());\n const runCounts = useWorkflowsRunCounts({ requestContext });\n\n const workflowData = useMemo(\n () =>\n Object.entries(workflows).map(([key, workflow]) => ({\n ...workflow,\n id: key,\n })),\n [workflows],\n );\n\n const filteredData = useMemo(() => {\n const term = search.toLowerCase();\n return workflowData.filter(\n wf => wf.name?.toLowerCase().includes(term) || wf.description?.toLowerCase().includes(term),\n );\n }, [workflowData, search]);\n\n // Sort applies to root workflows only; nested rows keep their tree order.\n const sortedData = useMemo(() => sortWorkflows(filteredData, sort, runCounts), [filteredData, sort, runCounts]);\n\n const rows = useMemo(\n () => flattenWorkflowTree(sortedData, workflows, expandedPaths),\n [sortedData, workflows, expandedPaths],\n );\n\n // Unregistered rows are non-interactive; keyboard navigation only visits workflow rows.\n const interactiveIndexByPathKey = useMemo(() => {\n const map = new Map<string, number>();\n for (const row of rows) {\n if (row.kind === 'workflow') map.set(row.pathKey, map.size);\n }\n return map;\n }, [rows]);\n\n const { containerRef, getRowProps } = useDataListKeyboard({ count: interactiveIndexByPathKey.size, global: true });\n\n const toggleExpanded = (pathKey: string) => {\n setExpandedPaths(previous => {\n const next = new Set(previous);\n if (next.has(pathKey)) {\n next.delete(pathKey);\n } else {\n next.add(pathKey);\n }\n return next;\n });\n };\n\n if (isLoading) {\n return <DataListSkeleton columns={GRID_COLUMNS} fit=\"container\" />;\n }\n\n return (\n <DataList columns={GRID_COLUMNS} fit=\"container\" scrollRef={containerRef}>\n <DataList.Top>\n <DataList.TopCell>\n <span className=\"sr-only\">Expand</span>\n </DataList.TopCell>\n <SortHeader sortKey=\"name\" sort={sort} onSortChange={onSortChange}>\n Name\n </SortHeader>\n <DataList.TopCell>Description</DataList.TopCell>\n <SortHeader sortKey=\"running\" sort={sort} onSortChange={onSortChange}>\n Running\n </SortHeader>\n <SortHeader sortKey=\"suspended\" sort={sort} onSortChange={onSortChange}>\n Pending input\n </SortHeader>\n <SortHeader sortKey=\"steps\" sort={sort} onSortChange={onSortChange}>\n Number of steps\n </SortHeader>\n </DataList.Top>\n\n {rows.length === 0 && search ? <DataList.NoMatch message=\"No Workflows match your search\" /> : null}\n\n {rows.map(row => {\n const isExpanded = expandedPaths.has(row.pathKey);\n const toggle = () => toggleExpanded(row.pathKey);\n\n if (row.kind === 'unregistered') {\n // Mirrors WorkflowRow's RowWrapper + RowLink layout, minus hover and press states.\n return (\n <DataList.RowStatic key={`workflow-${row.pathKey}`} className=\"gap-0 px-0\">\n <TreeToggleCell row={row} isExpanded={isExpanded} onToggle={toggle} />\n <div className=\"col-span-5 col-start-2 grid grid-cols-subgrid gap-4 px-3\">\n <DataList.NameCell>\n <span className=\"flex items-center gap-1.5\">\n <TreeConnector guides={row.guides} isLastChild={row.isLastChild} />\n <span className=\"truncate\">{truncateString(row.stepId, 50)}</span>\n <Tooltip>\n <TooltipTrigger\n render={<Txt as=\"span\" variant=\"body-sm\" tone=\"muted\" />}\n role=\"note\"\n tabIndex={0}\n className={cn('shrink-0 rounded-sm', focusRing)}\n >\n not registered\n </TooltipTrigger>\n <TooltipContent className=\"max-w-72\">\n Runs as a step of its parent workflow. Add it to the workflows of your Mastra instance to open,\n run, and inspect it on its own page.\n </TooltipContent>\n </Tooltip>\n </span>\n </DataList.NameCell>\n <DataList.DescriptionCell>{truncateString(row.description ?? '', 200)}</DataList.DescriptionCell>\n <DataList.TextCell className=\"text-center\">{''}</DataList.TextCell>\n <DataList.TextCell className=\"text-center\">{''}</DataList.TextCell>\n <DataList.TextCell className=\"text-center\">{''}</DataList.TextCell>\n </div>\n </DataList.RowStatic>\n );\n }\n\n return (\n <WorkflowRow\n key={`workflow-${row.pathKey}`}\n row={row}\n isExpanded={isExpanded}\n onToggle={toggle}\n runCount={runCounts[row.workflow.id]}\n rowProps={getRowProps(interactiveIndexByPathKey.get(row.pathKey) ?? -1)}\n />\n );\n })}\n </DataList>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workflows-list.es.js","sources":["../../../../../src/domains/workflows/components/workflows-list/workflows-list.tsx"],"sourcesContent":["import type { GetWorkflowResponse } from '@mastra/client-js';\nimport { useWorkflowsRunCounts } from '@mastra/react/hooks/workflows';\nimport { PauseIcon, WorkflowIcon } from 'lucide-react';\nimport { useMemo, useRef, useState } from 'react';\nimport type { SyntheticEvent } from 'react';\nimport { sortWorkflows } from './workflows-sort';\nimport type { WorkflowsSort, WorkflowsSortKey } from './workflows-sort';\nimport { flattenWorkflowTree } from '@/domains/workflows/utils/nested-workflows';\nimport type { WorkflowTreeRow } from '@/domains/workflows/utils/nested-workflows';\nimport { Badge } from '@/ds/components/Badge';\nimport type { DataListSort } from '@/ds/components/DataList';\nimport { DataList, DataListSkeleton, useDataListKeyboard } from '@/ds/components/DataList';\nimport { DisclosureChevron } from '@/ds/components/DisclosureChevron';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { Txt } from '@/ds/components/Txt';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { quietTextHover } from '@/ds/primitives/typography';\nimport { useLinkComponent } from '@/lib/framework';\nimport { cn } from '@/utils/cn';\nimport { truncateString } from '@/utils/truncate-string';\n\nexport interface WorkflowsListProps {\n workflows: Record<string, GetWorkflowResponse>;\n isLoading: boolean;\n search?: string;\n sort?: WorkflowsSort;\n onSortChange?: (direction: DataListSort, key: WorkflowsSortKey) => void;\n requestContext?: Record<string, any>;\n}\n\n// Leading fixed expander column (outside the row link), then Name /\n// Description / Running / Pending input / Steps. The Name column width is\n// FIXED so tree indentation grows inside it (names truncate) — expanding\n// nested levels can never widen columns and shift the table.\nconst GRID_COLUMNS = 'auto 24rem minmax(0, 1fr) auto auto auto';\n\n/**\n * Tree connector for nested rows: one vertical guide per ancestor level that\n * has more siblings below, then a ├ stub (└ for the last child) linking the\n * row to its parent. Overshooting vertical margins let the lines span the\n * full row height; the cell's overflow clipping trims the excess.\n */\nfunction TreeConnector({ guides, isLastChild }: { guides: boolean[]; isLastChild: boolean }) {\n return (\n <span aria-hidden className=\"-my-6 flex shrink-0 self-stretch\">\n {guides.map((show, index) => (\n <span key={index} className={cn('w-6', show && 'border-l border-border')} />\n ))}\n <span className=\"relative w-6\">\n <span className={cn('absolute top-0 left-0 border-l border-border', isLastChild ? 'h-1/2' : 'h-full')} />\n <span className=\"absolute top-1/2 left-0 w-3.5 border-b border-border\" />\n </span>\n </span>\n );\n}\n\n/**\n * Fixed-width expander cell at the start of every row. Only the button lives\n * here — OUTSIDE the row link, so the toggle is never an interactive element\n * nested inside the anchor — while the tree lines stay in the Name cell. The\n * cell's content is identical in size on every row, so expanding a deep tree\n * never widens the column and shifts the table.\n */\nfunction TreeToggleCell({\n row,\n isExpanded,\n onToggle,\n}: {\n row: WorkflowTreeRow;\n isExpanded: boolean;\n onToggle: () => void;\n}) {\n const hasToggle = row.kind === 'workflow' && row.nestedIds.length > 0;\n const workflowName = row.kind === 'workflow' ? row.workflow.name : row.stepId;\n\n return (\n <div className=\"flex items-center pl-5\">\n {hasToggle ? (\n <button\n type=\"button\"\n aria-expanded={isExpanded}\n aria-label={`${isExpanded ? 'Collapse' : 'Expand'} nested workflows of ${workflowName}`}\n className={cn(\n quietTextHover,\n \"relative grid size-5 shrink-0 place-items-center before:absolute before:-inset-1.5 before:content-['']\",\n )}\n onClick={event => {\n event.stopPropagation();\n onToggle();\n }}\n >\n <DisclosureChevron direction=\"right\" className=\"size-4\" />\n </button>\n ) : (\n <span className=\"size-5 shrink-0\" aria-hidden />\n )}\n </div>\n );\n}\n\nconst stopPropagation = (event: SyntheticEvent) => event.stopPropagation();\n\n/** Sortable header when the parent owns sort state; plain header otherwise. */\nfunction SortHeader({\n sortKey,\n sort,\n onSortChange,\n children,\n}: Pick<WorkflowsListProps, 'sort' | 'onSortChange'> & { sortKey: WorkflowsSortKey; children: string }) {\n if (!onSortChange) return <DataList.TopCell>{children}</DataList.TopCell>;\n return (\n <DataList.SortableTopCell\n sortKey={sortKey}\n sort={sort?.key === sortKey ? sort.direction : undefined}\n onSortChange={direction => onSortChange(direction, sortKey)}\n >\n {children}\n </DataList.SortableTopCell>\n );\n}\n\n/**\n * Wrapper owns focus/roving and activation so the expander gutter also\n * navigates; the link and the toggle stop propagation to avoid double\n * activation.\n */\nfunction WorkflowRow({\n row,\n isExpanded,\n onToggle,\n runCount,\n rowProps,\n}: {\n row: Extract<WorkflowTreeRow, { kind: 'workflow' }>;\n isExpanded: boolean;\n onToggle: () => void;\n runCount: { running?: number; suspended?: number } | undefined;\n rowProps: ReturnType<ReturnType<typeof useDataListKeyboard>['getRowProps']>;\n}) {\n const { paths, Link } = useLinkComponent();\n const linkRef = useRef<HTMLAnchorElement>(null);\n const { workflow: wf, nestedIds } = row;\n const name = truncateString(wf.name, 50);\n const description = truncateString(wf.description ?? '', 200);\n const stepsCount = Object.keys(wf.steps ?? {}).length;\n const runningCount = runCount?.running ?? 0;\n const suspendedCount = runCount?.suspended ?? 0;\n const hasNested = nestedIds.length > 0;\n\n return (\n <DataList.RowWrapper {...rowProps} onSelectRow={() => linkRef.current?.click()}>\n <TreeToggleCell row={row} isExpanded={isExpanded} onToggle={onToggle} />\n <DataList.RowLink\n ref={linkRef}\n colStart={2}\n to={paths.workflowLink(wf.id)}\n LinkComponent={Link}\n tabIndex={-1}\n onClick={stopPropagation}\n >\n <DataList.NameCell>\n <span className=\"flex items-center gap-1.5\">\n {row.depth > 0 ? <TreeConnector guides={row.guides} isLastChild={row.isLastChild} /> : null}\n <span className=\"truncate\">{name}</span>\n {wf.origin === 'dynamic' ? (\n <Badge size=\"xs\" variant=\"blue\" title=\"Registered via the dynamic-workflows API\">\n Dynamic\n </Badge>\n ) : null}\n {hasNested ? (\n <Txt\n as=\"span\"\n variant=\"body-sm\"\n tone=\"muted\"\n title={`Nested workflows: ${nestedIds.join(', ')}`}\n className=\"inline-flex shrink-0 items-center gap-1\"\n >\n <WorkflowIcon aria-hidden className=\"size-3.5\" />\n {nestedIds.length}\n </Txt>\n ) : null}\n </span>\n </DataList.NameCell>\n <DataList.DescriptionCell>{description}</DataList.DescriptionCell>\n <DataList.TextCell className=\"text-center\">\n {runningCount > 0 ? (\n <span\n className=\"inline-flex items-center gap-1.5 text-info-indicator\"\n aria-label={`${runningCount} run${runningCount === 1 ? '' : 's'} in progress`}\n >\n <span aria-hidden className=\"size-2 rounded-full bg-info-indicator motion-safe:animate-pulse\" />\n {runningCount}\n </span>\n ) : (\n ''\n )}\n </DataList.TextCell>\n <DataList.TextCell className=\"text-center\">\n {suspendedCount > 0 ? (\n <span\n className=\"inline-flex items-center gap-1.5 text-warning-foreground\"\n aria-label={`${suspendedCount} run${suspendedCount === 1 ? '' : 's'} awaiting input`}\n >\n <PauseIcon aria-hidden className=\"size-3.5\" />\n {suspendedCount}\n </span>\n ) : (\n ''\n )}\n </DataList.TextCell>\n <DataList.TextCell className=\"text-center\">{stepsCount || ''}</DataList.TextCell>\n </DataList.RowLink>\n </DataList.RowWrapper>\n );\n}\n\nexport function WorkflowsList({\n workflows,\n isLoading,\n search = '',\n sort,\n onSortChange,\n requestContext,\n}: WorkflowsListProps) {\n const [expandedPaths, setExpandedPaths] = useState<ReadonlySet<string>>(new Set());\n const runCounts = useWorkflowsRunCounts({ requestContext });\n\n const workflowData = useMemo(\n () =>\n Object.entries(workflows).map(([key, workflow]) => ({\n ...workflow,\n id: key,\n })),\n [workflows],\n );\n\n const filteredData = useMemo(() => {\n const term = search.toLowerCase();\n return workflowData.filter(\n wf => wf.name?.toLowerCase().includes(term) || wf.description?.toLowerCase().includes(term),\n );\n }, [workflowData, search]);\n\n // Sort applies to root workflows only; nested rows keep their tree order.\n const sortedData = useMemo(() => sortWorkflows(filteredData, sort, runCounts), [filteredData, sort, runCounts]);\n\n const rows = useMemo(\n () => flattenWorkflowTree(sortedData, workflows, expandedPaths),\n [sortedData, workflows, expandedPaths],\n );\n\n // Unregistered rows are non-interactive; keyboard navigation only visits workflow rows.\n const interactiveIndexByPathKey = useMemo(() => {\n const map = new Map<string, number>();\n for (const row of rows) {\n if (row.kind === 'workflow') map.set(row.pathKey, map.size);\n }\n return map;\n }, [rows]);\n\n const { containerRef, getRowProps } = useDataListKeyboard({ count: interactiveIndexByPathKey.size, global: true });\n\n const toggleExpanded = (pathKey: string) => {\n setExpandedPaths(previous => {\n const next = new Set(previous);\n if (next.has(pathKey)) {\n next.delete(pathKey);\n } else {\n next.add(pathKey);\n }\n return next;\n });\n };\n\n if (isLoading) {\n return <DataListSkeleton columns={GRID_COLUMNS} fit=\"container\" />;\n }\n\n return (\n <DataList columns={GRID_COLUMNS} fit=\"container\" scrollRef={containerRef}>\n <DataList.Top>\n <DataList.TopCell>\n <span className=\"sr-only\">Expand</span>\n </DataList.TopCell>\n <SortHeader sortKey=\"name\" sort={sort} onSortChange={onSortChange}>\n Name\n </SortHeader>\n <DataList.TopCell>Description</DataList.TopCell>\n <SortHeader sortKey=\"running\" sort={sort} onSortChange={onSortChange}>\n Running\n </SortHeader>\n <SortHeader sortKey=\"suspended\" sort={sort} onSortChange={onSortChange}>\n Pending input\n </SortHeader>\n <SortHeader sortKey=\"steps\" sort={sort} onSortChange={onSortChange}>\n Number of steps\n </SortHeader>\n </DataList.Top>\n\n {rows.length === 0 && search ? <DataList.NoMatch message=\"No Workflows match your search\" /> : null}\n\n {rows.map(row => {\n const isExpanded = expandedPaths.has(row.pathKey);\n const toggle = () => toggleExpanded(row.pathKey);\n\n if (row.kind === 'unregistered') {\n // Mirrors WorkflowRow's RowWrapper + RowLink layout, minus hover and press states.\n return (\n <DataList.RowStatic key={`workflow-${row.pathKey}`} className=\"gap-0 px-0\">\n <TreeToggleCell row={row} isExpanded={isExpanded} onToggle={toggle} />\n <div className=\"col-span-5 col-start-2 grid grid-cols-subgrid gap-4 px-3\">\n <DataList.NameCell>\n <span className=\"flex items-center gap-1.5\">\n <TreeConnector guides={row.guides} isLastChild={row.isLastChild} />\n <span className=\"truncate\">{truncateString(row.stepId, 50)}</span>\n <Tooltip>\n <TooltipTrigger\n render={<Txt as=\"span\" variant=\"body-sm\" tone=\"muted\" />}\n role=\"note\"\n tabIndex={0}\n className={cn('shrink-0 rounded-sm', focusRing)}\n >\n not registered\n </TooltipTrigger>\n <TooltipContent className=\"max-w-72\">\n Runs as a step of its parent workflow. Add it to the workflows of your Mastra instance to open,\n run, and inspect it on its own page.\n </TooltipContent>\n </Tooltip>\n </span>\n </DataList.NameCell>\n <DataList.DescriptionCell>{truncateString(row.description ?? '', 200)}</DataList.DescriptionCell>\n <DataList.TextCell className=\"text-center\">{''}</DataList.TextCell>\n <DataList.TextCell className=\"text-center\">{''}</DataList.TextCell>\n <DataList.TextCell className=\"text-center\">{''}</DataList.TextCell>\n </div>\n </DataList.RowStatic>\n );\n }\n\n return (\n <WorkflowRow\n key={`workflow-${row.pathKey}`}\n row={row}\n isExpanded={isExpanded}\n onToggle={toggle}\n runCount={runCounts[row.workflow.id]}\n rowProps={getRowProps(interactiveIndexByPathKey.get(row.pathKey) ?? -1)}\n />\n );\n })}\n </DataList>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -4,13 +4,13 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
4
4
|
|
|
5
5
|
const jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
const workflows = require('@mastra/react/hooks/workflows');
|
|
7
|
-
const lucideReact = require('lucide-react');
|
|
8
7
|
const React = require('react');
|
|
9
8
|
const zod = require('zod');
|
|
10
9
|
const domains_workflows_components_workflowRunStatusIcon = require('../components/workflow-run-status-icon.cjs.js');
|
|
11
10
|
const domains_workflows_utils = require('../utils.cjs.js');
|
|
12
11
|
const alertDialog = require('../../../alert-dialog-B0lV1i6F.cjs');
|
|
13
|
-
const collapsible = require('../../../collapsible-
|
|
12
|
+
const collapsible = require('../../../collapsible-C6BZhVRG.cjs');
|
|
13
|
+
const disclosureChevron = require('../../../disclosure-chevron-B_gmYFR5.cjs');
|
|
14
14
|
const scrollArea = require('../../../scroll-area-CVgjRzTS.cjs');
|
|
15
15
|
const skeleton = require('../../../skeleton-bUFvB8ok.cjs');
|
|
16
16
|
const spinner = require('../../../spinner-BW4nHg_A.cjs');
|
|
@@ -83,7 +83,7 @@ const WorkflowRecentRuns = ({ workflowId, runId, canDelete: canDeleteRun }) => {
|
|
|
83
83
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
84
84
|
/* @__PURE__ */ jsxRuntime.jsxs(collapsible.Collapsible, { open: isOpen, onOpenChange: setIsOpen, className: "flex min-h-0 flex-col", children: [
|
|
85
85
|
/* @__PURE__ */ jsxRuntime.jsxs(collapsible.CollapsibleTrigger, { className: "flex shrink-0 items-center gap-2 px-4 py-3 text-left text-caption text-muted-foreground", children: [
|
|
86
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
86
|
+
/* @__PURE__ */ jsxRuntime.jsx(disclosureChevron.DisclosureChevron, { direction: "right", className: "size-4 text-muted-foreground" }),
|
|
87
87
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "Recent runs" }),
|
|
88
88
|
!isLoading && !error && /* @__PURE__ */ jsxRuntime.jsxs(Txt.Txt, { as: "span", variant: "meta", tone: "muted", children: [
|
|
89
89
|
runList.length,
|