@mastra/playground-ui 63.1.0-alpha.2 → 63.1.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/{code-Dcah35Gp.cjs → code-DJReJPSX.cjs} +3 -2
- package/dist/code-DJReJPSX.cjs.map +1 -0
- package/dist/{code-DAXWNzvf.js → code-DLuATvYu.js} +3 -2
- package/dist/code-DLuATvYu.js.map +1 -0
- package/dist/{code-block-BzUcNWrb.js → code-block-BQV4o92x.js} +2 -2
- package/dist/{code-block-BzUcNWrb.js.map → code-block-BQV4o92x.js.map} +1 -1
- package/dist/{code-block-CKLCdWtP.cjs → code-block-DZb0Tb3k.cjs} +2 -2
- package/dist/{code-block-CKLCdWtP.cjs.map → code-block-DZb0Tb3k.cjs.map} +1 -1
- package/dist/components/Code.cjs.js +1 -1
- package/dist/components/Code.es.js +1 -1
- package/dist/components/CodeBlock.cjs.js +1 -1
- package/dist/components/CodeBlock.es.js +1 -1
- package/dist/components/ContentBlocks.cjs.js +6 -2
- package/dist/components/ContentBlocks.cjs.js.map +1 -1
- package/dist/components/ContentBlocks.es.js +6 -2
- package/dist/components/ContentBlocks.es.js.map +1 -1
- package/dist/components/DataCodeSection.cjs.js +1 -1
- package/dist/components/DataCodeSection.es.js +1 -1
- package/dist/components/DataDetailsPanel.cjs.js +1 -1
- package/dist/components/DataDetailsPanel.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/DateTimeRangePicker.cjs.js +1 -1
- package/dist/components/DateTimeRangePicker.es.js +1 -1
- package/dist/components/EnvironmentVariablesEditor.cjs.js +1 -1
- package/dist/components/EnvironmentVariablesEditor.es.js +1 -1
- 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/LogsDataList.cjs.js +3 -3
- package/dist/components/LogsDataList.es.js +3 -3
- package/dist/components/MarkdownRenderer.cjs.js +1 -1
- package/dist/components/MarkdownRenderer.es.js +1 -1
- package/dist/components/SavedViews.cjs.js +1 -1
- package/dist/components/SavedViews.es.js +1 -1
- package/dist/components/Sidebar.cjs.js +33 -0
- package/dist/components/Sidebar.cjs.js.map +1 -1
- package/dist/components/Sidebar.es.js +33 -1
- package/dist/components/Sidebar.es.js.map +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 +1 -1
- package/dist/components/ai/activity.es.js +1 -1
- package/dist/components/ai/plan.cjs.js +1 -1
- package/dist/components/ai/plan.es.js +1 -1
- package/dist/components/ai/tool-approval.cjs.js +1 -1
- package/dist/components/ai/tool-approval.es.js +1 -1
- package/dist/components/ai/tool-call.cjs.js +1 -1
- package/dist/components/ai/tool-call.es.js +1 -1
- package/dist/{data-code-section-BB2RWius.cjs → data-code-section-DCuBY9Mf.cjs} +2 -2
- package/dist/{data-code-section-BB2RWius.cjs.map → data-code-section-DCuBY9Mf.cjs.map} +1 -1
- package/dist/{data-code-section-DsU-ubVW.js → data-code-section-DOSV2o6P.js} +2 -2
- package/dist/{data-code-section-DsU-ubVW.js.map → data-code-section-DOSV2o6P.js.map} +1 -1
- package/dist/{data-list-BbOYiz4B.js → data-list-B4Ho_OCZ.js} +5 -2
- package/dist/data-list-B4Ho_OCZ.js.map +1 -0
- package/dist/{data-list-2svaWtkq.cjs → data-list-CYpGCm6F.cjs} +5 -2
- package/dist/data-list-CYpGCm6F.cjs.map +1 -0
- package/dist/{data-list-skeleton-C9Zm5XMX.js → data-list-skeleton-AfVi5OHw.js} +2 -2
- package/dist/{data-list-skeleton-C9Zm5XMX.js.map → data-list-skeleton-AfVi5OHw.js.map} +1 -1
- package/dist/{data-list-skeleton-C-j6Sf0F.cjs → data-list-skeleton-CIfVTfq4.cjs} +2 -2
- package/dist/{data-list-skeleton-C-j6Sf0F.cjs.map → data-list-skeleton-CIfVTfq4.cjs.map} +1 -1
- package/dist/{data-panel-CwIdwpov.js → data-panel-C8sHDwrx.js} +2 -2
- package/dist/{data-panel-CwIdwpov.js.map → data-panel-C8sHDwrx.js.map} +1 -1
- package/dist/{data-panel-CtFwwsPs.cjs → data-panel-DIVqWg0V.cjs} +2 -2
- package/dist/{data-panel-CtFwwsPs.cjs.map → data-panel-DIVqWg0V.cjs.map} +1 -1
- package/dist/{date-time-range-picker-BT9qan60.js → date-time-range-picker-B9me2TUa.js} +21 -4
- package/dist/date-time-range-picker-B9me2TUa.js.map +1 -0
- package/dist/{date-time-range-picker-DQa5XLST.cjs → date-time-range-picker-CyoaOAsi.cjs} +21 -4
- package/dist/date-time-range-picker-CyoaOAsi.cjs.map +1 -0
- package/dist/domains/chat/messages/renderers/message-text.cjs.js +1 -1
- package/dist/domains/chat/messages/renderers/message-text.es.js +1 -1
- package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
- package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
- package/dist/domains/chat/messages/skill-message.cjs.js +1 -1
- package/dist/domains/chat/messages/skill-message.es.js +1 -1
- package/dist/domains/chat/messages/tripwire-notice.cjs.js +1 -1
- package/dist/domains/chat/messages/tripwire-notice.es.js +1 -1
- package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +2 -2
- package/dist/domains/chat/tools/badges/code-mode-badge.es.js +2 -2
- package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/file-tree-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +2 -2
- package/dist/domains/chat/tools/badges/observation-marker-details.es.js +2 -2
- package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
- package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/tool-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/tool-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/workflow-badge.es.js +1 -1
- package/dist/domains/chat/tools/submit-plan-tool.cjs.js +1 -1
- package/dist/domains/chat/tools/submit-plan-tool.es.js +1 -1
- package/dist/domains/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/metrics/components/date-range-selector.cjs.js +1 -1
- package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
- package/dist/domains/metrics/drilldown.cjs.js +1 -1
- package/dist/domains/metrics/drilldown.es.js +1 -1
- package/dist/domains/metrics/metrics-filters.cjs.js +1 -1
- package/dist/domains/metrics/metrics-filters.es.js +1 -1
- package/dist/domains/scores/components/score-data-panel.cjs.js +1 -1
- package/dist/domains/scores/components/score-data-panel.es.js +1 -1
- package/dist/domains/scores/components/trace-scores-tab.cjs.js +1 -1
- package/dist/domains/scores/components/trace-scores-tab.es.js +1 -1
- package/dist/domains/traces/components/span-data-panel-view.cjs.js +2 -2
- package/dist/domains/traces/components/span-data-panel-view.es.js +2 -2
- package/dist/domains/traces/components/span-details-view.cjs.js +1 -1
- package/dist/domains/traces/components/span-details-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-json.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-json.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +1 -1
- package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
- package/dist/domains/traces/components/span-summary-description.es.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
- package/dist/domains/traces/components/thread-view-by-trace.cjs.js +2 -2
- package/dist/domains/traces/components/thread-view-by-trace.cjs.js.map +1 -1
- package/dist/domains/traces/components/thread-view-by-trace.es.js +2 -2
- package/dist/domains/traces/components/thread-view-by-trace.es.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js +1 -1
- package/dist/domains/traces/components/trace-data-panel-view.es.js +1 -1
- package/dist/domains/traces/components/trace-data-panel.cjs.js +1 -1
- package/dist/domains/traces/components/trace-data-panel.es.js +1 -1
- package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
- package/dist/domains/traces/components/trace-id-button.es.js +1 -1
- package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
- package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
- package/dist/domains/traces/components/trace-thread-panel.cjs.js +1 -1
- package/dist/domains/traces/components/trace-thread-panel.es.js +1 -1
- package/dist/domains/traces/components/trace-time-range-chip.cjs.js +3 -3
- package/dist/domains/traces/components/trace-time-range-chip.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-time-range-chip.es.js +3 -3
- package/dist/domains/traces/components/trace-time-range-chip.es.js.map +1 -1
- package/dist/domains/traces/components/traces-error-content.cjs.js +1 -1
- package/dist/domains/traces/components/traces-error-content.es.js +1 -1
- package/dist/domains/traces/components/traces-list-view.cjs.js +3 -3
- package/dist/domains/traces/components/traces-list-view.es.js +3 -3
- 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/hooks/use-trace-filter-persistence.cjs.js +1 -1
- package/dist/domains/traces/hooks/use-trace-filter-persistence.es.js +1 -1
- package/dist/domains/traces/hooks/use-trace-url-state.cjs.js +1 -1
- package/dist/domains/traces/hooks/use-trace-url-state.es.js +1 -1
- package/dist/domains/traces/hooks/use-traces-list-source.cjs.js +15 -3
- package/dist/domains/traces/hooks/use-traces-list-source.cjs.js.map +1 -1
- package/dist/domains/traces/hooks/use-traces-list-source.es.js +13 -4
- package/dist/domains/traces/hooks/use-traces-list-source.es.js.map +1 -1
- package/dist/domains/traces/trace-filters.cjs.js +1 -1
- package/dist/domains/traces/trace-filters.es.js +1 -1
- package/dist/domains/traces/trace-query-filters.cjs.js +1 -3
- package/dist/domains/traces/trace-query-filters.cjs.js.map +1 -1
- package/dist/domains/traces/trace-query-filters.es.js +1 -1
- package/dist/domains/traces.cjs.js +1 -3
- package/dist/domains/traces.cjs.js.map +1 -1
- package/dist/domains/traces.es.js +1 -1
- package/dist/domains/workflows/components/workflow-step-detail.cjs.js +2 -2
- package/dist/domains/workflows/components/workflow-step-detail.es.js +2 -2
- package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +2 -2
- package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +2 -2
- package/dist/domains/workflows/workflow/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-graph-boundary.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-boundary.es.js +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-nested-graph.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +2 -2
- package/dist/domains/workspace/components/workspace-active-file.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-active-file.es.js +1 -1
- package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +1 -1
- package/dist/domains/workspace/components/workspace-markdown-preview.cjs.js +2 -2
- package/dist/domains/workspace/components/workspace-markdown-preview.es.js +2 -2
- package/dist/ee/signals/components/entity-index-list.cjs.js +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 +2 -2
- package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +2 -2
- package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +1 -1
- package/dist/ee/topics/components/topic-trace-summary-list.es.js +1 -1
- package/dist/{errors-BiY55qIh.cjs → errors-7WFF-9EC.cjs} +3 -2
- package/dist/errors-7WFF-9EC.cjs.map +1 -0
- package/dist/{errors-CDTokuME.js → errors-BFVXW8Dr.js} +3 -2
- package/dist/errors-BFVXW8Dr.js.map +1 -0
- package/dist/{filter-bar-chip-BBErw_aR.cjs → filter-bar-chip-CYCOeX1B.cjs} +8 -4
- package/dist/filter-bar-chip-CYCOeX1B.cjs.map +1 -0
- package/dist/{filter-bar-chip-DvRTWRwT.js → filter-bar-chip-U55TxGOw.js} +8 -4
- package/dist/filter-bar-chip-U55TxGOw.js.map +1 -0
- package/dist/hooks/use-local-storage-store.cjs.js +71 -0
- package/dist/hooks/use-local-storage-store.cjs.js.map +1 -0
- package/dist/hooks/use-local-storage-store.d.ts +2 -0
- package/dist/hooks/use-local-storage-store.es.js +66 -0
- package/dist/hooks/use-local-storage-store.es.js.map +1 -0
- package/dist/layout/tabbed-container.cjs.js +1 -1
- package/dist/layout/tabbed-container.es.js +1 -1
- package/dist/{logs-data-list-D4sVbF23.cjs → logs-data-list-Bh_wPam2.cjs} +2 -2
- package/dist/{logs-data-list-D4sVbF23.cjs.map → logs-data-list-Bh_wPam2.cjs.map} +1 -1
- package/dist/{logs-data-list-0_z4s0Sj.js → logs-data-list-CZ2TvWyb.js} +2 -2
- package/dist/{logs-data-list-0_z4s0Sj.js.map → logs-data-list-CZ2TvWyb.js.map} +1 -1
- package/dist/{markdown-renderer-WesDzhMr.js → markdown-renderer-B55LVMsv.js} +2 -2
- package/dist/{markdown-renderer-WesDzhMr.js.map → markdown-renderer-B55LVMsv.js.map} +1 -1
- package/dist/{markdown-renderer-BRu3RpQD.cjs → markdown-renderer-B8Zmudqn.cjs} +2 -2
- package/dist/{markdown-renderer-BRu3RpQD.cjs.map → markdown-renderer-B8Zmudqn.cjs.map} +1 -1
- package/dist/{plan-ColU7p3H.cjs → plan-BxKWT5Jc.cjs} +2 -2
- package/dist/{plan-ColU7p3H.cjs.map → plan-BxKWT5Jc.cjs.map} +1 -1
- package/dist/{plan-CBiLa54G.js → plan-CoeSire7.js} +2 -2
- package/dist/{plan-CBiLa54G.js.map → plan-CoeSire7.js.map} +1 -1
- package/dist/{reasoning-activity-DLrXgE9k.js → reasoning-activity-C6KlS9dD.js} +2 -2
- package/dist/{reasoning-activity-DLrXgE9k.js.map → reasoning-activity-C6KlS9dD.js.map} +1 -1
- package/dist/{reasoning-activity-B8bR8ib_.cjs → reasoning-activity-DwvH_xWp.cjs} +2 -2
- package/dist/{reasoning-activity-B8bR8ib_.cjs.map → reasoning-activity-DwvH_xWp.cjs.map} +1 -1
- package/dist/{span-payload-primitives-DBNNkmHo.js → span-payload-primitives-DPAyz0rW.js} +2 -2
- package/dist/{span-payload-primitives-DBNNkmHo.js.map → span-payload-primitives-DPAyz0rW.js.map} +1 -1
- package/dist/{span-payload-primitives-BymKsUAo.cjs → span-payload-primitives-nXrFCYgn.cjs} +2 -2
- package/dist/{span-payload-primitives-BymKsUAo.cjs.map → span-payload-primitives-nXrFCYgn.cjs.map} +1 -1
- package/dist/src/domains/traces/components/trace-time-range-chip.d.ts +1 -1
- package/dist/src/domains/traces/hooks/use-traces-list-source.d.ts +6 -0
- package/dist/src/domains/traces/trace-query-filters.d.ts +0 -11
- package/dist/src/ds/components/ContentBlocks/content-blocks.d.ts +3 -2
- package/dist/src/ds/components/DataList/shared.d.ts +4 -4
- package/dist/src/ds/components/DateTimeRangePicker/custom-range-editor.d.ts +3 -1
- package/dist/src/ds/components/DateTimeRangePicker/date-time-range-picker.d.ts +3 -1
- package/dist/src/ds/components/FilterBar/filter-bar-context.d.ts +11 -1
- package/dist/src/ds/components/FilterBar/filter-bar.d.ts +6 -1
- package/dist/src/ds/components/Sidebar/index.d.ts +1 -0
- package/dist/src/ds/components/Sidebar/nav/sidebar-nav-show-more.d.ts +9 -0
- package/dist/src/ds/components/Sidebar/sidebar.d.ts +2 -0
- package/dist/src/hooks/use-local-storage-store.d.ts +15 -0
- package/dist/style.css +20 -0
- package/dist/{tool-approval-BK2j7aj_.js → tool-approval-CYmQJ2i4.js} +2 -2
- package/dist/{tool-approval-BK2j7aj_.js.map → tool-approval-CYmQJ2i4.js.map} +1 -1
- package/dist/{tool-approval-Bza_sgxa.cjs → tool-approval-aWNKG9dK.cjs} +2 -2
- package/dist/{tool-approval-Bza_sgxa.cjs.map → tool-approval-aWNKG9dK.cjs.map} +1 -1
- package/dist/{tool-call-arguments-BLCAiFYg.js → tool-call-arguments-Bk13pV6A.js} +3 -3
- package/dist/{tool-call-arguments-BLCAiFYg.js.map → tool-call-arguments-Bk13pV6A.js.map} +1 -1
- package/dist/{tool-call-arguments-CK3kQ_FX.cjs → tool-call-arguments-DTwVq7AB.cjs} +3 -3
- package/dist/{tool-call-arguments-CK3kQ_FX.cjs.map → tool-call-arguments-DTwVq7AB.cjs.map} +1 -1
- package/dist/{trace-filters-C71gmCq4.js → trace-filters-C91h9X86.js} +2 -10
- package/dist/trace-filters-C91h9X86.js.map +1 -0
- package/dist/{trace-filters-Bh4dVNPX.cjs → trace-filters-Dz4oj8yV.cjs} +1 -11
- package/dist/trace-filters-Dz4oj8yV.cjs.map +1 -0
- package/dist/{traces-data-list-C05UwTiE.js → traces-data-list-BXotATNk.js} +2 -2
- package/dist/{traces-data-list-C05UwTiE.js.map → traces-data-list-BXotATNk.js.map} +1 -1
- package/dist/{traces-data-list-DPA5T14k.cjs → traces-data-list-D6pq_WLy.cjs} +2 -2
- package/dist/{traces-data-list-DPA5T14k.cjs.map → traces-data-list-D6pq_WLy.cjs.map} +1 -1
- package/dist/{use-workflow-graph-runtime-DX56livO.js → use-workflow-graph-runtime-S5G_ZvSM.js} +2 -2
- package/dist/{use-workflow-graph-runtime-DX56livO.js.map → use-workflow-graph-runtime-S5G_ZvSM.js.map} +1 -1
- package/dist/{use-workflow-graph-runtime-C8TkqjvM.cjs → use-workflow-graph-runtime-UxUOrRDb.cjs} +2 -2
- package/dist/{use-workflow-graph-runtime-C8TkqjvM.cjs.map → use-workflow-graph-runtime-UxUOrRDb.cjs.map} +1 -1
- package/dist/utils/errors.cjs.js +1 -1
- package/dist/utils/errors.es.js +1 -1
- package/dist/{workflow-condition-card-bn5mrwKe.cjs → workflow-condition-card-CHV32SJm.cjs} +2 -2
- package/dist/{workflow-condition-card-bn5mrwKe.cjs.map → workflow-condition-card-CHV32SJm.cjs.map} +1 -1
- package/dist/{workflow-condition-card-DMkPh5TM.js → workflow-condition-card-DNsQmIae.js} +2 -2
- package/dist/{workflow-condition-card-DMkPh5TM.js.map → workflow-condition-card-DNsQmIae.js.map} +1 -1
- package/package.json +8 -8
- package/dist/code-DAXWNzvf.js.map +0 -1
- package/dist/code-Dcah35Gp.cjs.map +0 -1
- package/dist/data-list-2svaWtkq.cjs.map +0 -1
- package/dist/data-list-BbOYiz4B.js.map +0 -1
- package/dist/date-time-range-picker-BT9qan60.js.map +0 -1
- package/dist/date-time-range-picker-DQa5XLST.cjs.map +0 -1
- package/dist/errors-BiY55qIh.cjs.map +0 -1
- package/dist/errors-CDTokuME.js.map +0 -1
- package/dist/filter-bar-chip-BBErw_aR.cjs.map +0 -1
- package/dist/filter-bar-chip-DvRTWRwT.js.map +0 -1
- package/dist/trace-filters-Bh4dVNPX.cjs.map +0 -1
- package/dist/trace-filters-C71gmCq4.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-workflow-graph-runtime-C8TkqjvM.cjs","sources":["../src/domains/workflows/workflow/workflow-nested-graph.tsx","../src/domains/workflows/workflow/workflow-body-graph.tsx","../src/domains/workflows/workflow/workflow-graph-node.tsx","../src/domains/workflows/workflow/use-workflow-graph-runtime.tsx"],"sourcesContent":["import type { SerializedStepFlowEntry } from '@mastra/core/workflows';\n\nimport { useMemo, useState } from 'react';\nimport { useCurrentRun } from '../context/use-current-run';\nimport { useWorkflowGraphNodes } from './use-workflow-graph-nodes';\nimport { useWorkflowGraphRuntime } from './use-workflow-graph-runtime';\nimport { WorkflowGraphBoundary } from './workflow-graph-boundary';\nimport { getWorkflowGraphGroups } from './workflow-graph-groups';\nimport { getWorkflowIterationScopes } from './workflow-iteration-scopes';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select';\nimport { Txt } from '@/ds/components/Txt';\nimport { WorkflowGraphCanvas, WORKFLOW_BOUNDARY_NODE_TYPE } from '@/ds/components/Workflow';\n\nexport interface WorkflowNestedGraphProps {\n stepGraph: SerializedStepFlowEntry[];\n workflowName: string;\n isForEach?: boolean;\n embedded?: boolean;\n requestContext: Record<string, any>;\n}\n\nexport function WorkflowNestedGraph(props: WorkflowNestedGraphProps) {\n const layoutKey = useMemo(\n () => `${props.workflowName}:${JSON.stringify(props.stepGraph)}`,\n [props.workflowName, props.stepGraph],\n );\n return (\n <WorkflowGraphBoundary key={layoutKey} stepGraph={props.stepGraph}>\n <WorkflowNestedGraphContent {...props} />\n </WorkflowGraphBoundary>\n );\n}\n\nfunction WorkflowNestedGraphContent({\n stepGraph,\n workflowName,\n isForEach,\n embedded,\n requestContext,\n}: WorkflowNestedGraphProps) {\n const { nodes, edges, onNodesChange } = useWorkflowGraphNodes(stepGraph);\n const { steps } = useCurrentRun();\n const iterations = getWorkflowIterationScopes(Object.keys(steps), workflowName);\n const [selectedIteration, setSelectedIteration] = useState<string>();\n const activeIteration = iterations.find(iteration => iteration.value === selectedIteration) ?? iterations[0];\n\n const { edgeTypes, nodeTypes, styledEdges } = useWorkflowGraphRuntime({\n edges,\n workflowName: activeIteration?.value ?? workflowName,\n requestContext,\n });\n\n const labeledNodes = useMemo(\n () =>\n nodes.map(node => {\n if (!isForEach || node.type !== WORKFLOW_BOUNDARY_NODE_TYPE) return node;\n const label = node.data.boundaryRole === 'start' ? 'Each item' : 'Item result';\n return { ...node, data: { ...node.data, label } };\n }),\n [nodes, isForEach],\n );\n const groups = useMemo(() => getWorkflowGraphGroups(nodes), [nodes]);\n\n return (\n <div className=\"relative flex size-full flex-col\">\n {activeIteration && (\n <div className=\"nodrag nopan flex items-center gap-3 border-b border-border px-4 py-2\">\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n Iteration\n </Txt>\n <Select value={activeIteration.value} onValueChange={setSelectedIteration} items={iterations}>\n <SelectTrigger aria-label=\"Loop item\" size=\"sm\" className=\"w-36\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {iterations.map(iteration => (\n <SelectItem key={iteration.value} value={iteration.value}>\n {iteration.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n )}\n <div className=\"min-h-0 flex-1\">\n <WorkflowGraphCanvas\n variant={embedded ? 'inline' : 'nested'}\n groups={groups}\n nodes={labeledNodes}\n edges={styledEdges}\n edgeTypes={edgeTypes}\n nodeTypes={nodeTypes}\n onNodesChange={onNodesChange}\n />\n </div>\n </div>\n );\n}\n","import type { SerializedStepFlowEntry } from '@mastra/core/workflows';\nimport { ReactFlowProvider } from '@xyflow/react';\nimport { Repeat2 } from 'lucide-react';\nimport { WorkflowNestedGraph } from './workflow-nested-graph';\nimport { Txt } from '@/ds/components/Txt';\n\nexport function WorkflowBodyGraph({\n stepGraph,\n workflowName,\n isForEach,\n requestContext,\n}: {\n stepGraph: SerializedStepFlowEntry[];\n workflowName: string;\n isForEach?: boolean;\n requestContext: Record<string, any>;\n}) {\n return (\n <section aria-label={isForEach ? 'Loop body' : 'Nested workflow'} className=\"flex h-full min-h-0 flex-col\">\n {isForEach && (\n <div className=\"flex shrink-0 items-start gap-2 px-4 py-3 text-muted-foreground\">\n <Repeat2 aria-hidden className=\"mt-0.5 size-4 shrink-0 text-muted-foreground\" />\n <Txt variant=\"meta\">Runs for every item. All items finish before the workflow continues.</Txt>\n </div>\n )}\n <div className=\"min-h-0 flex-1 overflow-hidden\">\n <ReactFlowProvider>\n <WorkflowNestedGraph\n stepGraph={stepGraph}\n embedded\n workflowName={workflowName}\n isForEach={isForEach}\n requestContext={requestContext}\n />\n </ReactFlowProvider>\n </div>\n </section>\n );\n}\n","import type { NodeProps } from '@xyflow/react';\n\nimport { useCurrentRun } from '../context/use-current-run';\nimport type { Step } from '../context/use-current-run';\nimport { useWorkflowSelectedStep } from '../context/use-workflow-selected-step';\nimport { useWorkflowStepDetail } from '../context/workflow-step-detail-context';\nimport { isAwaitingInput, resolveStepSpan } from '../context/workflow-step-timing';\nimport { useWaitingStepKey } from './use-workflow-trigger';\nimport { WorkflowBodyGraph } from './workflow-body-graph';\nimport { getWorkflowCardKind } from './workflow-node-kind';\nimport { WorkflowStepActionBar } from './workflow-step-action-bar';\nimport type { WorkflowStepNode, WorkflowStepNodeData } from './workflow-step-node-utils';\nimport { WorkflowNodeFrame, WorkflowConditionCard, WorkflowStepCardView } from '@/ds/components/Workflow';\nimport type { WorkflowCardDisplayStatus } from '@/ds/components/Workflow';\n\nexport interface WorkflowGraphNodeProps {\n parentWorkflowName?: string;\n stepsFlow: Record<string, string[]>;\n requestContext: Record<string, any>;\n}\n\nconst getDisplayStatus = (step?: Step): { displayStatus: WorkflowCardDisplayStatus; isTripwire: boolean } => {\n const isTripwire = step?.status === 'failed' && step?.tripwire !== undefined;\n const displayStatus = step && isAwaitingInput(step) ? 'suspended' : step?.status;\n return {\n displayStatus: isTripwire ? 'tripwire' : displayStatus,\n isTripwire,\n };\n};\n\nconst WorkflowStepCard = ({\n data,\n parentWorkflowName,\n stepsFlow,\n requestContext,\n}: {\n data: WorkflowStepNodeData;\n parentWorkflowName?: string;\n stepsFlow: Record<string, string[]>;\n requestContext: Record<string, any>;\n}) => {\n const { steps } = useCurrentRun();\n const { selectedStepId, setSelectedStepId, hoverStepId, setHoverStepId } = useWorkflowSelectedStep();\n const { showNestedGraph } = useWorkflowStepDetail();\n const waitingStepKey = useWaitingStepKey();\n const { label, stepId, description } = data;\n const mapConfig = data.mapConfig ?? ('step' in data.workflowStep ? data.workflowStep.step?.mapConfig : undefined);\n const stepGraph =\n data.stepGraph ??\n ('step' in data.workflowStep ? data.workflowStep.step?.serializedStepFlow : undefined) ??\n (data.workflowStep.kind === 'nested-workflow-step' && data.workflowStep.flow.type === 'workflow'\n ? data.workflowStep.flow.serializedStepFlow\n : undefined);\n const fullLabel = parentWorkflowName ? `${parentWorkflowName}.${label}` : label;\n const stepKey = parentWorkflowName ? `${parentWorkflowName}.${stepId || label}` : stepId || label;\n const isSelected = selectedStepId === stepKey;\n const isWaiting = waitingStepKey === stepKey;\n const isHovered = hoverStepId === stepKey;\n const step = steps[stepKey];\n const { displayStatus, isTripwire } = getDisplayStatus(step);\n const stepSpan = step ? resolveStepSpan(step) : undefined;\n\n return (\n <WorkflowStepCardView\n label={data.mapContext?.label ?? label}\n nodeKind={getWorkflowCardKind(data.workflowStep)}\n onSelect={() => setSelectedStepId(stepKey)}\n initiallyOpen={!parentWorkflowName}\n body={\n stepGraph?.length ? (\n <WorkflowBodyGraph\n stepGraph={stepGraph}\n workflowName={fullLabel}\n isForEach={data.isForEach}\n requestContext={requestContext}\n />\n ) : undefined\n }\n description={description ?? data.mapContext?.description}\n displayStatus={displayStatus}\n isNestedWorkflowStep={data.workflowStep.kind === 'nested-workflow-step'}\n stepKey={stepKey}\n isSelected={isSelected}\n isWaiting={isWaiting}\n isHovered={isHovered}\n onHoverChange={isHovered => setHoverStepId(isHovered ? stepKey : null)}\n duration={data.duration}\n date={data.date}\n isForEach={data.isForEach}\n foreachProgress={step?.foreachProgress}\n mapConfig={mapConfig}\n canSuspend={data.canSuspend}\n stepGraph={stepGraph}\n startedAt={stepSpan?.start}\n endedAt={stepSpan?.end}\n spansSuspension={stepSpan?.spansSuspension}\n actionBar={\n <WorkflowStepActionBar\n stepName={label}\n stepId={stepId}\n resumeData={step?.resumeData}\n error={isTripwire ? undefined : step?.error}\n tripwire={isTripwire ? step?.tripwire : undefined}\n mapConfig={mapConfig}\n onShowNestedGraph={stepGraph ? () => showNestedGraph({ label, fullStep: fullLabel, stepGraph }) : undefined}\n stepKey={stepKey}\n stepsFlow={stepsFlow}\n requestContext={requestContext}\n />\n }\n />\n );\n};\n\nconst WorkflowConditionNodeCard = ({\n data,\n parentWorkflowName,\n requestContext,\n}: {\n data: WorkflowStepNodeData;\n parentWorkflowName?: string;\n requestContext: Record<string, any>;\n}) => {\n const { steps } = useCurrentRun();\n const conditions = data.conditions ?? [];\n const previousStepId =\n data.previousStepId && (parentWorkflowName ? `${parentWorkflowName}.${data.previousStepId}` : data.previousStepId);\n const previousStep = previousStepId ? steps[previousStepId] : undefined;\n const { displayStatus: previousDisplayStatus, isTripwire } = getDisplayStatus(previousStep);\n\n return (\n <WorkflowConditionCard\n conditions={conditions}\n previousDisplayStatus={previousDisplayStatus}\n actionBar={\n <WorkflowStepActionBar\n stepName={data.nextStepId ?? data.label}\n mapConfig={data.mapConfig}\n tripwire={isTripwire ? previousStep?.tripwire : undefined}\n requestContext={requestContext}\n />\n }\n />\n );\n};\n\nexport function WorkflowGraphNode({\n data,\n parentWorkflowName,\n stepsFlow,\n requestContext,\n}: NodeProps<WorkflowStepNode> & WorkflowGraphNodeProps) {\n const content =\n data.workflowStep.kind === 'conditional' ? (\n <WorkflowConditionNodeCard data={data} parentWorkflowName={parentWorkflowName} requestContext={requestContext} />\n ) : (\n <WorkflowStepCard\n data={data}\n parentWorkflowName={parentWorkflowName}\n stepsFlow={stepsFlow}\n requestContext={requestContext}\n />\n );\n\n return (\n <WorkflowNodeFrame withoutTopHandle={data.withoutTopHandle} withoutBottomHandle={data.withoutBottomHandle}>\n {content}\n </WorkflowNodeFrame>\n );\n}\n","import type { EdgeProps, NodeProps } from '@xyflow/react';\nimport { useContext, useMemo } from 'react';\n\nimport { useCurrentRun } from '../context/use-current-run';\nimport { WorkflowRunContext } from '../context/workflow-run-context';\nimport { groupWorkflowEdgeData } from './data/workflow-edge-data-groups';\nimport { buildStepsFlow } from './utils';\nimport type { WorkflowGraphEdge } from './utils';\nimport { getWorkflowBoundaryData } from './workflow-boundary-data';\nimport { WorkflowDataEdge } from './workflow-data-edge';\nimport { WorkflowGraphNode } from './workflow-graph-node';\nimport { WORKFLOW_BOUNDARY_NODE_TYPE, WORKFLOW_STEP_NODE_TYPE } from './workflow-step-node-utils';\nimport type { WorkflowBoundaryNode as WorkflowBoundaryNodeType, WorkflowStepNode } from './workflow-step-node-utils';\nimport { WorkflowBoundaryNode, WORKFLOW_DATA_EDGE_TYPE } from '@/ds/components/Workflow';\n\nconst getScopedStepId = (stepId: string | undefined, workflowName?: string) =>\n stepId && workflowName ? `${workflowName}.${stepId}` : stepId;\n\nexport const useWorkflowGraphRuntime = ({\n edges,\n workflowName,\n requestContext,\n}: {\n edges: WorkflowGraphEdge[];\n workflowName?: string;\n requestContext: Record<string, any>;\n}) => {\n const { steps } = useCurrentRun();\n const workflowRun = useContext(WorkflowRunContext);\n const workflowSucceeded = workflowName\n ? steps[workflowName]?.status === 'success' || getWorkflowBoundaryData(steps, workflowName).output !== undefined\n : workflowRun.result?.status === 'success';\n const stepsFlow = useMemo(() => buildStepsFlow(edges), [edges]);\n const nodeTypes = useMemo(\n () => ({\n [WORKFLOW_STEP_NODE_TYPE]: (props: NodeProps<WorkflowStepNode>) => (\n <WorkflowGraphNode\n parentWorkflowName={workflowName}\n {...props}\n stepsFlow={stepsFlow}\n requestContext={requestContext}\n />\n ),\n [WORKFLOW_BOUNDARY_NODE_TYPE]: (props: NodeProps<WorkflowBoundaryNodeType>) => (\n <WorkflowBoundaryNode {...props} />\n ),\n }),\n [stepsFlow, workflowName, requestContext],\n );\n const edgeTypes = useMemo(\n () => ({\n [WORKFLOW_DATA_EDGE_TYPE]: (props: EdgeProps<WorkflowGraphEdge>) => (\n <WorkflowDataEdge parentWorkflowName={workflowName} {...props} />\n ),\n }),\n [workflowName],\n );\n const styledEdges = useMemo(\n () =>\n groupWorkflowEdgeData(edges).map(edge => {\n const previousStepId = getScopedStepId(edge.data?.previousStepId, workflowName);\n const nextStepId = getScopedStepId(edge.data?.nextStepId, workflowName);\n const previousStepSucceeded = steps[previousStepId ?? '']?.status === 'success';\n const nextStepStatus = steps[nextStepId ?? '']?.status;\n let isFinishedEdge = previousStepSucceeded && nextStepStatus !== 'skipped';\n if (edge.data?.boundaryPayload === 'workflow-output') {\n isFinishedEdge = workflowSucceeded;\n } else if (edge.data?.boundaryPayload === 'workflow-input' || edge.data?.conditionNode) {\n isFinishedEdge = Boolean(nextStepStatus) && nextStepStatus !== 'skipped';\n }\n\n return {\n ...edge,\n type: WORKFLOW_DATA_EDGE_TYPE,\n animated: isFinishedEdge ? false : edge.animated,\n data: {\n ...edge.data,\n edgeStatus: isFinishedEdge ? 'success' : 'idle',\n },\n style: {\n ...edge.style,\n stroke: isFinishedEdge ? 'var(--success-indicator)' : 'var(--muted-foreground)',\n strokeDasharray: isFinishedEdge ? 'none' : edge.style?.strokeDasharray,\n },\n };\n }),\n [edges, steps, workflowName, workflowSucceeded],\n );\n\n return { edgeTypes, nodeTypes, stepsFlow, styledEdges };\n};\n"],"names":["useMemo","jsx","WorkflowGraphBoundary","useWorkflowGraphNodes","useCurrentRun","getWorkflowIterationScopes","useState","WORKFLOW_BOUNDARY_NODE_TYPE","getWorkflowGraphGroups","jsxs","Txt","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","WorkflowGraphCanvas","Repeat2","ReactFlowProvider","isAwaitingInput","useWorkflowSelectedStep","useWorkflowStepDetail","useWaitingStepKey","resolveStepSpan","WorkflowStepCardView","getWorkflowCardKind","isHovered","WorkflowStepActionBar","WorkflowConditionCard","WorkflowNodeFrame","useContext","WorkflowRunContext","getWorkflowBoundaryData","buildStepsFlow","WORKFLOW_STEP_NODE_TYPE","WorkflowBoundaryNode","WORKFLOW_DATA_EDGE_TYPE","WorkflowDataEdge","groupWorkflowEdgeData"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"use-workflow-graph-runtime-UxUOrRDb.cjs","sources":["../src/domains/workflows/workflow/workflow-nested-graph.tsx","../src/domains/workflows/workflow/workflow-body-graph.tsx","../src/domains/workflows/workflow/workflow-graph-node.tsx","../src/domains/workflows/workflow/use-workflow-graph-runtime.tsx"],"sourcesContent":["import type { SerializedStepFlowEntry } from '@mastra/core/workflows';\n\nimport { useMemo, useState } from 'react';\nimport { useCurrentRun } from '../context/use-current-run';\nimport { useWorkflowGraphNodes } from './use-workflow-graph-nodes';\nimport { useWorkflowGraphRuntime } from './use-workflow-graph-runtime';\nimport { WorkflowGraphBoundary } from './workflow-graph-boundary';\nimport { getWorkflowGraphGroups } from './workflow-graph-groups';\nimport { getWorkflowIterationScopes } from './workflow-iteration-scopes';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select';\nimport { Txt } from '@/ds/components/Txt';\nimport { WorkflowGraphCanvas, WORKFLOW_BOUNDARY_NODE_TYPE } from '@/ds/components/Workflow';\n\nexport interface WorkflowNestedGraphProps {\n stepGraph: SerializedStepFlowEntry[];\n workflowName: string;\n isForEach?: boolean;\n embedded?: boolean;\n requestContext: Record<string, any>;\n}\n\nexport function WorkflowNestedGraph(props: WorkflowNestedGraphProps) {\n const layoutKey = useMemo(\n () => `${props.workflowName}:${JSON.stringify(props.stepGraph)}`,\n [props.workflowName, props.stepGraph],\n );\n return (\n <WorkflowGraphBoundary key={layoutKey} stepGraph={props.stepGraph}>\n <WorkflowNestedGraphContent {...props} />\n </WorkflowGraphBoundary>\n );\n}\n\nfunction WorkflowNestedGraphContent({\n stepGraph,\n workflowName,\n isForEach,\n embedded,\n requestContext,\n}: WorkflowNestedGraphProps) {\n const { nodes, edges, onNodesChange } = useWorkflowGraphNodes(stepGraph);\n const { steps } = useCurrentRun();\n const iterations = getWorkflowIterationScopes(Object.keys(steps), workflowName);\n const [selectedIteration, setSelectedIteration] = useState<string>();\n const activeIteration = iterations.find(iteration => iteration.value === selectedIteration) ?? iterations[0];\n\n const { edgeTypes, nodeTypes, styledEdges } = useWorkflowGraphRuntime({\n edges,\n workflowName: activeIteration?.value ?? workflowName,\n requestContext,\n });\n\n const labeledNodes = useMemo(\n () =>\n nodes.map(node => {\n if (!isForEach || node.type !== WORKFLOW_BOUNDARY_NODE_TYPE) return node;\n const label = node.data.boundaryRole === 'start' ? 'Each item' : 'Item result';\n return { ...node, data: { ...node.data, label } };\n }),\n [nodes, isForEach],\n );\n const groups = useMemo(() => getWorkflowGraphGroups(nodes), [nodes]);\n\n return (\n <div className=\"relative flex size-full flex-col\">\n {activeIteration && (\n <div className=\"nodrag nopan flex items-center gap-3 border-b border-border px-4 py-2\">\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n Iteration\n </Txt>\n <Select value={activeIteration.value} onValueChange={setSelectedIteration} items={iterations}>\n <SelectTrigger aria-label=\"Loop item\" size=\"sm\" className=\"w-36\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {iterations.map(iteration => (\n <SelectItem key={iteration.value} value={iteration.value}>\n {iteration.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n )}\n <div className=\"min-h-0 flex-1\">\n <WorkflowGraphCanvas\n variant={embedded ? 'inline' : 'nested'}\n groups={groups}\n nodes={labeledNodes}\n edges={styledEdges}\n edgeTypes={edgeTypes}\n nodeTypes={nodeTypes}\n onNodesChange={onNodesChange}\n />\n </div>\n </div>\n );\n}\n","import type { SerializedStepFlowEntry } from '@mastra/core/workflows';\nimport { ReactFlowProvider } from '@xyflow/react';\nimport { Repeat2 } from 'lucide-react';\nimport { WorkflowNestedGraph } from './workflow-nested-graph';\nimport { Txt } from '@/ds/components/Txt';\n\nexport function WorkflowBodyGraph({\n stepGraph,\n workflowName,\n isForEach,\n requestContext,\n}: {\n stepGraph: SerializedStepFlowEntry[];\n workflowName: string;\n isForEach?: boolean;\n requestContext: Record<string, any>;\n}) {\n return (\n <section aria-label={isForEach ? 'Loop body' : 'Nested workflow'} className=\"flex h-full min-h-0 flex-col\">\n {isForEach && (\n <div className=\"flex shrink-0 items-start gap-2 px-4 py-3 text-muted-foreground\">\n <Repeat2 aria-hidden className=\"mt-0.5 size-4 shrink-0 text-muted-foreground\" />\n <Txt variant=\"meta\">Runs for every item. All items finish before the workflow continues.</Txt>\n </div>\n )}\n <div className=\"min-h-0 flex-1 overflow-hidden\">\n <ReactFlowProvider>\n <WorkflowNestedGraph\n stepGraph={stepGraph}\n embedded\n workflowName={workflowName}\n isForEach={isForEach}\n requestContext={requestContext}\n />\n </ReactFlowProvider>\n </div>\n </section>\n );\n}\n","import type { NodeProps } from '@xyflow/react';\n\nimport { useCurrentRun } from '../context/use-current-run';\nimport type { Step } from '../context/use-current-run';\nimport { useWorkflowSelectedStep } from '../context/use-workflow-selected-step';\nimport { useWorkflowStepDetail } from '../context/workflow-step-detail-context';\nimport { isAwaitingInput, resolveStepSpan } from '../context/workflow-step-timing';\nimport { useWaitingStepKey } from './use-workflow-trigger';\nimport { WorkflowBodyGraph } from './workflow-body-graph';\nimport { getWorkflowCardKind } from './workflow-node-kind';\nimport { WorkflowStepActionBar } from './workflow-step-action-bar';\nimport type { WorkflowStepNode, WorkflowStepNodeData } from './workflow-step-node-utils';\nimport { WorkflowNodeFrame, WorkflowConditionCard, WorkflowStepCardView } from '@/ds/components/Workflow';\nimport type { WorkflowCardDisplayStatus } from '@/ds/components/Workflow';\n\nexport interface WorkflowGraphNodeProps {\n parentWorkflowName?: string;\n stepsFlow: Record<string, string[]>;\n requestContext: Record<string, any>;\n}\n\nconst getDisplayStatus = (step?: Step): { displayStatus: WorkflowCardDisplayStatus; isTripwire: boolean } => {\n const isTripwire = step?.status === 'failed' && step?.tripwire !== undefined;\n const displayStatus = step && isAwaitingInput(step) ? 'suspended' : step?.status;\n return {\n displayStatus: isTripwire ? 'tripwire' : displayStatus,\n isTripwire,\n };\n};\n\nconst WorkflowStepCard = ({\n data,\n parentWorkflowName,\n stepsFlow,\n requestContext,\n}: {\n data: WorkflowStepNodeData;\n parentWorkflowName?: string;\n stepsFlow: Record<string, string[]>;\n requestContext: Record<string, any>;\n}) => {\n const { steps } = useCurrentRun();\n const { selectedStepId, setSelectedStepId, hoverStepId, setHoverStepId } = useWorkflowSelectedStep();\n const { showNestedGraph } = useWorkflowStepDetail();\n const waitingStepKey = useWaitingStepKey();\n const { label, stepId, description } = data;\n const mapConfig = data.mapConfig ?? ('step' in data.workflowStep ? data.workflowStep.step?.mapConfig : undefined);\n const stepGraph =\n data.stepGraph ??\n ('step' in data.workflowStep ? data.workflowStep.step?.serializedStepFlow : undefined) ??\n (data.workflowStep.kind === 'nested-workflow-step' && data.workflowStep.flow.type === 'workflow'\n ? data.workflowStep.flow.serializedStepFlow\n : undefined);\n const fullLabel = parentWorkflowName ? `${parentWorkflowName}.${label}` : label;\n const stepKey = parentWorkflowName ? `${parentWorkflowName}.${stepId || label}` : stepId || label;\n const isSelected = selectedStepId === stepKey;\n const isWaiting = waitingStepKey === stepKey;\n const isHovered = hoverStepId === stepKey;\n const step = steps[stepKey];\n const { displayStatus, isTripwire } = getDisplayStatus(step);\n const stepSpan = step ? resolveStepSpan(step) : undefined;\n\n return (\n <WorkflowStepCardView\n label={data.mapContext?.label ?? label}\n nodeKind={getWorkflowCardKind(data.workflowStep)}\n onSelect={() => setSelectedStepId(stepKey)}\n initiallyOpen={!parentWorkflowName}\n body={\n stepGraph?.length ? (\n <WorkflowBodyGraph\n stepGraph={stepGraph}\n workflowName={fullLabel}\n isForEach={data.isForEach}\n requestContext={requestContext}\n />\n ) : undefined\n }\n description={description ?? data.mapContext?.description}\n displayStatus={displayStatus}\n isNestedWorkflowStep={data.workflowStep.kind === 'nested-workflow-step'}\n stepKey={stepKey}\n isSelected={isSelected}\n isWaiting={isWaiting}\n isHovered={isHovered}\n onHoverChange={isHovered => setHoverStepId(isHovered ? stepKey : null)}\n duration={data.duration}\n date={data.date}\n isForEach={data.isForEach}\n foreachProgress={step?.foreachProgress}\n mapConfig={mapConfig}\n canSuspend={data.canSuspend}\n stepGraph={stepGraph}\n startedAt={stepSpan?.start}\n endedAt={stepSpan?.end}\n spansSuspension={stepSpan?.spansSuspension}\n actionBar={\n <WorkflowStepActionBar\n stepName={label}\n stepId={stepId}\n resumeData={step?.resumeData}\n error={isTripwire ? undefined : step?.error}\n tripwire={isTripwire ? step?.tripwire : undefined}\n mapConfig={mapConfig}\n onShowNestedGraph={stepGraph ? () => showNestedGraph({ label, fullStep: fullLabel, stepGraph }) : undefined}\n stepKey={stepKey}\n stepsFlow={stepsFlow}\n requestContext={requestContext}\n />\n }\n />\n );\n};\n\nconst WorkflowConditionNodeCard = ({\n data,\n parentWorkflowName,\n requestContext,\n}: {\n data: WorkflowStepNodeData;\n parentWorkflowName?: string;\n requestContext: Record<string, any>;\n}) => {\n const { steps } = useCurrentRun();\n const conditions = data.conditions ?? [];\n const previousStepId =\n data.previousStepId && (parentWorkflowName ? `${parentWorkflowName}.${data.previousStepId}` : data.previousStepId);\n const previousStep = previousStepId ? steps[previousStepId] : undefined;\n const { displayStatus: previousDisplayStatus, isTripwire } = getDisplayStatus(previousStep);\n\n return (\n <WorkflowConditionCard\n conditions={conditions}\n previousDisplayStatus={previousDisplayStatus}\n actionBar={\n <WorkflowStepActionBar\n stepName={data.nextStepId ?? data.label}\n mapConfig={data.mapConfig}\n tripwire={isTripwire ? previousStep?.tripwire : undefined}\n requestContext={requestContext}\n />\n }\n />\n );\n};\n\nexport function WorkflowGraphNode({\n data,\n parentWorkflowName,\n stepsFlow,\n requestContext,\n}: NodeProps<WorkflowStepNode> & WorkflowGraphNodeProps) {\n const content =\n data.workflowStep.kind === 'conditional' ? (\n <WorkflowConditionNodeCard data={data} parentWorkflowName={parentWorkflowName} requestContext={requestContext} />\n ) : (\n <WorkflowStepCard\n data={data}\n parentWorkflowName={parentWorkflowName}\n stepsFlow={stepsFlow}\n requestContext={requestContext}\n />\n );\n\n return (\n <WorkflowNodeFrame withoutTopHandle={data.withoutTopHandle} withoutBottomHandle={data.withoutBottomHandle}>\n {content}\n </WorkflowNodeFrame>\n );\n}\n","import type { EdgeProps, NodeProps } from '@xyflow/react';\nimport { useContext, useMemo } from 'react';\n\nimport { useCurrentRun } from '../context/use-current-run';\nimport { WorkflowRunContext } from '../context/workflow-run-context';\nimport { groupWorkflowEdgeData } from './data/workflow-edge-data-groups';\nimport { buildStepsFlow } from './utils';\nimport type { WorkflowGraphEdge } from './utils';\nimport { getWorkflowBoundaryData } from './workflow-boundary-data';\nimport { WorkflowDataEdge } from './workflow-data-edge';\nimport { WorkflowGraphNode } from './workflow-graph-node';\nimport { WORKFLOW_BOUNDARY_NODE_TYPE, WORKFLOW_STEP_NODE_TYPE } from './workflow-step-node-utils';\nimport type { WorkflowBoundaryNode as WorkflowBoundaryNodeType, WorkflowStepNode } from './workflow-step-node-utils';\nimport { WorkflowBoundaryNode, WORKFLOW_DATA_EDGE_TYPE } from '@/ds/components/Workflow';\n\nconst getScopedStepId = (stepId: string | undefined, workflowName?: string) =>\n stepId && workflowName ? `${workflowName}.${stepId}` : stepId;\n\nexport const useWorkflowGraphRuntime = ({\n edges,\n workflowName,\n requestContext,\n}: {\n edges: WorkflowGraphEdge[];\n workflowName?: string;\n requestContext: Record<string, any>;\n}) => {\n const { steps } = useCurrentRun();\n const workflowRun = useContext(WorkflowRunContext);\n const workflowSucceeded = workflowName\n ? steps[workflowName]?.status === 'success' || getWorkflowBoundaryData(steps, workflowName).output !== undefined\n : workflowRun.result?.status === 'success';\n const stepsFlow = useMemo(() => buildStepsFlow(edges), [edges]);\n const nodeTypes = useMemo(\n () => ({\n [WORKFLOW_STEP_NODE_TYPE]: (props: NodeProps<WorkflowStepNode>) => (\n <WorkflowGraphNode\n parentWorkflowName={workflowName}\n {...props}\n stepsFlow={stepsFlow}\n requestContext={requestContext}\n />\n ),\n [WORKFLOW_BOUNDARY_NODE_TYPE]: (props: NodeProps<WorkflowBoundaryNodeType>) => (\n <WorkflowBoundaryNode {...props} />\n ),\n }),\n [stepsFlow, workflowName, requestContext],\n );\n const edgeTypes = useMemo(\n () => ({\n [WORKFLOW_DATA_EDGE_TYPE]: (props: EdgeProps<WorkflowGraphEdge>) => (\n <WorkflowDataEdge parentWorkflowName={workflowName} {...props} />\n ),\n }),\n [workflowName],\n );\n const styledEdges = useMemo(\n () =>\n groupWorkflowEdgeData(edges).map(edge => {\n const previousStepId = getScopedStepId(edge.data?.previousStepId, workflowName);\n const nextStepId = getScopedStepId(edge.data?.nextStepId, workflowName);\n const previousStepSucceeded = steps[previousStepId ?? '']?.status === 'success';\n const nextStepStatus = steps[nextStepId ?? '']?.status;\n let isFinishedEdge = previousStepSucceeded && nextStepStatus !== 'skipped';\n if (edge.data?.boundaryPayload === 'workflow-output') {\n isFinishedEdge = workflowSucceeded;\n } else if (edge.data?.boundaryPayload === 'workflow-input' || edge.data?.conditionNode) {\n isFinishedEdge = Boolean(nextStepStatus) && nextStepStatus !== 'skipped';\n }\n\n return {\n ...edge,\n type: WORKFLOW_DATA_EDGE_TYPE,\n animated: isFinishedEdge ? false : edge.animated,\n data: {\n ...edge.data,\n edgeStatus: isFinishedEdge ? 'success' : 'idle',\n },\n style: {\n ...edge.style,\n stroke: isFinishedEdge ? 'var(--success-indicator)' : 'var(--muted-foreground)',\n strokeDasharray: isFinishedEdge ? 'none' : edge.style?.strokeDasharray,\n },\n };\n }),\n [edges, steps, workflowName, workflowSucceeded],\n );\n\n return { edgeTypes, nodeTypes, stepsFlow, styledEdges };\n};\n"],"names":["useMemo","jsx","WorkflowGraphBoundary","useWorkflowGraphNodes","useCurrentRun","getWorkflowIterationScopes","useState","WORKFLOW_BOUNDARY_NODE_TYPE","getWorkflowGraphGroups","jsxs","Txt","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","WorkflowGraphCanvas","Repeat2","ReactFlowProvider","isAwaitingInput","useWorkflowSelectedStep","useWorkflowStepDetail","useWaitingStepKey","resolveStepSpan","WorkflowStepCardView","getWorkflowCardKind","isHovered","WorkflowStepActionBar","WorkflowConditionCard","WorkflowNodeFrame","useContext","WorkflowRunContext","getWorkflowBoundaryData","buildStepsFlow","WORKFLOW_STEP_NODE_TYPE","WorkflowBoundaryNode","WORKFLOW_DATA_EDGE_TYPE","WorkflowDataEdge","groupWorkflowEdgeData"],"mappings":"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"}
|
package/dist/utils/errors.cjs.js
CHANGED
package/dist/utils/errors.es.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { p as parseError } from '../errors-
|
|
1
|
+
export { p as parseError } from '../errors-BFVXW8Dr.js';
|
|
2
2
|
export { is401UnauthorizedError, is403ForbiddenError, is404NotFoundError, isBranchesNotSupportedError, isNonRetryableError, isObservabilityUnavailableError, isUnsupportedObservabilityOperationError, shouldRetryQuery } from '@mastra/react/hooks/query';
|
|
3
3
|
//# sourceMappingURL=errors.es.js.map
|
|
@@ -18,7 +18,7 @@ const workflowCanvasInset = require('./workflow-canvas-inset-CMasaX9u.cjs');
|
|
|
18
18
|
const Button = require('./Button-CAVPKK09.cjs');
|
|
19
19
|
const slider = require('./slider-dtz2-kyO.cjs');
|
|
20
20
|
require('@xyflow/react/dist/style.css');
|
|
21
|
-
const code = require('./code-
|
|
21
|
+
const code = require('./code-DJReJPSX.cjs');
|
|
22
22
|
const utils_formatting = require('./utils/formatting.cjs.js');
|
|
23
23
|
const copyButton = require('./copy-button-5tVWqoTk.cjs');
|
|
24
24
|
|
|
@@ -907,4 +907,4 @@ exports.getConditionIconAndColor = getConditionIconAndColor;
|
|
|
907
907
|
exports.getConditionIndicator = getConditionIndicator;
|
|
908
908
|
exports.getNodeBadgeInfo = getNodeBadgeInfo;
|
|
909
909
|
exports.getNodeIndicators = getNodeIndicators;
|
|
910
|
-
//# sourceMappingURL=workflow-condition-card-
|
|
910
|
+
//# sourceMappingURL=workflow-condition-card-CHV32SJm.cjs.map
|
package/dist/{workflow-condition-card-bn5mrwKe.cjs.map → workflow-condition-card-CHV32SJm.cjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-condition-card-bn5mrwKe.cjs","sources":["../src/ds/components/Workflow/cards/workflow-card-kind.ts","../src/ds/components/Workflow/cards/workflow-type-badge.tsx","../src/ds/components/Workflow/cards/workflow-card-badge-utils.ts","../src/ds/components/Workflow/cards/workflow-clock.tsx","../src/ds/components/Workflow/cards/condition/workflow-condition-expression.ts","../src/ds/components/Workflow/cards/condition/workflow-condition-source.tsx","../src/ds/components/Workflow/cards/condition/workflow-condition-card-view.tsx","../src/ds/components/Workflow/cards/timing/workflow-time-dial.tsx","../src/ds/components/Workflow/cards/timing/workflow-timing.tsx","../src/ds/components/Workflow/cards/step/workflow-step-card-view.tsx","../src/ds/components/Workflow/graph/workflow-boundary-node.tsx","../src/ds/components/Workflow/graph/workflow-camera-duration.ts","../src/ds/components/Workflow/graph/workflow-graph-groups.tsx","../src/ds/components/Workflow/graph/zoom-slider.tsx","../src/ds/components/Workflow/graph/workflow-graph-canvas.tsx","../src/ds/components/Workflow/graph/workflow-node-frame.tsx","../src/ds/components/Workflow/cards/condition/workflow-condition-card.tsx"],"sourcesContent":["import {\n ArrowRightLeft,\n Bot,\n Braces,\n CalendarClock,\n GitBranch,\n GitFork,\n Repeat2,\n Timer,\n Workflow,\n Wrench,\n} from 'lucide-react';\nimport type { LucideIcon } from 'lucide-react';\nimport type { WorkflowStepCardViewProps } from '../types';\nimport type { BadgeVariant } from '@/ds/components/Badge';\n\nexport type WorkflowTypeBadgeProps = Pick<\n WorkflowStepCardViewProps,\n 'nodeKind' | 'isForEach' | 'isNestedWorkflowStep' | 'stepGraph' | 'isParallel' | 'mapConfig' | 'date' | 'duration'\n>;\n\nexport function getWorkflowCardBadge(props: WorkflowTypeBadgeProps): {\n label: string;\n Icon: LucideIcon;\n tone: BadgeVariant;\n indicator?: string;\n} {\n if (props.isForEach) return { label: 'For each', tone: 'orange', Icon: Repeat2, indicator: 'foreach' };\n if (props.isNestedWorkflowStep || props.stepGraph)\n return { label: 'Workflow', tone: 'purple', Icon: Workflow, indicator: 'workflow' };\n if (props.isParallel && !props.nodeKind)\n return { label: 'Parallel', tone: 'blue', Icon: GitFork, indicator: 'parallel' };\n if (props.nodeKind === 'map' || props.mapConfig)\n return { label: 'Map', tone: 'orange', Icon: ArrowRightLeft, indicator: 'map' };\n if (props.nodeKind === 'wait-until' || props.date)\n return { label: 'Wait until', tone: 'purple', Icon: CalendarClock, indicator: 'sleep-until' };\n if (props.nodeKind === 'delay' || props.duration !== undefined)\n return { label: 'Delay', tone: 'purple', Icon: Timer, indicator: 'sleep' };\n if (props.nodeKind === 'agent') return { label: 'Agent', tone: 'cyan', Icon: Bot };\n if (props.nodeKind === 'tool') return { label: 'Tool', tone: 'pink', Icon: Wrench };\n if (props.nodeKind === 'classifier') return { label: 'Classifier', tone: 'blue', Icon: GitBranch };\n return { label: 'Step', tone: 'neutral', Icon: Braces };\n}\n","import { getWorkflowCardBadge } from './workflow-card-kind';\nimport type { WorkflowTypeBadgeProps } from './workflow-card-kind';\nimport { Badge } from '@/ds/components/Badge';\n\nexport function WorkflowTypeBadge(props: WorkflowTypeBadgeProps) {\n const { label, Icon, tone } = getWorkflowCardBadge(props);\n return (\n <Badge size=\"xs\" variant={tone} icon={<Icon aria-hidden />}>\n {label}\n </Badge>\n );\n}\n","import {\n CalendarClock,\n Clock,\n CornerDownRight,\n GitBranch,\n Layers,\n List,\n Network,\n PlayCircle,\n RefreshCw,\n Repeat,\n Repeat1,\n Timer,\n Workflow,\n} from 'lucide-react';\nimport type { LucideIcon } from 'lucide-react';\n\nexport const BADGE_COLORS = {\n sleep: 'var(--badge-purple-indicator)',\n forEach: 'var(--badge-orange-indicator)',\n map: 'var(--badge-orange-indicator)',\n parallel: 'var(--badge-blue-indicator)',\n suspend: 'var(--badge-pink-indicator)',\n after: 'var(--badge-cyan-indicator)',\n workflow: 'var(--badge-purple-indicator)',\n when: 'var(--badge-amber-indicator)',\n dountil: 'var(--badge-purple-indicator)',\n dowhile: 'var(--badge-cyan-indicator)',\n until: 'var(--badge-amber-indicator)',\n while: 'var(--badge-green-indicator)',\n if: 'var(--badge-blue-indicator)',\n else: 'var(--muted-foreground)',\n} as const;\n\nexport const BADGE_ICONS = {\n sleep: Timer,\n sleepUntil: CalendarClock,\n forEach: List,\n map: List,\n parallel: Workflow,\n suspend: PlayCircle,\n after: Clock,\n workflow: Layers,\n when: Network,\n dountil: Repeat1,\n dowhile: Repeat,\n until: Timer,\n while: RefreshCw,\n if: GitBranch,\n else: CornerDownRight,\n} as const;\n\nexport interface ConditionIconConfig {\n icon: LucideIcon | undefined;\n color: string | undefined;\n}\n\nexport interface WorkflowCardIndicator {\n id: string;\n label: string;\n icon: LucideIcon;\n color: string;\n}\n\nconst CONDITION_LABELS: Record<string, string> = {\n when: 'When condition',\n dountil: 'Do until condition',\n dowhile: 'Do while condition',\n until: 'Until condition',\n while: 'While condition',\n if: 'If condition',\n else: 'Else condition',\n and: 'And condition',\n or: 'Or condition',\n not: 'Not condition',\n};\n\nexport const getConditionIconAndColor = (type?: string): ConditionIconConfig => {\n switch (type) {\n case 'when':\n return { icon: BADGE_ICONS.when, color: BADGE_COLORS.when };\n case 'dountil':\n return { icon: BADGE_ICONS.dountil, color: BADGE_COLORS.dountil };\n case 'dowhile':\n return { icon: BADGE_ICONS.dowhile, color: BADGE_COLORS.dowhile };\n case 'until':\n return { icon: BADGE_ICONS.until, color: BADGE_COLORS.until };\n case 'while':\n return { icon: BADGE_ICONS.while, color: BADGE_COLORS.while };\n case 'if':\n return { icon: BADGE_ICONS.if, color: BADGE_COLORS.if };\n case 'else':\n return { icon: BADGE_ICONS.else, color: BADGE_COLORS.else };\n case 'and':\n case 'or':\n case 'not':\n return { icon: BADGE_ICONS.when, color: BADGE_COLORS.when };\n default:\n return { icon: undefined, color: undefined };\n }\n};\n\nexport const getConditionIndicator = (type?: string): WorkflowCardIndicator | undefined => {\n const { icon, color } = getConditionIconAndColor(type);\n\n if (!type || !icon || !color) {\n return undefined;\n }\n\n return {\n id: `condition-${type}`,\n label: CONDITION_LABELS[type] ?? `${type} condition`,\n icon,\n color,\n };\n};\n\nexport interface WorkflowNodeBadgeInfo {\n isSleepNode: boolean;\n isForEachNode: boolean;\n isMapNode: boolean;\n isNestedWorkflow: boolean;\n hasSpecialBadge: boolean;\n}\n\nexport interface WorkflowCardBadgesProps {\n duration?: number;\n date?: Date;\n isForEach?: boolean;\n mapConfig?: string;\n canSuspend?: boolean;\n isParallel?: boolean;\n stepGraph?: unknown;\n}\n\nexport const getNodeBadgeInfo = ({\n duration,\n date,\n isForEach,\n mapConfig,\n canSuspend,\n isParallel,\n stepGraph,\n}: WorkflowCardBadgesProps): WorkflowNodeBadgeInfo => {\n const isSleepNode = Boolean(duration || date);\n const isForEachNode = Boolean(isForEach);\n const isMapNode = Boolean(mapConfig && !isForEach);\n const isNestedWorkflow = Boolean(stepGraph);\n const hasSpecialBadge =\n isSleepNode || Boolean(canSuspend || isParallel) || isForEachNode || isMapNode || isNestedWorkflow;\n\n return {\n isSleepNode,\n isForEachNode,\n isMapNode,\n isNestedWorkflow,\n hasSpecialBadge,\n };\n};\n\nexport const getNodeIndicators = (props: WorkflowCardBadgesProps): WorkflowCardIndicator[] => {\n const { isSleepNode, isForEachNode, isMapNode, isNestedWorkflow } = getNodeBadgeInfo(props);\n const indicators: WorkflowCardIndicator[] = [];\n\n if (isSleepNode) {\n indicators.push({\n id: props.date ? 'sleep-until' : 'sleep',\n label: props.date ? 'Sleep until step' : 'Sleep step',\n icon: props.date ? BADGE_ICONS.sleepUntil : BADGE_ICONS.sleep,\n color: BADGE_COLORS.sleep,\n });\n }\n\n if (props.canSuspend) {\n indicators.push({\n id: 'suspend',\n label: 'Suspend/resume step',\n icon: BADGE_ICONS.suspend,\n color: BADGE_COLORS.suspend,\n });\n }\n\n if (props.isParallel) {\n indicators.push({\n id: 'parallel',\n label: 'Parallel step',\n icon: BADGE_ICONS.parallel,\n color: BADGE_COLORS.parallel,\n });\n }\n\n if (isNestedWorkflow) {\n indicators.push({\n id: 'workflow',\n label: 'Nested workflow step',\n icon: BADGE_ICONS.workflow,\n color: BADGE_COLORS.workflow,\n });\n }\n\n if (isForEachNode) {\n indicators.push({\n id: 'foreach',\n label: 'Foreach step',\n icon: BADGE_ICONS.forEach,\n color: BADGE_COLORS.forEach,\n });\n }\n\n if (isMapNode) {\n indicators.push({\n id: 'map',\n label: 'Map step',\n icon: BADGE_ICONS.map,\n color: BADGE_COLORS.map,\n });\n }\n\n return indicators;\n};\n","import { useEffect, useState } from 'react';\nimport { Txt } from '@/ds/components/Txt';\nimport { formatDuration } from '@/utils/duration';\n\ninterface WorkflowClockProps {\n startedAt: number;\n endedAt?: number;\n isRunning?: boolean;\n spansSuspension?: boolean;\n}\n\nexport const WorkflowClock = ({ startedAt, endedAt, isRunning = false, spansSuspension }: WorkflowClockProps) => {\n if (isRunning && endedAt === undefined && Number.isFinite(startedAt)) {\n return <RunningWorkflowClock key={startedAt} startedAt={startedAt} spansSuspension={spansSuspension} />;\n }\n return <ElapsedTime startedAt={startedAt} endedAt={endedAt} spansSuspension={spansSuspension} />;\n};\n\nfunction RunningWorkflowClock({ startedAt, spansSuspension }: Omit<WorkflowClockProps, 'isRunning'>) {\n const [time, setTime] = useState(() => Date.now());\n useEffect(() => {\n const interval = setInterval(() => setTime(Date.now()), 100);\n return () => clearInterval(interval);\n }, []);\n return <ElapsedTime startedAt={startedAt} endedAt={time} spansSuspension={spansSuspension} />;\n}\n\nfunction ElapsedTime({ startedAt, endedAt, spansSuspension }: Omit<WorkflowClockProps, 'isRunning'>) {\n const elapsed = endedAt === undefined ? undefined : formatDuration(endedAt - startedAt);\n\n return (\n <Txt\n variant=\"meta\"\n tone=\"muted\"\n font=\"mono\"\n className=\"whitespace-nowrap\"\n title={elapsed && spansSuspension ? 'Includes time spent suspended waiting for input' : undefined}\n >\n {elapsed === undefined ? <span aria-label=\"Timing unavailable\">—</span> : elapsed}\n </Txt>\n );\n}\n","import type { WorkflowCardCondition } from '../../types';\n\nexport function conditionExpression(condition: WorkflowCardCondition) {\n if (condition.fnString !== undefined) return condition.fnString;\n return JSON.stringify({ ref: condition.ref, query: condition.query, conj: condition.conj }, null, 2);\n}\n","import { useEffect, useState } from 'react';\nimport { Code } from '@/ds/components/Code';\nimport { formatTypeScript } from '@/utils/formatting';\n\nconst MAX_FORMATTED_SOURCE_CHARS = 10_000;\n\nexport function WorkflowConditionSource({ source }: { source: string }) {\n if (source.length > MAX_FORMATTED_SOURCE_CHARS) return <Code code={source} />;\n return <FormattedConditionSource key={source} source={source} />;\n}\n\nfunction FormattedConditionSource({ source }: { source: string }) {\n const [formatted, setFormatted] = useState<string>();\n\n useEffect(() => {\n let cancelled = false;\n formatTypeScript(source)\n .then(expression => {\n if (!cancelled) setFormatted(expression.trim());\n })\n .catch(() => undefined);\n return () => {\n cancelled = true;\n };\n }, [source]);\n\n return <Code code={formatted ?? source} lang={formatted === undefined ? undefined : 'typescript'} />;\n}\n","import { Braces } from 'lucide-react';\nimport type { WorkflowConditionCardViewProps } from '../../types';\nimport { getConditionIndicator } from '../workflow-card-badge-utils';\nimport { conditionExpression } from './workflow-condition-expression';\nimport { WorkflowConditionSource } from './workflow-condition-source';\nimport { Badge } from '@/ds/components/Badge';\nimport { Code } from '@/ds/components/Code';\nimport { CopyButton } from '@/ds/components/CopyButton';\nimport { raisedSurfaceStyle } from '@/ds/primitives/raised-surface';\n\nconst surfaceClasses = 'rounded-[calc(var(--radius-xl)-2px)] bg-card text-meta';\n\nexport function WorkflowConditionCardView({\n type,\n conditions,\n previousDisplayStatus,\n actionBar,\n}: WorkflowConditionCardViewProps) {\n const indicator = getConditionIndicator(type);\n const Icon = indicator?.icon ?? Braces;\n const label = indicator?.label.replace(/ condition$/, '') ?? 'Condition';\n const occurrences = new Map<string, number>();\n const sources = conditions.map(condition => {\n const expression = conditionExpression(condition);\n const identity = `${condition.type}:${expression}`;\n const occurrence = occurrences.get(identity) ?? 0;\n occurrences.set(identity, occurrence + 1);\n return { condition, expression, key: `${identity}:${occurrence}` };\n });\n const copyContent =\n conditions.length > 1 ? JSON.stringify(conditions, null, 2) : sources.map(source => source.expression).join('\\n');\n const hasExpression = type !== 'else' && sources.some(({ expression }) => expression.trim().length > 0);\n\n return (\n <div\n className={`${raisedSurfaceStyle} w-[274px] overflow-hidden rounded-xl p-0.5 has-focus-visible:outline-1 has-focus-visible:outline-offset-4 has-focus-visible:outline-border-focus`}\n data-workflow-node\n data-testid=\"workflow-condition-node\"\n data-workflow-step-status={previousDisplayStatus ?? 'idle'}\n >\n <div className=\"flex h-[46px] items-center gap-2 px-2.5 text-meta text-muted-foreground\">\n <Badge size=\"xs\" variant={type === 'else' ? 'neutral' : 'amber'} emphasis=\"subtle\" icon={<Icon aria-hidden />}>\n {label}\n </Badge>\n {hasExpression && (\n <>\n <span className=\"ml-auto\">Expression</span>\n <CopyButton content={copyContent} tooltip=\"Copy expression\" size=\"sm\" className=\"nodrag nopan\" />\n </>\n )}\n </div>\n {hasExpression ? (\n <div\n role=\"region\"\n aria-label=\"Condition details\"\n tabIndex={0}\n className={`${surfaceClasses} nodrag nopan nowheel max-h-55 overflow-auto p-3.5 text-foreground [&_pre]:leading-relaxed [&_pre]:whitespace-pre-wrap`}\n >\n {sources.map(({ condition, expression, key }) => (\n <div key={key}>\n {condition.conj && (\n <Badge size=\"xs\" variant=\"neutral\">\n {condition.conj.toUpperCase()}\n </Badge>\n )}\n {condition.fnString !== undefined ? (\n <WorkflowConditionSource source={condition.fnString} />\n ) : (\n <Code code={expression} />\n )}\n </div>\n ))}\n </div>\n ) : (\n <p className={`${surfaceClasses} p-3 text-muted-foreground`}>\n {type === 'else' ? 'When no other branch matches' : 'Condition expression unavailable'}\n </p>\n )}\n {actionBar && <div className=\"nodrag nopan flex justify-end px-2.5 py-1.5 empty:hidden\">{actionBar}</div>}\n </div>\n );\n}\n","import type { ComponentProps, ReactNode } from 'react';\nimport { cn } from '@/utils/cn';\n\nexport type DurationUnit = 'ms' | 's' | 'min' | 'h';\n\nconst DIAL_CENTER = 58;\nconst CLOCK_TICK_ANGLES = Array.from({ length: 60 }, (_, index) => index * 6);\nconst DURATION_TICK_ANGLES = Array.from({ length: 41 }, (_, index) => -120 + index * 6);\n\nfunction pointAt(angle: number, radius: number) {\n const radians = (angle * Math.PI) / 180;\n return {\n x: DIAL_CENTER + Math.sin(radians) * radius,\n y: DIAL_CENTER - Math.cos(radians) * radius,\n };\n}\n\nfunction DialTick({ angle, major, className, ...props }: ComponentProps<'line'> & { angle: number; major: boolean }) {\n const outer = pointAt(angle, 49);\n const inner = pointAt(angle, major ? 38 : 43);\n return (\n <line\n x1={inner.x}\n y1={inner.y}\n x2={outer.x}\n y2={outer.y}\n className={cn(major ? 'stroke-placeholder' : 'stroke-border-strong', className)}\n {...props}\n />\n );\n}\n\nfunction DialHand({ angle, length }: { angle: number; length: number }) {\n const tip = pointAt(angle, length);\n return (\n <line\n x1={DIAL_CENTER}\n y1={DIAL_CENTER}\n x2={tip.x}\n y2={tip.y}\n className=\"stroke-1.5 stroke-muted-foreground\"\n strokeLinecap=\"round\"\n />\n );\n}\n\nfunction DialFace({ tickAngles, children }: { tickAngles: number[]; children: ReactNode }) {\n return (\n <span className=\"block size-28 shrink-0 text-muted-foreground\" aria-hidden>\n <svg viewBox=\"0 0 116 116\" fill=\"none\" className=\"block size-full overflow-visible\">\n {tickAngles.map((angle, index) => (\n <DialTick key={angle} angle={angle} major={index % 5 === 0} />\n ))}\n {children}\n </svg>\n </span>\n );\n}\n\nexport function ClockDial({ date }: { date: Date }) {\n const minutes = date.getUTCMinutes();\n return (\n <DialFace tickAngles={CLOCK_TICK_ANGLES}>\n <DialHand angle={((date.getUTCHours() % 12) + minutes / 60) * 30} length={26} />\n <DialHand angle={minutes * 6} length={37} />\n <circle cx={DIAL_CENTER} cy={DIAL_CENTER} r={2} fill=\"currentColor\" />\n </DialFace>\n );\n}\n\nexport function DurationDial({ amount, unit }: { amount: number; unit: DurationUnit }) {\n const scale = Math.max({ h: 24, ms: 1000, s: 60, min: 60 }[unit], Math.ceil(amount / 10) * 10);\n return (\n <DialFace tickAngles={DURATION_TICK_ANGLES}>\n <DialTick\n angle={-120 + (amount / scale) * 240}\n major\n className=\"stroke-foreground stroke-2\"\n strokeLinecap=\"round\"\n />\n <text x={DIAL_CENTER} y={94} textAnchor=\"middle\" className=\"fill-muted-foreground font-body text-meta\">\n {scale} {unit}\n </text>\n <text x={DIAL_CENTER} y={106} textAnchor=\"middle\" className=\"fill-placeholder font-body text-meta\">\n scale\n </text>\n </DialFace>\n );\n}\n","import type { ReactNode } from 'react';\nimport type { WorkflowStepCardViewProps } from '../../types';\nimport { ClockDial, DurationDial } from './workflow-time-dial';\nimport type { DurationUnit } from './workflow-time-dial';\nimport { Txt } from '@/ds/components/Txt';\nimport { formatDate, formatShortDate } from '@/utils/date-format';\nimport { formatDuration } from '@/utils/duration';\n\nconst captionClasses = 'text-meta tracking-wider whitespace-nowrap text-muted-foreground uppercase';\n\nfunction durationReading(duration: number): { amount: number; unit: DurationUnit } {\n if (duration < 1000) return { amount: duration, unit: 'ms' };\n if (duration < 60000) return { amount: duration / 1000, unit: 's' };\n if (duration < 3600000) return { amount: duration / 60000, unit: 'min' };\n return { amount: duration / 3600000, unit: 'h' };\n}\n\nfunction TimingReading({\n value,\n unit,\n caption,\n dial,\n}: {\n value: string;\n unit?: string;\n caption: string;\n dial: ReactNode;\n}) {\n return (\n <span className=\"mt-1 flex min-h-27 items-center justify-between gap-1 text-foreground\">\n <span className=\"z-10 flex min-w-0 flex-col gap-2\">\n <Txt\n as=\"span\"\n variant=\"display\"\n className=\"flex items-baseline gap-1 leading-none tracking-tighter whitespace-nowrap tabular-nums\"\n >\n {value}\n {unit && <small className=\"text-meta tracking-normal text-muted-foreground\">{unit}</small>}\n </Txt>\n <span className={captionClasses}>{caption}</span>\n </span>\n {dial}\n </span>\n );\n}\n\nexport function WorkflowTiming({ duration, date }: Pick<WorkflowStepCardViewProps, 'duration' | 'date'>) {\n if (date) {\n const scheduled = new Date(date);\n if (!Number.isFinite(scheduled.getTime())) {\n return <span className={captionClasses}>Schedule unavailable</span>;\n }\n return (\n <TimingReading\n value={formatDate(scheduled, 'time', { timeZone: 'UTC' }) ?? ''}\n unit=\"UTC\"\n caption={formatShortDate(scheduled, { timeZone: 'UTC', now: 0 }) ?? ''}\n dial={<ClockDial date={scheduled} />}\n />\n );\n }\n if (duration === undefined) return null;\n if (!Number.isFinite(duration) || duration < 0) {\n return <span className={captionClasses}>Delay unavailable</span>;\n }\n const reading = durationReading(duration);\n return (\n <TimingReading\n value={formatDuration(duration) ?? ''}\n caption=\"Configured delay\"\n dial={<DurationDial {...reading} />}\n />\n );\n}\n","import { useState } from 'react';\nimport type { CSSProperties } from 'react';\nimport type { WorkflowCardDisplayStatus, WorkflowStepCardViewProps } from '../../types';\nimport { WorkflowTiming } from '../timing/workflow-timing';\nimport { getNodeIndicators } from '../workflow-card-badge-utils';\nimport { getWorkflowCardBadge } from '../workflow-card-kind';\nimport { WorkflowClock } from '../workflow-clock';\nimport { WorkflowTypeBadge } from '../workflow-type-badge';\nimport { ActivityWick } from '@/ds/components/Activity';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/ds/components/Collapsible';\nimport { DisclosureChevron } from '@/ds/components/DisclosureChevron';\nimport { Shimmer } from '@/ds/components/Shimmer';\nimport { Txt } from '@/ds/components/Txt';\nimport { raisedSurfaceStyle, surfaceStateLayerStyle } from '@/ds/primitives/raised-surface';\nimport { cn } from '@/utils/cn';\n\ntype ReportedStatus = NonNullable<WorkflowCardDisplayStatus>;\n\nconst statusLabels = {\n running: 'Running',\n success: 'Completed',\n failed: 'Failed',\n suspended: 'Needs input',\n waiting: 'Waiting',\n paused: 'Paused',\n skipped: 'Skipped',\n canceled: 'Canceled',\n tripwire: 'Tripwire blocked',\n} satisfies Record<ReportedStatus, string>;\n\nconst statusLineClasses: Partial<Record<ReportedStatus, string>> = {\n success: 'after:bg-success-indicator',\n failed: 'after:bg-destructive-indicator',\n tripwire: 'after:bg-warning-indicator',\n waiting: 'after:bg-warning-indicator',\n paused: 'after:bg-warning-indicator',\n skipped: 'after:bg-muted-foreground',\n};\n\nconst footerStatusClasses: Partial<Record<ReportedStatus, string>> = {\n success: 'text-success-indicator',\n failed: 'text-destructive-foreground',\n suspended: 'text-warning-foreground',\n tripwire: 'text-warning-foreground',\n};\n\nconst suspendedWickStyle: CSSProperties & { '--belt-hue': string } = { '--belt-hue': 'var(--warning-indicator)' };\n\nexport function WorkflowStepCardView(props: WorkflowStepCardViewProps) {\n const {\n label,\n description,\n displayStatus,\n stepKey,\n isSelected,\n isWaiting,\n isHovered,\n onHoverChange,\n onSelect,\n isForEach,\n foreachProgress,\n startedAt,\n endedAt,\n actionBar,\n body,\n } = props;\n const [expanded, setExpanded] = useState(props.initiallyOpen ?? false);\n const isRunning = displayStatus === 'running';\n const isSuspended = displayStatus === 'suspended';\n const reportedStatusLabel =\n displayStatus && Object.hasOwn(statusLabels, displayStatus) ? statusLabels[displayStatus] : undefined;\n const statusLabel = displayStatus ? (reportedStatusLabel ?? 'Status unavailable') : 'Not started';\n const kind = getWorkflowCardBadge(props);\n const capabilities = getNodeIndicators(props)\n .filter(indicator => indicator.id !== kind.indicator)\n .map(indicator => indicator.label.replace(/ step$/, ''));\n const hasActivity = isRunning || isSuspended;\n const isStacked = isForEach && !expanded;\n const isBodyExpanded = Boolean(body) && expanded;\n const Summary = onSelect ? 'button' : 'div';\n\n return (\n <div\n className={cn(\n 'relative isolate w-[274px]',\n isBodyExpanded && 'w-172',\n isStacked &&\n 'pb-3 before:absolute before:inset-x-1.5 before:top-2 before:bottom-1.5 before:-z-10 before:rounded-xl before:border before:border-border before:bg-card after:absolute after:inset-x-3 after:top-3.5 after:bottom-0 after:-z-20 after:rounded-xl after:border after:border-border after:bg-card',\n )}\n >\n <Collapsible\n open={expanded}\n onOpenChange={setExpanded}\n className={cn(\n raisedSurfaceStyle,\n 'relative rounded-xl border border-transparent text-foreground transition-[border-color,background-color,box-shadow] [--card-radius:calc(var(--radius-xl)-2px)] motion-reduce:transition-none',\n 'after:pointer-events-none after:absolute after:inset-x-4 after:-top-px after:h-px after:mask-x-from-76%',\n displayStatus && statusLineClasses[displayStatus],\n 'has-focus-visible:outline-1 has-focus-visible:outline-offset-4 has-focus-visible:outline-border-focus',\n isSelected && 'outline-1 outline-offset-4 outline-border-focus',\n isBodyExpanded && 'border-dashed border-muted-foreground/40 shadow-none',\n isWaiting && 'border-info-indicator',\n isHovered && !isSelected && 'bg-muted',\n )}\n data-workflow-node\n data-workflow-step-key={stepKey}\n data-workflow-step-status={displayStatus ?? 'idle'}\n data-workflow-step-active={isSelected || undefined}\n data-workflow-step-waiting={isWaiting || undefined}\n data-workflow-step-hovered={isHovered || undefined}\n data-testid={props.isNestedWorkflowStep ? 'workflow-nested-node' : 'workflow-default-node'}\n onMouseEnter={() => onHoverChange?.(true)}\n onMouseLeave={() => onHoverChange?.(false)}\n >\n <div className=\"m-0.5 overflow-hidden rounded-(--card-radius)\">\n <Summary\n className={cn(\n 'nodrag nopan flex w-full flex-col text-left',\n onSelect && 'group cursor-pointer focus-visible:outline-hidden',\n )}\n type={onSelect ? 'button' : undefined}\n aria-label={onSelect ? `Inspect ${label}` : undefined}\n aria-pressed={onSelect ? Boolean(isSelected) : undefined}\n onClick={onSelect}\n >\n <span className=\"flex items-start justify-between gap-2.5 rounded-(--card-radius) px-3.5 py-3 group-hover:bg-fill-subtle\">\n <Txt as=\"span\" variant=\"column\" tone=\"ink\" className=\"min-w-0 wrap-anywhere\" title={label}>\n <Shimmer active={isRunning}>{label}</Shimmer>\n </Txt>\n <WorkflowTypeBadge {...props} />\n </span>\n <span className=\"flex flex-col gap-2 rounded-t-(--card-radius) bg-card px-3.5 py-3 empty:py-1.5\">\n {description && (\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\" className=\"wrap-anywhere\">\n {description}\n </Txt>\n )}\n <WorkflowTiming duration={props.duration} date={props.date} />\n {isWaiting && (\n <Txt as=\"span\" variant=\"meta\" className=\"text-info-indicator\">\n Next step in debug\n </Txt>\n )}\n {isForEach && foreachProgress && (\n <Txt as=\"span\" variant=\"meta\" className=\"flex flex-col gap-2 py-1\">\n <span>\n <strong>{foreachProgress.completedCount}</strong> of {foreachProgress.totalCount} items complete\n </span>\n {foreachProgress.totalCount > 0 ? (\n <progress\n className=\"h-1 w-full appearance-none border-0 bg-muted accent-success-indicator [&::-moz-progress-bar]:bg-success-indicator [&::-webkit-progress-bar]:bg-muted [&::-webkit-progress-value]:bg-success-indicator\"\n aria-label={`${label} completed items`}\n value={foreachProgress.completedCount}\n max={foreachProgress.totalCount}\n />\n ) : (\n <span>No items to process</span>\n )}\n </Txt>\n )}\n {capabilities.length > 0 && (\n <Txt as=\"span\" variant=\"meta\" tone=\"muted\">\n {capabilities.join(' · ')}\n </Txt>\n )}\n </span>\n </Summary>\n <div\n className={cn(\n 'nodrag nopan flex min-h-7 items-center justify-between gap-2 bg-card px-3.5 pb-2.5 text-meta text-muted-foreground',\n displayStatus && footerStatusClasses[displayStatus],\n )}\n >\n <span role=\"status\" className={isRunning ? 'sr-only motion-reduce:not-sr-only' : undefined}>\n {statusLabel}\n </span>\n {startedAt !== undefined && (\n <span className=\"ml-auto\">\n <WorkflowClock\n startedAt={startedAt}\n endedAt={endedAt}\n isRunning={isRunning}\n spansSuspension={props.spansSuspension}\n />\n </span>\n )}\n {actionBar}\n </div>\n\n {body && (\n <>\n <CollapsibleTrigger\n className={cn(\n surfaceStateLayerStyle,\n 'nodrag nopan flex min-h-11 w-full items-center justify-between border-t border-border bg-card px-3.5 py-2.5 text-caption focus-visible:outline-hidden',\n )}\n >\n <span>\n {expanded ? 'Collapse' : 'Expand'} {isForEach ? 'loop' : 'workflow'}\n </span>\n <DisclosureChevron direction=\"right\" className=\"size-3.5\" />\n </CollapsibleTrigger>\n <CollapsibleContent className=\"h-155 overflow-hidden border-t border-dashed border-border\">\n {body}\n </CollapsibleContent>\n </>\n )}\n </div>\n {hasActivity && (\n <ActivityWick\n status={isSuspended ? 'ready' : 'working'}\n aria-hidden\n className=\"before:hidden\"\n style={isSuspended ? suspendedWickStyle : undefined}\n />\n )}\n </Collapsible>\n </div>\n );\n}\n","import { Handle, Position } from '@xyflow/react';\nimport type { NodeProps } from '@xyflow/react';\n\nimport type { WorkflowBoundaryNodeModel } from './types';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/utils/cn';\n\nexport const WorkflowBoundaryNode = ({ data }: NodeProps<WorkflowBoundaryNodeModel>) => {\n const isStart = data.boundaryRole === 'start';\n\n return (\n <>\n {!isStart && <Handle type=\"target\" position={Position.Top} style={{ visibility: 'hidden' }} />}\n <div\n data-workflow-boundary-node\n data-testid={`workflow-boundary-${data.boundaryRole}`}\n className={cn(\n 'relative flex h-[38px] w-28 items-center justify-center text-muted-foreground after:absolute after:inset-x-0 after:mask-x-from-60%',\n isStart\n ? 'after:bottom-0 after:h-px after:bg-muted-foreground'\n : 'after:top-0 after:h-1 after:border-y after:border-muted-foreground',\n )}\n >\n <Txt variant=\"meta\">{data.label}</Txt>\n </div>\n {isStart && <Handle type=\"source\" position={Position.Bottom} style={{ visibility: 'hidden' }} />}\n </>\n );\n};\n","export function workflowCameraDuration() {\n return window.matchMedia?.('(prefers-reduced-motion: reduce)').matches ? 0 : 300;\n}\n","import { useViewport } from '@xyflow/react';\nimport type { Node } from '@xyflow/react';\nimport { GitFork } from 'lucide-react';\nimport { Badge } from '@/ds/components/Badge';\n\nexport interface WorkflowGraphGroup {\n id: string;\n label: string;\n description: string;\n nodeIds: string[];\n}\n\nexport function WorkflowGraphGroups({ nodes, groups }: { nodes: Node[]; groups: WorkflowGraphGroup[] }) {\n const { x, y, zoom } = useViewport();\n return (\n <div\n className=\"pointer-events-none absolute inset-0 z-0 origin-top-left\"\n style={{ transform: `translate(${x}px, ${y}px) scale(${zoom})` }}\n >\n {groups.map(group => {\n const members = nodes.flatMap(node => {\n if (!group.nodeIds.includes(node.id) || !node.measured?.width || !node.measured.height) return [];\n return [{ x: node.position.x, y: node.position.y, width: node.measured.width, height: node.measured.height }];\n });\n if (!members.length || members.length !== group.nodeIds.length) return null;\n const left = Math.min(...members.map(node => node.x)) - 20;\n const top = Math.min(...members.map(node => node.y)) - 54;\n const right = Math.max(...members.map(node => node.x + node.width)) + 20;\n const bottom = Math.max(...members.map(node => node.y + node.height)) + 20;\n return (\n <div\n key={group.id}\n className=\"absolute rounded-xl border border-dashed border-muted-foreground/25 bg-muted-foreground/3\"\n style={{ transform: `translate(${left}px, ${top}px)`, width: right - left, height: bottom - top }}\n >\n <div className=\"flex items-center gap-2 px-5 py-4 text-meta text-muted-foreground\">\n <Badge size=\"xs\" variant=\"blue\" emphasis=\"subtle\" icon={<GitFork aria-hidden />}>\n {group.label}\n </Badge>\n <span>{group.description}</span>\n </div>\n </div>\n );\n })}\n </div>\n );\n}\n","import type { PanelProps } from '@xyflow/react';\nimport { Panel, useViewport, useReactFlow, useStore } from '@xyflow/react';\nimport { Maximize, Minus, Plus } from 'lucide-react';\nimport { forwardRef } from 'react';\nimport { workflowCameraDuration } from './workflow-camera-duration';\nimport { Button } from '@/ds/components/Button';\nimport { Slider } from '@/ds/components/Slider';\nimport { cn } from '@/utils/cn';\n\nexport const ZoomSlider = forwardRef<\n HTMLDivElement,\n Omit<PanelProps, 'children'> & { compact?: boolean; onFitView?: () => void }\n>(({ className, compact = false, onFitView, ...props }, ref) => {\n const { zoom } = useViewport();\n const { zoomTo, zoomIn, zoomOut, fitView } = useReactFlow();\n const minZoom = useStore(state => state.minZoom);\n const maxZoom = useStore(state => state.maxZoom);\n\n return (\n <Panel\n ref={ref}\n className={cn(\n 'flex items-center gap-1 rounded-full border border-border bg-background p-1 text-foreground',\n className,\n )}\n {...props}\n >\n <Button\n size=\"icon-sm\"\n tooltip=\"Zoom out\"\n disabled={zoom <= minZoom}\n onClick={() => zoomOut({ duration: workflowCameraDuration() })}\n >\n <Minus />\n </Button>\n {!compact && (\n <Slider\n className=\"w-35\"\n aria-label=\"Canvas zoom\"\n value={[zoom]}\n min={minZoom}\n max={maxZoom}\n step={0.01}\n largeStep={0.25}\n format={{ style: 'percent' }}\n onValueChange={values => {\n const [nextZoom] = values;\n if (nextZoom !== undefined) void zoomTo(nextZoom);\n }}\n />\n )}\n <Button\n size=\"icon-sm\"\n tooltip=\"Zoom in\"\n disabled={zoom >= maxZoom}\n onClick={() => zoomIn({ duration: workflowCameraDuration() })}\n >\n <Plus />\n </Button>\n <Button\n size=\"sm\"\n className=\"min-w-16 tabular-nums\"\n tooltip=\"Reset to actual size (100%)\"\n onClick={() => zoomTo(1, { duration: workflowCameraDuration() })}\n >\n {(100 * zoom).toFixed(0)}%\n </Button>\n <Button\n size=\"icon-sm\"\n tooltip=\"Fit view\"\n onClick={onFitView ?? (() => fitView({ duration: workflowCameraDuration(), maxZoom: 1 }))}\n >\n <Maximize />\n </Button>\n </Panel>\n );\n});\n\nZoomSlider.displayName = 'ZoomSlider';\n","import { Background, BackgroundVariant, ReactFlow, useNodesInitialized, useReactFlow, useStore } from '@xyflow/react';\nimport type { Edge, Node, ReactFlowProps } from '@xyflow/react';\nimport { useContext, useEffect, useId, useRef } from 'react';\nimport { WorkflowCanvasInsetContext, workflowFitOptions } from '../workflow-canvas-inset';\nimport { workflowCameraDuration } from './workflow-camera-duration';\nimport { WorkflowGraphGroups } from './workflow-graph-groups';\nimport type { WorkflowGraphGroup } from './workflow-graph-groups';\nimport { ZoomSlider } from './zoom-slider';\nimport { cn } from '@/utils/cn';\nimport '@xyflow/react/dist/style.css';\n\nexport type { WorkflowGraphGroup } from './workflow-graph-groups';\n\nexport interface WorkflowGraphCanvasProps<NodeType extends Node = Node, EdgeType extends Edge = Edge> extends Pick<\n ReactFlowProps<NodeType, EdgeType>,\n 'nodes' | 'edges' | 'nodeTypes' | 'edgeTypes' | 'onNodesChange' | 'onNodeClick'\n> {\n focusNodeId?: string;\n variant?: 'default' | 'nested' | 'inline';\n groups?: WorkflowGraphGroup[];\n}\n\nexport function WorkflowGraphCanvas<NodeType extends Node, EdgeType extends Edge>({\n nodes,\n edges,\n nodeTypes,\n edgeTypes,\n onNodesChange,\n onNodeClick,\n focusNodeId,\n groups,\n variant = 'default',\n}: WorkflowGraphCanvasProps<NodeType, EdgeType>) {\n const graphRef = useRef<HTMLDivElement>(null);\n const backgroundId = useId();\n const panelInset = useContext(WorkflowCanvasInsetContext);\n const leftInset = variant === 'default' ? panelInset : 0;\n const isInline = variant === 'inline';\n const { getNodes, setCenter, fitView } = useReactFlow<NodeType, EdgeType>();\n const nodesInitialized = useNodesInitialized();\n const canvasWidth = useStore(state => state.width);\n const canvasHeight = useStore(state => state.height);\n const hasCompactZoom = canvasWidth - leftInset < 560;\n const inlineNodeLayout = isInline\n ? JSON.stringify(\n nodes?.map(node => [\n node.id,\n node.position.x,\n node.position.y,\n node.measured?.width ?? node.width,\n node.measured?.height ?? node.height,\n ]),\n )\n : undefined;\n\n useEffect(() => {\n if (!canvasWidth || !canvasHeight || !nodesInitialized) return;\n if (variant === 'default') return;\n void fitView({ ...workflowFitOptions(leftInset, isInline), duration: 0 });\n }, [canvasWidth, canvasHeight, nodesInitialized, inlineNodeLayout, fitView, leftInset, isInline, variant]);\n\n useEffect(() => {\n if (!canvasWidth || !canvasHeight || !nodesInitialized || !focusNodeId) return;\n const focusNode = getNodes().find(node => node.id === focusNodeId);\n if (!focusNode) return;\n if (!graphRef.current?.contains(document.activeElement)) {\n graphRef.current?.focus({ preventScroll: true });\n }\n const width = focusNode.measured?.width ?? focusNode.width ?? 274;\n const height = focusNode.measured?.height ?? focusNode.height ?? 100;\n const duration = workflowCameraDuration();\n const exceedsVisibleWidth = canvasWidth > 0 && width > canvasWidth - leftInset - 80;\n const exceedsVisibleHeight = canvasHeight > 0 && height > canvasHeight - 104;\n if (exceedsVisibleWidth || exceedsVisibleHeight) {\n void fitView({ ...workflowFitOptions(leftInset), nodes: [{ id: focusNode.id }], duration });\n return;\n }\n void setCenter(focusNode.position.x + width / 2 - leftInset / 2, focusNode.position.y + height / 2, {\n duration,\n zoom: 1,\n });\n }, [canvasWidth, canvasHeight, nodesInitialized, focusNodeId, getNodes, setCenter, fitView, leftInset]);\n\n return (\n <div\n ref={graphRef}\n tabIndex={-1}\n data-testid=\"workflow-graph-viewport\"\n className={cn('size-full outline-none', variant === 'nested' ? 'bg-sidebar' : 'bg-background')}\n >\n <ReactFlow\n fitView={variant === 'default'}\n fitViewOptions={workflowFitOptions(leftInset)}\n nodes={nodes}\n edges={edges}\n nodeTypes={nodeTypes}\n edgeTypes={edgeTypes}\n onNodesChange={onNodesChange}\n onNodeClick={onNodeClick}\n nodesDraggable={false}\n nodesConnectable={false}\n elementsSelectable={false}\n deleteKeyCode={null}\n panOnScroll={!isInline}\n panOnDrag={!isInline}\n zoomOnPinch={!isInline}\n zoomOnDoubleClick={!isInline}\n preventScrolling={!isInline}\n proOptions={isInline ? { hideAttribution: true } : undefined}\n zoomOnScroll={false}\n minZoom={0.1}\n maxZoom={4}\n >\n {!isInline && (\n <ZoomSlider\n position=\"top-right\"\n className=\"m-2!\"\n compact={hasCompactZoom}\n onFitView={() => fitView({ ...workflowFitOptions(leftInset), duration: workflowCameraDuration() })}\n />\n )}\n {groups && <WorkflowGraphGroups nodes={nodes ?? []} groups={groups} />}\n {!isInline && <Background id={backgroundId} variant={BackgroundVariant.Dots} gap={12} size={0.5} />}\n </ReactFlow>\n </div>\n );\n}\n","import { Handle, Position } from '@xyflow/react';\nimport type { ReactNode } from 'react';\n\nexport interface WorkflowNodeFrameProps {\n withoutTopHandle?: boolean;\n withoutBottomHandle?: boolean;\n children: ReactNode;\n}\n\nexport function WorkflowNodeFrame({ withoutTopHandle, withoutBottomHandle, children }: WorkflowNodeFrameProps) {\n return (\n <>\n {!withoutTopHandle && <Handle type=\"target\" position={Position.Top} style={{ visibility: 'hidden' }} />}\n <div className=\"nodrag pointer-events-auto\">{children}</div>\n {!withoutBottomHandle && <Handle type=\"source\" position={Position.Bottom} style={{ visibility: 'hidden' }} />}\n </>\n );\n}\n","import type { WorkflowConditionCardViewProps } from '../../types';\nimport { WorkflowConditionCardView } from './workflow-condition-card-view';\n\nexport type WorkflowConditionCardProps = Omit<WorkflowConditionCardViewProps, 'type'>;\n\nexport function WorkflowConditionCard({ conditions, ...props }: WorkflowConditionCardProps) {\n return <WorkflowConditionCardView {...props} type={conditions[0]?.type} conditions={conditions} />;\n}\n"],"names":["Repeat2","Workflow","GitFork","ArrowRightLeft","CalendarClock","Timer","Bot","Wrench","GitBranch","Braces","jsx","Badge","List","PlayCircle","Clock","Layers","Network","Repeat1","Repeat","RefreshCw","CornerDownRight","useState","useEffect","formatDuration","Txt","Code","formatTypeScript","jsxs","raisedSurfaceStyle","Fragment","CopyButton","cn","formatDate","formatShortDate","Collapsible","Shimmer","CollapsibleTrigger","surfaceStateLayerStyle","DisclosureChevron","CollapsibleContent","ActivityWick","Handle","Position","useViewport","forwardRef","useReactFlow","useStore","Panel","Button","Minus","Slider","Plus","Maximize","useRef","useId","useContext","WorkflowCanvasInsetContext","useNodesInitialized","workflowFitOptions","ReactFlow","Background","BackgroundVariant"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workflow-condition-card-CHV32SJm.cjs","sources":["../src/ds/components/Workflow/cards/workflow-card-kind.ts","../src/ds/components/Workflow/cards/workflow-type-badge.tsx","../src/ds/components/Workflow/cards/workflow-card-badge-utils.ts","../src/ds/components/Workflow/cards/workflow-clock.tsx","../src/ds/components/Workflow/cards/condition/workflow-condition-expression.ts","../src/ds/components/Workflow/cards/condition/workflow-condition-source.tsx","../src/ds/components/Workflow/cards/condition/workflow-condition-card-view.tsx","../src/ds/components/Workflow/cards/timing/workflow-time-dial.tsx","../src/ds/components/Workflow/cards/timing/workflow-timing.tsx","../src/ds/components/Workflow/cards/step/workflow-step-card-view.tsx","../src/ds/components/Workflow/graph/workflow-boundary-node.tsx","../src/ds/components/Workflow/graph/workflow-camera-duration.ts","../src/ds/components/Workflow/graph/workflow-graph-groups.tsx","../src/ds/components/Workflow/graph/zoom-slider.tsx","../src/ds/components/Workflow/graph/workflow-graph-canvas.tsx","../src/ds/components/Workflow/graph/workflow-node-frame.tsx","../src/ds/components/Workflow/cards/condition/workflow-condition-card.tsx"],"sourcesContent":["import {\n ArrowRightLeft,\n Bot,\n Braces,\n CalendarClock,\n GitBranch,\n GitFork,\n Repeat2,\n Timer,\n Workflow,\n Wrench,\n} from 'lucide-react';\nimport type { LucideIcon } from 'lucide-react';\nimport type { WorkflowStepCardViewProps } from '../types';\nimport type { BadgeVariant } from '@/ds/components/Badge';\n\nexport type WorkflowTypeBadgeProps = Pick<\n WorkflowStepCardViewProps,\n 'nodeKind' | 'isForEach' | 'isNestedWorkflowStep' | 'stepGraph' | 'isParallel' | 'mapConfig' | 'date' | 'duration'\n>;\n\nexport function getWorkflowCardBadge(props: WorkflowTypeBadgeProps): {\n label: string;\n Icon: LucideIcon;\n tone: BadgeVariant;\n indicator?: string;\n} {\n if (props.isForEach) return { label: 'For each', tone: 'orange', Icon: Repeat2, indicator: 'foreach' };\n if (props.isNestedWorkflowStep || props.stepGraph)\n return { label: 'Workflow', tone: 'purple', Icon: Workflow, indicator: 'workflow' };\n if (props.isParallel && !props.nodeKind)\n return { label: 'Parallel', tone: 'blue', Icon: GitFork, indicator: 'parallel' };\n if (props.nodeKind === 'map' || props.mapConfig)\n return { label: 'Map', tone: 'orange', Icon: ArrowRightLeft, indicator: 'map' };\n if (props.nodeKind === 'wait-until' || props.date)\n return { label: 'Wait until', tone: 'purple', Icon: CalendarClock, indicator: 'sleep-until' };\n if (props.nodeKind === 'delay' || props.duration !== undefined)\n return { label: 'Delay', tone: 'purple', Icon: Timer, indicator: 'sleep' };\n if (props.nodeKind === 'agent') return { label: 'Agent', tone: 'cyan', Icon: Bot };\n if (props.nodeKind === 'tool') return { label: 'Tool', tone: 'pink', Icon: Wrench };\n if (props.nodeKind === 'classifier') return { label: 'Classifier', tone: 'blue', Icon: GitBranch };\n return { label: 'Step', tone: 'neutral', Icon: Braces };\n}\n","import { getWorkflowCardBadge } from './workflow-card-kind';\nimport type { WorkflowTypeBadgeProps } from './workflow-card-kind';\nimport { Badge } from '@/ds/components/Badge';\n\nexport function WorkflowTypeBadge(props: WorkflowTypeBadgeProps) {\n const { label, Icon, tone } = getWorkflowCardBadge(props);\n return (\n <Badge size=\"xs\" variant={tone} icon={<Icon aria-hidden />}>\n {label}\n </Badge>\n );\n}\n","import {\n CalendarClock,\n Clock,\n CornerDownRight,\n GitBranch,\n Layers,\n List,\n Network,\n PlayCircle,\n RefreshCw,\n Repeat,\n Repeat1,\n Timer,\n Workflow,\n} from 'lucide-react';\nimport type { LucideIcon } from 'lucide-react';\n\nexport const BADGE_COLORS = {\n sleep: 'var(--badge-purple-indicator)',\n forEach: 'var(--badge-orange-indicator)',\n map: 'var(--badge-orange-indicator)',\n parallel: 'var(--badge-blue-indicator)',\n suspend: 'var(--badge-pink-indicator)',\n after: 'var(--badge-cyan-indicator)',\n workflow: 'var(--badge-purple-indicator)',\n when: 'var(--badge-amber-indicator)',\n dountil: 'var(--badge-purple-indicator)',\n dowhile: 'var(--badge-cyan-indicator)',\n until: 'var(--badge-amber-indicator)',\n while: 'var(--badge-green-indicator)',\n if: 'var(--badge-blue-indicator)',\n else: 'var(--muted-foreground)',\n} as const;\n\nexport const BADGE_ICONS = {\n sleep: Timer,\n sleepUntil: CalendarClock,\n forEach: List,\n map: List,\n parallel: Workflow,\n suspend: PlayCircle,\n after: Clock,\n workflow: Layers,\n when: Network,\n dountil: Repeat1,\n dowhile: Repeat,\n until: Timer,\n while: RefreshCw,\n if: GitBranch,\n else: CornerDownRight,\n} as const;\n\nexport interface ConditionIconConfig {\n icon: LucideIcon | undefined;\n color: string | undefined;\n}\n\nexport interface WorkflowCardIndicator {\n id: string;\n label: string;\n icon: LucideIcon;\n color: string;\n}\n\nconst CONDITION_LABELS: Record<string, string> = {\n when: 'When condition',\n dountil: 'Do until condition',\n dowhile: 'Do while condition',\n until: 'Until condition',\n while: 'While condition',\n if: 'If condition',\n else: 'Else condition',\n and: 'And condition',\n or: 'Or condition',\n not: 'Not condition',\n};\n\nexport const getConditionIconAndColor = (type?: string): ConditionIconConfig => {\n switch (type) {\n case 'when':\n return { icon: BADGE_ICONS.when, color: BADGE_COLORS.when };\n case 'dountil':\n return { icon: BADGE_ICONS.dountil, color: BADGE_COLORS.dountil };\n case 'dowhile':\n return { icon: BADGE_ICONS.dowhile, color: BADGE_COLORS.dowhile };\n case 'until':\n return { icon: BADGE_ICONS.until, color: BADGE_COLORS.until };\n case 'while':\n return { icon: BADGE_ICONS.while, color: BADGE_COLORS.while };\n case 'if':\n return { icon: BADGE_ICONS.if, color: BADGE_COLORS.if };\n case 'else':\n return { icon: BADGE_ICONS.else, color: BADGE_COLORS.else };\n case 'and':\n case 'or':\n case 'not':\n return { icon: BADGE_ICONS.when, color: BADGE_COLORS.when };\n default:\n return { icon: undefined, color: undefined };\n }\n};\n\nexport const getConditionIndicator = (type?: string): WorkflowCardIndicator | undefined => {\n const { icon, color } = getConditionIconAndColor(type);\n\n if (!type || !icon || !color) {\n return undefined;\n }\n\n return {\n id: `condition-${type}`,\n label: CONDITION_LABELS[type] ?? `${type} condition`,\n icon,\n color,\n };\n};\n\nexport interface WorkflowNodeBadgeInfo {\n isSleepNode: boolean;\n isForEachNode: boolean;\n isMapNode: boolean;\n isNestedWorkflow: boolean;\n hasSpecialBadge: boolean;\n}\n\nexport interface WorkflowCardBadgesProps {\n duration?: number;\n date?: Date;\n isForEach?: boolean;\n mapConfig?: string;\n canSuspend?: boolean;\n isParallel?: boolean;\n stepGraph?: unknown;\n}\n\nexport const getNodeBadgeInfo = ({\n duration,\n date,\n isForEach,\n mapConfig,\n canSuspend,\n isParallel,\n stepGraph,\n}: WorkflowCardBadgesProps): WorkflowNodeBadgeInfo => {\n const isSleepNode = Boolean(duration || date);\n const isForEachNode = Boolean(isForEach);\n const isMapNode = Boolean(mapConfig && !isForEach);\n const isNestedWorkflow = Boolean(stepGraph);\n const hasSpecialBadge =\n isSleepNode || Boolean(canSuspend || isParallel) || isForEachNode || isMapNode || isNestedWorkflow;\n\n return {\n isSleepNode,\n isForEachNode,\n isMapNode,\n isNestedWorkflow,\n hasSpecialBadge,\n };\n};\n\nexport const getNodeIndicators = (props: WorkflowCardBadgesProps): WorkflowCardIndicator[] => {\n const { isSleepNode, isForEachNode, isMapNode, isNestedWorkflow } = getNodeBadgeInfo(props);\n const indicators: WorkflowCardIndicator[] = [];\n\n if (isSleepNode) {\n indicators.push({\n id: props.date ? 'sleep-until' : 'sleep',\n label: props.date ? 'Sleep until step' : 'Sleep step',\n icon: props.date ? BADGE_ICONS.sleepUntil : BADGE_ICONS.sleep,\n color: BADGE_COLORS.sleep,\n });\n }\n\n if (props.canSuspend) {\n indicators.push({\n id: 'suspend',\n label: 'Suspend/resume step',\n icon: BADGE_ICONS.suspend,\n color: BADGE_COLORS.suspend,\n });\n }\n\n if (props.isParallel) {\n indicators.push({\n id: 'parallel',\n label: 'Parallel step',\n icon: BADGE_ICONS.parallel,\n color: BADGE_COLORS.parallel,\n });\n }\n\n if (isNestedWorkflow) {\n indicators.push({\n id: 'workflow',\n label: 'Nested workflow step',\n icon: BADGE_ICONS.workflow,\n color: BADGE_COLORS.workflow,\n });\n }\n\n if (isForEachNode) {\n indicators.push({\n id: 'foreach',\n label: 'Foreach step',\n icon: BADGE_ICONS.forEach,\n color: BADGE_COLORS.forEach,\n });\n }\n\n if (isMapNode) {\n indicators.push({\n id: 'map',\n label: 'Map step',\n icon: BADGE_ICONS.map,\n color: BADGE_COLORS.map,\n });\n }\n\n return indicators;\n};\n","import { useEffect, useState } from 'react';\nimport { Txt } from '@/ds/components/Txt';\nimport { formatDuration } from '@/utils/duration';\n\ninterface WorkflowClockProps {\n startedAt: number;\n endedAt?: number;\n isRunning?: boolean;\n spansSuspension?: boolean;\n}\n\nexport const WorkflowClock = ({ startedAt, endedAt, isRunning = false, spansSuspension }: WorkflowClockProps) => {\n if (isRunning && endedAt === undefined && Number.isFinite(startedAt)) {\n return <RunningWorkflowClock key={startedAt} startedAt={startedAt} spansSuspension={spansSuspension} />;\n }\n return <ElapsedTime startedAt={startedAt} endedAt={endedAt} spansSuspension={spansSuspension} />;\n};\n\nfunction RunningWorkflowClock({ startedAt, spansSuspension }: Omit<WorkflowClockProps, 'isRunning'>) {\n const [time, setTime] = useState(() => Date.now());\n useEffect(() => {\n const interval = setInterval(() => setTime(Date.now()), 100);\n return () => clearInterval(interval);\n }, []);\n return <ElapsedTime startedAt={startedAt} endedAt={time} spansSuspension={spansSuspension} />;\n}\n\nfunction ElapsedTime({ startedAt, endedAt, spansSuspension }: Omit<WorkflowClockProps, 'isRunning'>) {\n const elapsed = endedAt === undefined ? undefined : formatDuration(endedAt - startedAt);\n\n return (\n <Txt\n variant=\"meta\"\n tone=\"muted\"\n font=\"mono\"\n className=\"whitespace-nowrap\"\n title={elapsed && spansSuspension ? 'Includes time spent suspended waiting for input' : undefined}\n >\n {elapsed === undefined ? <span aria-label=\"Timing unavailable\">—</span> : elapsed}\n </Txt>\n );\n}\n","import type { WorkflowCardCondition } from '../../types';\n\nexport function conditionExpression(condition: WorkflowCardCondition) {\n if (condition.fnString !== undefined) return condition.fnString;\n return JSON.stringify({ ref: condition.ref, query: condition.query, conj: condition.conj }, null, 2);\n}\n","import { useEffect, useState } from 'react';\nimport { Code } from '@/ds/components/Code';\nimport { formatTypeScript } from '@/utils/formatting';\n\nconst MAX_FORMATTED_SOURCE_CHARS = 10_000;\n\nexport function WorkflowConditionSource({ source }: { source: string }) {\n if (source.length > MAX_FORMATTED_SOURCE_CHARS) return <Code code={source} />;\n return <FormattedConditionSource key={source} source={source} />;\n}\n\nfunction FormattedConditionSource({ source }: { source: string }) {\n const [formatted, setFormatted] = useState<string>();\n\n useEffect(() => {\n let cancelled = false;\n formatTypeScript(source)\n .then(expression => {\n if (!cancelled) setFormatted(expression.trim());\n })\n .catch(() => undefined);\n return () => {\n cancelled = true;\n };\n }, [source]);\n\n return <Code code={formatted ?? source} lang={formatted === undefined ? undefined : 'typescript'} />;\n}\n","import { Braces } from 'lucide-react';\nimport type { WorkflowConditionCardViewProps } from '../../types';\nimport { getConditionIndicator } from '../workflow-card-badge-utils';\nimport { conditionExpression } from './workflow-condition-expression';\nimport { WorkflowConditionSource } from './workflow-condition-source';\nimport { Badge } from '@/ds/components/Badge';\nimport { Code } from '@/ds/components/Code';\nimport { CopyButton } from '@/ds/components/CopyButton';\nimport { raisedSurfaceStyle } from '@/ds/primitives/raised-surface';\n\nconst surfaceClasses = 'rounded-[calc(var(--radius-xl)-2px)] bg-card text-meta';\n\nexport function WorkflowConditionCardView({\n type,\n conditions,\n previousDisplayStatus,\n actionBar,\n}: WorkflowConditionCardViewProps) {\n const indicator = getConditionIndicator(type);\n const Icon = indicator?.icon ?? Braces;\n const label = indicator?.label.replace(/ condition$/, '') ?? 'Condition';\n const occurrences = new Map<string, number>();\n const sources = conditions.map(condition => {\n const expression = conditionExpression(condition);\n const identity = `${condition.type}:${expression}`;\n const occurrence = occurrences.get(identity) ?? 0;\n occurrences.set(identity, occurrence + 1);\n return { condition, expression, key: `${identity}:${occurrence}` };\n });\n const copyContent =\n conditions.length > 1 ? JSON.stringify(conditions, null, 2) : sources.map(source => source.expression).join('\\n');\n const hasExpression = type !== 'else' && sources.some(({ expression }) => expression.trim().length > 0);\n\n return (\n <div\n className={`${raisedSurfaceStyle} w-[274px] overflow-hidden rounded-xl p-0.5 has-focus-visible:outline-1 has-focus-visible:outline-offset-4 has-focus-visible:outline-border-focus`}\n data-workflow-node\n data-testid=\"workflow-condition-node\"\n data-workflow-step-status={previousDisplayStatus ?? 'idle'}\n >\n <div className=\"flex h-[46px] items-center gap-2 px-2.5 text-meta text-muted-foreground\">\n <Badge size=\"xs\" variant={type === 'else' ? 'neutral' : 'amber'} emphasis=\"subtle\" icon={<Icon aria-hidden />}>\n {label}\n </Badge>\n {hasExpression && (\n <>\n <span className=\"ml-auto\">Expression</span>\n <CopyButton content={copyContent} tooltip=\"Copy expression\" size=\"sm\" className=\"nodrag nopan\" />\n </>\n )}\n </div>\n {hasExpression ? (\n <div\n role=\"region\"\n aria-label=\"Condition details\"\n tabIndex={0}\n className={`${surfaceClasses} nodrag nopan nowheel max-h-55 overflow-auto p-3.5 text-foreground [&_pre]:leading-relaxed [&_pre]:whitespace-pre-wrap`}\n >\n {sources.map(({ condition, expression, key }) => (\n <div key={key}>\n {condition.conj && (\n <Badge size=\"xs\" variant=\"neutral\">\n {condition.conj.toUpperCase()}\n </Badge>\n )}\n {condition.fnString !== undefined ? (\n <WorkflowConditionSource source={condition.fnString} />\n ) : (\n <Code code={expression} />\n )}\n </div>\n ))}\n </div>\n ) : (\n <p className={`${surfaceClasses} p-3 text-muted-foreground`}>\n {type === 'else' ? 'When no other branch matches' : 'Condition expression unavailable'}\n </p>\n )}\n {actionBar && <div className=\"nodrag nopan flex justify-end px-2.5 py-1.5 empty:hidden\">{actionBar}</div>}\n </div>\n );\n}\n","import type { ComponentProps, ReactNode } from 'react';\nimport { cn } from '@/utils/cn';\n\nexport type DurationUnit = 'ms' | 's' | 'min' | 'h';\n\nconst DIAL_CENTER = 58;\nconst CLOCK_TICK_ANGLES = Array.from({ length: 60 }, (_, index) => index * 6);\nconst DURATION_TICK_ANGLES = Array.from({ length: 41 }, (_, index) => -120 + index * 6);\n\nfunction pointAt(angle: number, radius: number) {\n const radians = (angle * Math.PI) / 180;\n return {\n x: DIAL_CENTER + Math.sin(radians) * radius,\n y: DIAL_CENTER - Math.cos(radians) * radius,\n };\n}\n\nfunction DialTick({ angle, major, className, ...props }: ComponentProps<'line'> & { angle: number; major: boolean }) {\n const outer = pointAt(angle, 49);\n const inner = pointAt(angle, major ? 38 : 43);\n return (\n <line\n x1={inner.x}\n y1={inner.y}\n x2={outer.x}\n y2={outer.y}\n className={cn(major ? 'stroke-placeholder' : 'stroke-border-strong', className)}\n {...props}\n />\n );\n}\n\nfunction DialHand({ angle, length }: { angle: number; length: number }) {\n const tip = pointAt(angle, length);\n return (\n <line\n x1={DIAL_CENTER}\n y1={DIAL_CENTER}\n x2={tip.x}\n y2={tip.y}\n className=\"stroke-1.5 stroke-muted-foreground\"\n strokeLinecap=\"round\"\n />\n );\n}\n\nfunction DialFace({ tickAngles, children }: { tickAngles: number[]; children: ReactNode }) {\n return (\n <span className=\"block size-28 shrink-0 text-muted-foreground\" aria-hidden>\n <svg viewBox=\"0 0 116 116\" fill=\"none\" className=\"block size-full overflow-visible\">\n {tickAngles.map((angle, index) => (\n <DialTick key={angle} angle={angle} major={index % 5 === 0} />\n ))}\n {children}\n </svg>\n </span>\n );\n}\n\nexport function ClockDial({ date }: { date: Date }) {\n const minutes = date.getUTCMinutes();\n return (\n <DialFace tickAngles={CLOCK_TICK_ANGLES}>\n <DialHand angle={((date.getUTCHours() % 12) + minutes / 60) * 30} length={26} />\n <DialHand angle={minutes * 6} length={37} />\n <circle cx={DIAL_CENTER} cy={DIAL_CENTER} r={2} fill=\"currentColor\" />\n </DialFace>\n );\n}\n\nexport function DurationDial({ amount, unit }: { amount: number; unit: DurationUnit }) {\n const scale = Math.max({ h: 24, ms: 1000, s: 60, min: 60 }[unit], Math.ceil(amount / 10) * 10);\n return (\n <DialFace tickAngles={DURATION_TICK_ANGLES}>\n <DialTick\n angle={-120 + (amount / scale) * 240}\n major\n className=\"stroke-foreground stroke-2\"\n strokeLinecap=\"round\"\n />\n <text x={DIAL_CENTER} y={94} textAnchor=\"middle\" className=\"fill-muted-foreground font-body text-meta\">\n {scale} {unit}\n </text>\n <text x={DIAL_CENTER} y={106} textAnchor=\"middle\" className=\"fill-placeholder font-body text-meta\">\n scale\n </text>\n </DialFace>\n );\n}\n","import type { ReactNode } from 'react';\nimport type { WorkflowStepCardViewProps } from '../../types';\nimport { ClockDial, DurationDial } from './workflow-time-dial';\nimport type { DurationUnit } from './workflow-time-dial';\nimport { Txt } from '@/ds/components/Txt';\nimport { formatDate, formatShortDate } from '@/utils/date-format';\nimport { formatDuration } from '@/utils/duration';\n\nconst captionClasses = 'text-meta tracking-wider whitespace-nowrap text-muted-foreground uppercase';\n\nfunction durationReading(duration: number): { amount: number; unit: DurationUnit } {\n if (duration < 1000) return { amount: duration, unit: 'ms' };\n if (duration < 60000) return { amount: duration / 1000, unit: 's' };\n if (duration < 3600000) return { amount: duration / 60000, unit: 'min' };\n return { amount: duration / 3600000, unit: 'h' };\n}\n\nfunction TimingReading({\n value,\n unit,\n caption,\n dial,\n}: {\n value: string;\n unit?: string;\n caption: string;\n dial: ReactNode;\n}) {\n return (\n <span className=\"mt-1 flex min-h-27 items-center justify-between gap-1 text-foreground\">\n <span className=\"z-10 flex min-w-0 flex-col gap-2\">\n <Txt\n as=\"span\"\n variant=\"display\"\n className=\"flex items-baseline gap-1 leading-none tracking-tighter whitespace-nowrap tabular-nums\"\n >\n {value}\n {unit && <small className=\"text-meta tracking-normal text-muted-foreground\">{unit}</small>}\n </Txt>\n <span className={captionClasses}>{caption}</span>\n </span>\n {dial}\n </span>\n );\n}\n\nexport function WorkflowTiming({ duration, date }: Pick<WorkflowStepCardViewProps, 'duration' | 'date'>) {\n if (date) {\n const scheduled = new Date(date);\n if (!Number.isFinite(scheduled.getTime())) {\n return <span className={captionClasses}>Schedule unavailable</span>;\n }\n return (\n <TimingReading\n value={formatDate(scheduled, 'time', { timeZone: 'UTC' }) ?? ''}\n unit=\"UTC\"\n caption={formatShortDate(scheduled, { timeZone: 'UTC', now: 0 }) ?? ''}\n dial={<ClockDial date={scheduled} />}\n />\n );\n }\n if (duration === undefined) return null;\n if (!Number.isFinite(duration) || duration < 0) {\n return <span className={captionClasses}>Delay unavailable</span>;\n }\n const reading = durationReading(duration);\n return (\n <TimingReading\n value={formatDuration(duration) ?? ''}\n caption=\"Configured delay\"\n dial={<DurationDial {...reading} />}\n />\n );\n}\n","import { useState } from 'react';\nimport type { CSSProperties } from 'react';\nimport type { WorkflowCardDisplayStatus, WorkflowStepCardViewProps } from '../../types';\nimport { WorkflowTiming } from '../timing/workflow-timing';\nimport { getNodeIndicators } from '../workflow-card-badge-utils';\nimport { getWorkflowCardBadge } from '../workflow-card-kind';\nimport { WorkflowClock } from '../workflow-clock';\nimport { WorkflowTypeBadge } from '../workflow-type-badge';\nimport { ActivityWick } from '@/ds/components/Activity';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/ds/components/Collapsible';\nimport { DisclosureChevron } from '@/ds/components/DisclosureChevron';\nimport { Shimmer } from '@/ds/components/Shimmer';\nimport { Txt } from '@/ds/components/Txt';\nimport { raisedSurfaceStyle, surfaceStateLayerStyle } from '@/ds/primitives/raised-surface';\nimport { cn } from '@/utils/cn';\n\ntype ReportedStatus = NonNullable<WorkflowCardDisplayStatus>;\n\nconst statusLabels = {\n running: 'Running',\n success: 'Completed',\n failed: 'Failed',\n suspended: 'Needs input',\n waiting: 'Waiting',\n paused: 'Paused',\n skipped: 'Skipped',\n canceled: 'Canceled',\n tripwire: 'Tripwire blocked',\n} satisfies Record<ReportedStatus, string>;\n\nconst statusLineClasses: Partial<Record<ReportedStatus, string>> = {\n success: 'after:bg-success-indicator',\n failed: 'after:bg-destructive-indicator',\n tripwire: 'after:bg-warning-indicator',\n waiting: 'after:bg-warning-indicator',\n paused: 'after:bg-warning-indicator',\n skipped: 'after:bg-muted-foreground',\n};\n\nconst footerStatusClasses: Partial<Record<ReportedStatus, string>> = {\n success: 'text-success-indicator',\n failed: 'text-destructive-foreground',\n suspended: 'text-warning-foreground',\n tripwire: 'text-warning-foreground',\n};\n\nconst suspendedWickStyle: CSSProperties & { '--belt-hue': string } = { '--belt-hue': 'var(--warning-indicator)' };\n\nexport function WorkflowStepCardView(props: WorkflowStepCardViewProps) {\n const {\n label,\n description,\n displayStatus,\n stepKey,\n isSelected,\n isWaiting,\n isHovered,\n onHoverChange,\n onSelect,\n isForEach,\n foreachProgress,\n startedAt,\n endedAt,\n actionBar,\n body,\n } = props;\n const [expanded, setExpanded] = useState(props.initiallyOpen ?? false);\n const isRunning = displayStatus === 'running';\n const isSuspended = displayStatus === 'suspended';\n const reportedStatusLabel =\n displayStatus && Object.hasOwn(statusLabels, displayStatus) ? statusLabels[displayStatus] : undefined;\n const statusLabel = displayStatus ? (reportedStatusLabel ?? 'Status unavailable') : 'Not started';\n const kind = getWorkflowCardBadge(props);\n const capabilities = getNodeIndicators(props)\n .filter(indicator => indicator.id !== kind.indicator)\n .map(indicator => indicator.label.replace(/ step$/, ''));\n const hasActivity = isRunning || isSuspended;\n const isStacked = isForEach && !expanded;\n const isBodyExpanded = Boolean(body) && expanded;\n const Summary = onSelect ? 'button' : 'div';\n\n return (\n <div\n className={cn(\n 'relative isolate w-[274px]',\n isBodyExpanded && 'w-172',\n isStacked &&\n 'pb-3 before:absolute before:inset-x-1.5 before:top-2 before:bottom-1.5 before:-z-10 before:rounded-xl before:border before:border-border before:bg-card after:absolute after:inset-x-3 after:top-3.5 after:bottom-0 after:-z-20 after:rounded-xl after:border after:border-border after:bg-card',\n )}\n >\n <Collapsible\n open={expanded}\n onOpenChange={setExpanded}\n className={cn(\n raisedSurfaceStyle,\n 'relative rounded-xl border border-transparent text-foreground transition-[border-color,background-color,box-shadow] [--card-radius:calc(var(--radius-xl)-2px)] motion-reduce:transition-none',\n 'after:pointer-events-none after:absolute after:inset-x-4 after:-top-px after:h-px after:mask-x-from-76%',\n displayStatus && statusLineClasses[displayStatus],\n 'has-focus-visible:outline-1 has-focus-visible:outline-offset-4 has-focus-visible:outline-border-focus',\n isSelected && 'outline-1 outline-offset-4 outline-border-focus',\n isBodyExpanded && 'border-dashed border-muted-foreground/40 shadow-none',\n isWaiting && 'border-info-indicator',\n isHovered && !isSelected && 'bg-muted',\n )}\n data-workflow-node\n data-workflow-step-key={stepKey}\n data-workflow-step-status={displayStatus ?? 'idle'}\n data-workflow-step-active={isSelected || undefined}\n data-workflow-step-waiting={isWaiting || undefined}\n data-workflow-step-hovered={isHovered || undefined}\n data-testid={props.isNestedWorkflowStep ? 'workflow-nested-node' : 'workflow-default-node'}\n onMouseEnter={() => onHoverChange?.(true)}\n onMouseLeave={() => onHoverChange?.(false)}\n >\n <div className=\"m-0.5 overflow-hidden rounded-(--card-radius)\">\n <Summary\n className={cn(\n 'nodrag nopan flex w-full flex-col text-left',\n onSelect && 'group cursor-pointer focus-visible:outline-hidden',\n )}\n type={onSelect ? 'button' : undefined}\n aria-label={onSelect ? `Inspect ${label}` : undefined}\n aria-pressed={onSelect ? Boolean(isSelected) : undefined}\n onClick={onSelect}\n >\n <span className=\"flex items-start justify-between gap-2.5 rounded-(--card-radius) px-3.5 py-3 group-hover:bg-fill-subtle\">\n <Txt as=\"span\" variant=\"column\" tone=\"ink\" className=\"min-w-0 wrap-anywhere\" title={label}>\n <Shimmer active={isRunning}>{label}</Shimmer>\n </Txt>\n <WorkflowTypeBadge {...props} />\n </span>\n <span className=\"flex flex-col gap-2 rounded-t-(--card-radius) bg-card px-3.5 py-3 empty:py-1.5\">\n {description && (\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\" className=\"wrap-anywhere\">\n {description}\n </Txt>\n )}\n <WorkflowTiming duration={props.duration} date={props.date} />\n {isWaiting && (\n <Txt as=\"span\" variant=\"meta\" className=\"text-info-indicator\">\n Next step in debug\n </Txt>\n )}\n {isForEach && foreachProgress && (\n <Txt as=\"span\" variant=\"meta\" className=\"flex flex-col gap-2 py-1\">\n <span>\n <strong>{foreachProgress.completedCount}</strong> of {foreachProgress.totalCount} items complete\n </span>\n {foreachProgress.totalCount > 0 ? (\n <progress\n className=\"h-1 w-full appearance-none border-0 bg-muted accent-success-indicator [&::-moz-progress-bar]:bg-success-indicator [&::-webkit-progress-bar]:bg-muted [&::-webkit-progress-value]:bg-success-indicator\"\n aria-label={`${label} completed items`}\n value={foreachProgress.completedCount}\n max={foreachProgress.totalCount}\n />\n ) : (\n <span>No items to process</span>\n )}\n </Txt>\n )}\n {capabilities.length > 0 && (\n <Txt as=\"span\" variant=\"meta\" tone=\"muted\">\n {capabilities.join(' · ')}\n </Txt>\n )}\n </span>\n </Summary>\n <div\n className={cn(\n 'nodrag nopan flex min-h-7 items-center justify-between gap-2 bg-card px-3.5 pb-2.5 text-meta text-muted-foreground',\n displayStatus && footerStatusClasses[displayStatus],\n )}\n >\n <span role=\"status\" className={isRunning ? 'sr-only motion-reduce:not-sr-only' : undefined}>\n {statusLabel}\n </span>\n {startedAt !== undefined && (\n <span className=\"ml-auto\">\n <WorkflowClock\n startedAt={startedAt}\n endedAt={endedAt}\n isRunning={isRunning}\n spansSuspension={props.spansSuspension}\n />\n </span>\n )}\n {actionBar}\n </div>\n\n {body && (\n <>\n <CollapsibleTrigger\n className={cn(\n surfaceStateLayerStyle,\n 'nodrag nopan flex min-h-11 w-full items-center justify-between border-t border-border bg-card px-3.5 py-2.5 text-caption focus-visible:outline-hidden',\n )}\n >\n <span>\n {expanded ? 'Collapse' : 'Expand'} {isForEach ? 'loop' : 'workflow'}\n </span>\n <DisclosureChevron direction=\"right\" className=\"size-3.5\" />\n </CollapsibleTrigger>\n <CollapsibleContent className=\"h-155 overflow-hidden border-t border-dashed border-border\">\n {body}\n </CollapsibleContent>\n </>\n )}\n </div>\n {hasActivity && (\n <ActivityWick\n status={isSuspended ? 'ready' : 'working'}\n aria-hidden\n className=\"before:hidden\"\n style={isSuspended ? suspendedWickStyle : undefined}\n />\n )}\n </Collapsible>\n </div>\n );\n}\n","import { Handle, Position } from '@xyflow/react';\nimport type { NodeProps } from '@xyflow/react';\n\nimport type { WorkflowBoundaryNodeModel } from './types';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/utils/cn';\n\nexport const WorkflowBoundaryNode = ({ data }: NodeProps<WorkflowBoundaryNodeModel>) => {\n const isStart = data.boundaryRole === 'start';\n\n return (\n <>\n {!isStart && <Handle type=\"target\" position={Position.Top} style={{ visibility: 'hidden' }} />}\n <div\n data-workflow-boundary-node\n data-testid={`workflow-boundary-${data.boundaryRole}`}\n className={cn(\n 'relative flex h-[38px] w-28 items-center justify-center text-muted-foreground after:absolute after:inset-x-0 after:mask-x-from-60%',\n isStart\n ? 'after:bottom-0 after:h-px after:bg-muted-foreground'\n : 'after:top-0 after:h-1 after:border-y after:border-muted-foreground',\n )}\n >\n <Txt variant=\"meta\">{data.label}</Txt>\n </div>\n {isStart && <Handle type=\"source\" position={Position.Bottom} style={{ visibility: 'hidden' }} />}\n </>\n );\n};\n","export function workflowCameraDuration() {\n return window.matchMedia?.('(prefers-reduced-motion: reduce)').matches ? 0 : 300;\n}\n","import { useViewport } from '@xyflow/react';\nimport type { Node } from '@xyflow/react';\nimport { GitFork } from 'lucide-react';\nimport { Badge } from '@/ds/components/Badge';\n\nexport interface WorkflowGraphGroup {\n id: string;\n label: string;\n description: string;\n nodeIds: string[];\n}\n\nexport function WorkflowGraphGroups({ nodes, groups }: { nodes: Node[]; groups: WorkflowGraphGroup[] }) {\n const { x, y, zoom } = useViewport();\n return (\n <div\n className=\"pointer-events-none absolute inset-0 z-0 origin-top-left\"\n style={{ transform: `translate(${x}px, ${y}px) scale(${zoom})` }}\n >\n {groups.map(group => {\n const members = nodes.flatMap(node => {\n if (!group.nodeIds.includes(node.id) || !node.measured?.width || !node.measured.height) return [];\n return [{ x: node.position.x, y: node.position.y, width: node.measured.width, height: node.measured.height }];\n });\n if (!members.length || members.length !== group.nodeIds.length) return null;\n const left = Math.min(...members.map(node => node.x)) - 20;\n const top = Math.min(...members.map(node => node.y)) - 54;\n const right = Math.max(...members.map(node => node.x + node.width)) + 20;\n const bottom = Math.max(...members.map(node => node.y + node.height)) + 20;\n return (\n <div\n key={group.id}\n className=\"absolute rounded-xl border border-dashed border-muted-foreground/25 bg-muted-foreground/3\"\n style={{ transform: `translate(${left}px, ${top}px)`, width: right - left, height: bottom - top }}\n >\n <div className=\"flex items-center gap-2 px-5 py-4 text-meta text-muted-foreground\">\n <Badge size=\"xs\" variant=\"blue\" emphasis=\"subtle\" icon={<GitFork aria-hidden />}>\n {group.label}\n </Badge>\n <span>{group.description}</span>\n </div>\n </div>\n );\n })}\n </div>\n );\n}\n","import type { PanelProps } from '@xyflow/react';\nimport { Panel, useViewport, useReactFlow, useStore } from '@xyflow/react';\nimport { Maximize, Minus, Plus } from 'lucide-react';\nimport { forwardRef } from 'react';\nimport { workflowCameraDuration } from './workflow-camera-duration';\nimport { Button } from '@/ds/components/Button';\nimport { Slider } from '@/ds/components/Slider';\nimport { cn } from '@/utils/cn';\n\nexport const ZoomSlider = forwardRef<\n HTMLDivElement,\n Omit<PanelProps, 'children'> & { compact?: boolean; onFitView?: () => void }\n>(({ className, compact = false, onFitView, ...props }, ref) => {\n const { zoom } = useViewport();\n const { zoomTo, zoomIn, zoomOut, fitView } = useReactFlow();\n const minZoom = useStore(state => state.minZoom);\n const maxZoom = useStore(state => state.maxZoom);\n\n return (\n <Panel\n ref={ref}\n className={cn(\n 'flex items-center gap-1 rounded-full border border-border bg-background p-1 text-foreground',\n className,\n )}\n {...props}\n >\n <Button\n size=\"icon-sm\"\n tooltip=\"Zoom out\"\n disabled={zoom <= minZoom}\n onClick={() => zoomOut({ duration: workflowCameraDuration() })}\n >\n <Minus />\n </Button>\n {!compact && (\n <Slider\n className=\"w-35\"\n aria-label=\"Canvas zoom\"\n value={[zoom]}\n min={minZoom}\n max={maxZoom}\n step={0.01}\n largeStep={0.25}\n format={{ style: 'percent' }}\n onValueChange={values => {\n const [nextZoom] = values;\n if (nextZoom !== undefined) void zoomTo(nextZoom);\n }}\n />\n )}\n <Button\n size=\"icon-sm\"\n tooltip=\"Zoom in\"\n disabled={zoom >= maxZoom}\n onClick={() => zoomIn({ duration: workflowCameraDuration() })}\n >\n <Plus />\n </Button>\n <Button\n size=\"sm\"\n className=\"min-w-16 tabular-nums\"\n tooltip=\"Reset to actual size (100%)\"\n onClick={() => zoomTo(1, { duration: workflowCameraDuration() })}\n >\n {(100 * zoom).toFixed(0)}%\n </Button>\n <Button\n size=\"icon-sm\"\n tooltip=\"Fit view\"\n onClick={onFitView ?? (() => fitView({ duration: workflowCameraDuration(), maxZoom: 1 }))}\n >\n <Maximize />\n </Button>\n </Panel>\n );\n});\n\nZoomSlider.displayName = 'ZoomSlider';\n","import { Background, BackgroundVariant, ReactFlow, useNodesInitialized, useReactFlow, useStore } from '@xyflow/react';\nimport type { Edge, Node, ReactFlowProps } from '@xyflow/react';\nimport { useContext, useEffect, useId, useRef } from 'react';\nimport { WorkflowCanvasInsetContext, workflowFitOptions } from '../workflow-canvas-inset';\nimport { workflowCameraDuration } from './workflow-camera-duration';\nimport { WorkflowGraphGroups } from './workflow-graph-groups';\nimport type { WorkflowGraphGroup } from './workflow-graph-groups';\nimport { ZoomSlider } from './zoom-slider';\nimport { cn } from '@/utils/cn';\nimport '@xyflow/react/dist/style.css';\n\nexport type { WorkflowGraphGroup } from './workflow-graph-groups';\n\nexport interface WorkflowGraphCanvasProps<NodeType extends Node = Node, EdgeType extends Edge = Edge> extends Pick<\n ReactFlowProps<NodeType, EdgeType>,\n 'nodes' | 'edges' | 'nodeTypes' | 'edgeTypes' | 'onNodesChange' | 'onNodeClick'\n> {\n focusNodeId?: string;\n variant?: 'default' | 'nested' | 'inline';\n groups?: WorkflowGraphGroup[];\n}\n\nexport function WorkflowGraphCanvas<NodeType extends Node, EdgeType extends Edge>({\n nodes,\n edges,\n nodeTypes,\n edgeTypes,\n onNodesChange,\n onNodeClick,\n focusNodeId,\n groups,\n variant = 'default',\n}: WorkflowGraphCanvasProps<NodeType, EdgeType>) {\n const graphRef = useRef<HTMLDivElement>(null);\n const backgroundId = useId();\n const panelInset = useContext(WorkflowCanvasInsetContext);\n const leftInset = variant === 'default' ? panelInset : 0;\n const isInline = variant === 'inline';\n const { getNodes, setCenter, fitView } = useReactFlow<NodeType, EdgeType>();\n const nodesInitialized = useNodesInitialized();\n const canvasWidth = useStore(state => state.width);\n const canvasHeight = useStore(state => state.height);\n const hasCompactZoom = canvasWidth - leftInset < 560;\n const inlineNodeLayout = isInline\n ? JSON.stringify(\n nodes?.map(node => [\n node.id,\n node.position.x,\n node.position.y,\n node.measured?.width ?? node.width,\n node.measured?.height ?? node.height,\n ]),\n )\n : undefined;\n\n useEffect(() => {\n if (!canvasWidth || !canvasHeight || !nodesInitialized) return;\n if (variant === 'default') return;\n void fitView({ ...workflowFitOptions(leftInset, isInline), duration: 0 });\n }, [canvasWidth, canvasHeight, nodesInitialized, inlineNodeLayout, fitView, leftInset, isInline, variant]);\n\n useEffect(() => {\n if (!canvasWidth || !canvasHeight || !nodesInitialized || !focusNodeId) return;\n const focusNode = getNodes().find(node => node.id === focusNodeId);\n if (!focusNode) return;\n if (!graphRef.current?.contains(document.activeElement)) {\n graphRef.current?.focus({ preventScroll: true });\n }\n const width = focusNode.measured?.width ?? focusNode.width ?? 274;\n const height = focusNode.measured?.height ?? focusNode.height ?? 100;\n const duration = workflowCameraDuration();\n const exceedsVisibleWidth = canvasWidth > 0 && width > canvasWidth - leftInset - 80;\n const exceedsVisibleHeight = canvasHeight > 0 && height > canvasHeight - 104;\n if (exceedsVisibleWidth || exceedsVisibleHeight) {\n void fitView({ ...workflowFitOptions(leftInset), nodes: [{ id: focusNode.id }], duration });\n return;\n }\n void setCenter(focusNode.position.x + width / 2 - leftInset / 2, focusNode.position.y + height / 2, {\n duration,\n zoom: 1,\n });\n }, [canvasWidth, canvasHeight, nodesInitialized, focusNodeId, getNodes, setCenter, fitView, leftInset]);\n\n return (\n <div\n ref={graphRef}\n tabIndex={-1}\n data-testid=\"workflow-graph-viewport\"\n className={cn('size-full outline-none', variant === 'nested' ? 'bg-sidebar' : 'bg-background')}\n >\n <ReactFlow\n fitView={variant === 'default'}\n fitViewOptions={workflowFitOptions(leftInset)}\n nodes={nodes}\n edges={edges}\n nodeTypes={nodeTypes}\n edgeTypes={edgeTypes}\n onNodesChange={onNodesChange}\n onNodeClick={onNodeClick}\n nodesDraggable={false}\n nodesConnectable={false}\n elementsSelectable={false}\n deleteKeyCode={null}\n panOnScroll={!isInline}\n panOnDrag={!isInline}\n zoomOnPinch={!isInline}\n zoomOnDoubleClick={!isInline}\n preventScrolling={!isInline}\n proOptions={isInline ? { hideAttribution: true } : undefined}\n zoomOnScroll={false}\n minZoom={0.1}\n maxZoom={4}\n >\n {!isInline && (\n <ZoomSlider\n position=\"top-right\"\n className=\"m-2!\"\n compact={hasCompactZoom}\n onFitView={() => fitView({ ...workflowFitOptions(leftInset), duration: workflowCameraDuration() })}\n />\n )}\n {groups && <WorkflowGraphGroups nodes={nodes ?? []} groups={groups} />}\n {!isInline && <Background id={backgroundId} variant={BackgroundVariant.Dots} gap={12} size={0.5} />}\n </ReactFlow>\n </div>\n );\n}\n","import { Handle, Position } from '@xyflow/react';\nimport type { ReactNode } from 'react';\n\nexport interface WorkflowNodeFrameProps {\n withoutTopHandle?: boolean;\n withoutBottomHandle?: boolean;\n children: ReactNode;\n}\n\nexport function WorkflowNodeFrame({ withoutTopHandle, withoutBottomHandle, children }: WorkflowNodeFrameProps) {\n return (\n <>\n {!withoutTopHandle && <Handle type=\"target\" position={Position.Top} style={{ visibility: 'hidden' }} />}\n <div className=\"nodrag pointer-events-auto\">{children}</div>\n {!withoutBottomHandle && <Handle type=\"source\" position={Position.Bottom} style={{ visibility: 'hidden' }} />}\n </>\n );\n}\n","import type { WorkflowConditionCardViewProps } from '../../types';\nimport { WorkflowConditionCardView } from './workflow-condition-card-view';\n\nexport type WorkflowConditionCardProps = Omit<WorkflowConditionCardViewProps, 'type'>;\n\nexport function WorkflowConditionCard({ conditions, ...props }: WorkflowConditionCardProps) {\n return <WorkflowConditionCardView {...props} type={conditions[0]?.type} conditions={conditions} />;\n}\n"],"names":["Repeat2","Workflow","GitFork","ArrowRightLeft","CalendarClock","Timer","Bot","Wrench","GitBranch","Braces","jsx","Badge","List","PlayCircle","Clock","Layers","Network","Repeat1","Repeat","RefreshCw","CornerDownRight","useState","useEffect","formatDuration","Txt","Code","formatTypeScript","jsxs","raisedSurfaceStyle","Fragment","CopyButton","cn","formatDate","formatShortDate","Collapsible","Shimmer","CollapsibleTrigger","surfaceStateLayerStyle","DisclosureChevron","CollapsibleContent","ActivityWick","Handle","Position","useViewport","forwardRef","useReactFlow","useStore","Panel","Button","Minus","Slider","Plus","Maximize","useRef","useId","useContext","WorkflowCanvasInsetContext","useNodesInitialized","workflowFitOptions","ReactFlow","Background","BackgroundVariant"],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@ import { W as WorkflowCanvasInsetContext, w as workflowFitOptions } from './work
|
|
|
16
16
|
import { B as Button } from './Button-60jVnaHt.js';
|
|
17
17
|
import { S as Slider } from './slider-Dj4sNvyj.js';
|
|
18
18
|
import '@xyflow/react/dist/style.css';
|
|
19
|
-
import { C as Code } from './code-
|
|
19
|
+
import { C as Code } from './code-DLuATvYu.js';
|
|
20
20
|
import { formatTypeScript } from './utils/formatting.es.js';
|
|
21
21
|
import { C as CopyButton } from './copy-button-Af_Qt7G1.js';
|
|
22
22
|
|
|
@@ -892,4 +892,4 @@ function WorkflowConditionCard({ conditions, ...props }) {
|
|
|
892
892
|
}
|
|
893
893
|
|
|
894
894
|
export { BADGE_COLORS as B, WorkflowBoundaryNode as W, BADGE_ICONS as a, WorkflowClock as b, WorkflowConditionCard as c, WorkflowConditionCardView as d, WorkflowGraphCanvas as e, WorkflowNodeFrame as f, WorkflowStepCardView as g, WorkflowTypeBadge as h, getConditionIconAndColor as i, getConditionIndicator as j, getNodeBadgeInfo as k, getNodeIndicators as l };
|
|
895
|
-
//# sourceMappingURL=workflow-condition-card-
|
|
895
|
+
//# sourceMappingURL=workflow-condition-card-DNsQmIae.js.map
|