@mastra/playground-ui 62.0.0-alpha.2 → 62.0.0-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (492) hide show
  1. package/dist/{activity-maXCNWZp.js → activity-BsrB5ADa.js} +7 -5
  2. package/dist/activity-BsrB5ADa.js.map +1 -0
  3. package/dist/{activity-pXCpwxxi.cjs → activity-CaFdLiPz.cjs} +6 -4
  4. package/dist/activity-CaFdLiPz.cjs.map +1 -0
  5. package/dist/app-shell.css +7 -0
  6. package/dist/{ask-user-card-C14RGsoO.cjs → ask-user-card-BHIYyRdy.cjs} +2 -2
  7. package/dist/{ask-user-card-C14RGsoO.cjs.map → ask-user-card-BHIYyRdy.cjs.map} +1 -1
  8. package/dist/{ask-user-card-C01JQ7bo.js → ask-user-card-BaaCfWFs.js} +2 -2
  9. package/dist/{ask-user-card-C01JQ7bo.js.map → ask-user-card-BaaCfWFs.js.map} +1 -1
  10. package/dist/{collapsible-BzlQAuym.cjs → collapsible-C6BZhVRG.cjs} +2 -10
  11. package/dist/collapsible-C6BZhVRG.cjs.map +1 -0
  12. package/dist/{collapsible-8h5KBZPX.js → collapsible-DglEffBF.js} +2 -10
  13. package/dist/collapsible-DglEffBF.js.map +1 -0
  14. package/dist/{combobox-8_JEWMYs.js → combobox-CMu7NDj6.js} +10 -2
  15. package/dist/combobox-CMu7NDj6.js.map +1 -0
  16. package/dist/{combobox-Csiduxme.cjs → combobox-DW7-4bGp.cjs} +10 -2
  17. package/dist/combobox-DW7-4bGp.cjs.map +1 -0
  18. package/dist/{command-C-i5cx8D.js → command-BW5Jyad6.js} +4 -2
  19. package/dist/command-BW5Jyad6.js.map +1 -0
  20. package/dist/{command-Cq-K24jI.cjs → command-Bv53_kMY.cjs} +4 -2
  21. package/dist/command-Bv53_kMY.cjs.map +1 -0
  22. package/dist/components/ClampedText.cjs.js +2 -2
  23. package/dist/components/ClampedText.cjs.js.map +1 -1
  24. package/dist/components/ClampedText.es.js +2 -2
  25. package/dist/components/ClampedText.es.js.map +1 -1
  26. package/dist/components/Collapsible.cjs.js +1 -1
  27. package/dist/components/Collapsible.es.js +1 -1
  28. package/dist/components/Combobox.cjs.js +1 -1
  29. package/dist/components/Combobox.es.js +1 -1
  30. package/dist/components/Command.cjs.js +1 -1
  31. package/dist/components/Command.es.js +1 -1
  32. package/dist/components/CommandPalette.cjs.js +1 -1
  33. package/dist/components/CommandPalette.es.js +1 -1
  34. package/dist/components/Comment.cjs.js +1 -1
  35. package/dist/components/Comment.es.js +1 -1
  36. package/dist/components/Composer.cjs.js +1 -1
  37. package/dist/components/Composer.es.js +1 -1
  38. package/dist/components/DataCodeSection.cjs.js +1 -1
  39. package/dist/components/DataCodeSection.es.js +1 -1
  40. package/dist/components/DataList.cjs.js +3 -3
  41. package/dist/components/DataList.es.js +4 -4
  42. package/dist/components/DataPanel.cjs.js +1 -1
  43. package/dist/components/DataPanel.es.js +1 -1
  44. package/dist/components/DateTimePicker.cjs.js +1 -1
  45. package/dist/components/DateTimePicker.es.js +1 -1
  46. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  47. package/dist/components/DateTimeRangePicker.es.js +1 -1
  48. package/dist/components/DisclosureChevron.cjs.js +10 -0
  49. package/dist/components/DisclosureChevron.cjs.js.map +1 -0
  50. package/dist/components/DisclosureChevron.d.ts +2 -0
  51. package/dist/components/DisclosureChevron.es.js +2 -0
  52. package/dist/components/DisclosureChevron.es.js.map +1 -0
  53. package/dist/components/EnvironmentVariablesEditor.cjs.js +2 -2
  54. package/dist/components/EnvironmentVariablesEditor.es.js +2 -2
  55. package/dist/components/FilterBar.cjs.js +3 -1
  56. package/dist/components/FilterBar.cjs.js.map +1 -1
  57. package/dist/components/FilterBar.es.js +4 -2
  58. package/dist/components/FilterBar.es.js.map +1 -1
  59. package/dist/components/FormFieldBlocks.cjs.js +1 -1
  60. package/dist/components/FormFieldBlocks.es.js +1 -1
  61. package/dist/components/Input.cjs.js +1 -1
  62. package/dist/components/Input.es.js +1 -1
  63. package/dist/components/InputGroup.cjs.js +1 -1
  64. package/dist/components/InputGroup.es.js +1 -1
  65. package/dist/components/InputNumber.cjs.js +5 -3
  66. package/dist/components/InputNumber.cjs.js.map +1 -1
  67. package/dist/components/InputNumber.es.js +5 -3
  68. package/dist/components/InputNumber.es.js.map +1 -1
  69. package/dist/components/JSONSchemaForm.cjs.js +1 -1
  70. package/dist/components/JSONSchemaForm.es.js +1 -1
  71. package/dist/components/ListSearch.cjs.js +1 -1
  72. package/dist/components/ListSearch.es.js +1 -1
  73. package/dist/components/LogsDataList.cjs.js +3 -3
  74. package/dist/components/LogsDataList.es.js +3 -3
  75. package/dist/components/PageLayout.cjs.js +1 -1
  76. package/dist/components/PageLayout.cjs.js.map +1 -1
  77. package/dist/components/PageLayout.es.js +1 -1
  78. package/dist/components/PageLayout.es.js.map +1 -1
  79. package/dist/components/PropertyFilter.cjs.js +2 -2
  80. package/dist/components/PropertyFilter.es.js +3 -3
  81. package/dist/components/RuleBuilder.cjs.js +1 -1
  82. package/dist/components/RuleBuilder.es.js +1 -1
  83. package/dist/components/SavedViews.cjs.js +3 -1
  84. package/dist/components/SavedViews.cjs.js.map +1 -1
  85. package/dist/components/SavedViews.es.js +3 -1
  86. package/dist/components/SavedViews.es.js.map +1 -1
  87. package/dist/components/SearchInput.cjs.js +1 -1
  88. package/dist/components/SearchInput.es.js +1 -1
  89. package/dist/components/Sidebar.cjs.js +5 -4
  90. package/dist/components/Sidebar.cjs.js.map +1 -1
  91. package/dist/components/Sidebar.es.js +5 -4
  92. package/dist/components/Sidebar.es.js.map +1 -1
  93. package/dist/components/Tree.cjs.js +1 -1
  94. package/dist/components/Tree.es.js +1 -1
  95. package/dist/components/Workflow.cjs.js +1 -1
  96. package/dist/components/Workflow.es.js +1 -1
  97. package/dist/components/ai/activity.cjs.js +4 -4
  98. package/dist/components/ai/activity.es.js +4 -4
  99. package/dist/components/ai/ask-user.cjs.js +1 -1
  100. package/dist/components/ai/ask-user.es.js +1 -1
  101. package/dist/components/ai/tool-approval.cjs.js +1 -1
  102. package/dist/components/ai/tool-approval.es.js +1 -1
  103. package/dist/components/ai/tool-call.cjs.js +1 -1
  104. package/dist/components/ai/tool-call.es.js +1 -1
  105. package/dist/{composer-DhxSetWI.cjs → composer-Cg5bXN1r.cjs} +5 -3
  106. package/dist/composer-Cg5bXN1r.cjs.map +1 -0
  107. package/dist/{composer-CIfMr8q5.js → composer-CxmOOUX8.js} +5 -3
  108. package/dist/composer-CxmOOUX8.js.map +1 -0
  109. package/dist/{data-code-section-CvLs4lM8.js → data-code-section-B1dGZ0ds.js} +2 -2
  110. package/dist/{data-code-section-CvLs4lM8.js.map → data-code-section-B1dGZ0ds.js.map} +1 -1
  111. package/dist/{data-code-section-D0NR1REP.cjs → data-code-section-BTZPG2zM.cjs} +2 -2
  112. package/dist/{data-code-section-D0NR1REP.cjs.map → data-code-section-BTZPG2zM.cjs.map} +1 -1
  113. package/dist/{data-list-BfepBJLG.js → data-list-4UMxoFNU.js} +192 -11
  114. package/dist/data-list-4UMxoFNU.js.map +1 -0
  115. package/dist/{data-list-oQsJVUa6.cjs → data-list-CqVYt2aN.cjs} +191 -10
  116. package/dist/data-list-CqVYt2aN.cjs.map +1 -0
  117. package/dist/{data-list-skeleton-BE7yRNks.cjs → data-list-skeleton-BMGppDAy.cjs} +3 -3
  118. package/dist/data-list-skeleton-BMGppDAy.cjs.map +1 -0
  119. package/dist/{data-list-skeleton-DnVnqTGL.js → data-list-skeleton-DGNzfd4Y.js} +3 -3
  120. package/dist/data-list-skeleton-DGNzfd4Y.js.map +1 -0
  121. package/dist/{data-panel-BLk0mZe6.js → data-panel-VYp4slDb.js} +2 -2
  122. package/dist/{data-panel-BLk0mZe6.js.map → data-panel-VYp4slDb.js.map} +1 -1
  123. package/dist/{data-panel-BaqnMzRn.cjs → data-panel-r1LYHphg.cjs} +2 -2
  124. package/dist/{data-panel-BaqnMzRn.cjs.map → data-panel-r1LYHphg.cjs.map} +1 -1
  125. package/dist/date-time-range-picker-BBbF3LWF.cjs +210 -0
  126. package/dist/date-time-range-picker-BBbF3LWF.cjs.map +1 -0
  127. package/dist/date-time-range-picker-CUUg0sIl.js +208 -0
  128. package/dist/date-time-range-picker-CUUg0sIl.js.map +1 -0
  129. package/dist/disclosure-chevron-BWZ8Alz1.js +33 -0
  130. package/dist/disclosure-chevron-BWZ8Alz1.js.map +1 -0
  131. package/dist/disclosure-chevron-B_gmYFR5.cjs +35 -0
  132. package/dist/disclosure-chevron-B_gmYFR5.cjs.map +1 -0
  133. package/dist/domains/chat/attachments/composer-attachment-list.cjs.js +1 -1
  134. package/dist/domains/chat/attachments/composer-attachment-list.es.js +1 -1
  135. package/dist/domains/chat/components/badge-wrapper.cjs.js +1 -1
  136. package/dist/domains/chat/components/badge-wrapper.es.js +1 -1
  137. package/dist/domains/chat/context/chat-context.cjs.js.map +1 -1
  138. package/dist/domains/chat/context/chat-context.es.js.map +1 -1
  139. package/dist/domains/chat/messages/message-row.cjs.js +2 -2
  140. package/dist/domains/chat/messages/message-row.es.js +2 -2
  141. package/dist/domains/chat/messages/notification-signal-notice.cjs.js +1 -1
  142. package/dist/domains/chat/messages/notification-signal-notice.es.js +1 -1
  143. package/dist/domains/chat/messages/renderers/message-text.cjs.js +16 -8
  144. package/dist/domains/chat/messages/renderers/message-text.cjs.js.map +1 -1
  145. package/dist/domains/chat/messages/renderers/message-text.es.js +17 -9
  146. package/dist/domains/chat/messages/renderers/message-text.es.js.map +1 -1
  147. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
  148. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
  149. package/dist/domains/chat/messages/signal-badge.cjs.js +1 -1
  150. package/dist/domains/chat/messages/signal-badge.es.js +1 -1
  151. package/dist/domains/chat/messages/skill-message.cjs.js +2 -2
  152. package/dist/domains/chat/messages/skill-message.es.js +2 -2
  153. package/dist/domains/chat/messages/system-reminder-badge.cjs.js +1 -1
  154. package/dist/domains/chat/messages/system-reminder-badge.es.js +1 -1
  155. package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
  156. package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
  157. package/dist/domains/chat/tools/badges/agent-badge.cjs.js +1 -1
  158. package/dist/domains/chat/tools/badges/agent-badge.es.js +1 -1
  159. package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
  160. package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
  161. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +1 -1
  162. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +1 -1
  163. package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +1 -1
  164. package/dist/domains/chat/tools/badges/observation-marker-details.es.js +1 -1
  165. package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +1 -1
  166. package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
  167. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +1 -2
  168. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js.map +1 -1
  169. package/dist/domains/chat/tools/badges/workflow-badge.es.js +1 -2
  170. package/dist/domains/chat/tools/badges/workflow-badge.es.js.map +1 -1
  171. package/dist/domains/chat/tools/tool-card.cjs.js +1 -1
  172. package/dist/domains/chat/tools/tool-card.es.js +1 -1
  173. package/dist/domains/logs/components/log-data-panel.cjs.js +1 -1
  174. package/dist/domains/logs/components/log-data-panel.es.js +1 -1
  175. package/dist/domains/logs/components/logs-list-view.cjs.js +3 -3
  176. package/dist/domains/logs/components/logs-list-view.es.js +3 -3
  177. package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
  178. package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
  179. package/dist/domains/metrics/components/agent-runs-card.cjs.js +0 -1
  180. package/dist/domains/metrics/components/agent-runs-card.cjs.js.map +1 -1
  181. package/dist/domains/metrics/components/agent-runs-card.es.js +0 -1
  182. package/dist/domains/metrics/components/agent-runs-card.es.js.map +1 -1
  183. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  184. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  185. package/dist/domains/metrics/components/failure-rate-card.cjs.js +2 -1
  186. package/dist/domains/metrics/components/failure-rate-card.cjs.js.map +1 -1
  187. package/dist/domains/metrics/components/failure-rate-card.es.js +2 -1
  188. package/dist/domains/metrics/components/failure-rate-card.es.js.map +1 -1
  189. package/dist/domains/metrics/components/latency-card.cjs.js +0 -1
  190. package/dist/domains/metrics/components/latency-card.cjs.js.map +1 -1
  191. package/dist/domains/metrics/components/latency-card.es.js +0 -1
  192. package/dist/domains/metrics/components/latency-card.es.js.map +1 -1
  193. package/dist/domains/metrics/components/scores-card.cjs.js +0 -1
  194. package/dist/domains/metrics/components/scores-card.cjs.js.map +1 -1
  195. package/dist/domains/metrics/components/scores-card.es.js +0 -1
  196. package/dist/domains/metrics/components/scores-card.es.js.map +1 -1
  197. package/dist/domains/metrics/components/token-usage-card.cjs.js +0 -1
  198. package/dist/domains/metrics/components/token-usage-card.cjs.js.map +1 -1
  199. package/dist/domains/metrics/components/token-usage-card.es.js +0 -1
  200. package/dist/domains/metrics/components/token-usage-card.es.js.map +1 -1
  201. package/dist/domains/scores/components/score-data-panel.cjs.js +13 -11
  202. package/dist/domains/scores/components/score-data-panel.cjs.js.map +1 -1
  203. package/dist/domains/scores/components/score-data-panel.es.js +13 -11
  204. package/dist/domains/scores/components/score-data-panel.es.js.map +1 -1
  205. package/dist/domains/scores/components/span-scoring.cjs.js +1 -1
  206. package/dist/domains/scores/components/span-scoring.es.js +1 -1
  207. package/dist/domains/scores/components/trace-scores-tab.cjs.js +5 -21
  208. package/dist/domains/scores/components/trace-scores-tab.cjs.js.map +1 -1
  209. package/dist/domains/scores/components/trace-scores-tab.es.js +5 -21
  210. package/dist/domains/scores/components/trace-scores-tab.es.js.map +1 -1
  211. package/dist/domains/traces/components/feedback-thread.cjs.js +1 -1
  212. package/dist/domains/traces/components/feedback-thread.es.js +1 -1
  213. package/dist/domains/traces/components/span-data-panel-view.cjs.js +1 -1
  214. package/dist/domains/traces/components/span-data-panel-view.es.js +1 -1
  215. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +1 -1
  216. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +1 -1
  217. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
  218. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
  219. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +2 -2
  220. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +2 -2
  221. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +2 -2
  222. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +2 -2
  223. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +3 -3
  224. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +3 -3
  225. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
  226. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
  227. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +2 -2
  228. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +2 -2
  229. package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js +1 -1
  230. package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +1 -1
  231. package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
  232. package/dist/domains/traces/components/span-summary-description.es.js +1 -1
  233. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
  234. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
  235. package/dist/domains/traces/components/thread-view-by-trace.cjs.js +0 -1
  236. package/dist/domains/traces/components/thread-view-by-trace.cjs.js.map +1 -1
  237. package/dist/domains/traces/components/thread-view-by-trace.es.js +0 -1
  238. package/dist/domains/traces/components/thread-view-by-trace.es.js.map +1 -1
  239. package/dist/domains/traces/components/trace-columns-menu.cjs.js +1 -1
  240. package/dist/domains/traces/components/trace-columns-menu.es.js +1 -1
  241. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +56 -21
  242. package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
  243. package/dist/domains/traces/components/trace-data-panel-view.es.js +57 -22
  244. package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
  245. package/dist/domains/traces/components/trace-data-panel.cjs.js +4 -5
  246. package/dist/domains/traces/components/trace-data-panel.cjs.js.map +1 -1
  247. package/dist/domains/traces/components/trace-data-panel.es.js +4 -5
  248. package/dist/domains/traces/components/trace-data-panel.es.js.map +1 -1
  249. package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
  250. package/dist/domains/traces/components/trace-id-button.es.js +1 -1
  251. package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
  252. package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
  253. package/dist/domains/traces/components/trace-thread-panel.cjs.js +1 -1
  254. package/dist/domains/traces/components/trace-thread-panel.es.js +1 -1
  255. package/dist/domains/traces/components/trace-time-range-chip.cjs.js +2 -2
  256. package/dist/domains/traces/components/trace-time-range-chip.es.js +2 -2
  257. package/dist/domains/traces/components/traces-list-view.cjs.js +126 -112
  258. package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
  259. package/dist/domains/traces/components/traces-list-view.es.js +127 -113
  260. package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
  261. package/dist/domains/traces/components/traces-page-skeleton.cjs.js +2 -2
  262. package/dist/domains/traces/components/traces-page-skeleton.es.js +2 -2
  263. package/dist/domains/traces/trace-list-columns.cjs.js +15 -0
  264. package/dist/domains/traces/trace-list-columns.cjs.js.map +1 -1
  265. package/dist/domains/traces/trace-list-columns.es.js +15 -1
  266. package/dist/domains/traces/trace-list-columns.es.js.map +1 -1
  267. package/dist/domains/workflows/components/workflow-combobox.cjs.js +1 -1
  268. package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
  269. package/dist/domains/workflows/components/workflow-information.cjs.js +3 -2
  270. package/dist/domains/workflows/components/workflow-information.cjs.js.map +1 -1
  271. package/dist/domains/workflows/components/workflow-information.es.js +4 -3
  272. package/dist/domains/workflows/components/workflow-information.es.js.map +1 -1
  273. package/dist/domains/workflows/components/workflow-step-detail.cjs.js +2 -2
  274. package/dist/domains/workflows/components/workflow-step-detail.es.js +2 -2
  275. package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +4 -3
  276. package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js.map +1 -1
  277. package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +5 -4
  278. package/dist/domains/workflows/components/workflows-list/workflows-list.es.js.map +1 -1
  279. package/dist/domains/workflows/runs/workflow-run-list.cjs.js +3 -3
  280. package/dist/domains/workflows/runs/workflow-run-list.cjs.js.map +1 -1
  281. package/dist/domains/workflows/runs/workflow-run-list.es.js +3 -3
  282. package/dist/domains/workflows/runs/workflow-run-list.es.js.map +1 -1
  283. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.cjs.js +2 -2
  284. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +2 -2
  285. package/dist/domains/workflows/workflow/workflow-body-graph.cjs.js +1 -1
  286. package/dist/domains/workflows/workflow/workflow-body-graph.es.js +1 -1
  287. package/dist/domains/workflows/workflow/workflow-card.cjs.js +13 -11
  288. package/dist/domains/workflows/workflow/workflow-card.cjs.js.map +1 -1
  289. package/dist/domains/workflows/workflow/workflow-card.es.js +13 -11
  290. package/dist/domains/workflows/workflow/workflow-card.es.js.map +1 -1
  291. package/dist/domains/workflows/workflow/workflow-graph-inner.cjs.js +2 -2
  292. package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +2 -2
  293. package/dist/domains/workflows/workflow/workflow-graph-node.cjs.js +2 -2
  294. package/dist/domains/workflows/workflow/workflow-graph-node.es.js +2 -2
  295. package/dist/domains/workflows/workflow/workflow-input-data.cjs.js +3 -2
  296. package/dist/domains/workflows/workflow/workflow-input-data.cjs.js.map +1 -1
  297. package/dist/domains/workflows/workflow/workflow-input-data.es.js +4 -3
  298. package/dist/domains/workflows/workflow/workflow-input-data.es.js.map +1 -1
  299. package/dist/domains/workflows/workflow/workflow-nested-graph.cjs.js +2 -2
  300. package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +2 -2
  301. package/dist/domains/workflows/workflow/workflow-run-data.cjs.js +3 -2
  302. package/dist/domains/workflows/workflow/workflow-run-data.cjs.js.map +1 -1
  303. package/dist/domains/workflows/workflow/workflow-run-data.es.js +4 -3
  304. package/dist/domains/workflows/workflow/workflow-run-data.es.js.map +1 -1
  305. package/dist/domains/workflows/workflow/workflow-suspended-steps.cjs.js +3 -9
  306. package/dist/domains/workflows/workflow/workflow-suspended-steps.cjs.js.map +1 -1
  307. package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +4 -10
  308. package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js.map +1 -1
  309. package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +3 -2
  310. package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js.map +1 -1
  311. package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +4 -3
  312. package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js.map +1 -1
  313. package/dist/domains/workflows/workflow/workflow-timeline.cjs.js +3 -8
  314. package/dist/domains/workflows/workflow/workflow-timeline.cjs.js.map +1 -1
  315. package/dist/domains/workflows/workflow/workflow-timeline.es.js +4 -9
  316. package/dist/domains/workflows/workflow/workflow-timeline.es.js.map +1 -1
  317. package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +1 -1
  318. package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +1 -1
  319. package/dist/domains/workspace/components/workspace-create-directory.cjs.js +1 -1
  320. package/dist/domains/workspace/components/workspace-create-directory.es.js +1 -1
  321. package/dist/domains/workspace/components/workspace-search.cjs.js +1 -1
  322. package/dist/domains/workspace/components/workspace-search.es.js +1 -1
  323. package/dist/domains/workspace/components/workspace-tree.cjs.js +1 -1
  324. package/dist/domains/workspace/components/workspace-tree.es.js +1 -1
  325. package/dist/ee/signals/components/entity-index-list.cjs.js +1 -1
  326. package/dist/ee/signals/components/entity-index-list.es.js +1 -1
  327. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +3 -3
  328. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +3 -3
  329. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +1 -1
  330. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +1 -1
  331. package/dist/ee/signals/signal-lifelines.cjs.js +2 -8
  332. package/dist/ee/signals/signal-lifelines.cjs.js.map +1 -1
  333. package/dist/ee/signals/signal-lifelines.es.js +2 -8
  334. package/dist/ee/signals/signal-lifelines.es.js.map +1 -1
  335. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +2 -2
  336. package/dist/ee/topics/components/topic-trace-summary-list.es.js +2 -2
  337. package/dist/{filter-bar-chip-BBPHw-rX.cjs → filter-bar-chip-BUlEVUgT.cjs} +3 -1
  338. package/dist/filter-bar-chip-BUlEVUgT.cjs.map +1 -0
  339. package/dist/{filter-bar-chip-SX3vDA7h.js → filter-bar-chip-DBjcrQFh.js} +3 -1
  340. package/dist/filter-bar-chip-DBjcrQFh.js.map +1 -0
  341. package/dist/hooks/use-local-storage-state.es.js +1 -1
  342. package/dist/{input-vi0ICZHe.js → input-DQFUjtnh.js} +4 -2
  343. package/dist/input-DQFUjtnh.js.map +1 -0
  344. package/dist/{input-group-C7WC6xGL.js → input-group-C_2SrLdX.js} +4 -2
  345. package/dist/input-group-C_2SrLdX.js.map +1 -0
  346. package/dist/{input-group-CGbhXsmd.cjs → input-group-Cxfp0mxQ.cjs} +4 -2
  347. package/dist/input-group-Cxfp0mxQ.cjs.map +1 -0
  348. package/dist/{input-HPE241gI.cjs → input-zdqTky_C.cjs} +4 -2
  349. package/dist/input-zdqTky_C.cjs.map +1 -0
  350. package/dist/layout/tabbed-container.cjs.js +3 -3
  351. package/dist/layout/tabbed-container.es.js +3 -3
  352. package/dist/lib/form/components/array-element-wrapper.cjs.js +3 -2
  353. package/dist/lib/form/components/array-element-wrapper.cjs.js.map +1 -1
  354. package/dist/lib/form/components/array-element-wrapper.es.js +4 -3
  355. package/dist/lib/form/components/array-element-wrapper.es.js.map +1 -1
  356. package/dist/lib/form/components/number-field.cjs.js +1 -1
  357. package/dist/lib/form/components/number-field.es.js +1 -1
  358. package/dist/lib/form/components/object-wrapper.cjs.js +3 -2
  359. package/dist/lib/form/components/object-wrapper.cjs.js.map +1 -1
  360. package/dist/lib/form/components/object-wrapper.es.js +4 -3
  361. package/dist/lib/form/components/object-wrapper.es.js.map +1 -1
  362. package/dist/lib/form/components/record-field.cjs.js +1 -1
  363. package/dist/lib/form/components/record-field.es.js +1 -1
  364. package/dist/{list-search-DTVH9Fbj.cjs → list-search-CA5w3QHa.cjs} +2 -2
  365. package/dist/{list-search-DTVH9Fbj.cjs.map → list-search-CA5w3QHa.cjs.map} +1 -1
  366. package/dist/{list-search-CTZVTRUd.js → list-search-Ce89eOzO.js} +2 -2
  367. package/dist/{list-search-CTZVTRUd.js.map → list-search-Ce89eOzO.js.map} +1 -1
  368. package/dist/{logs-data-list-BgFT_0qi.cjs → logs-data-list-C5UGLFo1.cjs} +2 -2
  369. package/dist/{logs-data-list-BgFT_0qi.cjs.map → logs-data-list-C5UGLFo1.cjs.map} +1 -1
  370. package/dist/{logs-data-list-C-F2jh04.js → logs-data-list-CgrUlafS.js} +2 -2
  371. package/dist/{logs-data-list-C-F2jh04.js.map → logs-data-list-CgrUlafS.js.map} +1 -1
  372. package/dist/new/layout/app-shell.cjs.js +1 -1
  373. package/dist/new/layout/app-shell.cjs.js.map +1 -1
  374. package/dist/new/layout/app-shell.es.js +1 -1
  375. package/dist/new/layout/app-shell.es.js.map +1 -1
  376. package/dist/{notification-activity-Bz0h5LOR.cjs → notification-activity-C2AcNOyq.cjs} +2 -2
  377. package/dist/{notification-activity-Bz0h5LOR.cjs.map → notification-activity-C2AcNOyq.cjs.map} +1 -1
  378. package/dist/{notification-activity-DTXzghFr.js → notification-activity-DquzIOZw.js} +2 -2
  379. package/dist/{notification-activity-DTXzghFr.js.map → notification-activity-DquzIOZw.js.map} +1 -1
  380. package/dist/primitives/chart-frame.cjs.js +1 -1
  381. package/dist/primitives/chart-frame.cjs.js.map +1 -1
  382. package/dist/primitives/chart-frame.es.js +1 -1
  383. package/dist/primitives/chart-frame.es.js.map +1 -1
  384. package/dist/primitives/password-manager-autofill.cjs.js +34 -0
  385. package/dist/primitives/password-manager-autofill.cjs.js.map +1 -0
  386. package/dist/primitives/password-manager-autofill.d.ts +2 -0
  387. package/dist/primitives/password-manager-autofill.es.js +28 -0
  388. package/dist/primitives/password-manager-autofill.es.js.map +1 -0
  389. package/dist/primitives/textarea-control.cjs.js +12 -2
  390. package/dist/primitives/textarea-control.cjs.js.map +1 -1
  391. package/dist/primitives/textarea-control.es.js +12 -2
  392. package/dist/primitives/textarea-control.es.js.map +1 -1
  393. package/dist/{property-filter-applied-7dHzckeW.cjs → property-filter-applied-ACNa3kYG.cjs} +4 -2
  394. package/dist/property-filter-applied-ACNa3kYG.cjs.map +1 -0
  395. package/dist/{property-filter-applied-CdbOixsW.js → property-filter-applied-e0Vg1895.js} +4 -2
  396. package/dist/property-filter-applied-e0Vg1895.js.map +1 -0
  397. package/dist/{reasoning-activity-D2sXBAxE.cjs → reasoning-activity-Cl7kaqgZ.cjs} +2 -2
  398. package/dist/{reasoning-activity-D2sXBAxE.cjs.map → reasoning-activity-Cl7kaqgZ.cjs.map} +1 -1
  399. package/dist/{reasoning-activity-Cpp4iYTw.js → reasoning-activity-D8AF1htp.js} +2 -2
  400. package/dist/{reasoning-activity-Cpp4iYTw.js.map → reasoning-activity-D8AF1htp.js.map} +1 -1
  401. package/dist/{search-input-CUGl4cVg.cjs → search-input-BHF2RziH.cjs} +2 -2
  402. package/dist/{search-input-CUGl4cVg.cjs.map → search-input-BHF2RziH.cjs.map} +1 -1
  403. package/dist/{search-input-iS3IW0Qo.js → search-input-BgVjoPtF.js} +2 -2
  404. package/dist/{search-input-iS3IW0Qo.js.map → search-input-BgVjoPtF.js.map} +1 -1
  405. package/dist/{signal-activity-CtSExTzh.js → signal-activity-BiWlOFhu.js} +2 -2
  406. package/dist/{signal-activity-CtSExTzh.js.map → signal-activity-BiWlOFhu.js.map} +1 -1
  407. package/dist/{signal-activity-Rh1YO0x6.cjs → signal-activity-aXcUgxDg.cjs} +2 -2
  408. package/dist/{signal-activity-Rh1YO0x6.cjs.map → signal-activity-aXcUgxDg.cjs.map} +1 -1
  409. package/dist/{span-payload-primitives-wxQ0IDhF.js → span-payload-primitives-D_Z6D-Aj.js} +6 -6
  410. package/dist/span-payload-primitives-D_Z6D-Aj.js.map +1 -0
  411. package/dist/{span-payload-primitives-DqZn_Q29.cjs → span-payload-primitives-XZgE4FGT.cjs} +6 -6
  412. package/dist/span-payload-primitives-XZgE4FGT.cjs.map +1 -0
  413. package/dist/src/domains/chat/context/chat-context.d.ts +5 -1
  414. package/dist/src/domains/traces/components/traces-list-view.d.ts +3 -1
  415. package/dist/src/domains/traces/trace-list-columns.d.ts +2 -0
  416. package/dist/src/ds/components/DataList/data-list-column-order.d.ts +22 -0
  417. package/dist/src/ds/components/DataList/data-list-reorder-context.d.ts +9 -0
  418. package/dist/src/ds/components/DataList/data-list-root.d.ts +16 -1
  419. package/dist/src/ds/components/DateTimeRangePicker/custom-range-editor.d.ts +12 -0
  420. package/dist/src/ds/components/DisclosureChevron/disclosure-chevron.d.ts +13 -0
  421. package/dist/src/ds/components/DisclosureChevron/index.d.ts +1 -0
  422. package/dist/src/ds/components/Input/input.d.ts +12 -1
  423. package/dist/src/ds/components/InputGroup/input-group.d.ts +1 -1
  424. package/dist/src/ds/components/InputNumber/input-number.d.ts +1 -1
  425. package/dist/src/ds/components/Tree/tree-context.d.ts +1 -0
  426. package/dist/src/ds/primitives/chart-frame.d.ts +4 -1
  427. package/dist/src/ds/primitives/password-manager-autofill.d.ts +29 -0
  428. package/dist/src/ds/primitives/textarea-control.d.ts +1 -1
  429. package/dist/style.css +18 -23
  430. package/dist/{tool-approval-CWOuZz47.cjs → tool-approval-DEfU8dPG.cjs} +2 -2
  431. package/dist/{tool-approval-CWOuZz47.cjs.map → tool-approval-DEfU8dPG.cjs.map} +1 -1
  432. package/dist/{tool-approval-BabMPJSL.js → tool-approval-DM8lvaCK.js} +2 -2
  433. package/dist/{tool-approval-BabMPJSL.js.map → tool-approval-DM8lvaCK.js.map} +1 -1
  434. package/dist/{tool-call-group-BPQTXJST.cjs → tool-call-group-CFpdexuw.cjs} +2 -2
  435. package/dist/{tool-call-group-BPQTXJST.cjs.map → tool-call-group-CFpdexuw.cjs.map} +1 -1
  436. package/dist/{tool-call-group-bE2C2hCK.js → tool-call-group-CZBqGjMh.js} +2 -2
  437. package/dist/{tool-call-group-bE2C2hCK.js.map → tool-call-group-CZBqGjMh.js.map} +1 -1
  438. package/dist/{tool-card-D-w1SgXq.js → tool-card-B0HX-uhD.js} +2 -2
  439. package/dist/tool-card-B0HX-uhD.js.map +1 -0
  440. package/dist/{tool-card-LNK49o-E.cjs → tool-card-CHyHNezE.cjs} +2 -2
  441. package/dist/tool-card-CHyHNezE.cjs.map +1 -0
  442. package/dist/{traces-data-list-DRSy_7KT.cjs → traces-data-list-DCa7QLQ3.cjs} +2 -2
  443. package/dist/{traces-data-list-DRSy_7KT.cjs.map → traces-data-list-DCa7QLQ3.cjs.map} +1 -1
  444. package/dist/{traces-data-list-C89IFLf8.js → traces-data-list-Dig7T40-.js} +2 -2
  445. package/dist/{traces-data-list-C89IFLf8.js.map → traces-data-list-Dig7T40-.js.map} +1 -1
  446. package/dist/{tree-DyVaMIwA.js → tree-BodKFJWV.js} +8 -5
  447. package/dist/tree-BodKFJWV.js.map +1 -0
  448. package/dist/{tree-JtAQw7a7.cjs → tree-vhKmzihm.cjs} +7 -4
  449. package/dist/tree-vhKmzihm.cjs.map +1 -0
  450. package/dist/{use-workflow-graph-runtime-FHoQYtWa.cjs → use-workflow-graph-runtime-B_ihs9Ev.cjs} +2 -2
  451. package/dist/{use-workflow-graph-runtime-FHoQYtWa.cjs.map → use-workflow-graph-runtime-B_ihs9Ev.cjs.map} +1 -1
  452. package/dist/{use-workflow-graph-runtime-XT_aoo-Z.js → use-workflow-graph-runtime-OyDXm_6V.js} +2 -2
  453. package/dist/{use-workflow-graph-runtime-XT_aoo-Z.js.map → use-workflow-graph-runtime-OyDXm_6V.js.map} +1 -1
  454. package/dist/{workflow-condition-card-Dy-0c_PT.cjs → workflow-condition-card-BF0PmJDV.cjs} +5 -4
  455. package/dist/workflow-condition-card-BF0PmJDV.cjs.map +1 -0
  456. package/dist/{workflow-condition-card-D30tufXt.js → workflow-condition-card-BVnfl6Zi.js} +5 -4
  457. package/dist/workflow-condition-card-BVnfl6Zi.js.map +1 -0
  458. package/package.json +9 -9
  459. package/dist/activity-maXCNWZp.js.map +0 -1
  460. package/dist/activity-pXCpwxxi.cjs.map +0 -1
  461. package/dist/collapsible-8h5KBZPX.js.map +0 -1
  462. package/dist/collapsible-BzlQAuym.cjs.map +0 -1
  463. package/dist/combobox-8_JEWMYs.js.map +0 -1
  464. package/dist/combobox-Csiduxme.cjs.map +0 -1
  465. package/dist/command-C-i5cx8D.js.map +0 -1
  466. package/dist/command-Cq-K24jI.cjs.map +0 -1
  467. package/dist/composer-CIfMr8q5.js.map +0 -1
  468. package/dist/composer-DhxSetWI.cjs.map +0 -1
  469. package/dist/data-list-BfepBJLG.js.map +0 -1
  470. package/dist/data-list-oQsJVUa6.cjs.map +0 -1
  471. package/dist/data-list-skeleton-BE7yRNks.cjs.map +0 -1
  472. package/dist/data-list-skeleton-DnVnqTGL.js.map +0 -1
  473. package/dist/date-time-range-picker-BA3e2LFA.js +0 -180
  474. package/dist/date-time-range-picker-BA3e2LFA.js.map +0 -1
  475. package/dist/date-time-range-picker-BNepacnP.cjs +0 -182
  476. package/dist/date-time-range-picker-BNepacnP.cjs.map +0 -1
  477. package/dist/filter-bar-chip-BBPHw-rX.cjs.map +0 -1
  478. package/dist/filter-bar-chip-SX3vDA7h.js.map +0 -1
  479. package/dist/input-HPE241gI.cjs.map +0 -1
  480. package/dist/input-group-C7WC6xGL.js.map +0 -1
  481. package/dist/input-group-CGbhXsmd.cjs.map +0 -1
  482. package/dist/input-vi0ICZHe.js.map +0 -1
  483. package/dist/property-filter-applied-7dHzckeW.cjs.map +0 -1
  484. package/dist/property-filter-applied-CdbOixsW.js.map +0 -1
  485. package/dist/span-payload-primitives-DqZn_Q29.cjs.map +0 -1
  486. package/dist/span-payload-primitives-wxQ0IDhF.js.map +0 -1
  487. package/dist/tool-card-D-w1SgXq.js.map +0 -1
  488. package/dist/tool-card-LNK49o-E.cjs.map +0 -1
  489. package/dist/tree-DyVaMIwA.js.map +0 -1
  490. package/dist/tree-JtAQw7a7.cjs.map +0 -1
  491. package/dist/workflow-condition-card-D30tufXt.js.map +0 -1
  492. package/dist/workflow-condition-card-Dy-0c_PT.cjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-BodKFJWV.js","sources":["../src/ds/components/Tree/tree-context.tsx","../src/ds/components/Tree/tree-file.tsx","../src/ds/components/Tree/tree-folder.tsx","../src/ds/components/Tree/tree-folder-content.tsx","../src/ds/components/Tree/tree-folder-trigger.tsx","../src/ds/components/Tree/tree-icon.tsx","../src/ds/components/Tree/tree-input.tsx","../src/ds/components/Tree/tree-label.tsx","../src/ds/components/Tree/tree-root.tsx","../src/ds/components/Tree/tree.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\nimport * as React from 'react';\n\nexport interface TreeContextValue {\n selectedId?: string;\n onSelect?: (id: string) => void;\n focusItem?: (item: HTMLElement, options?: { focus?: boolean }) => void;\n}\n\nconst TreeContext = React.createContext<TreeContextValue | null>(null);\n\nexport function TreeProvider({ children, value }: { children: React.ReactNode; value: TreeContextValue }) {\n return <TreeContext.Provider value={value}>{children}</TreeContext.Provider>;\n}\n\nexport function useTreeContext(): TreeContextValue | null {\n return React.useContext(TreeContext);\n}\n\nexport interface TreeFolderContextValue {\n isFocused: boolean;\n isOpen: boolean;\n}\n\nconst TreeFolderContext = React.createContext<TreeFolderContextValue | null>(null);\n\nexport function TreeFolderProvider({ children, value }: { children: React.ReactNode; value: TreeFolderContextValue }) {\n return <TreeFolderContext.Provider value={value}>{children}</TreeFolderContext.Provider>;\n}\n\nexport function useTreeFolderContext(): TreeFolderContextValue | null {\n return React.useContext(TreeFolderContext);\n}\n\nconst TreeDepthContext = React.createContext<number>(0);\n\nexport function TreeDepthProvider({ children, depth }: { children: React.ReactNode; depth: number }) {\n return <TreeDepthContext.Provider value={depth}>{children}</TreeDepthContext.Provider>;\n}\n\nexport function useTreeDepth(): number {\n return React.useContext(TreeDepthContext);\n}\n","import * as React from 'react';\nimport { useTreeContext, useTreeDepth } from './tree-context';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport interface TreeFileProps {\n id?: string;\n className?: string;\n children: React.ReactNode;\n}\n\nexport const TreeFile = React.forwardRef<HTMLLIElement, TreeFileProps>(({ id, className, children }, ref) => {\n const treeCtx = useTreeContext();\n const depth = useTreeDepth();\n const isSelected = id != null && treeCtx?.selectedId === id;\n\n const handleClick = (e: React.MouseEvent<HTMLLIElement>) => {\n treeCtx?.focusItem?.(e.currentTarget);\n if (id != null && treeCtx?.onSelect) {\n treeCtx.onSelect(id);\n }\n };\n\n const handleFocus = (e: React.FocusEvent<HTMLLIElement>) => {\n treeCtx?.focusItem?.(e.currentTarget, { focus: false });\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if ((e.key === 'Enter' || e.key === ' ') && id != null && treeCtx?.onSelect) {\n e.preventDefault();\n treeCtx.onSelect(id);\n }\n };\n\n return (\n <li\n ref={ref}\n role=\"treeitem\"\n aria-level={depth + 1}\n aria-selected={isSelected || undefined}\n data-tree-item-kind=\"file\"\n data-tree-item-id={id}\n tabIndex={-1}\n className={cn(\n 'group flex h-7 min-w-0 cursor-pointer items-center gap-1.5 rounded-sm px-1',\n transitions.colors,\n 'outline-hidden hover:bg-fill-subtle focus-visible:bg-fill-subtle focus-visible:text-foreground focus-visible:outline-hidden',\n isSelected && 'bg-fill-hover text-foreground',\n className,\n )}\n // +18 offsets past the chevron (size-3 = 12px) + flex gap (gap-1.5 = 6px) that folders have\n style={{ paddingLeft: depth * 12 + 18 }}\n onClick={handleClick}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n >\n {children}\n </li>\n );\n});\nTreeFile.displayName = 'Tree.File';\n","import * as React from 'react';\nimport { TreeFolderProvider, useTreeContext, useTreeDepth } from './tree-context';\nimport { Collapsible } from '@/ds/components/Collapsible';\nimport { cn } from '@/lib/utils';\n\nexport interface TreeFolderProps {\n id?: string;\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n className?: string;\n children: React.ReactNode;\n}\n\nexport const TreeFolder = React.forwardRef<HTMLLIElement, TreeFolderProps>(\n ({ id, defaultOpen, open, onOpenChange, className, children }, ref) => {\n const treeCtx = useTreeContext();\n const depth = useTreeDepth();\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen ?? false);\n const [isFocused, setIsFocused] = React.useState(false);\n const isOpen = open ?? internalOpen;\n\n const handleOpenChange = React.useCallback(\n (nextOpen: boolean) => {\n setInternalOpen(nextOpen);\n onOpenChange?.(nextOpen);\n },\n [onOpenChange],\n );\n\n const handleFocus = React.useCallback(\n (e: React.FocusEvent<HTMLLIElement>) => {\n if (e.target !== e.currentTarget) {\n setIsFocused(false);\n return;\n }\n\n setIsFocused(true);\n treeCtx?.focusItem?.(e.currentTarget, { focus: false });\n },\n [treeCtx],\n );\n\n const handleBlur = React.useCallback(() => {\n setIsFocused(false);\n }, []);\n\n const folderContextValue = React.useMemo(() => ({ isFocused, isOpen }), [isFocused, isOpen]);\n\n return (\n <li\n ref={ref}\n role=\"treeitem\"\n aria-expanded={isOpen}\n aria-level={depth + 1}\n data-tree-item-kind=\"folder\"\n data-tree-item-id={id}\n tabIndex={-1}\n className={cn('flex flex-col outline-hidden', className)}\n onFocus={handleFocus}\n onBlur={handleBlur}\n >\n <TreeFolderProvider value={folderContextValue}>\n <Collapsible open={isOpen} onOpenChange={handleOpenChange}>\n {children}\n </Collapsible>\n </TreeFolderProvider>\n </li>\n );\n },\n);\nTreeFolder.displayName = 'Tree.Folder';\n","import * as React from 'react';\nimport { useTreeDepth, TreeDepthProvider } from './tree-context';\nimport { CollapsibleContent } from '@/ds/components/Collapsible';\nimport { cn } from '@/lib/utils';\n\nexport interface TreeFolderContentProps {\n className?: string;\n children: React.ReactNode;\n}\n\nexport const TreeFolderContent = React.forwardRef<HTMLDivElement, TreeFolderContentProps>(\n ({ className, children }, ref) => {\n const depth = useTreeDepth();\n\n return (\n <CollapsibleContent ref={ref} fill className={cn(className)}>\n <TreeDepthProvider depth={depth + 1}>\n <ul role=\"group\" className=\"flex flex-col\">\n {children}\n </ul>\n </TreeDepthProvider>\n </CollapsibleContent>\n );\n },\n);\nTreeFolderContent.displayName = 'Tree.FolderContent';\n","import * as React from 'react';\nimport { useTreeContext, useTreeDepth, useTreeFolderContext } from './tree-context';\nimport { CollapsibleTrigger } from '@/ds/components/Collapsible';\nimport { DisclosureChevron } from '@/ds/components/DisclosureChevron';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport interface TreeFolderTriggerProps {\n className?: string;\n children: React.ReactNode;\n actions?: React.ReactNode;\n}\n\nexport const TreeFolderTrigger = React.forwardRef<HTMLDivElement, TreeFolderTriggerProps>(\n ({ className, children, actions }, ref) => {\n const treeCtx = useTreeContext();\n const folderCtx = useTreeFolderContext();\n const depth = useTreeDepth();\n\n const focusFolderItem = React.useCallback(\n (target: HTMLElement, options?: { focus?: boolean }) => {\n const item = target.closest<HTMLElement>('[data-tree-item-kind=\"folder\"]');\n if (item) {\n treeCtx?.focusItem?.(item, options);\n }\n },\n [treeCtx],\n );\n\n return (\n <div\n ref={ref}\n data-tree-folder-row=\"true\"\n className={cn(\n 'group flex h-7 w-full min-w-0 items-center rounded-sm hover:bg-fill-subtle',\n transitions.colors,\n folderCtx?.isFocused && 'bg-fill-hover text-foreground',\n className,\n )}\n >\n <CollapsibleTrigger\n data-tree-folder-trigger=\"true\"\n tabIndex={-1}\n className=\"flex h-7 min-w-0 flex-1 cursor-pointer items-center gap-1.5 rounded-sm px-1 outline-hidden focus-visible:outline-hidden\"\n style={{ paddingLeft: depth * 12 }}\n onMouseDown={e => {\n e.preventDefault();\n focusFolderItem(e.currentTarget);\n }}\n onFocus={e => {\n focusFolderItem(e.currentTarget, { focus: false });\n }}\n >\n <DisclosureChevron direction=\"right\" open={folderCtx?.isOpen} className=\"size-3 text-muted-foreground\" />\n {children}\n </CollapsibleTrigger>\n {actions && (\n <span className=\"shrink-0 pr-1\" onClick={e => e.stopPropagation()}>\n {actions}\n </span>\n )}\n </div>\n );\n },\n);\nTreeFolderTrigger.displayName = 'Tree.FolderTrigger';\n","import * as React from 'react';\nimport { cn } from '@/lib/utils';\n\nexport interface TreeIconProps {\n className?: string;\n children: React.ReactNode;\n}\n\nexport const TreeIcon = React.forwardRef<HTMLSpanElement, TreeIconProps>(({ className, children }, ref) => (\n <span ref={ref} className={cn('flex shrink-0 items-center [&>svg]:size-3.5', className)}>\n {children}\n </span>\n));\nTreeIcon.displayName = 'Tree.Icon';\n","import { File, Folder } from 'lucide-react';\nimport * as React from 'react';\nimport { useTreeDepth } from './tree-context';\nimport { passwordManagerOptOutProps } from '@/ds/primitives/password-manager-autofill';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport interface TreeInputProps {\n type: 'file' | 'folder';\n onSubmit: (name: string) => void;\n onCancel?: () => void;\n defaultValue?: string;\n placeholder?: string;\n autoFocus?: boolean;\n className?: string;\n}\n\nexport const TreeInput = React.forwardRef<HTMLLIElement, TreeInputProps>(\n ({ type, onSubmit, onCancel, defaultValue = '', placeholder, autoFocus = true, className }, ref) => {\n const depth = useTreeDepth();\n const inputRef = React.useRef<HTMLInputElement>(null);\n const submittedRef = React.useRef(false);\n\n const handleSubmit = React.useCallback(\n (value: string) => {\n if (submittedRef.current) return;\n const trimmed = value.trim();\n if (trimmed) {\n submittedRef.current = true;\n onSubmit(trimmed);\n } else {\n onCancel?.();\n }\n },\n [onSubmit, onCancel],\n );\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n handleSubmit(e.currentTarget.value);\n } else if (e.key === 'Escape') {\n e.preventDefault();\n onCancel?.();\n }\n },\n [handleSubmit, onCancel],\n );\n\n const handleBlur = React.useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n handleSubmit(e.currentTarget.value);\n },\n [handleSubmit],\n );\n\n const handleFocus = React.useCallback((e: React.FocusEvent<HTMLInputElement>) => {\n e.currentTarget.select();\n }, []);\n\n const Icon = type === 'folder' ? Folder : File;\n\n return (\n <li\n ref={ref}\n role=\"treeitem\"\n aria-level={depth + 1}\n data-tree-item-kind=\"input\"\n className={cn(\n 'group flex h-7 min-w-0 items-center gap-1.5 rounded-sm px-1',\n transitions.colors,\n 'focus-within:bg-fill-subtle focus-within:text-foreground focus-within:outline-hidden',\n className,\n )}\n style={{ paddingLeft: depth * 12 + 18 }}\n >\n <span className=\"flex shrink-0 items-center [&>svg]:size-3.5\">\n <Icon className=\"text-muted-foreground\" />\n </span>\n <input\n ref={inputRef}\n type=\"text\"\n defaultValue={defaultValue}\n placeholder={placeholder}\n autoFocus={autoFocus}\n onKeyDown={handleKeyDown}\n onBlur={handleBlur}\n onFocus={handleFocus}\n {...passwordManagerOptOutProps}\n className=\"min-w-0 flex-1 border-none bg-transparent text-caption text-foreground outline-hidden placeholder:text-muted-foreground\"\n />\n </li>\n );\n },\n);\nTreeInput.displayName = 'Tree.Input';\n","import * as React from 'react';\nimport { cn } from '@/lib/utils';\n\nexport interface TreeLabelProps {\n className?: string;\n children: React.ReactNode;\n}\n\nexport const TreeLabel = React.forwardRef<HTMLSpanElement, TreeLabelProps>(({ className, children }, ref) => (\n <span ref={ref} className={cn('truncate text-foreground', className)}>\n {children}\n </span>\n));\nTreeLabel.displayName = 'Tree.Label';\n","import * as React from 'react';\nimport { TreeProvider, TreeDepthProvider } from './tree-context';\nimport { useIsomorphicLayoutEffect } from '@/hooks/use-isomorphic-layout-effect';\nimport { cn } from '@/lib/utils';\n\nconst TREE_FOCUSABLE_ITEM_SELECTOR = '[data-tree-item-kind=\"folder\"], [data-tree-item-kind=\"file\"]';\nconst TREE_FOLDER_TRIGGER_SELECTOR = '[data-tree-folder-trigger=\"true\"]';\n\nexport interface TreeRootProps {\n selectedId?: string;\n onSelect?: (id: string) => void;\n className?: string;\n children: React.ReactNode;\n}\n\nfunction assignRef<T>(ref: React.ForwardedRef<T>, value: T | null) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}\n\nfunction getTreeItems(root: HTMLElement): HTMLElement[] {\n return Array.from(root.querySelectorAll<HTMLElement>(TREE_FOCUSABLE_ITEM_SELECTOR)).filter(\n item => item.getAttribute('role') === 'treeitem',\n );\n}\n\nfunction setTabStops(items: HTMLElement[], focusableItem: HTMLElement) {\n for (const item of items) {\n item.tabIndex = item === focusableItem ? 0 : -1;\n }\n}\n\nfunction syncTreeItemSetMetadata(root: HTMLElement) {\n const groups = [root, ...Array.from(root.querySelectorAll<HTMLElement>('[role=\"group\"]'))];\n\n for (const group of groups) {\n const items = Array.from(group.children).filter(\n (child): child is HTMLElement =>\n child instanceof HTMLElement &&\n child.getAttribute('role') === 'treeitem' &&\n child.hasAttribute('data-tree-item-kind'),\n );\n\n items.forEach((item, index) => {\n item.setAttribute('aria-posinset', String(index + 1));\n item.setAttribute('aria-setsize', String(items.length));\n });\n }\n}\n\nfunction findSelectedItem(items: HTMLElement[], selectedId: string | undefined): HTMLElement | null {\n if (!selectedId) return null;\n return items.find(item => item.dataset.treeItemId === selectedId) ?? null;\n}\n\nfunction getActiveTreeItem(root: HTMLElement, items: HTMLElement[]): HTMLElement | null {\n const activeElement = root.ownerDocument.activeElement;\n if (!(activeElement instanceof HTMLElement) || !root.contains(activeElement)) return null;\n\n const activeItem = activeElement.closest<HTMLElement>(TREE_FOCUSABLE_ITEM_SELECTOR);\n return activeItem && items.includes(activeItem) ? activeItem : null;\n}\n\nfunction getClosestTreeItem(root: HTMLElement, target: EventTarget | null): HTMLElement | null {\n if (!(target instanceof HTMLElement) || !root.contains(target)) return null;\n const item = target.closest<HTMLElement>(TREE_FOCUSABLE_ITEM_SELECTOR);\n return item?.getAttribute('role') === 'treeitem' ? item : null;\n}\n\nfunction focusTreeItem(root: HTMLElement, item: HTMLElement, options: { focus?: boolean } = {}) {\n const items = getTreeItems(root);\n if (!items.includes(item)) return;\n\n setTabStops(items, item);\n if (options.focus !== false) {\n item.focus();\n }\n}\n\nfunction syncTreeTabStops(root: HTMLElement, selectedId: string | undefined) {\n const items = getTreeItems(root);\n syncTreeItemSetMetadata(root);\n\n const firstItem = items[0];\n if (!firstItem) return;\n\n const activeItem = getActiveTreeItem(root, items);\n const selectedItem = findSelectedItem(items, selectedId);\n setTabStops(items, activeItem ?? selectedItem ?? firstItem);\n}\n\nfunction isEditableTarget(target: EventTarget | null): boolean {\n if (!(target instanceof HTMLElement)) return false;\n if (target.dataset.treeFolderTrigger === 'true') return false;\n if (target.isContentEditable) return true;\n\n return !!target.closest('input, textarea, select, button, [contenteditable=\"true\"]');\n}\n\nfunction getFolderTrigger(item: HTMLElement): HTMLButtonElement | null {\n return item.querySelector<HTMLButtonElement>(TREE_FOLDER_TRIGGER_SELECTOR);\n}\n\nfunction getParentTreeItem(item: HTMLElement): HTMLElement | null {\n const parentGroup = item.parentElement?.closest('[role=\"group\"]');\n return parentGroup?.closest<HTMLElement>(TREE_FOCUSABLE_ITEM_SELECTOR) ?? null;\n}\n\nfunction activateTreeItem(item: HTMLElement) {\n const trigger = getFolderTrigger(item);\n if (trigger) {\n trigger.click();\n } else {\n item.click();\n }\n}\n\nexport const TreeRoot = React.forwardRef<HTMLUListElement, TreeRootProps>(\n ({ selectedId, onSelect, className, children }, ref) => {\n const rootRef = React.useRef<HTMLUListElement | null>(null);\n\n const handleRootRef = React.useCallback(\n (node: HTMLUListElement | null) => {\n rootRef.current = node;\n assignRef(ref, node);\n },\n [ref],\n );\n\n const focusItem = React.useCallback((item: HTMLElement, options?: { focus?: boolean }) => {\n const root = rootRef.current;\n if (!root) return;\n focusTreeItem(root, item, options);\n }, []);\n\n const handleKeyDown = React.useCallback((event: React.KeyboardEvent<HTMLUListElement>) => {\n if (event.defaultPrevented || isEditableTarget(event.target)) return;\n\n const root = rootRef.current;\n if (!root) return;\n\n const items = getTreeItems(root);\n const currentItem =\n getClosestTreeItem(root, event.target) ??\n getActiveTreeItem(root, items) ??\n items.find(item => item.tabIndex === 0);\n if (!currentItem) return;\n\n const currentIndex = items.indexOf(currentItem);\n if (currentIndex < 0) return;\n\n let nextItem: HTMLElement | null = null;\n let handled = true;\n\n switch (event.key) {\n case 'ArrowDown':\n nextItem = items[Math.min(currentIndex + 1, items.length - 1)] ?? null;\n break;\n case 'ArrowUp':\n nextItem = items[Math.max(currentIndex - 1, 0)] ?? null;\n break;\n case 'Home':\n nextItem = items[0] ?? null;\n break;\n case 'End':\n nextItem = items[items.length - 1] ?? null;\n break;\n case 'ArrowRight': {\n const trigger = getFolderTrigger(currentItem);\n if (trigger && currentItem.getAttribute('aria-expanded') !== 'true') {\n trigger.click();\n nextItem = currentItem;\n } else {\n nextItem = items[Math.min(currentIndex + 1, items.length - 1)] ?? null;\n }\n break;\n }\n case 'ArrowLeft': {\n const trigger = getFolderTrigger(currentItem);\n if (trigger && currentItem.getAttribute('aria-expanded') === 'true') {\n trigger.click();\n nextItem = currentItem;\n } else {\n nextItem = getParentTreeItem(currentItem);\n }\n break;\n }\n case 'Enter':\n case ' ':\n case 'Spacebar':\n activateTreeItem(currentItem);\n nextItem = currentItem;\n break;\n default:\n handled = false;\n }\n\n if (!handled) return;\n\n event.preventDefault();\n event.stopPropagation();\n\n if (nextItem) {\n focusTreeItem(root, nextItem);\n }\n }, []);\n\n useIsomorphicLayoutEffect(() => {\n const root = rootRef.current;\n if (!root) return;\n syncTreeTabStops(root, selectedId);\n }, [children, selectedId]);\n\n React.useEffect(() => {\n const root = rootRef.current;\n if (!root || typeof MutationObserver === 'undefined') return;\n\n const observer = new MutationObserver(() => {\n syncTreeTabStops(root, selectedId);\n });\n observer.observe(root, { childList: true, subtree: true });\n\n return () => {\n observer.disconnect();\n };\n }, [selectedId]);\n\n const contextValue = React.useMemo(() => ({ selectedId, onSelect, focusItem }), [selectedId, onSelect, focusItem]);\n\n return (\n <TreeProvider value={contextValue}>\n <TreeDepthProvider depth={0}>\n <ul\n ref={handleRootRef}\n role=\"tree\"\n className={cn('flex flex-col text-caption', className)}\n onKeyDown={handleKeyDown}\n >\n {children}\n </ul>\n </TreeDepthProvider>\n </TreeProvider>\n );\n },\n);\nTreeRoot.displayName = 'Tree';\n","import { TreeFile } from './tree-file';\nimport { TreeFolder } from './tree-folder';\nimport { TreeFolderContent } from './tree-folder-content';\nimport { TreeFolderTrigger } from './tree-folder-trigger';\nimport { TreeIcon } from './tree-icon';\nimport { TreeInput } from './tree-input';\nimport { TreeLabel } from './tree-label';\nimport { TreeRoot } from './tree-root';\n\nexport const Tree = Object.assign(TreeRoot, {\n Folder: TreeFolder,\n FolderTrigger: TreeFolderTrigger,\n FolderContent: TreeFolderContent,\n File: TreeFile,\n Icon: TreeIcon,\n Label: TreeLabel,\n Input: TreeInput,\n});\n"],"names":[],"mappings":"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"}
@@ -4,8 +4,10 @@ const jsxRuntime = require('react/jsx-runtime');
4
4
  const React = require('react');
5
5
  const primitives_transitions = require('./primitives/transitions.cjs.js');
6
6
  const utils_cn = require('./cn-TqD01zH-.cjs');
7
- const collapsible = require('./collapsible-BzlQAuym.cjs');
7
+ const collapsible = require('./collapsible-C6BZhVRG.cjs');
8
+ const disclosureChevron = require('./disclosure-chevron-B_gmYFR5.cjs');
8
9
  const lucideReact = require('lucide-react');
10
+ const primitives_passwordManagerAutofill = require('./primitives/password-manager-autofill.cjs.js');
9
11
  const hooks_useIsomorphicLayoutEffect = require('./hooks/use-isomorphic-layout-effect.cjs.js');
10
12
 
11
13
  function _interopNamespaceDefault(e) {
@@ -123,7 +125,7 @@ const TreeFolder = React__namespace.forwardRef(
123
125
  const handleBlur = React__namespace.useCallback(() => {
124
126
  setIsFocused(false);
125
127
  }, []);
126
- const folderContextValue = React__namespace.useMemo(() => ({ isFocused }), [isFocused]);
128
+ const folderContextValue = React__namespace.useMemo(() => ({ isFocused, isOpen }), [isFocused, isOpen]);
127
129
  return /* @__PURE__ */ jsxRuntime.jsx(
128
130
  "li",
129
131
  {
@@ -193,7 +195,7 @@ const TreeFolderTrigger = React__namespace.forwardRef(
193
195
  focusFolderItem(e.currentTarget, { focus: false });
194
196
  },
195
197
  children: [
196
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { "aria-hidden": "true", className: "size-3 shrink-0 text-muted-foreground" }),
198
+ /* @__PURE__ */ jsxRuntime.jsx(disclosureChevron.DisclosureChevron, { direction: "right", open: folderCtx?.isOpen, className: "size-3 text-muted-foreground" }),
197
199
  children
198
200
  ]
199
201
  }
@@ -276,6 +278,7 @@ const TreeInput = React__namespace.forwardRef(
276
278
  onKeyDown: handleKeyDown,
277
279
  onBlur: handleBlur,
278
280
  onFocus: handleFocus,
281
+ ...primitives_passwordManagerAutofill.passwordManagerOptOutProps,
279
282
  className: "min-w-0 flex-1 border-none bg-transparent text-caption text-foreground outline-hidden placeholder:text-muted-foreground"
280
283
  }
281
284
  )
@@ -490,4 +493,4 @@ const Tree = Object.assign(TreeRoot, {
490
493
  });
491
494
 
492
495
  exports.Tree = Tree;
493
- //# sourceMappingURL=tree-JtAQw7a7.cjs.map
496
+ //# sourceMappingURL=tree-vhKmzihm.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-vhKmzihm.cjs","sources":["../src/ds/components/Tree/tree-context.tsx","../src/ds/components/Tree/tree-file.tsx","../src/ds/components/Tree/tree-folder.tsx","../src/ds/components/Tree/tree-folder-content.tsx","../src/ds/components/Tree/tree-folder-trigger.tsx","../src/ds/components/Tree/tree-icon.tsx","../src/ds/components/Tree/tree-input.tsx","../src/ds/components/Tree/tree-label.tsx","../src/ds/components/Tree/tree-root.tsx","../src/ds/components/Tree/tree.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\nimport * as React from 'react';\n\nexport interface TreeContextValue {\n selectedId?: string;\n onSelect?: (id: string) => void;\n focusItem?: (item: HTMLElement, options?: { focus?: boolean }) => void;\n}\n\nconst TreeContext = React.createContext<TreeContextValue | null>(null);\n\nexport function TreeProvider({ children, value }: { children: React.ReactNode; value: TreeContextValue }) {\n return <TreeContext.Provider value={value}>{children}</TreeContext.Provider>;\n}\n\nexport function useTreeContext(): TreeContextValue | null {\n return React.useContext(TreeContext);\n}\n\nexport interface TreeFolderContextValue {\n isFocused: boolean;\n isOpen: boolean;\n}\n\nconst TreeFolderContext = React.createContext<TreeFolderContextValue | null>(null);\n\nexport function TreeFolderProvider({ children, value }: { children: React.ReactNode; value: TreeFolderContextValue }) {\n return <TreeFolderContext.Provider value={value}>{children}</TreeFolderContext.Provider>;\n}\n\nexport function useTreeFolderContext(): TreeFolderContextValue | null {\n return React.useContext(TreeFolderContext);\n}\n\nconst TreeDepthContext = React.createContext<number>(0);\n\nexport function TreeDepthProvider({ children, depth }: { children: React.ReactNode; depth: number }) {\n return <TreeDepthContext.Provider value={depth}>{children}</TreeDepthContext.Provider>;\n}\n\nexport function useTreeDepth(): number {\n return React.useContext(TreeDepthContext);\n}\n","import * as React from 'react';\nimport { useTreeContext, useTreeDepth } from './tree-context';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport interface TreeFileProps {\n id?: string;\n className?: string;\n children: React.ReactNode;\n}\n\nexport const TreeFile = React.forwardRef<HTMLLIElement, TreeFileProps>(({ id, className, children }, ref) => {\n const treeCtx = useTreeContext();\n const depth = useTreeDepth();\n const isSelected = id != null && treeCtx?.selectedId === id;\n\n const handleClick = (e: React.MouseEvent<HTMLLIElement>) => {\n treeCtx?.focusItem?.(e.currentTarget);\n if (id != null && treeCtx?.onSelect) {\n treeCtx.onSelect(id);\n }\n };\n\n const handleFocus = (e: React.FocusEvent<HTMLLIElement>) => {\n treeCtx?.focusItem?.(e.currentTarget, { focus: false });\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if ((e.key === 'Enter' || e.key === ' ') && id != null && treeCtx?.onSelect) {\n e.preventDefault();\n treeCtx.onSelect(id);\n }\n };\n\n return (\n <li\n ref={ref}\n role=\"treeitem\"\n aria-level={depth + 1}\n aria-selected={isSelected || undefined}\n data-tree-item-kind=\"file\"\n data-tree-item-id={id}\n tabIndex={-1}\n className={cn(\n 'group flex h-7 min-w-0 cursor-pointer items-center gap-1.5 rounded-sm px-1',\n transitions.colors,\n 'outline-hidden hover:bg-fill-subtle focus-visible:bg-fill-subtle focus-visible:text-foreground focus-visible:outline-hidden',\n isSelected && 'bg-fill-hover text-foreground',\n className,\n )}\n // +18 offsets past the chevron (size-3 = 12px) + flex gap (gap-1.5 = 6px) that folders have\n style={{ paddingLeft: depth * 12 + 18 }}\n onClick={handleClick}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n >\n {children}\n </li>\n );\n});\nTreeFile.displayName = 'Tree.File';\n","import * as React from 'react';\nimport { TreeFolderProvider, useTreeContext, useTreeDepth } from './tree-context';\nimport { Collapsible } from '@/ds/components/Collapsible';\nimport { cn } from '@/lib/utils';\n\nexport interface TreeFolderProps {\n id?: string;\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n className?: string;\n children: React.ReactNode;\n}\n\nexport const TreeFolder = React.forwardRef<HTMLLIElement, TreeFolderProps>(\n ({ id, defaultOpen, open, onOpenChange, className, children }, ref) => {\n const treeCtx = useTreeContext();\n const depth = useTreeDepth();\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen ?? false);\n const [isFocused, setIsFocused] = React.useState(false);\n const isOpen = open ?? internalOpen;\n\n const handleOpenChange = React.useCallback(\n (nextOpen: boolean) => {\n setInternalOpen(nextOpen);\n onOpenChange?.(nextOpen);\n },\n [onOpenChange],\n );\n\n const handleFocus = React.useCallback(\n (e: React.FocusEvent<HTMLLIElement>) => {\n if (e.target !== e.currentTarget) {\n setIsFocused(false);\n return;\n }\n\n setIsFocused(true);\n treeCtx?.focusItem?.(e.currentTarget, { focus: false });\n },\n [treeCtx],\n );\n\n const handleBlur = React.useCallback(() => {\n setIsFocused(false);\n }, []);\n\n const folderContextValue = React.useMemo(() => ({ isFocused, isOpen }), [isFocused, isOpen]);\n\n return (\n <li\n ref={ref}\n role=\"treeitem\"\n aria-expanded={isOpen}\n aria-level={depth + 1}\n data-tree-item-kind=\"folder\"\n data-tree-item-id={id}\n tabIndex={-1}\n className={cn('flex flex-col outline-hidden', className)}\n onFocus={handleFocus}\n onBlur={handleBlur}\n >\n <TreeFolderProvider value={folderContextValue}>\n <Collapsible open={isOpen} onOpenChange={handleOpenChange}>\n {children}\n </Collapsible>\n </TreeFolderProvider>\n </li>\n );\n },\n);\nTreeFolder.displayName = 'Tree.Folder';\n","import * as React from 'react';\nimport { useTreeDepth, TreeDepthProvider } from './tree-context';\nimport { CollapsibleContent } from '@/ds/components/Collapsible';\nimport { cn } from '@/lib/utils';\n\nexport interface TreeFolderContentProps {\n className?: string;\n children: React.ReactNode;\n}\n\nexport const TreeFolderContent = React.forwardRef<HTMLDivElement, TreeFolderContentProps>(\n ({ className, children }, ref) => {\n const depth = useTreeDepth();\n\n return (\n <CollapsibleContent ref={ref} fill className={cn(className)}>\n <TreeDepthProvider depth={depth + 1}>\n <ul role=\"group\" className=\"flex flex-col\">\n {children}\n </ul>\n </TreeDepthProvider>\n </CollapsibleContent>\n );\n },\n);\nTreeFolderContent.displayName = 'Tree.FolderContent';\n","import * as React from 'react';\nimport { useTreeContext, useTreeDepth, useTreeFolderContext } from './tree-context';\nimport { CollapsibleTrigger } from '@/ds/components/Collapsible';\nimport { DisclosureChevron } from '@/ds/components/DisclosureChevron';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport interface TreeFolderTriggerProps {\n className?: string;\n children: React.ReactNode;\n actions?: React.ReactNode;\n}\n\nexport const TreeFolderTrigger = React.forwardRef<HTMLDivElement, TreeFolderTriggerProps>(\n ({ className, children, actions }, ref) => {\n const treeCtx = useTreeContext();\n const folderCtx = useTreeFolderContext();\n const depth = useTreeDepth();\n\n const focusFolderItem = React.useCallback(\n (target: HTMLElement, options?: { focus?: boolean }) => {\n const item = target.closest<HTMLElement>('[data-tree-item-kind=\"folder\"]');\n if (item) {\n treeCtx?.focusItem?.(item, options);\n }\n },\n [treeCtx],\n );\n\n return (\n <div\n ref={ref}\n data-tree-folder-row=\"true\"\n className={cn(\n 'group flex h-7 w-full min-w-0 items-center rounded-sm hover:bg-fill-subtle',\n transitions.colors,\n folderCtx?.isFocused && 'bg-fill-hover text-foreground',\n className,\n )}\n >\n <CollapsibleTrigger\n data-tree-folder-trigger=\"true\"\n tabIndex={-1}\n className=\"flex h-7 min-w-0 flex-1 cursor-pointer items-center gap-1.5 rounded-sm px-1 outline-hidden focus-visible:outline-hidden\"\n style={{ paddingLeft: depth * 12 }}\n onMouseDown={e => {\n e.preventDefault();\n focusFolderItem(e.currentTarget);\n }}\n onFocus={e => {\n focusFolderItem(e.currentTarget, { focus: false });\n }}\n >\n <DisclosureChevron direction=\"right\" open={folderCtx?.isOpen} className=\"size-3 text-muted-foreground\" />\n {children}\n </CollapsibleTrigger>\n {actions && (\n <span className=\"shrink-0 pr-1\" onClick={e => e.stopPropagation()}>\n {actions}\n </span>\n )}\n </div>\n );\n },\n);\nTreeFolderTrigger.displayName = 'Tree.FolderTrigger';\n","import * as React from 'react';\nimport { cn } from '@/lib/utils';\n\nexport interface TreeIconProps {\n className?: string;\n children: React.ReactNode;\n}\n\nexport const TreeIcon = React.forwardRef<HTMLSpanElement, TreeIconProps>(({ className, children }, ref) => (\n <span ref={ref} className={cn('flex shrink-0 items-center [&>svg]:size-3.5', className)}>\n {children}\n </span>\n));\nTreeIcon.displayName = 'Tree.Icon';\n","import { File, Folder } from 'lucide-react';\nimport * as React from 'react';\nimport { useTreeDepth } from './tree-context';\nimport { passwordManagerOptOutProps } from '@/ds/primitives/password-manager-autofill';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport interface TreeInputProps {\n type: 'file' | 'folder';\n onSubmit: (name: string) => void;\n onCancel?: () => void;\n defaultValue?: string;\n placeholder?: string;\n autoFocus?: boolean;\n className?: string;\n}\n\nexport const TreeInput = React.forwardRef<HTMLLIElement, TreeInputProps>(\n ({ type, onSubmit, onCancel, defaultValue = '', placeholder, autoFocus = true, className }, ref) => {\n const depth = useTreeDepth();\n const inputRef = React.useRef<HTMLInputElement>(null);\n const submittedRef = React.useRef(false);\n\n const handleSubmit = React.useCallback(\n (value: string) => {\n if (submittedRef.current) return;\n const trimmed = value.trim();\n if (trimmed) {\n submittedRef.current = true;\n onSubmit(trimmed);\n } else {\n onCancel?.();\n }\n },\n [onSubmit, onCancel],\n );\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n handleSubmit(e.currentTarget.value);\n } else if (e.key === 'Escape') {\n e.preventDefault();\n onCancel?.();\n }\n },\n [handleSubmit, onCancel],\n );\n\n const handleBlur = React.useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n handleSubmit(e.currentTarget.value);\n },\n [handleSubmit],\n );\n\n const handleFocus = React.useCallback((e: React.FocusEvent<HTMLInputElement>) => {\n e.currentTarget.select();\n }, []);\n\n const Icon = type === 'folder' ? Folder : File;\n\n return (\n <li\n ref={ref}\n role=\"treeitem\"\n aria-level={depth + 1}\n data-tree-item-kind=\"input\"\n className={cn(\n 'group flex h-7 min-w-0 items-center gap-1.5 rounded-sm px-1',\n transitions.colors,\n 'focus-within:bg-fill-subtle focus-within:text-foreground focus-within:outline-hidden',\n className,\n )}\n style={{ paddingLeft: depth * 12 + 18 }}\n >\n <span className=\"flex shrink-0 items-center [&>svg]:size-3.5\">\n <Icon className=\"text-muted-foreground\" />\n </span>\n <input\n ref={inputRef}\n type=\"text\"\n defaultValue={defaultValue}\n placeholder={placeholder}\n autoFocus={autoFocus}\n onKeyDown={handleKeyDown}\n onBlur={handleBlur}\n onFocus={handleFocus}\n {...passwordManagerOptOutProps}\n className=\"min-w-0 flex-1 border-none bg-transparent text-caption text-foreground outline-hidden placeholder:text-muted-foreground\"\n />\n </li>\n );\n },\n);\nTreeInput.displayName = 'Tree.Input';\n","import * as React from 'react';\nimport { cn } from '@/lib/utils';\n\nexport interface TreeLabelProps {\n className?: string;\n children: React.ReactNode;\n}\n\nexport const TreeLabel = React.forwardRef<HTMLSpanElement, TreeLabelProps>(({ className, children }, ref) => (\n <span ref={ref} className={cn('truncate text-foreground', className)}>\n {children}\n </span>\n));\nTreeLabel.displayName = 'Tree.Label';\n","import * as React from 'react';\nimport { TreeProvider, TreeDepthProvider } from './tree-context';\nimport { useIsomorphicLayoutEffect } from '@/hooks/use-isomorphic-layout-effect';\nimport { cn } from '@/lib/utils';\n\nconst TREE_FOCUSABLE_ITEM_SELECTOR = '[data-tree-item-kind=\"folder\"], [data-tree-item-kind=\"file\"]';\nconst TREE_FOLDER_TRIGGER_SELECTOR = '[data-tree-folder-trigger=\"true\"]';\n\nexport interface TreeRootProps {\n selectedId?: string;\n onSelect?: (id: string) => void;\n className?: string;\n children: React.ReactNode;\n}\n\nfunction assignRef<T>(ref: React.ForwardedRef<T>, value: T | null) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}\n\nfunction getTreeItems(root: HTMLElement): HTMLElement[] {\n return Array.from(root.querySelectorAll<HTMLElement>(TREE_FOCUSABLE_ITEM_SELECTOR)).filter(\n item => item.getAttribute('role') === 'treeitem',\n );\n}\n\nfunction setTabStops(items: HTMLElement[], focusableItem: HTMLElement) {\n for (const item of items) {\n item.tabIndex = item === focusableItem ? 0 : -1;\n }\n}\n\nfunction syncTreeItemSetMetadata(root: HTMLElement) {\n const groups = [root, ...Array.from(root.querySelectorAll<HTMLElement>('[role=\"group\"]'))];\n\n for (const group of groups) {\n const items = Array.from(group.children).filter(\n (child): child is HTMLElement =>\n child instanceof HTMLElement &&\n child.getAttribute('role') === 'treeitem' &&\n child.hasAttribute('data-tree-item-kind'),\n );\n\n items.forEach((item, index) => {\n item.setAttribute('aria-posinset', String(index + 1));\n item.setAttribute('aria-setsize', String(items.length));\n });\n }\n}\n\nfunction findSelectedItem(items: HTMLElement[], selectedId: string | undefined): HTMLElement | null {\n if (!selectedId) return null;\n return items.find(item => item.dataset.treeItemId === selectedId) ?? null;\n}\n\nfunction getActiveTreeItem(root: HTMLElement, items: HTMLElement[]): HTMLElement | null {\n const activeElement = root.ownerDocument.activeElement;\n if (!(activeElement instanceof HTMLElement) || !root.contains(activeElement)) return null;\n\n const activeItem = activeElement.closest<HTMLElement>(TREE_FOCUSABLE_ITEM_SELECTOR);\n return activeItem && items.includes(activeItem) ? activeItem : null;\n}\n\nfunction getClosestTreeItem(root: HTMLElement, target: EventTarget | null): HTMLElement | null {\n if (!(target instanceof HTMLElement) || !root.contains(target)) return null;\n const item = target.closest<HTMLElement>(TREE_FOCUSABLE_ITEM_SELECTOR);\n return item?.getAttribute('role') === 'treeitem' ? item : null;\n}\n\nfunction focusTreeItem(root: HTMLElement, item: HTMLElement, options: { focus?: boolean } = {}) {\n const items = getTreeItems(root);\n if (!items.includes(item)) return;\n\n setTabStops(items, item);\n if (options.focus !== false) {\n item.focus();\n }\n}\n\nfunction syncTreeTabStops(root: HTMLElement, selectedId: string | undefined) {\n const items = getTreeItems(root);\n syncTreeItemSetMetadata(root);\n\n const firstItem = items[0];\n if (!firstItem) return;\n\n const activeItem = getActiveTreeItem(root, items);\n const selectedItem = findSelectedItem(items, selectedId);\n setTabStops(items, activeItem ?? selectedItem ?? firstItem);\n}\n\nfunction isEditableTarget(target: EventTarget | null): boolean {\n if (!(target instanceof HTMLElement)) return false;\n if (target.dataset.treeFolderTrigger === 'true') return false;\n if (target.isContentEditable) return true;\n\n return !!target.closest('input, textarea, select, button, [contenteditable=\"true\"]');\n}\n\nfunction getFolderTrigger(item: HTMLElement): HTMLButtonElement | null {\n return item.querySelector<HTMLButtonElement>(TREE_FOLDER_TRIGGER_SELECTOR);\n}\n\nfunction getParentTreeItem(item: HTMLElement): HTMLElement | null {\n const parentGroup = item.parentElement?.closest('[role=\"group\"]');\n return parentGroup?.closest<HTMLElement>(TREE_FOCUSABLE_ITEM_SELECTOR) ?? null;\n}\n\nfunction activateTreeItem(item: HTMLElement) {\n const trigger = getFolderTrigger(item);\n if (trigger) {\n trigger.click();\n } else {\n item.click();\n }\n}\n\nexport const TreeRoot = React.forwardRef<HTMLUListElement, TreeRootProps>(\n ({ selectedId, onSelect, className, children }, ref) => {\n const rootRef = React.useRef<HTMLUListElement | null>(null);\n\n const handleRootRef = React.useCallback(\n (node: HTMLUListElement | null) => {\n rootRef.current = node;\n assignRef(ref, node);\n },\n [ref],\n );\n\n const focusItem = React.useCallback((item: HTMLElement, options?: { focus?: boolean }) => {\n const root = rootRef.current;\n if (!root) return;\n focusTreeItem(root, item, options);\n }, []);\n\n const handleKeyDown = React.useCallback((event: React.KeyboardEvent<HTMLUListElement>) => {\n if (event.defaultPrevented || isEditableTarget(event.target)) return;\n\n const root = rootRef.current;\n if (!root) return;\n\n const items = getTreeItems(root);\n const currentItem =\n getClosestTreeItem(root, event.target) ??\n getActiveTreeItem(root, items) ??\n items.find(item => item.tabIndex === 0);\n if (!currentItem) return;\n\n const currentIndex = items.indexOf(currentItem);\n if (currentIndex < 0) return;\n\n let nextItem: HTMLElement | null = null;\n let handled = true;\n\n switch (event.key) {\n case 'ArrowDown':\n nextItem = items[Math.min(currentIndex + 1, items.length - 1)] ?? null;\n break;\n case 'ArrowUp':\n nextItem = items[Math.max(currentIndex - 1, 0)] ?? null;\n break;\n case 'Home':\n nextItem = items[0] ?? null;\n break;\n case 'End':\n nextItem = items[items.length - 1] ?? null;\n break;\n case 'ArrowRight': {\n const trigger = getFolderTrigger(currentItem);\n if (trigger && currentItem.getAttribute('aria-expanded') !== 'true') {\n trigger.click();\n nextItem = currentItem;\n } else {\n nextItem = items[Math.min(currentIndex + 1, items.length - 1)] ?? null;\n }\n break;\n }\n case 'ArrowLeft': {\n const trigger = getFolderTrigger(currentItem);\n if (trigger && currentItem.getAttribute('aria-expanded') === 'true') {\n trigger.click();\n nextItem = currentItem;\n } else {\n nextItem = getParentTreeItem(currentItem);\n }\n break;\n }\n case 'Enter':\n case ' ':\n case 'Spacebar':\n activateTreeItem(currentItem);\n nextItem = currentItem;\n break;\n default:\n handled = false;\n }\n\n if (!handled) return;\n\n event.preventDefault();\n event.stopPropagation();\n\n if (nextItem) {\n focusTreeItem(root, nextItem);\n }\n }, []);\n\n useIsomorphicLayoutEffect(() => {\n const root = rootRef.current;\n if (!root) return;\n syncTreeTabStops(root, selectedId);\n }, [children, selectedId]);\n\n React.useEffect(() => {\n const root = rootRef.current;\n if (!root || typeof MutationObserver === 'undefined') return;\n\n const observer = new MutationObserver(() => {\n syncTreeTabStops(root, selectedId);\n });\n observer.observe(root, { childList: true, subtree: true });\n\n return () => {\n observer.disconnect();\n };\n }, [selectedId]);\n\n const contextValue = React.useMemo(() => ({ selectedId, onSelect, focusItem }), [selectedId, onSelect, focusItem]);\n\n return (\n <TreeProvider value={contextValue}>\n <TreeDepthProvider depth={0}>\n <ul\n ref={handleRootRef}\n role=\"tree\"\n className={cn('flex flex-col text-caption', className)}\n onKeyDown={handleKeyDown}\n >\n {children}\n </ul>\n </TreeDepthProvider>\n </TreeProvider>\n );\n },\n);\nTreeRoot.displayName = 'Tree';\n","import { TreeFile } from './tree-file';\nimport { TreeFolder } from './tree-folder';\nimport { TreeFolderContent } from './tree-folder-content';\nimport { TreeFolderTrigger } from './tree-folder-trigger';\nimport { TreeIcon } from './tree-icon';\nimport { TreeInput } from './tree-input';\nimport { TreeLabel } from './tree-label';\nimport { TreeRoot } from './tree-root';\n\nexport const Tree = Object.assign(TreeRoot, {\n Folder: TreeFolder,\n FolderTrigger: TreeFolderTrigger,\n FolderContent: TreeFolderContent,\n File: TreeFile,\n Icon: TreeIcon,\n Label: TreeLabel,\n Input: TreeInput,\n});\n"],"names":["React","jsx","cn","transitions","Collapsible","CollapsibleContent","jsxs","CollapsibleTrigger","DisclosureChevron","Folder","File","passwordManagerOptOutProps","useIsomorphicLayoutEffect"],"mappings":"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"}
@@ -17,7 +17,7 @@ const lucideReact = require('lucide-react');
17
17
  const domains_workflows_workflow_useWorkflowGraphNodes = require('./domains/workflows/workflow/use-workflow-graph-nodes.cjs.js');
18
18
  const domains_workflows_workflow_workflowStepNodeUtils = require('./domains/workflows/workflow/workflow-step-node-utils.cjs.js');
19
19
  const types = require('./types-1cBe2TOn.cjs');
20
- const workflowConditionCard = require('./workflow-condition-card-Dy-0c_PT.cjs');
20
+ const workflowConditionCard = require('./workflow-condition-card-BF0PmJDV.cjs');
21
21
  const domains_workflows_workflow_workflowGraphBoundary = require('./domains/workflows/workflow/workflow-graph-boundary.cjs.js');
22
22
  const domains_workflows_workflow_workflowGraphGroups = require('./domains/workflows/workflow/workflow-graph-groups.cjs.js');
23
23
  const domains_workflows_workflow_workflowIterationScopes = require('./domains/workflows/workflow/workflow-iteration-scopes.cjs.js');
@@ -299,4 +299,4 @@ exports.WorkflowBodyGraph = WorkflowBodyGraph;
299
299
  exports.WorkflowGraphNode = WorkflowGraphNode;
300
300
  exports.WorkflowNestedGraph = WorkflowNestedGraph;
301
301
  exports.useWorkflowGraphRuntime = useWorkflowGraphRuntime;
302
- //# sourceMappingURL=use-workflow-graph-runtime-FHoQYtWa.cjs.map
302
+ //# sourceMappingURL=use-workflow-graph-runtime-B_ihs9Ev.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-workflow-graph-runtime-FHoQYtWa.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-B_ihs9Ev.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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"}
@@ -15,7 +15,7 @@ import { Repeat2 } from 'lucide-react';
15
15
  import { useWorkflowGraphNodes } from './domains/workflows/workflow/use-workflow-graph-nodes.es.js';
16
16
  import { WORKFLOW_STEP_NODE_TYPE } from './domains/workflows/workflow/workflow-step-node-utils.es.js';
17
17
  import { W as WORKFLOW_BOUNDARY_NODE_TYPE, a as WORKFLOW_DATA_EDGE_TYPE } from './types-CvneO3z0.js';
18
- import { e as WorkflowGraphCanvas, f as WorkflowNodeFrame, c as WorkflowConditionCard, g as WorkflowStepCardView, W as WorkflowBoundaryNode } from './workflow-condition-card-D30tufXt.js';
18
+ import { e as WorkflowGraphCanvas, f as WorkflowNodeFrame, c as WorkflowConditionCard, g as WorkflowStepCardView, W as WorkflowBoundaryNode } from './workflow-condition-card-BVnfl6Zi.js';
19
19
  import { WorkflowGraphBoundary } from './domains/workflows/workflow/workflow-graph-boundary.es.js';
20
20
  import { getWorkflowGraphGroups } from './domains/workflows/workflow/workflow-graph-groups.es.js';
21
21
  import { getWorkflowIterationScopes } from './domains/workflows/workflow/workflow-iteration-scopes.es.js';
@@ -294,4 +294,4 @@ const useWorkflowGraphRuntime = ({
294
294
  };
295
295
 
296
296
  export { WorkflowNestedGraph as W, WorkflowBodyGraph as a, WorkflowGraphNode as b, useWorkflowGraphRuntime as u };
297
- //# sourceMappingURL=use-workflow-graph-runtime-XT_aoo-Z.js.map
297
+ //# sourceMappingURL=use-workflow-graph-runtime-OyDXm_6V.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-workflow-graph-runtime-XT_aoo-Z.js","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":["isHovered"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAqBO,SAAS,oBAAoB,KAAA,EAAiC;AACnE,EAAA,MAAM,SAAA,GAAY,OAAA;AAAA,IAChB,MAAM,GAAG,KAAA,CAAM,YAAY,IAAI,IAAA,CAAK,SAAA,CAAU,KAAA,CAAM,SAAS,CAAC,CAAA,CAAA;AAAA,IAC9D,CAAC,KAAA,CAAM,YAAA,EAAc,KAAA,CAAM,SAAS;AAAA,GACtC;AACA,EAAA,uBACE,GAAA,CAAC,qBAAA,EAAA,EAAsC,SAAA,EAAW,KAAA,CAAM,SAAA,EACtD,8BAAC,0BAAA,EAAA,EAA4B,GAAG,KAAA,EAAO,CAAA,EAAA,EADb,SAE5B,CAAA;AAEJ;AAEA,SAAS,0BAAA,CAA2B;AAAA,EAClC,SAAA;AAAA,EACA,YAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,EAA6B;AAC3B,EAAA,MAAM,EAAE,KAAA,EAAO,KAAA,EAAO,aAAA,EAAc,GAAI,sBAAsB,SAAS,CAAA;AACvE,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,aAAA,EAAc;AAChC,EAAA,MAAM,aAAa,0BAAA,CAA2B,MAAA,CAAO,IAAA,CAAK,KAAK,GAAG,YAAY,CAAA;AAC9E,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAI,QAAA,EAAiB;AACnE,EAAA,MAAM,eAAA,GAAkB,WAAW,IAAA,CAAK,CAAA,SAAA,KAAa,UAAU,KAAA,KAAU,iBAAiB,CAAA,IAAK,UAAA,CAAW,CAAC,CAAA;AAE3G,EAAA,MAAM,EAAE,SAAA,EAAW,SAAA,EAAW,WAAA,KAAgB,uBAAA,CAAwB;AAAA,IACpE,KAAA;AAAA,IACA,YAAA,EAAc,iBAAiB,KAAA,IAAS,YAAA;AAAA,IACxC;AAAA,GACD,CAAA;AAED,EAAA,MAAM,YAAA,GAAe,OAAA;AAAA,IACnB,MACE,KAAA,CAAM,GAAA,CAAI,CAAA,IAAA,KAAQ;AAChB,MAAA,IAAI,CAAC,SAAA,IAAa,IAAA,CAAK,IAAA,KAAS,6BAA6B,OAAO,IAAA;AACpE,MAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,IAAA,CAAK,YAAA,KAAiB,UAAU,WAAA,GAAc,aAAA;AACjE,MAAA,OAAO,EAAE,GAAG,IAAA,EAAM,IAAA,EAAM,EAAE,GAAG,IAAA,CAAK,IAAA,EAAM,KAAA,EAAM,EAAE;AAAA,IAClD,CAAC,CAAA;AAAA,IACH,CAAC,OAAO,SAAS;AAAA,GACnB;AACA,EAAA,MAAM,MAAA,GAAS,QAAQ,MAAM,sBAAA,CAAuB,KAAK,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEnE,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kCAAA,EACZ,QAAA,EAAA;AAAA,IAAA,eAAA,oBACC,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uEAAA,EACb,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,OAAI,EAAA,EAAG,MAAA,EAAO,SAAQ,SAAA,EAAU,IAAA,EAAK,SAAQ,QAAA,EAAA,WAAA,EAE9C,CAAA;AAAA,sBACA,IAAA,CAAC,UAAO,KAAA,EAAO,eAAA,CAAgB,OAAO,aAAA,EAAe,oBAAA,EAAsB,OAAO,UAAA,EAChF,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,aAAA,EAAA,EAAc,cAAW,WAAA,EAAY,IAAA,EAAK,MAAK,SAAA,EAAU,MAAA,EACxD,QAAA,kBAAA,GAAA,CAAC,WAAA,EAAA,EAAY,CAAA,EACf,CAAA;AAAA,wBACA,GAAA,CAAC,aAAA,EAAA,EACE,QAAA,EAAA,UAAA,CAAW,GAAA,CAAI,+BACd,GAAA,CAAC,UAAA,EAAA,EAAiC,KAAA,EAAO,SAAA,CAAU,OAChD,QAAA,EAAA,SAAA,CAAU,KAAA,EAAA,EADI,SAAA,CAAU,KAE3B,CACD,CAAA,EACH;AAAA,OAAA,EACF;AAAA,KAAA,EACF,CAAA;AAAA,oBAEF,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACb,QAAA,kBAAA,GAAA;AAAA,MAAC,mBAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,WAAW,QAAA,GAAW,QAAA;AAAA,QAC/B,MAAA;AAAA,QACA,KAAA,EAAO,YAAA;AAAA,QACP,KAAA,EAAO,WAAA;AAAA,QACP,SAAA;AAAA,QACA,SAAA;AAAA,QACA;AAAA;AAAA,KACF,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;AC3FO,SAAS,iBAAA,CAAkB;AAAA,EAChC,SAAA;AAAA,EACA,YAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAKG;AACD,EAAA,4BACG,SAAA,EAAA,EAAQ,YAAA,EAAY,YAAY,WAAA,GAAc,iBAAA,EAAmB,WAAU,8BAAA,EACzE,QAAA,EAAA;AAAA,IAAA,SAAA,oBACC,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iEAAA,EACb,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,OAAA,EAAA,EAAQ,aAAA,EAAW,IAAA,EAAC,SAAA,EAAU,8CAAA,EAA+C,CAAA;AAAA,sBAC9E,GAAA,CAAC,GAAA,EAAA,EAAI,OAAA,EAAQ,MAAA,EAAO,QAAA,EAAA,sEAAA,EAAoE;AAAA,KAAA,EAC1F,CAAA;AAAA,oBAEF,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gCAAA,EACb,8BAAC,iBAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,MAAC,mBAAA;AAAA,MAAA;AAAA,QACC,SAAA;AAAA,QACA,QAAA,EAAQ,IAAA;AAAA,QACR,YAAA;AAAA,QACA,SAAA;AAAA,QACA;AAAA;AAAA,OAEJ,CAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;ACjBA,MAAM,gBAAA,GAAmB,CAAC,IAAA,KAAmF;AAC3G,EAAA,MAAM,UAAA,GAAa,IAAA,EAAM,MAAA,KAAW,QAAA,IAAY,MAAM,QAAA,KAAa,MAAA;AACnE,EAAA,MAAM,gBAAgB,IAAA,IAAQ,eAAA,CAAgB,IAAI,CAAA,GAAI,cAAc,IAAA,EAAM,MAAA;AAC1E,EAAA,OAAO;AAAA,IACL,aAAA,EAAe,aAAa,UAAA,GAAa,aAAA;AAAA,IACzC;AAAA,GACF;AACF,CAAA;AAEA,MAAM,mBAAmB,CAAC;AAAA,EACxB,IAAA;AAAA,EACA,kBAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,KAKM;AACJ,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,aAAA,EAAc;AAChC,EAAA,MAAM,EAAE,cAAA,EAAgB,iBAAA,EAAmB,WAAA,EAAa,cAAA,KAAmB,uBAAA,EAAwB;AACnG,EAAA,MAAM,EAAE,eAAA,EAAgB,GAAI,qBAAA,EAAsB;AAClD,EAAA,MAAM,iBAAiB,iBAAA,EAAkB;AACzC,EAAA,MAAM,EAAE,KAAA,EAAO,MAAA,EAAQ,WAAA,EAAY,GAAI,IAAA;AACvC,EAAA,MAAM,SAAA,GAAY,KAAK,SAAA,KAAc,MAAA,IAAU,KAAK,YAAA,GAAe,IAAA,CAAK,YAAA,CAAa,IAAA,EAAM,SAAA,GAAY,MAAA,CAAA;AACvG,EAAA,MAAM,SAAA,GACJ,KAAK,SAAA,KACJ,MAAA,IAAU,KAAK,YAAA,GAAe,IAAA,CAAK,YAAA,CAAa,IAAA,EAAM,kBAAA,GAAqB,MAAA,CAAA,KAC3E,KAAK,YAAA,CAAa,IAAA,KAAS,sBAAA,IAA0B,IAAA,CAAK,YAAA,CAAa,IAAA,CAAK,SAAS,UAAA,GAClF,IAAA,CAAK,YAAA,CAAa,IAAA,CAAK,kBAAA,GACvB,MAAA,CAAA;AACN,EAAA,MAAM,YAAY,kBAAA,GAAqB,CAAA,EAAG,kBAAkB,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,GAAK,KAAA;AAC1E,EAAA,MAAM,OAAA,GAAU,qBAAqB,CAAA,EAAG,kBAAkB,IAAI,MAAA,IAAU,KAAK,KAAK,MAAA,IAAU,KAAA;AAC5F,EAAA,MAAM,aAAa,cAAA,KAAmB,OAAA;AACtC,EAAA,MAAM,YAAY,cAAA,KAAmB,OAAA;AACrC,EAAA,MAAM,YAAY,WAAA,KAAgB,OAAA;AAClC,EAAA,MAAM,IAAA,GAAO,MAAM,OAAO,CAAA;AAC1B,EAAA,MAAM,EAAE,aAAA,EAAe,UAAA,EAAW,GAAI,iBAAiB,IAAI,CAAA;AAC3D,EAAA,MAAM,QAAA,GAAW,IAAA,GAAO,eAAA,CAAgB,IAAI,CAAA,GAAI,MAAA;AAEhD,EAAA,uBACE,GAAA;AAAA,IAAC,oBAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,IAAA,CAAK,UAAA,EAAY,KAAA,IAAS,KAAA;AAAA,MACjC,QAAA,EAAU,mBAAA,CAAoB,IAAA,CAAK,YAAY,CAAA;AAAA,MAC/C,QAAA,EAAU,MAAM,iBAAA,CAAkB,OAAO,CAAA;AAAA,MACzC,eAAe,CAAC,kBAAA;AAAA,MAChB,IAAA,EACE,WAAW,MAAA,mBACT,GAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACC,SAAA;AAAA,UACA,YAAA,EAAc,SAAA;AAAA,UACd,WAAW,IAAA,CAAK,SAAA;AAAA,UAChB;AAAA;AAAA,OACF,GACE,MAAA;AAAA,MAEN,WAAA,EAAa,WAAA,IAAe,IAAA,CAAK,UAAA,EAAY,WAAA;AAAA,MAC7C,aAAA;AAAA,MACA,oBAAA,EAAsB,IAAA,CAAK,YAAA,CAAa,IAAA,KAAS,sBAAA;AAAA,MACjD,OAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,eAAe,CAAAA,UAAAA,KAAa,cAAA,CAAeA,UAAAA,GAAY,UAAU,IAAI,CAAA;AAAA,MACrE,UAAU,IAAA,CAAK,QAAA;AAAA,MACf,MAAM,IAAA,CAAK,IAAA;AAAA,MACX,WAAW,IAAA,CAAK,SAAA;AAAA,MAChB,iBAAiB,IAAA,EAAM,eAAA;AAAA,MACvB,SAAA;AAAA,MACA,YAAY,IAAA,CAAK,UAAA;AAAA,MACjB,SAAA;AAAA,MACA,WAAW,QAAA,EAAU,KAAA;AAAA,MACrB,SAAS,QAAA,EAAU,GAAA;AAAA,MACnB,iBAAiB,QAAA,EAAU,eAAA;AAAA,MAC3B,SAAA,kBACE,GAAA;AAAA,QAAC,qBAAA;AAAA,QAAA;AAAA,UACC,QAAA,EAAU,KAAA;AAAA,UACV,MAAA;AAAA,UACA,YAAY,IAAA,EAAM,UAAA;AAAA,UAClB,KAAA,EAAO,UAAA,GAAa,MAAA,GAAY,IAAA,EAAM,KAAA;AAAA,UACtC,QAAA,EAAU,UAAA,GAAa,IAAA,EAAM,QAAA,GAAW,MAAA;AAAA,UACxC,SAAA;AAAA,UACA,iBAAA,EAAmB,SAAA,GAAY,MAAM,eAAA,CAAgB,EAAE,OAAO,QAAA,EAAU,SAAA,EAAW,SAAA,EAAW,CAAA,GAAI,MAAA;AAAA,UAClG,OAAA;AAAA,UACA,SAAA;AAAA,UACA;AAAA;AAAA;AACF;AAAA,GAEJ;AAEJ,CAAA;AAEA,MAAM,4BAA4B,CAAC;AAAA,EACjC,IAAA;AAAA,EACA,kBAAA;AAAA,EACA;AACF,CAAA,KAIM;AACJ,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,aAAA,EAAc;AAChC,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,UAAA,IAAc,EAAC;AACvC,EAAA,MAAM,cAAA,GACJ,IAAA,CAAK,cAAA,KAAmB,kBAAA,GAAqB,CAAA,EAAG,kBAAkB,CAAA,CAAA,EAAI,IAAA,CAAK,cAAc,CAAA,CAAA,GAAK,IAAA,CAAK,cAAA,CAAA;AACrG,EAAA,MAAM,YAAA,GAAe,cAAA,GAAiB,KAAA,CAAM,cAAc,CAAA,GAAI,MAAA;AAC9D,EAAA,MAAM,EAAE,aAAA,EAAe,qBAAA,EAAuB,UAAA,EAAW,GAAI,iBAAiB,YAAY,CAAA;AAE1F,EAAA,uBACE,GAAA;AAAA,IAAC,qBAAA;AAAA,IAAA;AAAA,MACC,UAAA;AAAA,MACA,qBAAA;AAAA,MACA,SAAA,kBACE,GAAA;AAAA,QAAC,qBAAA;AAAA,QAAA;AAAA,UACC,QAAA,EAAU,IAAA,CAAK,UAAA,IAAc,IAAA,CAAK,KAAA;AAAA,UAClC,WAAW,IAAA,CAAK,SAAA;AAAA,UAChB,QAAA,EAAU,UAAA,GAAa,YAAA,EAAc,QAAA,GAAW,MAAA;AAAA,UAChD;AAAA;AAAA;AACF;AAAA,GAEJ;AAEJ,CAAA;AAEO,SAAS,iBAAA,CAAkB;AAAA,EAChC,IAAA;AAAA,EACA,kBAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAAyD;AACvD,EAAA,MAAM,OAAA,GACJ,IAAA,CAAK,YAAA,CAAa,IAAA,KAAS,aAAA,uBACxB,yBAAA,EAAA,EAA0B,IAAA,EAAY,kBAAA,EAAwC,cAAA,EAAgC,CAAA,mBAE/G,GAAA;AAAA,IAAC,gBAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,kBAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA;AAAA,GACF;AAGJ,EAAA,uBACE,GAAA,CAAC,qBAAkB,gBAAA,EAAkB,IAAA,CAAK,kBAAkB,mBAAA,EAAqB,IAAA,CAAK,qBACnF,QAAA,EAAA,OAAA,EACH,CAAA;AAEJ;;AC1JA,MAAM,eAAA,GAAkB,CAAC,MAAA,EAA4B,YAAA,KACnD,MAAA,IAAU,eAAe,CAAA,EAAG,YAAY,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA,GAAK,MAAA;AAElD,MAAM,0BAA0B,CAAC;AAAA,EACtC,KAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,KAIM;AACJ,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,aAAA,EAAc;AAChC,EAAA,MAAM,WAAA,GAAc,WAAW,kBAAkB,CAAA;AACjD,EAAA,MAAM,iBAAA,GAAoB,YAAA,GACtB,KAAA,CAAM,YAAY,GAAG,MAAA,KAAW,SAAA,IAAa,uBAAA,CAAwB,KAAA,EAAO,YAAY,CAAA,CAAE,MAAA,KAAW,MAAA,GACrG,WAAA,CAAY,QAAQ,MAAA,KAAW,SAAA;AACnC,EAAA,MAAM,SAAA,GAAY,QAAQ,MAAM,cAAA,CAAe,KAAK,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAC9D,EAAA,MAAM,SAAA,GAAY,OAAA;AAAA,IAChB,OAAO;AAAA,MACL,CAAC,uBAAuB,GAAG,CAAC,KAAA,qBAC1B,GAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACC,kBAAA,EAAoB,YAAA;AAAA,UACnB,GAAG,KAAA;AAAA,UACJ,SAAA;AAAA,UACA;AAAA;AAAA,OACF;AAAA,MAEF,CAAC,2BAA2B,GAAG,CAAC,0BAC9B,GAAA,CAAC,oBAAA,EAAA,EAAsB,GAAG,KAAA,EAAO;AAAA,KAErC,CAAA;AAAA,IACA,CAAC,SAAA,EAAW,YAAA,EAAc,cAAc;AAAA,GAC1C;AACA,EAAA,MAAM,SAAA,GAAY,OAAA;AAAA,IAChB,OAAO;AAAA,MACL,CAAC,uBAAuB,GAAG,CAAC,KAAA,yBACzB,gBAAA,EAAA,EAAiB,kBAAA,EAAoB,YAAA,EAAe,GAAG,KAAA,EAAO;AAAA,KAEnE,CAAA;AAAA,IACA,CAAC,YAAY;AAAA,GACf;AACA,EAAA,MAAM,WAAA,GAAc,OAAA;AAAA,IAClB,MACE,qBAAA,CAAsB,KAAK,CAAA,CAAE,IAAI,CAAA,IAAA,KAAQ;AACvC,MAAA,MAAM,cAAA,GAAiB,eAAA,CAAgB,IAAA,CAAK,IAAA,EAAM,gBAAgB,YAAY,CAAA;AAC9E,MAAA,MAAM,UAAA,GAAa,eAAA,CAAgB,IAAA,CAAK,IAAA,EAAM,YAAY,YAAY,CAAA;AACtE,MAAA,MAAM,qBAAA,GAAwB,KAAA,CAAM,cAAA,IAAkB,EAAE,GAAG,MAAA,KAAW,SAAA;AACtE,MAAA,MAAM,cAAA,GAAiB,KAAA,CAAM,UAAA,IAAc,EAAE,CAAA,EAAG,MAAA;AAChD,MAAA,IAAI,cAAA,GAAiB,yBAAyB,cAAA,KAAmB,SAAA;AACjE,MAAA,IAAI,IAAA,CAAK,IAAA,EAAM,eAAA,KAAoB,iBAAA,EAAmB;AACpD,QAAA,cAAA,GAAiB,iBAAA;AAAA,MACnB,WAAW,IAAA,CAAK,IAAA,EAAM,oBAAoB,gBAAA,IAAoB,IAAA,CAAK,MAAM,aAAA,EAAe;AACtF,QAAA,cAAA,GAAiB,OAAA,CAAQ,cAAc,CAAA,IAAK,cAAA,KAAmB,SAAA;AAAA,MACjE;AAEA,MAAA,OAAO;AAAA,QACL,GAAG,IAAA;AAAA,QACH,IAAA,EAAM,uBAAA;AAAA,QACN,QAAA,EAAU,cAAA,GAAiB,KAAA,GAAQ,IAAA,CAAK,QAAA;AAAA,QACxC,IAAA,EAAM;AAAA,UACJ,GAAG,IAAA,CAAK,IAAA;AAAA,UACR,UAAA,EAAY,iBAAiB,SAAA,GAAY;AAAA,SAC3C;AAAA,QACA,KAAA,EAAO;AAAA,UACL,GAAG,IAAA,CAAK,KAAA;AAAA,UACR,MAAA,EAAQ,iBAAiB,0BAAA,GAA6B,yBAAA;AAAA,UACtD,eAAA,EAAiB,cAAA,GAAiB,MAAA,GAAS,IAAA,CAAK,KAAA,EAAO;AAAA;AACzD,OACF;AAAA,IACF,CAAC,CAAA;AAAA,IACH,CAAC,KAAA,EAAO,KAAA,EAAO,YAAA,EAAc,iBAAiB;AAAA,GAChD;AAEA,EAAA,OAAO,EAAE,SAAA,EAAW,SAAA,EAAW,SAAA,EAAW,WAAA,EAAY;AACxD;;;;"}
1
+ {"version":3,"file":"use-workflow-graph-runtime-OyDXm_6V.js","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":["isHovered"],"mappings":"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"}
@@ -1,15 +1,16 @@
1
1
  'use strict';
2
2
 
3
3
  const jsxRuntime = require('react/jsx-runtime');
4
- const lucideReact = require('lucide-react');
5
4
  const React = require('react');
6
5
  const utils_cn = require('./cn-TqD01zH-.cjs');
7
6
  const Txt = require('./Txt-DXjXpX9r.cjs');
8
7
  const utils_dateFormat = require('./utils/date-format.cjs.js');
9
8
  const utils_duration = require('./utils/duration.cjs.js');
9
+ const lucideReact = require('lucide-react');
10
10
  const Badge = require('./Badge-BF6FbLH_.cjs');
11
11
  const activity = require('./activity-D92LbV6O.cjs');
12
- const collapsible = require('./collapsible-BzlQAuym.cjs');
12
+ const collapsible = require('./collapsible-C6BZhVRG.cjs');
13
+ const disclosureChevron = require('./disclosure-chevron-B_gmYFR5.cjs');
13
14
  const shimmer = require('./shimmer-Dyfey0dA.cjs');
14
15
  const primitives_raisedSurface = require('./primitives/raised-surface.cjs.js');
15
16
  const react = require('@xyflow/react');
@@ -613,7 +614,7 @@ function WorkflowStepCardView(props) {
613
614
  " ",
614
615
  isForEach ? "loop" : "workflow"
615
616
  ] }),
616
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { "aria-hidden": true, size: 14 })
617
+ /* @__PURE__ */ jsxRuntime.jsx(disclosureChevron.DisclosureChevron, { direction: "right", className: "size-3.5" })
617
618
  ]
618
619
  }
619
620
  ),
@@ -906,4 +907,4 @@ exports.getConditionIconAndColor = getConditionIconAndColor;
906
907
  exports.getConditionIndicator = getConditionIndicator;
907
908
  exports.getNodeBadgeInfo = getNodeBadgeInfo;
908
909
  exports.getNodeIndicators = getNodeIndicators;
909
- //# sourceMappingURL=workflow-condition-card-Dy-0c_PT.cjs.map
910
+ //# sourceMappingURL=workflow-condition-card-BF0PmJDV.cjs.map