@mastra/playground-ui 63.0.0-alpha.1 → 63.0.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (388) hide show
  1. package/dist/Avatar-C2Sz53u5.js +190 -0
  2. package/dist/Avatar-C2Sz53u5.js.map +1 -0
  3. package/dist/Avatar-D6ybWljK.cjs +192 -0
  4. package/dist/Avatar-D6ybWljK.cjs.map +1 -0
  5. package/dist/{ask-user-card-g8cqh8KI.cjs → ask-user-card-40a18Qea.cjs} +2 -1
  6. package/dist/{ask-user-card-g8cqh8KI.cjs.map → ask-user-card-40a18Qea.cjs.map} +1 -1
  7. package/dist/{ask-user-card-CwKfl6M2.js → ask-user-card-xR8YiiQa.js} +6 -5
  8. package/dist/{ask-user-card-CwKfl6M2.js.map → ask-user-card-xR8YiiQa.js.map} +1 -1
  9. package/dist/{checkbox-B3tvJLCl.js → checkbox-mmR3rD2j.js} +2 -2
  10. package/dist/{checkbox-B3tvJLCl.js.map → checkbox-mmR3rD2j.js.map} +1 -1
  11. package/dist/{code-block-9sT-CaoF.js → code-block-BQZUoOfS.js} +2 -2
  12. package/dist/{code-block-9sT-CaoF.js.map → code-block-BQZUoOfS.js.map} +1 -1
  13. package/dist/{code-editor-DgfDaPAD.js → code-editor-D69saH4C.js} +2 -2
  14. package/dist/{code-editor-DgfDaPAD.js.map → code-editor-D69saH4C.js.map} +1 -1
  15. package/dist/{combobox-DJu0ggNa.js → combobox-DDUIREaG.js} +2 -2
  16. package/dist/{combobox-DJu0ggNa.js.map → combobox-DDUIREaG.js.map} +1 -1
  17. package/dist/components/Avatar.cjs.js +1 -1
  18. package/dist/components/Avatar.es.js +1 -1
  19. package/dist/components/Checkbox.es.js +1 -1
  20. package/dist/components/CodeBlock.es.js +1 -1
  21. package/dist/components/CodeEditor.es.js +1 -1
  22. package/dist/components/Combobox.es.js +1 -1
  23. package/dist/components/Comment.cjs.js +1 -0
  24. package/dist/components/Comment.cjs.js.map +1 -1
  25. package/dist/components/Comment.es.js +3 -2
  26. package/dist/components/Comment.es.js.map +1 -1
  27. package/dist/components/DataCodeSection.cjs.js +1 -1
  28. package/dist/components/DataCodeSection.es.js +1 -1
  29. package/dist/components/DataList.cjs.js +17 -15
  30. package/dist/components/DataList.cjs.js.map +1 -1
  31. package/dist/components/DataList.es.js +5 -4
  32. package/dist/components/DataList.es.js.map +1 -1
  33. package/dist/components/DataPanel.cjs.js +1 -1
  34. package/dist/components/DataPanel.es.js +1 -1
  35. package/dist/components/DateTimePicker.cjs.js +1 -0
  36. package/dist/components/DateTimePicker.cjs.js.map +1 -1
  37. package/dist/components/DateTimePicker.es.js +4 -3
  38. package/dist/components/DateTimePicker.es.js.map +1 -1
  39. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  40. package/dist/components/DateTimeRangePicker.es.js +1 -1
  41. package/dist/components/EnvironmentVariablesEditor.cjs.js +2 -1
  42. package/dist/components/EnvironmentVariablesEditor.cjs.js.map +1 -1
  43. package/dist/components/EnvironmentVariablesEditor.es.js +4 -3
  44. package/dist/components/EnvironmentVariablesEditor.es.js.map +1 -1
  45. package/dist/components/Field.es.js +2 -2
  46. package/dist/components/FormFieldBlocks.es.js +2 -2
  47. package/dist/components/Input.es.js +1 -1
  48. package/dist/components/InputGroup.es.js +1 -1
  49. package/dist/components/InputNumber.es.js +1 -1
  50. package/dist/components/JSONSchemaForm.cjs.js +1 -0
  51. package/dist/components/JSONSchemaForm.cjs.js.map +1 -1
  52. package/dist/components/JSONSchemaForm.es.js +5 -4
  53. package/dist/components/JSONSchemaForm.es.js.map +1 -1
  54. package/dist/components/ListSearch.cjs.js +1 -1
  55. package/dist/components/ListSearch.es.js +1 -1
  56. package/dist/components/LogsDataList.cjs.js +2 -5
  57. package/dist/components/LogsDataList.cjs.js.map +1 -1
  58. package/dist/components/LogsDataList.es.js +2 -5
  59. package/dist/components/LogsDataList.es.js.map +1 -1
  60. package/dist/components/MarkdownRenderer.es.js +1 -1
  61. package/dist/components/PropertyFilter.cjs.js +1 -0
  62. package/dist/components/PropertyFilter.cjs.js.map +1 -1
  63. package/dist/components/PropertyFilter.es.js +5 -4
  64. package/dist/components/PropertyFilter.es.js.map +1 -1
  65. package/dist/components/RadioGroup.es.js +1 -1
  66. package/dist/components/RuleBuilder.es.js +2 -2
  67. package/dist/components/SearchInput.cjs.js +1 -1
  68. package/dist/components/SearchInput.es.js +1 -1
  69. package/dist/components/Section.cjs.js +1 -1
  70. package/dist/components/Section.es.js +1 -1
  71. package/dist/components/SegmentedControl.es.js +1 -1
  72. package/dist/components/Select.es.js +1 -1
  73. package/dist/components/SideDialog.cjs.js +1 -1
  74. package/dist/components/SideDialog.es.js +1 -1
  75. package/dist/components/Sidebar.es.js +1 -1
  76. package/dist/components/Switch.es.js +1 -1
  77. package/dist/components/ThemeToggle.es.js +1 -1
  78. package/dist/components/Workflow.es.js +3 -3
  79. package/dist/components/ai/activity.es.js +1 -1
  80. package/dist/components/ai/ask-user.cjs.js +1 -1
  81. package/dist/components/ai/ask-user.es.js +1 -1
  82. package/dist/components/ai/plan.es.js +1 -1
  83. package/dist/components/ai/tool-approval.es.js +1 -1
  84. package/dist/components/ai/tool-call.es.js +1 -1
  85. package/dist/{data-code-section-BTRNa1SD.cjs → data-code-section-B2Ea7FwM.cjs} +2 -2
  86. package/dist/{data-code-section-BTRNa1SD.cjs.map → data-code-section-B2Ea7FwM.cjs.map} +1 -1
  87. package/dist/{data-code-section-BGLC-hxm.js → data-code-section-DrJYy1dR.js} +2 -2
  88. package/dist/{data-code-section-BGLC-hxm.js.map → data-code-section-DrJYy1dR.js.map} +1 -1
  89. package/dist/data-list-DkVOwk8l.cjs +142 -0
  90. package/dist/data-list-DkVOwk8l.cjs.map +1 -0
  91. package/dist/data-list-Dv2lP-dU.js +138 -0
  92. package/dist/data-list-Dv2lP-dU.js.map +1 -0
  93. package/dist/{data-list-skeleton-CJFwZBlW.js → data-list-skeleton-BmsDYJrA.js} +2 -2
  94. package/dist/{data-list-skeleton-CJFwZBlW.js.map → data-list-skeleton-BmsDYJrA.js.map} +1 -1
  95. package/dist/{data-list-skeleton-maUWF7Ri.cjs → data-list-skeleton-CfVsXhx1.cjs} +6 -6
  96. package/dist/{data-list-skeleton-maUWF7Ri.cjs.map → data-list-skeleton-CfVsXhx1.cjs.map} +1 -1
  97. package/dist/data-list-spacer-DEMquKp9.js +209 -0
  98. package/dist/data-list-spacer-DEMquKp9.js.map +1 -0
  99. package/dist/data-list-spacer-pXP8xDlg.cjs +218 -0
  100. package/dist/data-list-spacer-pXP8xDlg.cjs.map +1 -0
  101. package/dist/{data-list-DDGpWucH.js → data-list-top-BJCC62oy.js} +6 -333
  102. package/dist/data-list-top-BJCC62oy.js.map +1 -0
  103. package/dist/{data-list-_yDPF5wR.cjs → data-list-top-Ds-NWyPO.cjs} +13 -339
  104. package/dist/data-list-top-Ds-NWyPO.cjs.map +1 -0
  105. package/dist/{data-panel-DfVGx0Ea.js → data-panel-COU5dbUJ.js} +2 -2
  106. package/dist/{data-panel-DfVGx0Ea.js.map → data-panel-COU5dbUJ.js.map} +1 -1
  107. package/dist/{data-panel-Dhg7s3fD.cjs → data-panel-CTqb-0qN.cjs} +2 -2
  108. package/dist/{data-panel-Dhg7s3fD.cjs.map → data-panel-CTqb-0qN.cjs.map} +1 -1
  109. package/dist/{date-time-range-picker-BNaXCa7r.cjs → date-time-range-picker-BvRPfy1i.cjs} +2 -1
  110. package/dist/{date-time-range-picker-BNaXCa7r.cjs.map → date-time-range-picker-BvRPfy1i.cjs.map} +1 -1
  111. package/dist/{date-time-range-picker-C5x_33hB.js → date-time-range-picker-CIfaXUuy.js} +4 -3
  112. package/dist/{date-time-range-picker-C5x_33hB.js.map → date-time-range-picker-CIfaXUuy.js.map} +1 -1
  113. package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +1 -1
  114. package/dist/domains/chat/messages/dataset-save-action.cjs.js +1 -0
  115. package/dist/domains/chat/messages/dataset-save-action.cjs.js.map +1 -1
  116. package/dist/domains/chat/messages/dataset-save-action.es.js +4 -3
  117. package/dist/domains/chat/messages/dataset-save-action.es.js.map +1 -1
  118. package/dist/domains/chat/messages/message-row.cjs.js +1 -0
  119. package/dist/domains/chat/messages/message-row.cjs.js.map +1 -1
  120. package/dist/domains/chat/messages/message-row.es.js +2 -1
  121. package/dist/domains/chat/messages/message-row.es.js.map +1 -1
  122. package/dist/domains/chat/messages/renderers/message-text.es.js +1 -1
  123. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
  124. package/dist/domains/chat/messages/skill-message.es.js +1 -1
  125. package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
  126. package/dist/domains/chat/tools/badges/agent-badge.es.js +2 -2
  127. package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
  128. package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
  129. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js +1 -1
  130. package/dist/domains/chat/tools/badges/code-mode-badge.es.js +2 -2
  131. package/dist/domains/chat/tools/badges/file-tree-badge.es.js +1 -1
  132. package/dist/domains/chat/tools/badges/observation-marker-details.es.js +1 -1
  133. package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
  134. package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
  135. package/dist/domains/chat/tools/badges/tool-badge.es.js +2 -2
  136. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +2 -2
  137. package/dist/domains/chat/tools/badges/workflow-badge.es.js +3 -3
  138. package/dist/domains/chat/tools/submit-plan-tool.es.js +1 -1
  139. package/dist/domains/chat/tools/tool-card.es.js +1 -1
  140. package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js +2 -1
  141. package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js.map +1 -1
  142. package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js +5 -4
  143. package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js.map +1 -1
  144. package/dist/domains/logs/components/log-data-panel.cjs.js +1 -1
  145. package/dist/domains/logs/components/log-data-panel.es.js +1 -1
  146. package/dist/domains/logs/components/logs-list-view.cjs.js +2 -3
  147. package/dist/domains/logs/components/logs-list-view.cjs.js.map +1 -1
  148. package/dist/domains/logs/components/logs-list-view.es.js +2 -3
  149. package/dist/domains/logs/components/logs-list-view.es.js.map +1 -1
  150. package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
  151. package/dist/domains/memory/components/observation-detail-view.cjs.js +1 -0
  152. package/dist/domains/memory/components/observation-detail-view.cjs.js.map +1 -1
  153. package/dist/domains/memory/components/observation-detail-view.es.js +3 -2
  154. package/dist/domains/memory/components/observation-detail-view.es.js.map +1 -1
  155. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  156. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  157. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js +2 -1
  158. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js.map +1 -1
  159. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js +5 -4
  160. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js.map +1 -1
  161. package/dist/domains/request-context/components/request-context-label.cjs.js +1 -0
  162. package/dist/domains/request-context/components/request-context-label.cjs.js.map +1 -1
  163. package/dist/domains/request-context/components/request-context-label.es.js +2 -1
  164. package/dist/domains/request-context/components/request-context-label.es.js.map +1 -1
  165. package/dist/domains/scores/components/score-data-panel.cjs.js +1 -1
  166. package/dist/domains/scores/components/score-data-panel.es.js +1 -1
  167. package/dist/domains/scores/components/span-scoring.es.js +1 -1
  168. package/dist/domains/scores/components/trace-scores-tab.cjs.js +1 -2
  169. package/dist/domains/scores/components/trace-scores-tab.cjs.js.map +1 -1
  170. package/dist/domains/scores/components/trace-scores-tab.es.js +1 -2
  171. package/dist/domains/scores/components/trace-scores-tab.es.js.map +1 -1
  172. package/dist/domains/traces/components/feedback-thread.cjs.js +1 -1
  173. package/dist/domains/traces/components/feedback-thread.es.js +2 -2
  174. package/dist/domains/traces/components/span-data-panel-view.cjs.js +2 -1
  175. package/dist/domains/traces/components/span-data-panel-view.cjs.js.map +1 -1
  176. package/dist/domains/traces/components/span-data-panel-view.es.js +2 -1
  177. package/dist/domains/traces/components/span-data-panel-view.es.js.map +1 -1
  178. package/dist/domains/traces/components/span-details-view.cjs.js +1 -0
  179. package/dist/domains/traces/components/span-details-view.cjs.js.map +1 -1
  180. package/dist/domains/traces/components/span-details-view.es.js +1 -0
  181. package/dist/domains/traces/components/span-details-view.es.js.map +1 -1
  182. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +1 -1
  183. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
  184. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +2 -2
  185. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +2 -2
  186. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +2 -2
  187. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
  188. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +1 -1
  189. package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +1 -1
  190. package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
  191. package/dist/domains/traces/components/span-summary-description.es.js +1 -1
  192. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
  193. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
  194. package/dist/domains/traces/components/thread-view-by-trace.cjs.js +2 -0
  195. package/dist/domains/traces/components/thread-view-by-trace.cjs.js.map +1 -1
  196. package/dist/domains/traces/components/thread-view-by-trace.es.js +2 -0
  197. package/dist/domains/traces/components/thread-view-by-trace.es.js.map +1 -1
  198. package/dist/domains/traces/components/trace-columns-menu.cjs.js +1 -0
  199. package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
  200. package/dist/domains/traces/components/trace-columns-menu.es.js +3 -2
  201. package/dist/domains/traces/components/trace-columns-menu.es.js.map +1 -1
  202. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +2 -2
  203. package/dist/domains/traces/components/trace-data-panel-view.es.js +2 -2
  204. package/dist/domains/traces/components/trace-data-panel.cjs.js +3 -2
  205. package/dist/domains/traces/components/trace-data-panel.cjs.js.map +1 -1
  206. package/dist/domains/traces/components/trace-data-panel.es.js +3 -2
  207. package/dist/domains/traces/components/trace-data-panel.es.js.map +1 -1
  208. package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
  209. package/dist/domains/traces/components/trace-id-button.es.js +1 -1
  210. package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
  211. package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
  212. package/dist/domains/traces/components/trace-thread-panel.cjs.js +1 -1
  213. package/dist/domains/traces/components/trace-thread-panel.es.js +1 -1
  214. package/dist/domains/traces/components/trace-time-range-chip.cjs.js +1 -1
  215. package/dist/domains/traces/components/trace-time-range-chip.es.js +1 -1
  216. package/dist/domains/traces/components/traces-list-view.cjs.js +5 -4
  217. package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
  218. package/dist/domains/traces/components/traces-list-view.es.js +4 -3
  219. package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
  220. package/dist/domains/traces/components/traces-page-skeleton.cjs.js +1 -4
  221. package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
  222. package/dist/domains/traces/components/traces-page-skeleton.es.js +1 -4
  223. package/dist/domains/traces/components/traces-page-skeleton.es.js.map +1 -1
  224. package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
  225. package/dist/domains/workflows/components/workflow-step-detail.es.js +2 -2
  226. package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +2 -2
  227. package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +2 -2
  228. package/dist/domains/workflows/workflow/data/workflow-data-button.es.js +1 -1
  229. package/dist/domains/workflows/workflow/data/workflow-data-inspector.es.js +1 -1
  230. package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js +1 -0
  231. package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js.map +1 -1
  232. package/dist/domains/workflows/workflow/input/workflow-json-input.es.js +3 -2
  233. package/dist/domains/workflows/workflow/input/workflow-json-input.es.js.map +1 -1
  234. package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js +1 -0
  235. package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js.map +1 -1
  236. package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js +3 -2
  237. package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js.map +1 -1
  238. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +1 -1
  239. package/dist/domains/workflows/workflow/workflow-body-graph.es.js +1 -1
  240. package/dist/domains/workflows/workflow/workflow-data-edge.es.js +1 -1
  241. package/dist/domains/workflows/workflow/workflow-debug-mode-switch.cjs.js +1 -0
  242. package/dist/domains/workflows/workflow/workflow-debug-mode-switch.cjs.js.map +1 -1
  243. package/dist/domains/workflows/workflow/workflow-debug-mode-switch.es.js +3 -2
  244. package/dist/domains/workflows/workflow/workflow-debug-mode-switch.es.js.map +1 -1
  245. package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +1 -1
  246. package/dist/domains/workflows/workflow/workflow-graph-node.es.js +1 -1
  247. package/dist/domains/workflows/workflow/workflow-input-data.cjs.js +2 -0
  248. package/dist/domains/workflows/workflow/workflow-input-data.cjs.js.map +1 -1
  249. package/dist/domains/workflows/workflow/workflow-input-data.es.js +2 -0
  250. package/dist/domains/workflows/workflow/workflow-input-data.es.js.map +1 -1
  251. package/dist/domains/workflows/workflow/workflow-map-config-dialog.es.js +1 -1
  252. package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +2 -2
  253. package/dist/domains/workflows/workflow/workflow-run-data.es.js +1 -1
  254. package/dist/domains/workflows/workflow/workflow-status.es.js +1 -1
  255. package/dist/domains/workflows/workflow/workflow-step-action-bar.es.js +1 -1
  256. package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +1 -1
  257. package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +1 -0
  258. package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js.map +1 -1
  259. package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +3 -2
  260. package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js.map +1 -1
  261. package/dist/domains/workspace/components/workspace-active-file.es.js +1 -1
  262. package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +2 -1
  263. package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js.map +1 -1
  264. package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +5 -4
  265. package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js.map +1 -1
  266. package/dist/domains/workspace/components/workspace-create-directory.es.js +1 -1
  267. package/dist/domains/workspace/components/workspace-markdown-preview.es.js +2 -2
  268. package/dist/domains/workspace/components/workspace-search.es.js +1 -1
  269. package/dist/ee/signals/components/entity-index-list.cjs.js +1 -3
  270. package/dist/ee/signals/components/entity-index-list.cjs.js.map +1 -1
  271. package/dist/ee/signals/components/entity-index-list.es.js +1 -3
  272. package/dist/ee/signals/components/entity-index-list.es.js.map +1 -1
  273. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +2 -4
  274. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js.map +1 -1
  275. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +3 -5
  276. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js.map +1 -1
  277. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +1 -0
  278. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js.map +1 -1
  279. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +3 -2
  280. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js.map +1 -1
  281. package/dist/ee/signals/settings/trace-signal-settings.es.js +1 -1
  282. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +2 -2
  283. package/dist/ee/topics/components/topic-trace-summary-list.es.js +2 -2
  284. package/dist/{field-Bc8Ewf_M.js → field-B89BEZg4.js} +2 -2
  285. package/dist/{field-Bc8Ewf_M.js.map → field-B89BEZg4.js.map} +1 -1
  286. package/dist/{field-control-aria-CCJ4-mUe.js → field-control-aria-DB6y41tQ.js} +2 -2
  287. package/dist/{field-control-aria-CCJ4-mUe.js.map → field-control-aria-DB6y41tQ.js.map} +1 -1
  288. package/dist/{input-Ds171RJ5.js → input-DQFUjtnh.js} +2 -2
  289. package/dist/{input-Ds171RJ5.js.map → input-DQFUjtnh.js.map} +1 -1
  290. package/dist/{input-group-Cxv64rPB.js → input-group-BWsGYnES.js} +2 -2
  291. package/dist/{input-group-Cxv64rPB.js.map → input-group-BWsGYnES.js.map} +1 -1
  292. package/dist/layout/tabbed-container.cjs.js +2 -2
  293. package/dist/layout/tabbed-container.es.js +3 -3
  294. package/dist/lib/form/components/boolean-field.cjs.js +1 -0
  295. package/dist/lib/form/components/boolean-field.cjs.js.map +1 -1
  296. package/dist/lib/form/components/boolean-field.es.js +3 -2
  297. package/dist/lib/form/components/boolean-field.es.js.map +1 -1
  298. package/dist/lib/form/components/date-field.es.js +1 -1
  299. package/dist/lib/form/components/field-wrapper.cjs.js +1 -0
  300. package/dist/lib/form/components/field-wrapper.cjs.js.map +1 -1
  301. package/dist/lib/form/components/field-wrapper.es.js +2 -1
  302. package/dist/lib/form/components/field-wrapper.es.js.map +1 -1
  303. package/dist/lib/form/components/number-field.es.js +1 -1
  304. package/dist/lib/form/components/record-field.es.js +1 -1
  305. package/dist/lib/form/components/select-field.es.js +1 -1
  306. package/dist/{list-search-CmPRFDsn.js → list-search-BNnMwbpv.js} +2 -2
  307. package/dist/{list-search-CmPRFDsn.js.map → list-search-BNnMwbpv.js.map} +1 -1
  308. package/dist/{list-search-C3yXcTRO.cjs → list-search-xHadeMHl.cjs} +2 -2
  309. package/dist/{list-search-C3yXcTRO.cjs.map → list-search-xHadeMHl.cjs.map} +1 -1
  310. package/dist/{logs-data-list-Cudh6b-c.js → logs-data-list-C262Be3o.js} +3 -2
  311. package/dist/{logs-data-list-Cudh6b-c.js.map → logs-data-list-C262Be3o.js.map} +1 -1
  312. package/dist/{logs-data-list-Bf_vIsFb.cjs → logs-data-list-DfuVMd6f.cjs} +22 -21
  313. package/dist/{logs-data-list-Bf_vIsFb.cjs.map → logs-data-list-DfuVMd6f.cjs.map} +1 -1
  314. package/dist/{markdown-renderer-Cly6VMDr.js → markdown-renderer-D5Wjk1Cs.js} +2 -2
  315. package/dist/{markdown-renderer-Cly6VMDr.js.map → markdown-renderer-D5Wjk1Cs.js.map} +1 -1
  316. package/dist/new/settings.cjs.js +1 -1
  317. package/dist/new/settings.es.js +1 -1
  318. package/dist/{plan-DIbhFPRL.js → plan-Cl3-JgbI.js} +2 -2
  319. package/dist/{plan-DIbhFPRL.js.map → plan-Cl3-JgbI.js.map} +1 -1
  320. package/dist/primitives/textarea-control.es.js +1 -1
  321. package/dist/{property-filter-applied-DXH81ffT.js → property-filter-applied-CZLzY0OH.js} +2 -2
  322. package/dist/{property-filter-applied-DXH81ffT.js.map → property-filter-applied-CZLzY0OH.js.map} +1 -1
  323. package/dist/{radio-group-C2zsCipq.js → radio-group-Bk52hNNb.js} +2 -2
  324. package/dist/{radio-group-C2zsCipq.js.map → radio-group-Bk52hNNb.js.map} +1 -1
  325. package/dist/{reasoning-activity-B1r4JQxm.js → reasoning-activity-CIuVSAGA.js} +2 -2
  326. package/dist/{reasoning-activity-B1r4JQxm.js.map → reasoning-activity-CIuVSAGA.js.map} +1 -1
  327. package/dist/{search-input-DbEE2zEz.cjs → search-input-UtTJMjJu.cjs} +2 -1
  328. package/dist/{search-input-DbEE2zEz.cjs.map → search-input-UtTJMjJu.cjs.map} +1 -1
  329. package/dist/{search-input-D23h16CB.js → search-input-fqSrRTLU.js} +4 -3
  330. package/dist/{search-input-D23h16CB.js.map → search-input-fqSrRTLU.js.map} +1 -1
  331. package/dist/{section-CdaSS9M7.cjs → section-DhZbtWhu.cjs} +2 -2
  332. package/dist/{section-CdaSS9M7.cjs.map → section-DhZbtWhu.cjs.map} +1 -1
  333. package/dist/{section-DcjTdrqz.js → section-Dq6aFxlH.js} +2 -2
  334. package/dist/{section-DcjTdrqz.js.map → section-Dq6aFxlH.js.map} +1 -1
  335. package/dist/{segmented-control-BfY7F0NZ.js → segmented-control-CUnvFStD.js} +2 -2
  336. package/dist/{segmented-control-BfY7F0NZ.js.map → segmented-control-CUnvFStD.js.map} +1 -1
  337. package/dist/{select-BGAiIHnS.js → select-N2lgBRsg.js} +2 -2
  338. package/dist/{select-BGAiIHnS.js.map → select-N2lgBRsg.js.map} +1 -1
  339. package/dist/{settings-row-rOI4yGvi.cjs → settings-row-CwZ3JffC.cjs} +2 -1
  340. package/dist/{settings-row-rOI4yGvi.cjs.map → settings-row-CwZ3JffC.cjs.map} +1 -1
  341. package/dist/{settings-row-ylIw4rfC.js → settings-row-gpwIVAMN.js} +3 -2
  342. package/dist/{settings-row-ylIw4rfC.js.map → settings-row-gpwIVAMN.js.map} +1 -1
  343. package/dist/{side-dialog-CB_wrLtE.js → side-dialog-CWQL33WR.js} +2 -2
  344. package/dist/{side-dialog-CB_wrLtE.js.map → side-dialog-CWQL33WR.js.map} +1 -1
  345. package/dist/{side-dialog-OPXvmRDA.cjs → side-dialog-DldgOJIk.cjs} +2 -2
  346. package/dist/{side-dialog-OPXvmRDA.cjs.map → side-dialog-DldgOJIk.cjs.map} +1 -1
  347. package/dist/{span-payload-primitives-Cixom2Py.js → span-payload-primitives-WqYTBiGx.js} +2 -2
  348. package/dist/{span-payload-primitives-Cixom2Py.js.map → span-payload-primitives-WqYTBiGx.js.map} +1 -1
  349. package/dist/src/ds/components/Avatar/Avatar.d.ts +20 -9
  350. package/dist/src/ds/components/Avatar/avatar-badge.d.ts +6 -0
  351. package/dist/src/ds/components/Avatar/avatar-element.d.ts +3 -0
  352. package/dist/src/ds/components/Avatar/avatar-fallback.d.ts +5 -0
  353. package/dist/src/ds/components/Avatar/avatar-group-count.d.ts +3 -0
  354. package/dist/src/ds/components/Avatar/avatar-group.d.ts +6 -0
  355. package/dist/src/ds/components/Avatar/avatar-image.d.ts +6 -0
  356. package/dist/src/ds/components/Avatar/avatar-named.d.ts +10 -0
  357. package/dist/src/ds/components/Avatar/avatar-root.d.ts +8 -0
  358. package/dist/src/ds/components/Avatar/avatar-size.d.ts +5 -0
  359. package/dist/style.css +91 -24
  360. package/dist/{switch-BBeMfeQ2.js → switch-DiSlsWUt.js} +2 -2
  361. package/dist/{switch-BBeMfeQ2.js.map → switch-DiSlsWUt.js.map} +1 -1
  362. package/dist/{time-picker-Bo6GJcmz.js → time-picker-J7GaNaEd.js} +2 -2
  363. package/dist/{time-picker-Bo6GJcmz.js.map → time-picker-J7GaNaEd.js.map} +1 -1
  364. package/dist/{tool-approval-BQ6sDvyS.js → tool-approval-nsbG8-qI.js} +2 -2
  365. package/dist/{tool-approval-BQ6sDvyS.js.map → tool-approval-nsbG8-qI.js.map} +1 -1
  366. package/dist/{tool-call-arguments-B86JP3Dy.js → tool-call-arguments-RKyYP3xh.js} +2 -2
  367. package/dist/{tool-call-arguments-B86JP3Dy.js.map → tool-call-arguments-RKyYP3xh.js.map} +1 -1
  368. package/dist/{tool-card-C8IrtMuQ.js → tool-card-BtPh44u6.js} +2 -2
  369. package/dist/{tool-card-C8IrtMuQ.js.map → tool-card-BtPh44u6.js.map} +1 -1
  370. package/dist/{traces-data-list-DaFA1Ccg.cjs → traces-data-list-Cf_PpmSN.cjs} +19 -17
  371. package/dist/{traces-data-list-DaFA1Ccg.cjs.map → traces-data-list-Cf_PpmSN.cjs.map} +1 -1
  372. package/dist/{traces-data-list-L_r2GAtr.js → traces-data-list-_mFOMw0U.js} +4 -2
  373. package/dist/{traces-data-list-L_r2GAtr.js.map → traces-data-list-_mFOMw0U.js.map} +1 -1
  374. package/dist/{use-workflow-graph-runtime-DS7eWso7.js → use-workflow-graph-runtime-CAyNWN_Z.js} +2 -2
  375. package/dist/{use-workflow-graph-runtime-DS7eWso7.js.map → use-workflow-graph-runtime-CAyNWN_Z.js.map} +1 -1
  376. package/dist/{workflow-code-dialog-content-BUCZZoKf.js → workflow-code-dialog-content-CNDoMFAV.js} +2 -2
  377. package/dist/{workflow-code-dialog-content-BUCZZoKf.js.map → workflow-code-dialog-content-CNDoMFAV.js.map} +1 -1
  378. package/dist/{workflow-data-edge-view-BIiMA9zg.js → workflow-data-edge-view-BaA6YJye.js} +2 -2
  379. package/dist/{workflow-data-edge-view-BIiMA9zg.js.map → workflow-data-edge-view-BaA6YJye.js.map} +1 -1
  380. package/dist/{workflow-edge-data-button-D5oK4NS5.js → workflow-edge-data-button-6EDXzRxr.js} +2 -2
  381. package/dist/{workflow-edge-data-button-D5oK4NS5.js.map → workflow-edge-data-button-6EDXzRxr.js.map} +1 -1
  382. package/package.json +7 -7
  383. package/dist/Avatar-BPHG0wrq.cjs +0 -45
  384. package/dist/Avatar-BPHG0wrq.cjs.map +0 -1
  385. package/dist/Avatar-DAnyIHjm.js +0 -43
  386. package/dist/Avatar-DAnyIHjm.js.map +0 -1
  387. package/dist/data-list-DDGpWucH.js.map +0 -1
  388. package/dist/data-list-_yDPF5wR.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"traces-list-view.cjs.js","sources":["../../../../src/domains/traces/components/traces-list-view.tsx"],"sourcesContent":["import { useVirtualizer } from '@tanstack/react-virtual';\nimport { ListFilterIcon } from 'lucide-react';\nimport { useRef } from 'react';\nimport {\n DEFAULT_TRACE_COLUMN_PREFERENCES,\n TRACE_CUSTOM_COLUMN_LABELS,\n buildTraceListColumnKeys,\n buildTraceListColumns,\n formatTraceMetadataValue,\n hasTraceColumn,\n} from '../trace-list-columns';\nimport type { TraceColumnPreferences, TraceCustomColumn, TraceUsageSummary } from '../trace-list-columns';\nimport { getInputPreview, getSpanDurationMs } from '../utils/span-utils';\nimport { DataList, DataListSkeletonRows, TracesDataList, useDataListKeyboard } from '@/ds/components/DataList';\nimport type { DataListSort } from '@/ds/components/DataList';\nimport { splitColumns } from '@/ds/components/DataList/shared';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu';\nimport { Txt } from '@/ds/components/Txt/Txt';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { formatCompactNumber, formatCost } from '@/lib/cost';\nimport { cn } from '@/lib/utils';\nimport { formatDuration } from '@/utils/duration';\n\nexport type TracesListViewTrace = {\n traceId: string;\n /** Required for branch rows; absent on plain trace rows (which are root-rooted). */\n spanId?: string | null;\n /** `null`/missing → root span. Drives the Kind column's icon (top-level trace vs nested branch). */\n parentSpanId?: string | null;\n name: string;\n entityType?: string | null;\n entityId?: string | null;\n entityName?: string | null;\n threadId?: string | null;\n resourceId?: string | null;\n environment?: string | null;\n status?: string | null;\n /** Server-rendered preview of `input`. Present on lightweight rows, which omit `input` itself. */\n inputPreview?: string | null;\n input?: unknown;\n metadata?: Record<string, unknown> | null;\n startedAt?: Date | string | null;\n endedAt?: Date | string | null;\n createdAt: Date | string;\n};\n\nconst ROW_HEIGHT = 36;\nconst OVERSCAN = 8;\n/** Distinct values offered in a custom column's \"filter by value\" header menu. */\nconst MAX_FILTER_VALUES = 20;\n\nfunction customColumnValue(trace: TracesListViewTrace, field: TraceCustomColumn): string | null | undefined {\n return trace[field];\n}\n\nfunction distinctCustomColumnValues(traces: TracesListViewTrace[], field: TraceCustomColumn): string[] {\n const values = new Set<string>();\n for (const trace of traces) {\n const value = trace[field];\n if (typeof value === 'string' && value) values.add(value);\n if (values.size >= MAX_FILTER_VALUES) break;\n }\n return [...values];\n}\n\nfunction sumTokens(usage: TraceUsageSummary | undefined): number | undefined {\n if (usage?.inputTokens === undefined && usage?.outputTokens === undefined) return undefined;\n return (usage?.inputTokens ?? 0) + (usage?.outputTokens ?? 0);\n}\n\nexport type TracesListViewProps = {\n traces: TracesListViewTrace[];\n isLoading?: boolean;\n isFetchingNextPage?: boolean;\n hasNextPage?: boolean;\n setEndOfListElement?: (element: HTMLDivElement | null) => void;\n filtersApplied?: boolean;\n /** Currently featured/selected trace — its row gets the highlighted background. */\n featuredTraceId?: string | null;\n /**\n * Required in branches mode to disambiguate rows sharing a `traceId`. When set,\n * a row is featured only when both `traceId` and `spanId` match.\n */\n featuredSpanId?: string | null;\n /** Branches mode mixes root traces with subtraces — enables the Trace/Subtrace tooltip on the\n * level icon in the Name column, which is meaningless when every row is a root. */\n isBranchesMode?: boolean;\n /** Keys (`traceId:spanId`) of rows that just arrived via delta polling. Rows whose key is in\n * this set get a temporary tint to distinguish them from rows present since the last page-mode\n * fetch. Auto-expires upstream (in useTraces) after a short window. */\n recentlyAddedKeys?: Set<string>;\n /** Optional and metadata columns selected for this project. */\n columnPreferences?: TraceColumnPreferences;\n /** Token and estimated-cost totals, aggregated across model spans by trace ID. */\n usageByTraceId?: ReadonlyMap<string, TraceUsageSummary>;\n /** Called when a row is clicked. The current selection logic (toggle on same id) is the consumer's call. */\n onTraceClick: (trace: TracesListViewTrace) => void;\n /** Current sort of the Created column. When `onSortChange` is provided the header becomes sortable. */\n createdSort?: DataListSort;\n onSortChange?: (direction: DataListSort, key: 'startedAt') => void;\n /** When provided, custom column headers offer an `is <value>` filter for every value currently listed. */\n onFilterByField?: (field: TraceCustomColumn, value: string) => void;\n /** Storage id for the persisted column order. Use a distinct id per page so each keeps its own order. */\n listId?: string;\n};\n\n/**\n * Virtualized presentational list. Renders only the visible window via TanStack Virtual, and\n * uses DataList primitives for layout (CSS Grid with subgrid rows).\n */\nexport function TracesListView({\n traces,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n filtersApplied,\n featuredTraceId,\n featuredSpanId,\n isBranchesMode,\n recentlyAddedKeys,\n columnPreferences = DEFAULT_TRACE_COLUMN_PREFERENCES,\n usageByTraceId,\n onTraceClick,\n createdSort,\n onSortChange,\n onFilterByField,\n listId = 'all-traces',\n}: TracesListViewProps) {\n const scrollRef = useRef<HTMLDivElement | null>(null);\n const columns = buildTraceListColumns(columnPreferences);\n const columnKeys = buildTraceListColumnKeys(columnPreferences);\n\n const virtualizer = useVirtualizer({\n count: traces.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: () => ROW_HEIGHT,\n overscan: OVERSCAN,\n });\n\n const { getRowProps } = useDataListKeyboard({\n count: traces.length,\n containerRef: scrollRef,\n onNavigate: index => virtualizer.scrollToIndex(index),\n global: true,\n });\n\n const virtualItems = virtualizer.getVirtualItems();\n const totalSize = virtualizer.getTotalSize();\n const paddingTop = virtualItems[0]?.start ?? 0;\n const paddingBottom =\n virtualItems.length > 0 ? Math.max(0, totalSize - (virtualItems[virtualItems.length - 1]?.end ?? 0)) : 0;\n\n return (\n <TracesDataList\n reorderable\n id={listId}\n columns={columns}\n columnKeys={columnKeys}\n fit=\"container\"\n scrollRef={scrollRef}\n className=\"min-w-0\"\n >\n <TracesDataList.Top>\n {onSortChange ? (\n <TracesDataList.SortableTopCell sortKey=\"startedAt\" sort={createdSort} onSortChange={onSortChange}>\n Start\n </TracesDataList.SortableTopCell>\n ) : (\n <TracesDataList.TopCell>Start</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'type') && <TracesDataList.TopCell>Primitive type</TracesDataList.TopCell>}\n <TracesDataList.TopCell>Primitive name</TracesDataList.TopCell>\n {hasTraceColumn(columnPreferences, 'input') && <TracesDataList.TopCell>Input</TracesDataList.TopCell>}\n <TracesDataList.TopCell>Status</TracesDataList.TopCell>\n {hasTraceColumn(columnPreferences, 'duration') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Duration</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'endTime') && <TracesDataList.TopCell>End</TracesDataList.TopCell>}\n {hasTraceColumn(columnPreferences, 'environment') && (\n <TracesDataList.TopCell>Environment</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'inputTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Input tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'outputTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Output tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'totalTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Total tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'estimatedCost') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Est. cost</TracesDataList.TopCell>\n )}\n {columnPreferences.customColumns.map(field => {\n const label = TRACE_CUSTOM_COLUMN_LABELS[field];\n const filterValues = onFilterByField ? distinctCustomColumnValues(traces, field) : [];\n if (!onFilterByField || filterValues.length === 0) {\n return <TracesDataList.TopCell key={field}>{label}</TracesDataList.TopCell>;\n }\n return (\n <TracesDataList.TopCell key={field} className=\"overflow-visible\">\n <DropdownMenu>\n <DropdownMenu.Trigger\n render={\n <button\n type=\"button\"\n className={cn('flex min-w-0 items-center gap-1 rounded-sm hover:text-foreground', focusRing)}\n >\n <span className=\"min-w-0 truncate\">{label}</span>\n <ListFilterIcon aria-hidden className=\"size-[1.2em] shrink-0\" />\n </button>\n }\n />\n <DropdownMenu.Content align=\"start\">\n <DropdownMenu.Label>Filter by value</DropdownMenu.Label>\n {filterValues.map(value => (\n <DropdownMenu.Item key={value} onSelect={() => onFilterByField(field, value)}>\n <Txt as=\"span\" variant=\"body-sm\" font=\"mono\" className=\"min-w-0 truncate\">\n {value}\n </Txt>\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n </TracesDataList.TopCell>\n );\n })}\n {columnPreferences.metadataKeys.map(key => (\n <TracesDataList.TopCellWithTooltip key={key} tooltip={key}>\n {key}\n </TracesDataList.TopCellWithTooltip>\n ))}\n </TracesDataList.Top>\n\n {isLoading ? (\n <DataListSkeletonRows columnCount={splitColumns(columns).length} />\n ) : traces.length === 0 ? (\n <TracesDataList.NoMatch\n message={filtersApplied ? 'No traces found for applied filters' : 'No traces found yet'}\n />\n ) : (\n <>\n <TracesDataList.Spacer height={paddingTop} />\n {virtualItems.map(vi => {\n const trace = traces[vi.index];\n if (!trace) return null;\n\n const isFeatured =\n trace.traceId === featuredTraceId && (featuredSpanId == null || trace.spanId === featuredSpanId);\n const rowKey = `${trace.traceId}:${trace.spanId ?? ''}`;\n const isRecentlyAdded = recentlyAddedKeys?.has(rowKey) ?? false;\n const displayDate = trace.startedAt ?? trace.createdAt;\n const usage = usageByTraceId?.get(trace.traceId);\n\n return (\n <TracesDataList.RowButton\n key={rowKey}\n ref={virtualizer.measureElement}\n data-index={vi.index}\n {...getRowProps(vi.index)}\n onClick={() => onTraceClick(trace)}\n featured={isFeatured}\n className={cn(isRecentlyAdded && 'animate-row-highlight')}\n >\n <TracesDataList.CreatedCell timestamp={displayDate} preset=\"day-time-seconds\" />\n {hasTraceColumn(columnPreferences, 'type') && <TracesDataList.TypeCell entityType={trace.entityType} />}\n <TracesDataList.NameCell\n name={trace.entityName || trace.name}\n parentSpanId={trace.parentSpanId}\n showLevelTooltip={isBranchesMode}\n />\n {hasTraceColumn(columnPreferences, 'input') && (\n <TracesDataList.InputCell input={trace.inputPreview ?? getInputPreview(trace.input)} />\n )}\n <TracesDataList.StatusCell status={trace.status} />\n {hasTraceColumn(columnPreferences, 'duration') && (\n <DataList.NumberCell font=\"mono\">\n {formatDuration(getSpanDurationMs(trace.startedAt, trace.endedAt))}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'endTime') && (\n <TracesDataList.CreatedCell timestamp={trace.endedAt ?? ''} preset=\"day-time-seconds\" />\n )}\n {hasTraceColumn(columnPreferences, 'environment') && (\n <DataList.TextCell>{trace.environment || '—'}</DataList.TextCell>\n )}\n {hasTraceColumn(columnPreferences, 'inputTokens') && (\n <DataList.NumberCell>\n {usage?.inputTokens === undefined ? undefined : formatCompactNumber(usage.inputTokens)}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'outputTokens') && (\n <DataList.NumberCell>\n {usage?.outputTokens === undefined ? undefined : formatCompactNumber(usage.outputTokens)}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'totalTokens') && (\n <DataList.NumberCell>\n {(() => {\n const total = sumTokens(usage);\n return total === undefined ? undefined : formatCompactNumber(total);\n })()}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'estimatedCost') && (\n <DataList.NumberCell>\n {usage?.estimatedCost === undefined ? undefined : formatCost(usage.estimatedCost, usage.costUnit)}\n </DataList.NumberCell>\n )}\n {columnPreferences.customColumns.map(field => (\n <DataList.TextCell font=\"mono\" key={field}>\n {customColumnValue(trace, field) ?? undefined}\n </DataList.TextCell>\n ))}\n {columnPreferences.metadataKeys.map(key => {\n const value = formatTraceMetadataValue(trace.metadata, key);\n return (\n <DataList.TextCell font=\"mono\" key={key}>\n {value}\n </DataList.TextCell>\n );\n })}\n </TracesDataList.RowButton>\n );\n })}\n <TracesDataList.Spacer height={paddingBottom} />\n <TracesDataList.NextPageLoading\n isLoading={isFetchingNextPage}\n hasMore={hasNextPage}\n setEndOfListElement={setEndOfListElement}\n />\n </>\n )}\n </TracesDataList>\n );\n}\n"],"names":["DEFAULT_TRACE_COLUMN_PREFERENCES","useRef","buildTraceListColumns","buildTraceListColumnKeys","useVirtualizer","useDataListKeyboard","jsxs","TracesDataList","jsx","hasTraceColumn","TRACE_CUSTOM_COLUMN_LABELS","DropdownMenu","cn","focusRing","ListFilterIcon","Txt","DataListSkeletonRows","splitColumns","Fragment","getInputPreview","DataList","getSpanDurationMs","formatCompactNumber","formatCost","formatTraceMetadataValue"],"mappings":"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"}
1
+ {"version":3,"file":"traces-list-view.cjs.js","sources":["../../../../src/domains/traces/components/traces-list-view.tsx"],"sourcesContent":["import { useVirtualizer } from '@tanstack/react-virtual';\nimport { ListFilterIcon } from 'lucide-react';\nimport { useRef } from 'react';\nimport {\n DEFAULT_TRACE_COLUMN_PREFERENCES,\n TRACE_CUSTOM_COLUMN_LABELS,\n buildTraceListColumnKeys,\n buildTraceListColumns,\n formatTraceMetadataValue,\n hasTraceColumn,\n} from '../trace-list-columns';\nimport type { TraceColumnPreferences, TraceCustomColumn, TraceUsageSummary } from '../trace-list-columns';\nimport { getInputPreview, getSpanDurationMs } from '../utils/span-utils';\nimport { DataList, DataListSkeletonRows, TracesDataList, useDataListKeyboard } from '@/ds/components/DataList';\nimport type { DataListSort } from '@/ds/components/DataList';\nimport { splitColumns } from '@/ds/components/DataList/shared';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu';\nimport { Txt } from '@/ds/components/Txt/Txt';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { formatCompactNumber, formatCost } from '@/lib/cost';\nimport { cn } from '@/lib/utils';\nimport { formatDuration } from '@/utils/duration';\n\nexport type TracesListViewTrace = {\n traceId: string;\n /** Required for branch rows; absent on plain trace rows (which are root-rooted). */\n spanId?: string | null;\n /** `null`/missing → root span. Drives the Kind column's icon (top-level trace vs nested branch). */\n parentSpanId?: string | null;\n name: string;\n entityType?: string | null;\n entityId?: string | null;\n entityName?: string | null;\n threadId?: string | null;\n resourceId?: string | null;\n environment?: string | null;\n status?: string | null;\n /** Server-rendered preview of `input`. Present on lightweight rows, which omit `input` itself. */\n inputPreview?: string | null;\n input?: unknown;\n metadata?: Record<string, unknown> | null;\n startedAt?: Date | string | null;\n endedAt?: Date | string | null;\n createdAt: Date | string;\n};\n\nconst ROW_HEIGHT = 36;\nconst OVERSCAN = 8;\n/** Distinct values offered in a custom column's \"filter by value\" header menu. */\nconst MAX_FILTER_VALUES = 20;\n\nfunction customColumnValue(trace: TracesListViewTrace, field: TraceCustomColumn): string | null | undefined {\n return trace[field];\n}\n\nfunction distinctCustomColumnValues(traces: TracesListViewTrace[], field: TraceCustomColumn): string[] {\n const values = new Set<string>();\n for (const trace of traces) {\n const value = trace[field];\n if (typeof value === 'string' && value) values.add(value);\n if (values.size >= MAX_FILTER_VALUES) break;\n }\n return [...values];\n}\n\nfunction sumTokens(usage: TraceUsageSummary | undefined): number | undefined {\n if (usage?.inputTokens === undefined && usage?.outputTokens === undefined) return undefined;\n return (usage?.inputTokens ?? 0) + (usage?.outputTokens ?? 0);\n}\n\nexport type TracesListViewProps = {\n traces: TracesListViewTrace[];\n isLoading?: boolean;\n isFetchingNextPage?: boolean;\n hasNextPage?: boolean;\n setEndOfListElement?: (element: HTMLDivElement | null) => void;\n filtersApplied?: boolean;\n /** Currently featured/selected trace — its row gets the highlighted background. */\n featuredTraceId?: string | null;\n /**\n * Required in branches mode to disambiguate rows sharing a `traceId`. When set,\n * a row is featured only when both `traceId` and `spanId` match.\n */\n featuredSpanId?: string | null;\n /** Branches mode mixes root traces with subtraces — enables the Trace/Subtrace tooltip on the\n * level icon in the Name column, which is meaningless when every row is a root. */\n isBranchesMode?: boolean;\n /** Keys (`traceId:spanId`) of rows that just arrived via delta polling. Rows whose key is in\n * this set get a temporary tint to distinguish them from rows present since the last page-mode\n * fetch. Auto-expires upstream (in useTraces) after a short window. */\n recentlyAddedKeys?: Set<string>;\n /** Optional and metadata columns selected for this project. */\n columnPreferences?: TraceColumnPreferences;\n /** Token and estimated-cost totals, aggregated across model spans by trace ID. */\n usageByTraceId?: ReadonlyMap<string, TraceUsageSummary>;\n /** Called when a row is clicked. The current selection logic (toggle on same id) is the consumer's call. */\n onTraceClick: (trace: TracesListViewTrace) => void;\n /** Current sort of the Created column. When `onSortChange` is provided the header becomes sortable. */\n createdSort?: DataListSort;\n onSortChange?: (direction: DataListSort, key: 'startedAt') => void;\n /** When provided, custom column headers offer an `is <value>` filter for every value currently listed. */\n onFilterByField?: (field: TraceCustomColumn, value: string) => void;\n /** Storage id for the persisted column order. Use a distinct id per page so each keeps its own order. */\n listId?: string;\n};\n\n/**\n * Virtualized presentational list. Renders only the visible window via TanStack Virtual, and\n * uses DataList primitives for layout (CSS Grid with subgrid rows).\n */\nexport function TracesListView({\n traces,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n filtersApplied,\n featuredTraceId,\n featuredSpanId,\n isBranchesMode,\n recentlyAddedKeys,\n columnPreferences = DEFAULT_TRACE_COLUMN_PREFERENCES,\n usageByTraceId,\n onTraceClick,\n createdSort,\n onSortChange,\n onFilterByField,\n listId = 'all-traces',\n}: TracesListViewProps) {\n const scrollRef = useRef<HTMLDivElement | null>(null);\n const columns = buildTraceListColumns(columnPreferences);\n const columnKeys = buildTraceListColumnKeys(columnPreferences);\n\n const virtualizer = useVirtualizer({\n count: traces.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: () => ROW_HEIGHT,\n overscan: OVERSCAN,\n });\n\n const { getRowProps } = useDataListKeyboard({\n count: traces.length,\n containerRef: scrollRef,\n onNavigate: index => virtualizer.scrollToIndex(index),\n global: true,\n });\n\n const virtualItems = virtualizer.getVirtualItems();\n const totalSize = virtualizer.getTotalSize();\n const paddingTop = virtualItems[0]?.start ?? 0;\n const paddingBottom =\n virtualItems.length > 0 ? Math.max(0, totalSize - (virtualItems[virtualItems.length - 1]?.end ?? 0)) : 0;\n\n return (\n <TracesDataList\n reorderable\n id={listId}\n columns={columns}\n columnKeys={columnKeys}\n fit=\"container\"\n scrollRef={scrollRef}\n className=\"min-w-0\"\n >\n <TracesDataList.Top>\n {onSortChange ? (\n <TracesDataList.SortableTopCell sortKey=\"startedAt\" sort={createdSort} onSortChange={onSortChange}>\n Start\n </TracesDataList.SortableTopCell>\n ) : (\n <TracesDataList.TopCell>Start</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'type') && <TracesDataList.TopCell>Primitive type</TracesDataList.TopCell>}\n <TracesDataList.TopCell>Primitive name</TracesDataList.TopCell>\n {hasTraceColumn(columnPreferences, 'input') && <TracesDataList.TopCell>Input</TracesDataList.TopCell>}\n <TracesDataList.TopCell>Status</TracesDataList.TopCell>\n {hasTraceColumn(columnPreferences, 'duration') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Duration</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'endTime') && <TracesDataList.TopCell>End</TracesDataList.TopCell>}\n {hasTraceColumn(columnPreferences, 'environment') && (\n <TracesDataList.TopCell>Environment</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'inputTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Input tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'outputTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Output tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'totalTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Total tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'estimatedCost') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Est. cost</TracesDataList.TopCell>\n )}\n {columnPreferences.customColumns.map(field => {\n const label = TRACE_CUSTOM_COLUMN_LABELS[field];\n const filterValues = onFilterByField ? distinctCustomColumnValues(traces, field) : [];\n if (!onFilterByField || filterValues.length === 0) {\n return <TracesDataList.TopCell key={field}>{label}</TracesDataList.TopCell>;\n }\n return (\n <TracesDataList.TopCell key={field} className=\"overflow-visible\">\n <DropdownMenu>\n <DropdownMenu.Trigger\n render={\n <button\n type=\"button\"\n className={cn('flex min-w-0 items-center gap-1 rounded-sm hover:text-foreground', focusRing)}\n >\n <span className=\"min-w-0 truncate\">{label}</span>\n <ListFilterIcon aria-hidden className=\"size-[1.2em] shrink-0\" />\n </button>\n }\n />\n <DropdownMenu.Content align=\"start\">\n <DropdownMenu.Label>Filter by value</DropdownMenu.Label>\n {filterValues.map(value => (\n <DropdownMenu.Item key={value} onSelect={() => onFilterByField(field, value)}>\n <Txt as=\"span\" variant=\"body-sm\" font=\"mono\" className=\"min-w-0 truncate\">\n {value}\n </Txt>\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n </TracesDataList.TopCell>\n );\n })}\n {columnPreferences.metadataKeys.map(key => (\n <TracesDataList.TopCellWithTooltip key={key} tooltip={key}>\n {key}\n </TracesDataList.TopCellWithTooltip>\n ))}\n </TracesDataList.Top>\n\n {isLoading ? (\n <DataListSkeletonRows columnCount={splitColumns(columns).length} />\n ) : traces.length === 0 ? (\n <TracesDataList.NoMatch\n message={filtersApplied ? 'No traces found for applied filters' : 'No traces found yet'}\n />\n ) : (\n <>\n <TracesDataList.Spacer height={paddingTop} />\n {virtualItems.map(vi => {\n const trace = traces[vi.index];\n if (!trace) return null;\n\n const isFeatured =\n trace.traceId === featuredTraceId && (featuredSpanId == null || trace.spanId === featuredSpanId);\n const rowKey = `${trace.traceId}:${trace.spanId ?? ''}`;\n const isRecentlyAdded = recentlyAddedKeys?.has(rowKey) ?? false;\n const displayDate = trace.startedAt ?? trace.createdAt;\n const usage = usageByTraceId?.get(trace.traceId);\n\n return (\n <TracesDataList.RowButton\n key={rowKey}\n ref={virtualizer.measureElement}\n data-index={vi.index}\n {...getRowProps(vi.index)}\n onClick={() => onTraceClick(trace)}\n featured={isFeatured}\n className={cn(isRecentlyAdded && 'animate-row-highlight')}\n >\n <TracesDataList.CreatedCell timestamp={displayDate} preset=\"day-time-seconds\" />\n {hasTraceColumn(columnPreferences, 'type') && <TracesDataList.TypeCell entityType={trace.entityType} />}\n <TracesDataList.NameCell\n name={trace.entityName || trace.name}\n parentSpanId={trace.parentSpanId}\n showLevelTooltip={isBranchesMode}\n />\n {hasTraceColumn(columnPreferences, 'input') && (\n <TracesDataList.InputCell input={trace.inputPreview ?? getInputPreview(trace.input)} />\n )}\n <TracesDataList.StatusCell status={trace.status} />\n {hasTraceColumn(columnPreferences, 'duration') && (\n <DataList.NumberCell font=\"mono\">\n {formatDuration(getSpanDurationMs(trace.startedAt, trace.endedAt))}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'endTime') && (\n <TracesDataList.CreatedCell timestamp={trace.endedAt ?? ''} preset=\"day-time-seconds\" />\n )}\n {hasTraceColumn(columnPreferences, 'environment') && (\n <DataList.TextCell>{trace.environment || '—'}</DataList.TextCell>\n )}\n {hasTraceColumn(columnPreferences, 'inputTokens') && (\n <DataList.NumberCell>\n {usage?.inputTokens === undefined ? undefined : formatCompactNumber(usage.inputTokens)}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'outputTokens') && (\n <DataList.NumberCell>\n {usage?.outputTokens === undefined ? undefined : formatCompactNumber(usage.outputTokens)}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'totalTokens') && (\n <DataList.NumberCell>\n {(() => {\n const total = sumTokens(usage);\n return total === undefined ? undefined : formatCompactNumber(total);\n })()}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'estimatedCost') && (\n <DataList.NumberCell>\n {usage?.estimatedCost === undefined ? undefined : formatCost(usage.estimatedCost, usage.costUnit)}\n </DataList.NumberCell>\n )}\n {columnPreferences.customColumns.map(field => (\n <DataList.TextCell font=\"mono\" key={field}>\n {customColumnValue(trace, field) ?? undefined}\n </DataList.TextCell>\n ))}\n {columnPreferences.metadataKeys.map(key => {\n const value = formatTraceMetadataValue(trace.metadata, key);\n return (\n <DataList.TextCell font=\"mono\" key={key}>\n {value}\n </DataList.TextCell>\n );\n })}\n </TracesDataList.RowButton>\n );\n })}\n <TracesDataList.Spacer height={paddingBottom} />\n <TracesDataList.NextPageLoading\n isLoading={isFetchingNextPage}\n hasMore={hasNextPage}\n setEndOfListElement={setEndOfListElement}\n />\n </>\n )}\n </TracesDataList>\n );\n}\n"],"names":["DEFAULT_TRACE_COLUMN_PREFERENCES","useRef","buildTraceListColumns","buildTraceListColumnKeys","useVirtualizer","useDataListKeyboard","jsxs","TracesDataList","jsx","hasTraceColumn","TRACE_CUSTOM_COLUMN_LABELS","DropdownMenu","cn","focusRing","ListFilterIcon","Txt","DataListSkeletonRows","splitColumns","Fragment","getInputPreview","DataList","getSpanDurationMs","formatCompactNumber","formatCost","formatTraceMetadataValue"],"mappings":"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"}
@@ -4,10 +4,11 @@ import { ListFilterIcon } from 'lucide-react';
4
4
  import { useRef } from 'react';
5
5
  import { buildTraceListColumns, buildTraceListColumnKeys, hasTraceColumn, DEFAULT_TRACE_COLUMN_PREFERENCES, TRACE_CUSTOM_COLUMN_LABELS, formatTraceMetadataValue } from '../trace-list-columns.es.js';
6
6
  import { getInputPreview, getSpanDurationMs } from '../utils/span-utils.es.js';
7
- import { s as splitColumns, e as DataList } from '../../../data-list-DDGpWucH.js';
8
- import { a as DataListSkeletonRows } from '../../../data-list-skeleton-CJFwZBlW.js';
9
- import { T as TracesDataList } from '../../../traces-data-list-L_r2GAtr.js';
7
+ import { D as DataList } from '../../../data-list-Dv2lP-dU.js';
8
+ import { a as DataListSkeletonRows } from '../../../data-list-skeleton-BmsDYJrA.js';
9
+ import { T as TracesDataList } from '../../../traces-data-list-_mFOMw0U.js';
10
10
  import { u as useDataListKeyboard } from '../../../use-data-list-keyboard-DFQr4t38.js';
11
+ import { s as splitColumns } from '../../../data-list-top-BJCC62oy.js';
11
12
  import { D as DropdownMenu } from '../../../dropdown-menu-D8GR_NhL.js';
12
13
  import { T as Txt } from '../../../Txt-BuzYj7Vy.js';
13
14
  import { focusRing } from '../../../primitives/transitions.es.js';
@@ -1 +1 @@
1
- {"version":3,"file":"traces-list-view.es.js","sources":["../../../../src/domains/traces/components/traces-list-view.tsx"],"sourcesContent":["import { useVirtualizer } from '@tanstack/react-virtual';\nimport { ListFilterIcon } from 'lucide-react';\nimport { useRef } from 'react';\nimport {\n DEFAULT_TRACE_COLUMN_PREFERENCES,\n TRACE_CUSTOM_COLUMN_LABELS,\n buildTraceListColumnKeys,\n buildTraceListColumns,\n formatTraceMetadataValue,\n hasTraceColumn,\n} from '../trace-list-columns';\nimport type { TraceColumnPreferences, TraceCustomColumn, TraceUsageSummary } from '../trace-list-columns';\nimport { getInputPreview, getSpanDurationMs } from '../utils/span-utils';\nimport { DataList, DataListSkeletonRows, TracesDataList, useDataListKeyboard } from '@/ds/components/DataList';\nimport type { DataListSort } from '@/ds/components/DataList';\nimport { splitColumns } from '@/ds/components/DataList/shared';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu';\nimport { Txt } from '@/ds/components/Txt/Txt';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { formatCompactNumber, formatCost } from '@/lib/cost';\nimport { cn } from '@/lib/utils';\nimport { formatDuration } from '@/utils/duration';\n\nexport type TracesListViewTrace = {\n traceId: string;\n /** Required for branch rows; absent on plain trace rows (which are root-rooted). */\n spanId?: string | null;\n /** `null`/missing → root span. Drives the Kind column's icon (top-level trace vs nested branch). */\n parentSpanId?: string | null;\n name: string;\n entityType?: string | null;\n entityId?: string | null;\n entityName?: string | null;\n threadId?: string | null;\n resourceId?: string | null;\n environment?: string | null;\n status?: string | null;\n /** Server-rendered preview of `input`. Present on lightweight rows, which omit `input` itself. */\n inputPreview?: string | null;\n input?: unknown;\n metadata?: Record<string, unknown> | null;\n startedAt?: Date | string | null;\n endedAt?: Date | string | null;\n createdAt: Date | string;\n};\n\nconst ROW_HEIGHT = 36;\nconst OVERSCAN = 8;\n/** Distinct values offered in a custom column's \"filter by value\" header menu. */\nconst MAX_FILTER_VALUES = 20;\n\nfunction customColumnValue(trace: TracesListViewTrace, field: TraceCustomColumn): string | null | undefined {\n return trace[field];\n}\n\nfunction distinctCustomColumnValues(traces: TracesListViewTrace[], field: TraceCustomColumn): string[] {\n const values = new Set<string>();\n for (const trace of traces) {\n const value = trace[field];\n if (typeof value === 'string' && value) values.add(value);\n if (values.size >= MAX_FILTER_VALUES) break;\n }\n return [...values];\n}\n\nfunction sumTokens(usage: TraceUsageSummary | undefined): number | undefined {\n if (usage?.inputTokens === undefined && usage?.outputTokens === undefined) return undefined;\n return (usage?.inputTokens ?? 0) + (usage?.outputTokens ?? 0);\n}\n\nexport type TracesListViewProps = {\n traces: TracesListViewTrace[];\n isLoading?: boolean;\n isFetchingNextPage?: boolean;\n hasNextPage?: boolean;\n setEndOfListElement?: (element: HTMLDivElement | null) => void;\n filtersApplied?: boolean;\n /** Currently featured/selected trace — its row gets the highlighted background. */\n featuredTraceId?: string | null;\n /**\n * Required in branches mode to disambiguate rows sharing a `traceId`. When set,\n * a row is featured only when both `traceId` and `spanId` match.\n */\n featuredSpanId?: string | null;\n /** Branches mode mixes root traces with subtraces — enables the Trace/Subtrace tooltip on the\n * level icon in the Name column, which is meaningless when every row is a root. */\n isBranchesMode?: boolean;\n /** Keys (`traceId:spanId`) of rows that just arrived via delta polling. Rows whose key is in\n * this set get a temporary tint to distinguish them from rows present since the last page-mode\n * fetch. Auto-expires upstream (in useTraces) after a short window. */\n recentlyAddedKeys?: Set<string>;\n /** Optional and metadata columns selected for this project. */\n columnPreferences?: TraceColumnPreferences;\n /** Token and estimated-cost totals, aggregated across model spans by trace ID. */\n usageByTraceId?: ReadonlyMap<string, TraceUsageSummary>;\n /** Called when a row is clicked. The current selection logic (toggle on same id) is the consumer's call. */\n onTraceClick: (trace: TracesListViewTrace) => void;\n /** Current sort of the Created column. When `onSortChange` is provided the header becomes sortable. */\n createdSort?: DataListSort;\n onSortChange?: (direction: DataListSort, key: 'startedAt') => void;\n /** When provided, custom column headers offer an `is <value>` filter for every value currently listed. */\n onFilterByField?: (field: TraceCustomColumn, value: string) => void;\n /** Storage id for the persisted column order. Use a distinct id per page so each keeps its own order. */\n listId?: string;\n};\n\n/**\n * Virtualized presentational list. Renders only the visible window via TanStack Virtual, and\n * uses DataList primitives for layout (CSS Grid with subgrid rows).\n */\nexport function TracesListView({\n traces,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n filtersApplied,\n featuredTraceId,\n featuredSpanId,\n isBranchesMode,\n recentlyAddedKeys,\n columnPreferences = DEFAULT_TRACE_COLUMN_PREFERENCES,\n usageByTraceId,\n onTraceClick,\n createdSort,\n onSortChange,\n onFilterByField,\n listId = 'all-traces',\n}: TracesListViewProps) {\n const scrollRef = useRef<HTMLDivElement | null>(null);\n const columns = buildTraceListColumns(columnPreferences);\n const columnKeys = buildTraceListColumnKeys(columnPreferences);\n\n const virtualizer = useVirtualizer({\n count: traces.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: () => ROW_HEIGHT,\n overscan: OVERSCAN,\n });\n\n const { getRowProps } = useDataListKeyboard({\n count: traces.length,\n containerRef: scrollRef,\n onNavigate: index => virtualizer.scrollToIndex(index),\n global: true,\n });\n\n const virtualItems = virtualizer.getVirtualItems();\n const totalSize = virtualizer.getTotalSize();\n const paddingTop = virtualItems[0]?.start ?? 0;\n const paddingBottom =\n virtualItems.length > 0 ? Math.max(0, totalSize - (virtualItems[virtualItems.length - 1]?.end ?? 0)) : 0;\n\n return (\n <TracesDataList\n reorderable\n id={listId}\n columns={columns}\n columnKeys={columnKeys}\n fit=\"container\"\n scrollRef={scrollRef}\n className=\"min-w-0\"\n >\n <TracesDataList.Top>\n {onSortChange ? (\n <TracesDataList.SortableTopCell sortKey=\"startedAt\" sort={createdSort} onSortChange={onSortChange}>\n Start\n </TracesDataList.SortableTopCell>\n ) : (\n <TracesDataList.TopCell>Start</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'type') && <TracesDataList.TopCell>Primitive type</TracesDataList.TopCell>}\n <TracesDataList.TopCell>Primitive name</TracesDataList.TopCell>\n {hasTraceColumn(columnPreferences, 'input') && <TracesDataList.TopCell>Input</TracesDataList.TopCell>}\n <TracesDataList.TopCell>Status</TracesDataList.TopCell>\n {hasTraceColumn(columnPreferences, 'duration') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Duration</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'endTime') && <TracesDataList.TopCell>End</TracesDataList.TopCell>}\n {hasTraceColumn(columnPreferences, 'environment') && (\n <TracesDataList.TopCell>Environment</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'inputTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Input tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'outputTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Output tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'totalTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Total tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'estimatedCost') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Est. cost</TracesDataList.TopCell>\n )}\n {columnPreferences.customColumns.map(field => {\n const label = TRACE_CUSTOM_COLUMN_LABELS[field];\n const filterValues = onFilterByField ? distinctCustomColumnValues(traces, field) : [];\n if (!onFilterByField || filterValues.length === 0) {\n return <TracesDataList.TopCell key={field}>{label}</TracesDataList.TopCell>;\n }\n return (\n <TracesDataList.TopCell key={field} className=\"overflow-visible\">\n <DropdownMenu>\n <DropdownMenu.Trigger\n render={\n <button\n type=\"button\"\n className={cn('flex min-w-0 items-center gap-1 rounded-sm hover:text-foreground', focusRing)}\n >\n <span className=\"min-w-0 truncate\">{label}</span>\n <ListFilterIcon aria-hidden className=\"size-[1.2em] shrink-0\" />\n </button>\n }\n />\n <DropdownMenu.Content align=\"start\">\n <DropdownMenu.Label>Filter by value</DropdownMenu.Label>\n {filterValues.map(value => (\n <DropdownMenu.Item key={value} onSelect={() => onFilterByField(field, value)}>\n <Txt as=\"span\" variant=\"body-sm\" font=\"mono\" className=\"min-w-0 truncate\">\n {value}\n </Txt>\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n </TracesDataList.TopCell>\n );\n })}\n {columnPreferences.metadataKeys.map(key => (\n <TracesDataList.TopCellWithTooltip key={key} tooltip={key}>\n {key}\n </TracesDataList.TopCellWithTooltip>\n ))}\n </TracesDataList.Top>\n\n {isLoading ? (\n <DataListSkeletonRows columnCount={splitColumns(columns).length} />\n ) : traces.length === 0 ? (\n <TracesDataList.NoMatch\n message={filtersApplied ? 'No traces found for applied filters' : 'No traces found yet'}\n />\n ) : (\n <>\n <TracesDataList.Spacer height={paddingTop} />\n {virtualItems.map(vi => {\n const trace = traces[vi.index];\n if (!trace) return null;\n\n const isFeatured =\n trace.traceId === featuredTraceId && (featuredSpanId == null || trace.spanId === featuredSpanId);\n const rowKey = `${trace.traceId}:${trace.spanId ?? ''}`;\n const isRecentlyAdded = recentlyAddedKeys?.has(rowKey) ?? false;\n const displayDate = trace.startedAt ?? trace.createdAt;\n const usage = usageByTraceId?.get(trace.traceId);\n\n return (\n <TracesDataList.RowButton\n key={rowKey}\n ref={virtualizer.measureElement}\n data-index={vi.index}\n {...getRowProps(vi.index)}\n onClick={() => onTraceClick(trace)}\n featured={isFeatured}\n className={cn(isRecentlyAdded && 'animate-row-highlight')}\n >\n <TracesDataList.CreatedCell timestamp={displayDate} preset=\"day-time-seconds\" />\n {hasTraceColumn(columnPreferences, 'type') && <TracesDataList.TypeCell entityType={trace.entityType} />}\n <TracesDataList.NameCell\n name={trace.entityName || trace.name}\n parentSpanId={trace.parentSpanId}\n showLevelTooltip={isBranchesMode}\n />\n {hasTraceColumn(columnPreferences, 'input') && (\n <TracesDataList.InputCell input={trace.inputPreview ?? getInputPreview(trace.input)} />\n )}\n <TracesDataList.StatusCell status={trace.status} />\n {hasTraceColumn(columnPreferences, 'duration') && (\n <DataList.NumberCell font=\"mono\">\n {formatDuration(getSpanDurationMs(trace.startedAt, trace.endedAt))}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'endTime') && (\n <TracesDataList.CreatedCell timestamp={trace.endedAt ?? ''} preset=\"day-time-seconds\" />\n )}\n {hasTraceColumn(columnPreferences, 'environment') && (\n <DataList.TextCell>{trace.environment || '—'}</DataList.TextCell>\n )}\n {hasTraceColumn(columnPreferences, 'inputTokens') && (\n <DataList.NumberCell>\n {usage?.inputTokens === undefined ? undefined : formatCompactNumber(usage.inputTokens)}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'outputTokens') && (\n <DataList.NumberCell>\n {usage?.outputTokens === undefined ? undefined : formatCompactNumber(usage.outputTokens)}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'totalTokens') && (\n <DataList.NumberCell>\n {(() => {\n const total = sumTokens(usage);\n return total === undefined ? undefined : formatCompactNumber(total);\n })()}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'estimatedCost') && (\n <DataList.NumberCell>\n {usage?.estimatedCost === undefined ? undefined : formatCost(usage.estimatedCost, usage.costUnit)}\n </DataList.NumberCell>\n )}\n {columnPreferences.customColumns.map(field => (\n <DataList.TextCell font=\"mono\" key={field}>\n {customColumnValue(trace, field) ?? undefined}\n </DataList.TextCell>\n ))}\n {columnPreferences.metadataKeys.map(key => {\n const value = formatTraceMetadataValue(trace.metadata, key);\n return (\n <DataList.TextCell font=\"mono\" key={key}>\n {value}\n </DataList.TextCell>\n );\n })}\n </TracesDataList.RowButton>\n );\n })}\n <TracesDataList.Spacer height={paddingBottom} />\n <TracesDataList.NextPageLoading\n isLoading={isFetchingNextPage}\n hasMore={hasNextPage}\n setEndOfListElement={setEndOfListElement}\n />\n </>\n )}\n </TracesDataList>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"traces-list-view.es.js","sources":["../../../../src/domains/traces/components/traces-list-view.tsx"],"sourcesContent":["import { useVirtualizer } from '@tanstack/react-virtual';\nimport { ListFilterIcon } from 'lucide-react';\nimport { useRef } from 'react';\nimport {\n DEFAULT_TRACE_COLUMN_PREFERENCES,\n TRACE_CUSTOM_COLUMN_LABELS,\n buildTraceListColumnKeys,\n buildTraceListColumns,\n formatTraceMetadataValue,\n hasTraceColumn,\n} from '../trace-list-columns';\nimport type { TraceColumnPreferences, TraceCustomColumn, TraceUsageSummary } from '../trace-list-columns';\nimport { getInputPreview, getSpanDurationMs } from '../utils/span-utils';\nimport { DataList, DataListSkeletonRows, TracesDataList, useDataListKeyboard } from '@/ds/components/DataList';\nimport type { DataListSort } from '@/ds/components/DataList';\nimport { splitColumns } from '@/ds/components/DataList/shared';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu';\nimport { Txt } from '@/ds/components/Txt/Txt';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { formatCompactNumber, formatCost } from '@/lib/cost';\nimport { cn } from '@/lib/utils';\nimport { formatDuration } from '@/utils/duration';\n\nexport type TracesListViewTrace = {\n traceId: string;\n /** Required for branch rows; absent on plain trace rows (which are root-rooted). */\n spanId?: string | null;\n /** `null`/missing → root span. Drives the Kind column's icon (top-level trace vs nested branch). */\n parentSpanId?: string | null;\n name: string;\n entityType?: string | null;\n entityId?: string | null;\n entityName?: string | null;\n threadId?: string | null;\n resourceId?: string | null;\n environment?: string | null;\n status?: string | null;\n /** Server-rendered preview of `input`. Present on lightweight rows, which omit `input` itself. */\n inputPreview?: string | null;\n input?: unknown;\n metadata?: Record<string, unknown> | null;\n startedAt?: Date | string | null;\n endedAt?: Date | string | null;\n createdAt: Date | string;\n};\n\nconst ROW_HEIGHT = 36;\nconst OVERSCAN = 8;\n/** Distinct values offered in a custom column's \"filter by value\" header menu. */\nconst MAX_FILTER_VALUES = 20;\n\nfunction customColumnValue(trace: TracesListViewTrace, field: TraceCustomColumn): string | null | undefined {\n return trace[field];\n}\n\nfunction distinctCustomColumnValues(traces: TracesListViewTrace[], field: TraceCustomColumn): string[] {\n const values = new Set<string>();\n for (const trace of traces) {\n const value = trace[field];\n if (typeof value === 'string' && value) values.add(value);\n if (values.size >= MAX_FILTER_VALUES) break;\n }\n return [...values];\n}\n\nfunction sumTokens(usage: TraceUsageSummary | undefined): number | undefined {\n if (usage?.inputTokens === undefined && usage?.outputTokens === undefined) return undefined;\n return (usage?.inputTokens ?? 0) + (usage?.outputTokens ?? 0);\n}\n\nexport type TracesListViewProps = {\n traces: TracesListViewTrace[];\n isLoading?: boolean;\n isFetchingNextPage?: boolean;\n hasNextPage?: boolean;\n setEndOfListElement?: (element: HTMLDivElement | null) => void;\n filtersApplied?: boolean;\n /** Currently featured/selected trace — its row gets the highlighted background. */\n featuredTraceId?: string | null;\n /**\n * Required in branches mode to disambiguate rows sharing a `traceId`. When set,\n * a row is featured only when both `traceId` and `spanId` match.\n */\n featuredSpanId?: string | null;\n /** Branches mode mixes root traces with subtraces — enables the Trace/Subtrace tooltip on the\n * level icon in the Name column, which is meaningless when every row is a root. */\n isBranchesMode?: boolean;\n /** Keys (`traceId:spanId`) of rows that just arrived via delta polling. Rows whose key is in\n * this set get a temporary tint to distinguish them from rows present since the last page-mode\n * fetch. Auto-expires upstream (in useTraces) after a short window. */\n recentlyAddedKeys?: Set<string>;\n /** Optional and metadata columns selected for this project. */\n columnPreferences?: TraceColumnPreferences;\n /** Token and estimated-cost totals, aggregated across model spans by trace ID. */\n usageByTraceId?: ReadonlyMap<string, TraceUsageSummary>;\n /** Called when a row is clicked. The current selection logic (toggle on same id) is the consumer's call. */\n onTraceClick: (trace: TracesListViewTrace) => void;\n /** Current sort of the Created column. When `onSortChange` is provided the header becomes sortable. */\n createdSort?: DataListSort;\n onSortChange?: (direction: DataListSort, key: 'startedAt') => void;\n /** When provided, custom column headers offer an `is <value>` filter for every value currently listed. */\n onFilterByField?: (field: TraceCustomColumn, value: string) => void;\n /** Storage id for the persisted column order. Use a distinct id per page so each keeps its own order. */\n listId?: string;\n};\n\n/**\n * Virtualized presentational list. Renders only the visible window via TanStack Virtual, and\n * uses DataList primitives for layout (CSS Grid with subgrid rows).\n */\nexport function TracesListView({\n traces,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n filtersApplied,\n featuredTraceId,\n featuredSpanId,\n isBranchesMode,\n recentlyAddedKeys,\n columnPreferences = DEFAULT_TRACE_COLUMN_PREFERENCES,\n usageByTraceId,\n onTraceClick,\n createdSort,\n onSortChange,\n onFilterByField,\n listId = 'all-traces',\n}: TracesListViewProps) {\n const scrollRef = useRef<HTMLDivElement | null>(null);\n const columns = buildTraceListColumns(columnPreferences);\n const columnKeys = buildTraceListColumnKeys(columnPreferences);\n\n const virtualizer = useVirtualizer({\n count: traces.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: () => ROW_HEIGHT,\n overscan: OVERSCAN,\n });\n\n const { getRowProps } = useDataListKeyboard({\n count: traces.length,\n containerRef: scrollRef,\n onNavigate: index => virtualizer.scrollToIndex(index),\n global: true,\n });\n\n const virtualItems = virtualizer.getVirtualItems();\n const totalSize = virtualizer.getTotalSize();\n const paddingTop = virtualItems[0]?.start ?? 0;\n const paddingBottom =\n virtualItems.length > 0 ? Math.max(0, totalSize - (virtualItems[virtualItems.length - 1]?.end ?? 0)) : 0;\n\n return (\n <TracesDataList\n reorderable\n id={listId}\n columns={columns}\n columnKeys={columnKeys}\n fit=\"container\"\n scrollRef={scrollRef}\n className=\"min-w-0\"\n >\n <TracesDataList.Top>\n {onSortChange ? (\n <TracesDataList.SortableTopCell sortKey=\"startedAt\" sort={createdSort} onSortChange={onSortChange}>\n Start\n </TracesDataList.SortableTopCell>\n ) : (\n <TracesDataList.TopCell>Start</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'type') && <TracesDataList.TopCell>Primitive type</TracesDataList.TopCell>}\n <TracesDataList.TopCell>Primitive name</TracesDataList.TopCell>\n {hasTraceColumn(columnPreferences, 'input') && <TracesDataList.TopCell>Input</TracesDataList.TopCell>}\n <TracesDataList.TopCell>Status</TracesDataList.TopCell>\n {hasTraceColumn(columnPreferences, 'duration') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Duration</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'endTime') && <TracesDataList.TopCell>End</TracesDataList.TopCell>}\n {hasTraceColumn(columnPreferences, 'environment') && (\n <TracesDataList.TopCell>Environment</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'inputTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Input tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'outputTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Output tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'totalTokens') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Total tokens</TracesDataList.TopCell>\n )}\n {hasTraceColumn(columnPreferences, 'estimatedCost') && (\n <TracesDataList.TopCell className=\"justify-end text-right\">Est. cost</TracesDataList.TopCell>\n )}\n {columnPreferences.customColumns.map(field => {\n const label = TRACE_CUSTOM_COLUMN_LABELS[field];\n const filterValues = onFilterByField ? distinctCustomColumnValues(traces, field) : [];\n if (!onFilterByField || filterValues.length === 0) {\n return <TracesDataList.TopCell key={field}>{label}</TracesDataList.TopCell>;\n }\n return (\n <TracesDataList.TopCell key={field} className=\"overflow-visible\">\n <DropdownMenu>\n <DropdownMenu.Trigger\n render={\n <button\n type=\"button\"\n className={cn('flex min-w-0 items-center gap-1 rounded-sm hover:text-foreground', focusRing)}\n >\n <span className=\"min-w-0 truncate\">{label}</span>\n <ListFilterIcon aria-hidden className=\"size-[1.2em] shrink-0\" />\n </button>\n }\n />\n <DropdownMenu.Content align=\"start\">\n <DropdownMenu.Label>Filter by value</DropdownMenu.Label>\n {filterValues.map(value => (\n <DropdownMenu.Item key={value} onSelect={() => onFilterByField(field, value)}>\n <Txt as=\"span\" variant=\"body-sm\" font=\"mono\" className=\"min-w-0 truncate\">\n {value}\n </Txt>\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n </TracesDataList.TopCell>\n );\n })}\n {columnPreferences.metadataKeys.map(key => (\n <TracesDataList.TopCellWithTooltip key={key} tooltip={key}>\n {key}\n </TracesDataList.TopCellWithTooltip>\n ))}\n </TracesDataList.Top>\n\n {isLoading ? (\n <DataListSkeletonRows columnCount={splitColumns(columns).length} />\n ) : traces.length === 0 ? (\n <TracesDataList.NoMatch\n message={filtersApplied ? 'No traces found for applied filters' : 'No traces found yet'}\n />\n ) : (\n <>\n <TracesDataList.Spacer height={paddingTop} />\n {virtualItems.map(vi => {\n const trace = traces[vi.index];\n if (!trace) return null;\n\n const isFeatured =\n trace.traceId === featuredTraceId && (featuredSpanId == null || trace.spanId === featuredSpanId);\n const rowKey = `${trace.traceId}:${trace.spanId ?? ''}`;\n const isRecentlyAdded = recentlyAddedKeys?.has(rowKey) ?? false;\n const displayDate = trace.startedAt ?? trace.createdAt;\n const usage = usageByTraceId?.get(trace.traceId);\n\n return (\n <TracesDataList.RowButton\n key={rowKey}\n ref={virtualizer.measureElement}\n data-index={vi.index}\n {...getRowProps(vi.index)}\n onClick={() => onTraceClick(trace)}\n featured={isFeatured}\n className={cn(isRecentlyAdded && 'animate-row-highlight')}\n >\n <TracesDataList.CreatedCell timestamp={displayDate} preset=\"day-time-seconds\" />\n {hasTraceColumn(columnPreferences, 'type') && <TracesDataList.TypeCell entityType={trace.entityType} />}\n <TracesDataList.NameCell\n name={trace.entityName || trace.name}\n parentSpanId={trace.parentSpanId}\n showLevelTooltip={isBranchesMode}\n />\n {hasTraceColumn(columnPreferences, 'input') && (\n <TracesDataList.InputCell input={trace.inputPreview ?? getInputPreview(trace.input)} />\n )}\n <TracesDataList.StatusCell status={trace.status} />\n {hasTraceColumn(columnPreferences, 'duration') && (\n <DataList.NumberCell font=\"mono\">\n {formatDuration(getSpanDurationMs(trace.startedAt, trace.endedAt))}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'endTime') && (\n <TracesDataList.CreatedCell timestamp={trace.endedAt ?? ''} preset=\"day-time-seconds\" />\n )}\n {hasTraceColumn(columnPreferences, 'environment') && (\n <DataList.TextCell>{trace.environment || '—'}</DataList.TextCell>\n )}\n {hasTraceColumn(columnPreferences, 'inputTokens') && (\n <DataList.NumberCell>\n {usage?.inputTokens === undefined ? undefined : formatCompactNumber(usage.inputTokens)}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'outputTokens') && (\n <DataList.NumberCell>\n {usage?.outputTokens === undefined ? undefined : formatCompactNumber(usage.outputTokens)}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'totalTokens') && (\n <DataList.NumberCell>\n {(() => {\n const total = sumTokens(usage);\n return total === undefined ? undefined : formatCompactNumber(total);\n })()}\n </DataList.NumberCell>\n )}\n {hasTraceColumn(columnPreferences, 'estimatedCost') && (\n <DataList.NumberCell>\n {usage?.estimatedCost === undefined ? undefined : formatCost(usage.estimatedCost, usage.costUnit)}\n </DataList.NumberCell>\n )}\n {columnPreferences.customColumns.map(field => (\n <DataList.TextCell font=\"mono\" key={field}>\n {customColumnValue(trace, field) ?? undefined}\n </DataList.TextCell>\n ))}\n {columnPreferences.metadataKeys.map(key => {\n const value = formatTraceMetadataValue(trace.metadata, key);\n return (\n <DataList.TextCell font=\"mono\" key={key}>\n {value}\n </DataList.TextCell>\n );\n })}\n </TracesDataList.RowButton>\n );\n })}\n <TracesDataList.Spacer height={paddingBottom} />\n <TracesDataList.NextPageLoading\n isLoading={isFetchingNextPage}\n hasMore={hasNextPage}\n setEndOfListElement={setEndOfListElement}\n />\n </>\n )}\n </TracesDataList>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -4,10 +4,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
5
  const jsxRuntime = require('react/jsx-runtime');
6
6
  const domains_traces_traceListColumns = require('../trace-list-columns.cjs.js');
7
- require('../../../data-list-_yDPF5wR.cjs');
8
- const dataListSkeleton = require('../../../data-list-skeleton-maUWF7Ri.cjs');
9
- require('react');
10
- require('../../../keyboard/keyboard-shortcuts-context.cjs.js');
7
+ const dataListSkeleton = require('../../../data-list-skeleton-CfVsXhx1.cjs');
11
8
  const skeleton = require('../../../skeleton-bUFvB8ok.cjs');
12
9
 
13
10
  function TracesPageSkeleton({ columnPreferences = domains_traces_traceListColumns.DEFAULT_TRACE_COLUMN_PREFERENCES }) {
@@ -1 +1 @@
1
- {"version":3,"file":"traces-page-skeleton.cjs.js","sources":["../../../../src/domains/traces/components/traces-page-skeleton.tsx"],"sourcesContent":["import { buildTraceListColumns, DEFAULT_TRACE_COLUMN_PREFERENCES } from '../trace-list-columns';\nimport type { TraceColumnPreferences } from '../trace-list-columns';\nimport { DataListSkeleton } from '@/ds/components/DataList';\nimport { Skeleton } from '@/ds/components/Skeleton';\n\nexport type TracesPageSkeletonProps = {\n columnPreferences?: TraceColumnPreferences;\n};\n\n/**\n * Page-level placeholder shown while filter-field discovery is pending: a toolbar-height\n * bar stands in for the FilterBar and the usual list skeleton for the trace rows.\n */\nexport function TracesPageSkeleton({ columnPreferences = DEFAULT_TRACE_COLUMN_PREFERENCES }: TracesPageSkeletonProps) {\n const columns = buildTraceListColumns(columnPreferences);\n return (\n <div\n className=\"flex h-full min-h-0 flex-col gap-2\"\n role=\"status\"\n aria-label=\"Loading traces\"\n data-testid=\"traces-page-skeleton\"\n >\n <div className=\"flex items-center gap-2\">\n <Skeleton className=\"h-control-md min-w-64 flex-1\" />\n <Skeleton className=\"h-control-md w-28\" />\n </div>\n <DataListSkeleton columns={columns} fit=\"container\" />\n </div>\n );\n}\n"],"names":["DEFAULT_TRACE_COLUMN_PREFERENCES","buildTraceListColumns","jsxs","jsx","Skeleton","DataListSkeleton"],"mappings":";;;;;;;;;;;;AAaO,SAAS,kBAAA,CAAmB,EAAE,iBAAA,GAAoBA,gEAAA,EAAiC,EAA4B;AACpH,EAAA,MAAM,OAAA,GAAUC,sDAAsB,iBAAiB,CAAA;AACvD,EAAA,uBACEC,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,oCAAA;AAAA,MACV,IAAA,EAAK,QAAA;AAAA,MACL,YAAA,EAAW,gBAAA;AAAA,MACX,aAAA,EAAY,sBAAA;AAAA,MAEZ,QAAA,EAAA;AAAA,wBAAAA,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACb,QAAA,EAAA;AAAA,0BAAAC,cAAA,CAACC,iBAAA,EAAA,EAAS,WAAU,8BAAA,EAA+B,CAAA;AAAA,0BACnDD,cAAA,CAACC,iBAAA,EAAA,EAAS,SAAA,EAAU,mBAAA,EAAoB;AAAA,SAAA,EAC1C,CAAA;AAAA,wBACAD,cAAA,CAACE,iCAAA,EAAA,EAAiB,OAAA,EAAkB,GAAA,EAAI,WAAA,EAAY;AAAA;AAAA;AAAA,GACtD;AAEJ;;;;"}
1
+ {"version":3,"file":"traces-page-skeleton.cjs.js","sources":["../../../../src/domains/traces/components/traces-page-skeleton.tsx"],"sourcesContent":["import { buildTraceListColumns, DEFAULT_TRACE_COLUMN_PREFERENCES } from '../trace-list-columns';\nimport type { TraceColumnPreferences } from '../trace-list-columns';\nimport { DataListSkeleton } from '@/ds/components/DataList';\nimport { Skeleton } from '@/ds/components/Skeleton';\n\nexport type TracesPageSkeletonProps = {\n columnPreferences?: TraceColumnPreferences;\n};\n\n/**\n * Page-level placeholder shown while filter-field discovery is pending: a toolbar-height\n * bar stands in for the FilterBar and the usual list skeleton for the trace rows.\n */\nexport function TracesPageSkeleton({ columnPreferences = DEFAULT_TRACE_COLUMN_PREFERENCES }: TracesPageSkeletonProps) {\n const columns = buildTraceListColumns(columnPreferences);\n return (\n <div\n className=\"flex h-full min-h-0 flex-col gap-2\"\n role=\"status\"\n aria-label=\"Loading traces\"\n data-testid=\"traces-page-skeleton\"\n >\n <div className=\"flex items-center gap-2\">\n <Skeleton className=\"h-control-md min-w-64 flex-1\" />\n <Skeleton className=\"h-control-md w-28\" />\n </div>\n <DataListSkeleton columns={columns} fit=\"container\" />\n </div>\n );\n}\n"],"names":["DEFAULT_TRACE_COLUMN_PREFERENCES","buildTraceListColumns","jsxs","jsx","Skeleton","DataListSkeleton"],"mappings":";;;;;;;;;AAaO,SAAS,kBAAA,CAAmB,EAAE,iBAAA,GAAoBA,gEAAA,EAAiC,EAA4B;AACpH,EAAA,MAAM,OAAA,GAAUC,sDAAsB,iBAAiB,CAAA;AACvD,EAAA,uBACEC,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,oCAAA;AAAA,MACV,IAAA,EAAK,QAAA;AAAA,MACL,YAAA,EAAW,gBAAA;AAAA,MACX,aAAA,EAAY,sBAAA;AAAA,MAEZ,QAAA,EAAA;AAAA,wBAAAA,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACb,QAAA,EAAA;AAAA,0BAAAC,cAAA,CAACC,iBAAA,EAAA,EAAS,WAAU,8BAAA,EAA+B,CAAA;AAAA,0BACnDD,cAAA,CAACC,iBAAA,EAAA,EAAS,SAAA,EAAU,mBAAA,EAAoB;AAAA,SAAA,EAC1C,CAAA;AAAA,wBACAD,cAAA,CAACE,iCAAA,EAAA,EAAiB,OAAA,EAAkB,GAAA,EAAI,WAAA,EAAY;AAAA;AAAA;AAAA,GACtD;AAEJ;;;;"}
@@ -1,9 +1,6 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { buildTraceListColumns, DEFAULT_TRACE_COLUMN_PREFERENCES } from '../trace-list-columns.es.js';
3
- import '../../../data-list-DDGpWucH.js';
4
- import { D as DataListSkeleton } from '../../../data-list-skeleton-CJFwZBlW.js';
5
- import 'react';
6
- import '../../../keyboard/keyboard-shortcuts-context.es.js';
3
+ import { D as DataListSkeleton } from '../../../data-list-skeleton-BmsDYJrA.js';
7
4
  import { S as Skeleton } from '../../../skeleton-Bjxvf3Y-.js';
8
5
 
9
6
  function TracesPageSkeleton({ columnPreferences = DEFAULT_TRACE_COLUMN_PREFERENCES }) {
@@ -1 +1 @@
1
- {"version":3,"file":"traces-page-skeleton.es.js","sources":["../../../../src/domains/traces/components/traces-page-skeleton.tsx"],"sourcesContent":["import { buildTraceListColumns, DEFAULT_TRACE_COLUMN_PREFERENCES } from '../trace-list-columns';\nimport type { TraceColumnPreferences } from '../trace-list-columns';\nimport { DataListSkeleton } from '@/ds/components/DataList';\nimport { Skeleton } from '@/ds/components/Skeleton';\n\nexport type TracesPageSkeletonProps = {\n columnPreferences?: TraceColumnPreferences;\n};\n\n/**\n * Page-level placeholder shown while filter-field discovery is pending: a toolbar-height\n * bar stands in for the FilterBar and the usual list skeleton for the trace rows.\n */\nexport function TracesPageSkeleton({ columnPreferences = DEFAULT_TRACE_COLUMN_PREFERENCES }: TracesPageSkeletonProps) {\n const columns = buildTraceListColumns(columnPreferences);\n return (\n <div\n className=\"flex h-full min-h-0 flex-col gap-2\"\n role=\"status\"\n aria-label=\"Loading traces\"\n data-testid=\"traces-page-skeleton\"\n >\n <div className=\"flex items-center gap-2\">\n <Skeleton className=\"h-control-md min-w-64 flex-1\" />\n <Skeleton className=\"h-control-md w-28\" />\n </div>\n <DataListSkeleton columns={columns} fit=\"container\" />\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;;;AAaO,SAAS,kBAAA,CAAmB,EAAE,iBAAA,GAAoB,gCAAA,EAAiC,EAA4B;AACpH,EAAA,MAAM,OAAA,GAAU,sBAAsB,iBAAiB,CAAA;AACvD,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,oCAAA;AAAA,MACV,IAAA,EAAK,QAAA;AAAA,MACL,YAAA,EAAW,gBAAA;AAAA,MACX,aAAA,EAAY,sBAAA;AAAA,MAEZ,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACb,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,QAAA,EAAA,EAAS,WAAU,8BAAA,EAA+B,CAAA;AAAA,0BACnD,GAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,mBAAA,EAAoB;AAAA,SAAA,EAC1C,CAAA;AAAA,wBACA,GAAA,CAAC,gBAAA,EAAA,EAAiB,OAAA,EAAkB,GAAA,EAAI,WAAA,EAAY;AAAA;AAAA;AAAA,GACtD;AAEJ;;;;"}
1
+ {"version":3,"file":"traces-page-skeleton.es.js","sources":["../../../../src/domains/traces/components/traces-page-skeleton.tsx"],"sourcesContent":["import { buildTraceListColumns, DEFAULT_TRACE_COLUMN_PREFERENCES } from '../trace-list-columns';\nimport type { TraceColumnPreferences } from '../trace-list-columns';\nimport { DataListSkeleton } from '@/ds/components/DataList';\nimport { Skeleton } from '@/ds/components/Skeleton';\n\nexport type TracesPageSkeletonProps = {\n columnPreferences?: TraceColumnPreferences;\n};\n\n/**\n * Page-level placeholder shown while filter-field discovery is pending: a toolbar-height\n * bar stands in for the FilterBar and the usual list skeleton for the trace rows.\n */\nexport function TracesPageSkeleton({ columnPreferences = DEFAULT_TRACE_COLUMN_PREFERENCES }: TracesPageSkeletonProps) {\n const columns = buildTraceListColumns(columnPreferences);\n return (\n <div\n className=\"flex h-full min-h-0 flex-col gap-2\"\n role=\"status\"\n aria-label=\"Loading traces\"\n data-testid=\"traces-page-skeleton\"\n >\n <div className=\"flex items-center gap-2\">\n <Skeleton className=\"h-control-md min-w-64 flex-1\" />\n <Skeleton className=\"h-control-md w-28\" />\n </div>\n <DataListSkeleton columns={columns} fit=\"container\" />\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;AAaO,SAAS,kBAAA,CAAmB,EAAE,iBAAA,GAAoB,gCAAA,EAAiC,EAA4B;AACpH,EAAA,MAAM,OAAA,GAAU,sBAAsB,iBAAiB,CAAA;AACvD,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,oCAAA;AAAA,MACV,IAAA,EAAK,QAAA;AAAA,MACL,YAAA,EAAW,gBAAA;AAAA,MACX,aAAA,EAAY,sBAAA;AAAA,MAEZ,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACb,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,QAAA,EAAA,EAAS,WAAU,8BAAA,EAA+B,CAAA;AAAA,0BACnD,GAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,mBAAA,EAAoB;AAAA,SAAA,EAC1C,CAAA;AAAA,wBACA,GAAA,CAAC,gBAAA,EAAA,EAAiB,OAAA,EAAkB,GAAA,EAAI,WAAA,EAAY;AAAA;AAAA;AAAA,GACtD;AAEJ;;;;"}
@@ -1,7 +1,7 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { useWorkflows } from '@mastra/react/hooks/workflows';
3
3
  import { useEffect } from 'react';
4
- import { C as Combobox } from '../../../combobox-DJu0ggNa.js';
4
+ import { C as Combobox } from '../../../combobox-DDUIREaG.js';
5
5
  import '@base-ui/react/combobox';
6
6
  import { useLinkComponent } from '../../../lib/framework.es.js';
7
7
  import { t as toast } from '../../../toast-WCmYXnuT.js';
@@ -3,10 +3,10 @@ import { ReactFlowProvider } from '@xyflow/react';
3
3
  import { List, X } from 'lucide-react';
4
4
  import { useWorkflowStepDetail } from '../context/workflow-step-detail-context.es.js';
5
5
  import { WorkflowDataInspector } from '../workflow/data/workflow-data-inspector.es.js';
6
- import { W as WorkflowNestedGraph } from '../../../use-workflow-graph-runtime-DS7eWso7.js';
6
+ import { W as WorkflowNestedGraph } from '../../../use-workflow-graph-runtime-CAyNWN_Z.js';
7
7
  import { T as Txt } from '../../../Txt-BuzYj7Vy.js';
8
8
  import { B as BADGE_COLORS } from '../../../workflow-condition-card-DnSlcZ2s.js';
9
- import { W as WorkflowCodeContent } from '../../../workflow-code-dialog-content-BUCZZoKf.js';
9
+ import { W as WorkflowCodeContent } from '../../../workflow-code-dialog-content-CNDoMFAV.js';
10
10
  import { WorkflowIcon } from '../../../icons/WorkflowIcon.es.js';
11
11
 
12
12
  function WorkflowStepDetailContent({ requestContext }) {
@@ -9,8 +9,8 @@ const React = require('react');
9
9
  const domains_workflows_components_workflowsList_workflowsSort = require('./workflows-sort.cjs.js');
10
10
  const domains_workflows_utils_nestedWorkflows = require('../../utils/nested-workflows.cjs.js');
11
11
  const Badge = require('../../../../Badge-BF6FbLH_.cjs');
12
- const dataList = require('../../../../data-list-_yDPF5wR.cjs');
13
- const dataListSkeleton = require('../../../../data-list-skeleton-maUWF7Ri.cjs');
12
+ const dataList = require('../../../../data-list-DkVOwk8l.cjs');
13
+ const dataListSkeleton = require('../../../../data-list-skeleton-CfVsXhx1.cjs');
14
14
  const useDataListKeyboard = require('../../../../use-data-list-keyboard-DF3tLe10.cjs');
15
15
  const disclosureChevron = require('../../../../disclosure-chevron-B_gmYFR5.cjs');
16
16
  const tooltip = require('../../../../tooltip-C4txPRSa.cjs');
@@ -5,8 +5,8 @@ import { useState, useMemo, useRef } from 'react';
5
5
  import { sortWorkflows } from './workflows-sort.es.js';
6
6
  import { flattenWorkflowTree } from '../../utils/nested-workflows.es.js';
7
7
  import { B as Badge } from '../../../../Badge-3-G2I_cx.js';
8
- import { e as DataList } from '../../../../data-list-DDGpWucH.js';
9
- import { D as DataListSkeleton } from '../../../../data-list-skeleton-CJFwZBlW.js';
8
+ import { D as DataList } from '../../../../data-list-Dv2lP-dU.js';
9
+ import { D as DataListSkeleton } from '../../../../data-list-skeleton-BmsDYJrA.js';
10
10
  import { u as useDataListKeyboard } from '../../../../use-data-list-keyboard-DFQr4t38.js';
11
11
  import { D as DisclosureChevron } from '../../../../disclosure-chevron-BWZ8Alz1.js';
12
12
  import { T as Tooltip, c as TooltipTrigger, a as TooltipContent } from '../../../../tooltip-CCZcMbgy.js';
@@ -1,7 +1,7 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { useWorkflowStepDetail } from '../../context/workflow-step-detail-context.es.js';
3
3
  import { useWorkflowData, workflowDataKey } from './use-workflow-data.es.js';
4
- import { W as WorkflowEdgeDataButton } from '../../../../workflow-edge-data-button-D5oK4NS5.js';
4
+ import { W as WorkflowEdgeDataButton } from '../../../../workflow-edge-data-button-6EDXzRxr.js';
5
5
 
6
6
  function WorkflowDataButton({ selection }) {
7
7
  const { stepDetail, showData } = useWorkflowStepDetail();
@@ -8,7 +8,7 @@ import { useWorkflowStepDetail } from '../../context/workflow-step-detail-contex
8
8
  import { useWorkflowData, workflowDataKey } from './use-workflow-data.es.js';
9
9
  import { B as Badge } from '../../../../Badge-3-G2I_cx.js';
10
10
  import { B as Button } from '../../../../Button-C8QDEN9j.js';
11
- import { C as CodeEditor } from '../../../../code-editor-DgfDaPAD.js';
11
+ import { C as CodeEditor } from '../../../../code-editor-D69saH4C.js';
12
12
  import { T as Txt } from '../../../../Txt-BuzYj7Vy.js';
13
13
 
14
14
  const DIRECTION_ICONS = { input: ArrowDownToLine, output: ArrowUpFromLine };
@@ -5,6 +5,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5
5
  const jsxRuntime = require('react/jsx-runtime');
6
6
  const codeEditor = require('../../../../code-editor-Dg6Y6Q8z.cjs');
7
7
  const field = require('../../../../field-D1SVMPMz.cjs');
8
+ require('../../../../field-control-aria-WzMGs0A4.cjs');
8
9
  const lib_form_components_formSubmitRow = require('../../../../lib/form/components/form-submit-row.cjs.js');
9
10
 
10
11
  function WorkflowJsonInput({
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-json-input.cjs.js","sources":["../../../../../src/domains/workflows/workflow/input/workflow-json-input.tsx"],"sourcesContent":["import type { WorkflowInputDataProps } from '../workflow-input-data';\nimport { CodeEditor } from '@/ds/components/CodeEditor';\nimport { Field, FieldError } from '@/ds/components/Field';\nimport { FormSubmitRow } from '@/lib/form/components/form-submit-row';\n\ntype WorkflowJsonInputProps = Omit<WorkflowInputDataProps, 'schema' | 'defaultValues' | 'onSubmit'> & {\n value: string;\n onChange: (value: string) => void;\n errors: string[];\n onSubmit: () => void;\n};\n\nexport function WorkflowJsonInput({\n value,\n onChange,\n errors,\n children,\n isSubmitLoading,\n onSubmit,\n ...submitProps\n}: WorkflowJsonInputProps) {\n return (\n <div className=\"flex flex-col gap-4\">\n <Field invalid={errors.length > 0}>\n <CodeEditor value={value} onChange={onChange} editable={!isSubmitLoading} />\n <FieldError>\n {errors.length > 0 && (\n <span className=\"space-y-1\">\n {errors.map(error => (\n <span key={error} className=\"block\">\n {error}\n </span>\n ))}\n </span>\n )}\n </FieldError>\n </Field>\n {children}\n <FormSubmitRow {...submitProps} isSubmitLoading={isSubmitLoading} onSubmit={onSubmit} />\n </div>\n );\n}\n"],"names":["jsxs","Field","jsx","CodeEditor","FieldError","FormSubmitRow"],"mappings":";;;;;;;;;AAYO,SAAS,iBAAA,CAAkB;AAAA,EAChC,KAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA2B;AACzB,EAAA,uBACEA,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,eAAA,CAACC,WAAA,EAAA,EAAM,OAAA,EAAS,MAAA,CAAO,MAAA,GAAS,CAAA,EAC9B,QAAA,EAAA;AAAA,sBAAAC,cAAA,CAACC,qBAAA,EAAA,EAAW,KAAA,EAAc,QAAA,EAAoB,QAAA,EAAU,CAAC,eAAA,EAAiB,CAAA;AAAA,sBAC1ED,cAAA,CAACE,oBACE,QAAA,EAAA,MAAA,CAAO,MAAA,GAAS,qBACfF,cAAA,CAAC,MAAA,EAAA,EAAK,WAAU,WAAA,EACb,QAAA,EAAA,MAAA,CAAO,IAAI,CAAA,KAAA,qBACVA,cAAA,CAAC,UAAiB,SAAA,EAAU,OAAA,EACzB,mBADQ,KAEX,CACD,GACH,CAAA,EAEJ;AAAA,KAAA,EACF,CAAA;AAAA,IACC,QAAA;AAAA,oBACDA,cAAA,CAACG,+CAAA,EAAA,EAAe,GAAG,WAAA,EAAa,iBAAkC,QAAA,EAAoB;AAAA,GAAA,EACxF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"workflow-json-input.cjs.js","sources":["../../../../../src/domains/workflows/workflow/input/workflow-json-input.tsx"],"sourcesContent":["import type { WorkflowInputDataProps } from '../workflow-input-data';\nimport { CodeEditor } from '@/ds/components/CodeEditor';\nimport { Field, FieldError } from '@/ds/components/Field';\nimport { FormSubmitRow } from '@/lib/form/components/form-submit-row';\n\ntype WorkflowJsonInputProps = Omit<WorkflowInputDataProps, 'schema' | 'defaultValues' | 'onSubmit'> & {\n value: string;\n onChange: (value: string) => void;\n errors: string[];\n onSubmit: () => void;\n};\n\nexport function WorkflowJsonInput({\n value,\n onChange,\n errors,\n children,\n isSubmitLoading,\n onSubmit,\n ...submitProps\n}: WorkflowJsonInputProps) {\n return (\n <div className=\"flex flex-col gap-4\">\n <Field invalid={errors.length > 0}>\n <CodeEditor value={value} onChange={onChange} editable={!isSubmitLoading} />\n <FieldError>\n {errors.length > 0 && (\n <span className=\"space-y-1\">\n {errors.map(error => (\n <span key={error} className=\"block\">\n {error}\n </span>\n ))}\n </span>\n )}\n </FieldError>\n </Field>\n {children}\n <FormSubmitRow {...submitProps} isSubmitLoading={isSubmitLoading} onSubmit={onSubmit} />\n </div>\n );\n}\n"],"names":["jsxs","Field","jsx","CodeEditor","FieldError","FormSubmitRow"],"mappings":";;;;;;;;;;AAYO,SAAS,iBAAA,CAAkB;AAAA,EAChC,KAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA2B;AACzB,EAAA,uBACEA,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,eAAA,CAACC,WAAA,EAAA,EAAM,OAAA,EAAS,MAAA,CAAO,MAAA,GAAS,CAAA,EAC9B,QAAA,EAAA;AAAA,sBAAAC,cAAA,CAACC,qBAAA,EAAA,EAAW,KAAA,EAAc,QAAA,EAAoB,QAAA,EAAU,CAAC,eAAA,EAAiB,CAAA;AAAA,sBAC1ED,cAAA,CAACE,oBACE,QAAA,EAAA,MAAA,CAAO,MAAA,GAAS,qBACfF,cAAA,CAAC,MAAA,EAAA,EAAK,WAAU,WAAA,EACb,QAAA,EAAA,MAAA,CAAO,IAAI,CAAA,KAAA,qBACVA,cAAA,CAAC,UAAiB,SAAA,EAAU,OAAA,EACzB,mBADQ,KAEX,CACD,GACH,CAAA,EAEJ;AAAA,KAAA,EACF,CAAA;AAAA,IACC,QAAA;AAAA,oBACDA,cAAA,CAACG,+CAAA,EAAA,EAAe,GAAG,WAAA,EAAa,iBAAkC,QAAA,EAAoB;AAAA,GAAA,EACxF,CAAA;AAEJ;;;;"}
@@ -1,6 +1,7 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { C as CodeEditor } from '../../../../code-editor-DgfDaPAD.js';
3
- import { F as Field, c as FieldError } from '../../../../field-Bc8Ewf_M.js';
2
+ import { C as CodeEditor } from '../../../../code-editor-D69saH4C.js';
3
+ import { F as Field, c as FieldError } from '../../../../field-B89BEZg4.js';
4
+ import '../../../../field-control-aria-DB6y41tQ.js';
4
5
  import { FormSubmitRow } from '../../../../lib/form/components/form-submit-row.es.js';
5
6
 
6
7
  function WorkflowJsonInput({
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-json-input.es.js","sources":["../../../../../src/domains/workflows/workflow/input/workflow-json-input.tsx"],"sourcesContent":["import type { WorkflowInputDataProps } from '../workflow-input-data';\nimport { CodeEditor } from '@/ds/components/CodeEditor';\nimport { Field, FieldError } from '@/ds/components/Field';\nimport { FormSubmitRow } from '@/lib/form/components/form-submit-row';\n\ntype WorkflowJsonInputProps = Omit<WorkflowInputDataProps, 'schema' | 'defaultValues' | 'onSubmit'> & {\n value: string;\n onChange: (value: string) => void;\n errors: string[];\n onSubmit: () => void;\n};\n\nexport function WorkflowJsonInput({\n value,\n onChange,\n errors,\n children,\n isSubmitLoading,\n onSubmit,\n ...submitProps\n}: WorkflowJsonInputProps) {\n return (\n <div className=\"flex flex-col gap-4\">\n <Field invalid={errors.length > 0}>\n <CodeEditor value={value} onChange={onChange} editable={!isSubmitLoading} />\n <FieldError>\n {errors.length > 0 && (\n <span className=\"space-y-1\">\n {errors.map(error => (\n <span key={error} className=\"block\">\n {error}\n </span>\n ))}\n </span>\n )}\n </FieldError>\n </Field>\n {children}\n <FormSubmitRow {...submitProps} isSubmitLoading={isSubmitLoading} onSubmit={onSubmit} />\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;AAYO,SAAS,iBAAA,CAAkB;AAAA,EAChC,KAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA2B;AACzB,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAA,EACb,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,KAAA,EAAA,EAAM,OAAA,EAAS,MAAA,CAAO,MAAA,GAAS,CAAA,EAC9B,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAc,QAAA,EAAoB,QAAA,EAAU,CAAC,eAAA,EAAiB,CAAA;AAAA,sBAC1E,GAAA,CAAC,cACE,QAAA,EAAA,MAAA,CAAO,MAAA,GAAS,qBACf,GAAA,CAAC,MAAA,EAAA,EAAK,WAAU,WAAA,EACb,QAAA,EAAA,MAAA,CAAO,IAAI,CAAA,KAAA,qBACV,GAAA,CAAC,UAAiB,SAAA,EAAU,OAAA,EACzB,mBADQ,KAEX,CACD,GACH,CAAA,EAEJ;AAAA,KAAA,EACF,CAAA;AAAA,IACC,QAAA;AAAA,oBACD,GAAA,CAAC,aAAA,EAAA,EAAe,GAAG,WAAA,EAAa,iBAAkC,QAAA,EAAoB;AAAA,GAAA,EACxF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"workflow-json-input.es.js","sources":["../../../../../src/domains/workflows/workflow/input/workflow-json-input.tsx"],"sourcesContent":["import type { WorkflowInputDataProps } from '../workflow-input-data';\nimport { CodeEditor } from '@/ds/components/CodeEditor';\nimport { Field, FieldError } from '@/ds/components/Field';\nimport { FormSubmitRow } from '@/lib/form/components/form-submit-row';\n\ntype WorkflowJsonInputProps = Omit<WorkflowInputDataProps, 'schema' | 'defaultValues' | 'onSubmit'> & {\n value: string;\n onChange: (value: string) => void;\n errors: string[];\n onSubmit: () => void;\n};\n\nexport function WorkflowJsonInput({\n value,\n onChange,\n errors,\n children,\n isSubmitLoading,\n onSubmit,\n ...submitProps\n}: WorkflowJsonInputProps) {\n return (\n <div className=\"flex flex-col gap-4\">\n <Field invalid={errors.length > 0}>\n <CodeEditor value={value} onChange={onChange} editable={!isSubmitLoading} />\n <FieldError>\n {errors.length > 0 && (\n <span className=\"space-y-1\">\n {errors.map(error => (\n <span key={error} className=\"block\">\n {error}\n </span>\n ))}\n </span>\n )}\n </FieldError>\n </Field>\n {children}\n <FormSubmitRow {...submitProps} isSubmitLoading={isSubmitLoading} onSubmit={onSubmit} />\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;AAYO,SAAS,iBAAA,CAAkB;AAAA,EAChC,KAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA2B;AACzB,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAA,EACb,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,KAAA,EAAA,EAAM,OAAA,EAAS,MAAA,CAAO,MAAA,GAAS,CAAA,EAC9B,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAc,QAAA,EAAoB,QAAA,EAAU,CAAC,eAAA,EAAiB,CAAA;AAAA,sBAC1E,GAAA,CAAC,cACE,QAAA,EAAA,MAAA,CAAO,MAAA,GAAS,qBACf,GAAA,CAAC,MAAA,EAAA,EAAK,WAAU,WAAA,EACb,QAAA,EAAA,MAAA,CAAO,IAAI,CAAA,KAAA,qBACV,GAAA,CAAC,UAAiB,SAAA,EAAU,OAAA,EACzB,mBADQ,KAEX,CACD,GACH,CAAA,EAEJ;AAAA,KAAA,EACF,CAAA;AAAA,IACC,QAAA;AAAA,oBACD,GAAA,CAAC,aAAA,EAAA,EAAe,GAAG,WAAA,EAAa,iBAAkC,QAAA,EAAoB;AAAA,GAAA,EACxF,CAAA;AAEJ;;;;"}
@@ -6,6 +6,7 @@ const jsxRuntime = require('react/jsx-runtime');
6
6
  const React = require('react');
7
7
  const domains_workflows_workflow_input_processorInput = require('./processor-input.cjs.js');
8
8
  const field = require('../../../../field-D1SVMPMz.cjs');
9
+ require('../../../../field-control-aria-WzMGs0A4.cjs');
9
10
  const select = require('../../../../select-Cdz5I0A5.cjs');
10
11
  const textarea = require('../../../../textarea-Cy51PMd4.cjs');
11
12
  const lib_form_components_formSubmitRow = require('../../../../lib/form/components/form-submit-row.cjs.js');
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-processor-input.cjs.js","sources":["../../../../../src/domains/workflows/workflow/input/workflow-processor-input.tsx"],"sourcesContent":["import { useState } from 'react';\nimport type { WorkflowInputDataProps } from '../workflow-input-data';\nimport { getProcessorMessage, updateProcessorMessage, withPhaseRole } from './processor-input';\nimport type { ProcessorDraft } from './processor-input';\nimport { Field, FieldDescription, FieldError, FieldLabel } from '@/ds/components/Field';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select';\nimport { Textarea } from '@/ds/components/Textarea';\nimport { FormSubmitRow } from '@/lib/form/components/form-submit-row';\n\nconst PROCESSOR_PHASES = [\n { value: 'input', label: 'Input - Process input messages before LLM' },\n { value: 'inputStep', label: 'Input Step - Process at each agentic loop step' },\n { value: 'outputStream', label: 'Output Stream - Process streaming chunks' },\n { value: 'outputResult', label: 'Output Result - Process complete output' },\n { value: 'outputStep', label: 'Output Step - Process after each LLM response' },\n];\n\ntype WorkflowProcessorInputProps = Omit<WorkflowInputDataProps, 'defaultValues'> & {\n value: ProcessorDraft;\n onChange: (draft: ProcessorDraft) => void;\n};\n\ntype ProcessorErrors = { phase: string[]; message: string[] };\n\nconst NO_ERRORS: ProcessorErrors = { phase: [], message: [] };\n\nfunction ErrorLines({ errors }: { errors: string[] }) {\n return (\n <span className=\"space-y-1\">\n {errors.map(error => (\n <span key={error} className=\"block\">\n {error}\n </span>\n ))}\n </span>\n );\n}\n\nexport const WorkflowProcessorInput = ({\n schema,\n value,\n onChange,\n isSubmitLoading,\n submitButtonLabel,\n onSubmit,\n children,\n submitActions,\n leftActions,\n submitButtonIcon,\n submitButtonVariant,\n submitButtonFullWidth,\n}: WorkflowProcessorInputProps) => {\n const [errors, setErrors] = useState<ProcessorErrors>(NO_ERRORS);\n\n const handleSubmit = () => {\n setErrors(NO_ERRORS);\n\n const result = schema.safeParse(value);\n if (!result.success) {\n const nextErrors: ProcessorErrors = { phase: [], message: [] };\n for (const issue of result.error.issues) {\n const fieldErrors = issue.path[0] === 'phase' ? nextErrors.phase : nextErrors.message;\n fieldErrors.push(`${issue.path.join('.')}: ${issue.message}`);\n }\n setErrors(nextErrors);\n return;\n }\n onSubmit(result.data);\n };\n\n return (\n <div className=\"flex flex-col gap-4\">\n <Field invalid={errors.phase.length > 0}>\n <FieldLabel>Phase</FieldLabel>\n <Select\n value={value.phase}\n onValueChange={phase => {\n setErrors(NO_ERRORS);\n onChange(withPhaseRole({ ...value, phase }));\n }}\n disabled={isSubmitLoading}\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue placeholder=\"Select phase\" />\n </SelectTrigger>\n <SelectContent>\n {PROCESSOR_PHASES.map(phaseOption => (\n <SelectItem key={phaseOption.value} value={phaseOption.value}>\n {phaseOption.value}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <FieldDescription>\n {PROCESSOR_PHASES.find(phaseOption => phaseOption.value === value.phase)?.label}\n </FieldDescription>\n <FieldError>{errors.phase.length > 0 && <ErrorLines errors={errors.phase} />}</FieldError>\n </Field>\n\n <Field invalid={errors.message.length > 0}>\n <FieldLabel>Test Message</FieldLabel>\n <Textarea\n value={getProcessorMessage(value)}\n onChange={event => {\n setErrors(NO_ERRORS);\n onChange(withPhaseRole(updateProcessorMessage(value, event.target.value)));\n }}\n placeholder=\"Enter a test message...\"\n rows={4}\n disabled={isSubmitLoading}\n />\n <FieldError>{errors.message.length > 0 && <ErrorLines errors={errors.message} />}</FieldError>\n </Field>\n\n {children}\n\n <FormSubmitRow\n isSubmitLoading={isSubmitLoading}\n submitButtonLabel={submitButtonLabel}\n submitActions={submitActions}\n leftActions={leftActions}\n submitButtonIcon={submitButtonIcon}\n submitButtonVariant={submitButtonVariant}\n submitButtonFullWidth={submitButtonFullWidth}\n onSubmit={handleSubmit}\n />\n </div>\n );\n};\n"],"names":["jsx","useState","jsxs","Field","FieldLabel","Select","withPhaseRole","SelectTrigger","SelectValue","SelectContent","SelectItem","FieldDescription","FieldError","Textarea","getProcessorMessage","updateProcessorMessage","FormSubmitRow"],"mappings":"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"}
1
+ {"version":3,"file":"workflow-processor-input.cjs.js","sources":["../../../../../src/domains/workflows/workflow/input/workflow-processor-input.tsx"],"sourcesContent":["import { useState } from 'react';\nimport type { WorkflowInputDataProps } from '../workflow-input-data';\nimport { getProcessorMessage, updateProcessorMessage, withPhaseRole } from './processor-input';\nimport type { ProcessorDraft } from './processor-input';\nimport { Field, FieldDescription, FieldError, FieldLabel } from '@/ds/components/Field';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select';\nimport { Textarea } from '@/ds/components/Textarea';\nimport { FormSubmitRow } from '@/lib/form/components/form-submit-row';\n\nconst PROCESSOR_PHASES = [\n { value: 'input', label: 'Input - Process input messages before LLM' },\n { value: 'inputStep', label: 'Input Step - Process at each agentic loop step' },\n { value: 'outputStream', label: 'Output Stream - Process streaming chunks' },\n { value: 'outputResult', label: 'Output Result - Process complete output' },\n { value: 'outputStep', label: 'Output Step - Process after each LLM response' },\n];\n\ntype WorkflowProcessorInputProps = Omit<WorkflowInputDataProps, 'defaultValues'> & {\n value: ProcessorDraft;\n onChange: (draft: ProcessorDraft) => void;\n};\n\ntype ProcessorErrors = { phase: string[]; message: string[] };\n\nconst NO_ERRORS: ProcessorErrors = { phase: [], message: [] };\n\nfunction ErrorLines({ errors }: { errors: string[] }) {\n return (\n <span className=\"space-y-1\">\n {errors.map(error => (\n <span key={error} className=\"block\">\n {error}\n </span>\n ))}\n </span>\n );\n}\n\nexport const WorkflowProcessorInput = ({\n schema,\n value,\n onChange,\n isSubmitLoading,\n submitButtonLabel,\n onSubmit,\n children,\n submitActions,\n leftActions,\n submitButtonIcon,\n submitButtonVariant,\n submitButtonFullWidth,\n}: WorkflowProcessorInputProps) => {\n const [errors, setErrors] = useState<ProcessorErrors>(NO_ERRORS);\n\n const handleSubmit = () => {\n setErrors(NO_ERRORS);\n\n const result = schema.safeParse(value);\n if (!result.success) {\n const nextErrors: ProcessorErrors = { phase: [], message: [] };\n for (const issue of result.error.issues) {\n const fieldErrors = issue.path[0] === 'phase' ? nextErrors.phase : nextErrors.message;\n fieldErrors.push(`${issue.path.join('.')}: ${issue.message}`);\n }\n setErrors(nextErrors);\n return;\n }\n onSubmit(result.data);\n };\n\n return (\n <div className=\"flex flex-col gap-4\">\n <Field invalid={errors.phase.length > 0}>\n <FieldLabel>Phase</FieldLabel>\n <Select\n value={value.phase}\n onValueChange={phase => {\n setErrors(NO_ERRORS);\n onChange(withPhaseRole({ ...value, phase }));\n }}\n disabled={isSubmitLoading}\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue placeholder=\"Select phase\" />\n </SelectTrigger>\n <SelectContent>\n {PROCESSOR_PHASES.map(phaseOption => (\n <SelectItem key={phaseOption.value} value={phaseOption.value}>\n {phaseOption.value}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <FieldDescription>\n {PROCESSOR_PHASES.find(phaseOption => phaseOption.value === value.phase)?.label}\n </FieldDescription>\n <FieldError>{errors.phase.length > 0 && <ErrorLines errors={errors.phase} />}</FieldError>\n </Field>\n\n <Field invalid={errors.message.length > 0}>\n <FieldLabel>Test Message</FieldLabel>\n <Textarea\n value={getProcessorMessage(value)}\n onChange={event => {\n setErrors(NO_ERRORS);\n onChange(withPhaseRole(updateProcessorMessage(value, event.target.value)));\n }}\n placeholder=\"Enter a test message...\"\n rows={4}\n disabled={isSubmitLoading}\n />\n <FieldError>{errors.message.length > 0 && <ErrorLines errors={errors.message} />}</FieldError>\n </Field>\n\n {children}\n\n <FormSubmitRow\n isSubmitLoading={isSubmitLoading}\n submitButtonLabel={submitButtonLabel}\n submitActions={submitActions}\n leftActions={leftActions}\n submitButtonIcon={submitButtonIcon}\n submitButtonVariant={submitButtonVariant}\n submitButtonFullWidth={submitButtonFullWidth}\n onSubmit={handleSubmit}\n />\n </div>\n );\n};\n"],"names":["jsx","useState","jsxs","Field","FieldLabel","Select","withPhaseRole","SelectTrigger","SelectValue","SelectContent","SelectItem","FieldDescription","FieldError","Textarea","getProcessorMessage","updateProcessorMessage","FormSubmitRow"],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { useState } from 'react';
3
3
  import { withPhaseRole, updateProcessorMessage, getProcessorMessage } from './processor-input.es.js';
4
- import { F as Field, e as FieldLabel, b as FieldDescription, c as FieldError } from '../../../../field-Bc8Ewf_M.js';
5
- import { S as Select, d as SelectTrigger, e as SelectValue, a as SelectContent, c as SelectItem } from '../../../../select-BGAiIHnS.js';
4
+ import { F as Field, e as FieldLabel, b as FieldDescription, c as FieldError } from '../../../../field-B89BEZg4.js';
5
+ import '../../../../field-control-aria-DB6y41tQ.js';
6
+ import { S as Select, d as SelectTrigger, e as SelectValue, a as SelectContent, c as SelectItem } from '../../../../select-N2lgBRsg.js';
6
7
  import { T as Textarea } from '../../../../textarea-Bl3htAGs.js';
7
8
  import { FormSubmitRow } from '../../../../lib/form/components/form-submit-row.es.js';
8
9
 
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-processor-input.es.js","sources":["../../../../../src/domains/workflows/workflow/input/workflow-processor-input.tsx"],"sourcesContent":["import { useState } from 'react';\nimport type { WorkflowInputDataProps } from '../workflow-input-data';\nimport { getProcessorMessage, updateProcessorMessage, withPhaseRole } from './processor-input';\nimport type { ProcessorDraft } from './processor-input';\nimport { Field, FieldDescription, FieldError, FieldLabel } from '@/ds/components/Field';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select';\nimport { Textarea } from '@/ds/components/Textarea';\nimport { FormSubmitRow } from '@/lib/form/components/form-submit-row';\n\nconst PROCESSOR_PHASES = [\n { value: 'input', label: 'Input - Process input messages before LLM' },\n { value: 'inputStep', label: 'Input Step - Process at each agentic loop step' },\n { value: 'outputStream', label: 'Output Stream - Process streaming chunks' },\n { value: 'outputResult', label: 'Output Result - Process complete output' },\n { value: 'outputStep', label: 'Output Step - Process after each LLM response' },\n];\n\ntype WorkflowProcessorInputProps = Omit<WorkflowInputDataProps, 'defaultValues'> & {\n value: ProcessorDraft;\n onChange: (draft: ProcessorDraft) => void;\n};\n\ntype ProcessorErrors = { phase: string[]; message: string[] };\n\nconst NO_ERRORS: ProcessorErrors = { phase: [], message: [] };\n\nfunction ErrorLines({ errors }: { errors: string[] }) {\n return (\n <span className=\"space-y-1\">\n {errors.map(error => (\n <span key={error} className=\"block\">\n {error}\n </span>\n ))}\n </span>\n );\n}\n\nexport const WorkflowProcessorInput = ({\n schema,\n value,\n onChange,\n isSubmitLoading,\n submitButtonLabel,\n onSubmit,\n children,\n submitActions,\n leftActions,\n submitButtonIcon,\n submitButtonVariant,\n submitButtonFullWidth,\n}: WorkflowProcessorInputProps) => {\n const [errors, setErrors] = useState<ProcessorErrors>(NO_ERRORS);\n\n const handleSubmit = () => {\n setErrors(NO_ERRORS);\n\n const result = schema.safeParse(value);\n if (!result.success) {\n const nextErrors: ProcessorErrors = { phase: [], message: [] };\n for (const issue of result.error.issues) {\n const fieldErrors = issue.path[0] === 'phase' ? nextErrors.phase : nextErrors.message;\n fieldErrors.push(`${issue.path.join('.')}: ${issue.message}`);\n }\n setErrors(nextErrors);\n return;\n }\n onSubmit(result.data);\n };\n\n return (\n <div className=\"flex flex-col gap-4\">\n <Field invalid={errors.phase.length > 0}>\n <FieldLabel>Phase</FieldLabel>\n <Select\n value={value.phase}\n onValueChange={phase => {\n setErrors(NO_ERRORS);\n onChange(withPhaseRole({ ...value, phase }));\n }}\n disabled={isSubmitLoading}\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue placeholder=\"Select phase\" />\n </SelectTrigger>\n <SelectContent>\n {PROCESSOR_PHASES.map(phaseOption => (\n <SelectItem key={phaseOption.value} value={phaseOption.value}>\n {phaseOption.value}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <FieldDescription>\n {PROCESSOR_PHASES.find(phaseOption => phaseOption.value === value.phase)?.label}\n </FieldDescription>\n <FieldError>{errors.phase.length > 0 && <ErrorLines errors={errors.phase} />}</FieldError>\n </Field>\n\n <Field invalid={errors.message.length > 0}>\n <FieldLabel>Test Message</FieldLabel>\n <Textarea\n value={getProcessorMessage(value)}\n onChange={event => {\n setErrors(NO_ERRORS);\n onChange(withPhaseRole(updateProcessorMessage(value, event.target.value)));\n }}\n placeholder=\"Enter a test message...\"\n rows={4}\n disabled={isSubmitLoading}\n />\n <FieldError>{errors.message.length > 0 && <ErrorLines errors={errors.message} />}</FieldError>\n </Field>\n\n {children}\n\n <FormSubmitRow\n isSubmitLoading={isSubmitLoading}\n submitButtonLabel={submitButtonLabel}\n submitActions={submitActions}\n leftActions={leftActions}\n submitButtonIcon={submitButtonIcon}\n submitButtonVariant={submitButtonVariant}\n submitButtonFullWidth={submitButtonFullWidth}\n onSubmit={handleSubmit}\n />\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-processor-input.es.js","sources":["../../../../../src/domains/workflows/workflow/input/workflow-processor-input.tsx"],"sourcesContent":["import { useState } from 'react';\nimport type { WorkflowInputDataProps } from '../workflow-input-data';\nimport { getProcessorMessage, updateProcessorMessage, withPhaseRole } from './processor-input';\nimport type { ProcessorDraft } from './processor-input';\nimport { Field, FieldDescription, FieldError, FieldLabel } from '@/ds/components/Field';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select';\nimport { Textarea } from '@/ds/components/Textarea';\nimport { FormSubmitRow } from '@/lib/form/components/form-submit-row';\n\nconst PROCESSOR_PHASES = [\n { value: 'input', label: 'Input - Process input messages before LLM' },\n { value: 'inputStep', label: 'Input Step - Process at each agentic loop step' },\n { value: 'outputStream', label: 'Output Stream - Process streaming chunks' },\n { value: 'outputResult', label: 'Output Result - Process complete output' },\n { value: 'outputStep', label: 'Output Step - Process after each LLM response' },\n];\n\ntype WorkflowProcessorInputProps = Omit<WorkflowInputDataProps, 'defaultValues'> & {\n value: ProcessorDraft;\n onChange: (draft: ProcessorDraft) => void;\n};\n\ntype ProcessorErrors = { phase: string[]; message: string[] };\n\nconst NO_ERRORS: ProcessorErrors = { phase: [], message: [] };\n\nfunction ErrorLines({ errors }: { errors: string[] }) {\n return (\n <span className=\"space-y-1\">\n {errors.map(error => (\n <span key={error} className=\"block\">\n {error}\n </span>\n ))}\n </span>\n );\n}\n\nexport const WorkflowProcessorInput = ({\n schema,\n value,\n onChange,\n isSubmitLoading,\n submitButtonLabel,\n onSubmit,\n children,\n submitActions,\n leftActions,\n submitButtonIcon,\n submitButtonVariant,\n submitButtonFullWidth,\n}: WorkflowProcessorInputProps) => {\n const [errors, setErrors] = useState<ProcessorErrors>(NO_ERRORS);\n\n const handleSubmit = () => {\n setErrors(NO_ERRORS);\n\n const result = schema.safeParse(value);\n if (!result.success) {\n const nextErrors: ProcessorErrors = { phase: [], message: [] };\n for (const issue of result.error.issues) {\n const fieldErrors = issue.path[0] === 'phase' ? nextErrors.phase : nextErrors.message;\n fieldErrors.push(`${issue.path.join('.')}: ${issue.message}`);\n }\n setErrors(nextErrors);\n return;\n }\n onSubmit(result.data);\n };\n\n return (\n <div className=\"flex flex-col gap-4\">\n <Field invalid={errors.phase.length > 0}>\n <FieldLabel>Phase</FieldLabel>\n <Select\n value={value.phase}\n onValueChange={phase => {\n setErrors(NO_ERRORS);\n onChange(withPhaseRole({ ...value, phase }));\n }}\n disabled={isSubmitLoading}\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue placeholder=\"Select phase\" />\n </SelectTrigger>\n <SelectContent>\n {PROCESSOR_PHASES.map(phaseOption => (\n <SelectItem key={phaseOption.value} value={phaseOption.value}>\n {phaseOption.value}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <FieldDescription>\n {PROCESSOR_PHASES.find(phaseOption => phaseOption.value === value.phase)?.label}\n </FieldDescription>\n <FieldError>{errors.phase.length > 0 && <ErrorLines errors={errors.phase} />}</FieldError>\n </Field>\n\n <Field invalid={errors.message.length > 0}>\n <FieldLabel>Test Message</FieldLabel>\n <Textarea\n value={getProcessorMessage(value)}\n onChange={event => {\n setErrors(NO_ERRORS);\n onChange(withPhaseRole(updateProcessorMessage(value, event.target.value)));\n }}\n placeholder=\"Enter a test message...\"\n rows={4}\n disabled={isSubmitLoading}\n />\n <FieldError>{errors.message.length > 0 && <ErrorLines errors={errors.message} />}</FieldError>\n </Field>\n\n {children}\n\n <FormSubmitRow\n isSubmitLoading={isSubmitLoading}\n submitButtonLabel={submitButtonLabel}\n submitActions={submitActions}\n leftActions={leftActions}\n submitButtonIcon={submitButtonIcon}\n submitButtonVariant={submitButtonVariant}\n submitButtonFullWidth={submitButtonFullWidth}\n onSubmit={handleSubmit}\n />\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import './data/workflow-edge-data-groups.es.js';
6
6
  import './utils.es.js';
7
7
  import './workflow-boundary-data.es.js';
8
8
  import './workflow-data-edge.es.js';
9
- export { u as useWorkflowGraphRuntime } from '../../../use-workflow-graph-runtime-DS7eWso7.js';
9
+ export { u as useWorkflowGraphRuntime } from '../../../use-workflow-graph-runtime-CAyNWN_Z.js';
10
10
  import './workflow-step-node-utils.es.js';
11
11
  import '../../../types-CvneO3z0.js';
12
12
  import '../../../workflow-condition-card-DnSlcZ2s.js';
@@ -1,6 +1,6 @@
1
1
  import 'react/jsx-runtime';
2
2
  import '@xyflow/react';
3
3
  import 'lucide-react';
4
- export { a as WorkflowBodyGraph } from '../../../use-workflow-graph-runtime-DS7eWso7.js';
4
+ export { a as WorkflowBodyGraph } from '../../../use-workflow-graph-runtime-CAyNWN_Z.js';
5
5
  import '../../../Txt-BuzYj7Vy.js';
6
6
  //# sourceMappingURL=workflow-body-graph.es.js.map