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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (883) hide show
  1. package/README.md +10 -0
  2. package/components.css +7 -0
  3. package/dist/{Avatar-98bsFrSV.js → Avatar-BjaG9NU_.js} +10 -8
  4. package/dist/Avatar-BjaG9NU_.js.map +1 -0
  5. package/dist/{Avatar-BCj8SvOb.cjs → Avatar-DM90rmwx.cjs} +10 -8
  6. package/dist/Avatar-DM90rmwx.cjs.map +1 -0
  7. package/dist/{Button-DH1aTzbs.cjs → Button-C4I05uT4.cjs} +17 -10
  8. package/dist/Button-C4I05uT4.cjs.map +1 -0
  9. package/dist/{Button-EGoajBQY.js → Button-D8a5EWJ5.js} +18 -11
  10. package/dist/Button-D8a5EWJ5.js.map +1 -0
  11. package/dist/{ErrorBoundary-DQPzT6am.js → ErrorBoundary-C6JifxpQ.js} +2 -2
  12. package/dist/{ErrorBoundary-DQPzT6am.js.map → ErrorBoundary-C6JifxpQ.js.map} +1 -1
  13. package/dist/{ErrorBoundary-CpUob9SO.cjs → ErrorBoundary-DP1JqmTo.cjs} +2 -2
  14. package/dist/{ErrorBoundary-CpUob9SO.cjs.map → ErrorBoundary-DP1JqmTo.cjs.map} +1 -1
  15. package/dist/Notice-BioYTS4b.js.map +1 -1
  16. package/dist/Notice-DYgIy4FO.cjs.map +1 -1
  17. package/dist/{activity-CsTUr5_l.js → activity-B7c_nQMn.js} +2 -2
  18. package/dist/activity-B7c_nQMn.js.map +1 -0
  19. package/dist/{activity-2tovEdIP.cjs → activity-D3iI9pYN.cjs} +2 -2
  20. package/dist/activity-D3iI9pYN.cjs.map +1 -0
  21. package/dist/{alert-dialog-B7JTnkF4.js → alert-dialog-B13NSeKN.js} +3 -3
  22. package/dist/{alert-dialog-B7JTnkF4.js.map → alert-dialog-B13NSeKN.js.map} +1 -1
  23. package/dist/{alert-dialog-B1gWLQm2.cjs → alert-dialog-DY2JJAnk.cjs} +3 -3
  24. package/dist/{alert-dialog-B1gWLQm2.cjs.map → alert-dialog-DY2JJAnk.cjs.map} +1 -1
  25. package/dist/arrival-C1hkyLHm.js.map +1 -1
  26. package/dist/arrival-Cvxloi0B.cjs.map +1 -1
  27. package/dist/{ask-user-card-DroerVbm.cjs → ask-user-card-DiFQcUzM.cjs} +2 -2
  28. package/dist/ask-user-card-DiFQcUzM.cjs.map +1 -0
  29. package/dist/{ask-user-card-BCjsjimu.js → ask-user-card-DnvW7jXS.js} +2 -2
  30. package/dist/{ask-user-card-BCjsjimu.js.map → ask-user-card-DnvW7jXS.js.map} +1 -1
  31. package/dist/{avatar-size-CNR0U-LW.js → avatar-size-BXzy28Bx.js} +4 -1
  32. package/dist/avatar-size-BXzy28Bx.js.map +1 -0
  33. package/dist/{avatar-size-DxStOo5A.cjs → avatar-size-DIFE4I8A.cjs} +4 -1
  34. package/dist/avatar-size-DIFE4I8A.cjs.map +1 -0
  35. package/dist/buttons-group.css +0 -4
  36. package/dist/code-DJReJPSX.cjs.map +1 -1
  37. package/dist/code-DLuATvYu.js.map +1 -1
  38. package/dist/{code-block-vpcX2sDQ.cjs → code-block-C79fiykv.cjs} +4 -4
  39. package/dist/{code-block-vpcX2sDQ.cjs.map → code-block-C79fiykv.cjs.map} +1 -1
  40. package/dist/{code-block-DIDa6lg6.js → code-block-D6A1DMv-.js} +4 -4
  41. package/dist/{code-block-DIDa6lg6.js.map → code-block-D6A1DMv-.js.map} +1 -1
  42. package/dist/{code-editor-BDxYMkGm.js → code-editor-8Fpinga4.js} +2 -2
  43. package/dist/{code-editor-BDxYMkGm.js.map → code-editor-8Fpinga4.js.map} +1 -1
  44. package/dist/{code-editor-DQuJ1XXd.cjs → code-editor-Bd-Cldem.cjs} +2 -2
  45. package/dist/{code-editor-DQuJ1XXd.cjs.map → code-editor-Bd-Cldem.cjs.map} +1 -1
  46. package/dist/{collapsible-box-B9ATVQzW.cjs → collapsible-box-CzU0OwJx.cjs} +2 -2
  47. package/dist/{collapsible-box-B9ATVQzW.cjs.map → collapsible-box-CzU0OwJx.cjs.map} +1 -1
  48. package/dist/{collapsible-box-CMBYunuM.js → collapsible-box-DotFa3hr.js} +2 -2
  49. package/dist/{collapsible-box-CMBYunuM.js.map → collapsible-box-DotFa3hr.js.map} +1 -1
  50. package/dist/{combobox-Bw13EcK0.js → combobox-BCoCVZHs.js} +7 -5
  51. package/dist/combobox-BCoCVZHs.js.map +1 -0
  52. package/dist/{combobox-BNlVCFgY.cjs → combobox-DbZAWh8q.cjs} +7 -5
  53. package/dist/combobox-DbZAWh8q.cjs.map +1 -0
  54. package/dist/{combobox-styles-Dr66ofEp.js → combobox-styles-Cens2tsx.js} +2 -2
  55. package/dist/{combobox-styles-Dr66ofEp.js.map → combobox-styles-Cens2tsx.js.map} +1 -1
  56. package/dist/{combobox-styles-BK2nGTNl.cjs → combobox-styles-Cy4rpw03.cjs} +2 -2
  57. package/dist/{combobox-styles-BK2nGTNl.cjs.map → combobox-styles-Cy4rpw03.cjs.map} +1 -1
  58. package/dist/{command-UEPxVJlE.cjs → command-Duh5C_Pm.cjs} +2 -2
  59. package/dist/command-Duh5C_Pm.cjs.map +1 -0
  60. package/dist/{command-V9rsKc7P.js → command-xIH7ZTdl.js} +2 -2
  61. package/dist/command-xIH7ZTdl.js.map +1 -0
  62. package/dist/components/AlertDialog.cjs.js +1 -1
  63. package/dist/components/AlertDialog.es.js +1 -1
  64. package/dist/components/Avatar.cjs.js +1 -1
  65. package/dist/components/Avatar.es.js +1 -1
  66. package/dist/components/Breadcrumb.cjs.js +7 -4
  67. package/dist/components/Breadcrumb.cjs.js.map +1 -1
  68. package/dist/components/Breadcrumb.es.js +7 -4
  69. package/dist/components/Breadcrumb.es.js.map +1 -1
  70. package/dist/components/Button.cjs.js +1 -1
  71. package/dist/components/Button.es.js +2 -2
  72. package/dist/components/ClampedText.cjs.js +2 -2
  73. package/dist/components/ClampedText.cjs.js.map +1 -1
  74. package/dist/components/ClampedText.es.js +2 -2
  75. package/dist/components/ClampedText.es.js.map +1 -1
  76. package/dist/components/CodeBlock.cjs.js +1 -1
  77. package/dist/components/CodeBlock.es.js +1 -1
  78. package/dist/components/CodeEditor.cjs.js +1 -1
  79. package/dist/components/CodeEditor.es.js +1 -1
  80. package/dist/components/CollapsibleBox.cjs.js +1 -1
  81. package/dist/components/CollapsibleBox.es.js +1 -1
  82. package/dist/components/Combobox.cjs.js +2 -2
  83. package/dist/components/Combobox.es.js +2 -2
  84. package/dist/components/Command.cjs.js +1 -1
  85. package/dist/components/Command.es.js +1 -1
  86. package/dist/components/CommandPalette.cjs.js +1 -1
  87. package/dist/components/CommandPalette.es.js +1 -1
  88. package/dist/components/Comment.cjs.js +2 -2
  89. package/dist/components/Comment.es.js +2 -2
  90. package/dist/components/CopyButton.cjs.js +1 -1
  91. package/dist/components/CopyButton.es.js +1 -1
  92. package/dist/components/DataCodeSection.cjs.js +1 -1
  93. package/dist/components/DataCodeSection.es.js +1 -1
  94. package/dist/components/DataDetailsPanel.cjs.js +2 -2
  95. package/dist/components/DataDetailsPanel.es.js +2 -2
  96. package/dist/components/DataKeysAndValues.cjs.js +1 -1
  97. package/dist/components/DataKeysAndValues.es.js +1 -1
  98. package/dist/components/DataList.cjs.js +15 -17
  99. package/dist/components/DataList.cjs.js.map +1 -1
  100. package/dist/components/DataList.es.js +4 -5
  101. package/dist/components/DataList.es.js.map +1 -1
  102. package/dist/components/DataPanel.cjs.js +1 -1
  103. package/dist/components/DataPanel.es.js +1 -1
  104. package/dist/components/DateRangeTimeline.cjs.js +1 -1
  105. package/dist/components/DateRangeTimeline.es.js +1 -1
  106. package/dist/components/DateTimePicker.cjs.js +2 -2
  107. package/dist/components/DateTimePicker.es.js +2 -2
  108. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  109. package/dist/components/DateTimeRangePicker.es.js +1 -1
  110. package/dist/components/Dialog.cjs.js +2 -2
  111. package/dist/components/Dialog.es.js +2 -2
  112. package/dist/components/DisabledFeatureButton.cjs.js +1 -1
  113. package/dist/components/DisabledFeatureButton.es.js +1 -1
  114. package/dist/components/Drawer.cjs.js +1 -1
  115. package/dist/components/Drawer.es.js +1 -1
  116. package/dist/components/EnvironmentVariablesEditor.cjs.js +3 -3
  117. package/dist/components/EnvironmentVariablesEditor.cjs.js.map +1 -1
  118. package/dist/components/EnvironmentVariablesEditor.es.js +3 -3
  119. package/dist/components/EnvironmentVariablesEditor.es.js.map +1 -1
  120. package/dist/components/ErrorBoundary.cjs.js +1 -1
  121. package/dist/components/ErrorBoundary.es.js +1 -1
  122. package/dist/components/FilterBar.cjs.js +8 -31
  123. package/dist/components/FilterBar.cjs.js.map +1 -1
  124. package/dist/components/FilterBar.es.js +10 -33
  125. package/dist/components/FilterBar.es.js.map +1 -1
  126. package/dist/components/FormFieldBlocks.cjs.js +3 -3
  127. package/dist/components/FormFieldBlocks.cjs.js.map +1 -1
  128. package/dist/components/FormFieldBlocks.es.js +3 -3
  129. package/dist/components/FormFieldBlocks.es.js.map +1 -1
  130. package/dist/components/InputGroup.cjs.js +1 -1
  131. package/dist/components/InputGroup.es.js +1 -1
  132. package/dist/components/InputNumber.cjs.js +2 -2
  133. package/dist/components/InputNumber.es.js +2 -2
  134. package/dist/components/JSONSchemaForm.cjs.js +2 -2
  135. package/dist/components/JSONSchemaForm.es.js +2 -2
  136. package/dist/components/ListSearch.cjs.js +1 -1
  137. package/dist/components/ListSearch.es.js +1 -1
  138. package/dist/components/LogsDataList.cjs.js +5 -2
  139. package/dist/components/LogsDataList.cjs.js.map +1 -1
  140. package/dist/components/LogsDataList.es.js +5 -2
  141. package/dist/components/LogsDataList.es.js.map +1 -1
  142. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  143. package/dist/components/MarkdownRenderer.es.js +1 -1
  144. package/dist/components/Message.cjs.js +1 -1
  145. package/dist/components/Message.es.js +1 -1
  146. package/dist/components/MetricsCard.cjs.js +1 -1
  147. package/dist/components/MetricsCard.es.js +1 -1
  148. package/dist/components/PrevNextNav.cjs.js +1 -1
  149. package/dist/components/PrevNextNav.es.js +1 -1
  150. package/dist/components/ProductAvatar.cjs.js +2 -1
  151. package/dist/components/ProductAvatar.cjs.js.map +1 -1
  152. package/dist/components/ProductAvatar.es.js +2 -1
  153. package/dist/components/ProductAvatar.es.js.map +1 -1
  154. package/dist/components/PropertyFilter.cjs.js +4 -4
  155. package/dist/components/PropertyFilter.cjs.js.map +1 -1
  156. package/dist/components/PropertyFilter.es.js +5 -5
  157. package/dist/components/PropertyFilter.es.js.map +1 -1
  158. package/dist/components/RuleBuilder.cjs.js +3 -2
  159. package/dist/components/RuleBuilder.cjs.js.map +1 -1
  160. package/dist/components/RuleBuilder.es.js +3 -2
  161. package/dist/components/RuleBuilder.es.js.map +1 -1
  162. package/dist/components/SavedViews.cjs.js +4 -8
  163. package/dist/components/SavedViews.cjs.js.map +1 -1
  164. package/dist/components/SavedViews.es.js +5 -9
  165. package/dist/components/SavedViews.es.js.map +1 -1
  166. package/dist/components/SearchInput.cjs.js +1 -1
  167. package/dist/components/SearchInput.es.js +1 -1
  168. package/dist/components/Select.cjs.js +1 -1
  169. package/dist/components/Select.es.js +1 -1
  170. package/dist/components/SideDialog.cjs.js +1 -1
  171. package/dist/components/SideDialog.es.js +1 -1
  172. package/dist/components/Sidebar.cjs.js +3 -3
  173. package/dist/components/Sidebar.cjs.js.map +1 -1
  174. package/dist/components/Sidebar.es.js +3 -3
  175. package/dist/components/Sidebar.es.js.map +1 -1
  176. package/dist/components/StatusIndicators.cjs.js.map +1 -1
  177. package/dist/components/StatusIndicators.es.js.map +1 -1
  178. package/dist/components/Table.cjs.js.map +1 -1
  179. package/dist/components/Table.es.js.map +1 -1
  180. package/dist/components/Tabs.cjs.js +1 -1
  181. package/dist/components/Tabs.es.js +1 -1
  182. package/dist/components/ThreadList.cjs.js +1 -1
  183. package/dist/components/ThreadList.es.js +1 -1
  184. package/dist/components/ThreadRail.cjs.js.map +1 -1
  185. package/dist/components/ThreadRail.es.js.map +1 -1
  186. package/dist/components/Truncate.cjs.js +1 -1
  187. package/dist/components/Truncate.es.js +1 -1
  188. package/dist/components/Workflow.cjs.js +6 -6
  189. package/dist/components/Workflow.es.js +6 -6
  190. package/dist/components/ai/activity.cjs.js +4 -4
  191. package/dist/components/ai/activity.es.js +4 -4
  192. package/dist/components/ai/ask-user.cjs.js +1 -1
  193. package/dist/components/ai/ask-user.es.js +1 -1
  194. package/dist/components/ai/plan.cjs.js +1 -1
  195. package/dist/components/ai/plan.es.js +1 -1
  196. package/dist/components/ai/tool-approval.cjs.js +1 -1
  197. package/dist/components/ai/tool-approval.es.js +1 -1
  198. package/dist/components/ai/tool-call.cjs.js +4 -4
  199. package/dist/components/ai/tool-call.es.js +4 -4
  200. package/dist/composer-Bs4iyUfe.js.map +1 -1
  201. package/dist/composer-CDQnP3og.cjs.map +1 -1
  202. package/dist/context-menu-C67xhcfa.js.map +1 -1
  203. package/dist/context-menu-jNuzE86D.cjs.map +1 -1
  204. package/dist/{copy-button-Cd0keCti.cjs → copy-button-BC02oZJo.cjs} +2 -2
  205. package/dist/{copy-button-Cd0keCti.cjs.map → copy-button-BC02oZJo.cjs.map} +1 -1
  206. package/dist/{copy-button-C_M3Tu_-.js → copy-button-B_i9lwFJ.js} +2 -2
  207. package/dist/{copy-button-C_M3Tu_-.js.map → copy-button-B_i9lwFJ.js.map} +1 -1
  208. package/dist/{data-code-section-lj3PaHjc.cjs → data-code-section-BJa6NDgN.cjs} +5 -5
  209. package/dist/{data-code-section-lj3PaHjc.cjs.map → data-code-section-BJa6NDgN.cjs.map} +1 -1
  210. package/dist/{data-code-section-mpRgtM8j.js → data-code-section-Cjs-piiY.js} +5 -5
  211. package/dist/{data-code-section-mpRgtM8j.js.map → data-code-section-Cjs-piiY.js.map} +1 -1
  212. package/dist/{data-keys-and-values-1lYi60YK.cjs → data-keys-and-values-DBXIqeXt.cjs} +2 -2
  213. package/dist/data-keys-and-values-DBXIqeXt.cjs.map +1 -0
  214. package/dist/{data-keys-and-values-CHpxKsfq.js → data-keys-and-values-DHp6cHJo.js} +2 -2
  215. package/dist/data-keys-and-values-DHp6cHJo.js.map +1 -0
  216. package/dist/{data-list-top-DJh08vFA.cjs → data-list-DlXU1PLQ.cjs} +339 -13
  217. package/dist/data-list-DlXU1PLQ.cjs.map +1 -0
  218. package/dist/{data-list-top-T-mtdIUp.js → data-list-Tor18oy5.js} +332 -5
  219. package/dist/data-list-Tor18oy5.js.map +1 -0
  220. package/dist/{data-list-skeleton-bNfITSHs.js → data-list-skeleton-CXUB-u3p.js} +2 -2
  221. package/dist/{data-list-skeleton-bNfITSHs.js.map → data-list-skeleton-CXUB-u3p.js.map} +1 -1
  222. package/dist/{data-list-skeleton-sdcaabdX.cjs → data-list-skeleton-DY0F40WQ.cjs} +6 -6
  223. package/dist/{data-list-skeleton-sdcaabdX.cjs.map → data-list-skeleton-DY0F40WQ.cjs.map} +1 -1
  224. package/dist/{data-panel-BkfjzriB.cjs → data-panel-DGNV14pm.cjs} +20 -9
  225. package/dist/data-panel-DGNV14pm.cjs.map +1 -0
  226. package/dist/{data-panel-CMkR6Avv.js → data-panel-DjtnX70w.js} +20 -9
  227. package/dist/data-panel-DjtnX70w.js.map +1 -0
  228. package/dist/{date-time-range-picker-BjQVCVUM.cjs → date-time-range-picker-CXGab8Nj.cjs} +3 -3
  229. package/dist/{date-time-range-picker-BjQVCVUM.cjs.map → date-time-range-picker-CXGab8Nj.cjs.map} +1 -1
  230. package/dist/{date-time-range-picker-D-EECKzz.js → date-time-range-picker-CcnDMZJu.js} +3 -3
  231. package/dist/{date-time-range-picker-D-EECKzz.js.map → date-time-range-picker-CcnDMZJu.js.map} +1 -1
  232. package/dist/{dialog-j2e95YNV.js → dialog-AzCRnEo3.js} +3 -3
  233. package/dist/{dialog-j2e95YNV.js.map → dialog-AzCRnEo3.js.map} +1 -1
  234. package/dist/{dialog-BMUfQ9XU.cjs → dialog-SSeOqRnH.cjs} +3 -3
  235. package/dist/{dialog-BMUfQ9XU.cjs.map → dialog-SSeOqRnH.cjs.map} +1 -1
  236. package/dist/{dialog-action-CmFDNyZX.cjs → dialog-action-Caa-pb85.cjs} +3 -3
  237. package/dist/{dialog-action-CmFDNyZX.cjs.map → dialog-action-Caa-pb85.cjs.map} +1 -1
  238. package/dist/{dialog-action-zKqvuroE.js → dialog-action-DykMOK2W.js} +3 -3
  239. package/dist/{dialog-action-zKqvuroE.js.map → dialog-action-DykMOK2W.js.map} +1 -1
  240. package/dist/domains/auth/components/session-expired.cjs.js +1 -1
  241. package/dist/domains/auth/components/session-expired.es.js +1 -1
  242. package/dist/domains/chat/attachments/attachment-preview-dialog.cjs.js +2 -2
  243. package/dist/domains/chat/attachments/attachment-preview-dialog.es.js +2 -2
  244. package/dist/domains/chat/attachments/composer-attachment.cjs.js +1 -1
  245. package/dist/domains/chat/attachments/composer-attachment.es.js +1 -1
  246. package/dist/domains/chat/components/badge-wrapper.cjs.js +1 -1
  247. package/dist/domains/chat/components/badge-wrapper.es.js +1 -1
  248. package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +3 -3
  249. package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +3 -3
  250. package/dist/domains/chat/messages/assistant-message-actions.cjs.js +2 -2
  251. package/dist/domains/chat/messages/assistant-message-actions.es.js +2 -2
  252. package/dist/domains/chat/messages/dataset-save-action.cjs.js +5 -5
  253. package/dist/domains/chat/messages/dataset-save-action.es.js +5 -5
  254. package/dist/domains/chat/messages/message-row.cjs.js +4 -4
  255. package/dist/domains/chat/messages/message-row.es.js +4 -4
  256. package/dist/domains/chat/messages/notification-signal-notice.cjs.js +1 -1
  257. package/dist/domains/chat/messages/notification-signal-notice.es.js +1 -1
  258. package/dist/domains/chat/messages/renderers/message-text.cjs.js +1 -1
  259. package/dist/domains/chat/messages/renderers/message-text.cjs.js.map +1 -1
  260. package/dist/domains/chat/messages/renderers/message-text.es.js +1 -1
  261. package/dist/domains/chat/messages/renderers/message-text.es.js.map +1 -1
  262. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
  263. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
  264. package/dist/domains/chat/messages/signal-badge.cjs.js +1 -1
  265. package/dist/domains/chat/messages/signal-badge.es.js +1 -1
  266. package/dist/domains/chat/messages/skill-message.cjs.js +3 -3
  267. package/dist/domains/chat/messages/skill-message.es.js +3 -3
  268. package/dist/domains/chat/messages/system-reminder-badge.cjs.js +1 -1
  269. package/dist/domains/chat/messages/system-reminder-badge.es.js +1 -1
  270. package/dist/domains/chat/om/om-parts-converter.cjs.js.map +1 -1
  271. package/dist/domains/chat/om/om-parts-converter.es.js.map +1 -1
  272. package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
  273. package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
  274. package/dist/domains/chat/tools/badges/agent-badge.cjs.js +4 -4
  275. package/dist/domains/chat/tools/badges/agent-badge.es.js +4 -4
  276. package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
  277. package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
  278. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.cjs.js +3 -3
  279. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.cjs.js.map +1 -1
  280. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js +3 -3
  281. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js.map +1 -1
  282. package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +2 -2
  283. package/dist/domains/chat/tools/badges/code-mode-badge.es.js +2 -2
  284. package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +2 -2
  285. package/dist/domains/chat/tools/badges/file-tree-badge.es.js +2 -2
  286. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +2 -2
  287. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +2 -2
  288. package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +2 -2
  289. package/dist/domains/chat/tools/badges/observation-marker-details.es.js +2 -2
  290. package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +1 -1
  291. package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
  292. package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js +1 -1
  293. package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js +1 -1
  294. package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +1 -1
  295. package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
  296. package/dist/domains/chat/tools/badges/tool-badge.cjs.js +3 -3
  297. package/dist/domains/chat/tools/badges/tool-badge.es.js +3 -3
  298. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +6 -3
  299. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js.map +1 -1
  300. package/dist/domains/chat/tools/badges/workflow-badge.es.js +6 -3
  301. package/dist/domains/chat/tools/badges/workflow-badge.es.js.map +1 -1
  302. package/dist/domains/chat/tools/submit-plan-tool.cjs.js +2 -2
  303. package/dist/domains/chat/tools/submit-plan-tool.es.js +2 -2
  304. package/dist/domains/chat/tools/tool-card.cjs.js +1 -1
  305. package/dist/domains/chat/tools/tool-card.es.js +1 -1
  306. package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js +4 -4
  307. package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js +4 -4
  308. package/dist/domains/logs/components/log-data-panel.cjs.js +4 -4
  309. package/dist/domains/logs/components/log-data-panel.es.js +4 -4
  310. package/dist/domains/logs/components/logs-list-view.cjs.js +3 -2
  311. package/dist/domains/logs/components/logs-list-view.cjs.js.map +1 -1
  312. package/dist/domains/logs/components/logs-list-view.es.js +3 -2
  313. package/dist/domains/logs/components/logs-list-view.es.js.map +1 -1
  314. package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
  315. package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
  316. package/dist/domains/logs/components/no-logs-info.cjs.js +1 -1
  317. package/dist/domains/logs/components/no-logs-info.es.js +1 -1
  318. package/dist/domains/mcps/components/mcp-app-viewer.cjs.js.map +1 -1
  319. package/dist/domains/mcps/components/mcp-app-viewer.es.js.map +1 -1
  320. package/dist/domains/memory/components/flame-graph.cjs.js +1 -1
  321. package/dist/domains/memory/components/flame-graph.es.js +1 -1
  322. package/dist/domains/memory/components/memory-studio-panel.cjs.js +1 -1
  323. package/dist/domains/memory/components/memory-studio-panel.es.js +1 -1
  324. package/dist/domains/metrics/components/agent-runs-card.cjs.js +1 -1
  325. package/dist/domains/metrics/components/agent-runs-card.es.js +1 -1
  326. package/dist/domains/metrics/components/card-action-buttons.cjs.js +1 -1
  327. package/dist/domains/metrics/components/card-action-buttons.es.js +1 -1
  328. package/dist/domains/metrics/components/chart-area.cjs.js +1 -1
  329. package/dist/domains/metrics/components/chart-area.es.js +1 -1
  330. package/dist/domains/metrics/components/chart-card-error.cjs.js +1 -1
  331. package/dist/domains/metrics/components/chart-card-error.es.js +1 -1
  332. package/dist/domains/metrics/components/chart-card.cjs.js +1 -1
  333. package/dist/domains/metrics/components/chart-card.es.js +1 -1
  334. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  335. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  336. package/dist/domains/metrics/components/failure-rate-card.cjs.js +1 -1
  337. package/dist/domains/metrics/components/failure-rate-card.es.js +1 -1
  338. package/dist/domains/metrics/components/latency-card.cjs.js +1 -1
  339. package/dist/domains/metrics/components/latency-card.es.js +1 -1
  340. package/dist/domains/metrics/components/scores-card.cjs.js +1 -1
  341. package/dist/domains/metrics/components/scores-card.es.js +1 -1
  342. package/dist/domains/metrics/components/token-usage-card.cjs.js +1 -1
  343. package/dist/domains/metrics/components/token-usage-card.es.js +1 -1
  344. package/dist/domains/metrics/components/trace-volume-card.cjs.js +1 -1
  345. package/dist/domains/metrics/components/trace-volume-card.es.js +1 -1
  346. package/dist/domains/metrics/components/usage-card.cjs.js +1 -1
  347. package/dist/domains/metrics/components/usage-card.es.js +1 -1
  348. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js +4 -4
  349. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js +4 -4
  350. package/dist/domains/scores/components/score-data-panel.cjs.js +3 -3
  351. package/dist/domains/scores/components/score-data-panel.es.js +3 -3
  352. package/dist/domains/scores/components/span-scoring.cjs.js +3 -3
  353. package/dist/domains/scores/components/span-scoring.es.js +3 -3
  354. package/dist/domains/scores/components/trace-scores-tab.cjs.js +2 -1
  355. package/dist/domains/scores/components/trace-scores-tab.cjs.js.map +1 -1
  356. package/dist/domains/scores/components/trace-scores-tab.es.js +2 -1
  357. package/dist/domains/scores/components/trace-scores-tab.es.js.map +1 -1
  358. package/dist/domains/traces/components/feedback-thread.cjs.js +4 -4
  359. package/dist/domains/traces/components/feedback-thread.cjs.js.map +1 -1
  360. package/dist/domains/traces/components/feedback-thread.es.js +4 -4
  361. package/dist/domains/traces/components/feedback-thread.es.js.map +1 -1
  362. package/dist/domains/traces/components/shared.cjs.js +4 -3
  363. package/dist/domains/traces/components/shared.cjs.js.map +1 -1
  364. package/dist/domains/traces/components/shared.es.js +5 -4
  365. package/dist/domains/traces/components/shared.es.js.map +1 -1
  366. package/dist/domains/traces/components/span-data-panel-view.cjs.js +4 -4
  367. package/dist/domains/traces/components/span-data-panel-view.cjs.js.map +1 -1
  368. package/dist/domains/traces/components/span-data-panel-view.es.js +4 -4
  369. package/dist/domains/traces/components/span-data-panel-view.es.js.map +1 -1
  370. package/dist/domains/traces/components/span-details-view.cjs.js +1 -1
  371. package/dist/domains/traces/components/span-details-view.es.js +1 -1
  372. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +2 -2
  373. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +2 -2
  374. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +2 -2
  375. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +2 -2
  376. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +3 -3
  377. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +3 -3
  378. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +2 -2
  379. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +2 -2
  380. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +2 -2
  381. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +2 -2
  382. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +2 -2
  383. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +2 -2
  384. package/dist/domains/traces/components/span-payload/span-payload-registry.cjs.js.map +1 -1
  385. package/dist/domains/traces/components/span-payload/span-payload-registry.es.js.map +1 -1
  386. package/dist/domains/traces/components/span-payload/span-payload-section.cjs.js +3 -3
  387. package/dist/domains/traces/components/span-payload/span-payload-section.es.js +3 -3
  388. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +2 -2
  389. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +2 -2
  390. package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js +2 -2
  391. package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +2 -2
  392. package/dist/domains/traces/components/span-rows.cjs.js +5 -0
  393. package/dist/domains/traces/components/span-rows.cjs.js.map +1 -1
  394. package/dist/domains/traces/components/span-rows.es.js +5 -0
  395. package/dist/domains/traces/components/span-rows.es.js.map +1 -1
  396. package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
  397. package/dist/domains/traces/components/span-summary-description.es.js +1 -1
  398. package/dist/domains/traces/components/span-timeline-row.cjs.js +34 -28
  399. package/dist/domains/traces/components/span-timeline-row.cjs.js.map +1 -1
  400. package/dist/domains/traces/components/span-timeline-row.es.js +34 -28
  401. package/dist/domains/traces/components/span-timeline-row.es.js.map +1 -1
  402. package/dist/domains/traces/components/span-timing-hover-card.cjs.js +1 -1
  403. package/dist/domains/traces/components/span-timing-hover-card.es.js +1 -1
  404. package/dist/domains/traces/components/span-token-usage.cjs.js +1 -1
  405. package/dist/domains/traces/components/span-token-usage.es.js +1 -1
  406. package/dist/domains/traces/components/span-tree-rail.cjs.js +50 -0
  407. package/dist/domains/traces/components/span-tree-rail.cjs.js.map +1 -0
  408. package/dist/domains/traces/components/span-tree-rail.d.ts +2 -0
  409. package/dist/domains/traces/components/span-tree-rail.es.js +42 -0
  410. package/dist/domains/traces/components/span-tree-rail.es.js.map +1 -0
  411. package/dist/domains/traces/components/span-tree-row.cjs.js +2 -2
  412. package/dist/domains/traces/components/span-tree-row.cjs.js.map +1 -1
  413. package/dist/domains/traces/components/span-tree-row.es.js +2 -2
  414. package/dist/domains/traces/components/span-tree-row.es.js.map +1 -1
  415. package/dist/domains/traces/components/span-type-badge.cjs.js +29 -0
  416. package/dist/domains/traces/components/span-type-badge.cjs.js.map +1 -0
  417. package/dist/domains/traces/components/span-type-badge.d.ts +2 -0
  418. package/dist/domains/traces/components/span-type-badge.es.js +25 -0
  419. package/dist/domains/traces/components/span-type-badge.es.js.map +1 -0
  420. package/dist/domains/traces/components/span-type-legend.cjs.js +2 -2
  421. package/dist/domains/traces/components/span-type-legend.cjs.js.map +1 -1
  422. package/dist/domains/traces/components/span-type-legend.es.js +2 -2
  423. package/dist/domains/traces/components/span-type-legend.es.js.map +1 -1
  424. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
  425. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
  426. package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +1 -1
  427. package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +1 -1
  428. package/dist/domains/traces/components/thread-trace/thread-trace-row.cjs.js.map +1 -1
  429. package/dist/domains/traces/components/thread-trace/thread-trace-row.es.js.map +1 -1
  430. package/dist/domains/traces/components/thread-trace/thread-trace-spans.cjs.js +2 -2
  431. package/dist/domains/traces/components/thread-trace/thread-trace-spans.es.js +2 -2
  432. package/dist/domains/traces/components/thread-view-by-trace.cjs.js +2 -1
  433. package/dist/domains/traces/components/thread-view-by-trace.cjs.js.map +1 -1
  434. package/dist/domains/traces/components/thread-view-by-trace.es.js +2 -1
  435. package/dist/domains/traces/components/thread-view-by-trace.es.js.map +1 -1
  436. package/dist/domains/traces/components/timeline-name-col.cjs.js +53 -27
  437. package/dist/domains/traces/components/timeline-name-col.cjs.js.map +1 -1
  438. package/dist/domains/traces/components/timeline-name-col.es.js +54 -28
  439. package/dist/domains/traces/components/timeline-name-col.es.js.map +1 -1
  440. package/dist/domains/traces/components/timeline-structure-sign.cjs.js +23 -14
  441. package/dist/domains/traces/components/timeline-structure-sign.cjs.js.map +1 -1
  442. package/dist/domains/traces/components/timeline-structure-sign.es.js +24 -15
  443. package/dist/domains/traces/components/timeline-structure-sign.es.js.map +1 -1
  444. package/dist/domains/traces/components/trace-columns-menu.cjs.js +4 -4
  445. package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
  446. package/dist/domains/traces/components/trace-columns-menu.es.js +4 -4
  447. package/dist/domains/traces/components/trace-columns-menu.es.js.map +1 -1
  448. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +32 -5
  449. package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
  450. package/dist/domains/traces/components/trace-data-panel-view.es.js +32 -5
  451. package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
  452. package/dist/domains/traces/components/trace-data-panel.cjs.js +5 -2
  453. package/dist/domains/traces/components/trace-data-panel.cjs.js.map +1 -1
  454. package/dist/domains/traces/components/trace-data-panel.es.js +5 -2
  455. package/dist/domains/traces/components/trace-data-panel.es.js.map +1 -1
  456. package/dist/domains/traces/components/trace-error-cell.cjs.js +35 -0
  457. package/dist/domains/traces/components/trace-error-cell.cjs.js.map +1 -0
  458. package/dist/domains/traces/components/trace-error-cell.d.ts +2 -0
  459. package/dist/domains/traces/components/trace-error-cell.es.js +31 -0
  460. package/dist/domains/traces/components/trace-error-cell.es.js.map +1 -0
  461. package/dist/domains/traces/components/trace-error-details.cjs.js +22 -0
  462. package/dist/domains/traces/components/trace-error-details.cjs.js.map +1 -0
  463. package/dist/domains/traces/components/trace-error-details.d.ts +2 -0
  464. package/dist/domains/traces/components/trace-error-details.es.js +18 -0
  465. package/dist/domains/traces/components/trace-error-details.es.js.map +1 -0
  466. package/dist/domains/traces/components/trace-error-summary.cjs.js +31 -0
  467. package/dist/domains/traces/components/trace-error-summary.cjs.js.map +1 -0
  468. package/dist/domains/traces/components/trace-error-summary.d.ts +2 -0
  469. package/dist/domains/traces/components/trace-error-summary.es.js +27 -0
  470. package/dist/domains/traces/components/trace-error-summary.es.js.map +1 -0
  471. package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
  472. package/dist/domains/traces/components/trace-id-button.es.js +1 -1
  473. package/dist/domains/traces/components/trace-span-panel.cjs.js +1 -1
  474. package/dist/domains/traces/components/trace-span-panel.es.js +1 -1
  475. package/dist/domains/traces/components/trace-span-tree-skeleton.cjs.js +7 -7
  476. package/dist/domains/traces/components/trace-span-tree-skeleton.cjs.js.map +1 -1
  477. package/dist/domains/traces/components/trace-span-tree-skeleton.es.js +7 -7
  478. package/dist/domains/traces/components/trace-span-tree-skeleton.es.js.map +1 -1
  479. package/dist/domains/traces/components/trace-span-tree.cjs.js +1 -2
  480. package/dist/domains/traces/components/trace-span-tree.cjs.js.map +1 -1
  481. package/dist/domains/traces/components/trace-span-tree.es.js +2 -3
  482. package/dist/domains/traces/components/trace-span-tree.es.js.map +1 -1
  483. package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
  484. package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
  485. package/dist/domains/traces/components/trace-thread-item-view.cjs.js +1 -1
  486. package/dist/domains/traces/components/trace-thread-item-view.es.js +1 -1
  487. package/dist/domains/traces/components/trace-thread-panel.cjs.js +1 -1
  488. package/dist/domains/traces/components/trace-thread-panel.es.js +1 -1
  489. package/dist/domains/traces/components/trace-time-range-chip.cjs.js +2 -2
  490. package/dist/domains/traces/components/trace-time-range-chip.es.js +2 -2
  491. package/dist/domains/traces/components/traces-list-mode-toggle.cjs.js +1 -1
  492. package/dist/domains/traces/components/traces-list-mode-toggle.es.js +1 -1
  493. package/dist/domains/traces/components/traces-list-view.cjs.js +10 -7
  494. package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
  495. package/dist/domains/traces/components/traces-list-view.es.js +9 -6
  496. package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
  497. package/dist/domains/traces/components/traces-page-skeleton.cjs.js +4 -1
  498. package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
  499. package/dist/domains/traces/components/traces-page-skeleton.es.js +4 -1
  500. package/dist/domains/traces/components/traces-page-skeleton.es.js.map +1 -1
  501. package/dist/domains/traces/hooks/use-trace-list-navigation.cjs.js.map +1 -1
  502. package/dist/domains/traces/hooks/use-trace-list-navigation.es.js.map +1 -1
  503. package/dist/domains/traces/utils/flatten-to-search-text.cjs.js.map +1 -1
  504. package/dist/domains/traces/utils/flatten-to-search-text.es.js.map +1 -1
  505. package/dist/domains/workflows/components/workflow-combobox.cjs.js +1 -1
  506. package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
  507. package/dist/domains/workflows/components/workflow-information.cjs.js +1 -1
  508. package/dist/domains/workflows/components/workflow-information.es.js +1 -1
  509. package/dist/domains/workflows/components/workflow-step-detail.cjs.js +3 -3
  510. package/dist/domains/workflows/components/workflow-step-detail.es.js +3 -3
  511. package/dist/domains/workflows/components/workflows-list/no-workflows-info.cjs.js +1 -1
  512. package/dist/domains/workflows/components/workflows-list/no-workflows-info.es.js +1 -1
  513. package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +2 -2
  514. package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +2 -2
  515. package/dist/domains/workflows/runs/workflow-run-list.cjs.js +2 -2
  516. package/dist/domains/workflows/runs/workflow-run-list.es.js +2 -2
  517. package/dist/domains/workflows/workflow/data/workflow-data-button.cjs.js +1 -1
  518. package/dist/domains/workflows/workflow/data/workflow-data-button.es.js +1 -1
  519. package/dist/domains/workflows/workflow/data/workflow-data-inspector.cjs.js +2 -2
  520. package/dist/domains/workflows/workflow/data/workflow-data-inspector.es.js +2 -2
  521. package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js +1 -1
  522. package/dist/domains/workflows/workflow/input/workflow-json-input.es.js +1 -1
  523. package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js +1 -1
  524. package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js +1 -1
  525. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.cjs.js +2 -2
  526. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +2 -2
  527. package/dist/domains/workflows/workflow/workflow-body-graph.cjs.js +1 -1
  528. package/dist/domains/workflows/workflow/workflow-body-graph.es.js +1 -1
  529. package/dist/domains/workflows/workflow/workflow-cancel-button.cjs.js +1 -1
  530. package/dist/domains/workflows/workflow/workflow-cancel-button.es.js +1 -1
  531. package/dist/domains/workflows/workflow/workflow-data-edge.cjs.js +1 -1
  532. package/dist/domains/workflows/workflow/workflow-data-edge.es.js +1 -1
  533. package/dist/domains/workflows/workflow/workflow-debug-step-controls.cjs.js +1 -1
  534. package/dist/domains/workflows/workflow/workflow-debug-step-controls.es.js +1 -1
  535. package/dist/domains/workflows/workflow/workflow-graph-boundary.cjs.js +3 -3
  536. package/dist/domains/workflows/workflow/workflow-graph-boundary.es.js +3 -3
  537. package/dist/domains/workflows/workflow/workflow-graph-inner.cjs.js +2 -2
  538. package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +2 -2
  539. package/dist/domains/workflows/workflow/workflow-graph-node.cjs.js +2 -2
  540. package/dist/domains/workflows/workflow/workflow-graph-node.es.js +2 -2
  541. package/dist/domains/workflows/workflow/workflow-input-data.cjs.js +1 -1
  542. package/dist/domains/workflows/workflow/workflow-input-data.cjs.js.map +1 -1
  543. package/dist/domains/workflows/workflow/workflow-input-data.es.js +1 -1
  544. package/dist/domains/workflows/workflow/workflow-input-data.es.js.map +1 -1
  545. package/dist/domains/workflows/workflow/workflow-map-config-dialog.cjs.js +3 -3
  546. package/dist/domains/workflows/workflow/workflow-map-config-dialog.es.js +3 -3
  547. package/dist/domains/workflows/workflow/workflow-nested-graph.cjs.js +3 -3
  548. package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +3 -3
  549. package/dist/domains/workflows/workflow/workflow-run-data.cjs.js +2 -2
  550. package/dist/domains/workflows/workflow/workflow-run-data.es.js +2 -2
  551. package/dist/domains/workflows/workflow/workflow-run-header.cjs.js +1 -1
  552. package/dist/domains/workflows/workflow/workflow-run-header.es.js +1 -1
  553. package/dist/domains/workflows/workflow/workflow-status.cjs.js +1 -1
  554. package/dist/domains/workflows/workflow/workflow-status.es.js +1 -1
  555. package/dist/domains/workflows/workflow/workflow-step-action-bar.cjs.js +3 -3
  556. package/dist/domains/workflows/workflow/workflow-step-action-bar.es.js +3 -3
  557. package/dist/domains/workflows/workflow/workflow-suspended-steps.cjs.js +1 -1
  558. package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +1 -1
  559. package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +1 -1
  560. package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +1 -1
  561. package/dist/domains/workflows/workflow/workflow-timeline-row.cjs.js +1 -1
  562. package/dist/domains/workflows/workflow/workflow-timeline-row.es.js +1 -1
  563. package/dist/domains/workflows/workflow/workflow-timeline.cjs.js +1 -1
  564. package/dist/domains/workflows/workflow/workflow-timeline.es.js +1 -1
  565. package/dist/domains/workflows/workflow/workflow-trigger-form.cjs.js +1 -1
  566. package/dist/domains/workflows/workflow/workflow-trigger-form.es.js +1 -1
  567. package/dist/domains/workflows/workflow/workflow-trigger-header.cjs.js +1 -1
  568. package/dist/domains/workflows/workflow/workflow-trigger-header.es.js +1 -1
  569. package/dist/domains/workspace/components/workspace-active-file.cjs.js +1 -1
  570. package/dist/domains/workspace/components/workspace-active-file.es.js +1 -1
  571. package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +5 -5
  572. package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +5 -5
  573. package/dist/domains/workspace/components/workspace-add-skill.cjs.js +1 -1
  574. package/dist/domains/workspace/components/workspace-add-skill.es.js +1 -1
  575. package/dist/domains/workspace/components/workspace-create-directory.cjs.js +2 -2
  576. package/dist/domains/workspace/components/workspace-create-directory.es.js +2 -2
  577. package/dist/domains/workspace/components/workspace-markdown-preview.cjs.js +2 -2
  578. package/dist/domains/workspace/components/workspace-markdown-preview.es.js +2 -2
  579. package/dist/domains/workspace/components/workspace-search.cjs.js +1 -1
  580. package/dist/domains/workspace/components/workspace-search.es.js +1 -1
  581. package/dist/domains/workspace/components/workspace-tree.cjs.js +2 -2
  582. package/dist/domains/workspace/components/workspace-tree.es.js +2 -2
  583. package/dist/{drawer-DROYPMUm.cjs → drawer-DdTU-nBR.cjs} +2 -2
  584. package/dist/{drawer-DROYPMUm.cjs.map → drawer-DdTU-nBR.cjs.map} +1 -1
  585. package/dist/{drawer-C-8E9yHN.js → drawer-mj-G7-Tu.js} +2 -2
  586. package/dist/{drawer-C-8E9yHN.js.map → drawer-mj-G7-Tu.js.map} +1 -1
  587. package/dist/dropdown-menu-CQ_48tVI.js.map +1 -1
  588. package/dist/dropdown-menu-CsynT1aD.cjs.map +1 -1
  589. package/dist/ee/signals/components/entity-index-list.cjs.js +3 -1
  590. package/dist/ee/signals/components/entity-index-list.cjs.js.map +1 -1
  591. package/dist/ee/signals/components/entity-index-list.es.js +3 -1
  592. package/dist/ee/signals/components/entity-index-list.es.js.map +1 -1
  593. package/dist/ee/signals/components/signals-empty-state.cjs.js +1 -1
  594. package/dist/ee/signals/components/signals-empty-state.es.js +1 -1
  595. package/dist/ee/signals/components/trace-intelligence-entity-detail.cjs.js.map +1 -1
  596. package/dist/ee/signals/components/trace-intelligence-entity-detail.es.js.map +1 -1
  597. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +6 -4
  598. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js.map +1 -1
  599. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +6 -4
  600. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js.map +1 -1
  601. package/dist/ee/signals/examples-pager.cjs.js +1 -1
  602. package/dist/ee/signals/examples-pager.es.js +1 -1
  603. package/dist/ee/signals/noise-detail-panel.cjs.js +1 -1
  604. package/dist/ee/signals/noise-detail-panel.es.js +1 -1
  605. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +2 -2
  606. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +2 -2
  607. package/dist/ee/signals/settings/trace-signal-settings.cjs.js +1 -1
  608. package/dist/ee/signals/settings/trace-signal-settings.es.js +1 -1
  609. package/dist/ee/signals/signals-error-state.cjs.js +1 -1
  610. package/dist/ee/signals/signals-error-state.es.js +1 -1
  611. package/dist/ee/signals/snapshot-timeline.cjs.js +1 -1
  612. package/dist/ee/signals/snapshot-timeline.es.js +1 -1
  613. package/dist/ee/signals/theme-detail-panel.cjs.js +1 -1
  614. package/dist/ee/signals/theme-detail-panel.es.js +1 -1
  615. package/dist/ee/signals/theme-filter-banner.cjs.js +1 -1
  616. package/dist/ee/signals/theme-filter-banner.es.js +1 -1
  617. package/dist/ee/signals/trace-insight-view.cjs.js +1 -1
  618. package/dist/ee/signals/trace-insight-view.es.js +1 -1
  619. package/dist/ee/signals/trace-intelligence-provider.cjs.js.map +1 -1
  620. package/dist/ee/signals/trace-intelligence-provider.es.js.map +1 -1
  621. package/dist/ee/signals/view-mode-tab.cjs.js +1 -1
  622. package/dist/ee/signals/view-mode-tab.es.js +1 -1
  623. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +3 -3
  624. package/dist/ee/topics/components/topic-trace-summary-list.es.js +3 -3
  625. package/dist/{field-error-id-Dbe6IInA.cjs → field-error-id-0yYYU0ar.cjs} +2 -2
  626. package/dist/{field-error-id-Dbe6IInA.cjs.map → field-error-id-0yYYU0ar.cjs.map} +1 -1
  627. package/dist/{field-error-id-Sqhk00e4.js → field-error-id-CdzuQK5c.js} +2 -2
  628. package/dist/{field-error-id-Sqhk00e4.js.map → field-error-id-CdzuQK5c.js.map} +1 -1
  629. package/dist/{filter-bar-chip-BarAq1S2.js → filter-bar-chip-C9CXOudu.js} +3 -3
  630. package/dist/filter-bar-chip-C9CXOudu.js.map +1 -0
  631. package/dist/{filter-bar-chip-BJJ6ytJ4.cjs → filter-bar-chip-DgvuQv6c.cjs} +3 -3
  632. package/dist/filter-bar-chip-DgvuQv6c.cjs.map +1 -0
  633. package/dist/hooks/use-environment-variables-editor.cjs.js.map +1 -1
  634. package/dist/hooks/use-environment-variables-editor.es.js.map +1 -1
  635. package/dist/hooks/use-fluid-hover.cjs.js.map +1 -1
  636. package/dist/hooks/use-fluid-hover.es.js.map +1 -1
  637. package/dist/icons/Icon.cjs.js.map +1 -1
  638. package/dist/icons/Icon.es.js.map +1 -1
  639. package/dist/icons/SkillIcon.cjs.js.map +1 -1
  640. package/dist/icons/SkillIcon.es.js.map +1 -1
  641. package/dist/icons/icon-size-classes.cjs.js +4 -4
  642. package/dist/icons/icon-size-classes.cjs.js.map +1 -1
  643. package/dist/icons/icon-size-classes.es.js +4 -4
  644. package/dist/icons/icon-size-classes.es.js.map +1 -1
  645. package/dist/{input-group-CiBbTaPP.js → input-group-BAg6iSIe.js} +2 -2
  646. package/dist/{input-group-CiBbTaPP.js.map → input-group-BAg6iSIe.js.map} +1 -1
  647. package/dist/{input-group-DSW5WoSU.cjs → input-group-DRXUthxe.cjs} +2 -2
  648. package/dist/{input-group-DSW5WoSU.cjs.map → input-group-DRXUthxe.cjs.map} +1 -1
  649. package/dist/keyboard/keyboard-dispatcher.cjs.js +2 -4
  650. package/dist/keyboard/keyboard-dispatcher.cjs.js.map +1 -1
  651. package/dist/keyboard/keyboard-dispatcher.es.js +2 -4
  652. package/dist/keyboard/keyboard-dispatcher.es.js.map +1 -1
  653. package/dist/keyboard/keyboard-shortcuts-context.cjs.js.map +1 -1
  654. package/dist/keyboard/keyboard-shortcuts-context.es.js.map +1 -1
  655. package/dist/keyboard/use-keydown.cjs.js +2 -0
  656. package/dist/keyboard/use-keydown.cjs.js.map +1 -1
  657. package/dist/keyboard/use-keydown.es.js +2 -0
  658. package/dist/keyboard/use-keydown.es.js.map +1 -1
  659. package/dist/layout/tabbed-container.cjs.js +4 -4
  660. package/dist/layout/tabbed-container.es.js +4 -4
  661. package/dist/lib/form/components/array-element-wrapper.cjs.js +1 -1
  662. package/dist/lib/form/components/array-element-wrapper.es.js +1 -1
  663. package/dist/lib/form/components/array-wrapper.cjs.js +1 -1
  664. package/dist/lib/form/components/array-wrapper.es.js +1 -1
  665. package/dist/lib/form/components/date-field.cjs.js +1 -1
  666. package/dist/lib/form/components/date-field.es.js +1 -1
  667. package/dist/lib/form/components/form-submit-row.cjs.js +1 -1
  668. package/dist/lib/form/components/form-submit-row.es.js +1 -1
  669. package/dist/lib/form/components/record-field.cjs.js +1 -1
  670. package/dist/lib/form/components/record-field.es.js +1 -1
  671. package/dist/lib/form/components/select-field.cjs.js +1 -1
  672. package/dist/lib/form/components/select-field.es.js +1 -1
  673. package/dist/lib/form/components/submit-button.cjs.js +1 -1
  674. package/dist/lib/form/components/submit-button.es.js +1 -1
  675. package/dist/lib/form/zod-provider.cjs.js.map +1 -1
  676. package/dist/lib/form/zod-provider.es.js.map +1 -1
  677. package/dist/{list-search-D3I6xt0B.js → list-search-ByJdIxIh.js} +2 -2
  678. package/dist/{list-search-D3I6xt0B.js.map → list-search-ByJdIxIh.js.map} +1 -1
  679. package/dist/{list-search-DHiQ1-O6.cjs → list-search-DNJVeHmK.cjs} +2 -2
  680. package/dist/{list-search-DHiQ1-O6.cjs.map → list-search-DNJVeHmK.cjs.map} +1 -1
  681. package/dist/{logs-data-list-Cb85LPcT.js → logs-data-list-CGerYgSd.js} +2 -3
  682. package/dist/{logs-data-list-Cb85LPcT.js.map → logs-data-list-CGerYgSd.js.map} +1 -1
  683. package/dist/{logs-data-list-DlQxxrNw.cjs → logs-data-list-DEZuSjqt.cjs} +21 -22
  684. package/dist/{logs-data-list-DlQxxrNw.cjs.map → logs-data-list-DEZuSjqt.cjs.map} +1 -1
  685. package/dist/{markdown-renderer-HIfFphpI.cjs → markdown-renderer-BcpwvSl9.cjs} +3 -3
  686. package/dist/{markdown-renderer-HIfFphpI.cjs.map → markdown-renderer-BcpwvSl9.cjs.map} +1 -1
  687. package/dist/{markdown-renderer-BYxWiHRj.js → markdown-renderer-CHLpv5n5.js} +3 -3
  688. package/dist/{markdown-renderer-BYxWiHRj.js.map → markdown-renderer-CHLpv5n5.js.map} +1 -1
  689. package/dist/{message-copy-button-CnVgCy9y.cjs → message-copy-button-D3O4hWDV.cjs} +2 -2
  690. package/dist/{message-copy-button-CnVgCy9y.cjs.map → message-copy-button-D3O4hWDV.cjs.map} +1 -1
  691. package/dist/{message-copy-button-Ctew41Rr.js → message-copy-button-OI1mwAaS.js} +2 -2
  692. package/dist/{message-copy-button-Ctew41Rr.js.map → message-copy-button-OI1mwAaS.js.map} +1 -1
  693. package/dist/{metrics-card-DaFApxZY.cjs → metrics-card-CpjGYNBP.cjs} +2 -2
  694. package/dist/{metrics-card-DaFApxZY.cjs.map → metrics-card-CpjGYNBP.cjs.map} +1 -1
  695. package/dist/{metrics-card-Z_moDiV5.js → metrics-card-D6ty6a6Z.js} +2 -2
  696. package/dist/{metrics-card-Z_moDiV5.js.map → metrics-card-D6ty6a6Z.js.map} +1 -1
  697. package/dist/{notification-activity-MR63WqZm.cjs → notification-activity-BSNuqJDd.cjs} +2 -2
  698. package/dist/{notification-activity-MR63WqZm.cjs.map → notification-activity-BSNuqJDd.cjs.map} +1 -1
  699. package/dist/{notification-activity-FJcMFxIj.js → notification-activity-BWXHmlTn.js} +2 -2
  700. package/dist/{notification-activity-FJcMFxIj.js.map → notification-activity-BWXHmlTn.js.map} +1 -1
  701. package/dist/{plan-BoOK_LAB.cjs → plan-Cm3yHvs3.cjs} +4 -4
  702. package/dist/{plan-BoOK_LAB.cjs.map → plan-Cm3yHvs3.cjs.map} +1 -1
  703. package/dist/{plan-m0hj6Zgv.js → plan-TtrepVnQ.js} +4 -4
  704. package/dist/{plan-m0hj6Zgv.js.map → plan-TtrepVnQ.js.map} +1 -1
  705. package/dist/primitives/form-element.cjs.js.map +1 -1
  706. package/dist/primitives/form-element.es.js.map +1 -1
  707. package/dist/primitives/menu-item.cjs.js +4 -2
  708. package/dist/primitives/menu-item.cjs.js.map +1 -1
  709. package/dist/primitives/menu-item.es.js +4 -2
  710. package/dist/primitives/menu-item.es.js.map +1 -1
  711. package/dist/primitives/popup-anchor.cjs.js +34 -0
  712. package/dist/primitives/popup-anchor.cjs.js.map +1 -0
  713. package/dist/primitives/popup-anchor.d.ts +2 -0
  714. package/dist/primitives/popup-anchor.es.js +10 -0
  715. package/dist/primitives/popup-anchor.es.js.map +1 -0
  716. package/dist/primitives/trigger-button.cjs.js +1 -1
  717. package/dist/primitives/trigger-button.es.js +1 -1
  718. package/dist/{property-filter-applied-J9ob_Rss.js → property-filter-applied-BMmMf4DE.js} +2 -2
  719. package/dist/property-filter-applied-BMmMf4DE.js.map +1 -0
  720. package/dist/{property-filter-applied-CtSglSaH.cjs → property-filter-applied-Bj-bh9gv.cjs} +2 -2
  721. package/dist/property-filter-applied-Bj-bh9gv.cjs.map +1 -0
  722. package/dist/{reasoning-activity-5MFE3mzw.js → reasoning-activity-C-sJt2A9.js} +3 -3
  723. package/dist/{reasoning-activity-5MFE3mzw.js.map → reasoning-activity-C-sJt2A9.js.map} +1 -1
  724. package/dist/{reasoning-activity-DMvughvN.cjs → reasoning-activity-DpYFjxuL.cjs} +3 -3
  725. package/dist/{reasoning-activity-DMvughvN.cjs.map → reasoning-activity-DpYFjxuL.cjs.map} +1 -1
  726. package/dist/resize/panel-drawer.cjs.js +1 -1
  727. package/dist/resize/panel-drawer.es.js +1 -1
  728. package/dist/{search-input-BPqubJZC.js → search-input-C9qFBzn6.js} +2 -2
  729. package/dist/{search-input-BPqubJZC.js.map → search-input-C9qFBzn6.js.map} +1 -1
  730. package/dist/{search-input-BUMYRaUW.cjs → search-input-CMNy0JWd.cjs} +2 -2
  731. package/dist/{search-input-BUMYRaUW.cjs.map → search-input-CMNy0JWd.cjs.map} +1 -1
  732. package/dist/section-CctlZIXp.cjs.map +1 -1
  733. package/dist/section-D0hKTVXt.js.map +1 -1
  734. package/dist/{select-CQtsggxJ.js → select-7rYaECQf.js} +2 -2
  735. package/dist/select-7rYaECQf.js.map +1 -0
  736. package/dist/{select-CbNLtiAs.cjs → select-A3AFKLd9.cjs} +2 -2
  737. package/dist/select-A3AFKLd9.cjs.map +1 -0
  738. package/dist/shimmer-BCSr3Rqf.js.map +1 -1
  739. package/dist/shimmer-Co-XPvF9.cjs.map +1 -1
  740. package/dist/{side-dialog-bm8NPDXy.js → side-dialog-DSvj8H6x.js} +4 -4
  741. package/dist/{side-dialog-bm8NPDXy.js.map → side-dialog-DSvj8H6x.js.map} +1 -1
  742. package/dist/{side-dialog-BzULMBaH.cjs → side-dialog-SJCWBnbw.cjs} +4 -4
  743. package/dist/{side-dialog-BzULMBaH.cjs.map → side-dialog-SJCWBnbw.cjs.map} +1 -1
  744. package/dist/{signal-activity-D-_u7DFm.cjs → signal-activity-C_bihjcd.cjs} +2 -2
  745. package/dist/{signal-activity-D-_u7DFm.cjs.map → signal-activity-C_bihjcd.cjs.map} +1 -1
  746. package/dist/{signal-activity-BkFexFiJ.js → signal-activity-J9kpnwAF.js} +2 -2
  747. package/dist/{signal-activity-BkFexFiJ.js.map → signal-activity-J9kpnwAF.js.map} +1 -1
  748. package/dist/{span-payload-primitives-wujxDKfA.cjs → span-payload-primitives-C0KYtmtV.cjs} +3 -3
  749. package/dist/{span-payload-primitives-wujxDKfA.cjs.map → span-payload-primitives-C0KYtmtV.cjs.map} +1 -1
  750. package/dist/{span-payload-primitives-jQiJK0qI.js → span-payload-primitives-D_N9LeLk.js} +3 -3
  751. package/dist/{span-payload-primitives-jQiJK0qI.js.map → span-payload-primitives-D_N9LeLk.js.map} +1 -1
  752. package/dist/src/domains/traces/components/span-rows.d.ts +2 -0
  753. package/dist/src/domains/traces/components/span-tree-rail.d.ts +23 -0
  754. package/dist/src/domains/traces/components/span-type-badge.d.ts +9 -0
  755. package/dist/src/domains/traces/components/timeline-name-col.d.ts +2 -2
  756. package/dist/src/domains/traces/components/timeline-structure-sign.d.ts +14 -1
  757. package/dist/src/domains/traces/components/trace-error-cell.d.ts +8 -0
  758. package/dist/src/domains/traces/components/trace-error-details.d.ts +10 -0
  759. package/dist/src/domains/traces/components/trace-error-summary.d.ts +8 -0
  760. package/dist/src/domains/traces/components/trace-span-tree-skeleton.d.ts +1 -1
  761. package/dist/src/domains/traces/hooks/use-traces-list-source.d.ts +1 -0
  762. package/dist/src/ds/components/Avatar/avatar-size.d.ts +1 -1
  763. package/dist/src/ds/components/Breadcrumb/crumb-switcher.d.ts +0 -1
  764. package/dist/src/ds/components/Button/Button.d.ts +1 -1
  765. package/dist/src/ds/components/EnvironmentVariablesEditor/environment-variables-editor-context.d.ts +1 -2
  766. package/dist/src/ds/components/SavedViews/saved-view-editor.d.ts +1 -1
  767. package/dist/src/ds/components/Select/select.d.ts +1 -1
  768. package/dist/src/ds/primitives/popup-anchor.d.ts +4 -0
  769. package/dist/src/hooks/use-environment-variables-editor.d.ts +1 -1
  770. package/dist/src/lib/keyboard/keyboard-dispatcher.d.ts +2 -0
  771. package/dist/src/lib/keyboard/use-keydown.d.ts +8 -1
  772. package/dist/style.css +121 -143
  773. package/dist/{tabs-tab-DRaRUvQ3.cjs → tabs-tab-B0W25Dm2.cjs} +2 -2
  774. package/dist/{tabs-tab-DRaRUvQ3.cjs.map → tabs-tab-B0W25Dm2.cjs.map} +1 -1
  775. package/dist/{tabs-tab-CIVJEMoY.js → tabs-tab-CkLyKrL0.js} +2 -2
  776. package/dist/{tabs-tab-CIVJEMoY.js.map → tabs-tab-CkLyKrL0.js.map} +1 -1
  777. package/dist/{thread-list-BANpytn3.cjs → thread-list-BBPZYHh8.cjs} +2 -2
  778. package/dist/thread-list-BBPZYHh8.cjs.map +1 -0
  779. package/dist/{thread-list-lXnXsPul.js → thread-list-BGjKZfEH.js} +2 -2
  780. package/dist/thread-list-BGjKZfEH.js.map +1 -0
  781. package/dist/{time-picker-BpCfTfoe.js → time-picker-Bzdboi4W.js} +2 -2
  782. package/dist/{time-picker-BpCfTfoe.js.map → time-picker-Bzdboi4W.js.map} +1 -1
  783. package/dist/{time-picker-DhekkO5t.cjs → time-picker-CyvG-fwX.cjs} +2 -2
  784. package/dist/{time-picker-DhekkO5t.cjs.map → time-picker-CyvG-fwX.cjs.map} +1 -1
  785. package/dist/{tool-approval-BrqoN_mP.js → tool-approval-P8rUFAYp.js} +4 -4
  786. package/dist/{tool-approval-BrqoN_mP.js.map → tool-approval-P8rUFAYp.js.map} +1 -1
  787. package/dist/{tool-approval-zBfJ20iR.cjs → tool-approval-zhWdp8i6.cjs} +4 -4
  788. package/dist/{tool-approval-zBfJ20iR.cjs.map → tool-approval-zhWdp8i6.cjs.map} +1 -1
  789. package/dist/{tool-call-arguments-DwMeGQHD.cjs → tool-call-arguments-DzpFckIm.cjs} +3 -3
  790. package/dist/{tool-call-arguments-DwMeGQHD.cjs.map → tool-call-arguments-DzpFckIm.cjs.map} +1 -1
  791. package/dist/{tool-call-arguments-Dx4LW1Ni.js → tool-call-arguments-goEdIs4f.js} +3 -3
  792. package/dist/{tool-call-arguments-Dx4LW1Ni.js.map → tool-call-arguments-goEdIs4f.js.map} +1 -1
  793. package/dist/{tool-call-group-DJsiIb-B.cjs → tool-call-group-C56oARyx.cjs} +4 -4
  794. package/dist/tool-call-group-C56oARyx.cjs.map +1 -0
  795. package/dist/{tool-call-group-ZDNZog5K.js → tool-call-group-DU4T72Xn.js} +4 -4
  796. package/dist/tool-call-group-DU4T72Xn.js.map +1 -0
  797. package/dist/{tool-call-mono-Bs7y-1Cq.js → tool-call-mono-DPW6hN91.js} +2 -2
  798. package/dist/{tool-call-mono-Bs7y-1Cq.js.map → tool-call-mono-DPW6hN91.js.map} +1 -1
  799. package/dist/{tool-call-mono-I-vdqzCe.cjs → tool-call-mono-aheL8CkL.cjs} +2 -2
  800. package/dist/{tool-call-mono-I-vdqzCe.cjs.map → tool-call-mono-aheL8CkL.cjs.map} +1 -1
  801. package/dist/{tool-call-output-Dd8zlhLd.js → tool-call-output-BQYzMMMi.js} +2 -2
  802. package/dist/{tool-call-output-Dd8zlhLd.js.map → tool-call-output-BQYzMMMi.js.map} +1 -1
  803. package/dist/{tool-call-output-BrNg0Lkd.cjs → tool-call-output-CuwM5IHd.cjs} +2 -2
  804. package/dist/{tool-call-output-BrNg0Lkd.cjs.map → tool-call-output-CuwM5IHd.cjs.map} +1 -1
  805. package/dist/{tool-card-D4yrR2AE.js → tool-card-aclA3iVz.js} +4 -4
  806. package/dist/{tool-card-D4yrR2AE.js.map → tool-card-aclA3iVz.js.map} +1 -1
  807. package/dist/{tool-card-D6UdNzIX.cjs → tool-card-yii3vGHu.cjs} +4 -4
  808. package/dist/{tool-card-D6UdNzIX.cjs.map → tool-card-yii3vGHu.cjs.map} +1 -1
  809. package/dist/{traces-data-list-Bhhg9drs.cjs → traces-data-list-Co9k5J4f.cjs} +18 -20
  810. package/dist/{traces-data-list-Bhhg9drs.cjs.map → traces-data-list-Co9k5J4f.cjs.map} +1 -1
  811. package/dist/{traces-data-list-DMWPJFBc.js → traces-data-list-TCKjOldO.js} +2 -4
  812. package/dist/{traces-data-list-DMWPJFBc.js.map → traces-data-list-TCKjOldO.js.map} +1 -1
  813. package/dist/use-data-list-keyboard-DF3tLe10.cjs.map +1 -1
  814. package/dist/use-data-list-keyboard-DFQr4t38.js.map +1 -1
  815. package/dist/{use-workflow-graph-runtime-DF-56pIR.cjs → use-workflow-graph-runtime-DcQD5eA6.cjs} +3 -3
  816. package/dist/{use-workflow-graph-runtime-DF-56pIR.cjs.map → use-workflow-graph-runtime-DcQD5eA6.cjs.map} +1 -1
  817. package/dist/{use-workflow-graph-runtime-BrHXo49Q.js → use-workflow-graph-runtime-xq_aSXPh.js} +3 -3
  818. package/dist/{use-workflow-graph-runtime-BrHXo49Q.js.map → use-workflow-graph-runtime-xq_aSXPh.js.map} +1 -1
  819. package/dist/utils/workspace-compat.cjs.js.map +1 -1
  820. package/dist/utils/workspace-compat.es.js.map +1 -1
  821. package/dist/{workflow-code-dialog-content-CfVy6bGG.cjs → workflow-code-dialog-content-B_BQCuFW.cjs} +3 -3
  822. package/dist/{workflow-code-dialog-content-CfVy6bGG.cjs.map → workflow-code-dialog-content-B_BQCuFW.cjs.map} +1 -1
  823. package/dist/{workflow-code-dialog-content-DviJz1jB.js → workflow-code-dialog-content-CFEaeYUX.js} +3 -3
  824. package/dist/{workflow-code-dialog-content-DviJz1jB.js.map → workflow-code-dialog-content-CFEaeYUX.js.map} +1 -1
  825. package/dist/{workflow-condition-card-BRwhMmNO.cjs → workflow-condition-card-CMzoK307.cjs} +3 -3
  826. package/dist/{workflow-condition-card-BRwhMmNO.cjs.map → workflow-condition-card-CMzoK307.cjs.map} +1 -1
  827. package/dist/{workflow-condition-card-sFdOjlab.js → workflow-condition-card-CbQ4fCxY.js} +3 -3
  828. package/dist/{workflow-condition-card-sFdOjlab.js.map → workflow-condition-card-CbQ4fCxY.js.map} +1 -1
  829. package/dist/{workflow-data-edge-view-DpPhr9gZ.cjs → workflow-data-edge-view-0utEB4Yb.cjs} +2 -2
  830. package/dist/{workflow-data-edge-view-DpPhr9gZ.cjs.map → workflow-data-edge-view-0utEB4Yb.cjs.map} +1 -1
  831. package/dist/{workflow-data-edge-view-CuSzc6YI.js → workflow-data-edge-view-gwwJEvXz.js} +2 -2
  832. package/dist/{workflow-data-edge-view-CuSzc6YI.js.map → workflow-data-edge-view-gwwJEvXz.js.map} +1 -1
  833. package/dist/{workflow-debug-controls-CAn_6S8K.cjs → workflow-debug-controls-B5zqE_rm.cjs} +2 -2
  834. package/dist/{workflow-debug-controls-CAn_6S8K.cjs.map → workflow-debug-controls-B5zqE_rm.cjs.map} +1 -1
  835. package/dist/{workflow-debug-controls-CLzbxd5O.js → workflow-debug-controls-CPpdNzD9.js} +2 -2
  836. package/dist/{workflow-debug-controls-CLzbxd5O.js.map → workflow-debug-controls-CPpdNzD9.js.map} +1 -1
  837. package/dist/{workflow-edge-data-button-Dtt_OUz9.js → workflow-edge-data-button-YWjfx-W0.js} +4 -4
  838. package/dist/{workflow-edge-data-button-Dtt_OUz9.js.map → workflow-edge-data-button-YWjfx-W0.js.map} +1 -1
  839. package/dist/{workflow-edge-data-button-B8rQaAoK.cjs → workflow-edge-data-button-tDvziS5v.cjs} +4 -4
  840. package/dist/{workflow-edge-data-button-B8rQaAoK.cjs.map → workflow-edge-data-button-tDvziS5v.cjs.map} +1 -1
  841. package/dist/{workflow-step-action-DqFjktfs.js → workflow-step-action-D8MVfEIl.js} +2 -2
  842. package/dist/{workflow-step-action-DqFjktfs.js.map → workflow-step-action-D8MVfEIl.js.map} +1 -1
  843. package/dist/{workflow-step-action-Cu01omgz.cjs → workflow-step-action-DZgS0_fL.cjs} +2 -2
  844. package/dist/{workflow-step-action-Cu01omgz.cjs.map → workflow-step-action-DZgS0_fL.cjs.map} +1 -1
  845. package/package.json +11 -13
  846. package/theme/scale.css +7 -0
  847. package/dist/Avatar-98bsFrSV.js.map +0 -1
  848. package/dist/Avatar-BCj8SvOb.cjs.map +0 -1
  849. package/dist/Button-DH1aTzbs.cjs.map +0 -1
  850. package/dist/Button-EGoajBQY.js.map +0 -1
  851. package/dist/activity-2tovEdIP.cjs.map +0 -1
  852. package/dist/activity-CsTUr5_l.js.map +0 -1
  853. package/dist/ask-user-card-DroerVbm.cjs.map +0 -1
  854. package/dist/avatar-size-CNR0U-LW.js.map +0 -1
  855. package/dist/avatar-size-DxStOo5A.cjs.map +0 -1
  856. package/dist/combobox-BNlVCFgY.cjs.map +0 -1
  857. package/dist/combobox-Bw13EcK0.js.map +0 -1
  858. package/dist/command-UEPxVJlE.cjs.map +0 -1
  859. package/dist/command-V9rsKc7P.js.map +0 -1
  860. package/dist/data-keys-and-values-1lYi60YK.cjs.map +0 -1
  861. package/dist/data-keys-and-values-CHpxKsfq.js.map +0 -1
  862. package/dist/data-list-CmjTe8xE.cjs +0 -142
  863. package/dist/data-list-CmjTe8xE.cjs.map +0 -1
  864. package/dist/data-list-DT1LVR29.js +0 -138
  865. package/dist/data-list-DT1LVR29.js.map +0 -1
  866. package/dist/data-list-spacer-CdlT6bDd.cjs +0 -218
  867. package/dist/data-list-spacer-CdlT6bDd.cjs.map +0 -1
  868. package/dist/data-list-spacer-D--gDmOm.js +0 -209
  869. package/dist/data-list-spacer-D--gDmOm.js.map +0 -1
  870. package/dist/data-list-top-DJh08vFA.cjs.map +0 -1
  871. package/dist/data-list-top-T-mtdIUp.js.map +0 -1
  872. package/dist/data-panel-BkfjzriB.cjs.map +0 -1
  873. package/dist/data-panel-CMkR6Avv.js.map +0 -1
  874. package/dist/filter-bar-chip-BJJ6ytJ4.cjs.map +0 -1
  875. package/dist/filter-bar-chip-BarAq1S2.js.map +0 -1
  876. package/dist/property-filter-applied-CtSglSaH.cjs.map +0 -1
  877. package/dist/property-filter-applied-J9ob_Rss.js.map +0 -1
  878. package/dist/select-CQtsggxJ.js.map +0 -1
  879. package/dist/select-CbNLtiAs.cjs.map +0 -1
  880. package/dist/thread-list-BANpytn3.cjs.map +0 -1
  881. package/dist/thread-list-lXnXsPul.js.map +0 -1
  882. package/dist/tool-call-group-DJsiIb-B.cjs.map +0 -1
  883. package/dist/tool-call-group-ZDNZog5K.js.map +0 -1
@@ -6,16 +6,16 @@ import { useDatasets, useDatasetItems, useDatasetItem, useDatasetMutations } fro
6
6
  import { useQuery } from '@tanstack/react-query';
7
7
  import { EyeIcon, WrenchIcon, X, Plus } from 'lucide-react';
8
8
  import { useState } from 'react';
9
- import { B as Button } from '../../../Button-EGoajBQY.js';
10
- import { C as CodeEditor } from '../../../code-editor-BDxYMkGm.js';
9
+ import { B as Button } from '../../../Button-D8a5EWJ5.js';
10
+ import { C as CodeEditor } from '../../../code-editor-8Fpinga4.js';
11
11
  import { F as Field, e as FieldLabel, b as FieldDescription } from '../../../field-Dl1zeXTv.js';
12
12
  import '../../../field-control-aria-DB6y41tQ.js';
13
13
  import { F as Form } from '../../../form-CMfC7JKB.js';
14
- import { S as Select, d as SelectTrigger, e as SelectValue, a as SelectContent, c as SelectItem } from '../../../select-CQtsggxJ.js';
14
+ import { S as Select, d as SelectTrigger, e as SelectValue, a as SelectContent, c as SelectItem } from '../../../select-7rYaECQf.js';
15
15
  import { T as Txt } from '../../../Txt-BtIGLRk1.js';
16
16
  import '../../../lib/framework.es.js';
17
17
  import { t as toast } from '../../../toast-5aQbZBbY.js';
18
- import { S as SideDialog } from '../../../side-dialog-bm8NPDXy.js';
18
+ import { S as SideDialog } from '../../../side-dialog-DSvj8H6x.js';
19
19
  import { T as TextAndIcon } from '../../../text-and-icon-CRYBkgtj.js';
20
20
  import { getShortId } from '../../../utils/id.es.js';
21
21
 
@@ -6,9 +6,9 @@ const jsxRuntime = require('react/jsx-runtime');
6
6
  const lucideReact = require('lucide-react');
7
7
  const React = require('react');
8
8
  const domains_scores_components_scoreAsItemDialog = require('./score-as-item-dialog.cjs.js');
9
- const Button = require('../../../Button-DH1aTzbs.cjs');
10
- const dataKeysAndValues = require('../../../data-keys-and-values-1lYi60YK.cjs');
11
- const dataPanel = require('../../../data-panel-BkfjzriB.cjs');
9
+ const Button = require('../../../Button-C4I05uT4.cjs');
10
+ const dataKeysAndValues = require('../../../data-keys-and-values-DBXIqeXt.cjs');
11
+ const dataPanel = require('../../../data-panel-DGNV14pm.cjs');
12
12
  const Txt = require('../../../Txt-CIS2G5Jx.cjs');
13
13
  const lib_framework = require('../../../lib/framework.cjs.js');
14
14
  const utils_cn = require('../../../cn-DlOJCxrS.cjs');
@@ -2,9 +2,9 @@ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
2
  import { SaveIcon, GaugeIcon, FileInputIcon, FileOutputIcon, ReceiptText } from 'lucide-react';
3
3
  import { useState } from 'react';
4
4
  import { ScoreAsItemDialog } from './score-as-item-dialog.es.js';
5
- import { B as Button } from '../../../Button-EGoajBQY.js';
6
- import { D as DataKeysAndValues } from '../../../data-keys-and-values-CHpxKsfq.js';
7
- import { D as DataPanel } from '../../../data-panel-CMkR6Avv.js';
5
+ import { B as Button } from '../../../Button-D8a5EWJ5.js';
6
+ import { D as DataKeysAndValues } from '../../../data-keys-and-values-DHp6cHJo.js';
7
+ import { D as DataPanel } from '../../../data-panel-DjtnX70w.js';
8
8
  import { T as Txt } from '../../../Txt-BtIGLRk1.js';
9
9
  import { useLinkComponent } from '../../../lib/framework.es.js';
10
10
  import { c as cn } from '../../../cn-CQUhN5Jx.js';
@@ -6,13 +6,13 @@ const jsxRuntime = require('react/jsx-runtime');
6
6
  const scores = require('@mastra/react/hooks/scores');
7
7
  const lucideReact = require('lucide-react');
8
8
  const React = require('react');
9
- const combobox = require('../../../combobox-BNlVCFgY.cjs');
9
+ const combobox = require('../../../combobox-DbZAWh8q.cjs');
10
10
  require('@base-ui/react/combobox');
11
- const dialog = require('../../../dialog-BMUfQ9XU.cjs');
11
+ const dialog = require('../../../dialog-SSeOqRnH.cjs');
12
12
  const Notice = require('../../../Notice-DYgIy4FO.cjs');
13
13
  const textAndIcon = require('../../../text-and-icon-BcyWJ1Fj.cjs');
14
14
  const toast = require('../../../toast-DxKdVSyw.cjs');
15
- const dialogAction = require('../../../dialog-action-CmFDNyZX.cjs');
15
+ const dialogAction = require('../../../dialog-action-Caa-pb85.cjs');
16
16
 
17
17
  function SpanScoring({
18
18
  traceId,
@@ -2,13 +2,13 @@ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
2
  import { useTriggerScorer } from '@mastra/react/hooks/scores';
3
3
  import { InfoIcon } from 'lucide-react';
4
4
  import { useState } from 'react';
5
- import { C as Combobox } from '../../../combobox-Bw13EcK0.js';
5
+ import { C as Combobox } from '../../../combobox-BCoCVZHs.js';
6
6
  import '@base-ui/react/combobox';
7
- import { a as DialogBody, f as DialogFooter, b as DialogCancel, e as DialogDescription } from '../../../dialog-j2e95YNV.js';
7
+ import { a as DialogBody, f as DialogFooter, b as DialogCancel, e as DialogDescription } from '../../../dialog-AzCRnEo3.js';
8
8
  import { N as Notice } from '../../../Notice-BioYTS4b.js';
9
9
  import { T as TextAndIcon } from '../../../text-and-icon-CRYBkgtj.js';
10
10
  import { t as toast } from '../../../toast-5aQbZBbY.js';
11
- import { D as DialogAction } from '../../../dialog-action-zKqvuroE.js';
11
+ import { D as DialogAction } from '../../../dialog-action-DykMOK2W.js';
12
12
 
13
13
  function SpanScoring({
14
14
  traceId,
@@ -5,7 +5,8 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5
5
  const jsxRuntime = require('react/jsx-runtime');
6
6
  const scores = require('@mastra/react/hooks/scores');
7
7
  const React = require('react');
8
- const dataList = require('../../../data-list-CmjTe8xE.cjs');
8
+ const dataList = require('../../../data-list-DlXU1PLQ.cjs');
9
+ require('../../../keyboard/keyboard-shortcuts-context.cjs.js');
9
10
  const EmptyState = require('../../../EmptyState-FNJu74e8.cjs');
10
11
  const metricsKpiCard = require('../../../metrics-kpi-card-LOGZrRxg.cjs');
11
12
  const spinner = require('../../../spinner-Q8y5rnSa.cjs');
@@ -1 +1 @@
1
- {"version":3,"file":"trace-scores-tab.cjs.js","sources":["../../../../src/domains/scores/components/trace-scores-tab.tsx"],"sourcesContent":["import type { ClientScoreRowData, ListScoresResponse } from '@mastra/client-js';\nimport { useTraceSpanScores } from '@mastra/react/hooks/scores';\nimport { useState } from 'react';\nimport { DataList } from '@/ds/components/DataList';\nimport { EmptyState } from '@/ds/components/EmptyState';\nimport { MetricsKpiCard } from '@/ds/components/MetricsKpiCard';\nimport { Spinner } from '@/ds/components/Spinner';\nimport { getShortId } from '@/ds/components/Text';\nimport { Txt } from '@/ds/components/Txt';\nimport { controlStateColorTransition } from '@/ds/primitives/transitions';\nimport { quietTextHover } from '@/ds/primitives/typography';\nimport { cn } from '@/utils/cn';\nimport { formatDate } from '@/utils/date-format';\n\nconst REASON_PREVIEW_LENGTH = 100;\n\nexport type TraceScoresTabProps = {\n traceId: string;\n spanId: string;\n onScoreSelect: (scoreId: string) => void;\n};\n\n/**\n * Scores for the trace's anchor span, one card per scoring. Owns its own pagination:\n * mount it with a `key` on the trace/anchor pair so a page index never leaks across traces.\n */\nexport function TraceScoresTab({ traceId, spanId, onScoreSelect }: TraceScoresTabProps) {\n const [page, setPage] = useState(0);\n const { data: scoresData, isLoading } = useTraceSpanScores({\n traceId,\n spanId,\n page,\n queryOptions: { enabled: !!traceId && !!spanId },\n });\n\n if (isLoading) {\n return (\n <div className=\"flex justify-center py-6\">\n <Spinner size=\"md\" variant=\"pulse\" className=\"text-placeholder\" />\n </div>\n );\n }\n\n const scores = scoresData?.scores ?? [];\n\n if (scores.length === 0) {\n return <EmptyState titleSlot=\"No scores yet\" descriptionSlot=\"Score this trace to see results here.\" />;\n }\n\n return (\n <div className=\"grid content-start gap-3\">\n {scores.map(score => (\n <TraceScoreCard key={score.id} score={score} onSelect={() => onScoreSelect(score.id)} />\n ))}\n <TraceScoresPagination pagination={scoresData?.pagination} onPageChange={setPage} />\n </div>\n );\n}\n\nfunction TraceScoreCard({ score, onSelect }: { score: ClientScoreRowData; onSelect: () => void }) {\n const createdAt = new Date(score.createdAt);\n const scorerName = String(score.scorer?.name || score.scorer?.id || 'Scorer');\n\n return (\n <MetricsKpiCard className=\"relative min-w-0 cursor-pointer\">\n <button\n type=\"button\"\n onClick={onSelect}\n aria-label={`Score ${getShortId(score.id)}`}\n className=\"grid cursor-pointer gap-1 text-left after:absolute after:inset-0 after:content-['']\"\n >\n <MetricsKpiCard.Label>{scorerName}</MetricsKpiCard.Label>\n <MetricsKpiCard.Value>{String(score.score)}</MetricsKpiCard.Value>\n <Txt as=\"span\" variant=\"meta\" tone=\"muted\" className=\"tabular-nums\">\n <Txt as=\"span\" variant=\"meta\" font=\"mono\">\n {getShortId(score.id)}\n </Txt>{' '}\n · {formatDate(createdAt, 'date-time-seconds')}\n </Txt>\n </button>\n {score.reason && <TraceScoreReason reason={score.reason} />}\n </MetricsKpiCard>\n );\n}\n\nfunction TraceScoreReason({ reason }: { reason: string }) {\n const [expanded, setExpanded] = useState(false);\n const isLong = reason.length > REASON_PREVIEW_LENGTH;\n const text = isLong && !expanded ? `${reason.slice(0, REASON_PREVIEW_LENGTH).trimEnd()}…` : reason;\n\n return (\n <Txt variant=\"caption\" tone=\"faint\">\n {text}\n {isLong && (\n <>\n {' '}\n <button\n type=\"button\"\n onClick={() => setExpanded(value => !value)}\n className={cn(quietTextHover, controlStateColorTransition, 'relative z-10 underline underline-offset-2')}\n >\n <Txt as=\"span\" variant=\"caption\">\n {expanded ? 'Read less' : 'Read more'}\n </Txt>\n </button>\n </>\n )}\n </Txt>\n );\n}\n\nfunction TraceScoresPagination({\n pagination,\n onPageChange,\n}: {\n pagination?: ListScoresResponse['pagination'];\n onPageChange: (page: number) => void;\n}) {\n const currentPage = pagination?.page ?? 0;\n if (currentPage === 0 && !pagination?.hasMore) return null;\n\n return (\n <DataList.Pagination\n currentPage={currentPage}\n hasMore={pagination?.hasMore}\n onNextPage={() => onPageChange(currentPage + 1)}\n onPrevPage={() => onPageChange(currentPage - 1)}\n />\n );\n}\n"],"names":["useState","useTraceSpanScores","jsx","Spinner","scores","EmptyState","jsxs","MetricsKpiCard","getShortId","Txt","formatDate","Fragment","cn","quietTextHover","controlStateColorTransition","DataList"],"mappings":"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"}
1
+ {"version":3,"file":"trace-scores-tab.cjs.js","sources":["../../../../src/domains/scores/components/trace-scores-tab.tsx"],"sourcesContent":["import type { ClientScoreRowData, ListScoresResponse } from '@mastra/client-js';\nimport { useTraceSpanScores } from '@mastra/react/hooks/scores';\nimport { useState } from 'react';\nimport { DataList } from '@/ds/components/DataList';\nimport { EmptyState } from '@/ds/components/EmptyState';\nimport { MetricsKpiCard } from '@/ds/components/MetricsKpiCard';\nimport { Spinner } from '@/ds/components/Spinner';\nimport { getShortId } from '@/ds/components/Text';\nimport { Txt } from '@/ds/components/Txt';\nimport { controlStateColorTransition } from '@/ds/primitives/transitions';\nimport { quietTextHover } from '@/ds/primitives/typography';\nimport { cn } from '@/utils/cn';\nimport { formatDate } from '@/utils/date-format';\n\nconst REASON_PREVIEW_LENGTH = 100;\n\nexport type TraceScoresTabProps = {\n traceId: string;\n spanId: string;\n onScoreSelect: (scoreId: string) => void;\n};\n\n/**\n * Scores for the trace's anchor span, one card per scoring. Owns its own pagination:\n * mount it with a `key` on the trace/anchor pair so a page index never leaks across traces.\n */\nexport function TraceScoresTab({ traceId, spanId, onScoreSelect }: TraceScoresTabProps) {\n const [page, setPage] = useState(0);\n const { data: scoresData, isLoading } = useTraceSpanScores({\n traceId,\n spanId,\n page,\n queryOptions: { enabled: !!traceId && !!spanId },\n });\n\n if (isLoading) {\n return (\n <div className=\"flex justify-center py-6\">\n <Spinner size=\"md\" variant=\"pulse\" className=\"text-placeholder\" />\n </div>\n );\n }\n\n const scores = scoresData?.scores ?? [];\n\n if (scores.length === 0) {\n return <EmptyState titleSlot=\"No scores yet\" descriptionSlot=\"Score this trace to see results here.\" />;\n }\n\n return (\n <div className=\"grid content-start gap-3\">\n {scores.map(score => (\n <TraceScoreCard key={score.id} score={score} onSelect={() => onScoreSelect(score.id)} />\n ))}\n <TraceScoresPagination pagination={scoresData?.pagination} onPageChange={setPage} />\n </div>\n );\n}\n\nfunction TraceScoreCard({ score, onSelect }: { score: ClientScoreRowData; onSelect: () => void }) {\n const createdAt = new Date(score.createdAt);\n const scorerName = String(score.scorer?.name || score.scorer?.id || 'Scorer');\n\n return (\n <MetricsKpiCard className=\"relative min-w-0 cursor-pointer\">\n <button\n type=\"button\"\n onClick={onSelect}\n aria-label={`Score ${getShortId(score.id)}`}\n className=\"grid cursor-pointer gap-1 text-left after:absolute after:inset-0 after:content-['']\"\n >\n <MetricsKpiCard.Label>{scorerName}</MetricsKpiCard.Label>\n <MetricsKpiCard.Value>{String(score.score)}</MetricsKpiCard.Value>\n <Txt as=\"span\" variant=\"meta\" tone=\"muted\" className=\"tabular-nums\">\n <Txt as=\"span\" variant=\"meta\" font=\"mono\">\n {getShortId(score.id)}\n </Txt>{' '}\n · {formatDate(createdAt, 'date-time-seconds')}\n </Txt>\n </button>\n {score.reason && <TraceScoreReason reason={score.reason} />}\n </MetricsKpiCard>\n );\n}\n\nfunction TraceScoreReason({ reason }: { reason: string }) {\n const [expanded, setExpanded] = useState(false);\n const isLong = reason.length > REASON_PREVIEW_LENGTH;\n const text = isLong && !expanded ? `${reason.slice(0, REASON_PREVIEW_LENGTH).trimEnd()}…` : reason;\n\n return (\n <Txt variant=\"caption\" tone=\"faint\">\n {text}\n {isLong && (\n <>\n {' '}\n <button\n type=\"button\"\n onClick={() => setExpanded(value => !value)}\n className={cn(quietTextHover, controlStateColorTransition, 'relative z-10 underline underline-offset-2')}\n >\n <Txt as=\"span\" variant=\"caption\">\n {expanded ? 'Read less' : 'Read more'}\n </Txt>\n </button>\n </>\n )}\n </Txt>\n );\n}\n\nfunction TraceScoresPagination({\n pagination,\n onPageChange,\n}: {\n pagination?: ListScoresResponse['pagination'];\n onPageChange: (page: number) => void;\n}) {\n const currentPage = pagination?.page ?? 0;\n if (currentPage === 0 && !pagination?.hasMore) return null;\n\n return (\n <DataList.Pagination\n currentPage={currentPage}\n hasMore={pagination?.hasMore}\n onNextPage={() => onPageChange(currentPage + 1)}\n onPrevPage={() => onPageChange(currentPage - 1)}\n />\n );\n}\n"],"names":["useState","useTraceSpanScores","jsx","Spinner","scores","EmptyState","jsxs","MetricsKpiCard","getShortId","Txt","formatDate","Fragment","cn","quietTextHover","controlStateColorTransition","DataList"],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { useTraceSpanScores } from '@mastra/react/hooks/scores';
3
3
  import { useState } from 'react';
4
- import { D as DataList } from '../../../data-list-DT1LVR29.js';
4
+ import { e as DataList } from '../../../data-list-Tor18oy5.js';
5
+ import '../../../keyboard/keyboard-shortcuts-context.es.js';
5
6
  import { E as EmptyState } from '../../../EmptyState-qVoRkUMf.js';
6
7
  import { M as MetricsKpiCard } from '../../../metrics-kpi-card-Br-DJ-As.js';
7
8
  import { S as Spinner } from '../../../spinner-CsLM6TfA.js';
@@ -1 +1 @@
1
- {"version":3,"file":"trace-scores-tab.es.js","sources":["../../../../src/domains/scores/components/trace-scores-tab.tsx"],"sourcesContent":["import type { ClientScoreRowData, ListScoresResponse } from '@mastra/client-js';\nimport { useTraceSpanScores } from '@mastra/react/hooks/scores';\nimport { useState } from 'react';\nimport { DataList } from '@/ds/components/DataList';\nimport { EmptyState } from '@/ds/components/EmptyState';\nimport { MetricsKpiCard } from '@/ds/components/MetricsKpiCard';\nimport { Spinner } from '@/ds/components/Spinner';\nimport { getShortId } from '@/ds/components/Text';\nimport { Txt } from '@/ds/components/Txt';\nimport { controlStateColorTransition } from '@/ds/primitives/transitions';\nimport { quietTextHover } from '@/ds/primitives/typography';\nimport { cn } from '@/utils/cn';\nimport { formatDate } from '@/utils/date-format';\n\nconst REASON_PREVIEW_LENGTH = 100;\n\nexport type TraceScoresTabProps = {\n traceId: string;\n spanId: string;\n onScoreSelect: (scoreId: string) => void;\n};\n\n/**\n * Scores for the trace's anchor span, one card per scoring. Owns its own pagination:\n * mount it with a `key` on the trace/anchor pair so a page index never leaks across traces.\n */\nexport function TraceScoresTab({ traceId, spanId, onScoreSelect }: TraceScoresTabProps) {\n const [page, setPage] = useState(0);\n const { data: scoresData, isLoading } = useTraceSpanScores({\n traceId,\n spanId,\n page,\n queryOptions: { enabled: !!traceId && !!spanId },\n });\n\n if (isLoading) {\n return (\n <div className=\"flex justify-center py-6\">\n <Spinner size=\"md\" variant=\"pulse\" className=\"text-placeholder\" />\n </div>\n );\n }\n\n const scores = scoresData?.scores ?? [];\n\n if (scores.length === 0) {\n return <EmptyState titleSlot=\"No scores yet\" descriptionSlot=\"Score this trace to see results here.\" />;\n }\n\n return (\n <div className=\"grid content-start gap-3\">\n {scores.map(score => (\n <TraceScoreCard key={score.id} score={score} onSelect={() => onScoreSelect(score.id)} />\n ))}\n <TraceScoresPagination pagination={scoresData?.pagination} onPageChange={setPage} />\n </div>\n );\n}\n\nfunction TraceScoreCard({ score, onSelect }: { score: ClientScoreRowData; onSelect: () => void }) {\n const createdAt = new Date(score.createdAt);\n const scorerName = String(score.scorer?.name || score.scorer?.id || 'Scorer');\n\n return (\n <MetricsKpiCard className=\"relative min-w-0 cursor-pointer\">\n <button\n type=\"button\"\n onClick={onSelect}\n aria-label={`Score ${getShortId(score.id)}`}\n className=\"grid cursor-pointer gap-1 text-left after:absolute after:inset-0 after:content-['']\"\n >\n <MetricsKpiCard.Label>{scorerName}</MetricsKpiCard.Label>\n <MetricsKpiCard.Value>{String(score.score)}</MetricsKpiCard.Value>\n <Txt as=\"span\" variant=\"meta\" tone=\"muted\" className=\"tabular-nums\">\n <Txt as=\"span\" variant=\"meta\" font=\"mono\">\n {getShortId(score.id)}\n </Txt>{' '}\n · {formatDate(createdAt, 'date-time-seconds')}\n </Txt>\n </button>\n {score.reason && <TraceScoreReason reason={score.reason} />}\n </MetricsKpiCard>\n );\n}\n\nfunction TraceScoreReason({ reason }: { reason: string }) {\n const [expanded, setExpanded] = useState(false);\n const isLong = reason.length > REASON_PREVIEW_LENGTH;\n const text = isLong && !expanded ? `${reason.slice(0, REASON_PREVIEW_LENGTH).trimEnd()}…` : reason;\n\n return (\n <Txt variant=\"caption\" tone=\"faint\">\n {text}\n {isLong && (\n <>\n {' '}\n <button\n type=\"button\"\n onClick={() => setExpanded(value => !value)}\n className={cn(quietTextHover, controlStateColorTransition, 'relative z-10 underline underline-offset-2')}\n >\n <Txt as=\"span\" variant=\"caption\">\n {expanded ? 'Read less' : 'Read more'}\n </Txt>\n </button>\n </>\n )}\n </Txt>\n );\n}\n\nfunction TraceScoresPagination({\n pagination,\n onPageChange,\n}: {\n pagination?: ListScoresResponse['pagination'];\n onPageChange: (page: number) => void;\n}) {\n const currentPage = pagination?.page ?? 0;\n if (currentPage === 0 && !pagination?.hasMore) return null;\n\n return (\n <DataList.Pagination\n currentPage={currentPage}\n hasMore={pagination?.hasMore}\n onNextPage={() => onPageChange(currentPage + 1)}\n onPrevPage={() => onPageChange(currentPage - 1)}\n />\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trace-scores-tab.es.js","sources":["../../../../src/domains/scores/components/trace-scores-tab.tsx"],"sourcesContent":["import type { ClientScoreRowData, ListScoresResponse } from '@mastra/client-js';\nimport { useTraceSpanScores } from '@mastra/react/hooks/scores';\nimport { useState } from 'react';\nimport { DataList } from '@/ds/components/DataList';\nimport { EmptyState } from '@/ds/components/EmptyState';\nimport { MetricsKpiCard } from '@/ds/components/MetricsKpiCard';\nimport { Spinner } from '@/ds/components/Spinner';\nimport { getShortId } from '@/ds/components/Text';\nimport { Txt } from '@/ds/components/Txt';\nimport { controlStateColorTransition } from '@/ds/primitives/transitions';\nimport { quietTextHover } from '@/ds/primitives/typography';\nimport { cn } from '@/utils/cn';\nimport { formatDate } from '@/utils/date-format';\n\nconst REASON_PREVIEW_LENGTH = 100;\n\nexport type TraceScoresTabProps = {\n traceId: string;\n spanId: string;\n onScoreSelect: (scoreId: string) => void;\n};\n\n/**\n * Scores for the trace's anchor span, one card per scoring. Owns its own pagination:\n * mount it with a `key` on the trace/anchor pair so a page index never leaks across traces.\n */\nexport function TraceScoresTab({ traceId, spanId, onScoreSelect }: TraceScoresTabProps) {\n const [page, setPage] = useState(0);\n const { data: scoresData, isLoading } = useTraceSpanScores({\n traceId,\n spanId,\n page,\n queryOptions: { enabled: !!traceId && !!spanId },\n });\n\n if (isLoading) {\n return (\n <div className=\"flex justify-center py-6\">\n <Spinner size=\"md\" variant=\"pulse\" className=\"text-placeholder\" />\n </div>\n );\n }\n\n const scores = scoresData?.scores ?? [];\n\n if (scores.length === 0) {\n return <EmptyState titleSlot=\"No scores yet\" descriptionSlot=\"Score this trace to see results here.\" />;\n }\n\n return (\n <div className=\"grid content-start gap-3\">\n {scores.map(score => (\n <TraceScoreCard key={score.id} score={score} onSelect={() => onScoreSelect(score.id)} />\n ))}\n <TraceScoresPagination pagination={scoresData?.pagination} onPageChange={setPage} />\n </div>\n );\n}\n\nfunction TraceScoreCard({ score, onSelect }: { score: ClientScoreRowData; onSelect: () => void }) {\n const createdAt = new Date(score.createdAt);\n const scorerName = String(score.scorer?.name || score.scorer?.id || 'Scorer');\n\n return (\n <MetricsKpiCard className=\"relative min-w-0 cursor-pointer\">\n <button\n type=\"button\"\n onClick={onSelect}\n aria-label={`Score ${getShortId(score.id)}`}\n className=\"grid cursor-pointer gap-1 text-left after:absolute after:inset-0 after:content-['']\"\n >\n <MetricsKpiCard.Label>{scorerName}</MetricsKpiCard.Label>\n <MetricsKpiCard.Value>{String(score.score)}</MetricsKpiCard.Value>\n <Txt as=\"span\" variant=\"meta\" tone=\"muted\" className=\"tabular-nums\">\n <Txt as=\"span\" variant=\"meta\" font=\"mono\">\n {getShortId(score.id)}\n </Txt>{' '}\n · {formatDate(createdAt, 'date-time-seconds')}\n </Txt>\n </button>\n {score.reason && <TraceScoreReason reason={score.reason} />}\n </MetricsKpiCard>\n );\n}\n\nfunction TraceScoreReason({ reason }: { reason: string }) {\n const [expanded, setExpanded] = useState(false);\n const isLong = reason.length > REASON_PREVIEW_LENGTH;\n const text = isLong && !expanded ? `${reason.slice(0, REASON_PREVIEW_LENGTH).trimEnd()}…` : reason;\n\n return (\n <Txt variant=\"caption\" tone=\"faint\">\n {text}\n {isLong && (\n <>\n {' '}\n <button\n type=\"button\"\n onClick={() => setExpanded(value => !value)}\n className={cn(quietTextHover, controlStateColorTransition, 'relative z-10 underline underline-offset-2')}\n >\n <Txt as=\"span\" variant=\"caption\">\n {expanded ? 'Read less' : 'Read more'}\n </Txt>\n </button>\n </>\n )}\n </Txt>\n );\n}\n\nfunction TraceScoresPagination({\n pagination,\n onPageChange,\n}: {\n pagination?: ListScoresResponse['pagination'];\n onPageChange: (page: number) => void;\n}) {\n const currentPage = pagination?.page ?? 0;\n if (currentPage === 0 && !pagination?.hasMore) return null;\n\n return (\n <DataList.Pagination\n currentPage={currentPage}\n hasMore={pagination?.hasMore}\n onNextPage={() => onPageChange(currentPage + 1)}\n onPrevPage={() => onPageChange(currentPage - 1)}\n />\n );\n}\n"],"names":[],"mappings":"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"}
@@ -7,12 +7,12 @@ const lucideReact = require('lucide-react');
7
7
  const React = require('react');
8
8
  const domains_review_components_reviewStatusBadge = require('../../review/components/review-status-badge.cjs.js');
9
9
  const domains_traces_utils_feedbackAuthor = require('../utils/feedback-author.cjs.js');
10
- const alertDialog = require('../../../alert-dialog-B1gWLQm2.cjs');
11
- const Avatar = require('../../../Avatar-BCj8SvOb.cjs');
12
- const Button = require('../../../Button-DH1aTzbs.cjs');
10
+ const alertDialog = require('../../../alert-dialog-DY2JJAnk.cjs');
11
+ const Avatar = require('../../../Avatar-DM90rmwx.cjs');
12
+ const Button = require('../../../Button-C4I05uT4.cjs');
13
13
  const comment = require('../../../comment-BWuugtyq.cjs');
14
14
  const dropdownMenu = require('../../../dropdown-menu-CsynT1aD.cjs');
15
- const inputGroup = require('../../../input-group-DSW5WoSU.cjs');
15
+ const inputGroup = require('../../../input-group-DRXUthxe.cjs');
16
16
  const Txt = require('../../../Txt-CIS2G5Jx.cjs');
17
17
  const icons_Icon = require('../../../icons/Icon.cjs.js');
18
18
  const utils_dateFormat = require('../../../utils/date-format.cjs.js');
@@ -1 +1 @@
1
- {"version":3,"file":"feedback-thread.cjs.js","sources":["../../../../src/domains/traces/components/feedback-thread.tsx"],"sourcesContent":["import type { FeedbackItem, ListFeedbackResponse } from '@mastra/client-js';\nimport { ArrowUp, Trash2, ChevronRight, ChevronLeft, ClipboardCheck, EllipsisIcon } from 'lucide-react';\nimport { useState } from 'react';\nimport { ReviewStatusBadge } from '@/domains/review/components/review-status-badge';\nimport { feedbackAuthorLabel } from '@/domains/traces/utils/feedback-author';\nimport { AlertDialog } from '@/ds/components/AlertDialog';\nimport { Avatar } from '@/ds/components/Avatar';\nimport { Button } from '@/ds/components/Button';\nimport {\n Comment,\n type CommentVariant,\n CommentItem,\n CommentItemActions,\n CommentItemAuthor,\n CommentItemAvatar,\n CommentItemBody,\n CommentItemContent,\n CommentItemHeader,\n CommentItemTimestamp,\n CommentList,\n} from '@/ds/components/Comment';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu';\nimport { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput } from '@/ds/components/InputGroup';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { formatDate } from '@/utils/date-format';\n\ntype FeedbackThreadProps = {\n feedbackData?: ListFeedbackResponse | null;\n isLoadingFeedbackData?: boolean;\n onPageChange?: (page: number) => void;\n /** Rejecting (or throwing) keeps the draft in the composer so it can be retried. */\n onSubmit: (text: string) => void | Promise<unknown>;\n isSubmitting?: boolean;\n /** When provided, records with a feedbackId get a delete action. */\n onDelete?: (feedbackId: string) => void | Promise<unknown>;\n isDeleting?: boolean;\n /**\n * Comment layout variant. Defaults to `thread` (avatar gutter + content column);\n * `embed` renders a compact card suitable for inline use.\n */\n variant?: CommentVariant;\n /** When provided, unreviewed rows get a \"Mark reviewed\" action. */\n onMarkReviewed?: (feedbackId: string) => void;\n /** feedbackId whose review-status update is in flight (disables its action). */\n pendingFeedbackId?: string;\n};\n\n// The server defaults `reviewStatus` to `needs-review`, so a missing value means the same.\nfunction FeedbackReviewStatusBadge({ status }: { status: FeedbackItem['reviewStatus'] }) {\n const resolved = status === 'reviewed' ? 'reviewed' : 'needs-review';\n return (\n <ReviewStatusBadge data-slot=\"feedback-review-status\" status={resolved}>\n {resolved === 'reviewed' ? 'Reviewed' : 'Needs review'}\n </ReviewStatusBadge>\n );\n}\n\nfunction formatBody(fb: FeedbackItem): string {\n const text = fb.comment || (typeof fb.value === 'string' ? fb.value : '');\n if (text) return text;\n if (fb.feedbackType === 'thumbs') return fb.value === 1 ? '\\u{1F44D}' : '\\u{1F44E}';\n return String(fb.value ?? '');\n}\n\ntype FeedbackItemsProps = Pick<FeedbackThreadProps, 'onMarkReviewed' | 'pendingFeedbackId'> & {\n variant: CommentVariant;\n items: FeedbackItem[];\n onRequestDelete?: (feedbackId: string) => void;\n isDeleting: boolean;\n};\n\nfunction FeedbackItems({\n variant,\n items,\n onRequestDelete,\n isDeleting,\n onMarkReviewed,\n pendingFeedbackId,\n}: FeedbackItemsProps) {\n const rows = items.map((fb, index) => {\n const ts = new Date(fb.timestamp);\n const author = feedbackAuthorLabel(fb);\n const avatar = author ? <Avatar name={author} src={fb.author?.avatarUrl} size=\"sm\" /> : null;\n const name = author && <CommentItemAuthor>{author}</CommentItemAuthor>;\n const timestamp = (\n <CommentItemTimestamp dateTime={ts.toISOString()}>{formatDate(ts, 'date-time')}</CommentItemTimestamp>\n );\n const feedbackId = fb.feedbackId;\n const status = <FeedbackReviewStatusBadge status={fb.reviewStatus} />;\n const canMarkReviewed = Boolean(onMarkReviewed && feedbackId && fb.reviewStatus !== 'reviewed');\n const canDelete = Boolean(onRequestDelete && feedbackId);\n const actions = feedbackId && (canMarkReviewed || canDelete) && (\n <CommentItemActions>\n <DropdownMenu>\n <DropdownMenu.Trigger\n render={\n <Button size=\"icon-sm\" variant=\"ghost\" aria-label=\"Feedback actions\">\n <EllipsisIcon />\n </Button>\n }\n />\n <DropdownMenu.Content align=\"end\">\n {canMarkReviewed && (\n <DropdownMenu.Item\n disabled={pendingFeedbackId === feedbackId}\n onSelect={() => onMarkReviewed?.(feedbackId)}\n >\n <Icon size=\"xs\">\n <ClipboardCheck />\n </Icon>\n Mark reviewed\n </DropdownMenu.Item>\n )}\n {canDelete && (\n <DropdownMenu.Item disabled={isDeleting} onSelect={() => onRequestDelete?.(feedbackId)}>\n <Icon size=\"xs\">\n <Trash2 />\n </Icon>\n Delete feedback\n </DropdownMenu.Item>\n )}\n </DropdownMenu.Content>\n </DropdownMenu>\n </CommentItemActions>\n );\n const body = <CommentItemBody>{formatBody(fb)}</CommentItemBody>;\n const key = feedbackId ?? `${fb.traceId}-${index}`;\n\n // The thread variant lays the row out as avatar gutter + content column.\n // Without an author there is nothing to align under, so skip the gutter entirely.\n if (variant === 'thread') {\n return (\n <CommentItem key={key}>\n {avatar && <CommentItemAvatar>{avatar}</CommentItemAvatar>}\n <CommentItemContent>\n <CommentItemHeader>\n {name}\n {timestamp}\n {status}\n {actions}\n </CommentItemHeader>\n {body}\n </CommentItemContent>\n </CommentItem>\n );\n }\n\n // Stacked variants have no gutter, so the avatar sits inline in the header.\n return (\n <CommentItem key={key}>\n <CommentItemHeader>\n {avatar}\n {name}\n {timestamp}\n {status}\n {actions}\n </CommentItemHeader>\n {body}\n </CommentItem>\n );\n });\n\n // Thread rows are stream entries rendered as `div`s, not list items.\n return variant === 'thread' ? <>{rows}</> : <CommentList>{rows}</CommentList>;\n}\n\n/**\n * Feedback rendered as a comment thread: a composer above, existing records below.\n * Pagination, submission, deletion, and review status are driven by the caller.\n */\nexport function FeedbackThread({\n feedbackData,\n isLoadingFeedbackData,\n onPageChange,\n onSubmit,\n isSubmitting = false,\n onDelete,\n isDeleting = false,\n variant = 'thread',\n onMarkReviewed,\n pendingFeedbackId,\n}: FeedbackThreadProps) {\n const [text, setText] = useState('');\n const [feedbackIdToDelete, setFeedbackIdToDelete] = useState<string>();\n const sendBlocked = text.trim().length === 0 || isSubmitting;\n\n const feedbackItems = feedbackData?.feedback ?? [];\n const currentPage = feedbackData?.pagination?.page ?? 0;\n const hasMore = feedbackData?.pagination?.hasMore ?? false;\n\n const handleDeleteConfirm = async () => {\n if (!feedbackIdToDelete || !onDelete) return;\n\n try {\n await onDelete(feedbackIdToDelete);\n setFeedbackIdToDelete(undefined);\n } catch {\n // Keep the confirmation open so the deletion can be retried.\n }\n };\n\n return (\n <Comment variant={variant} className=\"min-h-0 gap-3\">\n {/* Same size/variant as the timeline search field so switching tabs doesn't shift the layout. */}\n <form\n aria-label=\"Leave feedback\"\n className=\"flex w-full items-center gap-2\"\n onSubmit={async event => {\n event.preventDefault();\n if (sendBlocked) return;\n try {\n await onSubmit(text.trim());\n setText('');\n } catch {\n // Keep the draft so the comment isn't lost; the caller surfaces the failure.\n }\n }}\n >\n <InputGroup size=\"sm\">\n <InputGroupInput\n aria-label=\"Leave feedback\"\n placeholder=\"Leave feedback...\"\n value={text}\n onChange={event => setText(event.target.value)}\n />\n <InputGroupAddon align=\"inline-end\">\n <InputGroupButton type=\"submit\" aria-label=\"Send feedback\" disabled={sendBlocked}>\n <ArrowUp />\n </InputGroupButton>\n </InputGroupAddon>\n </InputGroup>\n </form>\n\n <div className=\"min-h-0 overflow-y-auto\">\n {isLoadingFeedbackData ? (\n <Txt variant=\"body\" tone=\"muted\">\n Loading feedback...\n </Txt>\n ) : feedbackItems.length === 0 ? (\n <Txt variant=\"body\" tone=\"muted\" className=\"text-center\">\n No feedback yet\n </Txt>\n ) : (\n <FeedbackItems\n variant={variant}\n items={feedbackItems}\n onRequestDelete={onDelete ? setFeedbackIdToDelete : undefined}\n isDeleting={isDeleting}\n onMarkReviewed={onMarkReviewed}\n pendingFeedbackId={pendingFeedbackId}\n />\n )}\n </div>\n\n {(hasMore || currentPage > 0) && (\n <div className=\"flex items-center gap-2\">\n <Button\n icon={<ChevronLeft />}\n size=\"sm\"\n variant=\"ghost\"\n disabled={currentPage === 0}\n onClick={() => onPageChange?.(currentPage - 1)}\n >\n Previous\n </Button>\n <Button\n icon={<ChevronRight />}\n size=\"sm\"\n variant=\"ghost\"\n disabled={!hasMore}\n onClick={() => onPageChange?.(currentPage + 1)}\n >\n Next\n </Button>\n </div>\n )}\n\n <AlertDialog\n open={feedbackIdToDelete !== undefined}\n onOpenChange={open => {\n if (!open && !isDeleting) setFeedbackIdToDelete(undefined);\n }}\n >\n <AlertDialog.Content>\n <AlertDialog.Header>\n <AlertDialog.Title>Delete feedback?</AlertDialog.Title>\n <AlertDialog.Description>\n This permanently deletes this feedback comment. This action cannot be undone.\n </AlertDialog.Description>\n </AlertDialog.Header>\n <AlertDialog.Footer>\n <AlertDialog.Cancel disabled={isDeleting}>Cancel</AlertDialog.Cancel>\n <Button icon={<Trash2 />} variant=\"primary\" disabled={isDeleting} onClick={handleDeleteConfirm}>\n {isDeleting ? 'Deleting…' : 'Delete'}\n </Button>\n </AlertDialog.Footer>\n </AlertDialog.Content>\n </AlertDialog>\n </Comment>\n );\n}\n"],"names":["jsx","ReviewStatusBadge","feedbackAuthorLabel","Avatar","CommentItemAuthor","CommentItemTimestamp","formatDate","CommentItemActions","DropdownMenu","Button","EllipsisIcon","jsxs","Icon","ClipboardCheck","Trash2","CommentItemBody","CommentItem","CommentItemAvatar","CommentItemContent","CommentItemHeader","Fragment","CommentList","useState","Comment","InputGroup","InputGroupInput","InputGroupAddon","InputGroupButton","ArrowUp","Txt","ChevronLeft","ChevronRight","AlertDialog"],"mappings":"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"}
1
+ {"version":3,"file":"feedback-thread.cjs.js","sources":["../../../../src/domains/traces/components/feedback-thread.tsx"],"sourcesContent":["import type { FeedbackItem, ListFeedbackResponse } from '@mastra/client-js';\nimport { ArrowUp, Trash2, ChevronRight, ChevronLeft, ClipboardCheck, EllipsisIcon } from 'lucide-react';\nimport { useState } from 'react';\nimport { ReviewStatusBadge } from '@/domains/review/components/review-status-badge';\nimport { feedbackAuthorLabel } from '@/domains/traces/utils/feedback-author';\nimport { AlertDialog } from '@/ds/components/AlertDialog';\nimport { Avatar } from '@/ds/components/Avatar';\nimport { Button } from '@/ds/components/Button';\nimport {\n Comment,\n CommentItem,\n CommentItemActions,\n CommentItemAuthor,\n CommentItemAvatar,\n CommentItemBody,\n CommentItemContent,\n CommentItemHeader,\n CommentItemTimestamp,\n CommentList,\n} from '@/ds/components/Comment';\nimport type { CommentVariant } from '@/ds/components/Comment';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu';\nimport { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput } from '@/ds/components/InputGroup';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { formatDate } from '@/utils/date-format';\n\ntype FeedbackThreadProps = {\n feedbackData?: ListFeedbackResponse | null;\n isLoadingFeedbackData?: boolean;\n onPageChange?: (page: number) => void;\n /** Rejecting (or throwing) keeps the draft in the composer so it can be retried. */\n onSubmit: (text: string) => void | Promise<unknown>;\n isSubmitting?: boolean;\n /** When provided, records with a feedbackId get a delete action. */\n onDelete?: (feedbackId: string) => void | Promise<unknown>;\n isDeleting?: boolean;\n /**\n * Comment layout variant. Defaults to `thread` (avatar gutter + content column);\n * `embed` renders a compact card suitable for inline use.\n */\n variant?: CommentVariant;\n /** When provided, unreviewed rows get a \"Mark reviewed\" action. */\n onMarkReviewed?: (feedbackId: string) => void;\n /** feedbackId whose review-status update is in flight (disables its action). */\n pendingFeedbackId?: string;\n};\n\n// The server defaults `reviewStatus` to `needs-review`, so a missing value means the same.\nfunction FeedbackReviewStatusBadge({ status }: { status: FeedbackItem['reviewStatus'] }) {\n const resolved = status === 'reviewed' ? 'reviewed' : 'needs-review';\n return (\n <ReviewStatusBadge data-slot=\"feedback-review-status\" status={resolved}>\n {resolved === 'reviewed' ? 'Reviewed' : 'Needs review'}\n </ReviewStatusBadge>\n );\n}\n\nfunction formatBody(fb: FeedbackItem): string {\n const text = fb.comment || (typeof fb.value === 'string' ? fb.value : '');\n if (text) return text;\n if (fb.feedbackType === 'thumbs') return fb.value === 1 ? '\\u{1F44D}' : '\\u{1F44E}';\n return String(fb.value ?? '');\n}\n\ntype FeedbackItemsProps = Pick<FeedbackThreadProps, 'onMarkReviewed' | 'pendingFeedbackId'> & {\n variant: CommentVariant;\n items: FeedbackItem[];\n onRequestDelete?: (feedbackId: string) => void;\n isDeleting: boolean;\n};\n\nfunction FeedbackItems({\n variant,\n items,\n onRequestDelete,\n isDeleting,\n onMarkReviewed,\n pendingFeedbackId,\n}: FeedbackItemsProps) {\n const rows = items.map((fb, index) => {\n const ts = new Date(fb.timestamp);\n const author = feedbackAuthorLabel(fb);\n const avatar = author ? <Avatar name={author} src={fb.author?.avatarUrl} size=\"sm\" /> : null;\n const name = author && <CommentItemAuthor>{author}</CommentItemAuthor>;\n const timestamp = (\n <CommentItemTimestamp dateTime={ts.toISOString()}>{formatDate(ts, 'date-time')}</CommentItemTimestamp>\n );\n const feedbackId = fb.feedbackId;\n const status = <FeedbackReviewStatusBadge status={fb.reviewStatus} />;\n const canMarkReviewed = Boolean(onMarkReviewed && feedbackId && fb.reviewStatus !== 'reviewed');\n const canDelete = Boolean(onRequestDelete && feedbackId);\n const actions = feedbackId && (canMarkReviewed || canDelete) && (\n <CommentItemActions>\n <DropdownMenu>\n <DropdownMenu.Trigger\n render={\n <Button size=\"icon-sm\" variant=\"ghost\" aria-label=\"Feedback actions\">\n <EllipsisIcon />\n </Button>\n }\n />\n <DropdownMenu.Content align=\"end\">\n {canMarkReviewed && (\n <DropdownMenu.Item\n disabled={pendingFeedbackId === feedbackId}\n onSelect={() => onMarkReviewed?.(feedbackId)}\n >\n <Icon size=\"xs\">\n <ClipboardCheck />\n </Icon>\n Mark reviewed\n </DropdownMenu.Item>\n )}\n {canDelete && (\n <DropdownMenu.Item disabled={isDeleting} onSelect={() => onRequestDelete?.(feedbackId)}>\n <Icon size=\"xs\">\n <Trash2 />\n </Icon>\n Delete feedback\n </DropdownMenu.Item>\n )}\n </DropdownMenu.Content>\n </DropdownMenu>\n </CommentItemActions>\n );\n const body = <CommentItemBody>{formatBody(fb)}</CommentItemBody>;\n const key = feedbackId ?? `${fb.traceId}-${index}`;\n\n // The thread variant lays the row out as avatar gutter + content column.\n // Without an author there is nothing to align under, so skip the gutter entirely.\n if (variant === 'thread') {\n return (\n <CommentItem key={key}>\n {avatar && <CommentItemAvatar>{avatar}</CommentItemAvatar>}\n <CommentItemContent>\n <CommentItemHeader>\n {name}\n {timestamp}\n {status}\n {actions}\n </CommentItemHeader>\n {body}\n </CommentItemContent>\n </CommentItem>\n );\n }\n\n // Stacked variants have no gutter, so the avatar sits inline in the header.\n return (\n <CommentItem key={key}>\n <CommentItemHeader>\n {avatar}\n {name}\n {timestamp}\n {status}\n {actions}\n </CommentItemHeader>\n {body}\n </CommentItem>\n );\n });\n\n // Thread rows are stream entries rendered as `div`s, not list items.\n return variant === 'thread' ? <>{rows}</> : <CommentList>{rows}</CommentList>;\n}\n\n/**\n * Feedback rendered as a comment thread: a composer above, existing records below.\n * Pagination, submission, deletion, and review status are driven by the caller.\n */\nexport function FeedbackThread({\n feedbackData,\n isLoadingFeedbackData,\n onPageChange,\n onSubmit,\n isSubmitting = false,\n onDelete,\n isDeleting = false,\n variant = 'thread',\n onMarkReviewed,\n pendingFeedbackId,\n}: FeedbackThreadProps) {\n const [text, setText] = useState('');\n const [feedbackIdToDelete, setFeedbackIdToDelete] = useState<string>();\n const sendBlocked = text.trim().length === 0 || isSubmitting;\n\n const feedbackItems = feedbackData?.feedback ?? [];\n const currentPage = feedbackData?.pagination?.page ?? 0;\n const hasMore = feedbackData?.pagination?.hasMore ?? false;\n\n const handleDeleteConfirm = async () => {\n if (!feedbackIdToDelete || !onDelete) return;\n\n try {\n await onDelete(feedbackIdToDelete);\n setFeedbackIdToDelete(undefined);\n } catch {\n // Keep the confirmation open so the deletion can be retried.\n }\n };\n\n return (\n <Comment variant={variant} className=\"min-h-0 gap-3\">\n {/* Same size/variant as the timeline search field so switching tabs doesn't shift the layout. */}\n <form\n aria-label=\"Leave feedback\"\n className=\"flex w-full items-center gap-2\"\n onSubmit={async event => {\n event.preventDefault();\n if (sendBlocked) return;\n try {\n await onSubmit(text.trim());\n setText('');\n } catch {\n // Keep the draft so the comment isn't lost; the caller surfaces the failure.\n }\n }}\n >\n <InputGroup size=\"sm\">\n <InputGroupInput\n aria-label=\"Leave feedback\"\n placeholder=\"Leave feedback...\"\n value={text}\n onChange={event => setText(event.target.value)}\n />\n <InputGroupAddon align=\"inline-end\">\n <InputGroupButton type=\"submit\" aria-label=\"Send feedback\" disabled={sendBlocked}>\n <ArrowUp />\n </InputGroupButton>\n </InputGroupAddon>\n </InputGroup>\n </form>\n\n <div className=\"min-h-0 overflow-y-auto\">\n {isLoadingFeedbackData ? (\n <Txt variant=\"body\" tone=\"muted\">\n Loading feedback...\n </Txt>\n ) : feedbackItems.length === 0 ? (\n <Txt variant=\"body\" tone=\"muted\" className=\"text-center\">\n No feedback yet\n </Txt>\n ) : (\n <FeedbackItems\n variant={variant}\n items={feedbackItems}\n onRequestDelete={onDelete ? setFeedbackIdToDelete : undefined}\n isDeleting={isDeleting}\n onMarkReviewed={onMarkReviewed}\n pendingFeedbackId={pendingFeedbackId}\n />\n )}\n </div>\n\n {(hasMore || currentPage > 0) && (\n <div className=\"flex items-center gap-2\">\n <Button\n icon={<ChevronLeft />}\n size=\"sm\"\n variant=\"ghost\"\n disabled={currentPage === 0}\n onClick={() => onPageChange?.(currentPage - 1)}\n >\n Previous\n </Button>\n <Button\n icon={<ChevronRight />}\n size=\"sm\"\n variant=\"ghost\"\n disabled={!hasMore}\n onClick={() => onPageChange?.(currentPage + 1)}\n >\n Next\n </Button>\n </div>\n )}\n\n <AlertDialog\n open={feedbackIdToDelete !== undefined}\n onOpenChange={open => {\n if (!open && !isDeleting) setFeedbackIdToDelete(undefined);\n }}\n >\n <AlertDialog.Content>\n <AlertDialog.Header>\n <AlertDialog.Title>Delete feedback?</AlertDialog.Title>\n <AlertDialog.Description>\n This permanently deletes this feedback comment. This action cannot be undone.\n </AlertDialog.Description>\n </AlertDialog.Header>\n <AlertDialog.Footer>\n <AlertDialog.Cancel disabled={isDeleting}>Cancel</AlertDialog.Cancel>\n <Button icon={<Trash2 />} variant=\"primary\" disabled={isDeleting} onClick={handleDeleteConfirm}>\n {isDeleting ? 'Deleting…' : 'Delete'}\n </Button>\n </AlertDialog.Footer>\n </AlertDialog.Content>\n </AlertDialog>\n </Comment>\n );\n}\n"],"names":["jsx","ReviewStatusBadge","feedbackAuthorLabel","Avatar","CommentItemAuthor","CommentItemTimestamp","formatDate","CommentItemActions","DropdownMenu","Button","EllipsisIcon","jsxs","Icon","ClipboardCheck","Trash2","CommentItemBody","CommentItem","CommentItemAvatar","CommentItemContent","CommentItemHeader","Fragment","CommentList","useState","Comment","InputGroup","InputGroupInput","InputGroupAddon","InputGroupButton","ArrowUp","Txt","ChevronLeft","ChevronRight","AlertDialog"],"mappings":"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"}
@@ -3,12 +3,12 @@ import { ArrowUp, ChevronLeft, ChevronRight, Trash2, EllipsisIcon, ClipboardChec
3
3
  import { useState } from 'react';
4
4
  import { ReviewStatusBadge } from '../../review/components/review-status-badge.es.js';
5
5
  import { feedbackAuthorLabel } from '../utils/feedback-author.es.js';
6
- import { A as AlertDialog } from '../../../alert-dialog-B7JTnkF4.js';
7
- import { A as Avatar } from '../../../Avatar-98bsFrSV.js';
8
- import { B as Button } from '../../../Button-EGoajBQY.js';
6
+ import { A as AlertDialog } from '../../../alert-dialog-B13NSeKN.js';
7
+ import { A as Avatar } from '../../../Avatar-BjaG9NU_.js';
8
+ import { B as Button } from '../../../Button-D8a5EWJ5.js';
9
9
  import { C as Comment, a as CommentItemTimestamp, b as CommentItemActions, c as CommentItemBody, d as CommentItem, e as CommentItemAvatar, f as CommentItemContent, g as CommentItemHeader, h as CommentList, i as CommentItemAuthor } from '../../../comment-S12P_YcT.js';
10
10
  import { D as DropdownMenu } from '../../../dropdown-menu-CQ_48tVI.js';
11
- import { I as InputGroup, c as InputGroupInput, a as InputGroupAddon, b as InputGroupButton } from '../../../input-group-CiBbTaPP.js';
11
+ import { I as InputGroup, c as InputGroupInput, a as InputGroupAddon, b as InputGroupButton } from '../../../input-group-BAg6iSIe.js';
12
12
  import { T as Txt } from '../../../Txt-BtIGLRk1.js';
13
13
  import { Icon } from '../../../icons/Icon.es.js';
14
14
  import { formatDate } from '../../../utils/date-format.es.js';
@@ -1 +1 @@
1
- {"version":3,"file":"feedback-thread.es.js","sources":["../../../../src/domains/traces/components/feedback-thread.tsx"],"sourcesContent":["import type { FeedbackItem, ListFeedbackResponse } from '@mastra/client-js';\nimport { ArrowUp, Trash2, ChevronRight, ChevronLeft, ClipboardCheck, EllipsisIcon } from 'lucide-react';\nimport { useState } from 'react';\nimport { ReviewStatusBadge } from '@/domains/review/components/review-status-badge';\nimport { feedbackAuthorLabel } from '@/domains/traces/utils/feedback-author';\nimport { AlertDialog } from '@/ds/components/AlertDialog';\nimport { Avatar } from '@/ds/components/Avatar';\nimport { Button } from '@/ds/components/Button';\nimport {\n Comment,\n type CommentVariant,\n CommentItem,\n CommentItemActions,\n CommentItemAuthor,\n CommentItemAvatar,\n CommentItemBody,\n CommentItemContent,\n CommentItemHeader,\n CommentItemTimestamp,\n CommentList,\n} from '@/ds/components/Comment';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu';\nimport { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput } from '@/ds/components/InputGroup';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { formatDate } from '@/utils/date-format';\n\ntype FeedbackThreadProps = {\n feedbackData?: ListFeedbackResponse | null;\n isLoadingFeedbackData?: boolean;\n onPageChange?: (page: number) => void;\n /** Rejecting (or throwing) keeps the draft in the composer so it can be retried. */\n onSubmit: (text: string) => void | Promise<unknown>;\n isSubmitting?: boolean;\n /** When provided, records with a feedbackId get a delete action. */\n onDelete?: (feedbackId: string) => void | Promise<unknown>;\n isDeleting?: boolean;\n /**\n * Comment layout variant. Defaults to `thread` (avatar gutter + content column);\n * `embed` renders a compact card suitable for inline use.\n */\n variant?: CommentVariant;\n /** When provided, unreviewed rows get a \"Mark reviewed\" action. */\n onMarkReviewed?: (feedbackId: string) => void;\n /** feedbackId whose review-status update is in flight (disables its action). */\n pendingFeedbackId?: string;\n};\n\n// The server defaults `reviewStatus` to `needs-review`, so a missing value means the same.\nfunction FeedbackReviewStatusBadge({ status }: { status: FeedbackItem['reviewStatus'] }) {\n const resolved = status === 'reviewed' ? 'reviewed' : 'needs-review';\n return (\n <ReviewStatusBadge data-slot=\"feedback-review-status\" status={resolved}>\n {resolved === 'reviewed' ? 'Reviewed' : 'Needs review'}\n </ReviewStatusBadge>\n );\n}\n\nfunction formatBody(fb: FeedbackItem): string {\n const text = fb.comment || (typeof fb.value === 'string' ? fb.value : '');\n if (text) return text;\n if (fb.feedbackType === 'thumbs') return fb.value === 1 ? '\\u{1F44D}' : '\\u{1F44E}';\n return String(fb.value ?? '');\n}\n\ntype FeedbackItemsProps = Pick<FeedbackThreadProps, 'onMarkReviewed' | 'pendingFeedbackId'> & {\n variant: CommentVariant;\n items: FeedbackItem[];\n onRequestDelete?: (feedbackId: string) => void;\n isDeleting: boolean;\n};\n\nfunction FeedbackItems({\n variant,\n items,\n onRequestDelete,\n isDeleting,\n onMarkReviewed,\n pendingFeedbackId,\n}: FeedbackItemsProps) {\n const rows = items.map((fb, index) => {\n const ts = new Date(fb.timestamp);\n const author = feedbackAuthorLabel(fb);\n const avatar = author ? <Avatar name={author} src={fb.author?.avatarUrl} size=\"sm\" /> : null;\n const name = author && <CommentItemAuthor>{author}</CommentItemAuthor>;\n const timestamp = (\n <CommentItemTimestamp dateTime={ts.toISOString()}>{formatDate(ts, 'date-time')}</CommentItemTimestamp>\n );\n const feedbackId = fb.feedbackId;\n const status = <FeedbackReviewStatusBadge status={fb.reviewStatus} />;\n const canMarkReviewed = Boolean(onMarkReviewed && feedbackId && fb.reviewStatus !== 'reviewed');\n const canDelete = Boolean(onRequestDelete && feedbackId);\n const actions = feedbackId && (canMarkReviewed || canDelete) && (\n <CommentItemActions>\n <DropdownMenu>\n <DropdownMenu.Trigger\n render={\n <Button size=\"icon-sm\" variant=\"ghost\" aria-label=\"Feedback actions\">\n <EllipsisIcon />\n </Button>\n }\n />\n <DropdownMenu.Content align=\"end\">\n {canMarkReviewed && (\n <DropdownMenu.Item\n disabled={pendingFeedbackId === feedbackId}\n onSelect={() => onMarkReviewed?.(feedbackId)}\n >\n <Icon size=\"xs\">\n <ClipboardCheck />\n </Icon>\n Mark reviewed\n </DropdownMenu.Item>\n )}\n {canDelete && (\n <DropdownMenu.Item disabled={isDeleting} onSelect={() => onRequestDelete?.(feedbackId)}>\n <Icon size=\"xs\">\n <Trash2 />\n </Icon>\n Delete feedback\n </DropdownMenu.Item>\n )}\n </DropdownMenu.Content>\n </DropdownMenu>\n </CommentItemActions>\n );\n const body = <CommentItemBody>{formatBody(fb)}</CommentItemBody>;\n const key = feedbackId ?? `${fb.traceId}-${index}`;\n\n // The thread variant lays the row out as avatar gutter + content column.\n // Without an author there is nothing to align under, so skip the gutter entirely.\n if (variant === 'thread') {\n return (\n <CommentItem key={key}>\n {avatar && <CommentItemAvatar>{avatar}</CommentItemAvatar>}\n <CommentItemContent>\n <CommentItemHeader>\n {name}\n {timestamp}\n {status}\n {actions}\n </CommentItemHeader>\n {body}\n </CommentItemContent>\n </CommentItem>\n );\n }\n\n // Stacked variants have no gutter, so the avatar sits inline in the header.\n return (\n <CommentItem key={key}>\n <CommentItemHeader>\n {avatar}\n {name}\n {timestamp}\n {status}\n {actions}\n </CommentItemHeader>\n {body}\n </CommentItem>\n );\n });\n\n // Thread rows are stream entries rendered as `div`s, not list items.\n return variant === 'thread' ? <>{rows}</> : <CommentList>{rows}</CommentList>;\n}\n\n/**\n * Feedback rendered as a comment thread: a composer above, existing records below.\n * Pagination, submission, deletion, and review status are driven by the caller.\n */\nexport function FeedbackThread({\n feedbackData,\n isLoadingFeedbackData,\n onPageChange,\n onSubmit,\n isSubmitting = false,\n onDelete,\n isDeleting = false,\n variant = 'thread',\n onMarkReviewed,\n pendingFeedbackId,\n}: FeedbackThreadProps) {\n const [text, setText] = useState('');\n const [feedbackIdToDelete, setFeedbackIdToDelete] = useState<string>();\n const sendBlocked = text.trim().length === 0 || isSubmitting;\n\n const feedbackItems = feedbackData?.feedback ?? [];\n const currentPage = feedbackData?.pagination?.page ?? 0;\n const hasMore = feedbackData?.pagination?.hasMore ?? false;\n\n const handleDeleteConfirm = async () => {\n if (!feedbackIdToDelete || !onDelete) return;\n\n try {\n await onDelete(feedbackIdToDelete);\n setFeedbackIdToDelete(undefined);\n } catch {\n // Keep the confirmation open so the deletion can be retried.\n }\n };\n\n return (\n <Comment variant={variant} className=\"min-h-0 gap-3\">\n {/* Same size/variant as the timeline search field so switching tabs doesn't shift the layout. */}\n <form\n aria-label=\"Leave feedback\"\n className=\"flex w-full items-center gap-2\"\n onSubmit={async event => {\n event.preventDefault();\n if (sendBlocked) return;\n try {\n await onSubmit(text.trim());\n setText('');\n } catch {\n // Keep the draft so the comment isn't lost; the caller surfaces the failure.\n }\n }}\n >\n <InputGroup size=\"sm\">\n <InputGroupInput\n aria-label=\"Leave feedback\"\n placeholder=\"Leave feedback...\"\n value={text}\n onChange={event => setText(event.target.value)}\n />\n <InputGroupAddon align=\"inline-end\">\n <InputGroupButton type=\"submit\" aria-label=\"Send feedback\" disabled={sendBlocked}>\n <ArrowUp />\n </InputGroupButton>\n </InputGroupAddon>\n </InputGroup>\n </form>\n\n <div className=\"min-h-0 overflow-y-auto\">\n {isLoadingFeedbackData ? (\n <Txt variant=\"body\" tone=\"muted\">\n Loading feedback...\n </Txt>\n ) : feedbackItems.length === 0 ? (\n <Txt variant=\"body\" tone=\"muted\" className=\"text-center\">\n No feedback yet\n </Txt>\n ) : (\n <FeedbackItems\n variant={variant}\n items={feedbackItems}\n onRequestDelete={onDelete ? setFeedbackIdToDelete : undefined}\n isDeleting={isDeleting}\n onMarkReviewed={onMarkReviewed}\n pendingFeedbackId={pendingFeedbackId}\n />\n )}\n </div>\n\n {(hasMore || currentPage > 0) && (\n <div className=\"flex items-center gap-2\">\n <Button\n icon={<ChevronLeft />}\n size=\"sm\"\n variant=\"ghost\"\n disabled={currentPage === 0}\n onClick={() => onPageChange?.(currentPage - 1)}\n >\n Previous\n </Button>\n <Button\n icon={<ChevronRight />}\n size=\"sm\"\n variant=\"ghost\"\n disabled={!hasMore}\n onClick={() => onPageChange?.(currentPage + 1)}\n >\n Next\n </Button>\n </div>\n )}\n\n <AlertDialog\n open={feedbackIdToDelete !== undefined}\n onOpenChange={open => {\n if (!open && !isDeleting) setFeedbackIdToDelete(undefined);\n }}\n >\n <AlertDialog.Content>\n <AlertDialog.Header>\n <AlertDialog.Title>Delete feedback?</AlertDialog.Title>\n <AlertDialog.Description>\n This permanently deletes this feedback comment. This action cannot be undone.\n </AlertDialog.Description>\n </AlertDialog.Header>\n <AlertDialog.Footer>\n <AlertDialog.Cancel disabled={isDeleting}>Cancel</AlertDialog.Cancel>\n <Button icon={<Trash2 />} variant=\"primary\" disabled={isDeleting} onClick={handleDeleteConfirm}>\n {isDeleting ? 'Deleting…' : 'Delete'}\n </Button>\n </AlertDialog.Footer>\n </AlertDialog.Content>\n </AlertDialog>\n </Comment>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feedback-thread.es.js","sources":["../../../../src/domains/traces/components/feedback-thread.tsx"],"sourcesContent":["import type { FeedbackItem, ListFeedbackResponse } from '@mastra/client-js';\nimport { ArrowUp, Trash2, ChevronRight, ChevronLeft, ClipboardCheck, EllipsisIcon } from 'lucide-react';\nimport { useState } from 'react';\nimport { ReviewStatusBadge } from '@/domains/review/components/review-status-badge';\nimport { feedbackAuthorLabel } from '@/domains/traces/utils/feedback-author';\nimport { AlertDialog } from '@/ds/components/AlertDialog';\nimport { Avatar } from '@/ds/components/Avatar';\nimport { Button } from '@/ds/components/Button';\nimport {\n Comment,\n CommentItem,\n CommentItemActions,\n CommentItemAuthor,\n CommentItemAvatar,\n CommentItemBody,\n CommentItemContent,\n CommentItemHeader,\n CommentItemTimestamp,\n CommentList,\n} from '@/ds/components/Comment';\nimport type { CommentVariant } from '@/ds/components/Comment';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu';\nimport { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput } from '@/ds/components/InputGroup';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { formatDate } from '@/utils/date-format';\n\ntype FeedbackThreadProps = {\n feedbackData?: ListFeedbackResponse | null;\n isLoadingFeedbackData?: boolean;\n onPageChange?: (page: number) => void;\n /** Rejecting (or throwing) keeps the draft in the composer so it can be retried. */\n onSubmit: (text: string) => void | Promise<unknown>;\n isSubmitting?: boolean;\n /** When provided, records with a feedbackId get a delete action. */\n onDelete?: (feedbackId: string) => void | Promise<unknown>;\n isDeleting?: boolean;\n /**\n * Comment layout variant. Defaults to `thread` (avatar gutter + content column);\n * `embed` renders a compact card suitable for inline use.\n */\n variant?: CommentVariant;\n /** When provided, unreviewed rows get a \"Mark reviewed\" action. */\n onMarkReviewed?: (feedbackId: string) => void;\n /** feedbackId whose review-status update is in flight (disables its action). */\n pendingFeedbackId?: string;\n};\n\n// The server defaults `reviewStatus` to `needs-review`, so a missing value means the same.\nfunction FeedbackReviewStatusBadge({ status }: { status: FeedbackItem['reviewStatus'] }) {\n const resolved = status === 'reviewed' ? 'reviewed' : 'needs-review';\n return (\n <ReviewStatusBadge data-slot=\"feedback-review-status\" status={resolved}>\n {resolved === 'reviewed' ? 'Reviewed' : 'Needs review'}\n </ReviewStatusBadge>\n );\n}\n\nfunction formatBody(fb: FeedbackItem): string {\n const text = fb.comment || (typeof fb.value === 'string' ? fb.value : '');\n if (text) return text;\n if (fb.feedbackType === 'thumbs') return fb.value === 1 ? '\\u{1F44D}' : '\\u{1F44E}';\n return String(fb.value ?? '');\n}\n\ntype FeedbackItemsProps = Pick<FeedbackThreadProps, 'onMarkReviewed' | 'pendingFeedbackId'> & {\n variant: CommentVariant;\n items: FeedbackItem[];\n onRequestDelete?: (feedbackId: string) => void;\n isDeleting: boolean;\n};\n\nfunction FeedbackItems({\n variant,\n items,\n onRequestDelete,\n isDeleting,\n onMarkReviewed,\n pendingFeedbackId,\n}: FeedbackItemsProps) {\n const rows = items.map((fb, index) => {\n const ts = new Date(fb.timestamp);\n const author = feedbackAuthorLabel(fb);\n const avatar = author ? <Avatar name={author} src={fb.author?.avatarUrl} size=\"sm\" /> : null;\n const name = author && <CommentItemAuthor>{author}</CommentItemAuthor>;\n const timestamp = (\n <CommentItemTimestamp dateTime={ts.toISOString()}>{formatDate(ts, 'date-time')}</CommentItemTimestamp>\n );\n const feedbackId = fb.feedbackId;\n const status = <FeedbackReviewStatusBadge status={fb.reviewStatus} />;\n const canMarkReviewed = Boolean(onMarkReviewed && feedbackId && fb.reviewStatus !== 'reviewed');\n const canDelete = Boolean(onRequestDelete && feedbackId);\n const actions = feedbackId && (canMarkReviewed || canDelete) && (\n <CommentItemActions>\n <DropdownMenu>\n <DropdownMenu.Trigger\n render={\n <Button size=\"icon-sm\" variant=\"ghost\" aria-label=\"Feedback actions\">\n <EllipsisIcon />\n </Button>\n }\n />\n <DropdownMenu.Content align=\"end\">\n {canMarkReviewed && (\n <DropdownMenu.Item\n disabled={pendingFeedbackId === feedbackId}\n onSelect={() => onMarkReviewed?.(feedbackId)}\n >\n <Icon size=\"xs\">\n <ClipboardCheck />\n </Icon>\n Mark reviewed\n </DropdownMenu.Item>\n )}\n {canDelete && (\n <DropdownMenu.Item disabled={isDeleting} onSelect={() => onRequestDelete?.(feedbackId)}>\n <Icon size=\"xs\">\n <Trash2 />\n </Icon>\n Delete feedback\n </DropdownMenu.Item>\n )}\n </DropdownMenu.Content>\n </DropdownMenu>\n </CommentItemActions>\n );\n const body = <CommentItemBody>{formatBody(fb)}</CommentItemBody>;\n const key = feedbackId ?? `${fb.traceId}-${index}`;\n\n // The thread variant lays the row out as avatar gutter + content column.\n // Without an author there is nothing to align under, so skip the gutter entirely.\n if (variant === 'thread') {\n return (\n <CommentItem key={key}>\n {avatar && <CommentItemAvatar>{avatar}</CommentItemAvatar>}\n <CommentItemContent>\n <CommentItemHeader>\n {name}\n {timestamp}\n {status}\n {actions}\n </CommentItemHeader>\n {body}\n </CommentItemContent>\n </CommentItem>\n );\n }\n\n // Stacked variants have no gutter, so the avatar sits inline in the header.\n return (\n <CommentItem key={key}>\n <CommentItemHeader>\n {avatar}\n {name}\n {timestamp}\n {status}\n {actions}\n </CommentItemHeader>\n {body}\n </CommentItem>\n );\n });\n\n // Thread rows are stream entries rendered as `div`s, not list items.\n return variant === 'thread' ? <>{rows}</> : <CommentList>{rows}</CommentList>;\n}\n\n/**\n * Feedback rendered as a comment thread: a composer above, existing records below.\n * Pagination, submission, deletion, and review status are driven by the caller.\n */\nexport function FeedbackThread({\n feedbackData,\n isLoadingFeedbackData,\n onPageChange,\n onSubmit,\n isSubmitting = false,\n onDelete,\n isDeleting = false,\n variant = 'thread',\n onMarkReviewed,\n pendingFeedbackId,\n}: FeedbackThreadProps) {\n const [text, setText] = useState('');\n const [feedbackIdToDelete, setFeedbackIdToDelete] = useState<string>();\n const sendBlocked = text.trim().length === 0 || isSubmitting;\n\n const feedbackItems = feedbackData?.feedback ?? [];\n const currentPage = feedbackData?.pagination?.page ?? 0;\n const hasMore = feedbackData?.pagination?.hasMore ?? false;\n\n const handleDeleteConfirm = async () => {\n if (!feedbackIdToDelete || !onDelete) return;\n\n try {\n await onDelete(feedbackIdToDelete);\n setFeedbackIdToDelete(undefined);\n } catch {\n // Keep the confirmation open so the deletion can be retried.\n }\n };\n\n return (\n <Comment variant={variant} className=\"min-h-0 gap-3\">\n {/* Same size/variant as the timeline search field so switching tabs doesn't shift the layout. */}\n <form\n aria-label=\"Leave feedback\"\n className=\"flex w-full items-center gap-2\"\n onSubmit={async event => {\n event.preventDefault();\n if (sendBlocked) return;\n try {\n await onSubmit(text.trim());\n setText('');\n } catch {\n // Keep the draft so the comment isn't lost; the caller surfaces the failure.\n }\n }}\n >\n <InputGroup size=\"sm\">\n <InputGroupInput\n aria-label=\"Leave feedback\"\n placeholder=\"Leave feedback...\"\n value={text}\n onChange={event => setText(event.target.value)}\n />\n <InputGroupAddon align=\"inline-end\">\n <InputGroupButton type=\"submit\" aria-label=\"Send feedback\" disabled={sendBlocked}>\n <ArrowUp />\n </InputGroupButton>\n </InputGroupAddon>\n </InputGroup>\n </form>\n\n <div className=\"min-h-0 overflow-y-auto\">\n {isLoadingFeedbackData ? (\n <Txt variant=\"body\" tone=\"muted\">\n Loading feedback...\n </Txt>\n ) : feedbackItems.length === 0 ? (\n <Txt variant=\"body\" tone=\"muted\" className=\"text-center\">\n No feedback yet\n </Txt>\n ) : (\n <FeedbackItems\n variant={variant}\n items={feedbackItems}\n onRequestDelete={onDelete ? setFeedbackIdToDelete : undefined}\n isDeleting={isDeleting}\n onMarkReviewed={onMarkReviewed}\n pendingFeedbackId={pendingFeedbackId}\n />\n )}\n </div>\n\n {(hasMore || currentPage > 0) && (\n <div className=\"flex items-center gap-2\">\n <Button\n icon={<ChevronLeft />}\n size=\"sm\"\n variant=\"ghost\"\n disabled={currentPage === 0}\n onClick={() => onPageChange?.(currentPage - 1)}\n >\n Previous\n </Button>\n <Button\n icon={<ChevronRight />}\n size=\"sm\"\n variant=\"ghost\"\n disabled={!hasMore}\n onClick={() => onPageChange?.(currentPage + 1)}\n >\n Next\n </Button>\n </div>\n )}\n\n <AlertDialog\n open={feedbackIdToDelete !== undefined}\n onOpenChange={open => {\n if (!open && !isDeleting) setFeedbackIdToDelete(undefined);\n }}\n >\n <AlertDialog.Content>\n <AlertDialog.Header>\n <AlertDialog.Title>Delete feedback?</AlertDialog.Title>\n <AlertDialog.Description>\n This permanently deletes this feedback comment. This action cannot be undone.\n </AlertDialog.Description>\n </AlertDialog.Header>\n <AlertDialog.Footer>\n <AlertDialog.Cancel disabled={isDeleting}>Cancel</AlertDialog.Cancel>\n <Button icon={<Trash2 />} variant=\"primary\" disabled={isDeleting} onClick={handleDeleteConfirm}>\n {isDeleting ? 'Deleting…' : 'Delete'}\n </Button>\n </AlertDialog.Footer>\n </AlertDialog.Content>\n </AlertDialog>\n </Comment>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -5,12 +5,13 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5
5
  const jsxRuntime = require('react/jsx-runtime');
6
6
  const lucideReact = require('lucide-react');
7
7
  const icons_AgentIcon = require('../../../icons/AgentIcon.cjs.js');
8
- const icons_FolderIcon = require('../../../icons/FolderIcon.cjs.js');
9
8
  const icons_McpServerIcon = require('../../../icons/McpServerIcon.cjs.js');
10
9
  const icons_MemoryIcon = require('../../../icons/MemoryIcon.cjs.js');
10
+ const icons_ScorersIcon = require('../../../icons/ScorersIcon.cjs.js');
11
11
  const icons_SkillIcon = require('../../../icons/SkillIcon.cjs.js');
12
12
  const icons_ToolsIcon = require('../../../icons/ToolsIcon.cjs.js');
13
13
  const icons_WorkflowIcon = require('../../../icons/WorkflowIcon.cjs.js');
14
+ const icons_WorkspacesIcon = require('../../../icons/WorkspacesIcon.cjs.js');
14
15
 
15
16
  const spanTypePrefixes = [
16
17
  "agent",
@@ -69,7 +70,7 @@ const spanTypeToUiElements = {
69
70
  typePrefix: "memory"
70
71
  },
71
72
  workspace: {
72
- icon: /* @__PURE__ */ jsxRuntime.jsx(icons_FolderIcon.FolderIcon, {}),
73
+ icon: /* @__PURE__ */ jsxRuntime.jsx(icons_WorkspacesIcon.WorkspacesIcon, {}),
73
74
  color: "var(--span-workspace)",
74
75
  label: "Workspace",
75
76
  typePrefix: "workspace"
@@ -81,7 +82,7 @@ const spanTypeToUiElements = {
81
82
  typePrefix: "skill"
82
83
  },
83
84
  scorer: {
84
- icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.GaugeIcon, {}),
85
+ icon: /* @__PURE__ */ jsxRuntime.jsx(icons_ScorersIcon.ScorersIcon, {}),
85
86
  color: "var(--span-scorer)",
86
87
  label: "Scorer",
87
88
  typePrefix: "scorer"
@@ -1 +1 @@
1
- {"version":3,"file":"shared.cjs.js","sources":["../../../../src/domains/traces/components/shared.tsx"],"sourcesContent":["import { BrainIcon, GaugeIcon } from 'lucide-react';\nimport type { UISpanStyle } from '../types';\nimport { AgentIcon } from '@/ds/icons/AgentIcon';\nimport { FolderIcon } from '@/ds/icons/FolderIcon';\nimport { McpServerIcon } from '@/ds/icons/McpServerIcon';\nimport { MemoryIcon } from '@/ds/icons/MemoryIcon';\nimport { SkillIcon } from '@/ds/icons/SkillIcon';\nimport { ToolsIcon } from '@/ds/icons/ToolsIcon';\nimport { WorkflowIcon } from '@/ds/icons/WorkflowIcon';\n\nexport const spanTypePrefixes = [\n 'agent',\n 'workflow',\n 'model',\n 'mcp',\n 'tool',\n 'provider',\n 'memory',\n 'workspace',\n 'skill',\n 'scorer',\n 'other',\n];\n\nconst spanTypeToUiElements: Record<string, UISpanStyle> = {\n agent: {\n icon: <AgentIcon />,\n color: 'var(--span-agent)',\n label: 'Agent',\n typePrefix: 'agent',\n },\n workflow: {\n icon: <WorkflowIcon />,\n color: 'var(--span-workflow)',\n label: 'Workflow',\n typePrefix: 'workflow',\n },\n model: {\n icon: <BrainIcon />,\n color: 'var(--span-model)',\n label: 'Model',\n typePrefix: 'model',\n },\n mcp: {\n icon: <McpServerIcon />,\n color: 'var(--span-mcp)',\n label: 'MCP',\n typePrefix: 'mcp',\n },\n tool: {\n icon: <ToolsIcon />,\n color: 'var(--span-tool)',\n label: 'Tool',\n typePrefix: 'tool',\n },\n provider: {\n icon: <ToolsIcon />,\n color: 'var(--span-provider)',\n label: 'Provider Tool',\n typePrefix: 'provider',\n },\n memory: {\n icon: <MemoryIcon />,\n color: 'var(--span-memory)',\n label: 'Memory',\n typePrefix: 'memory',\n },\n workspace: {\n icon: <FolderIcon />,\n color: 'var(--span-workspace)',\n label: 'Workspace',\n typePrefix: 'workspace',\n },\n skill: {\n icon: <SkillIcon />,\n color: 'var(--span-skill)',\n label: 'Skill',\n typePrefix: 'skill',\n },\n scorer: {\n icon: <GaugeIcon />,\n color: 'var(--span-scorer)',\n label: 'Scorer',\n typePrefix: 'scorer',\n },\n};\n\nconst otherSpanType: UISpanStyle = {\n color: 'var(--span-other)',\n label: 'Other',\n typePrefix: 'other',\n};\n\nexport function getSpanTypeUi(type: string) {\n const typePrefix = type?.toLowerCase().split('_')[0] ?? '';\n return spanTypeToUiElements[typePrefix] ?? otherSpanType;\n}\n"],"names":["AgentIcon","WorkflowIcon","BrainIcon","McpServerIcon","ToolsIcon","MemoryIcon","FolderIcon","SkillIcon","GaugeIcon"],"mappings":";;;;;;;;;;;;;;AAUO,MAAM,gBAAA,GAAmB;AAAA,EAC9B,OAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF;AAEA,MAAM,oBAAA,GAAoD;AAAA,EACxD,KAAA,EAAO;AAAA,IACL,IAAA,iCAAOA,yBAAA,EAAA,EAAU,CAAA;AAAA,IACjB,KAAA,EAAO,mBAAA;AAAA,IACP,KAAA,EAAO,OAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,iCAAOC,+BAAA,EAAA,EAAa,CAAA;AAAA,IACpB,KAAA,EAAO,sBAAA;AAAA,IACP,KAAA,EAAO,UAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,KAAA,EAAO;AAAA,IACL,IAAA,iCAAOC,qBAAA,EAAA,EAAU,CAAA;AAAA,IACjB,KAAA,EAAO,mBAAA;AAAA,IACP,KAAA,EAAO,OAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,GAAA,EAAK;AAAA,IACH,IAAA,iCAAOC,iCAAA,EAAA,EAAc,CAAA;AAAA,IACrB,KAAA,EAAO,iBAAA;AAAA,IACP,KAAA,EAAO,KAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,IAAA,iCAAOC,yBAAA,EAAA,EAAU,CAAA;AAAA,IACjB,KAAA,EAAO,kBAAA;AAAA,IACP,KAAA,EAAO,MAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,iCAAOA,yBAAA,EAAA,EAAU,CAAA;AAAA,IACjB,KAAA,EAAO,sBAAA;AAAA,IACP,KAAA,EAAO,eAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,iCAAOC,2BAAA,EAAA,EAAW,CAAA;AAAA,IAClB,KAAA,EAAO,oBAAA;AAAA,IACP,KAAA,EAAO,QAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,SAAA,EAAW;AAAA,IACT,IAAA,iCAAOC,2BAAA,EAAA,EAAW,CAAA;AAAA,IAClB,KAAA,EAAO,uBAAA;AAAA,IACP,KAAA,EAAO,WAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,KAAA,EAAO;AAAA,IACL,IAAA,iCAAOC,yBAAA,EAAA,EAAU,CAAA;AAAA,IACjB,KAAA,EAAO,mBAAA;AAAA,IACP,KAAA,EAAO,OAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,iCAAOC,qBAAA,EAAA,EAAU,CAAA;AAAA,IACjB,KAAA,EAAO,oBAAA;AAAA,IACP,KAAA,EAAO,QAAA;AAAA,IACP,UAAA,EAAY;AAAA;AAEhB,CAAA;AAEA,MAAM,aAAA,GAA6B;AAAA,EACjC,KAAA,EAAO,mBAAA;AAAA,EACP,KAAA,EAAO,OAAA;AAAA,EACP,UAAA,EAAY;AACd,CAAA;AAEO,SAAS,cAAc,IAAA,EAAc;AAC1C,EAAA,MAAM,UAAA,GAAa,MAAM,WAAA,EAAY,CAAE,MAAM,GAAG,CAAA,CAAE,CAAC,CAAA,IAAK,EAAA;AACxD,EAAA,OAAO,oBAAA,CAAqB,UAAU,CAAA,IAAK,aAAA;AAC7C;;;;;"}
1
+ {"version":3,"file":"shared.cjs.js","sources":["../../../../src/domains/traces/components/shared.tsx"],"sourcesContent":["import { BrainIcon } from 'lucide-react';\nimport type { UISpanStyle } from '../types';\nimport { AgentIcon } from '@/ds/icons/AgentIcon';\nimport { McpServerIcon } from '@/ds/icons/McpServerIcon';\nimport { MemoryIcon } from '@/ds/icons/MemoryIcon';\nimport { ScorersIcon } from '@/ds/icons/ScorersIcon';\nimport { SkillIcon } from '@/ds/icons/SkillIcon';\nimport { ToolsIcon } from '@/ds/icons/ToolsIcon';\nimport { WorkflowIcon } from '@/ds/icons/WorkflowIcon';\nimport { WorkspacesIcon } from '@/ds/icons/WorkspacesIcon';\n\nexport const spanTypePrefixes = [\n 'agent',\n 'workflow',\n 'model',\n 'mcp',\n 'tool',\n 'provider',\n 'memory',\n 'workspace',\n 'skill',\n 'scorer',\n 'other',\n];\n\nconst spanTypeToUiElements: Record<string, UISpanStyle> = {\n agent: {\n icon: <AgentIcon />,\n color: 'var(--span-agent)',\n label: 'Agent',\n typePrefix: 'agent',\n },\n workflow: {\n icon: <WorkflowIcon />,\n color: 'var(--span-workflow)',\n label: 'Workflow',\n typePrefix: 'workflow',\n },\n model: {\n icon: <BrainIcon />,\n color: 'var(--span-model)',\n label: 'Model',\n typePrefix: 'model',\n },\n mcp: {\n icon: <McpServerIcon />,\n color: 'var(--span-mcp)',\n label: 'MCP',\n typePrefix: 'mcp',\n },\n tool: {\n icon: <ToolsIcon />,\n color: 'var(--span-tool)',\n label: 'Tool',\n typePrefix: 'tool',\n },\n provider: {\n icon: <ToolsIcon />,\n color: 'var(--span-provider)',\n label: 'Provider Tool',\n typePrefix: 'provider',\n },\n memory: {\n icon: <MemoryIcon />,\n color: 'var(--span-memory)',\n label: 'Memory',\n typePrefix: 'memory',\n },\n workspace: {\n icon: <WorkspacesIcon />,\n color: 'var(--span-workspace)',\n label: 'Workspace',\n typePrefix: 'workspace',\n },\n skill: {\n icon: <SkillIcon />,\n color: 'var(--span-skill)',\n label: 'Skill',\n typePrefix: 'skill',\n },\n scorer: {\n icon: <ScorersIcon />,\n color: 'var(--span-scorer)',\n label: 'Scorer',\n typePrefix: 'scorer',\n },\n};\n\nconst otherSpanType: UISpanStyle = {\n color: 'var(--span-other)',\n label: 'Other',\n typePrefix: 'other',\n};\n\nexport function getSpanTypeUi(type: string) {\n const typePrefix = type?.toLowerCase().split('_')[0] ?? '';\n return spanTypeToUiElements[typePrefix] ?? otherSpanType;\n}\n"],"names":["AgentIcon","WorkflowIcon","BrainIcon","McpServerIcon","ToolsIcon","MemoryIcon","WorkspacesIcon","SkillIcon","ScorersIcon"],"mappings":";;;;;;;;;;;;;;;AAWO,MAAM,gBAAA,GAAmB;AAAA,EAC9B,OAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF;AAEA,MAAM,oBAAA,GAAoD;AAAA,EACxD,KAAA,EAAO;AAAA,IACL,IAAA,iCAAOA,yBAAA,EAAA,EAAU,CAAA;AAAA,IACjB,KAAA,EAAO,mBAAA;AAAA,IACP,KAAA,EAAO,OAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,iCAAOC,+BAAA,EAAA,EAAa,CAAA;AAAA,IACpB,KAAA,EAAO,sBAAA;AAAA,IACP,KAAA,EAAO,UAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,KAAA,EAAO;AAAA,IACL,IAAA,iCAAOC,qBAAA,EAAA,EAAU,CAAA;AAAA,IACjB,KAAA,EAAO,mBAAA;AAAA,IACP,KAAA,EAAO,OAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,GAAA,EAAK;AAAA,IACH,IAAA,iCAAOC,iCAAA,EAAA,EAAc,CAAA;AAAA,IACrB,KAAA,EAAO,iBAAA;AAAA,IACP,KAAA,EAAO,KAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,IAAA,iCAAOC,yBAAA,EAAA,EAAU,CAAA;AAAA,IACjB,KAAA,EAAO,kBAAA;AAAA,IACP,KAAA,EAAO,MAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,iCAAOA,yBAAA,EAAA,EAAU,CAAA;AAAA,IACjB,KAAA,EAAO,sBAAA;AAAA,IACP,KAAA,EAAO,eAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,iCAAOC,2BAAA,EAAA,EAAW,CAAA;AAAA,IAClB,KAAA,EAAO,oBAAA;AAAA,IACP,KAAA,EAAO,QAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,SAAA,EAAW;AAAA,IACT,IAAA,iCAAOC,mCAAA,EAAA,EAAe,CAAA;AAAA,IACtB,KAAA,EAAO,uBAAA;AAAA,IACP,KAAA,EAAO,WAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,KAAA,EAAO;AAAA,IACL,IAAA,iCAAOC,yBAAA,EAAA,EAAU,CAAA;AAAA,IACjB,KAAA,EAAO,mBAAA;AAAA,IACP,KAAA,EAAO,OAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,iCAAOC,6BAAA,EAAA,EAAY,CAAA;AAAA,IACnB,KAAA,EAAO,oBAAA;AAAA,IACP,KAAA,EAAO,QAAA;AAAA,IACP,UAAA,EAAY;AAAA;AAEhB,CAAA;AAEA,MAAM,aAAA,GAA6B;AAAA,EACjC,KAAA,EAAO,mBAAA;AAAA,EACP,KAAA,EAAO,OAAA;AAAA,EACP,UAAA,EAAY;AACd,CAAA;AAEO,SAAS,cAAc,IAAA,EAAc;AAC1C,EAAA,MAAM,UAAA,GAAa,MAAM,WAAA,EAAY,CAAE,MAAM,GAAG,CAAA,CAAE,CAAC,CAAA,IAAK,EAAA;AACxD,EAAA,OAAO,oBAAA,CAAqB,UAAU,CAAA,IAAK,aAAA;AAC7C;;;;;"}
@@ -1,12 +1,13 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import { GaugeIcon, BrainIcon } from 'lucide-react';
2
+ import { BrainIcon } from 'lucide-react';
3
3
  import { AgentIcon } from '../../../icons/AgentIcon.es.js';
4
- import { FolderIcon } from '../../../icons/FolderIcon.es.js';
5
4
  import { McpServerIcon } from '../../../icons/McpServerIcon.es.js';
6
5
  import { MemoryIcon } from '../../../icons/MemoryIcon.es.js';
6
+ import { ScorersIcon } from '../../../icons/ScorersIcon.es.js';
7
7
  import { SkillIcon } from '../../../icons/SkillIcon.es.js';
8
8
  import { ToolsIcon } from '../../../icons/ToolsIcon.es.js';
9
9
  import { WorkflowIcon } from '../../../icons/WorkflowIcon.es.js';
10
+ import { WorkspacesIcon } from '../../../icons/WorkspacesIcon.es.js';
10
11
 
11
12
  const spanTypePrefixes = [
12
13
  "agent",
@@ -65,7 +66,7 @@ const spanTypeToUiElements = {
65
66
  typePrefix: "memory"
66
67
  },
67
68
  workspace: {
68
- icon: /* @__PURE__ */ jsx(FolderIcon, {}),
69
+ icon: /* @__PURE__ */ jsx(WorkspacesIcon, {}),
69
70
  color: "var(--span-workspace)",
70
71
  label: "Workspace",
71
72
  typePrefix: "workspace"
@@ -77,7 +78,7 @@ const spanTypeToUiElements = {
77
78
  typePrefix: "skill"
78
79
  },
79
80
  scorer: {
80
- icon: /* @__PURE__ */ jsx(GaugeIcon, {}),
81
+ icon: /* @__PURE__ */ jsx(ScorersIcon, {}),
81
82
  color: "var(--span-scorer)",
82
83
  label: "Scorer",
83
84
  typePrefix: "scorer"
@@ -1 +1 @@
1
- {"version":3,"file":"shared.es.js","sources":["../../../../src/domains/traces/components/shared.tsx"],"sourcesContent":["import { BrainIcon, GaugeIcon } from 'lucide-react';\nimport type { UISpanStyle } from '../types';\nimport { AgentIcon } from '@/ds/icons/AgentIcon';\nimport { FolderIcon } from '@/ds/icons/FolderIcon';\nimport { McpServerIcon } from '@/ds/icons/McpServerIcon';\nimport { MemoryIcon } from '@/ds/icons/MemoryIcon';\nimport { SkillIcon } from '@/ds/icons/SkillIcon';\nimport { ToolsIcon } from '@/ds/icons/ToolsIcon';\nimport { WorkflowIcon } from '@/ds/icons/WorkflowIcon';\n\nexport const spanTypePrefixes = [\n 'agent',\n 'workflow',\n 'model',\n 'mcp',\n 'tool',\n 'provider',\n 'memory',\n 'workspace',\n 'skill',\n 'scorer',\n 'other',\n];\n\nconst spanTypeToUiElements: Record<string, UISpanStyle> = {\n agent: {\n icon: <AgentIcon />,\n color: 'var(--span-agent)',\n label: 'Agent',\n typePrefix: 'agent',\n },\n workflow: {\n icon: <WorkflowIcon />,\n color: 'var(--span-workflow)',\n label: 'Workflow',\n typePrefix: 'workflow',\n },\n model: {\n icon: <BrainIcon />,\n color: 'var(--span-model)',\n label: 'Model',\n typePrefix: 'model',\n },\n mcp: {\n icon: <McpServerIcon />,\n color: 'var(--span-mcp)',\n label: 'MCP',\n typePrefix: 'mcp',\n },\n tool: {\n icon: <ToolsIcon />,\n color: 'var(--span-tool)',\n label: 'Tool',\n typePrefix: 'tool',\n },\n provider: {\n icon: <ToolsIcon />,\n color: 'var(--span-provider)',\n label: 'Provider Tool',\n typePrefix: 'provider',\n },\n memory: {\n icon: <MemoryIcon />,\n color: 'var(--span-memory)',\n label: 'Memory',\n typePrefix: 'memory',\n },\n workspace: {\n icon: <FolderIcon />,\n color: 'var(--span-workspace)',\n label: 'Workspace',\n typePrefix: 'workspace',\n },\n skill: {\n icon: <SkillIcon />,\n color: 'var(--span-skill)',\n label: 'Skill',\n typePrefix: 'skill',\n },\n scorer: {\n icon: <GaugeIcon />,\n color: 'var(--span-scorer)',\n label: 'Scorer',\n typePrefix: 'scorer',\n },\n};\n\nconst otherSpanType: UISpanStyle = {\n color: 'var(--span-other)',\n label: 'Other',\n typePrefix: 'other',\n};\n\nexport function getSpanTypeUi(type: string) {\n const typePrefix = type?.toLowerCase().split('_')[0] ?? '';\n return spanTypeToUiElements[typePrefix] ?? otherSpanType;\n}\n"],"names":[],"mappings":";;;;;;;;;;AAUO,MAAM,gBAAA,GAAmB;AAAA,EAC9B,OAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF;AAEA,MAAM,oBAAA,GAAoD;AAAA,EACxD,KAAA,EAAO;AAAA,IACL,IAAA,sBAAO,SAAA,EAAA,EAAU,CAAA;AAAA,IACjB,KAAA,EAAO,mBAAA;AAAA,IACP,KAAA,EAAO,OAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,sBAAO,YAAA,EAAA,EAAa,CAAA;AAAA,IACpB,KAAA,EAAO,sBAAA;AAAA,IACP,KAAA,EAAO,UAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,KAAA,EAAO;AAAA,IACL,IAAA,sBAAO,SAAA,EAAA,EAAU,CAAA;AAAA,IACjB,KAAA,EAAO,mBAAA;AAAA,IACP,KAAA,EAAO,OAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,GAAA,EAAK;AAAA,IACH,IAAA,sBAAO,aAAA,EAAA,EAAc,CAAA;AAAA,IACrB,KAAA,EAAO,iBAAA;AAAA,IACP,KAAA,EAAO,KAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,IAAA,sBAAO,SAAA,EAAA,EAAU,CAAA;AAAA,IACjB,KAAA,EAAO,kBAAA;AAAA,IACP,KAAA,EAAO,MAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,sBAAO,SAAA,EAAA,EAAU,CAAA;AAAA,IACjB,KAAA,EAAO,sBAAA;AAAA,IACP,KAAA,EAAO,eAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,sBAAO,UAAA,EAAA,EAAW,CAAA;AAAA,IAClB,KAAA,EAAO,oBAAA;AAAA,IACP,KAAA,EAAO,QAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,SAAA,EAAW;AAAA,IACT,IAAA,sBAAO,UAAA,EAAA,EAAW,CAAA;AAAA,IAClB,KAAA,EAAO,uBAAA;AAAA,IACP,KAAA,EAAO,WAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,KAAA,EAAO;AAAA,IACL,IAAA,sBAAO,SAAA,EAAA,EAAU,CAAA;AAAA,IACjB,KAAA,EAAO,mBAAA;AAAA,IACP,KAAA,EAAO,OAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,sBAAO,SAAA,EAAA,EAAU,CAAA;AAAA,IACjB,KAAA,EAAO,oBAAA;AAAA,IACP,KAAA,EAAO,QAAA;AAAA,IACP,UAAA,EAAY;AAAA;AAEhB,CAAA;AAEA,MAAM,aAAA,GAA6B;AAAA,EACjC,KAAA,EAAO,mBAAA;AAAA,EACP,KAAA,EAAO,OAAA;AAAA,EACP,UAAA,EAAY;AACd,CAAA;AAEO,SAAS,cAAc,IAAA,EAAc;AAC1C,EAAA,MAAM,UAAA,GAAa,MAAM,WAAA,EAAY,CAAE,MAAM,GAAG,CAAA,CAAE,CAAC,CAAA,IAAK,EAAA;AACxD,EAAA,OAAO,oBAAA,CAAqB,UAAU,CAAA,IAAK,aAAA;AAC7C;;;;"}
1
+ {"version":3,"file":"shared.es.js","sources":["../../../../src/domains/traces/components/shared.tsx"],"sourcesContent":["import { BrainIcon } from 'lucide-react';\nimport type { UISpanStyle } from '../types';\nimport { AgentIcon } from '@/ds/icons/AgentIcon';\nimport { McpServerIcon } from '@/ds/icons/McpServerIcon';\nimport { MemoryIcon } from '@/ds/icons/MemoryIcon';\nimport { ScorersIcon } from '@/ds/icons/ScorersIcon';\nimport { SkillIcon } from '@/ds/icons/SkillIcon';\nimport { ToolsIcon } from '@/ds/icons/ToolsIcon';\nimport { WorkflowIcon } from '@/ds/icons/WorkflowIcon';\nimport { WorkspacesIcon } from '@/ds/icons/WorkspacesIcon';\n\nexport const spanTypePrefixes = [\n 'agent',\n 'workflow',\n 'model',\n 'mcp',\n 'tool',\n 'provider',\n 'memory',\n 'workspace',\n 'skill',\n 'scorer',\n 'other',\n];\n\nconst spanTypeToUiElements: Record<string, UISpanStyle> = {\n agent: {\n icon: <AgentIcon />,\n color: 'var(--span-agent)',\n label: 'Agent',\n typePrefix: 'agent',\n },\n workflow: {\n icon: <WorkflowIcon />,\n color: 'var(--span-workflow)',\n label: 'Workflow',\n typePrefix: 'workflow',\n },\n model: {\n icon: <BrainIcon />,\n color: 'var(--span-model)',\n label: 'Model',\n typePrefix: 'model',\n },\n mcp: {\n icon: <McpServerIcon />,\n color: 'var(--span-mcp)',\n label: 'MCP',\n typePrefix: 'mcp',\n },\n tool: {\n icon: <ToolsIcon />,\n color: 'var(--span-tool)',\n label: 'Tool',\n typePrefix: 'tool',\n },\n provider: {\n icon: <ToolsIcon />,\n color: 'var(--span-provider)',\n label: 'Provider Tool',\n typePrefix: 'provider',\n },\n memory: {\n icon: <MemoryIcon />,\n color: 'var(--span-memory)',\n label: 'Memory',\n typePrefix: 'memory',\n },\n workspace: {\n icon: <WorkspacesIcon />,\n color: 'var(--span-workspace)',\n label: 'Workspace',\n typePrefix: 'workspace',\n },\n skill: {\n icon: <SkillIcon />,\n color: 'var(--span-skill)',\n label: 'Skill',\n typePrefix: 'skill',\n },\n scorer: {\n icon: <ScorersIcon />,\n color: 'var(--span-scorer)',\n label: 'Scorer',\n typePrefix: 'scorer',\n },\n};\n\nconst otherSpanType: UISpanStyle = {\n color: 'var(--span-other)',\n label: 'Other',\n typePrefix: 'other',\n};\n\nexport function getSpanTypeUi(type: string) {\n const typePrefix = type?.toLowerCase().split('_')[0] ?? '';\n return spanTypeToUiElements[typePrefix] ?? otherSpanType;\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAWO,MAAM,gBAAA,GAAmB;AAAA,EAC9B,OAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF;AAEA,MAAM,oBAAA,GAAoD;AAAA,EACxD,KAAA,EAAO;AAAA,IACL,IAAA,sBAAO,SAAA,EAAA,EAAU,CAAA;AAAA,IACjB,KAAA,EAAO,mBAAA;AAAA,IACP,KAAA,EAAO,OAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,sBAAO,YAAA,EAAA,EAAa,CAAA;AAAA,IACpB,KAAA,EAAO,sBAAA;AAAA,IACP,KAAA,EAAO,UAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,KAAA,EAAO;AAAA,IACL,IAAA,sBAAO,SAAA,EAAA,EAAU,CAAA;AAAA,IACjB,KAAA,EAAO,mBAAA;AAAA,IACP,KAAA,EAAO,OAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,GAAA,EAAK;AAAA,IACH,IAAA,sBAAO,aAAA,EAAA,EAAc,CAAA;AAAA,IACrB,KAAA,EAAO,iBAAA;AAAA,IACP,KAAA,EAAO,KAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,IAAA,sBAAO,SAAA,EAAA,EAAU,CAAA;AAAA,IACjB,KAAA,EAAO,kBAAA;AAAA,IACP,KAAA,EAAO,MAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,sBAAO,SAAA,EAAA,EAAU,CAAA;AAAA,IACjB,KAAA,EAAO,sBAAA;AAAA,IACP,KAAA,EAAO,eAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,sBAAO,UAAA,EAAA,EAAW,CAAA;AAAA,IAClB,KAAA,EAAO,oBAAA;AAAA,IACP,KAAA,EAAO,QAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,SAAA,EAAW;AAAA,IACT,IAAA,sBAAO,cAAA,EAAA,EAAe,CAAA;AAAA,IACtB,KAAA,EAAO,uBAAA;AAAA,IACP,KAAA,EAAO,WAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,KAAA,EAAO;AAAA,IACL,IAAA,sBAAO,SAAA,EAAA,EAAU,CAAA;AAAA,IACjB,KAAA,EAAO,mBAAA;AAAA,IACP,KAAA,EAAO,OAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,sBAAO,WAAA,EAAA,EAAY,CAAA;AAAA,IACnB,KAAA,EAAO,oBAAA;AAAA,IACP,KAAA,EAAO,QAAA;AAAA,IACP,UAAA,EAAY;AAAA;AAEhB,CAAA;AAEA,MAAM,aAAA,GAA6B;AAAA,EACjC,KAAA,EAAO,mBAAA;AAAA,EACP,KAAA,EAAO,OAAA;AAAA,EACP,UAAA,EAAY;AACd,CAAA;AAEO,SAAS,cAAc,IAAA,EAAc;AAC1C,EAAA,MAAM,UAAA,GAAa,MAAM,WAAA,EAAY,CAAE,MAAM,GAAG,CAAA,CAAE,CAAC,CAAA,IAAK,EAAA;AACxD,EAAA,OAAO,oBAAA,CAAqB,UAAU,CAAA,IAAK,aAAA;AAC7C;;;;"}
@@ -15,7 +15,7 @@ const utils_cn = require('../../../cn-DlOJCxrS.cjs');
15
15
  require('react');
16
16
  require('../../chat/attachments/composer-attachment-context.cjs.js');
17
17
  require('@base-ui/react/use-render');
18
- require('../../../Button-DH1aTzbs.cjs');
18
+ require('../../../Button-C4I05uT4.cjs');
19
19
  require('../../chat/context/chat-context.cjs.js');
20
20
  require('./span-payload/span-payload-processor.cjs.js');
21
21
  const domains_traces_components_spanPayload_spanProcessorAttributes = require('./span-payload/span-processor-attributes.cjs.js');
@@ -23,12 +23,12 @@ const domains_traces_components_spanPayload_spanPayloadRegistry = require('./spa
23
23
  const domains_traces_components_spanSummaryDescription = require('./span-summary-description.cjs.js');
24
24
  const domains_traces_components_spanTokenUsage = require('./span-token-usage.cjs.js');
25
25
  const domains_traces_components_traceIdButton = require('./trace-id-button.cjs.js');
26
- const dataKeysAndValues = require('../../../data-keys-and-values-1lYi60YK.cjs');
27
- const dataPanel = require('../../../data-panel-BkfjzriB.cjs');
26
+ const dataKeysAndValues = require('../../../data-keys-and-values-DBXIqeXt.cjs');
27
+ const dataPanel = require('../../../data-panel-DGNV14pm.cjs');
28
28
  const Notice = require('../../../Notice-DYgIy4FO.cjs');
29
29
  const tabsRoot = require('../../../tabs-root-sOhEgFZ-.cjs');
30
30
  const tabsList = require('../../../tabs-list-BTRYiT_o.cjs');
31
- const tabsTab = require('../../../tabs-tab-DRaRUvQ3.cjs');
31
+ const tabsTab = require('../../../tabs-tab-B0W25Dm2.cjs');
32
32
  const tabsContent = require('../../../tabs-content-B16298Ur.cjs');
33
33
 
34
34
  const BODY_CLASS = "min-h-0 flex-1 overflow-y-auto px-2 py-3";