@mastra/playground-ui 60.0.0 → 60.1.0-alpha.1

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 (929) hide show
  1. package/README.md +7 -6
  2. package/dist/{Badge-H8K5WrXg.cjs → Badge-D3EctKQo.cjs} +16 -8
  3. package/dist/Badge-D3EctKQo.cjs.map +1 -0
  4. package/dist/{Badge-Q_pCeeGW.js → Badge-DmOqFpXW.js} +16 -8
  5. package/dist/Badge-DmOqFpXW.js.map +1 -0
  6. package/dist/{Button-BnmR2HRc.cjs → Button-CXhSUBxN.cjs} +3 -3
  7. package/dist/Button-CXhSUBxN.cjs.map +1 -0
  8. package/dist/{Button-C6eUqcPI.js → Button-D43ghVKt.js} +3 -3
  9. package/dist/Button-D43ghVKt.js.map +1 -0
  10. package/dist/{EmptyState-CJ5KC4Db.cjs → EmptyState-CuoMGNP0.cjs} +2 -2
  11. package/dist/EmptyState-CuoMGNP0.cjs.map +1 -0
  12. package/dist/{EmptyState-CynkaZd1.js → EmptyState-DyyUFpzY.js} +2 -2
  13. package/dist/EmptyState-DyyUFpzY.js.map +1 -0
  14. package/dist/{ErrorBoundary-Bb2R5IMR.js → ErrorBoundary-BvwJY6s9.js} +2 -2
  15. package/dist/{ErrorBoundary-Bb2R5IMR.js.map → ErrorBoundary-BvwJY6s9.js.map} +1 -1
  16. package/dist/{ErrorBoundary-CKrwONAU.cjs → ErrorBoundary-D7eIMbMr.cjs} +2 -2
  17. package/dist/{ErrorBoundary-CKrwONAU.cjs.map → ErrorBoundary-D7eIMbMr.cjs.map} +1 -1
  18. package/dist/{Notice-Ce3r5x-7.js → Notice-B8RIClJD.js} +2 -2
  19. package/dist/{Notice-Ce3r5x-7.js.map → Notice-B8RIClJD.js.map} +1 -1
  20. package/dist/{Notice-CEBwitdf.cjs → Notice-C4Tgmtgb.cjs} +2 -2
  21. package/dist/{Notice-CEBwitdf.cjs.map → Notice-C4Tgmtgb.cjs.map} +1 -1
  22. package/dist/{activity-Duth8KP_.js → activity-BoXbE4Kz.js} +3 -3
  23. package/dist/activity-BoXbE4Kz.js.map +1 -0
  24. package/dist/{activity-8egTNbaI.cjs → activity-CbQG59Oc.cjs} +3 -3
  25. package/dist/activity-CbQG59Oc.cjs.map +1 -0
  26. package/dist/{alert-dialog-D1UYVW__.js → alert-dialog-CzRo39mH.js} +3 -3
  27. package/dist/{alert-dialog-D1UYVW__.js.map → alert-dialog-CzRo39mH.js.map} +1 -1
  28. package/dist/{alert-dialog-BcOSIOSW.cjs → alert-dialog-DC-Fapxf.cjs} +3 -3
  29. package/dist/{alert-dialog-BcOSIOSW.cjs.map → alert-dialog-DC-Fapxf.cjs.map} +1 -1
  30. package/dist/{ask-user-DJXmLJzy.cjs → ask-user-CXu4b7Jw.cjs} +4 -4
  31. package/dist/ask-user-CXu4b7Jw.cjs.map +1 -0
  32. package/dist/{ask-user-Crg1O-o6.js → ask-user-Dlz2346n.js} +4 -4
  33. package/dist/ask-user-Dlz2346n.js.map +1 -0
  34. package/dist/buttons-group-CoZP3lJt.cjs.map +1 -1
  35. package/dist/buttons-group-DsZgrZBZ.js.map +1 -1
  36. package/dist/{code-block-C7A4Hv96.cjs → code-block-BzoMjjtf.cjs} +5 -5
  37. package/dist/{code-block-C7A4Hv96.cjs.map → code-block-BzoMjjtf.cjs.map} +1 -1
  38. package/dist/{code-block-C_pvalBv.js → code-block-DY5KsTGY.js} +5 -5
  39. package/dist/{code-block-C_pvalBv.js.map → code-block-DY5KsTGY.js.map} +1 -1
  40. package/dist/{code-editor-Cltwid7c.js → code-editor-28chVxHw.js} +10 -8
  41. package/dist/code-editor-28chVxHw.js.map +1 -0
  42. package/dist/{code-editor-BXchPl_F.cjs → code-editor-B_wPmKPf.cjs} +10 -8
  43. package/dist/code-editor-B_wPmKPf.cjs.map +1 -0
  44. package/dist/{combobox-B_C0cNid.js → combobox-B15qTrWO.js} +4 -4
  45. package/dist/{combobox-B_C0cNid.js.map → combobox-B15qTrWO.js.map} +1 -1
  46. package/dist/{combobox-rKV-Lksj.cjs → combobox-DJ0c4o4S.cjs} +4 -4
  47. package/dist/{combobox-rKV-Lksj.cjs.map → combobox-DJ0c4o4S.cjs.map} +1 -1
  48. package/dist/{combobox-styles-CLxC7VLA.js → combobox-styles-C2MEEpaG.js} +3 -3
  49. package/dist/{combobox-styles-CLxC7VLA.js.map → combobox-styles-C2MEEpaG.js.map} +1 -1
  50. package/dist/{combobox-styles-C4Kq1NFV.cjs → combobox-styles-DLflBH-G.cjs} +3 -3
  51. package/dist/{combobox-styles-C4Kq1NFV.cjs.map → combobox-styles-DLflBH-G.cjs.map} +1 -1
  52. package/dist/{command-CpXMoss8.cjs → command-Bm0VcX7X.cjs} +2 -2
  53. package/dist/{command-CpXMoss8.cjs.map → command-Bm0VcX7X.cjs.map} +1 -1
  54. package/dist/{command-C6JnofUJ.js → command-DFin7kHN.js} +2 -2
  55. package/dist/{command-C6JnofUJ.js.map → command-DFin7kHN.js.map} +1 -1
  56. package/dist/components/AlertDialog.cjs.js +1 -1
  57. package/dist/components/AlertDialog.es.js +1 -1
  58. package/dist/components/Badge.cjs.js +1 -1
  59. package/dist/components/Badge.es.js +1 -1
  60. package/dist/components/Button.cjs.js +1 -1
  61. package/dist/components/Button.es.js +2 -2
  62. package/dist/components/ClampedText.cjs.js +1 -1
  63. package/dist/components/ClampedText.es.js +1 -1
  64. package/dist/components/CodeBlock.cjs.js +1 -1
  65. package/dist/components/CodeBlock.es.js +1 -1
  66. package/dist/components/CodeEditor.cjs.js +1 -1
  67. package/dist/components/CodeEditor.es.js +1 -1
  68. package/dist/components/CollapsibleBox.cjs.js +12 -0
  69. package/dist/components/CollapsibleBox.cjs.js.map +1 -0
  70. package/dist/components/CollapsibleBox.d.ts +2 -0
  71. package/dist/components/CollapsibleBox.es.js +2 -0
  72. package/dist/components/CollapsibleBox.es.js.map +1 -0
  73. package/dist/components/Combobox.cjs.js +2 -2
  74. package/dist/components/Combobox.es.js +2 -2
  75. package/dist/components/Command.cjs.js +1 -1
  76. package/dist/components/Command.es.js +1 -1
  77. package/dist/components/CommandPalette.cjs.js +1 -1
  78. package/dist/components/CommandPalette.es.js +1 -1
  79. package/dist/components/Comment.cjs.js +3 -3
  80. package/dist/components/Comment.es.js +3 -3
  81. package/dist/components/CopyButton.cjs.js +1 -1
  82. package/dist/components/CopyButton.es.js +1 -1
  83. package/dist/components/DataCodeSection.cjs.js +1 -1
  84. package/dist/components/DataCodeSection.es.js +1 -1
  85. package/dist/components/DataDetailsPanel.cjs.js +2 -2
  86. package/dist/components/DataDetailsPanel.es.js +2 -2
  87. package/dist/components/DataList.cjs.js +3 -3
  88. package/dist/components/DataList.es.js +3 -3
  89. package/dist/components/DataPanel.cjs.js +1 -1
  90. package/dist/components/DataPanel.es.js +1 -1
  91. package/dist/components/DateRangeTimeline.cjs.js +1 -1
  92. package/dist/components/DateRangeTimeline.es.js +1 -1
  93. package/dist/components/DateTimePicker.cjs.js +3 -3
  94. package/dist/components/DateTimePicker.es.js +3 -3
  95. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  96. package/dist/components/DateTimeRangePicker.es.js +1 -1
  97. package/dist/components/Dialog.cjs.js +2 -2
  98. package/dist/components/Dialog.es.js +2 -2
  99. package/dist/components/DisabledFeatureButton.cjs.js +1 -1
  100. package/dist/components/DisabledFeatureButton.es.js +1 -1
  101. package/dist/components/Drawer.cjs.js +1 -1
  102. package/dist/components/Drawer.es.js +1 -1
  103. package/dist/components/EmptyState.cjs.js +1 -1
  104. package/dist/components/EmptyState.es.js +1 -1
  105. package/dist/components/EnvironmentVariablesEditor.cjs.js +9 -9
  106. package/dist/components/EnvironmentVariablesEditor.cjs.js.map +1 -1
  107. package/dist/components/EnvironmentVariablesEditor.es.js +9 -9
  108. package/dist/components/EnvironmentVariablesEditor.es.js.map +1 -1
  109. package/dist/components/ErrorBoundary.cjs.js +1 -1
  110. package/dist/components/ErrorBoundary.es.js +1 -1
  111. package/dist/components/FileDropBackdrop.cjs.js +1 -1
  112. package/dist/components/FileDropBackdrop.es.js +1 -1
  113. package/dist/components/FilterBar.cjs.js +3 -3
  114. package/dist/components/FilterBar.es.js +4 -4
  115. package/dist/components/FormFieldBlocks.cjs.js +5 -5
  116. package/dist/components/FormFieldBlocks.es.js +5 -5
  117. package/dist/components/InputGroup.cjs.js +1 -1
  118. package/dist/components/InputGroup.es.js +1 -1
  119. package/dist/components/JSONSchemaForm.cjs.js +3 -3
  120. package/dist/components/JSONSchemaForm.es.js +3 -3
  121. package/dist/components/ListSearch.cjs.js +1 -1
  122. package/dist/components/ListSearch.es.js +1 -1
  123. package/dist/components/LogsDataList.cjs.js +3 -1
  124. package/dist/components/LogsDataList.cjs.js.map +1 -1
  125. package/dist/components/LogsDataList.es.js +3 -1
  126. package/dist/components/LogsDataList.es.js.map +1 -1
  127. package/dist/components/MainSidebar.cjs.js +1 -1
  128. package/dist/components/MainSidebar.es.js +2 -2
  129. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  130. package/dist/components/MarkdownRenderer.es.js +1 -1
  131. package/dist/components/Message.cjs.js +1 -1
  132. package/dist/components/Message.es.js +1 -1
  133. package/dist/components/MetricsCard.cjs.js +1 -1
  134. package/dist/components/MetricsCard.es.js +1 -1
  135. package/dist/components/MetricsKpiCard.cjs.js +1 -1
  136. package/dist/components/MetricsKpiCard.es.js +1 -1
  137. package/dist/components/Notice.cjs.js +1 -1
  138. package/dist/components/Notice.es.js +1 -1
  139. package/dist/components/PrevNextNav.cjs.js +1 -1
  140. package/dist/components/PrevNextNav.es.js +1 -1
  141. package/dist/components/ProductBadge.cjs.js +1 -1
  142. package/dist/components/ProductBadge.es.js +1 -1
  143. package/dist/components/PropertyFilter.cjs.js +3 -3
  144. package/dist/components/PropertyFilter.es.js +4 -4
  145. package/dist/components/PullRequestIcon.cjs.js +1 -1
  146. package/dist/components/PullRequestIcon.cjs.js.map +1 -1
  147. package/dist/components/PullRequestIcon.es.js +1 -1
  148. package/dist/components/PullRequestIcon.es.js.map +1 -1
  149. package/dist/components/RelativeTimestamp.cjs.js +1 -1
  150. package/dist/components/RelativeTimestamp.es.js +1 -1
  151. package/dist/components/RuleBuilder.cjs.js +3 -3
  152. package/dist/components/RuleBuilder.cjs.js.map +1 -1
  153. package/dist/components/RuleBuilder.es.js +3 -3
  154. package/dist/components/RuleBuilder.es.js.map +1 -1
  155. package/dist/components/SankeyChart.cjs.js +1 -1
  156. package/dist/components/SankeyChart.es.js +1 -1
  157. package/dist/components/Section.cjs.js +1 -1
  158. package/dist/components/Section.es.js +1 -1
  159. package/dist/components/SegmentedControl.cjs.js +11 -0
  160. package/dist/components/SegmentedControl.cjs.js.map +1 -0
  161. package/dist/components/SegmentedControl.d.ts +2 -0
  162. package/dist/components/SegmentedControl.es.js +2 -0
  163. package/dist/components/SegmentedControl.es.js.map +1 -0
  164. package/dist/components/Select.cjs.js +1 -1
  165. package/dist/components/Select.es.js +1 -1
  166. package/dist/components/SideDialog.cjs.js +1 -1
  167. package/dist/components/SideDialog.es.js +1 -1
  168. package/dist/components/Steps.cjs.js +2 -2
  169. package/dist/components/Steps.cjs.js.map +1 -1
  170. package/dist/components/Steps.es.js +2 -2
  171. package/dist/components/Steps.es.js.map +1 -1
  172. package/dist/components/Tabs.cjs.js +3 -3
  173. package/dist/components/Tabs.es.js +3 -3
  174. package/dist/components/ThemeToggle.cjs.js +17 -86
  175. package/dist/components/ThemeToggle.cjs.js.map +1 -1
  176. package/dist/components/ThemeToggle.es.js +18 -87
  177. package/dist/components/ThemeToggle.es.js.map +1 -1
  178. package/dist/components/ThreadList.cjs.js +1 -1
  179. package/dist/components/ThreadList.es.js +1 -1
  180. package/dist/components/TokenBudget.cjs.js +1 -1
  181. package/dist/components/TokenBudget.es.js +1 -1
  182. package/dist/components/Truncate.cjs.js +1 -1
  183. package/dist/components/Truncate.es.js +1 -1
  184. package/dist/components/Workflow.cjs.js +6 -6
  185. package/dist/components/Workflow.es.js +6 -6
  186. package/dist/components/ai/activity.cjs.js +4 -4
  187. package/dist/components/ai/activity.es.js +4 -4
  188. package/dist/components/ai/ask-user.cjs.js +1 -1
  189. package/dist/components/ai/ask-user.es.js +1 -1
  190. package/dist/components/ai/plan.cjs.js +1 -1
  191. package/dist/components/ai/plan.es.js +1 -1
  192. package/dist/components/ai/tool-approval.cjs.js +1 -1
  193. package/dist/components/ai/tool-approval.es.js +1 -1
  194. package/dist/components/ai/tool-call.cjs.js +4 -4
  195. package/dist/components/ai/tool-call.es.js +4 -4
  196. package/dist/{copy-button-C6nXDjBz.cjs → copy-button-CGkFEDHF.cjs} +2 -2
  197. package/dist/{copy-button-C6nXDjBz.cjs.map → copy-button-CGkFEDHF.cjs.map} +1 -1
  198. package/dist/{copy-button-DbmsTUum.js → copy-button-DH8xtrWz.js} +2 -2
  199. package/dist/{copy-button-DbmsTUum.js.map → copy-button-DH8xtrWz.js.map} +1 -1
  200. package/dist/{data-code-section-D5b6_jcB.cjs → data-code-section-DWBfkrmO.cjs} +6 -6
  201. package/dist/data-code-section-DWBfkrmO.cjs.map +1 -0
  202. package/dist/{data-code-section-Bd2Xnckz.js → data-code-section-It6myyvZ.js} +6 -6
  203. package/dist/data-code-section-It6myyvZ.js.map +1 -0
  204. package/dist/{data-list-DL_oFE4j.js → data-list-CyeD_u-6.js} +3 -3
  205. package/dist/{data-list-DL_oFE4j.js.map → data-list-CyeD_u-6.js.map} +1 -1
  206. package/dist/{data-list-D8bACyyK.cjs → data-list-Y42KyuI1.cjs} +3 -3
  207. package/dist/{data-list-D8bACyyK.cjs.map → data-list-Y42KyuI1.cjs.map} +1 -1
  208. package/dist/{data-list-spacer-_bFe0e2u.cjs → data-list-spacer-BSg2hCx7.cjs} +2 -2
  209. package/dist/{data-list-spacer-_bFe0e2u.cjs.map → data-list-spacer-BSg2hCx7.cjs.map} +1 -1
  210. package/dist/{data-list-spacer-CE6-4ZQq.js → data-list-spacer-C8z32twc.js} +2 -2
  211. package/dist/{data-list-spacer-CE6-4ZQq.js.map → data-list-spacer-C8z32twc.js.map} +1 -1
  212. package/dist/{data-panel-CjvoI_lx.cjs → data-panel-D7Qk4iwZ.cjs} +3 -3
  213. package/dist/{data-panel-CjvoI_lx.cjs.map → data-panel-D7Qk4iwZ.cjs.map} +1 -1
  214. package/dist/{data-panel-42fdcagQ.js → data-panel-DuLf5j8S.js} +3 -3
  215. package/dist/{data-panel-42fdcagQ.js.map → data-panel-DuLf5j8S.js.map} +1 -1
  216. package/dist/{date-time-range-picker-C-pSI1u1.js → date-time-range-picker-BDylIIzt.js} +4 -4
  217. package/dist/{date-time-range-picker-C-pSI1u1.js.map → date-time-range-picker-BDylIIzt.js.map} +1 -1
  218. package/dist/{date-time-range-picker-BORAuIJM.cjs → date-time-range-picker-UheN070q.cjs} +4 -4
  219. package/dist/{date-time-range-picker-BORAuIJM.cjs.map → date-time-range-picker-UheN070q.cjs.map} +1 -1
  220. package/dist/{dialog-cKzR2TXI.js → dialog-Dt5kASkl.js} +2 -2
  221. package/dist/{dialog-cKzR2TXI.js.map → dialog-Dt5kASkl.js.map} +1 -1
  222. package/dist/{dialog-action-B3AHq7mU.cjs → dialog-action-C3Tc7ZKI.cjs} +3 -3
  223. package/dist/{dialog-action-B3AHq7mU.cjs.map → dialog-action-C3Tc7ZKI.cjs.map} +1 -1
  224. package/dist/{dialog-action-BGmDoI5T.js → dialog-action-CB3h9Z2J.js} +3 -3
  225. package/dist/{dialog-action-BGmDoI5T.js.map → dialog-action-CB3h9Z2J.js.map} +1 -1
  226. package/dist/{dialog-DYpOpj9s.cjs → dialog-d_AK1NQD.cjs} +2 -2
  227. package/dist/{dialog-DYpOpj9s.cjs.map → dialog-d_AK1NQD.cjs.map} +1 -1
  228. package/dist/domains/auth/components/permission-denied.cjs.js +1 -1
  229. package/dist/domains/auth/components/permission-denied.es.js +1 -1
  230. package/dist/domains/auth/components/session-expired.cjs.js +2 -2
  231. package/dist/domains/auth/components/session-expired.es.js +2 -2
  232. package/dist/domains/chat/attachments/attachment-preview-dialog.cjs.js +2 -2
  233. package/dist/domains/chat/attachments/attachment-preview-dialog.es.js +2 -2
  234. package/dist/domains/chat/attachments/composer-attachment.cjs.js +1 -1
  235. package/dist/domains/chat/attachments/composer-attachment.es.js +1 -1
  236. package/dist/domains/chat/components/badge-wrapper.cjs.js +1 -1
  237. package/dist/domains/chat/components/badge-wrapper.es.js +1 -1
  238. package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +3 -3
  239. package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +3 -3
  240. package/dist/domains/chat/messages/assistant-message-actions.cjs.js +2 -2
  241. package/dist/domains/chat/messages/assistant-message-actions.es.js +2 -2
  242. package/dist/domains/chat/messages/dataset-save-action.cjs.js +5 -5
  243. package/dist/domains/chat/messages/dataset-save-action.es.js +5 -5
  244. package/dist/domains/chat/messages/message-row.cjs.js +5 -5
  245. package/dist/domains/chat/messages/message-row.es.js +5 -5
  246. package/dist/domains/chat/messages/notification-signal-notice.cjs.js +1 -1
  247. package/dist/domains/chat/messages/notification-signal-notice.es.js +1 -1
  248. package/dist/domains/chat/messages/renderers/message-text.cjs.js +3 -3
  249. package/dist/domains/chat/messages/renderers/message-text.es.js +3 -3
  250. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
  251. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
  252. package/dist/domains/chat/messages/renderers/status-renderers.cjs.js +1 -1
  253. package/dist/domains/chat/messages/renderers/status-renderers.es.js +1 -1
  254. package/dist/domains/chat/messages/signal-badge.cjs.js +1 -1
  255. package/dist/domains/chat/messages/signal-badge.es.js +1 -1
  256. package/dist/domains/chat/messages/skill-message.cjs.js +3 -3
  257. package/dist/domains/chat/messages/skill-message.es.js +3 -3
  258. package/dist/domains/chat/messages/system-reminder-badge.cjs.js +1 -1
  259. package/dist/domains/chat/messages/system-reminder-badge.es.js +1 -1
  260. package/dist/domains/chat/messages/tripwire-notice.cjs.js +2 -2
  261. package/dist/domains/chat/messages/tripwire-notice.es.js +2 -2
  262. package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
  263. package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
  264. package/dist/domains/chat/tools/badges/agent-badge.cjs.js +4 -4
  265. package/dist/domains/chat/tools/badges/agent-badge.es.js +4 -4
  266. package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
  267. package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
  268. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.cjs.js +3 -3
  269. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js +3 -3
  270. package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +3 -3
  271. package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js.map +1 -1
  272. package/dist/domains/chat/tools/badges/code-mode-badge.es.js +3 -3
  273. package/dist/domains/chat/tools/badges/code-mode-badge.es.js.map +1 -1
  274. package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +3 -3
  275. package/dist/domains/chat/tools/badges/file-tree-badge.es.js +3 -3
  276. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +2 -2
  277. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +2 -2
  278. package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +2 -2
  279. package/dist/domains/chat/tools/badges/observation-marker-details.es.js +2 -2
  280. package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +1 -1
  281. package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
  282. package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js +3 -3
  283. package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js.map +1 -1
  284. package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js +3 -3
  285. package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js.map +1 -1
  286. package/dist/domains/chat/tools/badges/tool-approval-buttons.cjs.js +1 -1
  287. package/dist/domains/chat/tools/badges/tool-approval-buttons.es.js +1 -1
  288. package/dist/domains/chat/tools/badges/tool-badge.cjs.js +4 -4
  289. package/dist/domains/chat/tools/badges/tool-badge.es.js +4 -4
  290. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +5 -3
  291. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js.map +1 -1
  292. package/dist/domains/chat/tools/badges/workflow-badge.es.js +5 -3
  293. package/dist/domains/chat/tools/badges/workflow-badge.es.js.map +1 -1
  294. package/dist/domains/chat/tools/submit-plan-tool.cjs.js +2 -2
  295. package/dist/domains/chat/tools/submit-plan-tool.es.js +2 -2
  296. package/dist/domains/chat/tools/tool-card-kind.cjs.js +5 -1
  297. package/dist/domains/chat/tools/tool-card-kind.cjs.js.map +1 -1
  298. package/dist/domains/chat/tools/tool-card-kind.es.js +5 -2
  299. package/dist/domains/chat/tools/tool-card-kind.es.js.map +1 -1
  300. package/dist/domains/chat/tools/tool-card.cjs.js +1 -1
  301. package/dist/domains/chat/tools/tool-card.es.js +1 -1
  302. package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js +4 -4
  303. package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js +4 -4
  304. package/dist/domains/logs/components/log-data-panel.cjs.js +3 -3
  305. package/dist/domains/logs/components/log-data-panel.es.js +3 -3
  306. package/dist/domains/logs/components/logs-error-content.cjs.js +1 -1
  307. package/dist/domains/logs/components/logs-error-content.es.js +1 -1
  308. package/dist/domains/logs/components/logs-list-view.cjs.js +1 -1
  309. package/dist/domains/logs/components/logs-list-view.es.js +1 -1
  310. package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
  311. package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
  312. package/dist/domains/logs/components/no-logs-info.cjs.js +2 -2
  313. package/dist/domains/logs/components/no-logs-info.es.js +2 -2
  314. package/dist/domains/memory/components/flame-graph.cjs.js +2 -2
  315. package/dist/domains/memory/components/flame-graph.cjs.js.map +1 -1
  316. package/dist/domains/memory/components/flame-graph.es.js +2 -2
  317. package/dist/domains/memory/components/flame-graph.es.js.map +1 -1
  318. package/dist/domains/memory/components/memory-studio-panel.cjs.js +1 -1
  319. package/dist/domains/memory/components/memory-studio-panel.es.js +1 -1
  320. package/dist/domains/memory/components/observation-detail-view.cjs.js +1 -1
  321. package/dist/domains/memory/components/observation-detail-view.es.js +1 -1
  322. package/dist/domains/memory/components/thread-context-progress.cjs.js +1 -1
  323. package/dist/domains/memory/components/thread-context-progress.es.js +1 -1
  324. package/dist/domains/metrics/components/card-action-buttons.cjs.js +1 -1
  325. package/dist/domains/metrics/components/card-action-buttons.es.js +1 -1
  326. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  327. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  328. package/dist/domains/metrics/components/kpi-card-view.cjs.js +1 -1
  329. package/dist/domains/metrics/components/kpi-card-view.es.js +1 -1
  330. package/dist/domains/metrics/components/latency-card-view.cjs.js +5 -5
  331. package/dist/domains/metrics/components/latency-card-view.cjs.js.map +1 -1
  332. package/dist/domains/metrics/components/latency-card-view.es.js +5 -5
  333. package/dist/domains/metrics/components/latency-card-view.es.js.map +1 -1
  334. package/dist/domains/metrics/components/memory-card-view.cjs.js +5 -5
  335. package/dist/domains/metrics/components/memory-card-view.es.js +5 -5
  336. package/dist/domains/metrics/components/metrics-utils.cjs.js +1 -1
  337. package/dist/domains/metrics/components/metrics-utils.cjs.js.map +1 -1
  338. package/dist/domains/metrics/components/metrics-utils.es.js +1 -1
  339. package/dist/domains/metrics/components/metrics-utils.es.js.map +1 -1
  340. package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js +2 -2
  341. package/dist/domains/metrics/components/model-usage-cost-card-view.es.js +2 -2
  342. package/dist/domains/metrics/components/scores-card-view.cjs.js +6 -6
  343. package/dist/domains/metrics/components/scores-card-view.cjs.js.map +1 -1
  344. package/dist/domains/metrics/components/scores-card-view.es.js +6 -6
  345. package/dist/domains/metrics/components/scores-card-view.es.js.map +1 -1
  346. package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js +4 -4
  347. package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js +4 -4
  348. package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js +5 -5
  349. package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js.map +1 -1
  350. package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js +5 -5
  351. package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js.map +1 -1
  352. package/dist/domains/metrics/components/traces-volume-card-view.cjs.js +4 -4
  353. package/dist/domains/metrics/components/traces-volume-card-view.es.js +4 -4
  354. package/dist/domains/metrics/drilldown.cjs.js +0 -1
  355. package/dist/domains/metrics/drilldown.cjs.js.map +1 -1
  356. package/dist/domains/metrics/drilldown.es.js +0 -1
  357. package/dist/domains/metrics/drilldown.es.js.map +1 -1
  358. package/dist/domains/metrics/metrics-filters.cjs.js +0 -2
  359. package/dist/domains/metrics/metrics-filters.cjs.js.map +1 -1
  360. package/dist/domains/metrics/metrics-filters.es.js +0 -2
  361. package/dist/domains/metrics/metrics-filters.es.js.map +1 -1
  362. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js +4 -4
  363. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js +4 -4
  364. package/dist/domains/review/components/review-status-badge.cjs.js +1 -1
  365. package/dist/domains/review/components/review-status-badge.es.js +1 -1
  366. package/dist/domains/scores/components/score-data-panel.cjs.js +2 -2
  367. package/dist/domains/scores/components/score-data-panel.es.js +2 -2
  368. package/dist/domains/scores/components/span-scoring.cjs.js +4 -4
  369. package/dist/domains/scores/components/span-scoring.es.js +4 -4
  370. package/dist/domains/scores/components/trace-scores-tab.cjs.js +5 -4
  371. package/dist/domains/scores/components/trace-scores-tab.cjs.js.map +1 -1
  372. package/dist/domains/scores/components/trace-scores-tab.es.js +5 -4
  373. package/dist/domains/scores/components/trace-scores-tab.es.js.map +1 -1
  374. package/dist/domains/traces/components/feedback-thread.cjs.js +3 -3
  375. package/dist/domains/traces/components/feedback-thread.es.js +3 -3
  376. package/dist/domains/traces/components/format-trace-thread-messages.cjs.js +31 -9
  377. package/dist/domains/traces/components/format-trace-thread-messages.cjs.js.map +1 -1
  378. package/dist/domains/traces/components/format-trace-thread-messages.es.js +31 -9
  379. package/dist/domains/traces/components/format-trace-thread-messages.es.js.map +1 -1
  380. package/dist/domains/traces/components/no-traces-info.cjs.js +1 -1
  381. package/dist/domains/traces/components/no-traces-info.es.js +1 -1
  382. package/dist/domains/traces/components/span-data-panel-view.cjs.js +6 -6
  383. package/dist/domains/traces/components/span-data-panel-view.es.js +6 -6
  384. package/dist/domains/traces/components/span-details-view.cjs.js +1 -1
  385. package/dist/domains/traces/components/span-details-view.es.js +1 -1
  386. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +2 -2
  387. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +2 -2
  388. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
  389. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
  390. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +3 -3
  391. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +3 -3
  392. package/dist/domains/traces/components/span-payload/span-payload-json.cjs.js +1 -1
  393. package/dist/domains/traces/components/span-payload/span-payload-json.cjs.js.map +1 -1
  394. package/dist/domains/traces/components/span-payload/span-payload-json.es.js +1 -1
  395. package/dist/domains/traces/components/span-payload/span-payload-json.es.js.map +1 -1
  396. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +16 -11
  397. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js.map +1 -1
  398. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +16 -11
  399. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js.map +1 -1
  400. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +2 -2
  401. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +2 -2
  402. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
  403. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
  404. package/dist/domains/traces/components/span-payload/span-payload-section.cjs.js +16 -3
  405. package/dist/domains/traces/components/span-payload/span-payload-section.cjs.js.map +1 -1
  406. package/dist/domains/traces/components/span-payload/span-payload-section.es.js +16 -3
  407. package/dist/domains/traces/components/span-payload/span-payload-section.es.js.map +1 -1
  408. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +2 -2
  409. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +2 -2
  410. package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js +2 -2
  411. package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +2 -2
  412. package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
  413. package/dist/domains/traces/components/span-summary-description.es.js +1 -1
  414. package/dist/domains/traces/components/span-type-legend.cjs.js +1 -1
  415. package/dist/domains/traces/components/span-type-legend.es.js +1 -1
  416. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
  417. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
  418. package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +6 -6
  419. package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js.map +1 -1
  420. package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +6 -6
  421. package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js.map +1 -1
  422. package/dist/domains/traces/components/thread-trace/thread-trace-spans.cjs.js +1 -1
  423. package/dist/domains/traces/components/thread-trace/thread-trace-spans.es.js +1 -1
  424. package/dist/domains/traces/components/thread-view-by-trace.cjs.js +9 -2
  425. package/dist/domains/traces/components/thread-view-by-trace.cjs.js.map +1 -1
  426. package/dist/domains/traces/components/thread-view-by-trace.es.js +10 -3
  427. package/dist/domains/traces/components/thread-view-by-trace.es.js.map +1 -1
  428. package/dist/domains/traces/components/trace-columns-menu.cjs.js +5 -5
  429. package/dist/domains/traces/components/trace-columns-menu.es.js +5 -5
  430. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +6 -6
  431. package/dist/domains/traces/components/trace-data-panel-view.es.js +6 -6
  432. package/dist/domains/traces/components/trace-data-panel.cjs.js +4 -2
  433. package/dist/domains/traces/components/trace-data-panel.cjs.js.map +1 -1
  434. package/dist/domains/traces/components/trace-data-panel.es.js +4 -2
  435. package/dist/domains/traces/components/trace-data-panel.es.js.map +1 -1
  436. package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
  437. package/dist/domains/traces/components/trace-id-button.es.js +1 -1
  438. package/dist/domains/traces/components/trace-messages-panel.cjs.js +1 -1
  439. package/dist/domains/traces/components/trace-messages-panel.es.js +1 -1
  440. package/dist/domains/traces/components/trace-status-value.cjs.js +1 -1
  441. package/dist/domains/traces/components/trace-status-value.cjs.js.map +1 -1
  442. package/dist/domains/traces/components/trace-status-value.es.js +1 -1
  443. package/dist/domains/traces/components/trace-status-value.es.js.map +1 -1
  444. package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
  445. package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
  446. package/dist/domains/traces/components/trace-thread-item-view.cjs.js +9 -2
  447. package/dist/domains/traces/components/trace-thread-item-view.cjs.js.map +1 -1
  448. package/dist/domains/traces/components/trace-thread-item-view.es.js +10 -3
  449. package/dist/domains/traces/components/trace-thread-item-view.es.js.map +1 -1
  450. package/dist/domains/traces/components/trace-thread-panel.cjs.js +1 -1
  451. package/dist/domains/traces/components/trace-thread-panel.es.js +1 -1
  452. package/dist/domains/traces/components/trace-time-range-chip.cjs.js +2 -2
  453. package/dist/domains/traces/components/trace-time-range-chip.es.js +2 -2
  454. package/dist/domains/traces/components/traces-error-content.cjs.js +1 -1
  455. package/dist/domains/traces/components/traces-error-content.es.js +1 -1
  456. package/dist/domains/traces/components/traces-list-mode-toggle.cjs.js +1 -1
  457. package/dist/domains/traces/components/traces-list-mode-toggle.es.js +1 -1
  458. package/dist/domains/traces/components/traces-list-view.cjs.js +2 -2
  459. package/dist/domains/traces/components/traces-list-view.es.js +2 -2
  460. package/dist/domains/traces/components/traces-page-skeleton.cjs.js +2 -0
  461. package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
  462. package/dist/domains/traces/components/traces-page-skeleton.es.js +2 -0
  463. package/dist/domains/traces/components/traces-page-skeleton.es.js.map +1 -1
  464. package/dist/domains/traces/hooks/use-trace-query.cjs.js +2 -2
  465. package/dist/domains/traces/hooks/use-trace-query.cjs.js.map +1 -1
  466. package/dist/domains/traces/hooks/use-trace-query.es.js +2 -2
  467. package/dist/domains/traces/hooks/use-trace-query.es.js.map +1 -1
  468. package/dist/domains/traces/trace-filters.cjs.js +5 -5
  469. package/dist/domains/traces/trace-filters.cjs.js.map +1 -1
  470. package/dist/domains/traces/trace-filters.es.js +5 -5
  471. package/dist/domains/traces/trace-filters.es.js.map +1 -1
  472. package/dist/domains/workflows/components/workflow-combobox.cjs.js +1 -1
  473. package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
  474. package/dist/domains/workflows/components/workflow-entity-header.cjs.js +1 -1
  475. package/dist/domains/workflows/components/workflow-entity-header.es.js +1 -1
  476. package/dist/domains/workflows/components/workflow-information.cjs.js +1 -1
  477. package/dist/domains/workflows/components/workflow-information.es.js +1 -1
  478. package/dist/domains/workflows/components/workflow-step-detail.cjs.js +3 -3
  479. package/dist/domains/workflows/components/workflow-step-detail.es.js +3 -3
  480. package/dist/domains/workflows/components/workflows-list/no-workflows-info.cjs.js +2 -2
  481. package/dist/domains/workflows/components/workflows-list/no-workflows-info.es.js +2 -2
  482. package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +3 -3
  483. package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js.map +1 -1
  484. package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +3 -3
  485. package/dist/domains/workflows/components/workflows-list/workflows-list.es.js.map +1 -1
  486. package/dist/domains/workflows/runs/workflow-run-list.cjs.js +2 -2
  487. package/dist/domains/workflows/runs/workflow-run-list.es.js +2 -2
  488. package/dist/domains/workflows/workflow/data/workflow-data-button.cjs.js +1 -1
  489. package/dist/domains/workflows/workflow/data/workflow-data-button.es.js +1 -1
  490. package/dist/domains/workflows/workflow/data/workflow-data-inspector.cjs.js +4 -4
  491. package/dist/domains/workflows/workflow/data/workflow-data-inspector.cjs.js.map +1 -1
  492. package/dist/domains/workflows/workflow/data/workflow-data-inspector.es.js +4 -4
  493. package/dist/domains/workflows/workflow/data/workflow-data-inspector.es.js.map +1 -1
  494. package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js +2 -2
  495. package/dist/domains/workflows/workflow/input/workflow-json-input.es.js +2 -2
  496. package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js +3 -3
  497. package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js +3 -3
  498. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.cjs.js +2 -2
  499. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +2 -2
  500. package/dist/domains/workflows/workflow/workflow-body-graph.cjs.js +1 -1
  501. package/dist/domains/workflows/workflow/workflow-body-graph.es.js +1 -1
  502. package/dist/domains/workflows/workflow/workflow-cancel-button.cjs.js +1 -1
  503. package/dist/domains/workflows/workflow/workflow-cancel-button.es.js +1 -1
  504. package/dist/domains/workflows/workflow/workflow-data-edge.cjs.js +1 -1
  505. package/dist/domains/workflows/workflow/workflow-data-edge.es.js +1 -1
  506. package/dist/domains/workflows/workflow/workflow-debug-step-controls.cjs.js +1 -1
  507. package/dist/domains/workflows/workflow/workflow-debug-step-controls.es.js +1 -1
  508. package/dist/domains/workflows/workflow/workflow-graph-boundary.cjs.js +3 -3
  509. package/dist/domains/workflows/workflow/workflow-graph-boundary.es.js +3 -3
  510. package/dist/domains/workflows/workflow/workflow-graph-inner.cjs.js +2 -2
  511. package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +2 -2
  512. package/dist/domains/workflows/workflow/workflow-graph-node.cjs.js +2 -2
  513. package/dist/domains/workflows/workflow/workflow-graph-node.es.js +2 -2
  514. package/dist/domains/workflows/workflow/workflow-input-data.cjs.js +1 -1
  515. package/dist/domains/workflows/workflow/workflow-input-data.es.js +1 -1
  516. package/dist/domains/workflows/workflow/workflow-map-config-dialog.cjs.js +3 -3
  517. package/dist/domains/workflows/workflow/workflow-map-config-dialog.es.js +3 -3
  518. package/dist/domains/workflows/workflow/workflow-nested-graph.cjs.js +3 -3
  519. package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +3 -3
  520. package/dist/domains/workflows/workflow/workflow-run-data.cjs.js +4 -4
  521. package/dist/domains/workflows/workflow/workflow-run-data.es.js +4 -4
  522. package/dist/domains/workflows/workflow/workflow-run-error.cjs.js +1 -1
  523. package/dist/domains/workflows/workflow/workflow-run-error.es.js +1 -1
  524. package/dist/domains/workflows/workflow/workflow-run-header.cjs.js +4 -4
  525. package/dist/domains/workflows/workflow/workflow-run-header.cjs.js.map +1 -1
  526. package/dist/domains/workflows/workflow/workflow-run-header.es.js +4 -4
  527. package/dist/domains/workflows/workflow/workflow-run-header.es.js.map +1 -1
  528. package/dist/domains/workflows/workflow/workflow-status.cjs.js +2 -2
  529. package/dist/domains/workflows/workflow/workflow-status.cjs.js.map +1 -1
  530. package/dist/domains/workflows/workflow/workflow-status.es.js +2 -2
  531. package/dist/domains/workflows/workflow/workflow-status.es.js.map +1 -1
  532. package/dist/domains/workflows/workflow/workflow-step-action-bar.cjs.js +3 -3
  533. package/dist/domains/workflows/workflow/workflow-step-action-bar.es.js +3 -3
  534. package/dist/domains/workflows/workflow/workflow-suspended-steps.cjs.js +2 -2
  535. package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +2 -2
  536. package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +3 -3
  537. package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +3 -3
  538. package/dist/domains/workflows/workflow/workflow-timeline-row.cjs.js +1 -1
  539. package/dist/domains/workflows/workflow/workflow-timeline-row.es.js +1 -1
  540. package/dist/domains/workflows/workflow/workflow-timeline.cjs.js +1 -1
  541. package/dist/domains/workflows/workflow/workflow-timeline.es.js +1 -1
  542. package/dist/domains/workflows/workflow/workflow-trigger-form.cjs.js +1 -1
  543. package/dist/domains/workflows/workflow/workflow-trigger-form.es.js +1 -1
  544. package/dist/domains/workflows/workflow/workflow-trigger-header.cjs.js +2 -2
  545. package/dist/domains/workflows/workflow/workflow-trigger-header.es.js +2 -2
  546. package/dist/domains/workflows/workflow-status-tone.cjs.js +2 -2
  547. package/dist/domains/workflows/workflow-status-tone.cjs.js.map +1 -1
  548. package/dist/domains/workflows/workflow-status-tone.es.js +2 -2
  549. package/dist/domains/workflows/workflow-status-tone.es.js.map +1 -1
  550. package/dist/{drawer-DXf50w71.js → drawer-BI3B_krl.js} +2 -2
  551. package/dist/{drawer-DXf50w71.js.map → drawer-BI3B_krl.js.map} +1 -1
  552. package/dist/{drawer-d81cZiSV.cjs → drawer-DnXudVbm.cjs} +2 -2
  553. package/dist/{drawer-d81cZiSV.cjs.map → drawer-DnXudVbm.cjs.map} +1 -1
  554. package/dist/ee/signals/components/entity-index-compact-grid.cjs.js +1 -1
  555. package/dist/ee/signals/components/entity-index-compact-grid.es.js +1 -1
  556. package/dist/ee/signals/components/entity-index-list.cjs.js +4 -2
  557. package/dist/ee/signals/components/entity-index-list.cjs.js.map +1 -1
  558. package/dist/ee/signals/components/entity-index-list.es.js +4 -2
  559. package/dist/ee/signals/components/entity-index-list.es.js.map +1 -1
  560. package/dist/ee/signals/components/signals-empty-state.cjs.js +1 -1
  561. package/dist/ee/signals/components/signals-empty-state.es.js +1 -1
  562. package/dist/ee/signals/components/trace-intelligence-entity-detail.cjs.js +1 -1
  563. package/dist/ee/signals/components/trace-intelligence-entity-detail.es.js +1 -1
  564. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +5 -4
  565. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js.map +1 -1
  566. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +5 -4
  567. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js.map +1 -1
  568. package/dist/ee/signals/examples-pager.cjs.js +1 -1
  569. package/dist/ee/signals/examples-pager.es.js +1 -1
  570. package/dist/ee/signals/flow-card.cjs.js +1 -1
  571. package/dist/ee/signals/flow-card.es.js +1 -1
  572. package/dist/ee/signals/noise-detail-panel.cjs.js +3 -3
  573. package/dist/ee/signals/noise-detail-panel.cjs.js.map +1 -1
  574. package/dist/ee/signals/noise-detail-panel.es.js +3 -3
  575. package/dist/ee/signals/noise-detail-panel.es.js.map +1 -1
  576. package/dist/ee/signals/sankey-signals.cjs.js +2 -2
  577. package/dist/ee/signals/sankey-signals.cjs.js.map +1 -1
  578. package/dist/ee/signals/sankey-signals.es.js +2 -2
  579. package/dist/ee/signals/sankey-signals.es.js.map +1 -1
  580. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +5 -5
  581. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +5 -5
  582. package/dist/ee/signals/settings/trace-signal-settings.cjs.js +3 -3
  583. package/dist/ee/signals/settings/trace-signal-settings.es.js +3 -3
  584. package/dist/ee/signals/signal-colors.cjs.js +3 -3
  585. package/dist/ee/signals/signal-colors.cjs.js.map +1 -1
  586. package/dist/ee/signals/signal-colors.es.js +3 -3
  587. package/dist/ee/signals/signal-colors.es.js.map +1 -1
  588. package/dist/ee/signals/signals-error-state.cjs.js +2 -2
  589. package/dist/ee/signals/signals-error-state.cjs.js.map +1 -1
  590. package/dist/ee/signals/signals-error-state.es.js +2 -2
  591. package/dist/ee/signals/signals-error-state.es.js.map +1 -1
  592. package/dist/ee/signals/snapshot-timeline.cjs.js +1 -1
  593. package/dist/ee/signals/snapshot-timeline.es.js +1 -1
  594. package/dist/ee/signals/theme-detail-panel.cjs.js +4 -4
  595. package/dist/ee/signals/theme-detail-panel.cjs.js.map +1 -1
  596. package/dist/ee/signals/theme-detail-panel.es.js +4 -4
  597. package/dist/ee/signals/theme-detail-panel.es.js.map +1 -1
  598. package/dist/ee/signals/theme-filter-banner.cjs.js +1 -1
  599. package/dist/ee/signals/theme-filter-banner.es.js +1 -1
  600. package/dist/ee/signals/trace-insight-view.cjs.js +4 -4
  601. package/dist/ee/signals/trace-insight-view.cjs.js.map +1 -1
  602. package/dist/ee/signals/trace-insight-view.es.js +4 -4
  603. package/dist/ee/signals/trace-insight-view.es.js.map +1 -1
  604. package/dist/ee/signals/view-mode-tab.cjs.js +1 -1
  605. package/dist/ee/signals/view-mode-tab.es.js +1 -1
  606. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +3 -3
  607. package/dist/ee/topics/components/topic-trace-summary-list.es.js +3 -3
  608. package/dist/{field-block-DpejZ6U6.js → field-block--PeppIRb.js} +10 -3
  609. package/dist/field-block--PeppIRb.js.map +1 -0
  610. package/dist/{field-block-BIDi9Bvc.cjs → field-block-DtaPqBa3.cjs} +10 -3
  611. package/dist/field-block-DtaPqBa3.cjs.map +1 -0
  612. package/dist/{field-block-error-msg-B6-wnlAz.cjs → field-block-error-msg-CkhEN6nU.cjs} +2 -2
  613. package/dist/{field-block-error-msg-B6-wnlAz.cjs.map → field-block-error-msg-CkhEN6nU.cjs.map} +1 -1
  614. package/dist/{field-block-error-msg-edlaudVx.js → field-block-error-msg-LXwhKzIq.js} +2 -2
  615. package/dist/{field-block-error-msg-edlaudVx.js.map → field-block-error-msg-LXwhKzIq.js.map} +1 -1
  616. package/dist/{filter-bar-chip-D4CSm9KP.cjs → filter-bar-chip-CBlHsz4A.cjs} +3 -3
  617. package/dist/{filter-bar-chip-D4CSm9KP.cjs.map → filter-bar-chip-CBlHsz4A.cjs.map} +1 -1
  618. package/dist/{filter-bar-chip-BNPOrSrD.js → filter-bar-chip-DFOtEvpW.js} +3 -3
  619. package/dist/{filter-bar-chip-BNPOrSrD.js.map → filter-bar-chip-DFOtEvpW.js.map} +1 -1
  620. package/dist/hooks/use-environment-variables-editor.cjs.js +6 -1
  621. package/dist/hooks/use-environment-variables-editor.cjs.js.map +1 -1
  622. package/dist/hooks/use-environment-variables-editor.es.js +6 -1
  623. package/dist/hooks/use-environment-variables-editor.es.js.map +1 -1
  624. package/dist/{input-group-B8bnoDrA.js → input-group-0G9ZX_cM.js} +2 -2
  625. package/dist/{input-group-B8bnoDrA.js.map → input-group-0G9ZX_cM.js.map} +1 -1
  626. package/dist/{input-group-I8YVM_Ps.cjs → input-group-BRhBfeHC.cjs} +2 -2
  627. package/dist/{input-group-I8YVM_Ps.cjs.map → input-group-BRhBfeHC.cjs.map} +1 -1
  628. package/dist/layout/tabbed-container.cjs.js +6 -6
  629. package/dist/layout/tabbed-container.es.js +6 -6
  630. package/dist/lib/form/components/array-element-wrapper.cjs.js +2 -2
  631. package/dist/lib/form/components/array-element-wrapper.cjs.js.map +1 -1
  632. package/dist/lib/form/components/array-element-wrapper.es.js +2 -2
  633. package/dist/lib/form/components/array-element-wrapper.es.js.map +1 -1
  634. package/dist/lib/form/components/array-wrapper.cjs.js +1 -1
  635. package/dist/lib/form/components/array-wrapper.es.js +1 -1
  636. package/dist/lib/form/components/boolean-field.cjs.js +1 -1
  637. package/dist/lib/form/components/boolean-field.es.js +1 -1
  638. package/dist/lib/form/components/date-field.cjs.js +1 -1
  639. package/dist/lib/form/components/date-field.es.js +1 -1
  640. package/dist/lib/form/components/error-message.cjs.js +1 -1
  641. package/dist/lib/form/components/error-message.es.js +1 -1
  642. package/dist/lib/form/components/field-wrapper.cjs.js +1 -1
  643. package/dist/lib/form/components/field-wrapper.es.js +1 -1
  644. package/dist/lib/form/components/form-submit-row.cjs.js +1 -1
  645. package/dist/lib/form/components/form-submit-row.es.js +1 -1
  646. package/dist/lib/form/components/object-wrapper.cjs.js +1 -1
  647. package/dist/lib/form/components/object-wrapper.cjs.js.map +1 -1
  648. package/dist/lib/form/components/object-wrapper.es.js +1 -1
  649. package/dist/lib/form/components/object-wrapper.es.js.map +1 -1
  650. package/dist/lib/form/components/record-field.cjs.js +1 -1
  651. package/dist/lib/form/components/record-field.es.js +1 -1
  652. package/dist/lib/form/components/select-field.cjs.js +1 -1
  653. package/dist/lib/form/components/select-field.es.js +1 -1
  654. package/dist/lib/form/components/submit-button.cjs.js +1 -1
  655. package/dist/lib/form/components/submit-button.es.js +1 -1
  656. package/dist/{list-search-DXb7HFX8.cjs → list-search-BzAIj0DB.cjs} +2 -2
  657. package/dist/{list-search-DXb7HFX8.cjs.map → list-search-BzAIj0DB.cjs.map} +1 -1
  658. package/dist/{list-search-9l8IEdxZ.js → list-search-DI1DH7vU.js} +2 -2
  659. package/dist/{list-search-9l8IEdxZ.js.map → list-search-DI1DH7vU.js.map} +1 -1
  660. package/dist/{logs-data-list-C77r2FOj.js → logs-data-list-ButZV-2H.js} +3 -3
  661. package/dist/{logs-data-list-C77r2FOj.js.map → logs-data-list-ButZV-2H.js.map} +1 -1
  662. package/dist/{logs-data-list-CEFyG1Xb.cjs → logs-data-list-CtHern11.cjs} +3 -3
  663. package/dist/{logs-data-list-CEFyG1Xb.cjs.map → logs-data-list-CtHern11.cjs.map} +1 -1
  664. package/dist/{main-sidebar-link-active-BNko0jHZ.cjs → main-sidebar-link-active-D8VSuJKx.cjs} +2 -2
  665. package/dist/{main-sidebar-link-active-BNko0jHZ.cjs.map → main-sidebar-link-active-D8VSuJKx.cjs.map} +1 -1
  666. package/dist/{main-sidebar-link-active-1_ktyA8Q.js → main-sidebar-link-active-buZAhlHo.js} +2 -2
  667. package/dist/{main-sidebar-link-active-1_ktyA8Q.js.map → main-sidebar-link-active-buZAhlHo.js.map} +1 -1
  668. package/dist/{markdown-renderer-CSwjfPaf.cjs → markdown-renderer-CZV6neya.cjs} +3 -3
  669. package/dist/{markdown-renderer-CSwjfPaf.cjs.map → markdown-renderer-CZV6neya.cjs.map} +1 -1
  670. package/dist/{markdown-renderer-Bl0V7FCo.js → markdown-renderer-Cy7Iwy1c.js} +3 -3
  671. package/dist/{markdown-renderer-Bl0V7FCo.js.map → markdown-renderer-Cy7Iwy1c.js.map} +1 -1
  672. package/dist/{message-copy-button-DP3U-xA-.js → message-copy-button-C_mFZ3Vg.js} +2 -2
  673. package/dist/{message-copy-button-DP3U-xA-.js.map → message-copy-button-C_mFZ3Vg.js.map} +1 -1
  674. package/dist/{message-copy-button-ClJBX9qx.cjs → message-copy-button-CqMR2T2t.cjs} +2 -2
  675. package/dist/{message-copy-button-ClJBX9qx.cjs.map → message-copy-button-CqMR2T2t.cjs.map} +1 -1
  676. package/dist/{metrics-card-CloSmyRQ.js → metrics-card-C1rTkbcn.js} +3 -3
  677. package/dist/metrics-card-C1rTkbcn.js.map +1 -0
  678. package/dist/{metrics-card-HmQJHDNa.cjs → metrics-card-D7J9JDgn.cjs} +3 -3
  679. package/dist/metrics-card-D7J9JDgn.cjs.map +1 -0
  680. package/dist/{metrics-kpi-card-CW24YjZp.cjs → metrics-kpi-card-1hbihR2T.cjs} +3 -3
  681. package/dist/metrics-kpi-card-1hbihR2T.cjs.map +1 -0
  682. package/dist/{metrics-kpi-card-DLDT28IB.js → metrics-kpi-card-CiB88L41.js} +3 -3
  683. package/dist/metrics-kpi-card-CiB88L41.js.map +1 -0
  684. package/dist/new/settings.cjs.js +1 -1
  685. package/dist/new/settings.es.js +1 -1
  686. package/dist/new/sidebar.cjs.js +3 -3
  687. package/dist/new/sidebar.cjs.js.map +1 -1
  688. package/dist/new/sidebar.es.js +4 -4
  689. package/dist/new/sidebar.es.js.map +1 -1
  690. package/dist/{notification-activity-B1_2BPe_.js → notification-activity-CFR_b8eA.js} +4 -4
  691. package/dist/notification-activity-CFR_b8eA.js.map +1 -0
  692. package/dist/{notification-activity-BAn2fhYd.cjs → notification-activity-Dk50wcE4.cjs} +4 -4
  693. package/dist/notification-activity-Dk50wcE4.cjs.map +1 -0
  694. package/dist/{plan-DJfH1c_u.js → plan-CvTAGIWv.js} +10 -55
  695. package/dist/plan-CvTAGIWv.js.map +1 -0
  696. package/dist/{plan-ZKAT5frg.cjs → plan-DsfNN3a0.cjs} +10 -55
  697. package/dist/plan-DsfNN3a0.cjs.map +1 -0
  698. package/dist/primitives/menu-item.cjs.js +2 -2
  699. package/dist/primitives/menu-item.cjs.js.map +1 -1
  700. package/dist/primitives/menu-item.es.js +2 -2
  701. package/dist/primitives/menu-item.es.js.map +1 -1
  702. package/dist/primitives/trigger-button.cjs.js +1 -1
  703. package/dist/primitives/trigger-button.es.js +1 -1
  704. package/dist/{property-filter-applied-D0F0BYMY.cjs → property-filter-applied-Bp2z4KBv.cjs} +2 -2
  705. package/dist/{property-filter-applied-D0F0BYMY.cjs.map → property-filter-applied-Bp2z4KBv.cjs.map} +1 -1
  706. package/dist/{property-filter-applied-k0TOa9hf.js → property-filter-applied-C9verwDR.js} +2 -2
  707. package/dist/{property-filter-applied-k0TOa9hf.js.map → property-filter-applied-C9verwDR.js.map} +1 -1
  708. package/dist/{reasoning-activity-CO0Ab1Za.cjs → reasoning-activity-BVviIdMe.cjs} +3 -3
  709. package/dist/{reasoning-activity-CO0Ab1Za.cjs.map → reasoning-activity-BVviIdMe.cjs.map} +1 -1
  710. package/dist/{reasoning-activity-D3oCzL58.js → reasoning-activity-OM1-hbCV.js} +3 -3
  711. package/dist/{reasoning-activity-D3oCzL58.js.map → reasoning-activity-OM1-hbCV.js.map} +1 -1
  712. package/dist/{relative-timestamp-D-IvjsVb.cjs → relative-timestamp-BlmN8Vjn.cjs} +2 -2
  713. package/dist/{relative-timestamp-D-IvjsVb.cjs.map → relative-timestamp-BlmN8Vjn.cjs.map} +1 -1
  714. package/dist/{relative-timestamp-wERh5vUE.js → relative-timestamp-Cnp4VeLp.js} +2 -2
  715. package/dist/{relative-timestamp-wERh5vUE.js.map → relative-timestamp-Cnp4VeLp.js.map} +1 -1
  716. package/dist/resize/panel-drawer.cjs.js +1 -1
  717. package/dist/resize/panel-drawer.es.js +1 -1
  718. package/dist/{sankey-chart-D-xMiO2u.js → sankey-chart-D4Idjtth.js} +2 -2
  719. package/dist/sankey-chart-D4Idjtth.js.map +1 -0
  720. package/dist/{sankey-chart-S7iF7d0E.cjs → sankey-chart-DfVMZpz5.cjs} +2 -2
  721. package/dist/sankey-chart-DfVMZpz5.cjs.map +1 -0
  722. package/dist/{search-field-block-Cj9lJsYi.js → search-field-block-BPJh5yuW.js} +3 -3
  723. package/dist/{search-field-block-Cj9lJsYi.js.map → search-field-block-BPJh5yuW.js.map} +1 -1
  724. package/dist/{search-field-block-B1eqMV8x.cjs → search-field-block-DRa-ZNQj.cjs} +3 -3
  725. package/dist/{search-field-block-B1eqMV8x.cjs.map → search-field-block-DRa-ZNQj.cjs.map} +1 -1
  726. package/dist/{section-B5g_0tUo.js → section-BfEsNViI.js} +2 -2
  727. package/dist/{section-B5g_0tUo.js.map → section-BfEsNViI.js.map} +1 -1
  728. package/dist/{section-Bbp-NIR9.cjs → section-dBeXxS69.cjs} +2 -2
  729. package/dist/{section-Bbp-NIR9.cjs.map → section-dBeXxS69.cjs.map} +1 -1
  730. package/dist/segmented-control--I3IgW21.cjs +157 -0
  731. package/dist/segmented-control--I3IgW21.cjs.map +1 -0
  732. package/dist/segmented-control-BxeiypPR.js +135 -0
  733. package/dist/segmented-control-BxeiypPR.js.map +1 -0
  734. package/dist/{select-C0ZGSJYa.cjs → select-DBY9LQFQ.cjs} +2 -2
  735. package/dist/{select-C0ZGSJYa.cjs.map → select-DBY9LQFQ.cjs.map} +1 -1
  736. package/dist/{select-ch8imm15.js → select-DZeNf-kI.js} +2 -2
  737. package/dist/{select-ch8imm15.js.map → select-DZeNf-kI.js.map} +1 -1
  738. package/dist/{select-field-block-_ZUzUs7l.js → select-field-block-C_x9wNpU.js} +3 -3
  739. package/dist/{select-field-block-_ZUzUs7l.js.map → select-field-block-C_x9wNpU.js.map} +1 -1
  740. package/dist/{select-field-block-Dy_N3tWv.cjs → select-field-block-D8AMzoQT.cjs} +3 -3
  741. package/dist/{select-field-block-Dy_N3tWv.cjs.map → select-field-block-D8AMzoQT.cjs.map} +1 -1
  742. package/dist/{settings-row-2hq9Ww8Z.js → settings-row-C1JZDdz_.js} +4 -4
  743. package/dist/settings-row-C1JZDdz_.js.map +1 -0
  744. package/dist/{settings-row-BMRADph-.cjs → settings-row-C7YKfUgY.cjs} +4 -4
  745. package/dist/settings-row-C7YKfUgY.cjs.map +1 -0
  746. package/dist/{side-dialog-D2O3Y7GB.js → side-dialog-DCzCcZs6.js} +5 -5
  747. package/dist/{side-dialog-D2O3Y7GB.js.map → side-dialog-DCzCcZs6.js.map} +1 -1
  748. package/dist/{side-dialog-7P9aEC4v.cjs → side-dialog-DFnD1498.cjs} +5 -5
  749. package/dist/{side-dialog-7P9aEC4v.cjs.map → side-dialog-DFnD1498.cjs.map} +1 -1
  750. package/dist/{signal-activity-1REUU8T_.js → signal-activity-DW2ExjIp.js} +3 -3
  751. package/dist/{signal-activity-1REUU8T_.js.map → signal-activity-DW2ExjIp.js.map} +1 -1
  752. package/dist/{signal-activity-4OJb4kp6.cjs → signal-activity-byCTRP86.cjs} +3 -3
  753. package/dist/{signal-activity-4OJb4kp6.cjs.map → signal-activity-byCTRP86.cjs.map} +1 -1
  754. package/dist/{span-payload-primitives-CbXrqcs-.cjs → span-payload-primitives-D0mhsndj.cjs} +3 -3
  755. package/dist/{span-payload-primitives-CbXrqcs-.cjs.map → span-payload-primitives-D0mhsndj.cjs.map} +1 -1
  756. package/dist/{span-payload-primitives-CEflnpwW.js → span-payload-primitives-DL1Kr0cu.js} +3 -3
  757. package/dist/{span-payload-primitives-CEflnpwW.js.map → span-payload-primitives-DL1Kr0cu.js.map} +1 -1
  758. package/dist/src/domains/chat/tools/tool-card-kind.d.ts +2 -0
  759. package/dist/src/domains/metrics/components/metrics-utils.d.ts +1 -1
  760. package/dist/src/domains/metrics/hooks/use-metrics-filters.d.ts +0 -1
  761. package/dist/src/domains/metrics/metrics-filters.d.ts +0 -2
  762. package/dist/src/domains/traces/components/trace-data-panel-view.stories.d.ts +2 -0
  763. package/dist/src/domains/traces/hooks/use-trace-query.d.ts +1 -1
  764. package/dist/src/ds/components/Badge/Badge.d.ts +3 -3
  765. package/dist/src/ds/components/ButtonsGroup/buttons-group.d.ts +1 -0
  766. package/dist/src/ds/components/ButtonsGroup/buttons-group.stories.d.ts +0 -6
  767. package/dist/src/ds/components/CodeEditor/variable-autocomplete-extension.d.ts +6 -0
  768. package/dist/src/ds/components/CollapsibleBox/collapsible-box.d.ts +10 -0
  769. package/dist/src/ds/components/CollapsibleBox/collapsible-box.stories.d.ts +11 -0
  770. package/dist/src/ds/components/CollapsibleBox/index.d.ts +2 -0
  771. package/dist/src/ds/components/CollapsibleBox/use-collapsible-box.d.ts +14 -0
  772. package/dist/src/ds/components/Combobox/combobox-styles.d.ts +1 -1
  773. package/dist/src/ds/components/SegmentedControl/index.d.ts +1 -0
  774. package/dist/src/ds/components/SegmentedControl/segmented-control.d.ts +38 -0
  775. package/dist/src/ds/components/SegmentedControl/segmented-control.stories.d.ts +11 -0
  776. package/dist/src/ds/components/ThemeToggle/theme-toggle.d.ts +12 -30
  777. package/dist/src/ds/components/ThemeToggle/theme-toggle.stories.d.ts +0 -1
  778. package/dist/src/ds/components/TokenBudget/tones.d.ts +1 -1
  779. package/dist/src/ds/components/Workflow/cards/workflow-card-badge-utils.d.ts +2 -2
  780. package/dist/src/ds/components/ai/plan/plan.d.ts +1 -1
  781. package/dist/src/ds/tokens/colors.d.ts +31 -28
  782. package/dist/src/hooks/use-environment-variables-editor.d.ts +1 -1
  783. package/dist/src/lib/colors.d.ts +1 -1
  784. package/dist/style.css +517 -184
  785. package/dist/{tabs-content-h2qqD8t-.js → tabs-content-CwbkTutf.js} +2 -2
  786. package/dist/{tabs-content-h2qqD8t-.js.map → tabs-content-CwbkTutf.js.map} +1 -1
  787. package/dist/{tabs-content-DQNRMjup.cjs → tabs-content-DnscxcLI.cjs} +2 -2
  788. package/dist/{tabs-content-DQNRMjup.cjs.map → tabs-content-DnscxcLI.cjs.map} +1 -1
  789. package/dist/{tabs-root-BqC8X_h6.cjs → tabs-root-C-ePF1y9.cjs} +4 -4
  790. package/dist/tabs-root-C-ePF1y9.cjs.map +1 -0
  791. package/dist/{tabs-root-4vL8SHCO.js → tabs-root-lrZZ3KwH.js} +4 -4
  792. package/dist/tabs-root-lrZZ3KwH.js.map +1 -0
  793. package/dist/{tabs-tab-lm4xyjtD.cjs → tabs-tab-BmIBFifi.cjs} +2 -2
  794. package/dist/{tabs-tab-lm4xyjtD.cjs.map → tabs-tab-BmIBFifi.cjs.map} +1 -1
  795. package/dist/{tabs-tab-7e2as-AV.js → tabs-tab-DoPSW-1s.js} +2 -2
  796. package/dist/{tabs-tab-7e2as-AV.js.map → tabs-tab-DoPSW-1s.js.map} +1 -1
  797. package/dist/{text-field-block-DYOWjPgO.cjs → text-field-block-DUntfMPu.cjs} +2 -2
  798. package/dist/{text-field-block-DYOWjPgO.cjs.map → text-field-block-DUntfMPu.cjs.map} +1 -1
  799. package/dist/{text-field-block-DJsOk8dJ.js → text-field-block-DZaGiu5D.js} +2 -2
  800. package/dist/{text-field-block-DJsOk8dJ.js.map → text-field-block-DZaGiu5D.js.map} +1 -1
  801. package/dist/{textarea-field-block-DqTd31gF.js → textarea-field-block-BscOSlvI.js} +2 -2
  802. package/dist/{textarea-field-block-DqTd31gF.js.map → textarea-field-block-BscOSlvI.js.map} +1 -1
  803. package/dist/{textarea-field-block-C5fPL2Hn.cjs → textarea-field-block-CKAhmLrz.cjs} +2 -2
  804. package/dist/{textarea-field-block-C5fPL2Hn.cjs.map → textarea-field-block-CKAhmLrz.cjs.map} +1 -1
  805. package/dist/{thread-list-DGI6M6if.js → thread-list-BTpezI4f.js} +2 -2
  806. package/dist/{thread-list-DGI6M6if.js.map → thread-list-BTpezI4f.js.map} +1 -1
  807. package/dist/{thread-list-DwASH1Vl.cjs → thread-list-Drcptd4x.cjs} +2 -2
  808. package/dist/{thread-list-DwASH1Vl.cjs.map → thread-list-Drcptd4x.cjs.map} +1 -1
  809. package/dist/{time-picker-CfZbLgMm.js → time-picker-BElZALzM.js} +2 -2
  810. package/dist/{time-picker-CfZbLgMm.js.map → time-picker-BElZALzM.js.map} +1 -1
  811. package/dist/{time-picker-C0DCPWpR.cjs → time-picker-_QJdolkZ.cjs} +2 -2
  812. package/dist/{time-picker-C0DCPWpR.cjs.map → time-picker-_QJdolkZ.cjs.map} +1 -1
  813. package/dist/tokens.cjs.js +31 -28
  814. package/dist/tokens.cjs.js.map +1 -1
  815. package/dist/tokens.es.js +31 -28
  816. package/dist/tokens.es.js.map +1 -1
  817. package/dist/{tones-DVtXIMPY.js → tones-RD3VjqiN.js} +2 -2
  818. package/dist/tones-RD3VjqiN.js.map +1 -0
  819. package/dist/{tones-BRAQR5Yb.cjs → tones-koH7QNLH.cjs} +2 -2
  820. package/dist/tones-koH7QNLH.cjs.map +1 -0
  821. package/dist/{tool-approval-xZvYiuBP.js → tool-approval-BNJ6MpnV.js} +3 -3
  822. package/dist/tool-approval-BNJ6MpnV.js.map +1 -0
  823. package/dist/{tool-approval-BAER9nxR.cjs → tool-approval-DOPxugSv.cjs} +3 -3
  824. package/dist/tool-approval-DOPxugSv.cjs.map +1 -0
  825. package/dist/{tool-call-arguments-D7PMJ6vj.js → tool-call-arguments-B1MghuMZ.js} +3 -3
  826. package/dist/{tool-call-arguments-D7PMJ6vj.js.map → tool-call-arguments-B1MghuMZ.js.map} +1 -1
  827. package/dist/{tool-call-arguments-ynBfg2dY.cjs → tool-call-arguments-CQYR65FB.cjs} +3 -3
  828. package/dist/{tool-call-arguments-ynBfg2dY.cjs.map → tool-call-arguments-CQYR65FB.cjs.map} +1 -1
  829. package/dist/{tool-call-group-9Dtupqev.cjs → tool-call-group-D_ioE9hT.cjs} +3 -3
  830. package/dist/tool-call-group-D_ioE9hT.cjs.map +1 -0
  831. package/dist/{tool-call-group-DJX7eUYY.js → tool-call-group-ZuYxpyDs.js} +3 -3
  832. package/dist/tool-call-group-ZuYxpyDs.js.map +1 -0
  833. package/dist/{tool-call-mono-gKG9Ek1m.js → tool-call-mono-CC6uzvhS.js} +2 -2
  834. package/dist/{tool-call-mono-gKG9Ek1m.js.map → tool-call-mono-CC6uzvhS.js.map} +1 -1
  835. package/dist/{tool-call-mono-DFSfVZ6E.cjs → tool-call-mono-DXtb4UMm.cjs} +2 -2
  836. package/dist/{tool-call-mono-DFSfVZ6E.cjs.map → tool-call-mono-DXtb4UMm.cjs.map} +1 -1
  837. package/dist/{tool-call-output-DEoCE_Xn.js → tool-call-output-COq3kB-f.js} +3 -3
  838. package/dist/tool-call-output-COq3kB-f.js.map +1 -0
  839. package/dist/{tool-call-output-Dl4sVfCy.cjs → tool-call-output-ht3k1qLQ.cjs} +3 -3
  840. package/dist/tool-call-output-ht3k1qLQ.cjs.map +1 -0
  841. package/dist/{tool-card-BA1YcDoS.js → tool-card-C_K5PwrK.js} +5 -5
  842. package/dist/tool-card-C_K5PwrK.js.map +1 -0
  843. package/dist/{tool-card-DRqhTx-u.cjs → tool-card-rxo27sve.cjs} +5 -5
  844. package/dist/tool-card-rxo27sve.cjs.map +1 -0
  845. package/dist/{traces-data-list-CU93pUfj.cjs → traces-data-list-BsAYYJ9t.cjs} +4 -4
  846. package/dist/{traces-data-list-CU93pUfj.cjs.map → traces-data-list-BsAYYJ9t.cjs.map} +1 -1
  847. package/dist/{traces-data-list-DaedGcID.js → traces-data-list-CnNpGVRN.js} +4 -4
  848. package/dist/{traces-data-list-DaedGcID.js.map → traces-data-list-CnNpGVRN.js.map} +1 -1
  849. package/dist/use-collapsible-box-CCvsF_a9.js +54 -0
  850. package/dist/use-collapsible-box-CCvsF_a9.js.map +1 -0
  851. package/dist/use-collapsible-box-CbQOkokQ.cjs +58 -0
  852. package/dist/use-collapsible-box-CbQOkokQ.cjs.map +1 -0
  853. package/dist/{use-workflow-graph-runtime-D0ODPlNB.cjs → use-workflow-graph-runtime-CIs2HzoP.cjs} +3 -3
  854. package/dist/{use-workflow-graph-runtime-D0ODPlNB.cjs.map → use-workflow-graph-runtime-CIs2HzoP.cjs.map} +1 -1
  855. package/dist/{use-workflow-graph-runtime-XL5zreeR.js → use-workflow-graph-runtime-CexS1ECI.js} +3 -3
  856. package/dist/{use-workflow-graph-runtime-XL5zreeR.js.map → use-workflow-graph-runtime-CexS1ECI.js.map} +1 -1
  857. package/dist/utils/colors.cjs.js +2 -2
  858. package/dist/utils/colors.cjs.js.map +1 -1
  859. package/dist/utils/colors.es.js +2 -2
  860. package/dist/utils/colors.es.js.map +1 -1
  861. package/dist/{workflow-code-dialog-content-vLneZlMd.cjs → workflow-code-dialog-content-BFm2IWDl.cjs} +3 -3
  862. package/dist/{workflow-code-dialog-content-vLneZlMd.cjs.map → workflow-code-dialog-content-BFm2IWDl.cjs.map} +1 -1
  863. package/dist/{workflow-code-dialog-content-Iz2Omi1P.js → workflow-code-dialog-content-BM4ZnrUr.js} +3 -3
  864. package/dist/{workflow-code-dialog-content-Iz2Omi1P.js.map → workflow-code-dialog-content-BM4ZnrUr.js.map} +1 -1
  865. package/dist/{workflow-condition-card-B0Va5Amx.js → workflow-condition-card-3J-As62x.js} +10 -10
  866. package/dist/{workflow-condition-card-B0Va5Amx.js.map → workflow-condition-card-3J-As62x.js.map} +1 -1
  867. package/dist/{workflow-condition-card-CfjhZb0m.cjs → workflow-condition-card-BjEAp0t6.cjs} +10 -10
  868. package/dist/{workflow-condition-card-CfjhZb0m.cjs.map → workflow-condition-card-BjEAp0t6.cjs.map} +1 -1
  869. package/dist/{workflow-data-edge-view-DXeWURnc.cjs → workflow-data-edge-view-7f8O6pVW.cjs} +2 -2
  870. package/dist/{workflow-data-edge-view-DXeWURnc.cjs.map → workflow-data-edge-view-7f8O6pVW.cjs.map} +1 -1
  871. package/dist/{workflow-data-edge-view-o7akvbpB.js → workflow-data-edge-view-BpGLV-at.js} +2 -2
  872. package/dist/{workflow-data-edge-view-o7akvbpB.js.map → workflow-data-edge-view-BpGLV-at.js.map} +1 -1
  873. package/dist/{workflow-debug-controls-Bcb4vcek.cjs → workflow-debug-controls-VbxiluNZ.cjs} +3 -3
  874. package/dist/{workflow-debug-controls-Bcb4vcek.cjs.map → workflow-debug-controls-VbxiluNZ.cjs.map} +1 -1
  875. package/dist/{workflow-debug-controls-DULCFa4s.js → workflow-debug-controls-tty6gLX2.js} +3 -3
  876. package/dist/{workflow-debug-controls-DULCFa4s.js.map → workflow-debug-controls-tty6gLX2.js.map} +1 -1
  877. package/dist/{workflow-edge-data-button-CX-eSbSB.cjs → workflow-edge-data-button-BOVRo4xO.cjs} +4 -4
  878. package/dist/{workflow-edge-data-button-CX-eSbSB.cjs.map → workflow-edge-data-button-BOVRo4xO.cjs.map} +1 -1
  879. package/dist/{workflow-edge-data-button-BuZzeN2n.js → workflow-edge-data-button-C6eyWbcG.js} +4 -4
  880. package/dist/{workflow-edge-data-button-BuZzeN2n.js.map → workflow-edge-data-button-C6eyWbcG.js.map} +1 -1
  881. package/dist/{workflow-step-action-Cf_XmOwj.js → workflow-step-action-B3coZwPr.js} +3 -3
  882. package/dist/{workflow-step-action-Cf_XmOwj.js.map → workflow-step-action-B3coZwPr.js.map} +1 -1
  883. package/dist/{workflow-step-action-JMkWtObA.cjs → workflow-step-action-COOlMQGX.cjs} +3 -3
  884. package/dist/{workflow-step-action-JMkWtObA.cjs.map → workflow-step-action-COOlMQGX.cjs.map} +1 -1
  885. package/package.json +10 -10
  886. package/theme/colors.css +66 -66
  887. package/theme/data-viz.css +3 -3
  888. package/theme/status.css +89 -71
  889. package/theme/surfaces.css +4 -1
  890. package/dist/Badge-H8K5WrXg.cjs.map +0 -1
  891. package/dist/Badge-Q_pCeeGW.js.map +0 -1
  892. package/dist/Button-BnmR2HRc.cjs.map +0 -1
  893. package/dist/Button-C6eUqcPI.js.map +0 -1
  894. package/dist/EmptyState-CJ5KC4Db.cjs.map +0 -1
  895. package/dist/EmptyState-CynkaZd1.js.map +0 -1
  896. package/dist/activity-8egTNbaI.cjs.map +0 -1
  897. package/dist/activity-Duth8KP_.js.map +0 -1
  898. package/dist/ask-user-Crg1O-o6.js.map +0 -1
  899. package/dist/ask-user-DJXmLJzy.cjs.map +0 -1
  900. package/dist/code-editor-BXchPl_F.cjs.map +0 -1
  901. package/dist/code-editor-Cltwid7c.js.map +0 -1
  902. package/dist/data-code-section-Bd2Xnckz.js.map +0 -1
  903. package/dist/data-code-section-D5b6_jcB.cjs.map +0 -1
  904. package/dist/field-block-BIDi9Bvc.cjs.map +0 -1
  905. package/dist/field-block-DpejZ6U6.js.map +0 -1
  906. package/dist/metrics-card-CloSmyRQ.js.map +0 -1
  907. package/dist/metrics-card-HmQJHDNa.cjs.map +0 -1
  908. package/dist/metrics-kpi-card-CW24YjZp.cjs.map +0 -1
  909. package/dist/metrics-kpi-card-DLDT28IB.js.map +0 -1
  910. package/dist/notification-activity-B1_2BPe_.js.map +0 -1
  911. package/dist/notification-activity-BAn2fhYd.cjs.map +0 -1
  912. package/dist/plan-DJfH1c_u.js.map +0 -1
  913. package/dist/plan-ZKAT5frg.cjs.map +0 -1
  914. package/dist/sankey-chart-D-xMiO2u.js.map +0 -1
  915. package/dist/sankey-chart-S7iF7d0E.cjs.map +0 -1
  916. package/dist/settings-row-2hq9Ww8Z.js.map +0 -1
  917. package/dist/settings-row-BMRADph-.cjs.map +0 -1
  918. package/dist/tabs-root-4vL8SHCO.js.map +0 -1
  919. package/dist/tabs-root-BqC8X_h6.cjs.map +0 -1
  920. package/dist/tones-BRAQR5Yb.cjs.map +0 -1
  921. package/dist/tones-DVtXIMPY.js.map +0 -1
  922. package/dist/tool-approval-BAER9nxR.cjs.map +0 -1
  923. package/dist/tool-approval-xZvYiuBP.js.map +0 -1
  924. package/dist/tool-call-group-9Dtupqev.cjs.map +0 -1
  925. package/dist/tool-call-group-DJX7eUYY.js.map +0 -1
  926. package/dist/tool-call-output-DEoCE_Xn.js.map +0 -1
  927. package/dist/tool-call-output-Dl4sVfCy.cjs.map +0 -1
  928. package/dist/tool-card-BA1YcDoS.js.map +0 -1
  929. package/dist/tool-card-DRqhTx-u.cjs.map +0 -1
@@ -1,9 +1,11 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { Minimize2, Maximize2 } from 'lucide-react';
2
3
  import { useState } from 'react';
3
4
  import { SpanPayloadJson } from './span-payload-json.es.js';
4
- import { B as Button } from '../../../../Button-C6eUqcPI.js';
5
+ import { B as Button } from '../../../../Button-D43ghVKt.js';
5
6
  import { B as ButtonsGroup } from '../../../../buttons-group-DsZgrZBZ.js';
6
- import { C as CopyButton } from '../../../../copy-button-DbmsTUum.js';
7
+ import { u as useCollapsibleBox, C as CollapsibleBox } from '../../../../use-collapsible-box-CCvsF_a9.js';
8
+ import { C as CopyButton } from '../../../../copy-button-DH8xtrWz.js';
7
9
  import { D as DataPanelSectionHeading } from '../../../../data-panel-section-heading-CXD1skJD.js';
8
10
  import { c as cn } from '../../../../cn-65Adrsfj.js';
9
11
 
@@ -40,6 +42,7 @@ function SpanPayloadSection({
40
42
  className
41
43
  }) {
42
44
  const [view, setView] = useState(defaultView);
45
+ const box = useCollapsibleBox();
43
46
  if (raw == null) return null;
44
47
  const hasRich = hasPreview && children != null;
45
48
  const showJson = !hasRich || view === "raw";
@@ -53,11 +56,21 @@ function SpanPayloadSection({
53
56
  /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-between gap-2", children: [
54
57
  /* @__PURE__ */ jsx(DataPanelSectionHeading, { icon, className: layout === "details" ? "text-meta" : void 0, children: title }),
55
58
  /* @__PURE__ */ jsxs("div", { className: "ml-auto flex items-center gap-2", children: [
59
+ (box.isClipped || box.isExpanded) && /* @__PURE__ */ jsx(
60
+ Button,
61
+ {
62
+ size: "sm",
63
+ variant: "ghost",
64
+ icon: box.isExpanded ? /* @__PURE__ */ jsx(Minimize2, {}) : /* @__PURE__ */ jsx(Maximize2, {}),
65
+ onClick: box.toggleExpanded,
66
+ children: box.isExpanded ? "Collapse" : "Expand"
67
+ }
68
+ ),
56
69
  /* @__PURE__ */ jsx(CopyButton, { content: JSON.stringify(raw, null, 2), size: "sm", variant: "ghost" }),
57
70
  hasRich && /* @__PURE__ */ jsx(ViewToggle, { view, onChange: setView })
58
71
  ] })
59
72
  ] }),
60
- /* @__PURE__ */ jsx("div", { className: "min-w-0", children: showJson ? /* @__PURE__ */ jsx(SpanPayloadJson, { value: raw }) : children })
73
+ /* @__PURE__ */ jsx(CollapsibleBox, { state: box, children: showJson ? /* @__PURE__ */ jsx(SpanPayloadJson, { value: raw }) : children })
61
74
  ]
62
75
  }
63
76
  );
@@ -1 +1 @@
1
- {"version":3,"file":"span-payload-section.es.js","sources":["../../../../../src/domains/traces/components/span-payload/span-payload-section.tsx"],"sourcesContent":["import { useState } from 'react';\nimport type { ReactNode } from 'react';\nimport { SpanPayloadJson } from './span-payload-json';\nimport { Button } from '@/ds/components/Button';\nimport { ButtonsGroup } from '@/ds/components/ButtonsGroup';\nimport { CopyButton } from '@/ds/components/CopyButton';\nimport { DataPanelSectionHeading } from '@/ds/components/DataPanel/data-panel-section-heading';\nimport { cn } from '@/lib/utils';\n\nexport type SpanPayloadView = 'rich' | 'raw';\n\nexport interface SpanPayloadSectionProps {\n title: string;\n icon?: ReactNode;\n /** The payload as stored; shown as JSON in the Raw view. */\n raw: unknown;\n /** Whether a dedicated presentation exists rather than a JSON fallback. */\n hasPreview?: boolean;\n /**\n * The human-readable rendering. `null` when the payload has no rich form\n * (JSON fallback): the section then shows Raw only and hides the toggle.\n */\n children: ReactNode;\n /** `panel` matches `DataPanel.CodeSection`; `details` matches `DataDetailsPanel.CodeSection`. */\n layout?: 'panel' | 'details';\n defaultView?: SpanPayloadView;\n className?: string;\n}\n\nfunction ViewToggle({ view, onChange }: { view: SpanPayloadView; onChange: (view: SpanPayloadView) => void }) {\n return (\n <ButtonsGroup size=\"sm\" aria-label=\"Payload view\" data-slot=\"span-payload-view-toggle\">\n <Button\n variant={view === 'rich' ? 'primary' : 'default'}\n aria-pressed={view === 'rich'}\n onClick={() => onChange('rich')}\n >\n Preview\n </Button>\n <Button\n variant={view === 'raw' ? 'primary' : 'default'}\n aria-pressed={view === 'raw'}\n onClick={() => onChange('raw')}\n >\n JSON\n </Button>\n </ButtonsGroup>\n );\n}\n\n/**\n * A span payload section with a Preview / JSON button group. All JSON views share\n * the same syntax highlighting while preserving the stored payload.\n */\nexport function SpanPayloadSection({\n title,\n icon,\n raw,\n hasPreview = true,\n children,\n layout = 'panel',\n defaultView = 'rich',\n className,\n}: SpanPayloadSectionProps) {\n const [view, setView] = useState<SpanPayloadView>(defaultView);\n if (raw == null) return null;\n\n const hasRich = hasPreview && children != null;\n const showJson = !hasRich || view === 'raw';\n\n return (\n <div\n data-slot=\"span-payload-section\"\n data-view={showJson ? 'raw' : 'rich'}\n className={cn('flex flex-col gap-2', className)}\n >\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <DataPanelSectionHeading icon={icon} className={layout === 'details' ? 'text-meta' : undefined}>\n {title}\n </DataPanelSectionHeading>\n <div className=\"ml-auto flex items-center gap-2\">\n <CopyButton content={JSON.stringify(raw, null, 2)} size=\"sm\" variant=\"ghost\" />\n {hasRich && <ViewToggle view={view} onChange={setView} />}\n </div>\n </div>\n <div className=\"min-w-0\">{showJson ? <SpanPayloadJson value={raw} /> : children}</div>\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;AA6BA,SAAS,UAAA,CAAW,EAAE,IAAA,EAAM,QAAA,EAAS,EAAyE;AAC5G,EAAA,4BACG,YAAA,EAAA,EAAa,IAAA,EAAK,MAAK,YAAA,EAAW,cAAA,EAAe,aAAU,0BAAA,EAC1D,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,IAAA,KAAS,MAAA,GAAS,SAAA,GAAY,SAAA;AAAA,QACvC,gBAAc,IAAA,KAAS,MAAA;AAAA,QACvB,OAAA,EAAS,MAAM,QAAA,CAAS,MAAM,CAAA;AAAA,QAC/B,QAAA,EAAA;AAAA;AAAA,KAED;AAAA,oBACA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,IAAA,KAAS,KAAA,GAAQ,SAAA,GAAY,SAAA;AAAA,QACtC,gBAAc,IAAA,KAAS,KAAA;AAAA,QACvB,OAAA,EAAS,MAAM,QAAA,CAAS,KAAK,CAAA;AAAA,QAC9B,QAAA,EAAA;AAAA;AAAA;AAED,GAAA,EACF,CAAA;AAEJ;AAMO,SAAS,kBAAA,CAAmB;AAAA,EACjC,KAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAA;AAAA,EACA,UAAA,GAAa,IAAA;AAAA,EACb,QAAA;AAAA,EACA,MAAA,GAAS,OAAA;AAAA,EACT,WAAA,GAAc,MAAA;AAAA,EACd;AACF,CAAA,EAA4B;AAC1B,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAA0B,WAAW,CAAA;AAC7D,EAAA,IAAI,GAAA,IAAO,MAAM,OAAO,IAAA;AAExB,EAAA,MAAM,OAAA,GAAU,cAAc,QAAA,IAAY,IAAA;AAC1C,EAAA,MAAM,QAAA,GAAW,CAAC,OAAA,IAAW,IAAA,KAAS,KAAA;AAEtC,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,sBAAA;AAAA,MACV,WAAA,EAAW,WAAW,KAAA,GAAQ,MAAA;AAAA,MAC9B,SAAA,EAAW,EAAA,CAAG,qBAAA,EAAuB,SAAS,CAAA;AAAA,MAE9C,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,mDAAA,EACb,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,2BAAwB,IAAA,EAAY,SAAA,EAAW,WAAW,SAAA,GAAY,WAAA,GAAc,QAClF,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,0BACA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iCAAA,EACb,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,UAAA,EAAA,EAAW,OAAA,EAAS,IAAA,CAAK,SAAA,CAAU,GAAA,EAAK,IAAA,EAAM,CAAC,CAAA,EAAG,IAAA,EAAK,IAAA,EAAK,OAAA,EAAQ,OAAA,EAAQ,CAAA;AAAA,YAC5E,OAAA,oBAAW,GAAA,CAAC,UAAA,EAAA,EAAW,IAAA,EAAY,UAAU,OAAA,EAAS;AAAA,WAAA,EACzD;AAAA,SAAA,EACF,CAAA;AAAA,wBACA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,SAAA,EAAW,QAAA,EAAA,QAAA,uBAAY,eAAA,EAAA,EAAgB,KAAA,EAAO,GAAA,EAAK,CAAA,GAAK,QAAA,EAAS;AAAA;AAAA;AAAA,GAClF;AAEJ;;;;"}
1
+ {"version":3,"file":"span-payload-section.es.js","sources":["../../../../../src/domains/traces/components/span-payload/span-payload-section.tsx"],"sourcesContent":["import { Maximize2, Minimize2 } from 'lucide-react';\nimport { useState } from 'react';\nimport type { ReactNode } from 'react';\nimport { SpanPayloadJson } from './span-payload-json';\nimport { Button } from '@/ds/components/Button';\nimport { ButtonsGroup } from '@/ds/components/ButtonsGroup';\nimport { CollapsibleBox, useCollapsibleBox } from '@/ds/components/CollapsibleBox';\nimport { CopyButton } from '@/ds/components/CopyButton';\nimport { DataPanelSectionHeading } from '@/ds/components/DataPanel/data-panel-section-heading';\nimport { cn } from '@/lib/utils';\n\nexport type SpanPayloadView = 'rich' | 'raw';\n\nexport interface SpanPayloadSectionProps {\n title: string;\n icon?: ReactNode;\n /** The payload as stored; shown as JSON in the Raw view. */\n raw: unknown;\n /** Whether a dedicated presentation exists rather than a JSON fallback. */\n hasPreview?: boolean;\n /**\n * The human-readable rendering. `null` when the payload has no rich form\n * (JSON fallback): the section then shows Raw only and hides the toggle.\n */\n children: ReactNode;\n /** `panel` matches `DataPanel.CodeSection`; `details` matches `DataDetailsPanel.CodeSection`. */\n layout?: 'panel' | 'details';\n defaultView?: SpanPayloadView;\n className?: string;\n}\n\nfunction ViewToggle({ view, onChange }: { view: SpanPayloadView; onChange: (view: SpanPayloadView) => void }) {\n return (\n <ButtonsGroup size=\"sm\" aria-label=\"Payload view\" data-slot=\"span-payload-view-toggle\">\n <Button\n variant={view === 'rich' ? 'primary' : 'default'}\n aria-pressed={view === 'rich'}\n onClick={() => onChange('rich')}\n >\n Preview\n </Button>\n <Button\n variant={view === 'raw' ? 'primary' : 'default'}\n aria-pressed={view === 'raw'}\n onClick={() => onChange('raw')}\n >\n JSON\n </Button>\n </ButtonsGroup>\n );\n}\n\n/**\n * A span payload section with a Preview / JSON button group. All JSON views share\n * the same syntax highlighting while preserving the stored payload.\n */\nexport function SpanPayloadSection({\n title,\n icon,\n raw,\n hasPreview = true,\n children,\n layout = 'panel',\n defaultView = 'rich',\n className,\n}: SpanPayloadSectionProps) {\n const [view, setView] = useState<SpanPayloadView>(defaultView);\n const box = useCollapsibleBox();\n if (raw == null) return null;\n\n const hasRich = hasPreview && children != null;\n const showJson = !hasRich || view === 'raw';\n\n return (\n <div\n data-slot=\"span-payload-section\"\n data-view={showJson ? 'raw' : 'rich'}\n className={cn('flex flex-col gap-2', className)}\n >\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <DataPanelSectionHeading icon={icon} className={layout === 'details' ? 'text-meta' : undefined}>\n {title}\n </DataPanelSectionHeading>\n <div className=\"ml-auto flex items-center gap-2\">\n {(box.isClipped || box.isExpanded) && (\n <Button\n size=\"sm\"\n variant=\"ghost\"\n icon={box.isExpanded ? <Minimize2 /> : <Maximize2 />}\n onClick={box.toggleExpanded}\n >\n {box.isExpanded ? 'Collapse' : 'Expand'}\n </Button>\n )}\n <CopyButton content={JSON.stringify(raw, null, 2)} size=\"sm\" variant=\"ghost\" />\n {hasRich && <ViewToggle view={view} onChange={setView} />}\n </div>\n </div>\n <CollapsibleBox state={box}>{showJson ? <SpanPayloadJson value={raw} /> : children}</CollapsibleBox>\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;AA+BA,SAAS,UAAA,CAAW,EAAE,IAAA,EAAM,QAAA,EAAS,EAAyE;AAC5G,EAAA,4BACG,YAAA,EAAA,EAAa,IAAA,EAAK,MAAK,YAAA,EAAW,cAAA,EAAe,aAAU,0BAAA,EAC1D,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,IAAA,KAAS,MAAA,GAAS,SAAA,GAAY,SAAA;AAAA,QACvC,gBAAc,IAAA,KAAS,MAAA;AAAA,QACvB,OAAA,EAAS,MAAM,QAAA,CAAS,MAAM,CAAA;AAAA,QAC/B,QAAA,EAAA;AAAA;AAAA,KAED;AAAA,oBACA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,IAAA,KAAS,KAAA,GAAQ,SAAA,GAAY,SAAA;AAAA,QACtC,gBAAc,IAAA,KAAS,KAAA;AAAA,QACvB,OAAA,EAAS,MAAM,QAAA,CAAS,KAAK,CAAA;AAAA,QAC9B,QAAA,EAAA;AAAA;AAAA;AAED,GAAA,EACF,CAAA;AAEJ;AAMO,SAAS,kBAAA,CAAmB;AAAA,EACjC,KAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAA;AAAA,EACA,UAAA,GAAa,IAAA;AAAA,EACb,QAAA;AAAA,EACA,MAAA,GAAS,OAAA;AAAA,EACT,WAAA,GAAc,MAAA;AAAA,EACd;AACF,CAAA,EAA4B;AAC1B,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAA0B,WAAW,CAAA;AAC7D,EAAA,MAAM,MAAM,iBAAA,EAAkB;AAC9B,EAAA,IAAI,GAAA,IAAO,MAAM,OAAO,IAAA;AAExB,EAAA,MAAM,OAAA,GAAU,cAAc,QAAA,IAAY,IAAA;AAC1C,EAAA,MAAM,QAAA,GAAW,CAAC,OAAA,IAAW,IAAA,KAAS,KAAA;AAEtC,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,sBAAA;AAAA,MACV,WAAA,EAAW,WAAW,KAAA,GAAQ,MAAA;AAAA,MAC9B,SAAA,EAAW,EAAA,CAAG,qBAAA,EAAuB,SAAS,CAAA;AAAA,MAE9C,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,mDAAA,EACb,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,2BAAwB,IAAA,EAAY,SAAA,EAAW,WAAW,SAAA,GAAY,WAAA,GAAc,QAClF,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,0BACA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iCAAA,EACX,QAAA,EAAA;AAAA,YAAA,CAAA,GAAA,CAAI,SAAA,IAAa,IAAI,UAAA,qBACrB,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,IAAA;AAAA,gBACL,OAAA,EAAQ,OAAA;AAAA,gBACR,MAAM,GAAA,CAAI,UAAA,uBAAc,SAAA,EAAA,EAAU,CAAA,uBAAM,SAAA,EAAA,EAAU,CAAA;AAAA,gBAClD,SAAS,GAAA,CAAI,cAAA;AAAA,gBAEZ,QAAA,EAAA,GAAA,CAAI,aAAa,UAAA,GAAa;AAAA;AAAA,aACjC;AAAA,4BAEF,GAAA,CAAC,UAAA,EAAA,EAAW,OAAA,EAAS,IAAA,CAAK,SAAA,CAAU,GAAA,EAAK,IAAA,EAAM,CAAC,CAAA,EAAG,IAAA,EAAK,IAAA,EAAK,OAAA,EAAQ,OAAA,EAAQ,CAAA;AAAA,YAC5E,OAAA,oBAAW,GAAA,CAAC,UAAA,EAAA,EAAW,IAAA,EAAY,UAAU,OAAA,EAAS;AAAA,WAAA,EACzD;AAAA,SAAA,EACF,CAAA;AAAA,wBACA,GAAA,CAAC,cAAA,EAAA,EAAe,KAAA,EAAO,GAAA,EAAM,QAAA,EAAA,QAAA,uBAAY,eAAA,EAAA,EAAgB,KAAA,EAAO,GAAA,EAAK,CAAA,GAAK,QAAA,EAAS;AAAA;AAAA;AAAA,GACrF;AAEJ;;;;"}
@@ -4,9 +4,9 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
5
  require('react/jsx-runtime');
6
6
  require('./span-payload-json.cjs.js');
7
- const domains_traces_components_spanPayload_spanPayloadTool = require('../../../../span-payload-primitives-CbXrqcs-.cjs');
7
+ const domains_traces_components_spanPayload_spanPayloadTool = require('../../../../span-payload-primitives-D0mhsndj.cjs');
8
8
  require('../../../chat/components/badge-wrapper.cjs.js');
9
- require('../../../../activity-8egTNbaI.cjs');
9
+ require('../../../../activity-CbQG59Oc.cjs');
10
10
  require('../../../../tool-presentation-WLS6d1ws.cjs');
11
11
 
12
12
 
@@ -1,7 +1,7 @@
1
1
  import 'react/jsx-runtime';
2
2
  import './span-payload-json.es.js';
3
- export { e as SpanPayloadTool } from '../../../../span-payload-primitives-CEflnpwW.js';
3
+ export { e as SpanPayloadTool } from '../../../../span-payload-primitives-DL1Kr0cu.js';
4
4
  import '../../../chat/components/badge-wrapper.es.js';
5
- import '../../../../activity-Duth8KP_.js';
5
+ import '../../../../activity-BoXbE4Kz.js';
6
6
  import '../../../../tool-presentation-BXAo24Ir.js';
7
7
  //# sourceMappingURL=span-payload-tool.es.js.map
@@ -6,11 +6,11 @@ const jsxRuntime = require('react/jsx-runtime');
6
6
  const observability = require('@mastra/core/observability');
7
7
  const domains_traces_components_spanPayload_spanPayloadJson = require('./span-payload-json.cjs.js');
8
8
  const domains_traces_components_spanPayload_spanPayloadMessages = require('./span-payload-messages.cjs.js');
9
- const domains_traces_components_spanPayload_spanPayloadTool = require('../../../../span-payload-primitives-CbXrqcs-.cjs');
9
+ const domains_traces_components_spanPayload_spanPayloadTool = require('../../../../span-payload-primitives-D0mhsndj.cjs');
10
10
  const domains_traces_components_spanPayload_spanPayloadRegistry = require('./span-payload-registry.cjs.js');
11
11
  const Card = require('../../../../Card-BQsKHkyB.cjs');
12
12
  const dataKeysAndValues = require('../../../../data-keys-and-values-DnpdW8zx.cjs');
13
- const Notice = require('../../../../Notice-CEBwitdf.cjs');
13
+ const Notice = require('../../../../Notice-C4Tgmtgb.cjs');
14
14
  const Txt = require('../../../../Txt-DPmEpNbp.cjs');
15
15
  const utils_duration = require('../../../../utils/duration.cjs.js');
16
16
 
@@ -2,11 +2,11 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { describeProcessorPipeline } from '@mastra/core/observability';
3
3
  import { SpanPayloadJson } from './span-payload-json.es.js';
4
4
  import { SpanPayloadMessages } from './span-payload-messages.es.js';
5
- import { c as SpanPayloadCollapsible, S as SpanPayloadField } from '../../../../span-payload-primitives-CEflnpwW.js';
5
+ import { c as SpanPayloadCollapsible, S as SpanPayloadField } from '../../../../span-payload-primitives-DL1Kr0cu.js';
6
6
  import { asCoreSpan } from './span-payload-registry.es.js';
7
7
  import { C as Card, a as CardContent } from '../../../../Card-DVy0QS4m.js';
8
8
  import { D as DataKeysAndValues } from '../../../../data-keys-and-values-DiRlIt-N.js';
9
- import { N as Notice } from '../../../../Notice-Ce3r5x-7.js';
9
+ import { N as Notice } from '../../../../Notice-B8RIClJD.js';
10
10
  import { T as Txt } from '../../../../Txt-BP1SRHmL.js';
11
11
  import { formatDuration } from '../../../../utils/duration.es.js';
12
12
 
@@ -5,7 +5,7 @@ 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 domains_traces_utils_spanUtils = require('../utils/span-utils.cjs.js');
8
- const dataPanel = require('../../../data-panel-CjvoI_lx.cjs');
8
+ const dataPanel = require('../../../data-panel-D7Qk4iwZ.cjs');
9
9
  const utils_truncateString = require('../../../utils/truncate-string.cjs.js');
10
10
  const utils_dateFormat = require('../../../utils/date-format.cjs.js');
11
11
  const utils_duration = require('../../../utils/duration.cjs.js');
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { CalendarClockIcon, TimerIcon, HashIcon } from 'lucide-react';
3
3
  import { getSpanDurationMs } from '../utils/span-utils.es.js';
4
- import { D as DataPanel } from '../../../data-panel-42fdcagQ.js';
4
+ import { D as DataPanel } from '../../../data-panel-DuLf5j8S.js';
5
5
  import { truncateString } from '../../../utils/truncate-string.es.js';
6
6
  import { formatDate, formatTimestampPrecise } from '../../../utils/date-format.es.js';
7
7
  import { formatDurationPrecise } from '../../../utils/duration.es.js';
@@ -5,7 +5,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5
5
  const jsxRuntime = require('react/jsx-runtime');
6
6
  const React = require('react');
7
7
  const domains_traces_components_shared = require('./shared.cjs.js');
8
- const Badge = require('../../../Badge-H8K5WrXg.cjs');
8
+ const Badge = require('../../../Badge-D3EctKQo.cjs');
9
9
 
10
10
  function useUsedSpanTypes(spans) {
11
11
  return React.useMemo(() => {
@@ -1,7 +1,7 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { useMemo } from 'react';
3
3
  import { getSpanTypeUi, spanTypePrefixes } from './shared.es.js';
4
- import { B as Badge } from '../../../Badge-Q_pCeeGW.js';
4
+ import { B as Badge } from '../../../Badge-DmOqFpXW.js';
5
5
 
6
6
  function useUsedSpanTypes(spans) {
7
7
  return useMemo(() => {
@@ -4,7 +4,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
5
  const jsxRuntime = require('react/jsx-runtime');
6
6
  const domains_traces_components_threadTrace_threadTraceRowContext = require('./thread-trace-row-context.cjs.js');
7
- const dataPanel = require('../../../../data-panel-CjvoI_lx.cjs');
7
+ const dataPanel = require('../../../../data-panel-D7Qk4iwZ.cjs');
8
8
  const utils_cn = require('../../../../cn-DG0X1KEP.cjs');
9
9
 
10
10
  function ThreadTraceDetails({ className, children, ...props }) {
@@ -1,6 +1,6 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { useThreadTraceRow } from './thread-trace-row-context.es.js';
3
- import { D as DataPanel } from '../../../../data-panel-42fdcagQ.js';
3
+ import { D as DataPanel } from '../../../../data-panel-DuLf5j8S.js';
4
4
  import { c as cn } from '../../../../cn-65Adrsfj.js';
5
5
 
6
6
  function ThreadTraceDetails({ className, children, ...props }) {
@@ -5,10 +5,10 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5
5
  const jsxRuntime = require('react/jsx-runtime');
6
6
  const domains_traces_components_threadTrace_threadTraceRow = require('./thread-trace-row.cjs.js');
7
7
  const domains_traces_components_threadTrace_threadTraceRowContext = require('./thread-trace-row-context.cjs.js');
8
- const dataPanel = require('../../../../data-panel-CjvoI_lx.cjs');
9
- const tabsRoot = require('../../../../tabs-root-BqC8X_h6.cjs');
10
- const tabsTab = require('../../../../tabs-tab-lm4xyjtD.cjs');
11
- const tabsContent = require('../../../../tabs-content-DQNRMjup.cjs');
8
+ const dataPanel = require('../../../../data-panel-D7Qk4iwZ.cjs');
9
+ const tabsRoot = require('../../../../tabs-root-C-ePF1y9.cjs');
10
+ const tabsTab = require('../../../../tabs-tab-BmIBFifi.cjs');
11
+ const tabsContent = require('../../../../tabs-content-DnscxcLI.cjs');
12
12
  const utils_cn = require('../../../../cn-DG0X1KEP.cjs');
13
13
 
14
14
  function ThreadTraceMessages({ className, innerClassName, children, ...props }) {
@@ -18,7 +18,7 @@ function ThreadTraceMessages({ className, innerClassName, children, ...props })
18
18
  "div",
19
19
  {
20
20
  "data-slot": "thread-trace-messages",
21
- className: utils_cn.cn("relative min-w-0 border-r border-border", className),
21
+ className: utils_cn.cn("relative min-w-0 overflow-x-clip border-r border-border", className),
22
22
  ...props,
23
23
  style: { minHeight, ...props.style },
24
24
  children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -45,7 +45,7 @@ function ThreadTraceTabList({ variant = "pill-ghost", size = "sm", ...props }) {
45
45
  }
46
46
  const ThreadTraceTab = tabsTab.Tab;
47
47
  function ThreadTraceTabContent({ className, ...props }) {
48
- return /* @__PURE__ */ jsxRuntime.jsx(tabsContent.TabContent, { className: utils_cn.cn("px-4", className), ...props });
48
+ return /* @__PURE__ */ jsxRuntime.jsx(tabsContent.TabContent, { className: utils_cn.cn("overflow-x-hidden px-4", className), ...props });
49
49
  }
50
50
 
51
51
  exports.ThreadTraceMessages = ThreadTraceMessages;
@@ -1 +1 @@
1
- {"version":3,"file":"thread-trace-messages.cjs.js","sources":["../../../../../src/domains/traces/components/thread-trace/thread-trace-messages.tsx"],"sourcesContent":["import type { ComponentProps } from 'react';\n\nimport { THREAD_TRACE_MESSAGES_TAB } from './thread-trace-row';\nimport { useThreadTraceRow } from './thread-trace-row-context';\nimport { DataPanel } from '@/ds/components/DataPanel';\nimport type { DataPanelHeaderProps } from '@/ds/components/DataPanel';\nimport { Tab, TabContent, TabList, Tabs } from '@/ds/components/Tabs';\nimport type { TabContentProps, TabListProps, TabProps } from '@/ds/components/Tabs';\nimport { cn } from '@/lib/utils';\n\nexport interface ThreadTraceMessagesProps extends ComponentProps<'div'> {\n /** Class name of the sticky, measured wrapper around the children. */\n innerClassName?: string;\n}\n\n/**\n * The left column of a row: the same Messages / Feedback / Scores tabs as the trace panel's side\n * column, one set per turn. Children are a `ThreadTrace.MessagesHeader` (holding the\n * `ThreadTrace.TabList`) followed by one `ThreadTrace.TabContent` per view. Like the trace\n * panel's side column it is framed by a left border (closing the rail gutter) and a right border,\n * which every row continues so they read as one line down the thread. Its measured height is the\n * clamp budget of the span tree.\n */\nexport function ThreadTraceMessages({ className, innerClassName, children, ...props }: ThreadTraceMessagesProps) {\n const { messagesRef, messagesHeight, tab, setTab } = useThreadTraceRow();\n // A short Feedback / Scores view keeps the row as tall as the Messages view, so the span tree\n // next to it is not clipped.\n const minHeight = tab === THREAD_TRACE_MESSAGES_TAB ? undefined : (messagesHeight ?? undefined);\n return (\n <div\n data-slot=\"thread-trace-messages\"\n className={cn('relative min-w-0 border-r border-border', className)}\n {...props}\n style={{ minHeight, ...props.style }}\n >\n {/* Sticky within the row, so a long trace on the right never scrolls its messages away. */}\n <Tabs<string>\n ref={messagesRef}\n defaultTab={THREAD_TRACE_MESSAGES_TAB}\n value={tab}\n onValueChange={setTab}\n data-slot=\"thread-trace-messages-inner\"\n className={cn('sticky top-0', innerClassName)}\n data-testid=\"trace-row-messages\"\n >\n {children}\n </Tabs>\n </div>\n );\n}\n\nexport type ThreadTraceMessagesHeaderProps = DataPanelHeaderProps;\n\n/**\n * The bordered tab row at the top of the messages column, same chrome as the trace panel's side\n * column; its border spans the column and continues into the details header's border as one line.\n */\nexport function ThreadTraceMessagesHeader({ className, ...props }: ThreadTraceMessagesHeaderProps) {\n return <DataPanel.Header className={cn('border-b border-border', className)} {...props} />;\n}\n\nexport type ThreadTraceTabListProps = Omit<TabListProps, 'variant' | 'size'> & {\n variant?: TabListProps['variant'];\n size?: TabListProps['size'];\n};\n\nexport function ThreadTraceTabList({ variant = 'pill-ghost', size = 'sm', ...props }: ThreadTraceTabListProps) {\n return <TabList variant={variant} size={size} {...props} />;\n}\n\nexport type ThreadTraceTabProps = TabProps;\nexport const ThreadTraceTab = Tab;\n\nexport type ThreadTraceTabContentProps = TabContentProps;\n\n/** One view of the messages column; keeps a gutter before the column's right border. */\nexport function ThreadTraceTabContent({ className, ...props }: ThreadTraceTabContentProps) {\n return <TabContent className={cn('px-4', className)} {...props} />;\n}\n"],"names":["useThreadTraceRow","THREAD_TRACE_MESSAGES_TAB","jsx","cn","Tabs","DataPanel","TabList","Tab","TabContent"],"mappings":";;;;;;;;;;;;;AAuBO,SAAS,oBAAoB,EAAE,SAAA,EAAW,gBAAgB,QAAA,EAAU,GAAG,OAAM,EAA6B;AAC/G,EAAA,MAAM,EAAE,WAAA,EAAa,cAAA,EAAgB,GAAA,EAAK,MAAA,KAAWA,6EAAA,EAAkB;AAGvE,EAAA,MAAM,SAAA,GAAY,GAAA,KAAQC,8EAAA,GAA4B,MAAA,GAAa,cAAA,IAAkB,MAAA;AACrF,EAAA,uBACEC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,uBAAA;AAAA,MACV,SAAA,EAAWC,WAAA,CAAG,yCAAA,EAA2C,SAAS,CAAA;AAAA,MACjE,GAAG,KAAA;AAAA,MACJ,KAAA,EAAO,EAAE,SAAA,EAAW,GAAG,MAAM,KAAA,EAAM;AAAA,MAGnC,QAAA,kBAAAD,cAAA;AAAA,QAACE,aAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,WAAA;AAAA,UACL,UAAA,EAAYH,8EAAA;AAAA,UACZ,KAAA,EAAO,GAAA;AAAA,UACP,aAAA,EAAe,MAAA;AAAA,UACf,WAAA,EAAU,6BAAA;AAAA,UACV,SAAA,EAAWE,WAAA,CAAG,cAAA,EAAgB,cAAc,CAAA;AAAA,UAC5C,aAAA,EAAY,oBAAA;AAAA,UAEX;AAAA;AAAA;AACH;AAAA,GACF;AAEJ;AAQO,SAAS,yBAAA,CAA0B,EAAE,SAAA,EAAW,GAAG,OAAM,EAAmC;AACjG,EAAA,uBAAOD,cAAA,CAACG,mBAAA,CAAU,MAAA,EAAV,EAAiB,SAAA,EAAWF,YAAG,wBAAA,EAA0B,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAC1F;AAOO,SAAS,kBAAA,CAAmB,EAAE,OAAA,GAAU,YAAA,EAAc,OAAO,IAAA,EAAM,GAAG,OAAM,EAA4B;AAC7G,EAAA,uBAAOD,cAAA,CAACI,gBAAA,EAAA,EAAQ,OAAA,EAAkB,IAAA,EAAa,GAAG,KAAA,EAAO,CAAA;AAC3D;AAGO,MAAM,cAAA,GAAiBC;AAKvB,SAAS,qBAAA,CAAsB,EAAE,SAAA,EAAW,GAAG,OAAM,EAA+B;AACzF,EAAA,uBAAOL,cAAA,CAACM,0BAAW,SAAA,EAAWL,WAAA,CAAG,QAAQ,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAClE;;;;;;;;"}
1
+ {"version":3,"file":"thread-trace-messages.cjs.js","sources":["../../../../../src/domains/traces/components/thread-trace/thread-trace-messages.tsx"],"sourcesContent":["import type { ComponentProps } from 'react';\n\nimport { THREAD_TRACE_MESSAGES_TAB } from './thread-trace-row';\nimport { useThreadTraceRow } from './thread-trace-row-context';\nimport { DataPanel } from '@/ds/components/DataPanel';\nimport type { DataPanelHeaderProps } from '@/ds/components/DataPanel';\nimport { Tab, TabContent, TabList, Tabs } from '@/ds/components/Tabs';\nimport type { TabContentProps, TabListProps, TabProps } from '@/ds/components/Tabs';\nimport { cn } from '@/lib/utils';\n\nexport interface ThreadTraceMessagesProps extends ComponentProps<'div'> {\n /** Class name of the sticky, measured wrapper around the children. */\n innerClassName?: string;\n}\n\n/**\n * The left column of a row: the same Messages / Feedback / Scores tabs as the trace panel's side\n * column, one set per turn. Children are a `ThreadTrace.MessagesHeader` (holding the\n * `ThreadTrace.TabList`) followed by one `ThreadTrace.TabContent` per view. Like the trace\n * panel's side column it is framed by a left border (closing the rail gutter) and a right border,\n * which every row continues so they read as one line down the thread. Its measured height is the\n * clamp budget of the span tree.\n */\nexport function ThreadTraceMessages({ className, innerClassName, children, ...props }: ThreadTraceMessagesProps) {\n const { messagesRef, messagesHeight, tab, setTab } = useThreadTraceRow();\n // A short Feedback / Scores view keeps the row as tall as the Messages view, so the span tree\n // next to it is not clipped.\n const minHeight = tab === THREAD_TRACE_MESSAGES_TAB ? undefined : (messagesHeight ?? undefined);\n return (\n <div\n data-slot=\"thread-trace-messages\"\n className={cn('relative min-w-0 overflow-x-clip border-r border-border', className)}\n {...props}\n style={{ minHeight, ...props.style }}\n >\n {/* Sticky within the row, so a long trace on the right never scrolls its messages away. */}\n <Tabs<string>\n ref={messagesRef}\n defaultTab={THREAD_TRACE_MESSAGES_TAB}\n value={tab}\n onValueChange={setTab}\n data-slot=\"thread-trace-messages-inner\"\n className={cn('sticky top-0', innerClassName)}\n data-testid=\"trace-row-messages\"\n >\n {children}\n </Tabs>\n </div>\n );\n}\n\nexport type ThreadTraceMessagesHeaderProps = DataPanelHeaderProps;\n\n/**\n * The bordered tab row at the top of the messages column, same chrome as the trace panel's side\n * column; its border spans the column and continues into the details header's border as one line.\n */\nexport function ThreadTraceMessagesHeader({ className, ...props }: ThreadTraceMessagesHeaderProps) {\n return <DataPanel.Header className={cn('border-b border-border', className)} {...props} />;\n}\n\nexport type ThreadTraceTabListProps = Omit<TabListProps, 'variant' | 'size'> & {\n variant?: TabListProps['variant'];\n size?: TabListProps['size'];\n};\n\nexport function ThreadTraceTabList({ variant = 'pill-ghost', size = 'sm', ...props }: ThreadTraceTabListProps) {\n return <TabList variant={variant} size={size} {...props} />;\n}\n\nexport type ThreadTraceTabProps = TabProps;\nexport const ThreadTraceTab = Tab;\n\nexport type ThreadTraceTabContentProps = TabContentProps;\n\n/** One view of the messages column; keeps a gutter before the column's right border. */\nexport function ThreadTraceTabContent({ className, ...props }: ThreadTraceTabContentProps) {\n return <TabContent className={cn('overflow-x-hidden px-4', className)} {...props} />;\n}\n"],"names":["useThreadTraceRow","THREAD_TRACE_MESSAGES_TAB","jsx","cn","Tabs","DataPanel","TabList","Tab","TabContent"],"mappings":";;;;;;;;;;;;;AAuBO,SAAS,oBAAoB,EAAE,SAAA,EAAW,gBAAgB,QAAA,EAAU,GAAG,OAAM,EAA6B;AAC/G,EAAA,MAAM,EAAE,WAAA,EAAa,cAAA,EAAgB,GAAA,EAAK,MAAA,KAAWA,6EAAA,EAAkB;AAGvE,EAAA,MAAM,SAAA,GAAY,GAAA,KAAQC,8EAAA,GAA4B,MAAA,GAAa,cAAA,IAAkB,MAAA;AACrF,EAAA,uBACEC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,uBAAA;AAAA,MACV,SAAA,EAAWC,WAAA,CAAG,yDAAA,EAA2D,SAAS,CAAA;AAAA,MACjF,GAAG,KAAA;AAAA,MACJ,KAAA,EAAO,EAAE,SAAA,EAAW,GAAG,MAAM,KAAA,EAAM;AAAA,MAGnC,QAAA,kBAAAD,cAAA;AAAA,QAACE,aAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,WAAA;AAAA,UACL,UAAA,EAAYH,8EAAA;AAAA,UACZ,KAAA,EAAO,GAAA;AAAA,UACP,aAAA,EAAe,MAAA;AAAA,UACf,WAAA,EAAU,6BAAA;AAAA,UACV,SAAA,EAAWE,WAAA,CAAG,cAAA,EAAgB,cAAc,CAAA;AAAA,UAC5C,aAAA,EAAY,oBAAA;AAAA,UAEX;AAAA;AAAA;AACH;AAAA,GACF;AAEJ;AAQO,SAAS,yBAAA,CAA0B,EAAE,SAAA,EAAW,GAAG,OAAM,EAAmC;AACjG,EAAA,uBAAOD,cAAA,CAACG,mBAAA,CAAU,MAAA,EAAV,EAAiB,SAAA,EAAWF,YAAG,wBAAA,EAA0B,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAC1F;AAOO,SAAS,kBAAA,CAAmB,EAAE,OAAA,GAAU,YAAA,EAAc,OAAO,IAAA,EAAM,GAAG,OAAM,EAA4B;AAC7G,EAAA,uBAAOD,cAAA,CAACI,gBAAA,EAAA,EAAQ,OAAA,EAAkB,IAAA,EAAa,GAAG,KAAA,EAAO,CAAA;AAC3D;AAGO,MAAM,cAAA,GAAiBC;AAKvB,SAAS,qBAAA,CAAsB,EAAE,SAAA,EAAW,GAAG,OAAM,EAA+B;AACzF,EAAA,uBAAOL,cAAA,CAACM,0BAAW,SAAA,EAAWL,WAAA,CAAG,0BAA0B,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AACpF;;;;;;;;"}
@@ -1,10 +1,10 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { THREAD_TRACE_MESSAGES_TAB } from './thread-trace-row.es.js';
3
3
  import { useThreadTraceRow } from './thread-trace-row-context.es.js';
4
- import { D as DataPanel } from '../../../../data-panel-42fdcagQ.js';
5
- import { T as TabList, a as Tabs } from '../../../../tabs-root-4vL8SHCO.js';
6
- import { T as Tab } from '../../../../tabs-tab-7e2as-AV.js';
7
- import { T as TabContent } from '../../../../tabs-content-h2qqD8t-.js';
4
+ import { D as DataPanel } from '../../../../data-panel-DuLf5j8S.js';
5
+ import { T as TabList, a as Tabs } from '../../../../tabs-root-lrZZ3KwH.js';
6
+ import { T as Tab } from '../../../../tabs-tab-DoPSW-1s.js';
7
+ import { T as TabContent } from '../../../../tabs-content-CwbkTutf.js';
8
8
  import { c as cn } from '../../../../cn-65Adrsfj.js';
9
9
 
10
10
  function ThreadTraceMessages({ className, innerClassName, children, ...props }) {
@@ -14,7 +14,7 @@ function ThreadTraceMessages({ className, innerClassName, children, ...props })
14
14
  "div",
15
15
  {
16
16
  "data-slot": "thread-trace-messages",
17
- className: cn("relative min-w-0 border-r border-border", className),
17
+ className: cn("relative min-w-0 overflow-x-clip border-r border-border", className),
18
18
  ...props,
19
19
  style: { minHeight, ...props.style },
20
20
  children: /* @__PURE__ */ jsx(
@@ -41,7 +41,7 @@ function ThreadTraceTabList({ variant = "pill-ghost", size = "sm", ...props }) {
41
41
  }
42
42
  const ThreadTraceTab = Tab;
43
43
  function ThreadTraceTabContent({ className, ...props }) {
44
- return /* @__PURE__ */ jsx(TabContent, { className: cn("px-4", className), ...props });
44
+ return /* @__PURE__ */ jsx(TabContent, { className: cn("overflow-x-hidden px-4", className), ...props });
45
45
  }
46
46
 
47
47
  export { ThreadTraceMessages, ThreadTraceMessagesHeader, ThreadTraceTab, ThreadTraceTabContent, ThreadTraceTabList };
@@ -1 +1 @@
1
- {"version":3,"file":"thread-trace-messages.es.js","sources":["../../../../../src/domains/traces/components/thread-trace/thread-trace-messages.tsx"],"sourcesContent":["import type { ComponentProps } from 'react';\n\nimport { THREAD_TRACE_MESSAGES_TAB } from './thread-trace-row';\nimport { useThreadTraceRow } from './thread-trace-row-context';\nimport { DataPanel } from '@/ds/components/DataPanel';\nimport type { DataPanelHeaderProps } from '@/ds/components/DataPanel';\nimport { Tab, TabContent, TabList, Tabs } from '@/ds/components/Tabs';\nimport type { TabContentProps, TabListProps, TabProps } from '@/ds/components/Tabs';\nimport { cn } from '@/lib/utils';\n\nexport interface ThreadTraceMessagesProps extends ComponentProps<'div'> {\n /** Class name of the sticky, measured wrapper around the children. */\n innerClassName?: string;\n}\n\n/**\n * The left column of a row: the same Messages / Feedback / Scores tabs as the trace panel's side\n * column, one set per turn. Children are a `ThreadTrace.MessagesHeader` (holding the\n * `ThreadTrace.TabList`) followed by one `ThreadTrace.TabContent` per view. Like the trace\n * panel's side column it is framed by a left border (closing the rail gutter) and a right border,\n * which every row continues so they read as one line down the thread. Its measured height is the\n * clamp budget of the span tree.\n */\nexport function ThreadTraceMessages({ className, innerClassName, children, ...props }: ThreadTraceMessagesProps) {\n const { messagesRef, messagesHeight, tab, setTab } = useThreadTraceRow();\n // A short Feedback / Scores view keeps the row as tall as the Messages view, so the span tree\n // next to it is not clipped.\n const minHeight = tab === THREAD_TRACE_MESSAGES_TAB ? undefined : (messagesHeight ?? undefined);\n return (\n <div\n data-slot=\"thread-trace-messages\"\n className={cn('relative min-w-0 border-r border-border', className)}\n {...props}\n style={{ minHeight, ...props.style }}\n >\n {/* Sticky within the row, so a long trace on the right never scrolls its messages away. */}\n <Tabs<string>\n ref={messagesRef}\n defaultTab={THREAD_TRACE_MESSAGES_TAB}\n value={tab}\n onValueChange={setTab}\n data-slot=\"thread-trace-messages-inner\"\n className={cn('sticky top-0', innerClassName)}\n data-testid=\"trace-row-messages\"\n >\n {children}\n </Tabs>\n </div>\n );\n}\n\nexport type ThreadTraceMessagesHeaderProps = DataPanelHeaderProps;\n\n/**\n * The bordered tab row at the top of the messages column, same chrome as the trace panel's side\n * column; its border spans the column and continues into the details header's border as one line.\n */\nexport function ThreadTraceMessagesHeader({ className, ...props }: ThreadTraceMessagesHeaderProps) {\n return <DataPanel.Header className={cn('border-b border-border', className)} {...props} />;\n}\n\nexport type ThreadTraceTabListProps = Omit<TabListProps, 'variant' | 'size'> & {\n variant?: TabListProps['variant'];\n size?: TabListProps['size'];\n};\n\nexport function ThreadTraceTabList({ variant = 'pill-ghost', size = 'sm', ...props }: ThreadTraceTabListProps) {\n return <TabList variant={variant} size={size} {...props} />;\n}\n\nexport type ThreadTraceTabProps = TabProps;\nexport const ThreadTraceTab = Tab;\n\nexport type ThreadTraceTabContentProps = TabContentProps;\n\n/** One view of the messages column; keeps a gutter before the column's right border. */\nexport function ThreadTraceTabContent({ className, ...props }: ThreadTraceTabContentProps) {\n return <TabContent className={cn('px-4', className)} {...props} />;\n}\n"],"names":[],"mappings":";;;;;;;;;AAuBO,SAAS,oBAAoB,EAAE,SAAA,EAAW,gBAAgB,QAAA,EAAU,GAAG,OAAM,EAA6B;AAC/G,EAAA,MAAM,EAAE,WAAA,EAAa,cAAA,EAAgB,GAAA,EAAK,MAAA,KAAW,iBAAA,EAAkB;AAGvE,EAAA,MAAM,SAAA,GAAY,GAAA,KAAQ,yBAAA,GAA4B,MAAA,GAAa,cAAA,IAAkB,MAAA;AACrF,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,uBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,yCAAA,EAA2C,SAAS,CAAA;AAAA,MACjE,GAAG,KAAA;AAAA,MACJ,KAAA,EAAO,EAAE,SAAA,EAAW,GAAG,MAAM,KAAA,EAAM;AAAA,MAGnC,QAAA,kBAAA,GAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,WAAA;AAAA,UACL,UAAA,EAAY,yBAAA;AAAA,UACZ,KAAA,EAAO,GAAA;AAAA,UACP,aAAA,EAAe,MAAA;AAAA,UACf,WAAA,EAAU,6BAAA;AAAA,UACV,SAAA,EAAW,EAAA,CAAG,cAAA,EAAgB,cAAc,CAAA;AAAA,UAC5C,aAAA,EAAY,oBAAA;AAAA,UAEX;AAAA;AAAA;AACH;AAAA,GACF;AAEJ;AAQO,SAAS,yBAAA,CAA0B,EAAE,SAAA,EAAW,GAAG,OAAM,EAAmC;AACjG,EAAA,uBAAO,GAAA,CAAC,SAAA,CAAU,MAAA,EAAV,EAAiB,SAAA,EAAW,GAAG,wBAAA,EAA0B,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAC1F;AAOO,SAAS,kBAAA,CAAmB,EAAE,OAAA,GAAU,YAAA,EAAc,OAAO,IAAA,EAAM,GAAG,OAAM,EAA4B;AAC7G,EAAA,uBAAO,GAAA,CAAC,OAAA,EAAA,EAAQ,OAAA,EAAkB,IAAA,EAAa,GAAG,KAAA,EAAO,CAAA;AAC3D;AAGO,MAAM,cAAA,GAAiB;AAKvB,SAAS,qBAAA,CAAsB,EAAE,SAAA,EAAW,GAAG,OAAM,EAA+B;AACzF,EAAA,uBAAO,GAAA,CAAC,cAAW,SAAA,EAAW,EAAA,CAAG,QAAQ,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAClE;;;;"}
1
+ {"version":3,"file":"thread-trace-messages.es.js","sources":["../../../../../src/domains/traces/components/thread-trace/thread-trace-messages.tsx"],"sourcesContent":["import type { ComponentProps } from 'react';\n\nimport { THREAD_TRACE_MESSAGES_TAB } from './thread-trace-row';\nimport { useThreadTraceRow } from './thread-trace-row-context';\nimport { DataPanel } from '@/ds/components/DataPanel';\nimport type { DataPanelHeaderProps } from '@/ds/components/DataPanel';\nimport { Tab, TabContent, TabList, Tabs } from '@/ds/components/Tabs';\nimport type { TabContentProps, TabListProps, TabProps } from '@/ds/components/Tabs';\nimport { cn } from '@/lib/utils';\n\nexport interface ThreadTraceMessagesProps extends ComponentProps<'div'> {\n /** Class name of the sticky, measured wrapper around the children. */\n innerClassName?: string;\n}\n\n/**\n * The left column of a row: the same Messages / Feedback / Scores tabs as the trace panel's side\n * column, one set per turn. Children are a `ThreadTrace.MessagesHeader` (holding the\n * `ThreadTrace.TabList`) followed by one `ThreadTrace.TabContent` per view. Like the trace\n * panel's side column it is framed by a left border (closing the rail gutter) and a right border,\n * which every row continues so they read as one line down the thread. Its measured height is the\n * clamp budget of the span tree.\n */\nexport function ThreadTraceMessages({ className, innerClassName, children, ...props }: ThreadTraceMessagesProps) {\n const { messagesRef, messagesHeight, tab, setTab } = useThreadTraceRow();\n // A short Feedback / Scores view keeps the row as tall as the Messages view, so the span tree\n // next to it is not clipped.\n const minHeight = tab === THREAD_TRACE_MESSAGES_TAB ? undefined : (messagesHeight ?? undefined);\n return (\n <div\n data-slot=\"thread-trace-messages\"\n className={cn('relative min-w-0 overflow-x-clip border-r border-border', className)}\n {...props}\n style={{ minHeight, ...props.style }}\n >\n {/* Sticky within the row, so a long trace on the right never scrolls its messages away. */}\n <Tabs<string>\n ref={messagesRef}\n defaultTab={THREAD_TRACE_MESSAGES_TAB}\n value={tab}\n onValueChange={setTab}\n data-slot=\"thread-trace-messages-inner\"\n className={cn('sticky top-0', innerClassName)}\n data-testid=\"trace-row-messages\"\n >\n {children}\n </Tabs>\n </div>\n );\n}\n\nexport type ThreadTraceMessagesHeaderProps = DataPanelHeaderProps;\n\n/**\n * The bordered tab row at the top of the messages column, same chrome as the trace panel's side\n * column; its border spans the column and continues into the details header's border as one line.\n */\nexport function ThreadTraceMessagesHeader({ className, ...props }: ThreadTraceMessagesHeaderProps) {\n return <DataPanel.Header className={cn('border-b border-border', className)} {...props} />;\n}\n\nexport type ThreadTraceTabListProps = Omit<TabListProps, 'variant' | 'size'> & {\n variant?: TabListProps['variant'];\n size?: TabListProps['size'];\n};\n\nexport function ThreadTraceTabList({ variant = 'pill-ghost', size = 'sm', ...props }: ThreadTraceTabListProps) {\n return <TabList variant={variant} size={size} {...props} />;\n}\n\nexport type ThreadTraceTabProps = TabProps;\nexport const ThreadTraceTab = Tab;\n\nexport type ThreadTraceTabContentProps = TabContentProps;\n\n/** One view of the messages column; keeps a gutter before the column's right border. */\nexport function ThreadTraceTabContent({ className, ...props }: ThreadTraceTabContentProps) {\n return <TabContent className={cn('overflow-x-hidden px-4', className)} {...props} />;\n}\n"],"names":[],"mappings":";;;;;;;;;AAuBO,SAAS,oBAAoB,EAAE,SAAA,EAAW,gBAAgB,QAAA,EAAU,GAAG,OAAM,EAA6B;AAC/G,EAAA,MAAM,EAAE,WAAA,EAAa,cAAA,EAAgB,GAAA,EAAK,MAAA,KAAW,iBAAA,EAAkB;AAGvE,EAAA,MAAM,SAAA,GAAY,GAAA,KAAQ,yBAAA,GAA4B,MAAA,GAAa,cAAA,IAAkB,MAAA;AACrF,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,uBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,yDAAA,EAA2D,SAAS,CAAA;AAAA,MACjF,GAAG,KAAA;AAAA,MACJ,KAAA,EAAO,EAAE,SAAA,EAAW,GAAG,MAAM,KAAA,EAAM;AAAA,MAGnC,QAAA,kBAAA,GAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,WAAA;AAAA,UACL,UAAA,EAAY,yBAAA;AAAA,UACZ,KAAA,EAAO,GAAA;AAAA,UACP,aAAA,EAAe,MAAA;AAAA,UACf,WAAA,EAAU,6BAAA;AAAA,UACV,SAAA,EAAW,EAAA,CAAG,cAAA,EAAgB,cAAc,CAAA;AAAA,UAC5C,aAAA,EAAY,oBAAA;AAAA,UAEX;AAAA;AAAA;AACH;AAAA,GACF;AAEJ;AAQO,SAAS,yBAAA,CAA0B,EAAE,SAAA,EAAW,GAAG,OAAM,EAAmC;AACjG,EAAA,uBAAO,GAAA,CAAC,SAAA,CAAU,MAAA,EAAV,EAAiB,SAAA,EAAW,GAAG,wBAAA,EAA0B,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAC1F;AAOO,SAAS,kBAAA,CAAmB,EAAE,OAAA,GAAU,YAAA,EAAc,OAAO,IAAA,EAAM,GAAG,OAAM,EAA4B;AAC7G,EAAA,uBAAO,GAAA,CAAC,OAAA,EAAA,EAAQ,OAAA,EAAkB,IAAA,EAAa,GAAG,KAAA,EAAO,CAAA;AAC3D;AAGO,MAAM,cAAA,GAAiB;AAKvB,SAAS,qBAAA,CAAsB,EAAE,SAAA,EAAW,GAAG,OAAM,EAA+B;AACzF,EAAA,uBAAO,GAAA,CAAC,cAAW,SAAA,EAAW,EAAA,CAAG,0BAA0B,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AACpF;;;;"}
@@ -11,7 +11,7 @@ const domains_traces_components_formatHierarchicalSpans = require('../format-hie
11
11
  const domains_traces_components_traceSpanTree = require('../trace-span-tree.cjs.js');
12
12
  const domains_traces_components_threadTrace_threadTraceContext = require('./thread-trace-context.cjs.js');
13
13
  const domains_traces_components_threadTrace_threadTraceRowContext = require('./thread-trace-row-context.cjs.js');
14
- const Button = require('../../../../Button-BnmR2HRc.cjs');
14
+ const Button = require('../../../../Button-CXhSUBxN.cjs');
15
15
  const utils_cn = require('../../../../cn-DG0X1KEP.cjs');
16
16
 
17
17
  function ThreadTraceSpans({ className, timelineClassName, ...props }) {
@@ -7,7 +7,7 @@ import { formatHierarchicalSpans } from '../format-hierarchical-spans.es.js';
7
7
  import { TraceSpanTree } from '../trace-span-tree.es.js';
8
8
  import { useThreadTrace } from './thread-trace-context.es.js';
9
9
  import { useThreadTraceRow } from './thread-trace-row-context.es.js';
10
- import { B as Button } from '../../../../Button-C6eUqcPI.js';
10
+ import { B as Button } from '../../../../Button-D43ghVKt.js';
11
11
  import { c as cn } from '../../../../cn-65Adrsfj.js';
12
12
 
13
13
  function ThreadTraceSpans({ className, timelineClassName, ...props }) {
@@ -8,9 +8,10 @@ const React = require('react');
8
8
  require('@mastra/react');
9
9
  require('@tanstack/react-query');
10
10
  require('@base-ui/react/combobox');
11
+ require('../../../toast-nm-fM7BR.cjs');
11
12
  const domains_scores_components_traceScoresTab = require('../../scores/components/trace-scores-tab.cjs.js');
12
13
  require('@mastra/core/utils/safe-stringify');
13
- const Button = require('../../../Button-BnmR2HRc.cjs');
14
+ const Button = require('../../../Button-CXhSUBxN.cjs');
14
15
  const lib_framework = require('../../../lib/framework.cjs.js');
15
16
  const domains_scores_hooks_useTraceSpanScores = require('../../scores/hooks/use-trace-span-scores.cjs.js');
16
17
  const domains_traces_components_threadTrace = require('./thread-trace.cjs.js');
@@ -26,6 +27,7 @@ const icons_Icon = require('../../../icons/Icon.cjs.js');
26
27
  const icons_ScorersIcon = require('../../../icons/ScorersIcon.cjs.js');
27
28
  const domains_traces_components_threadTrace_threadTraceRowContext = require('./thread-trace/thread-trace-row-context.cjs.js');
28
29
 
30
+ const THREAD_WINDOW_MS = 30 * 24 * 60 * 60 * 1e3;
29
31
  function ThreadViewByTrace({
30
32
  threadId,
31
33
  withQueryTrace,
@@ -34,12 +36,17 @@ function ThreadViewByTrace({
34
36
  anchorTraceId,
35
37
  onOpenScore
36
38
  }) {
39
+ const legacyFilters = React.useMemo(
40
+ () => ({ threadId, startedAt: { start: new Date(Date.now() - THREAD_WINDOW_MS) } }),
41
+ [threadId]
42
+ );
37
43
  const { rows, isLoading, setEndOfListElement, error } = domains_traces_hooks_useTracesListSource.useTracesListSource({
38
44
  initialAutoRefetch: false,
39
45
  withQueryTrace,
46
+ legacyFilters,
40
47
  query: (now) => ({
41
48
  timeRange: {
42
- from: new Date(now.getTime() - 30 * 24 * 60 * 60 * 1e3).toISOString(),
49
+ from: new Date(now.getTime() - THREAD_WINDOW_MS).toISOString(),
43
50
  to: now.toISOString()
44
51
  },
45
52
  where: { op: "eq", left: { path: "threadId" }, right: { literal: threadId } },
@@ -1 +1 @@
1
- {"version":3,"file":"thread-view-by-trace.cjs.js","sources":["../../../../src/domains/traces/components/thread-view-by-trace.tsx"],"sourcesContent":["import { ExternalLinkIcon, MessageSquareReplyIcon, MessageSquareTextIcon } from 'lucide-react';\nimport { useState } from 'react';\nimport { useTraceSpanScores, TraceScoresTab } from '@/domains/scores';\nimport { ThreadTrace, useThreadTraceRow } from '@/domains/traces/components/thread-trace';\nimport type { ThreadTraceSelectedSpan } from '@/domains/traces/components/thread-trace';\n\nimport { ThreadViewSkeleton } from '@/domains/traces/components/thread-view-skeleton';\nimport { TraceFeedbackTab } from '@/domains/traces/components/trace-feedback-tab';\nimport { TraceThreadItemView } from '@/domains/traces/components/trace-thread-item-view';\nimport { TracesErrorContent } from '@/domains/traces/components/traces-error-content';\nimport { useTraceFeedback } from '@/domains/traces/hooks/use-trace-feedback';\nimport { useTraceSpans } from '@/domains/traces/hooks/use-trace-spans';\nimport { useTracesListSource } from '@/domains/traces/hooks/use-traces-list-source';\nimport { Button } from '@/ds/components/Button';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { ScorersIcon } from '@/ds/icons/ScorersIcon';\nimport { useLinkComponent } from '@/lib/framework';\n\nexport interface ThreadViewByTraceProps {\n threadId: string;\n /** Lists the thread through the trace-query API; `false` falls back to `listTracesLight`. */\n withQueryTrace: boolean;\n /** Shows the per-trace Feedback tab and fetches its feedback. */\n withFeedback: boolean;\n /** Fires when a span detail opens or closes (`null`). */\n onSelectedSpanChange?: (selected: ThreadTraceSelectedSpan | null) => void;\n /** Trace to expand and scroll to on mount (first page only). */\n anchorTraceId?: string;\n /** Opens a score from a trace's Scores tab; the app owns routing. */\n onOpenScore: (traceId: string, scoreId: string) => void;\n}\n\n/**\n * A memory thread rendered as its traces: one row per agent turn (oldest first), with the\n * reconstructed messages on the left and the span tree on the right. Clicking a span opens\n * its detail panel on the side so the conversation stays readable.\n */\nexport function ThreadViewByTrace({\n threadId,\n withQueryTrace,\n withFeedback,\n onSelectedSpanChange,\n anchorTraceId,\n onOpenScore,\n}: ThreadViewByTraceProps) {\n const { rows, isLoading, setEndOfListElement, error } = useTracesListSource({\n initialAutoRefetch: false,\n withQueryTrace,\n query: now => ({\n timeRange: {\n from: new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000).toISOString(),\n to: now.toISOString(),\n },\n where: { op: 'eq', left: { path: 'threadId' }, right: { literal: threadId } },\n orderBy: [{ field: 'startedAt', direction: 'asc' }],\n }),\n });\n const traceIds = rows.map(trace => trace.traceId);\n\n if (error) {\n return (\n <div className=\"flex h-full items-center justify-center p-4\">\n <TracesErrorContent error={error} resource=\"traces\" errorTitle=\"Failed to load traces\" />\n </div>\n );\n }\n\n if (isLoading) return <ThreadViewSkeleton />;\n\n if (traceIds.length === 0) {\n return (\n <div className=\"flex h-full items-center justify-center p-4\">\n <Txt variant=\"body\" tone=\"muted\">\n No traces found for this thread.\n </Txt>\n </div>\n );\n }\n\n return (\n <LoadedThreadViewByTrace\n key={threadId}\n traceIds={traceIds}\n setEndOfListElement={setEndOfListElement}\n withFeedback={withFeedback}\n onSelectedSpanChange={onSelectedSpanChange}\n anchorTraceId={anchorTraceId}\n onOpenScore={onOpenScore}\n />\n );\n}\n\ninterface LoadedThreadViewByTraceProps {\n traceIds: string[];\n setEndOfListElement: (node: HTMLDivElement | null) => void;\n withFeedback: boolean;\n onSelectedSpanChange?: (selected: ThreadTraceSelectedSpan | null) => void;\n anchorTraceId?: string;\n onOpenScore: (traceId: string, scoreId: string) => void;\n}\n\n/** Mounts once the first page is in, so state seeded from `traces` at mount only sees that page. */\nfunction LoadedThreadViewByTrace({\n traceIds,\n setEndOfListElement,\n withFeedback,\n onSelectedSpanChange,\n anchorTraceId: requestedAnchorTraceId,\n onOpenScore,\n}: LoadedThreadViewByTraceProps) {\n // \"Open full thread\" lands here with the originating trace: that row starts expanded and\n // scrolls into view when it mounts. Best effort on the first page only: resolved once at mount,\n // so a row that arrives on a later page is left alone.\n const [anchorTraceId] = useState(() =>\n requestedAnchorTraceId && traceIds.includes(requestedAnchorTraceId) ? requestedAnchorTraceId : null,\n );\n\n return (\n <ThreadTrace traceIds={traceIds} anchorTraceId={anchorTraceId} onSelectedSpanChange={onSelectedSpanChange}>\n <ThreadTrace.List data-testid=\"thread-view-by-trace\">\n {traceIds.map(traceId => (\n <ThreadTrace.Row key={traceId} traceId={traceId}>\n <ThreadTraceRowContent withFeedback={withFeedback} onOpenScore={onOpenScore} />\n </ThreadTrace.Row>\n ))}\n <ThreadTrace.LoadMoreSentinel ref={setEndOfListElement} />\n </ThreadTrace.List>\n <ThreadTrace.SpanPanel />\n </ThreadTrace>\n );\n}\n\nfunction ThreadTraceRowContent({\n withFeedback,\n onOpenScore,\n}: {\n withFeedback: boolean;\n onOpenScore: (traceId: string, scoreId: string) => void;\n}) {\n const { traceId, highlightSpans } = useThreadTraceRow();\n const { Link, paths } = useLinkComponent();\n const traceHref = paths.traceLink(traceId);\n // First page only, for the tab badges; the Feedback and Scores bodies own their own pagination\n // and share these queries through the React Query cache.\n const { data: feedbackData } = useTraceFeedback({ traceId, enabled: withFeedback });\n // Same query the span tree observes (passive: the tree drives refetches).\n const { data: traceData } = useTraceSpans(traceId, { passive: true });\n const rootSpanId = traceData?.spans.find(span => span.parentSpanId == null)?.spanId;\n const { data: spanScoresData } = useTraceSpanScores({ traceId, spanId: rootSpanId });\n const feedbackTotal = feedbackData?.pagination?.total;\n const scoresTotal = spanScoresData?.pagination?.total;\n\n return (\n <>\n <ThreadTrace.Messages>\n <ThreadTrace.MessagesHeader>\n <ThreadTrace.TabList>\n <ThreadTrace.Tab value=\"messages\">\n <Icon size=\"xs\">\n <MessageSquareTextIcon />\n </Icon>\n Messages\n </ThreadTrace.Tab>\n {withFeedback && (\n <ThreadTrace.Tab value=\"feedback\">\n <Icon size=\"xs\">\n <MessageSquareReplyIcon />\n </Icon>\n Feedback{feedbackTotal != null && <> ({feedbackTotal})</>}\n </ThreadTrace.Tab>\n )}\n <ThreadTrace.Tab value=\"scores\">\n <Icon size=\"xs\">\n <ScorersIcon />\n </Icon>\n Scores{scoresTotal != null && <> ({scoresTotal})</>}\n </ThreadTrace.Tab>\n </ThreadTrace.TabList>\n </ThreadTrace.MessagesHeader>\n <ThreadTrace.TabContent value=\"messages\" flush>\n <TraceThreadItemView traceId={traceId} onHighlightSpans={highlightSpans} />\n </ThreadTrace.TabContent>\n {withFeedback && (\n <ThreadTrace.TabContent value=\"feedback\" className=\"min-h-0 py-3\">\n <TraceFeedbackTab key={traceId} traceId={traceId} variant=\"thread\" />\n </ThreadTrace.TabContent>\n )}\n <ThreadTrace.TabContent value=\"scores\" className=\"min-h-0 py-3\">\n {rootSpanId ? (\n <TraceScoresTab\n key={traceId}\n traceId={traceId}\n spanId={rootSpanId}\n onScoreSelect={scoreId => onOpenScore(traceId, scoreId)}\n />\n ) : null}\n </ThreadTrace.TabContent>\n </ThreadTrace.Messages>\n <ThreadTrace.Details>\n <ThreadTrace.DetailsHeader>\n {traceHref && (\n <ThreadTrace.DetailsActions>\n <Button render={<Link href={traceHref} />} variant=\"ghost\" size=\"sm\" icon={<ExternalLinkIcon />}>\n Go to trace\n </Button>\n </ThreadTrace.DetailsActions>\n )}\n </ThreadTrace.DetailsHeader>\n <ThreadTrace.Spans />\n </ThreadTrace.Details>\n </>\n );\n}\n"],"names":["useTracesListSource","jsx","TracesErrorContent","ThreadViewSkeleton","Txt","useState","jsxs","ThreadTrace","useThreadTraceRow","useLinkComponent","useTraceFeedback","useTraceSpans","useTraceSpanScores","Fragment","Icon","MessageSquareTextIcon","MessageSquareReplyIcon","ScorersIcon","TraceThreadItemView","TraceFeedbackTab","TraceScoresTab","Button","ExternalLinkIcon"],"mappings":"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"}
1
+ {"version":3,"file":"thread-view-by-trace.cjs.js","sources":["../../../../src/domains/traces/components/thread-view-by-trace.tsx"],"sourcesContent":["import { ExternalLinkIcon, MessageSquareReplyIcon, MessageSquareTextIcon } from 'lucide-react';\nimport { useMemo, useState } from 'react';\nimport { useTraceSpanScores, TraceScoresTab } from '@/domains/scores';\nimport { ThreadTrace, useThreadTraceRow } from '@/domains/traces/components/thread-trace';\nimport type { ThreadTraceSelectedSpan } from '@/domains/traces/components/thread-trace';\n\nimport { ThreadViewSkeleton } from '@/domains/traces/components/thread-view-skeleton';\nimport { TraceFeedbackTab } from '@/domains/traces/components/trace-feedback-tab';\nimport { TraceThreadItemView } from '@/domains/traces/components/trace-thread-item-view';\nimport { TracesErrorContent } from '@/domains/traces/components/traces-error-content';\nimport { useTraceFeedback } from '@/domains/traces/hooks/use-trace-feedback';\nimport { useTraceSpans } from '@/domains/traces/hooks/use-trace-spans';\nimport { useTracesListSource } from '@/domains/traces/hooks/use-traces-list-source';\nimport type { UseTracesListSourceArgs } from '@/domains/traces/hooks/use-traces-list-source';\nimport { Button } from '@/ds/components/Button';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { ScorersIcon } from '@/ds/icons/ScorersIcon';\nimport { useLinkComponent } from '@/lib/framework';\n\nconst THREAD_WINDOW_MS = 30 * 24 * 60 * 60 * 1000;\n\nexport interface ThreadViewByTraceProps {\n threadId: string;\n /** Lists the thread through the trace-query API; `false` falls back to `listTracesLight`. */\n withQueryTrace: boolean;\n /** Shows the per-trace Feedback tab and fetches its feedback. */\n withFeedback: boolean;\n /** Fires when a span detail opens or closes (`null`). */\n onSelectedSpanChange?: (selected: ThreadTraceSelectedSpan | null) => void;\n /** Trace to expand and scroll to on mount (first page only). */\n anchorTraceId?: string;\n /** Opens a score from a trace's Scores tab; the app owns routing. */\n onOpenScore: (traceId: string, scoreId: string) => void;\n}\n\n/**\n * A memory thread rendered as its traces: one row per agent turn (oldest first), with the\n * reconstructed messages on the left and the span tree on the right. Clicking a span opens\n * its detail panel on the side so the conversation stays readable.\n */\nexport function ThreadViewByTrace({\n threadId,\n withQueryTrace,\n withFeedback,\n onSelectedSpanChange,\n anchorTraceId,\n onOpenScore,\n}: ThreadViewByTraceProps) {\n const legacyFilters = useMemo<UseTracesListSourceArgs['legacyFilters']>(\n () => ({ threadId, startedAt: { start: new Date(Date.now() - THREAD_WINDOW_MS) } }),\n [threadId],\n );\n const { rows, isLoading, setEndOfListElement, error } = useTracesListSource({\n initialAutoRefetch: false,\n withQueryTrace,\n legacyFilters,\n query: now => ({\n timeRange: {\n from: new Date(now.getTime() - THREAD_WINDOW_MS).toISOString(),\n to: now.toISOString(),\n },\n where: { op: 'eq', left: { path: 'threadId' }, right: { literal: threadId } },\n orderBy: [{ field: 'startedAt', direction: 'asc' }],\n }),\n });\n const traceIds = rows.map(trace => trace.traceId);\n\n if (error) {\n return (\n <div className=\"flex h-full items-center justify-center p-4\">\n <TracesErrorContent error={error} resource=\"traces\" errorTitle=\"Failed to load traces\" />\n </div>\n );\n }\n\n if (isLoading) return <ThreadViewSkeleton />;\n\n if (traceIds.length === 0) {\n return (\n <div className=\"flex h-full items-center justify-center p-4\">\n <Txt variant=\"body\" tone=\"muted\">\n No traces found for this thread.\n </Txt>\n </div>\n );\n }\n\n return (\n <LoadedThreadViewByTrace\n key={threadId}\n traceIds={traceIds}\n setEndOfListElement={setEndOfListElement}\n withFeedback={withFeedback}\n onSelectedSpanChange={onSelectedSpanChange}\n anchorTraceId={anchorTraceId}\n onOpenScore={onOpenScore}\n />\n );\n}\n\ninterface LoadedThreadViewByTraceProps {\n traceIds: string[];\n setEndOfListElement: (node: HTMLDivElement | null) => void;\n withFeedback: boolean;\n onSelectedSpanChange?: (selected: ThreadTraceSelectedSpan | null) => void;\n anchorTraceId?: string;\n onOpenScore: (traceId: string, scoreId: string) => void;\n}\n\n/** Mounts once the first page is in, so state seeded from `traces` at mount only sees that page. */\nfunction LoadedThreadViewByTrace({\n traceIds,\n setEndOfListElement,\n withFeedback,\n onSelectedSpanChange,\n anchorTraceId: requestedAnchorTraceId,\n onOpenScore,\n}: LoadedThreadViewByTraceProps) {\n // \"Open full thread\" lands here with the originating trace: that row starts expanded and\n // scrolls into view when it mounts. Best effort on the first page only: resolved once at mount,\n // so a row that arrives on a later page is left alone.\n const [anchorTraceId] = useState(() =>\n requestedAnchorTraceId && traceIds.includes(requestedAnchorTraceId) ? requestedAnchorTraceId : null,\n );\n\n return (\n <ThreadTrace traceIds={traceIds} anchorTraceId={anchorTraceId} onSelectedSpanChange={onSelectedSpanChange}>\n <ThreadTrace.List data-testid=\"thread-view-by-trace\">\n {traceIds.map(traceId => (\n <ThreadTrace.Row key={traceId} traceId={traceId}>\n <ThreadTraceRowContent withFeedback={withFeedback} onOpenScore={onOpenScore} />\n </ThreadTrace.Row>\n ))}\n <ThreadTrace.LoadMoreSentinel ref={setEndOfListElement} />\n </ThreadTrace.List>\n <ThreadTrace.SpanPanel />\n </ThreadTrace>\n );\n}\n\nfunction ThreadTraceRowContent({\n withFeedback,\n onOpenScore,\n}: {\n withFeedback: boolean;\n onOpenScore: (traceId: string, scoreId: string) => void;\n}) {\n const { traceId, highlightSpans } = useThreadTraceRow();\n const { Link, paths } = useLinkComponent();\n const traceHref = paths.traceLink(traceId);\n // First page only, for the tab badges; the Feedback and Scores bodies own their own pagination\n // and share these queries through the React Query cache.\n const { data: feedbackData } = useTraceFeedback({ traceId, enabled: withFeedback });\n // Same query the span tree observes (passive: the tree drives refetches).\n const { data: traceData } = useTraceSpans(traceId, { passive: true });\n const rootSpanId = traceData?.spans.find(span => span.parentSpanId == null)?.spanId;\n const { data: spanScoresData } = useTraceSpanScores({ traceId, spanId: rootSpanId });\n const feedbackTotal = feedbackData?.pagination?.total;\n const scoresTotal = spanScoresData?.pagination?.total;\n\n return (\n <>\n <ThreadTrace.Messages>\n <ThreadTrace.MessagesHeader>\n <ThreadTrace.TabList>\n <ThreadTrace.Tab value=\"messages\">\n <Icon size=\"xs\">\n <MessageSquareTextIcon />\n </Icon>\n Messages\n </ThreadTrace.Tab>\n {withFeedback && (\n <ThreadTrace.Tab value=\"feedback\">\n <Icon size=\"xs\">\n <MessageSquareReplyIcon />\n </Icon>\n Feedback{feedbackTotal != null && <> ({feedbackTotal})</>}\n </ThreadTrace.Tab>\n )}\n <ThreadTrace.Tab value=\"scores\">\n <Icon size=\"xs\">\n <ScorersIcon />\n </Icon>\n Scores{scoresTotal != null && <> ({scoresTotal})</>}\n </ThreadTrace.Tab>\n </ThreadTrace.TabList>\n </ThreadTrace.MessagesHeader>\n <ThreadTrace.TabContent value=\"messages\" flush>\n <TraceThreadItemView traceId={traceId} onHighlightSpans={highlightSpans} />\n </ThreadTrace.TabContent>\n {withFeedback && (\n <ThreadTrace.TabContent value=\"feedback\" className=\"min-h-0 py-3\">\n <TraceFeedbackTab key={traceId} traceId={traceId} variant=\"thread\" />\n </ThreadTrace.TabContent>\n )}\n <ThreadTrace.TabContent value=\"scores\" className=\"min-h-0 py-3\">\n {rootSpanId ? (\n <TraceScoresTab\n key={traceId}\n traceId={traceId}\n spanId={rootSpanId}\n onScoreSelect={scoreId => onOpenScore(traceId, scoreId)}\n />\n ) : null}\n </ThreadTrace.TabContent>\n </ThreadTrace.Messages>\n <ThreadTrace.Details>\n <ThreadTrace.DetailsHeader>\n {traceHref && (\n <ThreadTrace.DetailsActions>\n <Button render={<Link href={traceHref} />} variant=\"ghost\" size=\"sm\" icon={<ExternalLinkIcon />}>\n Go to trace\n </Button>\n </ThreadTrace.DetailsActions>\n )}\n </ThreadTrace.DetailsHeader>\n <ThreadTrace.Spans />\n </ThreadTrace.Details>\n </>\n );\n}\n"],"names":["useMemo","useTracesListSource","jsx","TracesErrorContent","ThreadViewSkeleton","Txt","useState","jsxs","ThreadTrace","useThreadTraceRow","useLinkComponent","useTraceFeedback","useTraceSpans","useTraceSpanScores","Fragment","Icon","MessageSquareTextIcon","MessageSquareReplyIcon","ScorersIcon","TraceThreadItemView","TraceFeedbackTab","TraceScoresTab","Button","ExternalLinkIcon"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBA,MAAM,gBAAA,GAAmB,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,GAAA;AAqBtC,SAAS,iBAAA,CAAkB;AAAA,EAChC,QAAA;AAAA,EACA,cAAA;AAAA,EACA,YAAA;AAAA,EACA,oBAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,EAA2B;AACzB,EAAA,MAAM,aAAA,GAAgBA,aAAA;AAAA,IACpB,OAAO,EAAE,QAAA,EAAU,SAAA,EAAW,EAAE,KAAA,EAAO,IAAI,IAAA,CAAK,IAAA,CAAK,GAAA,EAAI,GAAI,gBAAgB,GAAE,EAAE,CAAA;AAAA,IACjF,CAAC,QAAQ;AAAA,GACX;AACA,EAAA,MAAM,EAAE,IAAA,EAAM,SAAA,EAAW,mBAAA,EAAqB,KAAA,KAAUC,4DAAA,CAAoB;AAAA,IAC1E,kBAAA,EAAoB,KAAA;AAAA,IACpB,cAAA;AAAA,IACA,aAAA;AAAA,IACA,OAAO,CAAA,GAAA,MAAQ;AAAA,MACb,SAAA,EAAW;AAAA,QACT,IAAA,EAAM,IAAI,IAAA,CAAK,GAAA,CAAI,SAAQ,GAAI,gBAAgB,EAAE,WAAA,EAAY;AAAA,QAC7D,EAAA,EAAI,IAAI,WAAA;AAAY,OACtB;AAAA,MACA,KAAA,EAAO,EAAE,EAAA,EAAI,IAAA,EAAM,IAAA,EAAM,EAAE,IAAA,EAAM,UAAA,EAAW,EAAG,KAAA,EAAO,EAAE,OAAA,EAAS,UAAS,EAAE;AAAA,MAC5E,SAAS,CAAC,EAAE,OAAO,WAAA,EAAa,SAAA,EAAW,OAAO;AAAA,KACpD;AAAA,GACD,CAAA;AACD,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,CAAA,KAAA,KAAS,MAAM,OAAO,CAAA;AAEhD,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,uBACEC,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,6CAAA,EACb,QAAA,kBAAAA,cAAA,CAACC,+DAAA,EAAA,EAAmB,KAAA,EAAc,QAAA,EAAS,QAAA,EAAS,UAAA,EAAW,uBAAA,EAAwB,CAAA,EACzF,CAAA;AAAA,EAEJ;AAEA,EAAA,IAAI,SAAA,EAAW,uBAAOD,cAAA,CAACE,+DAAA,EAAA,EAAmB,CAAA;AAE1C,EAAA,IAAI,QAAA,CAAS,WAAW,CAAA,EAAG;AACzB,IAAA,uBACEF,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,6CAAA,EACb,QAAA,kBAAAA,cAAA,CAACG,OAAA,EAAA,EAAI,OAAA,EAAQ,MAAA,EAAO,IAAA,EAAK,OAAA,EAAQ,QAAA,EAAA,kCAAA,EAEjC,CAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEH,cAAA;AAAA,IAAC,uBAAA;AAAA,IAAA;AAAA,MAEC,QAAA;AAAA,MACA,mBAAA;AAAA,MACA,YAAA;AAAA,MACA,oBAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA,KAAA;AAAA,IANK;AAAA,GAOP;AAEJ;AAYA,SAAS,uBAAA,CAAwB;AAAA,EAC/B,QAAA;AAAA,EACA,mBAAA;AAAA,EACA,YAAA;AAAA,EACA,oBAAA;AAAA,EACA,aAAA,EAAe,sBAAA;AAAA,EACf;AACF,CAAA,EAAiC;AAI/B,EAAA,MAAM,CAAC,aAAa,CAAA,GAAII,cAAA;AAAA,IAAS,MAC/B,sBAAA,IAA0B,QAAA,CAAS,QAAA,CAAS,sBAAsB,IAAI,sBAAA,GAAyB;AAAA,GACjG;AAEA,EAAA,uBACEC,eAAA,CAACC,iDAAA,EAAA,EAAY,QAAA,EAAoB,aAAA,EAA8B,oBAAA,EAC7D,QAAA,EAAA;AAAA,oBAAAD,eAAA,CAACC,iDAAA,CAAY,IAAA,EAAZ,EAAiB,aAAA,EAAY,sBAAA,EAC3B,QAAA,EAAA;AAAA,MAAA,QAAA,CAAS,GAAA,CAAI,CAAA,OAAA,qBACZN,cAAA,CAACM,iDAAA,CAAY,GAAA,EAAZ,EAA8B,OAAA,EAC7B,QAAA,kBAAAN,cAAA,CAAC,qBAAA,EAAA,EAAsB,YAAA,EAA4B,WAAA,EAA0B,CAAA,EAAA,EADzD,OAEtB,CACD,CAAA;AAAA,sBACDA,cAAA,CAACM,iDAAA,CAAY,gBAAA,EAAZ,EAA6B,KAAK,mBAAA,EAAqB;AAAA,KAAA,EAC1D,CAAA;AAAA,oBACAN,cAAA,CAACM,iDAAA,CAAY,SAAA,EAAZ,EAAsB;AAAA,GAAA,EACzB,CAAA;AAEJ;AAEA,SAAS,qBAAA,CAAsB;AAAA,EAC7B,YAAA;AAAA,EACA;AACF,CAAA,EAGG;AACD,EAAA,MAAM,EAAE,OAAA,EAAS,cAAA,EAAe,GAAIC,6EAAA,EAAkB;AACtD,EAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAM,GAAIC,8BAAA,EAAiB;AACzC,EAAA,MAAM,SAAA,GAAY,KAAA,CAAM,SAAA,CAAU,OAAO,CAAA;AAGzC,EAAA,MAAM,EAAE,MAAM,YAAA,EAAa,GAAIC,uDAAiB,EAAE,OAAA,EAAS,OAAA,EAAS,YAAA,EAAc,CAAA;AAElF,EAAA,MAAM,EAAE,MAAM,SAAA,EAAU,GAAIC,iDAAc,OAAA,EAAS,EAAE,OAAA,EAAS,IAAA,EAAM,CAAA;AACpE,EAAA,MAAM,UAAA,GAAa,WAAW,KAAA,CAAM,IAAA,CAAK,UAAQ,IAAA,CAAK,YAAA,IAAgB,IAAI,CAAA,EAAG,MAAA;AAC7E,EAAA,MAAM,EAAE,MAAM,cAAA,EAAe,GAAIC,2DAAmB,EAAE,OAAA,EAAS,MAAA,EAAQ,UAAA,EAAY,CAAA;AACnF,EAAA,MAAM,aAAA,GAAgB,cAAc,UAAA,EAAY,KAAA;AAChD,EAAA,MAAM,WAAA,GAAc,gBAAgB,UAAA,EAAY,KAAA;AAEhD,EAAA,uBACEN,eAAA,CAAAO,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAP,eAAA,CAACC,iDAAA,CAAY,UAAZ,EACC,QAAA,EAAA;AAAA,sBAAAN,cAAA,CAACM,kDAAY,cAAA,EAAZ,EACC,QAAA,kBAAAD,eAAA,CAACC,iDAAA,CAAY,SAAZ,EACC,QAAA,EAAA;AAAA,wBAAAD,eAAA,CAACC,iDAAA,CAAY,GAAA,EAAZ,EAAgB,KAAA,EAAM,UAAA,EACrB,QAAA,EAAA;AAAA,0BAAAN,cAAA,CAACa,eAAA,EAAA,EAAK,IAAA,EAAK,IAAA,EACT,QAAA,kBAAAb,cAAA,CAACc,qCAAsB,CAAA,EACzB,CAAA;AAAA,UAAO;AAAA,SAAA,EAET,CAAA;AAAA,QACC,gCACCT,eAAA,CAACC,iDAAA,CAAY,GAAA,EAAZ,EAAgB,OAAM,UAAA,EACrB,QAAA,EAAA;AAAA,0BAAAN,cAAA,CAACa,eAAA,EAAA,EAAK,IAAA,EAAK,IAAA,EACT,QAAA,kBAAAb,cAAA,CAACe,sCAAuB,CAAA,EAC1B,CAAA;AAAA,UAAO,UAAA;AAAA,UACE,aAAA,IAAiB,wBAAQV,eAAA,CAAAO,mBAAA,EAAA,EAAE,QAAA,EAAA;AAAA,YAAA,IAAA;AAAA,YAAG,aAAA;AAAA,YAAc;AAAA,WAAA,EAAC;AAAA,SAAA,EACxD,CAAA;AAAA,wBAEFP,eAAA,CAACC,iDAAA,CAAY,GAAA,EAAZ,EAAgB,OAAM,QAAA,EACrB,QAAA,EAAA;AAAA,0BAAAN,cAAA,CAACa,eAAA,EAAA,EAAK,IAAA,EAAK,IAAA,EACT,QAAA,kBAAAb,cAAA,CAACgB,iCAAY,CAAA,EACf,CAAA;AAAA,UAAO,QAAA;AAAA,UACA,WAAA,IAAe,wBAAQX,eAAA,CAAAO,mBAAA,EAAA,EAAE,QAAA,EAAA;AAAA,YAAA,IAAA;AAAA,YAAG,WAAA;AAAA,YAAY;AAAA,WAAA,EAAC;AAAA,SAAA,EAClD;AAAA,OAAA,EACF,CAAA,EACF,CAAA;AAAA,sBACAZ,cAAA,CAACM,iDAAA,CAAY,UAAA,EAAZ,EAAuB,KAAA,EAAM,UAAA,EAAW,KAAA,EAAK,IAAA,EAC5C,QAAA,kBAAAN,cAAA,CAACiB,iEAAA,EAAA,EAAoB,OAAA,EAAkB,gBAAA,EAAkB,gBAAgB,CAAA,EAC3E,CAAA;AAAA,MACC,YAAA,oBACCjB,cAAA,CAACM,iDAAA,CAAY,UAAA,EAAZ,EAAuB,KAAA,EAAM,UAAA,EAAW,SAAA,EAAU,cAAA,EACjD,yCAACY,2DAAA,EAAA,EAA+B,OAAA,EAAkB,OAAA,EAAQ,QAAA,EAAA,EAAnC,OAA4C,CAAA,EACrE,CAAA;AAAA,sBAEFlB,cAAA,CAACM,kDAAY,UAAA,EAAZ,EAAuB,OAAM,QAAA,EAAS,SAAA,EAAU,gBAC9C,QAAA,EAAA,UAAA,mBACCN,cAAA;AAAA,QAACmB,uDAAA;AAAA,QAAA;AAAA,UAEC,OAAA;AAAA,UACA,MAAA,EAAQ,UAAA;AAAA,UACR,aAAA,EAAe,CAAA,OAAA,KAAW,WAAA,CAAY,OAAA,EAAS,OAAO;AAAA,SAAA;AAAA,QAHjD;AAAA,UAKL,IAAA,EACN;AAAA,KAAA,EACF,CAAA;AAAA,oBACAd,eAAA,CAACC,iDAAA,CAAY,OAAA,EAAZ,EACC,QAAA,EAAA;AAAA,sBAAAN,cAAA,CAACM,iDAAA,CAAY,aAAA,EAAZ,EACE,QAAA,EAAA,SAAA,oBACCN,cAAA,CAACM,iDAAA,CAAY,cAAA,EAAZ,EACC,QAAA,kBAAAN,cAAA,CAACoB,aAAA,EAAA,EAAO,MAAA,kBAAQpB,cAAA,CAAC,IAAA,EAAA,EAAK,MAAM,SAAA,EAAW,CAAA,EAAI,OAAA,EAAQ,OAAA,EAAQ,IAAA,EAAK,IAAA,EAAK,IAAA,kBAAMA,cAAA,CAACqB,4BAAA,EAAA,EAAiB,CAAA,EAAI,QAAA,EAAA,aAAA,EAEjG,CAAA,EACF,CAAA,EAEJ,CAAA;AAAA,sBACArB,cAAA,CAACM,iDAAA,CAAY,KAAA,EAAZ,EAAkB;AAAA,KAAA,EACrB;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
@@ -1,12 +1,13 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { MessageSquareTextIcon, MessageSquareReplyIcon, ExternalLinkIcon } from 'lucide-react';
3
- import { useState } from 'react';
3
+ import { useMemo, useState } from 'react';
4
4
  import '@mastra/react';
5
5
  import '@tanstack/react-query';
6
6
  import '@base-ui/react/combobox';
7
+ import '../../../toast-c5kCpyWt.js';
7
8
  import { TraceScoresTab } from '../../scores/components/trace-scores-tab.es.js';
8
9
  import '@mastra/core/utils/safe-stringify';
9
- import { B as Button } from '../../../Button-C6eUqcPI.js';
10
+ import { B as Button } from '../../../Button-D43ghVKt.js';
10
11
  import { useLinkComponent } from '../../../lib/framework.es.js';
11
12
  import { useTraceSpanScores } from '../../scores/hooks/use-trace-span-scores.es.js';
12
13
  import { ThreadTrace } from './thread-trace.es.js';
@@ -22,6 +23,7 @@ import { Icon } from '../../../icons/Icon.es.js';
22
23
  import { ScorersIcon } from '../../../icons/ScorersIcon.es.js';
23
24
  import { useThreadTraceRow } from './thread-trace/thread-trace-row-context.es.js';
24
25
 
26
+ const THREAD_WINDOW_MS = 30 * 24 * 60 * 60 * 1e3;
25
27
  function ThreadViewByTrace({
26
28
  threadId,
27
29
  withQueryTrace,
@@ -30,12 +32,17 @@ function ThreadViewByTrace({
30
32
  anchorTraceId,
31
33
  onOpenScore
32
34
  }) {
35
+ const legacyFilters = useMemo(
36
+ () => ({ threadId, startedAt: { start: new Date(Date.now() - THREAD_WINDOW_MS) } }),
37
+ [threadId]
38
+ );
33
39
  const { rows, isLoading, setEndOfListElement, error } = useTracesListSource({
34
40
  initialAutoRefetch: false,
35
41
  withQueryTrace,
42
+ legacyFilters,
36
43
  query: (now) => ({
37
44
  timeRange: {
38
- from: new Date(now.getTime() - 30 * 24 * 60 * 60 * 1e3).toISOString(),
45
+ from: new Date(now.getTime() - THREAD_WINDOW_MS).toISOString(),
39
46
  to: now.toISOString()
40
47
  },
41
48
  where: { op: "eq", left: { path: "threadId" }, right: { literal: threadId } },
@@ -1 +1 @@
1
- {"version":3,"file":"thread-view-by-trace.es.js","sources":["../../../../src/domains/traces/components/thread-view-by-trace.tsx"],"sourcesContent":["import { ExternalLinkIcon, MessageSquareReplyIcon, MessageSquareTextIcon } from 'lucide-react';\nimport { useState } from 'react';\nimport { useTraceSpanScores, TraceScoresTab } from '@/domains/scores';\nimport { ThreadTrace, useThreadTraceRow } from '@/domains/traces/components/thread-trace';\nimport type { ThreadTraceSelectedSpan } from '@/domains/traces/components/thread-trace';\n\nimport { ThreadViewSkeleton } from '@/domains/traces/components/thread-view-skeleton';\nimport { TraceFeedbackTab } from '@/domains/traces/components/trace-feedback-tab';\nimport { TraceThreadItemView } from '@/domains/traces/components/trace-thread-item-view';\nimport { TracesErrorContent } from '@/domains/traces/components/traces-error-content';\nimport { useTraceFeedback } from '@/domains/traces/hooks/use-trace-feedback';\nimport { useTraceSpans } from '@/domains/traces/hooks/use-trace-spans';\nimport { useTracesListSource } from '@/domains/traces/hooks/use-traces-list-source';\nimport { Button } from '@/ds/components/Button';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { ScorersIcon } from '@/ds/icons/ScorersIcon';\nimport { useLinkComponent } from '@/lib/framework';\n\nexport interface ThreadViewByTraceProps {\n threadId: string;\n /** Lists the thread through the trace-query API; `false` falls back to `listTracesLight`. */\n withQueryTrace: boolean;\n /** Shows the per-trace Feedback tab and fetches its feedback. */\n withFeedback: boolean;\n /** Fires when a span detail opens or closes (`null`). */\n onSelectedSpanChange?: (selected: ThreadTraceSelectedSpan | null) => void;\n /** Trace to expand and scroll to on mount (first page only). */\n anchorTraceId?: string;\n /** Opens a score from a trace's Scores tab; the app owns routing. */\n onOpenScore: (traceId: string, scoreId: string) => void;\n}\n\n/**\n * A memory thread rendered as its traces: one row per agent turn (oldest first), with the\n * reconstructed messages on the left and the span tree on the right. Clicking a span opens\n * its detail panel on the side so the conversation stays readable.\n */\nexport function ThreadViewByTrace({\n threadId,\n withQueryTrace,\n withFeedback,\n onSelectedSpanChange,\n anchorTraceId,\n onOpenScore,\n}: ThreadViewByTraceProps) {\n const { rows, isLoading, setEndOfListElement, error } = useTracesListSource({\n initialAutoRefetch: false,\n withQueryTrace,\n query: now => ({\n timeRange: {\n from: new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000).toISOString(),\n to: now.toISOString(),\n },\n where: { op: 'eq', left: { path: 'threadId' }, right: { literal: threadId } },\n orderBy: [{ field: 'startedAt', direction: 'asc' }],\n }),\n });\n const traceIds = rows.map(trace => trace.traceId);\n\n if (error) {\n return (\n <div className=\"flex h-full items-center justify-center p-4\">\n <TracesErrorContent error={error} resource=\"traces\" errorTitle=\"Failed to load traces\" />\n </div>\n );\n }\n\n if (isLoading) return <ThreadViewSkeleton />;\n\n if (traceIds.length === 0) {\n return (\n <div className=\"flex h-full items-center justify-center p-4\">\n <Txt variant=\"body\" tone=\"muted\">\n No traces found for this thread.\n </Txt>\n </div>\n );\n }\n\n return (\n <LoadedThreadViewByTrace\n key={threadId}\n traceIds={traceIds}\n setEndOfListElement={setEndOfListElement}\n withFeedback={withFeedback}\n onSelectedSpanChange={onSelectedSpanChange}\n anchorTraceId={anchorTraceId}\n onOpenScore={onOpenScore}\n />\n );\n}\n\ninterface LoadedThreadViewByTraceProps {\n traceIds: string[];\n setEndOfListElement: (node: HTMLDivElement | null) => void;\n withFeedback: boolean;\n onSelectedSpanChange?: (selected: ThreadTraceSelectedSpan | null) => void;\n anchorTraceId?: string;\n onOpenScore: (traceId: string, scoreId: string) => void;\n}\n\n/** Mounts once the first page is in, so state seeded from `traces` at mount only sees that page. */\nfunction LoadedThreadViewByTrace({\n traceIds,\n setEndOfListElement,\n withFeedback,\n onSelectedSpanChange,\n anchorTraceId: requestedAnchorTraceId,\n onOpenScore,\n}: LoadedThreadViewByTraceProps) {\n // \"Open full thread\" lands here with the originating trace: that row starts expanded and\n // scrolls into view when it mounts. Best effort on the first page only: resolved once at mount,\n // so a row that arrives on a later page is left alone.\n const [anchorTraceId] = useState(() =>\n requestedAnchorTraceId && traceIds.includes(requestedAnchorTraceId) ? requestedAnchorTraceId : null,\n );\n\n return (\n <ThreadTrace traceIds={traceIds} anchorTraceId={anchorTraceId} onSelectedSpanChange={onSelectedSpanChange}>\n <ThreadTrace.List data-testid=\"thread-view-by-trace\">\n {traceIds.map(traceId => (\n <ThreadTrace.Row key={traceId} traceId={traceId}>\n <ThreadTraceRowContent withFeedback={withFeedback} onOpenScore={onOpenScore} />\n </ThreadTrace.Row>\n ))}\n <ThreadTrace.LoadMoreSentinel ref={setEndOfListElement} />\n </ThreadTrace.List>\n <ThreadTrace.SpanPanel />\n </ThreadTrace>\n );\n}\n\nfunction ThreadTraceRowContent({\n withFeedback,\n onOpenScore,\n}: {\n withFeedback: boolean;\n onOpenScore: (traceId: string, scoreId: string) => void;\n}) {\n const { traceId, highlightSpans } = useThreadTraceRow();\n const { Link, paths } = useLinkComponent();\n const traceHref = paths.traceLink(traceId);\n // First page only, for the tab badges; the Feedback and Scores bodies own their own pagination\n // and share these queries through the React Query cache.\n const { data: feedbackData } = useTraceFeedback({ traceId, enabled: withFeedback });\n // Same query the span tree observes (passive: the tree drives refetches).\n const { data: traceData } = useTraceSpans(traceId, { passive: true });\n const rootSpanId = traceData?.spans.find(span => span.parentSpanId == null)?.spanId;\n const { data: spanScoresData } = useTraceSpanScores({ traceId, spanId: rootSpanId });\n const feedbackTotal = feedbackData?.pagination?.total;\n const scoresTotal = spanScoresData?.pagination?.total;\n\n return (\n <>\n <ThreadTrace.Messages>\n <ThreadTrace.MessagesHeader>\n <ThreadTrace.TabList>\n <ThreadTrace.Tab value=\"messages\">\n <Icon size=\"xs\">\n <MessageSquareTextIcon />\n </Icon>\n Messages\n </ThreadTrace.Tab>\n {withFeedback && (\n <ThreadTrace.Tab value=\"feedback\">\n <Icon size=\"xs\">\n <MessageSquareReplyIcon />\n </Icon>\n Feedback{feedbackTotal != null && <> ({feedbackTotal})</>}\n </ThreadTrace.Tab>\n )}\n <ThreadTrace.Tab value=\"scores\">\n <Icon size=\"xs\">\n <ScorersIcon />\n </Icon>\n Scores{scoresTotal != null && <> ({scoresTotal})</>}\n </ThreadTrace.Tab>\n </ThreadTrace.TabList>\n </ThreadTrace.MessagesHeader>\n <ThreadTrace.TabContent value=\"messages\" flush>\n <TraceThreadItemView traceId={traceId} onHighlightSpans={highlightSpans} />\n </ThreadTrace.TabContent>\n {withFeedback && (\n <ThreadTrace.TabContent value=\"feedback\" className=\"min-h-0 py-3\">\n <TraceFeedbackTab key={traceId} traceId={traceId} variant=\"thread\" />\n </ThreadTrace.TabContent>\n )}\n <ThreadTrace.TabContent value=\"scores\" className=\"min-h-0 py-3\">\n {rootSpanId ? (\n <TraceScoresTab\n key={traceId}\n traceId={traceId}\n spanId={rootSpanId}\n onScoreSelect={scoreId => onOpenScore(traceId, scoreId)}\n />\n ) : null}\n </ThreadTrace.TabContent>\n </ThreadTrace.Messages>\n <ThreadTrace.Details>\n <ThreadTrace.DetailsHeader>\n {traceHref && (\n <ThreadTrace.DetailsActions>\n <Button render={<Link href={traceHref} />} variant=\"ghost\" size=\"sm\" icon={<ExternalLinkIcon />}>\n Go to trace\n </Button>\n </ThreadTrace.DetailsActions>\n )}\n </ThreadTrace.DetailsHeader>\n <ThreadTrace.Spans />\n </ThreadTrace.Details>\n </>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"thread-view-by-trace.es.js","sources":["../../../../src/domains/traces/components/thread-view-by-trace.tsx"],"sourcesContent":["import { ExternalLinkIcon, MessageSquareReplyIcon, MessageSquareTextIcon } from 'lucide-react';\nimport { useMemo, useState } from 'react';\nimport { useTraceSpanScores, TraceScoresTab } from '@/domains/scores';\nimport { ThreadTrace, useThreadTraceRow } from '@/domains/traces/components/thread-trace';\nimport type { ThreadTraceSelectedSpan } from '@/domains/traces/components/thread-trace';\n\nimport { ThreadViewSkeleton } from '@/domains/traces/components/thread-view-skeleton';\nimport { TraceFeedbackTab } from '@/domains/traces/components/trace-feedback-tab';\nimport { TraceThreadItemView } from '@/domains/traces/components/trace-thread-item-view';\nimport { TracesErrorContent } from '@/domains/traces/components/traces-error-content';\nimport { useTraceFeedback } from '@/domains/traces/hooks/use-trace-feedback';\nimport { useTraceSpans } from '@/domains/traces/hooks/use-trace-spans';\nimport { useTracesListSource } from '@/domains/traces/hooks/use-traces-list-source';\nimport type { UseTracesListSourceArgs } from '@/domains/traces/hooks/use-traces-list-source';\nimport { Button } from '@/ds/components/Button';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { ScorersIcon } from '@/ds/icons/ScorersIcon';\nimport { useLinkComponent } from '@/lib/framework';\n\nconst THREAD_WINDOW_MS = 30 * 24 * 60 * 60 * 1000;\n\nexport interface ThreadViewByTraceProps {\n threadId: string;\n /** Lists the thread through the trace-query API; `false` falls back to `listTracesLight`. */\n withQueryTrace: boolean;\n /** Shows the per-trace Feedback tab and fetches its feedback. */\n withFeedback: boolean;\n /** Fires when a span detail opens or closes (`null`). */\n onSelectedSpanChange?: (selected: ThreadTraceSelectedSpan | null) => void;\n /** Trace to expand and scroll to on mount (first page only). */\n anchorTraceId?: string;\n /** Opens a score from a trace's Scores tab; the app owns routing. */\n onOpenScore: (traceId: string, scoreId: string) => void;\n}\n\n/**\n * A memory thread rendered as its traces: one row per agent turn (oldest first), with the\n * reconstructed messages on the left and the span tree on the right. Clicking a span opens\n * its detail panel on the side so the conversation stays readable.\n */\nexport function ThreadViewByTrace({\n threadId,\n withQueryTrace,\n withFeedback,\n onSelectedSpanChange,\n anchorTraceId,\n onOpenScore,\n}: ThreadViewByTraceProps) {\n const legacyFilters = useMemo<UseTracesListSourceArgs['legacyFilters']>(\n () => ({ threadId, startedAt: { start: new Date(Date.now() - THREAD_WINDOW_MS) } }),\n [threadId],\n );\n const { rows, isLoading, setEndOfListElement, error } = useTracesListSource({\n initialAutoRefetch: false,\n withQueryTrace,\n legacyFilters,\n query: now => ({\n timeRange: {\n from: new Date(now.getTime() - THREAD_WINDOW_MS).toISOString(),\n to: now.toISOString(),\n },\n where: { op: 'eq', left: { path: 'threadId' }, right: { literal: threadId } },\n orderBy: [{ field: 'startedAt', direction: 'asc' }],\n }),\n });\n const traceIds = rows.map(trace => trace.traceId);\n\n if (error) {\n return (\n <div className=\"flex h-full items-center justify-center p-4\">\n <TracesErrorContent error={error} resource=\"traces\" errorTitle=\"Failed to load traces\" />\n </div>\n );\n }\n\n if (isLoading) return <ThreadViewSkeleton />;\n\n if (traceIds.length === 0) {\n return (\n <div className=\"flex h-full items-center justify-center p-4\">\n <Txt variant=\"body\" tone=\"muted\">\n No traces found for this thread.\n </Txt>\n </div>\n );\n }\n\n return (\n <LoadedThreadViewByTrace\n key={threadId}\n traceIds={traceIds}\n setEndOfListElement={setEndOfListElement}\n withFeedback={withFeedback}\n onSelectedSpanChange={onSelectedSpanChange}\n anchorTraceId={anchorTraceId}\n onOpenScore={onOpenScore}\n />\n );\n}\n\ninterface LoadedThreadViewByTraceProps {\n traceIds: string[];\n setEndOfListElement: (node: HTMLDivElement | null) => void;\n withFeedback: boolean;\n onSelectedSpanChange?: (selected: ThreadTraceSelectedSpan | null) => void;\n anchorTraceId?: string;\n onOpenScore: (traceId: string, scoreId: string) => void;\n}\n\n/** Mounts once the first page is in, so state seeded from `traces` at mount only sees that page. */\nfunction LoadedThreadViewByTrace({\n traceIds,\n setEndOfListElement,\n withFeedback,\n onSelectedSpanChange,\n anchorTraceId: requestedAnchorTraceId,\n onOpenScore,\n}: LoadedThreadViewByTraceProps) {\n // \"Open full thread\" lands here with the originating trace: that row starts expanded and\n // scrolls into view when it mounts. Best effort on the first page only: resolved once at mount,\n // so a row that arrives on a later page is left alone.\n const [anchorTraceId] = useState(() =>\n requestedAnchorTraceId && traceIds.includes(requestedAnchorTraceId) ? requestedAnchorTraceId : null,\n );\n\n return (\n <ThreadTrace traceIds={traceIds} anchorTraceId={anchorTraceId} onSelectedSpanChange={onSelectedSpanChange}>\n <ThreadTrace.List data-testid=\"thread-view-by-trace\">\n {traceIds.map(traceId => (\n <ThreadTrace.Row key={traceId} traceId={traceId}>\n <ThreadTraceRowContent withFeedback={withFeedback} onOpenScore={onOpenScore} />\n </ThreadTrace.Row>\n ))}\n <ThreadTrace.LoadMoreSentinel ref={setEndOfListElement} />\n </ThreadTrace.List>\n <ThreadTrace.SpanPanel />\n </ThreadTrace>\n );\n}\n\nfunction ThreadTraceRowContent({\n withFeedback,\n onOpenScore,\n}: {\n withFeedback: boolean;\n onOpenScore: (traceId: string, scoreId: string) => void;\n}) {\n const { traceId, highlightSpans } = useThreadTraceRow();\n const { Link, paths } = useLinkComponent();\n const traceHref = paths.traceLink(traceId);\n // First page only, for the tab badges; the Feedback and Scores bodies own their own pagination\n // and share these queries through the React Query cache.\n const { data: feedbackData } = useTraceFeedback({ traceId, enabled: withFeedback });\n // Same query the span tree observes (passive: the tree drives refetches).\n const { data: traceData } = useTraceSpans(traceId, { passive: true });\n const rootSpanId = traceData?.spans.find(span => span.parentSpanId == null)?.spanId;\n const { data: spanScoresData } = useTraceSpanScores({ traceId, spanId: rootSpanId });\n const feedbackTotal = feedbackData?.pagination?.total;\n const scoresTotal = spanScoresData?.pagination?.total;\n\n return (\n <>\n <ThreadTrace.Messages>\n <ThreadTrace.MessagesHeader>\n <ThreadTrace.TabList>\n <ThreadTrace.Tab value=\"messages\">\n <Icon size=\"xs\">\n <MessageSquareTextIcon />\n </Icon>\n Messages\n </ThreadTrace.Tab>\n {withFeedback && (\n <ThreadTrace.Tab value=\"feedback\">\n <Icon size=\"xs\">\n <MessageSquareReplyIcon />\n </Icon>\n Feedback{feedbackTotal != null && <> ({feedbackTotal})</>}\n </ThreadTrace.Tab>\n )}\n <ThreadTrace.Tab value=\"scores\">\n <Icon size=\"xs\">\n <ScorersIcon />\n </Icon>\n Scores{scoresTotal != null && <> ({scoresTotal})</>}\n </ThreadTrace.Tab>\n </ThreadTrace.TabList>\n </ThreadTrace.MessagesHeader>\n <ThreadTrace.TabContent value=\"messages\" flush>\n <TraceThreadItemView traceId={traceId} onHighlightSpans={highlightSpans} />\n </ThreadTrace.TabContent>\n {withFeedback && (\n <ThreadTrace.TabContent value=\"feedback\" className=\"min-h-0 py-3\">\n <TraceFeedbackTab key={traceId} traceId={traceId} variant=\"thread\" />\n </ThreadTrace.TabContent>\n )}\n <ThreadTrace.TabContent value=\"scores\" className=\"min-h-0 py-3\">\n {rootSpanId ? (\n <TraceScoresTab\n key={traceId}\n traceId={traceId}\n spanId={rootSpanId}\n onScoreSelect={scoreId => onOpenScore(traceId, scoreId)}\n />\n ) : null}\n </ThreadTrace.TabContent>\n </ThreadTrace.Messages>\n <ThreadTrace.Details>\n <ThreadTrace.DetailsHeader>\n {traceHref && (\n <ThreadTrace.DetailsActions>\n <Button render={<Link href={traceHref} />} variant=\"ghost\" size=\"sm\" icon={<ExternalLinkIcon />}>\n Go to trace\n </Button>\n </ThreadTrace.DetailsActions>\n )}\n </ThreadTrace.DetailsHeader>\n <ThreadTrace.Spans />\n </ThreadTrace.Details>\n </>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -6,14 +6,14 @@ const jsxRuntime = require('react/jsx-runtime');
6
6
  const lucideReact = require('lucide-react');
7
7
  const React = require('react');
8
8
  const domains_traces_traceListColumns = require('../trace-list-columns.cjs.js');
9
- const Button = require('../../../Button-BnmR2HRc.cjs');
10
- const combobox = require('../../../combobox-rKV-Lksj.cjs');
9
+ const Button = require('../../../Button-CXhSUBxN.cjs');
10
+ const combobox = require('../../../combobox-DJ0c4o4S.cjs');
11
11
  require('@base-ui/react/combobox');
12
- const dialog = require('../../../dialog-DYpOpj9s.cjs');
12
+ const dialog = require('../../../dialog-d_AK1NQD.cjs');
13
13
  const dropdownMenu = require('../../../dropdown-menu-j2y37TL5.cjs');
14
- const fieldBlock = require('../../../field-block-BIDi9Bvc.cjs');
14
+ const fieldBlock = require('../../../field-block-DtaPqBa3.cjs');
15
15
  const Txt = require('../../../Txt-DPmEpNbp.cjs');
16
- const dialogAction = require('../../../dialog-action-B3AHq7mU.cjs');
16
+ const dialogAction = require('../../../dialog-action-C3Tc7ZKI.cjs');
17
17
 
18
18
  const METADATA_KEY_FIELD_NAME = "trace-metadata-key";
19
19
  const EMPTY_KEYS = [];