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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (883) hide show
  1. package/README.md +10 -0
  2. package/components.css +7 -0
  3. package/dist/{Avatar-98bsFrSV.js → Avatar-BjaG9NU_.js} +10 -8
  4. package/dist/Avatar-BjaG9NU_.js.map +1 -0
  5. package/dist/{Avatar-BCj8SvOb.cjs → Avatar-DM90rmwx.cjs} +10 -8
  6. package/dist/Avatar-DM90rmwx.cjs.map +1 -0
  7. package/dist/{Button-DH1aTzbs.cjs → Button-C4I05uT4.cjs} +17 -10
  8. package/dist/Button-C4I05uT4.cjs.map +1 -0
  9. package/dist/{Button-EGoajBQY.js → Button-D8a5EWJ5.js} +18 -11
  10. package/dist/Button-D8a5EWJ5.js.map +1 -0
  11. package/dist/{ErrorBoundary-DQPzT6am.js → ErrorBoundary-C6JifxpQ.js} +2 -2
  12. package/dist/{ErrorBoundary-DQPzT6am.js.map → ErrorBoundary-C6JifxpQ.js.map} +1 -1
  13. package/dist/{ErrorBoundary-CpUob9SO.cjs → ErrorBoundary-DP1JqmTo.cjs} +2 -2
  14. package/dist/{ErrorBoundary-CpUob9SO.cjs.map → ErrorBoundary-DP1JqmTo.cjs.map} +1 -1
  15. package/dist/Notice-BioYTS4b.js.map +1 -1
  16. package/dist/Notice-DYgIy4FO.cjs.map +1 -1
  17. package/dist/{activity-CsTUr5_l.js → activity-B7c_nQMn.js} +2 -2
  18. package/dist/activity-B7c_nQMn.js.map +1 -0
  19. package/dist/{activity-2tovEdIP.cjs → activity-D3iI9pYN.cjs} +2 -2
  20. package/dist/activity-D3iI9pYN.cjs.map +1 -0
  21. package/dist/{alert-dialog-B7JTnkF4.js → alert-dialog-B13NSeKN.js} +3 -3
  22. package/dist/{alert-dialog-B7JTnkF4.js.map → alert-dialog-B13NSeKN.js.map} +1 -1
  23. package/dist/{alert-dialog-B1gWLQm2.cjs → alert-dialog-DY2JJAnk.cjs} +3 -3
  24. package/dist/{alert-dialog-B1gWLQm2.cjs.map → alert-dialog-DY2JJAnk.cjs.map} +1 -1
  25. package/dist/arrival-C1hkyLHm.js.map +1 -1
  26. package/dist/arrival-Cvxloi0B.cjs.map +1 -1
  27. package/dist/{ask-user-card-DroerVbm.cjs → ask-user-card-DiFQcUzM.cjs} +2 -2
  28. package/dist/ask-user-card-DiFQcUzM.cjs.map +1 -0
  29. package/dist/{ask-user-card-BCjsjimu.js → ask-user-card-DnvW7jXS.js} +2 -2
  30. package/dist/{ask-user-card-BCjsjimu.js.map → ask-user-card-DnvW7jXS.js.map} +1 -1
  31. package/dist/{avatar-size-CNR0U-LW.js → avatar-size-BXzy28Bx.js} +4 -1
  32. package/dist/avatar-size-BXzy28Bx.js.map +1 -0
  33. package/dist/{avatar-size-DxStOo5A.cjs → avatar-size-DIFE4I8A.cjs} +4 -1
  34. package/dist/avatar-size-DIFE4I8A.cjs.map +1 -0
  35. package/dist/buttons-group.css +0 -4
  36. package/dist/code-DJReJPSX.cjs.map +1 -1
  37. package/dist/code-DLuATvYu.js.map +1 -1
  38. package/dist/{code-block-vpcX2sDQ.cjs → code-block-C79fiykv.cjs} +4 -4
  39. package/dist/{code-block-vpcX2sDQ.cjs.map → code-block-C79fiykv.cjs.map} +1 -1
  40. package/dist/{code-block-DIDa6lg6.js → code-block-D6A1DMv-.js} +4 -4
  41. package/dist/{code-block-DIDa6lg6.js.map → code-block-D6A1DMv-.js.map} +1 -1
  42. package/dist/{code-editor-BDxYMkGm.js → code-editor-8Fpinga4.js} +2 -2
  43. package/dist/{code-editor-BDxYMkGm.js.map → code-editor-8Fpinga4.js.map} +1 -1
  44. package/dist/{code-editor-DQuJ1XXd.cjs → code-editor-Bd-Cldem.cjs} +2 -2
  45. package/dist/{code-editor-DQuJ1XXd.cjs.map → code-editor-Bd-Cldem.cjs.map} +1 -1
  46. package/dist/{collapsible-box-B9ATVQzW.cjs → collapsible-box-CzU0OwJx.cjs} +2 -2
  47. package/dist/{collapsible-box-B9ATVQzW.cjs.map → collapsible-box-CzU0OwJx.cjs.map} +1 -1
  48. package/dist/{collapsible-box-CMBYunuM.js → collapsible-box-DotFa3hr.js} +2 -2
  49. package/dist/{collapsible-box-CMBYunuM.js.map → collapsible-box-DotFa3hr.js.map} +1 -1
  50. package/dist/{combobox-Bw13EcK0.js → combobox-BCoCVZHs.js} +7 -5
  51. package/dist/combobox-BCoCVZHs.js.map +1 -0
  52. package/dist/{combobox-BNlVCFgY.cjs → combobox-DbZAWh8q.cjs} +7 -5
  53. package/dist/combobox-DbZAWh8q.cjs.map +1 -0
  54. package/dist/{combobox-styles-Dr66ofEp.js → combobox-styles-Cens2tsx.js} +2 -2
  55. package/dist/{combobox-styles-Dr66ofEp.js.map → combobox-styles-Cens2tsx.js.map} +1 -1
  56. package/dist/{combobox-styles-BK2nGTNl.cjs → combobox-styles-Cy4rpw03.cjs} +2 -2
  57. package/dist/{combobox-styles-BK2nGTNl.cjs.map → combobox-styles-Cy4rpw03.cjs.map} +1 -1
  58. package/dist/{command-UEPxVJlE.cjs → command-Duh5C_Pm.cjs} +2 -2
  59. package/dist/command-Duh5C_Pm.cjs.map +1 -0
  60. package/dist/{command-V9rsKc7P.js → command-xIH7ZTdl.js} +2 -2
  61. package/dist/command-xIH7ZTdl.js.map +1 -0
  62. package/dist/components/AlertDialog.cjs.js +1 -1
  63. package/dist/components/AlertDialog.es.js +1 -1
  64. package/dist/components/Avatar.cjs.js +1 -1
  65. package/dist/components/Avatar.es.js +1 -1
  66. package/dist/components/Breadcrumb.cjs.js +7 -4
  67. package/dist/components/Breadcrumb.cjs.js.map +1 -1
  68. package/dist/components/Breadcrumb.es.js +7 -4
  69. package/dist/components/Breadcrumb.es.js.map +1 -1
  70. package/dist/components/Button.cjs.js +1 -1
  71. package/dist/components/Button.es.js +2 -2
  72. package/dist/components/ClampedText.cjs.js +2 -2
  73. package/dist/components/ClampedText.cjs.js.map +1 -1
  74. package/dist/components/ClampedText.es.js +2 -2
  75. package/dist/components/ClampedText.es.js.map +1 -1
  76. package/dist/components/CodeBlock.cjs.js +1 -1
  77. package/dist/components/CodeBlock.es.js +1 -1
  78. package/dist/components/CodeEditor.cjs.js +1 -1
  79. package/dist/components/CodeEditor.es.js +1 -1
  80. package/dist/components/CollapsibleBox.cjs.js +1 -1
  81. package/dist/components/CollapsibleBox.es.js +1 -1
  82. package/dist/components/Combobox.cjs.js +2 -2
  83. package/dist/components/Combobox.es.js +2 -2
  84. package/dist/components/Command.cjs.js +1 -1
  85. package/dist/components/Command.es.js +1 -1
  86. package/dist/components/CommandPalette.cjs.js +1 -1
  87. package/dist/components/CommandPalette.es.js +1 -1
  88. package/dist/components/Comment.cjs.js +2 -2
  89. package/dist/components/Comment.es.js +2 -2
  90. package/dist/components/CopyButton.cjs.js +1 -1
  91. package/dist/components/CopyButton.es.js +1 -1
  92. package/dist/components/DataCodeSection.cjs.js +1 -1
  93. package/dist/components/DataCodeSection.es.js +1 -1
  94. package/dist/components/DataDetailsPanel.cjs.js +2 -2
  95. package/dist/components/DataDetailsPanel.es.js +2 -2
  96. package/dist/components/DataKeysAndValues.cjs.js +1 -1
  97. package/dist/components/DataKeysAndValues.es.js +1 -1
  98. package/dist/components/DataList.cjs.js +15 -17
  99. package/dist/components/DataList.cjs.js.map +1 -1
  100. package/dist/components/DataList.es.js +4 -5
  101. package/dist/components/DataList.es.js.map +1 -1
  102. package/dist/components/DataPanel.cjs.js +1 -1
  103. package/dist/components/DataPanel.es.js +1 -1
  104. package/dist/components/DateRangeTimeline.cjs.js +1 -1
  105. package/dist/components/DateRangeTimeline.es.js +1 -1
  106. package/dist/components/DateTimePicker.cjs.js +2 -2
  107. package/dist/components/DateTimePicker.es.js +2 -2
  108. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  109. package/dist/components/DateTimeRangePicker.es.js +1 -1
  110. package/dist/components/Dialog.cjs.js +2 -2
  111. package/dist/components/Dialog.es.js +2 -2
  112. package/dist/components/DisabledFeatureButton.cjs.js +1 -1
  113. package/dist/components/DisabledFeatureButton.es.js +1 -1
  114. package/dist/components/Drawer.cjs.js +1 -1
  115. package/dist/components/Drawer.es.js +1 -1
  116. package/dist/components/EnvironmentVariablesEditor.cjs.js +3 -3
  117. package/dist/components/EnvironmentVariablesEditor.cjs.js.map +1 -1
  118. package/dist/components/EnvironmentVariablesEditor.es.js +3 -3
  119. package/dist/components/EnvironmentVariablesEditor.es.js.map +1 -1
  120. package/dist/components/ErrorBoundary.cjs.js +1 -1
  121. package/dist/components/ErrorBoundary.es.js +1 -1
  122. package/dist/components/FilterBar.cjs.js +8 -31
  123. package/dist/components/FilterBar.cjs.js.map +1 -1
  124. package/dist/components/FilterBar.es.js +10 -33
  125. package/dist/components/FilterBar.es.js.map +1 -1
  126. package/dist/components/FormFieldBlocks.cjs.js +3 -3
  127. package/dist/components/FormFieldBlocks.cjs.js.map +1 -1
  128. package/dist/components/FormFieldBlocks.es.js +3 -3
  129. package/dist/components/FormFieldBlocks.es.js.map +1 -1
  130. package/dist/components/InputGroup.cjs.js +1 -1
  131. package/dist/components/InputGroup.es.js +1 -1
  132. package/dist/components/InputNumber.cjs.js +2 -2
  133. package/dist/components/InputNumber.es.js +2 -2
  134. package/dist/components/JSONSchemaForm.cjs.js +2 -2
  135. package/dist/components/JSONSchemaForm.es.js +2 -2
  136. package/dist/components/ListSearch.cjs.js +1 -1
  137. package/dist/components/ListSearch.es.js +1 -1
  138. package/dist/components/LogsDataList.cjs.js +5 -2
  139. package/dist/components/LogsDataList.cjs.js.map +1 -1
  140. package/dist/components/LogsDataList.es.js +5 -2
  141. package/dist/components/LogsDataList.es.js.map +1 -1
  142. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  143. package/dist/components/MarkdownRenderer.es.js +1 -1
  144. package/dist/components/Message.cjs.js +1 -1
  145. package/dist/components/Message.es.js +1 -1
  146. package/dist/components/MetricsCard.cjs.js +1 -1
  147. package/dist/components/MetricsCard.es.js +1 -1
  148. package/dist/components/PrevNextNav.cjs.js +1 -1
  149. package/dist/components/PrevNextNav.es.js +1 -1
  150. package/dist/components/ProductAvatar.cjs.js +2 -1
  151. package/dist/components/ProductAvatar.cjs.js.map +1 -1
  152. package/dist/components/ProductAvatar.es.js +2 -1
  153. package/dist/components/ProductAvatar.es.js.map +1 -1
  154. package/dist/components/PropertyFilter.cjs.js +4 -4
  155. package/dist/components/PropertyFilter.cjs.js.map +1 -1
  156. package/dist/components/PropertyFilter.es.js +5 -5
  157. package/dist/components/PropertyFilter.es.js.map +1 -1
  158. package/dist/components/RuleBuilder.cjs.js +3 -2
  159. package/dist/components/RuleBuilder.cjs.js.map +1 -1
  160. package/dist/components/RuleBuilder.es.js +3 -2
  161. package/dist/components/RuleBuilder.es.js.map +1 -1
  162. package/dist/components/SavedViews.cjs.js +4 -8
  163. package/dist/components/SavedViews.cjs.js.map +1 -1
  164. package/dist/components/SavedViews.es.js +5 -9
  165. package/dist/components/SavedViews.es.js.map +1 -1
  166. package/dist/components/SearchInput.cjs.js +1 -1
  167. package/dist/components/SearchInput.es.js +1 -1
  168. package/dist/components/Select.cjs.js +1 -1
  169. package/dist/components/Select.es.js +1 -1
  170. package/dist/components/SideDialog.cjs.js +1 -1
  171. package/dist/components/SideDialog.es.js +1 -1
  172. package/dist/components/Sidebar.cjs.js +3 -3
  173. package/dist/components/Sidebar.cjs.js.map +1 -1
  174. package/dist/components/Sidebar.es.js +3 -3
  175. package/dist/components/Sidebar.es.js.map +1 -1
  176. package/dist/components/StatusIndicators.cjs.js.map +1 -1
  177. package/dist/components/StatusIndicators.es.js.map +1 -1
  178. package/dist/components/Table.cjs.js.map +1 -1
  179. package/dist/components/Table.es.js.map +1 -1
  180. package/dist/components/Tabs.cjs.js +1 -1
  181. package/dist/components/Tabs.es.js +1 -1
  182. package/dist/components/ThreadList.cjs.js +1 -1
  183. package/dist/components/ThreadList.es.js +1 -1
  184. package/dist/components/ThreadRail.cjs.js.map +1 -1
  185. package/dist/components/ThreadRail.es.js.map +1 -1
  186. package/dist/components/Truncate.cjs.js +1 -1
  187. package/dist/components/Truncate.es.js +1 -1
  188. package/dist/components/Workflow.cjs.js +6 -6
  189. package/dist/components/Workflow.es.js +6 -6
  190. package/dist/components/ai/activity.cjs.js +4 -4
  191. package/dist/components/ai/activity.es.js +4 -4
  192. package/dist/components/ai/ask-user.cjs.js +1 -1
  193. package/dist/components/ai/ask-user.es.js +1 -1
  194. package/dist/components/ai/plan.cjs.js +1 -1
  195. package/dist/components/ai/plan.es.js +1 -1
  196. package/dist/components/ai/tool-approval.cjs.js +1 -1
  197. package/dist/components/ai/tool-approval.es.js +1 -1
  198. package/dist/components/ai/tool-call.cjs.js +4 -4
  199. package/dist/components/ai/tool-call.es.js +4 -4
  200. package/dist/composer-Bs4iyUfe.js.map +1 -1
  201. package/dist/composer-CDQnP3og.cjs.map +1 -1
  202. package/dist/context-menu-C67xhcfa.js.map +1 -1
  203. package/dist/context-menu-jNuzE86D.cjs.map +1 -1
  204. package/dist/{copy-button-Cd0keCti.cjs → copy-button-BC02oZJo.cjs} +2 -2
  205. package/dist/{copy-button-Cd0keCti.cjs.map → copy-button-BC02oZJo.cjs.map} +1 -1
  206. package/dist/{copy-button-C_M3Tu_-.js → copy-button-B_i9lwFJ.js} +2 -2
  207. package/dist/{copy-button-C_M3Tu_-.js.map → copy-button-B_i9lwFJ.js.map} +1 -1
  208. package/dist/{data-code-section-lj3PaHjc.cjs → data-code-section-BJa6NDgN.cjs} +5 -5
  209. package/dist/{data-code-section-lj3PaHjc.cjs.map → data-code-section-BJa6NDgN.cjs.map} +1 -1
  210. package/dist/{data-code-section-mpRgtM8j.js → data-code-section-Cjs-piiY.js} +5 -5
  211. package/dist/{data-code-section-mpRgtM8j.js.map → data-code-section-Cjs-piiY.js.map} +1 -1
  212. package/dist/{data-keys-and-values-1lYi60YK.cjs → data-keys-and-values-DBXIqeXt.cjs} +2 -2
  213. package/dist/data-keys-and-values-DBXIqeXt.cjs.map +1 -0
  214. package/dist/{data-keys-and-values-CHpxKsfq.js → data-keys-and-values-DHp6cHJo.js} +2 -2
  215. package/dist/data-keys-and-values-DHp6cHJo.js.map +1 -0
  216. package/dist/{data-list-top-DJh08vFA.cjs → data-list-DlXU1PLQ.cjs} +339 -13
  217. package/dist/data-list-DlXU1PLQ.cjs.map +1 -0
  218. package/dist/{data-list-top-T-mtdIUp.js → data-list-Tor18oy5.js} +332 -5
  219. package/dist/data-list-Tor18oy5.js.map +1 -0
  220. package/dist/{data-list-skeleton-bNfITSHs.js → data-list-skeleton-CXUB-u3p.js} +2 -2
  221. package/dist/{data-list-skeleton-bNfITSHs.js.map → data-list-skeleton-CXUB-u3p.js.map} +1 -1
  222. package/dist/{data-list-skeleton-sdcaabdX.cjs → data-list-skeleton-DY0F40WQ.cjs} +6 -6
  223. package/dist/{data-list-skeleton-sdcaabdX.cjs.map → data-list-skeleton-DY0F40WQ.cjs.map} +1 -1
  224. package/dist/{data-panel-BkfjzriB.cjs → data-panel-DGNV14pm.cjs} +20 -9
  225. package/dist/data-panel-DGNV14pm.cjs.map +1 -0
  226. package/dist/{data-panel-CMkR6Avv.js → data-panel-DjtnX70w.js} +20 -9
  227. package/dist/data-panel-DjtnX70w.js.map +1 -0
  228. package/dist/{date-time-range-picker-BjQVCVUM.cjs → date-time-range-picker-CXGab8Nj.cjs} +3 -3
  229. package/dist/{date-time-range-picker-BjQVCVUM.cjs.map → date-time-range-picker-CXGab8Nj.cjs.map} +1 -1
  230. package/dist/{date-time-range-picker-D-EECKzz.js → date-time-range-picker-CcnDMZJu.js} +3 -3
  231. package/dist/{date-time-range-picker-D-EECKzz.js.map → date-time-range-picker-CcnDMZJu.js.map} +1 -1
  232. package/dist/{dialog-j2e95YNV.js → dialog-AzCRnEo3.js} +3 -3
  233. package/dist/{dialog-j2e95YNV.js.map → dialog-AzCRnEo3.js.map} +1 -1
  234. package/dist/{dialog-BMUfQ9XU.cjs → dialog-SSeOqRnH.cjs} +3 -3
  235. package/dist/{dialog-BMUfQ9XU.cjs.map → dialog-SSeOqRnH.cjs.map} +1 -1
  236. package/dist/{dialog-action-CmFDNyZX.cjs → dialog-action-Caa-pb85.cjs} +3 -3
  237. package/dist/{dialog-action-CmFDNyZX.cjs.map → dialog-action-Caa-pb85.cjs.map} +1 -1
  238. package/dist/{dialog-action-zKqvuroE.js → dialog-action-DykMOK2W.js} +3 -3
  239. package/dist/{dialog-action-zKqvuroE.js.map → dialog-action-DykMOK2W.js.map} +1 -1
  240. package/dist/domains/auth/components/session-expired.cjs.js +1 -1
  241. package/dist/domains/auth/components/session-expired.es.js +1 -1
  242. package/dist/domains/chat/attachments/attachment-preview-dialog.cjs.js +2 -2
  243. package/dist/domains/chat/attachments/attachment-preview-dialog.es.js +2 -2
  244. package/dist/domains/chat/attachments/composer-attachment.cjs.js +1 -1
  245. package/dist/domains/chat/attachments/composer-attachment.es.js +1 -1
  246. package/dist/domains/chat/components/badge-wrapper.cjs.js +1 -1
  247. package/dist/domains/chat/components/badge-wrapper.es.js +1 -1
  248. package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +3 -3
  249. package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +3 -3
  250. package/dist/domains/chat/messages/assistant-message-actions.cjs.js +2 -2
  251. package/dist/domains/chat/messages/assistant-message-actions.es.js +2 -2
  252. package/dist/domains/chat/messages/dataset-save-action.cjs.js +5 -5
  253. package/dist/domains/chat/messages/dataset-save-action.es.js +5 -5
  254. package/dist/domains/chat/messages/message-row.cjs.js +4 -4
  255. package/dist/domains/chat/messages/message-row.es.js +4 -4
  256. package/dist/domains/chat/messages/notification-signal-notice.cjs.js +1 -1
  257. package/dist/domains/chat/messages/notification-signal-notice.es.js +1 -1
  258. package/dist/domains/chat/messages/renderers/message-text.cjs.js +1 -1
  259. package/dist/domains/chat/messages/renderers/message-text.cjs.js.map +1 -1
  260. package/dist/domains/chat/messages/renderers/message-text.es.js +1 -1
  261. package/dist/domains/chat/messages/renderers/message-text.es.js.map +1 -1
  262. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
  263. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
  264. package/dist/domains/chat/messages/signal-badge.cjs.js +1 -1
  265. package/dist/domains/chat/messages/signal-badge.es.js +1 -1
  266. package/dist/domains/chat/messages/skill-message.cjs.js +3 -3
  267. package/dist/domains/chat/messages/skill-message.es.js +3 -3
  268. package/dist/domains/chat/messages/system-reminder-badge.cjs.js +1 -1
  269. package/dist/domains/chat/messages/system-reminder-badge.es.js +1 -1
  270. package/dist/domains/chat/om/om-parts-converter.cjs.js.map +1 -1
  271. package/dist/domains/chat/om/om-parts-converter.es.js.map +1 -1
  272. package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
  273. package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
  274. package/dist/domains/chat/tools/badges/agent-badge.cjs.js +4 -4
  275. package/dist/domains/chat/tools/badges/agent-badge.es.js +4 -4
  276. package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
  277. package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
  278. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.cjs.js +3 -3
  279. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.cjs.js.map +1 -1
  280. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js +3 -3
  281. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js.map +1 -1
  282. package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +2 -2
  283. package/dist/domains/chat/tools/badges/code-mode-badge.es.js +2 -2
  284. package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +2 -2
  285. package/dist/domains/chat/tools/badges/file-tree-badge.es.js +2 -2
  286. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +2 -2
  287. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +2 -2
  288. package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +2 -2
  289. package/dist/domains/chat/tools/badges/observation-marker-details.es.js +2 -2
  290. package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +1 -1
  291. package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
  292. package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js +1 -1
  293. package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js +1 -1
  294. package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +1 -1
  295. package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
  296. package/dist/domains/chat/tools/badges/tool-badge.cjs.js +3 -3
  297. package/dist/domains/chat/tools/badges/tool-badge.es.js +3 -3
  298. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +6 -3
  299. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js.map +1 -1
  300. package/dist/domains/chat/tools/badges/workflow-badge.es.js +6 -3
  301. package/dist/domains/chat/tools/badges/workflow-badge.es.js.map +1 -1
  302. package/dist/domains/chat/tools/submit-plan-tool.cjs.js +2 -2
  303. package/dist/domains/chat/tools/submit-plan-tool.es.js +2 -2
  304. package/dist/domains/chat/tools/tool-card.cjs.js +1 -1
  305. package/dist/domains/chat/tools/tool-card.es.js +1 -1
  306. package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js +4 -4
  307. package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js +4 -4
  308. package/dist/domains/logs/components/log-data-panel.cjs.js +4 -4
  309. package/dist/domains/logs/components/log-data-panel.es.js +4 -4
  310. package/dist/domains/logs/components/logs-list-view.cjs.js +3 -2
  311. package/dist/domains/logs/components/logs-list-view.cjs.js.map +1 -1
  312. package/dist/domains/logs/components/logs-list-view.es.js +3 -2
  313. package/dist/domains/logs/components/logs-list-view.es.js.map +1 -1
  314. package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
  315. package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
  316. package/dist/domains/logs/components/no-logs-info.cjs.js +1 -1
  317. package/dist/domains/logs/components/no-logs-info.es.js +1 -1
  318. package/dist/domains/mcps/components/mcp-app-viewer.cjs.js.map +1 -1
  319. package/dist/domains/mcps/components/mcp-app-viewer.es.js.map +1 -1
  320. package/dist/domains/memory/components/flame-graph.cjs.js +1 -1
  321. package/dist/domains/memory/components/flame-graph.es.js +1 -1
  322. package/dist/domains/memory/components/memory-studio-panel.cjs.js +1 -1
  323. package/dist/domains/memory/components/memory-studio-panel.es.js +1 -1
  324. package/dist/domains/metrics/components/agent-runs-card.cjs.js +1 -1
  325. package/dist/domains/metrics/components/agent-runs-card.es.js +1 -1
  326. package/dist/domains/metrics/components/card-action-buttons.cjs.js +1 -1
  327. package/dist/domains/metrics/components/card-action-buttons.es.js +1 -1
  328. package/dist/domains/metrics/components/chart-area.cjs.js +1 -1
  329. package/dist/domains/metrics/components/chart-area.es.js +1 -1
  330. package/dist/domains/metrics/components/chart-card-error.cjs.js +1 -1
  331. package/dist/domains/metrics/components/chart-card-error.es.js +1 -1
  332. package/dist/domains/metrics/components/chart-card.cjs.js +1 -1
  333. package/dist/domains/metrics/components/chart-card.es.js +1 -1
  334. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  335. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  336. package/dist/domains/metrics/components/failure-rate-card.cjs.js +1 -1
  337. package/dist/domains/metrics/components/failure-rate-card.es.js +1 -1
  338. package/dist/domains/metrics/components/latency-card.cjs.js +1 -1
  339. package/dist/domains/metrics/components/latency-card.es.js +1 -1
  340. package/dist/domains/metrics/components/scores-card.cjs.js +1 -1
  341. package/dist/domains/metrics/components/scores-card.es.js +1 -1
  342. package/dist/domains/metrics/components/token-usage-card.cjs.js +1 -1
  343. package/dist/domains/metrics/components/token-usage-card.es.js +1 -1
  344. package/dist/domains/metrics/components/trace-volume-card.cjs.js +1 -1
  345. package/dist/domains/metrics/components/trace-volume-card.es.js +1 -1
  346. package/dist/domains/metrics/components/usage-card.cjs.js +1 -1
  347. package/dist/domains/metrics/components/usage-card.es.js +1 -1
  348. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js +4 -4
  349. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js +4 -4
  350. package/dist/domains/scores/components/score-data-panel.cjs.js +3 -3
  351. package/dist/domains/scores/components/score-data-panel.es.js +3 -3
  352. package/dist/domains/scores/components/span-scoring.cjs.js +3 -3
  353. package/dist/domains/scores/components/span-scoring.es.js +3 -3
  354. package/dist/domains/scores/components/trace-scores-tab.cjs.js +2 -1
  355. package/dist/domains/scores/components/trace-scores-tab.cjs.js.map +1 -1
  356. package/dist/domains/scores/components/trace-scores-tab.es.js +2 -1
  357. package/dist/domains/scores/components/trace-scores-tab.es.js.map +1 -1
  358. package/dist/domains/traces/components/feedback-thread.cjs.js +4 -4
  359. package/dist/domains/traces/components/feedback-thread.cjs.js.map +1 -1
  360. package/dist/domains/traces/components/feedback-thread.es.js +4 -4
  361. package/dist/domains/traces/components/feedback-thread.es.js.map +1 -1
  362. package/dist/domains/traces/components/shared.cjs.js +4 -3
  363. package/dist/domains/traces/components/shared.cjs.js.map +1 -1
  364. package/dist/domains/traces/components/shared.es.js +5 -4
  365. package/dist/domains/traces/components/shared.es.js.map +1 -1
  366. package/dist/domains/traces/components/span-data-panel-view.cjs.js +4 -4
  367. package/dist/domains/traces/components/span-data-panel-view.cjs.js.map +1 -1
  368. package/dist/domains/traces/components/span-data-panel-view.es.js +4 -4
  369. package/dist/domains/traces/components/span-data-panel-view.es.js.map +1 -1
  370. package/dist/domains/traces/components/span-details-view.cjs.js +1 -1
  371. package/dist/domains/traces/components/span-details-view.es.js +1 -1
  372. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +2 -2
  373. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +2 -2
  374. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +2 -2
  375. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +2 -2
  376. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +3 -3
  377. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +3 -3
  378. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +2 -2
  379. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +2 -2
  380. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +2 -2
  381. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +2 -2
  382. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +2 -2
  383. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +2 -2
  384. package/dist/domains/traces/components/span-payload/span-payload-registry.cjs.js.map +1 -1
  385. package/dist/domains/traces/components/span-payload/span-payload-registry.es.js.map +1 -1
  386. package/dist/domains/traces/components/span-payload/span-payload-section.cjs.js +3 -3
  387. package/dist/domains/traces/components/span-payload/span-payload-section.es.js +3 -3
  388. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +2 -2
  389. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +2 -2
  390. package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js +2 -2
  391. package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +2 -2
  392. package/dist/domains/traces/components/span-rows.cjs.js +5 -0
  393. package/dist/domains/traces/components/span-rows.cjs.js.map +1 -1
  394. package/dist/domains/traces/components/span-rows.es.js +5 -0
  395. package/dist/domains/traces/components/span-rows.es.js.map +1 -1
  396. package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
  397. package/dist/domains/traces/components/span-summary-description.es.js +1 -1
  398. package/dist/domains/traces/components/span-timeline-row.cjs.js +34 -28
  399. package/dist/domains/traces/components/span-timeline-row.cjs.js.map +1 -1
  400. package/dist/domains/traces/components/span-timeline-row.es.js +34 -28
  401. package/dist/domains/traces/components/span-timeline-row.es.js.map +1 -1
  402. package/dist/domains/traces/components/span-timing-hover-card.cjs.js +1 -1
  403. package/dist/domains/traces/components/span-timing-hover-card.es.js +1 -1
  404. package/dist/domains/traces/components/span-token-usage.cjs.js +1 -1
  405. package/dist/domains/traces/components/span-token-usage.es.js +1 -1
  406. package/dist/domains/traces/components/span-tree-rail.cjs.js +50 -0
  407. package/dist/domains/traces/components/span-tree-rail.cjs.js.map +1 -0
  408. package/dist/domains/traces/components/span-tree-rail.d.ts +2 -0
  409. package/dist/domains/traces/components/span-tree-rail.es.js +42 -0
  410. package/dist/domains/traces/components/span-tree-rail.es.js.map +1 -0
  411. package/dist/domains/traces/components/span-tree-row.cjs.js +2 -2
  412. package/dist/domains/traces/components/span-tree-row.cjs.js.map +1 -1
  413. package/dist/domains/traces/components/span-tree-row.es.js +2 -2
  414. package/dist/domains/traces/components/span-tree-row.es.js.map +1 -1
  415. package/dist/domains/traces/components/span-type-badge.cjs.js +29 -0
  416. package/dist/domains/traces/components/span-type-badge.cjs.js.map +1 -0
  417. package/dist/domains/traces/components/span-type-badge.d.ts +2 -0
  418. package/dist/domains/traces/components/span-type-badge.es.js +25 -0
  419. package/dist/domains/traces/components/span-type-badge.es.js.map +1 -0
  420. package/dist/domains/traces/components/span-type-legend.cjs.js +2 -2
  421. package/dist/domains/traces/components/span-type-legend.cjs.js.map +1 -1
  422. package/dist/domains/traces/components/span-type-legend.es.js +2 -2
  423. package/dist/domains/traces/components/span-type-legend.es.js.map +1 -1
  424. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
  425. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
  426. package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +1 -1
  427. package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +1 -1
  428. package/dist/domains/traces/components/thread-trace/thread-trace-row.cjs.js.map +1 -1
  429. package/dist/domains/traces/components/thread-trace/thread-trace-row.es.js.map +1 -1
  430. package/dist/domains/traces/components/thread-trace/thread-trace-spans.cjs.js +2 -2
  431. package/dist/domains/traces/components/thread-trace/thread-trace-spans.es.js +2 -2
  432. package/dist/domains/traces/components/thread-view-by-trace.cjs.js +2 -1
  433. package/dist/domains/traces/components/thread-view-by-trace.cjs.js.map +1 -1
  434. package/dist/domains/traces/components/thread-view-by-trace.es.js +2 -1
  435. package/dist/domains/traces/components/thread-view-by-trace.es.js.map +1 -1
  436. package/dist/domains/traces/components/timeline-name-col.cjs.js +53 -27
  437. package/dist/domains/traces/components/timeline-name-col.cjs.js.map +1 -1
  438. package/dist/domains/traces/components/timeline-name-col.es.js +54 -28
  439. package/dist/domains/traces/components/timeline-name-col.es.js.map +1 -1
  440. package/dist/domains/traces/components/timeline-structure-sign.cjs.js +23 -14
  441. package/dist/domains/traces/components/timeline-structure-sign.cjs.js.map +1 -1
  442. package/dist/domains/traces/components/timeline-structure-sign.es.js +24 -15
  443. package/dist/domains/traces/components/timeline-structure-sign.es.js.map +1 -1
  444. package/dist/domains/traces/components/trace-columns-menu.cjs.js +4 -4
  445. package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
  446. package/dist/domains/traces/components/trace-columns-menu.es.js +4 -4
  447. package/dist/domains/traces/components/trace-columns-menu.es.js.map +1 -1
  448. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +32 -5
  449. package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
  450. package/dist/domains/traces/components/trace-data-panel-view.es.js +32 -5
  451. package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
  452. package/dist/domains/traces/components/trace-data-panel.cjs.js +5 -2
  453. package/dist/domains/traces/components/trace-data-panel.cjs.js.map +1 -1
  454. package/dist/domains/traces/components/trace-data-panel.es.js +5 -2
  455. package/dist/domains/traces/components/trace-data-panel.es.js.map +1 -1
  456. package/dist/domains/traces/components/trace-error-cell.cjs.js +35 -0
  457. package/dist/domains/traces/components/trace-error-cell.cjs.js.map +1 -0
  458. package/dist/domains/traces/components/trace-error-cell.d.ts +2 -0
  459. package/dist/domains/traces/components/trace-error-cell.es.js +31 -0
  460. package/dist/domains/traces/components/trace-error-cell.es.js.map +1 -0
  461. package/dist/domains/traces/components/trace-error-details.cjs.js +22 -0
  462. package/dist/domains/traces/components/trace-error-details.cjs.js.map +1 -0
  463. package/dist/domains/traces/components/trace-error-details.d.ts +2 -0
  464. package/dist/domains/traces/components/trace-error-details.es.js +18 -0
  465. package/dist/domains/traces/components/trace-error-details.es.js.map +1 -0
  466. package/dist/domains/traces/components/trace-error-summary.cjs.js +31 -0
  467. package/dist/domains/traces/components/trace-error-summary.cjs.js.map +1 -0
  468. package/dist/domains/traces/components/trace-error-summary.d.ts +2 -0
  469. package/dist/domains/traces/components/trace-error-summary.es.js +27 -0
  470. package/dist/domains/traces/components/trace-error-summary.es.js.map +1 -0
  471. package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
  472. package/dist/domains/traces/components/trace-id-button.es.js +1 -1
  473. package/dist/domains/traces/components/trace-span-panel.cjs.js +1 -1
  474. package/dist/domains/traces/components/trace-span-panel.es.js +1 -1
  475. package/dist/domains/traces/components/trace-span-tree-skeleton.cjs.js +7 -7
  476. package/dist/domains/traces/components/trace-span-tree-skeleton.cjs.js.map +1 -1
  477. package/dist/domains/traces/components/trace-span-tree-skeleton.es.js +7 -7
  478. package/dist/domains/traces/components/trace-span-tree-skeleton.es.js.map +1 -1
  479. package/dist/domains/traces/components/trace-span-tree.cjs.js +1 -2
  480. package/dist/domains/traces/components/trace-span-tree.cjs.js.map +1 -1
  481. package/dist/domains/traces/components/trace-span-tree.es.js +2 -3
  482. package/dist/domains/traces/components/trace-span-tree.es.js.map +1 -1
  483. package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
  484. package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
  485. package/dist/domains/traces/components/trace-thread-item-view.cjs.js +1 -1
  486. package/dist/domains/traces/components/trace-thread-item-view.es.js +1 -1
  487. package/dist/domains/traces/components/trace-thread-panel.cjs.js +1 -1
  488. package/dist/domains/traces/components/trace-thread-panel.es.js +1 -1
  489. package/dist/domains/traces/components/trace-time-range-chip.cjs.js +2 -2
  490. package/dist/domains/traces/components/trace-time-range-chip.es.js +2 -2
  491. package/dist/domains/traces/components/traces-list-mode-toggle.cjs.js +1 -1
  492. package/dist/domains/traces/components/traces-list-mode-toggle.es.js +1 -1
  493. package/dist/domains/traces/components/traces-list-view.cjs.js +10 -7
  494. package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
  495. package/dist/domains/traces/components/traces-list-view.es.js +9 -6
  496. package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
  497. package/dist/domains/traces/components/traces-page-skeleton.cjs.js +4 -1
  498. package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
  499. package/dist/domains/traces/components/traces-page-skeleton.es.js +4 -1
  500. package/dist/domains/traces/components/traces-page-skeleton.es.js.map +1 -1
  501. package/dist/domains/traces/hooks/use-trace-list-navigation.cjs.js.map +1 -1
  502. package/dist/domains/traces/hooks/use-trace-list-navigation.es.js.map +1 -1
  503. package/dist/domains/traces/utils/flatten-to-search-text.cjs.js.map +1 -1
  504. package/dist/domains/traces/utils/flatten-to-search-text.es.js.map +1 -1
  505. package/dist/domains/workflows/components/workflow-combobox.cjs.js +1 -1
  506. package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
  507. package/dist/domains/workflows/components/workflow-information.cjs.js +1 -1
  508. package/dist/domains/workflows/components/workflow-information.es.js +1 -1
  509. package/dist/domains/workflows/components/workflow-step-detail.cjs.js +3 -3
  510. package/dist/domains/workflows/components/workflow-step-detail.es.js +3 -3
  511. package/dist/domains/workflows/components/workflows-list/no-workflows-info.cjs.js +1 -1
  512. package/dist/domains/workflows/components/workflows-list/no-workflows-info.es.js +1 -1
  513. package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +2 -2
  514. package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +2 -2
  515. package/dist/domains/workflows/runs/workflow-run-list.cjs.js +2 -2
  516. package/dist/domains/workflows/runs/workflow-run-list.es.js +2 -2
  517. package/dist/domains/workflows/workflow/data/workflow-data-button.cjs.js +1 -1
  518. package/dist/domains/workflows/workflow/data/workflow-data-button.es.js +1 -1
  519. package/dist/domains/workflows/workflow/data/workflow-data-inspector.cjs.js +2 -2
  520. package/dist/domains/workflows/workflow/data/workflow-data-inspector.es.js +2 -2
  521. package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js +1 -1
  522. package/dist/domains/workflows/workflow/input/workflow-json-input.es.js +1 -1
  523. package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js +1 -1
  524. package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js +1 -1
  525. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.cjs.js +2 -2
  526. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +2 -2
  527. package/dist/domains/workflows/workflow/workflow-body-graph.cjs.js +1 -1
  528. package/dist/domains/workflows/workflow/workflow-body-graph.es.js +1 -1
  529. package/dist/domains/workflows/workflow/workflow-cancel-button.cjs.js +1 -1
  530. package/dist/domains/workflows/workflow/workflow-cancel-button.es.js +1 -1
  531. package/dist/domains/workflows/workflow/workflow-data-edge.cjs.js +1 -1
  532. package/dist/domains/workflows/workflow/workflow-data-edge.es.js +1 -1
  533. package/dist/domains/workflows/workflow/workflow-debug-step-controls.cjs.js +1 -1
  534. package/dist/domains/workflows/workflow/workflow-debug-step-controls.es.js +1 -1
  535. package/dist/domains/workflows/workflow/workflow-graph-boundary.cjs.js +3 -3
  536. package/dist/domains/workflows/workflow/workflow-graph-boundary.es.js +3 -3
  537. package/dist/domains/workflows/workflow/workflow-graph-inner.cjs.js +2 -2
  538. package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +2 -2
  539. package/dist/domains/workflows/workflow/workflow-graph-node.cjs.js +2 -2
  540. package/dist/domains/workflows/workflow/workflow-graph-node.es.js +2 -2
  541. package/dist/domains/workflows/workflow/workflow-input-data.cjs.js +1 -1
  542. package/dist/domains/workflows/workflow/workflow-input-data.cjs.js.map +1 -1
  543. package/dist/domains/workflows/workflow/workflow-input-data.es.js +1 -1
  544. package/dist/domains/workflows/workflow/workflow-input-data.es.js.map +1 -1
  545. package/dist/domains/workflows/workflow/workflow-map-config-dialog.cjs.js +3 -3
  546. package/dist/domains/workflows/workflow/workflow-map-config-dialog.es.js +3 -3
  547. package/dist/domains/workflows/workflow/workflow-nested-graph.cjs.js +3 -3
  548. package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +3 -3
  549. package/dist/domains/workflows/workflow/workflow-run-data.cjs.js +2 -2
  550. package/dist/domains/workflows/workflow/workflow-run-data.es.js +2 -2
  551. package/dist/domains/workflows/workflow/workflow-run-header.cjs.js +1 -1
  552. package/dist/domains/workflows/workflow/workflow-run-header.es.js +1 -1
  553. package/dist/domains/workflows/workflow/workflow-status.cjs.js +1 -1
  554. package/dist/domains/workflows/workflow/workflow-status.es.js +1 -1
  555. package/dist/domains/workflows/workflow/workflow-step-action-bar.cjs.js +3 -3
  556. package/dist/domains/workflows/workflow/workflow-step-action-bar.es.js +3 -3
  557. package/dist/domains/workflows/workflow/workflow-suspended-steps.cjs.js +1 -1
  558. package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +1 -1
  559. package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +1 -1
  560. package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +1 -1
  561. package/dist/domains/workflows/workflow/workflow-timeline-row.cjs.js +1 -1
  562. package/dist/domains/workflows/workflow/workflow-timeline-row.es.js +1 -1
  563. package/dist/domains/workflows/workflow/workflow-timeline.cjs.js +1 -1
  564. package/dist/domains/workflows/workflow/workflow-timeline.es.js +1 -1
  565. package/dist/domains/workflows/workflow/workflow-trigger-form.cjs.js +1 -1
  566. package/dist/domains/workflows/workflow/workflow-trigger-form.es.js +1 -1
  567. package/dist/domains/workflows/workflow/workflow-trigger-header.cjs.js +1 -1
  568. package/dist/domains/workflows/workflow/workflow-trigger-header.es.js +1 -1
  569. package/dist/domains/workspace/components/workspace-active-file.cjs.js +1 -1
  570. package/dist/domains/workspace/components/workspace-active-file.es.js +1 -1
  571. package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +5 -5
  572. package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +5 -5
  573. package/dist/domains/workspace/components/workspace-add-skill.cjs.js +1 -1
  574. package/dist/domains/workspace/components/workspace-add-skill.es.js +1 -1
  575. package/dist/domains/workspace/components/workspace-create-directory.cjs.js +2 -2
  576. package/dist/domains/workspace/components/workspace-create-directory.es.js +2 -2
  577. package/dist/domains/workspace/components/workspace-markdown-preview.cjs.js +2 -2
  578. package/dist/domains/workspace/components/workspace-markdown-preview.es.js +2 -2
  579. package/dist/domains/workspace/components/workspace-search.cjs.js +1 -1
  580. package/dist/domains/workspace/components/workspace-search.es.js +1 -1
  581. package/dist/domains/workspace/components/workspace-tree.cjs.js +2 -2
  582. package/dist/domains/workspace/components/workspace-tree.es.js +2 -2
  583. package/dist/{drawer-DROYPMUm.cjs → drawer-DdTU-nBR.cjs} +2 -2
  584. package/dist/{drawer-DROYPMUm.cjs.map → drawer-DdTU-nBR.cjs.map} +1 -1
  585. package/dist/{drawer-C-8E9yHN.js → drawer-mj-G7-Tu.js} +2 -2
  586. package/dist/{drawer-C-8E9yHN.js.map → drawer-mj-G7-Tu.js.map} +1 -1
  587. package/dist/dropdown-menu-CQ_48tVI.js.map +1 -1
  588. package/dist/dropdown-menu-CsynT1aD.cjs.map +1 -1
  589. package/dist/ee/signals/components/entity-index-list.cjs.js +3 -1
  590. package/dist/ee/signals/components/entity-index-list.cjs.js.map +1 -1
  591. package/dist/ee/signals/components/entity-index-list.es.js +3 -1
  592. package/dist/ee/signals/components/entity-index-list.es.js.map +1 -1
  593. package/dist/ee/signals/components/signals-empty-state.cjs.js +1 -1
  594. package/dist/ee/signals/components/signals-empty-state.es.js +1 -1
  595. package/dist/ee/signals/components/trace-intelligence-entity-detail.cjs.js.map +1 -1
  596. package/dist/ee/signals/components/trace-intelligence-entity-detail.es.js.map +1 -1
  597. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +6 -4
  598. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js.map +1 -1
  599. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +6 -4
  600. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js.map +1 -1
  601. package/dist/ee/signals/examples-pager.cjs.js +1 -1
  602. package/dist/ee/signals/examples-pager.es.js +1 -1
  603. package/dist/ee/signals/noise-detail-panel.cjs.js +1 -1
  604. package/dist/ee/signals/noise-detail-panel.es.js +1 -1
  605. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +2 -2
  606. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +2 -2
  607. package/dist/ee/signals/settings/trace-signal-settings.cjs.js +1 -1
  608. package/dist/ee/signals/settings/trace-signal-settings.es.js +1 -1
  609. package/dist/ee/signals/signals-error-state.cjs.js +1 -1
  610. package/dist/ee/signals/signals-error-state.es.js +1 -1
  611. package/dist/ee/signals/snapshot-timeline.cjs.js +1 -1
  612. package/dist/ee/signals/snapshot-timeline.es.js +1 -1
  613. package/dist/ee/signals/theme-detail-panel.cjs.js +1 -1
  614. package/dist/ee/signals/theme-detail-panel.es.js +1 -1
  615. package/dist/ee/signals/theme-filter-banner.cjs.js +1 -1
  616. package/dist/ee/signals/theme-filter-banner.es.js +1 -1
  617. package/dist/ee/signals/trace-insight-view.cjs.js +1 -1
  618. package/dist/ee/signals/trace-insight-view.es.js +1 -1
  619. package/dist/ee/signals/trace-intelligence-provider.cjs.js.map +1 -1
  620. package/dist/ee/signals/trace-intelligence-provider.es.js.map +1 -1
  621. package/dist/ee/signals/view-mode-tab.cjs.js +1 -1
  622. package/dist/ee/signals/view-mode-tab.es.js +1 -1
  623. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +3 -3
  624. package/dist/ee/topics/components/topic-trace-summary-list.es.js +3 -3
  625. package/dist/{field-error-id-Dbe6IInA.cjs → field-error-id-0yYYU0ar.cjs} +2 -2
  626. package/dist/{field-error-id-Dbe6IInA.cjs.map → field-error-id-0yYYU0ar.cjs.map} +1 -1
  627. package/dist/{field-error-id-Sqhk00e4.js → field-error-id-CdzuQK5c.js} +2 -2
  628. package/dist/{field-error-id-Sqhk00e4.js.map → field-error-id-CdzuQK5c.js.map} +1 -1
  629. package/dist/{filter-bar-chip-BarAq1S2.js → filter-bar-chip-C9CXOudu.js} +3 -3
  630. package/dist/filter-bar-chip-C9CXOudu.js.map +1 -0
  631. package/dist/{filter-bar-chip-BJJ6ytJ4.cjs → filter-bar-chip-DgvuQv6c.cjs} +3 -3
  632. package/dist/filter-bar-chip-DgvuQv6c.cjs.map +1 -0
  633. package/dist/hooks/use-environment-variables-editor.cjs.js.map +1 -1
  634. package/dist/hooks/use-environment-variables-editor.es.js.map +1 -1
  635. package/dist/hooks/use-fluid-hover.cjs.js.map +1 -1
  636. package/dist/hooks/use-fluid-hover.es.js.map +1 -1
  637. package/dist/icons/Icon.cjs.js.map +1 -1
  638. package/dist/icons/Icon.es.js.map +1 -1
  639. package/dist/icons/SkillIcon.cjs.js.map +1 -1
  640. package/dist/icons/SkillIcon.es.js.map +1 -1
  641. package/dist/icons/icon-size-classes.cjs.js +4 -4
  642. package/dist/icons/icon-size-classes.cjs.js.map +1 -1
  643. package/dist/icons/icon-size-classes.es.js +4 -4
  644. package/dist/icons/icon-size-classes.es.js.map +1 -1
  645. package/dist/{input-group-CiBbTaPP.js → input-group-BAg6iSIe.js} +2 -2
  646. package/dist/{input-group-CiBbTaPP.js.map → input-group-BAg6iSIe.js.map} +1 -1
  647. package/dist/{input-group-DSW5WoSU.cjs → input-group-DRXUthxe.cjs} +2 -2
  648. package/dist/{input-group-DSW5WoSU.cjs.map → input-group-DRXUthxe.cjs.map} +1 -1
  649. package/dist/keyboard/keyboard-dispatcher.cjs.js +2 -4
  650. package/dist/keyboard/keyboard-dispatcher.cjs.js.map +1 -1
  651. package/dist/keyboard/keyboard-dispatcher.es.js +2 -4
  652. package/dist/keyboard/keyboard-dispatcher.es.js.map +1 -1
  653. package/dist/keyboard/keyboard-shortcuts-context.cjs.js.map +1 -1
  654. package/dist/keyboard/keyboard-shortcuts-context.es.js.map +1 -1
  655. package/dist/keyboard/use-keydown.cjs.js +2 -0
  656. package/dist/keyboard/use-keydown.cjs.js.map +1 -1
  657. package/dist/keyboard/use-keydown.es.js +2 -0
  658. package/dist/keyboard/use-keydown.es.js.map +1 -1
  659. package/dist/layout/tabbed-container.cjs.js +4 -4
  660. package/dist/layout/tabbed-container.es.js +4 -4
  661. package/dist/lib/form/components/array-element-wrapper.cjs.js +1 -1
  662. package/dist/lib/form/components/array-element-wrapper.es.js +1 -1
  663. package/dist/lib/form/components/array-wrapper.cjs.js +1 -1
  664. package/dist/lib/form/components/array-wrapper.es.js +1 -1
  665. package/dist/lib/form/components/date-field.cjs.js +1 -1
  666. package/dist/lib/form/components/date-field.es.js +1 -1
  667. package/dist/lib/form/components/form-submit-row.cjs.js +1 -1
  668. package/dist/lib/form/components/form-submit-row.es.js +1 -1
  669. package/dist/lib/form/components/record-field.cjs.js +1 -1
  670. package/dist/lib/form/components/record-field.es.js +1 -1
  671. package/dist/lib/form/components/select-field.cjs.js +1 -1
  672. package/dist/lib/form/components/select-field.es.js +1 -1
  673. package/dist/lib/form/components/submit-button.cjs.js +1 -1
  674. package/dist/lib/form/components/submit-button.es.js +1 -1
  675. package/dist/lib/form/zod-provider.cjs.js.map +1 -1
  676. package/dist/lib/form/zod-provider.es.js.map +1 -1
  677. package/dist/{list-search-D3I6xt0B.js → list-search-ByJdIxIh.js} +2 -2
  678. package/dist/{list-search-D3I6xt0B.js.map → list-search-ByJdIxIh.js.map} +1 -1
  679. package/dist/{list-search-DHiQ1-O6.cjs → list-search-DNJVeHmK.cjs} +2 -2
  680. package/dist/{list-search-DHiQ1-O6.cjs.map → list-search-DNJVeHmK.cjs.map} +1 -1
  681. package/dist/{logs-data-list-Cb85LPcT.js → logs-data-list-CGerYgSd.js} +2 -3
  682. package/dist/{logs-data-list-Cb85LPcT.js.map → logs-data-list-CGerYgSd.js.map} +1 -1
  683. package/dist/{logs-data-list-DlQxxrNw.cjs → logs-data-list-DEZuSjqt.cjs} +21 -22
  684. package/dist/{logs-data-list-DlQxxrNw.cjs.map → logs-data-list-DEZuSjqt.cjs.map} +1 -1
  685. package/dist/{markdown-renderer-HIfFphpI.cjs → markdown-renderer-BcpwvSl9.cjs} +3 -3
  686. package/dist/{markdown-renderer-HIfFphpI.cjs.map → markdown-renderer-BcpwvSl9.cjs.map} +1 -1
  687. package/dist/{markdown-renderer-BYxWiHRj.js → markdown-renderer-CHLpv5n5.js} +3 -3
  688. package/dist/{markdown-renderer-BYxWiHRj.js.map → markdown-renderer-CHLpv5n5.js.map} +1 -1
  689. package/dist/{message-copy-button-CnVgCy9y.cjs → message-copy-button-D3O4hWDV.cjs} +2 -2
  690. package/dist/{message-copy-button-CnVgCy9y.cjs.map → message-copy-button-D3O4hWDV.cjs.map} +1 -1
  691. package/dist/{message-copy-button-Ctew41Rr.js → message-copy-button-OI1mwAaS.js} +2 -2
  692. package/dist/{message-copy-button-Ctew41Rr.js.map → message-copy-button-OI1mwAaS.js.map} +1 -1
  693. package/dist/{metrics-card-DaFApxZY.cjs → metrics-card-CpjGYNBP.cjs} +2 -2
  694. package/dist/{metrics-card-DaFApxZY.cjs.map → metrics-card-CpjGYNBP.cjs.map} +1 -1
  695. package/dist/{metrics-card-Z_moDiV5.js → metrics-card-D6ty6a6Z.js} +2 -2
  696. package/dist/{metrics-card-Z_moDiV5.js.map → metrics-card-D6ty6a6Z.js.map} +1 -1
  697. package/dist/{notification-activity-MR63WqZm.cjs → notification-activity-BSNuqJDd.cjs} +2 -2
  698. package/dist/{notification-activity-MR63WqZm.cjs.map → notification-activity-BSNuqJDd.cjs.map} +1 -1
  699. package/dist/{notification-activity-FJcMFxIj.js → notification-activity-BWXHmlTn.js} +2 -2
  700. package/dist/{notification-activity-FJcMFxIj.js.map → notification-activity-BWXHmlTn.js.map} +1 -1
  701. package/dist/{plan-BoOK_LAB.cjs → plan-Cm3yHvs3.cjs} +4 -4
  702. package/dist/{plan-BoOK_LAB.cjs.map → plan-Cm3yHvs3.cjs.map} +1 -1
  703. package/dist/{plan-m0hj6Zgv.js → plan-TtrepVnQ.js} +4 -4
  704. package/dist/{plan-m0hj6Zgv.js.map → plan-TtrepVnQ.js.map} +1 -1
  705. package/dist/primitives/form-element.cjs.js.map +1 -1
  706. package/dist/primitives/form-element.es.js.map +1 -1
  707. package/dist/primitives/menu-item.cjs.js +4 -2
  708. package/dist/primitives/menu-item.cjs.js.map +1 -1
  709. package/dist/primitives/menu-item.es.js +4 -2
  710. package/dist/primitives/menu-item.es.js.map +1 -1
  711. package/dist/primitives/popup-anchor.cjs.js +34 -0
  712. package/dist/primitives/popup-anchor.cjs.js.map +1 -0
  713. package/dist/primitives/popup-anchor.d.ts +2 -0
  714. package/dist/primitives/popup-anchor.es.js +10 -0
  715. package/dist/primitives/popup-anchor.es.js.map +1 -0
  716. package/dist/primitives/trigger-button.cjs.js +1 -1
  717. package/dist/primitives/trigger-button.es.js +1 -1
  718. package/dist/{property-filter-applied-J9ob_Rss.js → property-filter-applied-BMmMf4DE.js} +2 -2
  719. package/dist/property-filter-applied-BMmMf4DE.js.map +1 -0
  720. package/dist/{property-filter-applied-CtSglSaH.cjs → property-filter-applied-Bj-bh9gv.cjs} +2 -2
  721. package/dist/property-filter-applied-Bj-bh9gv.cjs.map +1 -0
  722. package/dist/{reasoning-activity-5MFE3mzw.js → reasoning-activity-C-sJt2A9.js} +3 -3
  723. package/dist/{reasoning-activity-5MFE3mzw.js.map → reasoning-activity-C-sJt2A9.js.map} +1 -1
  724. package/dist/{reasoning-activity-DMvughvN.cjs → reasoning-activity-DpYFjxuL.cjs} +3 -3
  725. package/dist/{reasoning-activity-DMvughvN.cjs.map → reasoning-activity-DpYFjxuL.cjs.map} +1 -1
  726. package/dist/resize/panel-drawer.cjs.js +1 -1
  727. package/dist/resize/panel-drawer.es.js +1 -1
  728. package/dist/{search-input-BPqubJZC.js → search-input-C9qFBzn6.js} +2 -2
  729. package/dist/{search-input-BPqubJZC.js.map → search-input-C9qFBzn6.js.map} +1 -1
  730. package/dist/{search-input-BUMYRaUW.cjs → search-input-CMNy0JWd.cjs} +2 -2
  731. package/dist/{search-input-BUMYRaUW.cjs.map → search-input-CMNy0JWd.cjs.map} +1 -1
  732. package/dist/section-CctlZIXp.cjs.map +1 -1
  733. package/dist/section-D0hKTVXt.js.map +1 -1
  734. package/dist/{select-CQtsggxJ.js → select-7rYaECQf.js} +2 -2
  735. package/dist/select-7rYaECQf.js.map +1 -0
  736. package/dist/{select-CbNLtiAs.cjs → select-A3AFKLd9.cjs} +2 -2
  737. package/dist/select-A3AFKLd9.cjs.map +1 -0
  738. package/dist/shimmer-BCSr3Rqf.js.map +1 -1
  739. package/dist/shimmer-Co-XPvF9.cjs.map +1 -1
  740. package/dist/{side-dialog-bm8NPDXy.js → side-dialog-DSvj8H6x.js} +4 -4
  741. package/dist/{side-dialog-bm8NPDXy.js.map → side-dialog-DSvj8H6x.js.map} +1 -1
  742. package/dist/{side-dialog-BzULMBaH.cjs → side-dialog-SJCWBnbw.cjs} +4 -4
  743. package/dist/{side-dialog-BzULMBaH.cjs.map → side-dialog-SJCWBnbw.cjs.map} +1 -1
  744. package/dist/{signal-activity-D-_u7DFm.cjs → signal-activity-C_bihjcd.cjs} +2 -2
  745. package/dist/{signal-activity-D-_u7DFm.cjs.map → signal-activity-C_bihjcd.cjs.map} +1 -1
  746. package/dist/{signal-activity-BkFexFiJ.js → signal-activity-J9kpnwAF.js} +2 -2
  747. package/dist/{signal-activity-BkFexFiJ.js.map → signal-activity-J9kpnwAF.js.map} +1 -1
  748. package/dist/{span-payload-primitives-wujxDKfA.cjs → span-payload-primitives-C0KYtmtV.cjs} +3 -3
  749. package/dist/{span-payload-primitives-wujxDKfA.cjs.map → span-payload-primitives-C0KYtmtV.cjs.map} +1 -1
  750. package/dist/{span-payload-primitives-jQiJK0qI.js → span-payload-primitives-D_N9LeLk.js} +3 -3
  751. package/dist/{span-payload-primitives-jQiJK0qI.js.map → span-payload-primitives-D_N9LeLk.js.map} +1 -1
  752. package/dist/src/domains/traces/components/span-rows.d.ts +2 -0
  753. package/dist/src/domains/traces/components/span-tree-rail.d.ts +23 -0
  754. package/dist/src/domains/traces/components/span-type-badge.d.ts +9 -0
  755. package/dist/src/domains/traces/components/timeline-name-col.d.ts +2 -2
  756. package/dist/src/domains/traces/components/timeline-structure-sign.d.ts +14 -1
  757. package/dist/src/domains/traces/components/trace-error-cell.d.ts +8 -0
  758. package/dist/src/domains/traces/components/trace-error-details.d.ts +10 -0
  759. package/dist/src/domains/traces/components/trace-error-summary.d.ts +8 -0
  760. package/dist/src/domains/traces/components/trace-span-tree-skeleton.d.ts +1 -1
  761. package/dist/src/domains/traces/hooks/use-traces-list-source.d.ts +1 -0
  762. package/dist/src/ds/components/Avatar/avatar-size.d.ts +1 -1
  763. package/dist/src/ds/components/Breadcrumb/crumb-switcher.d.ts +0 -1
  764. package/dist/src/ds/components/Button/Button.d.ts +1 -1
  765. package/dist/src/ds/components/EnvironmentVariablesEditor/environment-variables-editor-context.d.ts +1 -2
  766. package/dist/src/ds/components/SavedViews/saved-view-editor.d.ts +1 -1
  767. package/dist/src/ds/components/Select/select.d.ts +1 -1
  768. package/dist/src/ds/primitives/popup-anchor.d.ts +4 -0
  769. package/dist/src/hooks/use-environment-variables-editor.d.ts +1 -1
  770. package/dist/src/lib/keyboard/keyboard-dispatcher.d.ts +2 -0
  771. package/dist/src/lib/keyboard/use-keydown.d.ts +8 -1
  772. package/dist/style.css +121 -143
  773. package/dist/{tabs-tab-DRaRUvQ3.cjs → tabs-tab-B0W25Dm2.cjs} +2 -2
  774. package/dist/{tabs-tab-DRaRUvQ3.cjs.map → tabs-tab-B0W25Dm2.cjs.map} +1 -1
  775. package/dist/{tabs-tab-CIVJEMoY.js → tabs-tab-CkLyKrL0.js} +2 -2
  776. package/dist/{tabs-tab-CIVJEMoY.js.map → tabs-tab-CkLyKrL0.js.map} +1 -1
  777. package/dist/{thread-list-BANpytn3.cjs → thread-list-BBPZYHh8.cjs} +2 -2
  778. package/dist/thread-list-BBPZYHh8.cjs.map +1 -0
  779. package/dist/{thread-list-lXnXsPul.js → thread-list-BGjKZfEH.js} +2 -2
  780. package/dist/thread-list-BGjKZfEH.js.map +1 -0
  781. package/dist/{time-picker-BpCfTfoe.js → time-picker-Bzdboi4W.js} +2 -2
  782. package/dist/{time-picker-BpCfTfoe.js.map → time-picker-Bzdboi4W.js.map} +1 -1
  783. package/dist/{time-picker-DhekkO5t.cjs → time-picker-CyvG-fwX.cjs} +2 -2
  784. package/dist/{time-picker-DhekkO5t.cjs.map → time-picker-CyvG-fwX.cjs.map} +1 -1
  785. package/dist/{tool-approval-BrqoN_mP.js → tool-approval-P8rUFAYp.js} +4 -4
  786. package/dist/{tool-approval-BrqoN_mP.js.map → tool-approval-P8rUFAYp.js.map} +1 -1
  787. package/dist/{tool-approval-zBfJ20iR.cjs → tool-approval-zhWdp8i6.cjs} +4 -4
  788. package/dist/{tool-approval-zBfJ20iR.cjs.map → tool-approval-zhWdp8i6.cjs.map} +1 -1
  789. package/dist/{tool-call-arguments-DwMeGQHD.cjs → tool-call-arguments-DzpFckIm.cjs} +3 -3
  790. package/dist/{tool-call-arguments-DwMeGQHD.cjs.map → tool-call-arguments-DzpFckIm.cjs.map} +1 -1
  791. package/dist/{tool-call-arguments-Dx4LW1Ni.js → tool-call-arguments-goEdIs4f.js} +3 -3
  792. package/dist/{tool-call-arguments-Dx4LW1Ni.js.map → tool-call-arguments-goEdIs4f.js.map} +1 -1
  793. package/dist/{tool-call-group-DJsiIb-B.cjs → tool-call-group-C56oARyx.cjs} +4 -4
  794. package/dist/tool-call-group-C56oARyx.cjs.map +1 -0
  795. package/dist/{tool-call-group-ZDNZog5K.js → tool-call-group-DU4T72Xn.js} +4 -4
  796. package/dist/tool-call-group-DU4T72Xn.js.map +1 -0
  797. package/dist/{tool-call-mono-Bs7y-1Cq.js → tool-call-mono-DPW6hN91.js} +2 -2
  798. package/dist/{tool-call-mono-Bs7y-1Cq.js.map → tool-call-mono-DPW6hN91.js.map} +1 -1
  799. package/dist/{tool-call-mono-I-vdqzCe.cjs → tool-call-mono-aheL8CkL.cjs} +2 -2
  800. package/dist/{tool-call-mono-I-vdqzCe.cjs.map → tool-call-mono-aheL8CkL.cjs.map} +1 -1
  801. package/dist/{tool-call-output-Dd8zlhLd.js → tool-call-output-BQYzMMMi.js} +2 -2
  802. package/dist/{tool-call-output-Dd8zlhLd.js.map → tool-call-output-BQYzMMMi.js.map} +1 -1
  803. package/dist/{tool-call-output-BrNg0Lkd.cjs → tool-call-output-CuwM5IHd.cjs} +2 -2
  804. package/dist/{tool-call-output-BrNg0Lkd.cjs.map → tool-call-output-CuwM5IHd.cjs.map} +1 -1
  805. package/dist/{tool-card-D4yrR2AE.js → tool-card-aclA3iVz.js} +4 -4
  806. package/dist/{tool-card-D4yrR2AE.js.map → tool-card-aclA3iVz.js.map} +1 -1
  807. package/dist/{tool-card-D6UdNzIX.cjs → tool-card-yii3vGHu.cjs} +4 -4
  808. package/dist/{tool-card-D6UdNzIX.cjs.map → tool-card-yii3vGHu.cjs.map} +1 -1
  809. package/dist/{traces-data-list-Bhhg9drs.cjs → traces-data-list-Co9k5J4f.cjs} +18 -20
  810. package/dist/{traces-data-list-Bhhg9drs.cjs.map → traces-data-list-Co9k5J4f.cjs.map} +1 -1
  811. package/dist/{traces-data-list-DMWPJFBc.js → traces-data-list-TCKjOldO.js} +2 -4
  812. package/dist/{traces-data-list-DMWPJFBc.js.map → traces-data-list-TCKjOldO.js.map} +1 -1
  813. package/dist/use-data-list-keyboard-DF3tLe10.cjs.map +1 -1
  814. package/dist/use-data-list-keyboard-DFQr4t38.js.map +1 -1
  815. package/dist/{use-workflow-graph-runtime-DF-56pIR.cjs → use-workflow-graph-runtime-DcQD5eA6.cjs} +3 -3
  816. package/dist/{use-workflow-graph-runtime-DF-56pIR.cjs.map → use-workflow-graph-runtime-DcQD5eA6.cjs.map} +1 -1
  817. package/dist/{use-workflow-graph-runtime-BrHXo49Q.js → use-workflow-graph-runtime-xq_aSXPh.js} +3 -3
  818. package/dist/{use-workflow-graph-runtime-BrHXo49Q.js.map → use-workflow-graph-runtime-xq_aSXPh.js.map} +1 -1
  819. package/dist/utils/workspace-compat.cjs.js.map +1 -1
  820. package/dist/utils/workspace-compat.es.js.map +1 -1
  821. package/dist/{workflow-code-dialog-content-CfVy6bGG.cjs → workflow-code-dialog-content-B_BQCuFW.cjs} +3 -3
  822. package/dist/{workflow-code-dialog-content-CfVy6bGG.cjs.map → workflow-code-dialog-content-B_BQCuFW.cjs.map} +1 -1
  823. package/dist/{workflow-code-dialog-content-DviJz1jB.js → workflow-code-dialog-content-CFEaeYUX.js} +3 -3
  824. package/dist/{workflow-code-dialog-content-DviJz1jB.js.map → workflow-code-dialog-content-CFEaeYUX.js.map} +1 -1
  825. package/dist/{workflow-condition-card-BRwhMmNO.cjs → workflow-condition-card-CMzoK307.cjs} +3 -3
  826. package/dist/{workflow-condition-card-BRwhMmNO.cjs.map → workflow-condition-card-CMzoK307.cjs.map} +1 -1
  827. package/dist/{workflow-condition-card-sFdOjlab.js → workflow-condition-card-CbQ4fCxY.js} +3 -3
  828. package/dist/{workflow-condition-card-sFdOjlab.js.map → workflow-condition-card-CbQ4fCxY.js.map} +1 -1
  829. package/dist/{workflow-data-edge-view-DpPhr9gZ.cjs → workflow-data-edge-view-0utEB4Yb.cjs} +2 -2
  830. package/dist/{workflow-data-edge-view-DpPhr9gZ.cjs.map → workflow-data-edge-view-0utEB4Yb.cjs.map} +1 -1
  831. package/dist/{workflow-data-edge-view-CuSzc6YI.js → workflow-data-edge-view-gwwJEvXz.js} +2 -2
  832. package/dist/{workflow-data-edge-view-CuSzc6YI.js.map → workflow-data-edge-view-gwwJEvXz.js.map} +1 -1
  833. package/dist/{workflow-debug-controls-CAn_6S8K.cjs → workflow-debug-controls-B5zqE_rm.cjs} +2 -2
  834. package/dist/{workflow-debug-controls-CAn_6S8K.cjs.map → workflow-debug-controls-B5zqE_rm.cjs.map} +1 -1
  835. package/dist/{workflow-debug-controls-CLzbxd5O.js → workflow-debug-controls-CPpdNzD9.js} +2 -2
  836. package/dist/{workflow-debug-controls-CLzbxd5O.js.map → workflow-debug-controls-CPpdNzD9.js.map} +1 -1
  837. package/dist/{workflow-edge-data-button-Dtt_OUz9.js → workflow-edge-data-button-YWjfx-W0.js} +4 -4
  838. package/dist/{workflow-edge-data-button-Dtt_OUz9.js.map → workflow-edge-data-button-YWjfx-W0.js.map} +1 -1
  839. package/dist/{workflow-edge-data-button-B8rQaAoK.cjs → workflow-edge-data-button-tDvziS5v.cjs} +4 -4
  840. package/dist/{workflow-edge-data-button-B8rQaAoK.cjs.map → workflow-edge-data-button-tDvziS5v.cjs.map} +1 -1
  841. package/dist/{workflow-step-action-DqFjktfs.js → workflow-step-action-D8MVfEIl.js} +2 -2
  842. package/dist/{workflow-step-action-DqFjktfs.js.map → workflow-step-action-D8MVfEIl.js.map} +1 -1
  843. package/dist/{workflow-step-action-Cu01omgz.cjs → workflow-step-action-DZgS0_fL.cjs} +2 -2
  844. package/dist/{workflow-step-action-Cu01omgz.cjs.map → workflow-step-action-DZgS0_fL.cjs.map} +1 -1
  845. package/package.json +11 -13
  846. package/theme/scale.css +7 -0
  847. package/dist/Avatar-98bsFrSV.js.map +0 -1
  848. package/dist/Avatar-BCj8SvOb.cjs.map +0 -1
  849. package/dist/Button-DH1aTzbs.cjs.map +0 -1
  850. package/dist/Button-EGoajBQY.js.map +0 -1
  851. package/dist/activity-2tovEdIP.cjs.map +0 -1
  852. package/dist/activity-CsTUr5_l.js.map +0 -1
  853. package/dist/ask-user-card-DroerVbm.cjs.map +0 -1
  854. package/dist/avatar-size-CNR0U-LW.js.map +0 -1
  855. package/dist/avatar-size-DxStOo5A.cjs.map +0 -1
  856. package/dist/combobox-BNlVCFgY.cjs.map +0 -1
  857. package/dist/combobox-Bw13EcK0.js.map +0 -1
  858. package/dist/command-UEPxVJlE.cjs.map +0 -1
  859. package/dist/command-V9rsKc7P.js.map +0 -1
  860. package/dist/data-keys-and-values-1lYi60YK.cjs.map +0 -1
  861. package/dist/data-keys-and-values-CHpxKsfq.js.map +0 -1
  862. package/dist/data-list-CmjTe8xE.cjs +0 -142
  863. package/dist/data-list-CmjTe8xE.cjs.map +0 -1
  864. package/dist/data-list-DT1LVR29.js +0 -138
  865. package/dist/data-list-DT1LVR29.js.map +0 -1
  866. package/dist/data-list-spacer-CdlT6bDd.cjs +0 -218
  867. package/dist/data-list-spacer-CdlT6bDd.cjs.map +0 -1
  868. package/dist/data-list-spacer-D--gDmOm.js +0 -209
  869. package/dist/data-list-spacer-D--gDmOm.js.map +0 -1
  870. package/dist/data-list-top-DJh08vFA.cjs.map +0 -1
  871. package/dist/data-list-top-T-mtdIUp.js.map +0 -1
  872. package/dist/data-panel-BkfjzriB.cjs.map +0 -1
  873. package/dist/data-panel-CMkR6Avv.js.map +0 -1
  874. package/dist/filter-bar-chip-BJJ6ytJ4.cjs.map +0 -1
  875. package/dist/filter-bar-chip-BarAq1S2.js.map +0 -1
  876. package/dist/property-filter-applied-CtSglSaH.cjs.map +0 -1
  877. package/dist/property-filter-applied-J9ob_Rss.js.map +0 -1
  878. package/dist/select-CQtsggxJ.js.map +0 -1
  879. package/dist/select-CbNLtiAs.cjs.map +0 -1
  880. package/dist/thread-list-BANpytn3.cjs.map +0 -1
  881. package/dist/thread-list-lXnXsPul.js.map +0 -1
  882. package/dist/tool-call-group-DJsiIb-B.cjs.map +0 -1
  883. package/dist/tool-call-group-ZDNZog5K.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"logs-list-view.cjs.js","sources":["../../../../src/domains/logs/components/logs-list-view.tsx"],"sourcesContent":["import { useVirtualizer } from '@tanstack/react-virtual';\nimport { useEffect, useRef } from 'react';\nimport type { LogRecord } from '../types';\nimport { useDataListKeyboard } from '@/ds/components/DataList';\nimport type { DataListSort } from '@/ds/components/DataList';\nimport { LogsDataList, LogsDataListSkeleton } from '@/ds/components/LogsDataList';\n\n// Fixed widths on non-flex columns prevent track shifts as the virtualizer swaps rows in/out.\nconst COLUMNS = '6rem 9rem 5rem 10rem minmax(8rem,1fr) minmax(8rem,1fr)';\n\nconst ROW_HEIGHT = 36;\nconst OVERSCAN = 8;\n\nexport interface LogsListViewProps {\n logs: LogRecord[];\n isLoading?: boolean;\n isFetchingNextPage?: boolean;\n hasNextPage?: boolean;\n setEndOfListElement?: (element: HTMLDivElement | null) => void;\n /** Stable per-render id for each log — used for React keys and for matching against `featuredLogId`.\n * Build with `useLogsListNavigation`. */\n logIdMap: Map<LogRecord, string>;\n /** Currently featured/selected log — its row gets the highlighted background. */\n featuredLogId?: string | null;\n /** Called when a row is clicked. The current toggle + trace-sync logic is the consumer's call. */\n onLogClick: (log: LogRecord) => void;\n /** Current timestamp sort direction. When `onSortChange` is provided the Date/Time headers become sortable. */\n timestampSort?: DataListSort;\n onSortChange?: (direction: DataListSort, key: 'timestamp') => void;\n}\n\n/**\n * Virtualized presentational list. Renders only the visible window of logs via\n * TanStack Virtual, sandwiched between top/bottom Spacers that preserve total\n * scroll height. Owns no state and fetches no data.\n */\nexport function LogsListView({\n logs,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n logIdMap,\n featuredLogId,\n onLogClick,\n timestampSort,\n onSortChange,\n}: LogsListViewProps) {\n const scrollRef = useRef<HTMLDivElement | null>(null);\n\n const virtualizer = useVirtualizer({\n count: logs.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: () => ROW_HEIGHT,\n overscan: OVERSCAN,\n });\n\n const { getRowProps } = useDataListKeyboard({\n count: logs.length,\n containerRef: scrollRef,\n onNavigate: index => virtualizer.scrollToIndex(index),\n global: true,\n });\n\n // Reset scroll to top whenever a fresh query resolves (filter / date range change).\n // `isLoading` only flips on initial fetches — `fetchNextPage` keeps it `false`, so this\n // effect doesn't fire during pagination.\n //\n // Why the manual scroll event: when the skeleton-vs-list branch swaps in the new scroll\n // container, it mounts at `scrollTop = 0`. The virtualizer rebinds its listener but\n // doesn't re-read `scrollTop`, so it keeps the stale `scrollOffset` from the previous\n // element. `scrollToOffset(0)` no-ops because the new element is already at 0 (no scroll\n // event fires). Dispatching a synthetic `scroll` forces the virtualizer's handler to\n // read the fresh `scrollTop` and recompute `virtualItems` with `paddingTop = 0`.\n const wasLoadingRef = useRef(isLoading);\n useEffect(() => {\n if (wasLoadingRef.current && !isLoading) {\n scrollRef.current?.dispatchEvent(new Event('scroll'));\n }\n wasLoadingRef.current = isLoading;\n }, [isLoading]);\n\n if (isLoading) {\n return <LogsDataListSkeleton columns={COLUMNS} fit=\"container\" />;\n }\n\n const virtualItems = virtualizer.getVirtualItems();\n const totalSize = virtualizer.getTotalSize();\n const paddingTop = virtualItems[0]?.start ?? 0;\n const paddingBottom =\n virtualItems.length > 0 ? Math.max(0, totalSize - (virtualItems[virtualItems.length - 1]?.end ?? 0)) : 0;\n\n return (\n <LogsDataList columns={COLUMNS} scrollRef={scrollRef} className=\"min-w-0\" fit=\"container\">\n <LogsDataList.Top>\n {onSortChange ? (\n <LogsDataList.SortableTopCell sortKey=\"timestamp\" sort={timestampSort} onSortChange={onSortChange}>\n Date\n </LogsDataList.SortableTopCell>\n ) : (\n <LogsDataList.TopCell>Date</LogsDataList.TopCell>\n )}\n <LogsDataList.TopCell>Time</LogsDataList.TopCell>\n <LogsDataList.TopCell>Level</LogsDataList.TopCell>\n <LogsDataList.TopCell>Entity</LogsDataList.TopCell>\n <LogsDataList.TopCell>Message</LogsDataList.TopCell>\n <LogsDataList.TopCell>Data</LogsDataList.TopCell>\n </LogsDataList.Top>\n\n {logs.length === 0 ? (\n <LogsDataList.NoMatch message=\"No logs match your search\" />\n ) : (\n <>\n <LogsDataList.Spacer height={paddingTop} />\n {virtualItems.map(vi => {\n const log = logs[vi.index];\n if (!log) return null;\n const id = logIdMap.get(log);\n // Defensive: consumer is expected to build `logIdMap` from the same `logs` list\n // (via `useLogsListNavigation`), but if they drift we'd rather drop the row than\n // ship a missing-key warning and broken selection highlighting.\n if (!id) return null;\n const isFeatured = id === featuredLogId;\n\n return (\n <LogsDataList.RowButton\n key={id}\n ref={virtualizer.measureElement}\n data-index={vi.index}\n {...getRowProps(vi.index)}\n onClick={() => onLogClick(log)}\n featured={isFeatured}\n variant={log.level === 'error' || log.level === 'fatal' ? 'error' : 'default'}\n >\n <LogsDataList.DateCell timestamp={log.timestamp} />\n <LogsDataList.TimeCell timestamp={log.timestamp} />\n <LogsDataList.LevelCell level={log.level} />\n <LogsDataList.EntityCell entityType={log.entityType} entityName={log.entityName} />\n <LogsDataList.MessageCell message={log.message} />\n <LogsDataList.DataCell data={log.data} />\n </LogsDataList.RowButton>\n );\n })}\n <LogsDataList.Spacer height={paddingBottom} />\n </>\n )}\n <LogsDataList.NextPageLoading\n isLoading={isFetchingNextPage}\n hasMore={hasNextPage}\n setEndOfListElement={setEndOfListElement}\n />\n </LogsDataList>\n );\n}\n"],"names":["useRef","useVirtualizer","useDataListKeyboard","useEffect","jsx","LogsDataListSkeleton","jsxs","LogsDataList","Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"logs-list-view.cjs.js","sources":["../../../../src/domains/logs/components/logs-list-view.tsx"],"sourcesContent":["import { useVirtualizer } from '@tanstack/react-virtual';\nimport { useEffect, useRef } from 'react';\nimport type { LogRecord } from '../types';\nimport { useDataListKeyboard } from '@/ds/components/DataList';\nimport type { DataListSort } from '@/ds/components/DataList';\nimport { LogsDataList, LogsDataListSkeleton } from '@/ds/components/LogsDataList';\n\n// Fixed widths on non-flex columns prevent track shifts as the virtualizer swaps rows in/out.\nconst COLUMNS = '6rem 9rem 5rem 10rem minmax(8rem,1fr) minmax(8rem,1fr)';\n\nconst ROW_HEIGHT = 36;\nconst OVERSCAN = 8;\n\nexport interface LogsListViewProps {\n logs: LogRecord[];\n isLoading?: boolean;\n isFetchingNextPage?: boolean;\n hasNextPage?: boolean;\n setEndOfListElement?: (element: HTMLDivElement | null) => void;\n /** Stable per-render id for each log — used for React keys and for matching against `featuredLogId`.\n * Build with `useLogsListNavigation`. */\n logIdMap: Map<LogRecord, string>;\n /** Currently featured/selected log — its row gets the highlighted background. */\n featuredLogId?: string | null;\n /** Called when a row is clicked. The current toggle + trace-sync logic is the consumer's call. */\n onLogClick: (log: LogRecord) => void;\n /** Current timestamp sort direction. When `onSortChange` is provided the Date/Time headers become sortable. */\n timestampSort?: DataListSort;\n onSortChange?: (direction: DataListSort, key: 'timestamp') => void;\n}\n\n/**\n * Virtualized presentational list. Renders only the visible window of logs via\n * TanStack Virtual, sandwiched between top/bottom Spacers that preserve total\n * scroll height. Owns no state and fetches no data.\n */\nexport function LogsListView({\n logs,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n logIdMap,\n featuredLogId,\n onLogClick,\n timestampSort,\n onSortChange,\n}: LogsListViewProps) {\n const scrollRef = useRef<HTMLDivElement | null>(null);\n\n const virtualizer = useVirtualizer({\n count: logs.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: () => ROW_HEIGHT,\n overscan: OVERSCAN,\n });\n\n const { getRowProps } = useDataListKeyboard({\n count: logs.length,\n containerRef: scrollRef,\n onNavigate: index => virtualizer.scrollToIndex(index),\n global: true,\n });\n\n // Reset scroll to top whenever a fresh query resolves (filter / date range change).\n // `isLoading` only flips on initial fetches — `fetchNextPage` keeps it `false`, so this\n // effect doesn't fire during pagination.\n //\n // Why the manual scroll event: when the skeleton-vs-list branch swaps in the new scroll\n // container, it mounts at `scrollTop = 0`. The virtualizer rebinds its listener but\n // doesn't re-read `scrollTop`, so it keeps the stale `scrollOffset` from the previous\n // element. `scrollToOffset(0)` no-ops because the new element is already at 0 (no scroll\n // event fires). Dispatching a synthetic `scroll` forces the virtualizer's handler to\n // read the fresh `scrollTop` and recompute `virtualItems` with `paddingTop = 0`.\n const wasLoadingRef = useRef(isLoading);\n useEffect(() => {\n if (wasLoadingRef.current && !isLoading) {\n scrollRef.current?.dispatchEvent(new Event('scroll'));\n }\n wasLoadingRef.current = isLoading;\n }, [isLoading]);\n\n if (isLoading) {\n return <LogsDataListSkeleton columns={COLUMNS} fit=\"container\" />;\n }\n\n const virtualItems = virtualizer.getVirtualItems();\n const totalSize = virtualizer.getTotalSize();\n const paddingTop = virtualItems[0]?.start ?? 0;\n const paddingBottom =\n virtualItems.length > 0 ? Math.max(0, totalSize - (virtualItems[virtualItems.length - 1]?.end ?? 0)) : 0;\n\n return (\n <LogsDataList columns={COLUMNS} scrollRef={scrollRef} className=\"min-w-0\" fit=\"container\">\n <LogsDataList.Top>\n {onSortChange ? (\n <LogsDataList.SortableTopCell sortKey=\"timestamp\" sort={timestampSort} onSortChange={onSortChange}>\n Date\n </LogsDataList.SortableTopCell>\n ) : (\n <LogsDataList.TopCell>Date</LogsDataList.TopCell>\n )}\n <LogsDataList.TopCell>Time</LogsDataList.TopCell>\n <LogsDataList.TopCell>Level</LogsDataList.TopCell>\n <LogsDataList.TopCell>Entity</LogsDataList.TopCell>\n <LogsDataList.TopCell>Message</LogsDataList.TopCell>\n <LogsDataList.TopCell>Data</LogsDataList.TopCell>\n </LogsDataList.Top>\n\n {logs.length === 0 ? (\n <LogsDataList.NoMatch message=\"No logs match your search\" />\n ) : (\n <>\n <LogsDataList.Spacer height={paddingTop} />\n {virtualItems.map(vi => {\n const log = logs[vi.index];\n if (!log) return null;\n const id = logIdMap.get(log);\n // Defensive: consumer is expected to build `logIdMap` from the same `logs` list\n // (via `useLogsListNavigation`), but if they drift we'd rather drop the row than\n // ship a missing-key warning and broken selection highlighting.\n if (!id) return null;\n const isFeatured = id === featuredLogId;\n\n return (\n <LogsDataList.RowButton\n key={id}\n ref={virtualizer.measureElement}\n data-index={vi.index}\n {...getRowProps(vi.index)}\n onClick={() => onLogClick(log)}\n featured={isFeatured}\n variant={log.level === 'error' || log.level === 'fatal' ? 'error' : 'default'}\n >\n <LogsDataList.DateCell timestamp={log.timestamp} />\n <LogsDataList.TimeCell timestamp={log.timestamp} />\n <LogsDataList.LevelCell level={log.level} />\n <LogsDataList.EntityCell entityType={log.entityType} entityName={log.entityName} />\n <LogsDataList.MessageCell message={log.message} />\n <LogsDataList.DataCell data={log.data} />\n </LogsDataList.RowButton>\n );\n })}\n <LogsDataList.Spacer height={paddingBottom} />\n </>\n )}\n <LogsDataList.NextPageLoading\n isLoading={isFetchingNextPage}\n hasMore={hasNextPage}\n setEndOfListElement={setEndOfListElement}\n />\n </LogsDataList>\n );\n}\n"],"names":["useRef","useVirtualizer","useDataListKeyboard","useEffect","jsx","LogsDataListSkeleton","jsxs","LogsDataList","Fragment"],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { useVirtualizer } from '@tanstack/react-virtual';
3
3
  import { useRef, useEffect } from 'react';
4
- import { D as DataListSkeleton } from '../../../data-list-skeleton-bNfITSHs.js';
4
+ import '../../../data-list-Tor18oy5.js';
5
+ import { D as DataListSkeleton } from '../../../data-list-skeleton-CXUB-u3p.js';
5
6
  import { u as useDataListKeyboard } from '../../../use-data-list-keyboard-DFQr4t38.js';
6
- import { L as LogsDataList } from '../../../logs-data-list-Cb85LPcT.js';
7
+ import { L as LogsDataList } from '../../../logs-data-list-CGerYgSd.js';
7
8
 
8
9
  const COLUMNS = "6rem 9rem 5rem 10rem minmax(8rem,1fr) minmax(8rem,1fr)";
9
10
  const ROW_HEIGHT = 36;
@@ -1 +1 @@
1
- {"version":3,"file":"logs-list-view.es.js","sources":["../../../../src/domains/logs/components/logs-list-view.tsx"],"sourcesContent":["import { useVirtualizer } from '@tanstack/react-virtual';\nimport { useEffect, useRef } from 'react';\nimport type { LogRecord } from '../types';\nimport { useDataListKeyboard } from '@/ds/components/DataList';\nimport type { DataListSort } from '@/ds/components/DataList';\nimport { LogsDataList, LogsDataListSkeleton } from '@/ds/components/LogsDataList';\n\n// Fixed widths on non-flex columns prevent track shifts as the virtualizer swaps rows in/out.\nconst COLUMNS = '6rem 9rem 5rem 10rem minmax(8rem,1fr) minmax(8rem,1fr)';\n\nconst ROW_HEIGHT = 36;\nconst OVERSCAN = 8;\n\nexport interface LogsListViewProps {\n logs: LogRecord[];\n isLoading?: boolean;\n isFetchingNextPage?: boolean;\n hasNextPage?: boolean;\n setEndOfListElement?: (element: HTMLDivElement | null) => void;\n /** Stable per-render id for each log — used for React keys and for matching against `featuredLogId`.\n * Build with `useLogsListNavigation`. */\n logIdMap: Map<LogRecord, string>;\n /** Currently featured/selected log — its row gets the highlighted background. */\n featuredLogId?: string | null;\n /** Called when a row is clicked. The current toggle + trace-sync logic is the consumer's call. */\n onLogClick: (log: LogRecord) => void;\n /** Current timestamp sort direction. When `onSortChange` is provided the Date/Time headers become sortable. */\n timestampSort?: DataListSort;\n onSortChange?: (direction: DataListSort, key: 'timestamp') => void;\n}\n\n/**\n * Virtualized presentational list. Renders only the visible window of logs via\n * TanStack Virtual, sandwiched between top/bottom Spacers that preserve total\n * scroll height. Owns no state and fetches no data.\n */\nexport function LogsListView({\n logs,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n logIdMap,\n featuredLogId,\n onLogClick,\n timestampSort,\n onSortChange,\n}: LogsListViewProps) {\n const scrollRef = useRef<HTMLDivElement | null>(null);\n\n const virtualizer = useVirtualizer({\n count: logs.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: () => ROW_HEIGHT,\n overscan: OVERSCAN,\n });\n\n const { getRowProps } = useDataListKeyboard({\n count: logs.length,\n containerRef: scrollRef,\n onNavigate: index => virtualizer.scrollToIndex(index),\n global: true,\n });\n\n // Reset scroll to top whenever a fresh query resolves (filter / date range change).\n // `isLoading` only flips on initial fetches — `fetchNextPage` keeps it `false`, so this\n // effect doesn't fire during pagination.\n //\n // Why the manual scroll event: when the skeleton-vs-list branch swaps in the new scroll\n // container, it mounts at `scrollTop = 0`. The virtualizer rebinds its listener but\n // doesn't re-read `scrollTop`, so it keeps the stale `scrollOffset` from the previous\n // element. `scrollToOffset(0)` no-ops because the new element is already at 0 (no scroll\n // event fires). Dispatching a synthetic `scroll` forces the virtualizer's handler to\n // read the fresh `scrollTop` and recompute `virtualItems` with `paddingTop = 0`.\n const wasLoadingRef = useRef(isLoading);\n useEffect(() => {\n if (wasLoadingRef.current && !isLoading) {\n scrollRef.current?.dispatchEvent(new Event('scroll'));\n }\n wasLoadingRef.current = isLoading;\n }, [isLoading]);\n\n if (isLoading) {\n return <LogsDataListSkeleton columns={COLUMNS} fit=\"container\" />;\n }\n\n const virtualItems = virtualizer.getVirtualItems();\n const totalSize = virtualizer.getTotalSize();\n const paddingTop = virtualItems[0]?.start ?? 0;\n const paddingBottom =\n virtualItems.length > 0 ? Math.max(0, totalSize - (virtualItems[virtualItems.length - 1]?.end ?? 0)) : 0;\n\n return (\n <LogsDataList columns={COLUMNS} scrollRef={scrollRef} className=\"min-w-0\" fit=\"container\">\n <LogsDataList.Top>\n {onSortChange ? (\n <LogsDataList.SortableTopCell sortKey=\"timestamp\" sort={timestampSort} onSortChange={onSortChange}>\n Date\n </LogsDataList.SortableTopCell>\n ) : (\n <LogsDataList.TopCell>Date</LogsDataList.TopCell>\n )}\n <LogsDataList.TopCell>Time</LogsDataList.TopCell>\n <LogsDataList.TopCell>Level</LogsDataList.TopCell>\n <LogsDataList.TopCell>Entity</LogsDataList.TopCell>\n <LogsDataList.TopCell>Message</LogsDataList.TopCell>\n <LogsDataList.TopCell>Data</LogsDataList.TopCell>\n </LogsDataList.Top>\n\n {logs.length === 0 ? (\n <LogsDataList.NoMatch message=\"No logs match your search\" />\n ) : (\n <>\n <LogsDataList.Spacer height={paddingTop} />\n {virtualItems.map(vi => {\n const log = logs[vi.index];\n if (!log) return null;\n const id = logIdMap.get(log);\n // Defensive: consumer is expected to build `logIdMap` from the same `logs` list\n // (via `useLogsListNavigation`), but if they drift we'd rather drop the row than\n // ship a missing-key warning and broken selection highlighting.\n if (!id) return null;\n const isFeatured = id === featuredLogId;\n\n return (\n <LogsDataList.RowButton\n key={id}\n ref={virtualizer.measureElement}\n data-index={vi.index}\n {...getRowProps(vi.index)}\n onClick={() => onLogClick(log)}\n featured={isFeatured}\n variant={log.level === 'error' || log.level === 'fatal' ? 'error' : 'default'}\n >\n <LogsDataList.DateCell timestamp={log.timestamp} />\n <LogsDataList.TimeCell timestamp={log.timestamp} />\n <LogsDataList.LevelCell level={log.level} />\n <LogsDataList.EntityCell entityType={log.entityType} entityName={log.entityName} />\n <LogsDataList.MessageCell message={log.message} />\n <LogsDataList.DataCell data={log.data} />\n </LogsDataList.RowButton>\n );\n })}\n <LogsDataList.Spacer height={paddingBottom} />\n </>\n )}\n <LogsDataList.NextPageLoading\n isLoading={isFetchingNextPage}\n hasMore={hasNextPage}\n setEndOfListElement={setEndOfListElement}\n />\n </LogsDataList>\n );\n}\n"],"names":["LogsDataListSkeleton"],"mappings":"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"}
1
+ {"version":3,"file":"logs-list-view.es.js","sources":["../../../../src/domains/logs/components/logs-list-view.tsx"],"sourcesContent":["import { useVirtualizer } from '@tanstack/react-virtual';\nimport { useEffect, useRef } from 'react';\nimport type { LogRecord } from '../types';\nimport { useDataListKeyboard } from '@/ds/components/DataList';\nimport type { DataListSort } from '@/ds/components/DataList';\nimport { LogsDataList, LogsDataListSkeleton } from '@/ds/components/LogsDataList';\n\n// Fixed widths on non-flex columns prevent track shifts as the virtualizer swaps rows in/out.\nconst COLUMNS = '6rem 9rem 5rem 10rem minmax(8rem,1fr) minmax(8rem,1fr)';\n\nconst ROW_HEIGHT = 36;\nconst OVERSCAN = 8;\n\nexport interface LogsListViewProps {\n logs: LogRecord[];\n isLoading?: boolean;\n isFetchingNextPage?: boolean;\n hasNextPage?: boolean;\n setEndOfListElement?: (element: HTMLDivElement | null) => void;\n /** Stable per-render id for each log — used for React keys and for matching against `featuredLogId`.\n * Build with `useLogsListNavigation`. */\n logIdMap: Map<LogRecord, string>;\n /** Currently featured/selected log — its row gets the highlighted background. */\n featuredLogId?: string | null;\n /** Called when a row is clicked. The current toggle + trace-sync logic is the consumer's call. */\n onLogClick: (log: LogRecord) => void;\n /** Current timestamp sort direction. When `onSortChange` is provided the Date/Time headers become sortable. */\n timestampSort?: DataListSort;\n onSortChange?: (direction: DataListSort, key: 'timestamp') => void;\n}\n\n/**\n * Virtualized presentational list. Renders only the visible window of logs via\n * TanStack Virtual, sandwiched between top/bottom Spacers that preserve total\n * scroll height. Owns no state and fetches no data.\n */\nexport function LogsListView({\n logs,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n logIdMap,\n featuredLogId,\n onLogClick,\n timestampSort,\n onSortChange,\n}: LogsListViewProps) {\n const scrollRef = useRef<HTMLDivElement | null>(null);\n\n const virtualizer = useVirtualizer({\n count: logs.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: () => ROW_HEIGHT,\n overscan: OVERSCAN,\n });\n\n const { getRowProps } = useDataListKeyboard({\n count: logs.length,\n containerRef: scrollRef,\n onNavigate: index => virtualizer.scrollToIndex(index),\n global: true,\n });\n\n // Reset scroll to top whenever a fresh query resolves (filter / date range change).\n // `isLoading` only flips on initial fetches — `fetchNextPage` keeps it `false`, so this\n // effect doesn't fire during pagination.\n //\n // Why the manual scroll event: when the skeleton-vs-list branch swaps in the new scroll\n // container, it mounts at `scrollTop = 0`. The virtualizer rebinds its listener but\n // doesn't re-read `scrollTop`, so it keeps the stale `scrollOffset` from the previous\n // element. `scrollToOffset(0)` no-ops because the new element is already at 0 (no scroll\n // event fires). Dispatching a synthetic `scroll` forces the virtualizer's handler to\n // read the fresh `scrollTop` and recompute `virtualItems` with `paddingTop = 0`.\n const wasLoadingRef = useRef(isLoading);\n useEffect(() => {\n if (wasLoadingRef.current && !isLoading) {\n scrollRef.current?.dispatchEvent(new Event('scroll'));\n }\n wasLoadingRef.current = isLoading;\n }, [isLoading]);\n\n if (isLoading) {\n return <LogsDataListSkeleton columns={COLUMNS} fit=\"container\" />;\n }\n\n const virtualItems = virtualizer.getVirtualItems();\n const totalSize = virtualizer.getTotalSize();\n const paddingTop = virtualItems[0]?.start ?? 0;\n const paddingBottom =\n virtualItems.length > 0 ? Math.max(0, totalSize - (virtualItems[virtualItems.length - 1]?.end ?? 0)) : 0;\n\n return (\n <LogsDataList columns={COLUMNS} scrollRef={scrollRef} className=\"min-w-0\" fit=\"container\">\n <LogsDataList.Top>\n {onSortChange ? (\n <LogsDataList.SortableTopCell sortKey=\"timestamp\" sort={timestampSort} onSortChange={onSortChange}>\n Date\n </LogsDataList.SortableTopCell>\n ) : (\n <LogsDataList.TopCell>Date</LogsDataList.TopCell>\n )}\n <LogsDataList.TopCell>Time</LogsDataList.TopCell>\n <LogsDataList.TopCell>Level</LogsDataList.TopCell>\n <LogsDataList.TopCell>Entity</LogsDataList.TopCell>\n <LogsDataList.TopCell>Message</LogsDataList.TopCell>\n <LogsDataList.TopCell>Data</LogsDataList.TopCell>\n </LogsDataList.Top>\n\n {logs.length === 0 ? (\n <LogsDataList.NoMatch message=\"No logs match your search\" />\n ) : (\n <>\n <LogsDataList.Spacer height={paddingTop} />\n {virtualItems.map(vi => {\n const log = logs[vi.index];\n if (!log) return null;\n const id = logIdMap.get(log);\n // Defensive: consumer is expected to build `logIdMap` from the same `logs` list\n // (via `useLogsListNavigation`), but if they drift we'd rather drop the row than\n // ship a missing-key warning and broken selection highlighting.\n if (!id) return null;\n const isFeatured = id === featuredLogId;\n\n return (\n <LogsDataList.RowButton\n key={id}\n ref={virtualizer.measureElement}\n data-index={vi.index}\n {...getRowProps(vi.index)}\n onClick={() => onLogClick(log)}\n featured={isFeatured}\n variant={log.level === 'error' || log.level === 'fatal' ? 'error' : 'default'}\n >\n <LogsDataList.DateCell timestamp={log.timestamp} />\n <LogsDataList.TimeCell timestamp={log.timestamp} />\n <LogsDataList.LevelCell level={log.level} />\n <LogsDataList.EntityCell entityType={log.entityType} entityName={log.entityName} />\n <LogsDataList.MessageCell message={log.message} />\n <LogsDataList.DataCell data={log.data} />\n </LogsDataList.RowButton>\n );\n })}\n <LogsDataList.Spacer height={paddingBottom} />\n </>\n )}\n <LogsDataList.NextPageLoading\n isLoading={isFetchingNextPage}\n hasMore={hasNextPage}\n setEndOfListElement={setEndOfListElement}\n />\n </LogsDataList>\n );\n}\n"],"names":["LogsDataListSkeleton"],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
5
  const jsxRuntime = require('react/jsx-runtime');
6
- const propertyFilterApplied = require('../../../property-filter-applied-CtSglSaH.cjs');
6
+ const propertyFilterApplied = require('../../../property-filter-applied-Bj-bh9gv.cjs');
7
7
  const utils_cn = require('../../../cn-DlOJCxrS.cjs');
8
8
 
9
9
  function LogsToolbar({
@@ -1,5 +1,5 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { P as PropertyFilterApplied, a as PropertyFilterActions } from '../../../property-filter-applied-J9ob_Rss.js';
2
+ import { P as PropertyFilterApplied, a as PropertyFilterActions } from '../../../property-filter-applied-BMmMf4DE.js';
3
3
  import { c as cn } from '../../../cn-CQUhN5Jx.js';
4
4
 
5
5
  function LogsToolbar({
@@ -4,7 +4,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
5
  const jsxRuntime = require('react/jsx-runtime');
6
6
  const lucideReact = require('lucide-react');
7
- const Button = require('../../../Button-DH1aTzbs.cjs');
7
+ const Button = require('../../../Button-C4I05uT4.cjs');
8
8
  const EmptyState = require('../../../EmptyState-FNJu74e8.cjs');
9
9
  const utils_dateFormat = require('../../../utils/date-format.cjs.js');
10
10
 
@@ -1,6 +1,6 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { ExternalLinkIcon } from 'lucide-react';
3
- import { B as Button } from '../../../Button-EGoajBQY.js';
3
+ import { B as Button } from '../../../Button-D8a5EWJ5.js';
4
4
  import { E as EmptyState } from '../../../EmptyState-qVoRkUMf.js';
5
5
  import { formatDate } from '../../../utils/date-format.es.js';
6
6
 
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-app-viewer.cjs.js","sources":["../../../../src/domains/mcps/components/mcp-app-viewer.tsx"],"sourcesContent":["import { AppRenderer } from '@mcp-ui/client';\nimport type { AppRendererHandle, SandboxConfig } from '@mcp-ui/client';\nimport type { CallToolRequest, CallToolResult } from '@modelcontextprotocol/sdk/types.js';\nimport { useCallback, useMemo, useRef, useState } from 'react';\n\nconst SANDBOX_PROXY_HTML = `<!DOCTYPE html>\n<html><head><meta charset=\"UTF-8\"><style>html,body{margin:0;padding:0;width:100%;height:100%}</style></head>\n<body><script>\nwindow.addEventListener('message',function(e){\n var d=e.data;if(!d||typeof d!=='object')return;\n if(d.method==='ui/notifications/sandbox-resource-ready'){\n var h=(d.params||{}).html;if(h){document.open();document.write(h);document.close()}\n }\n});\nwindow.parent.postMessage({jsonrpc:'2.0',method:'ui/notifications/sandbox-proxy-ready',params:{}},'*');\n<\\/script></body></html>`;\n\nlet _blobUrl: URL | null = null;\nfunction getSandboxBlobUrl(): URL {\n if (!_blobUrl) {\n const blob = new Blob([SANDBOX_PROXY_HTML], { type: 'text/html' });\n _blobUrl = new URL(URL.createObjectURL(blob));\n }\n return _blobUrl;\n}\n\nexport interface McpAppViewerProps {\n /** The HTML content to render in the sandboxed iframe */\n html: string;\n /** Title for the iframe (accessibility) */\n title?: string;\n /** Name of the MCP tool this UI is associated with */\n toolName?: string;\n /** Tool arguments that triggered this UI (delivered via tool-input notification) */\n toolInput?: Record<string, unknown>;\n /** Tool execution result (delivered via tool-result notification) */\n toolResult?: unknown;\n /** Callback when the app sends a tool call request via callServerTool */\n onToolCall?: (toolName: string, args: Record<string, unknown>) => Promise<unknown>;\n /** Callback when the app sends a message via sendMessage (drives new chat turns) */\n onSendMessage?: (content: string) => void;\n /** Sandbox configuration — URL to the sandbox proxy HTML. If omitted, a blob URL is generated automatically. */\n sandboxUrl?: URL;\n /** Optional className for the container */\n className?: string;\n}\n\n/**\n * McpAppViewer renders MCP App HTML using the standard @mcp-ui/client AppRenderer.\n *\n * This component wraps AppRenderer to provide a Mastra-specific API while delegating\n * all MCP Apps protocol handling (bridge injection, handshake, tool input/result\n * delivery, JSON-RPC communication) to the standard implementation.\n */\nexport function McpAppViewer({\n html,\n title: _title = 'MCP App',\n toolName = 'mcp-app',\n toolInput,\n toolResult,\n onToolCall,\n onSendMessage,\n sandboxUrl,\n className,\n}: McpAppViewerProps) {\n const appRef = useRef<AppRendererHandle>(null);\n const [height, setHeight] = useState(400);\n\n // hostInfo MUST be memoized — it is a dependency of the bridge creation effect\n // in AppRenderer. A new object reference triggers bridge recreation → sandbox\n // timeout → toolInput never delivered.\n const hostInfo = useMemo(() => ({ name: 'Mastra Studio', version: '1.0.0' }), []);\n\n const normalizedToolResult: CallToolResult | undefined = useMemo(() => {\n if (toolResult === undefined) return undefined;\n if (toolResult && typeof toolResult === 'object' && Array.isArray((toolResult as CallToolResult).content)) {\n return toolResult as CallToolResult;\n }\n return {\n content: [\n { type: 'text' as const, text: typeof toolResult === 'string' ? toolResult : JSON.stringify(toolResult) },\n ],\n };\n }, [toolResult]);\n\n const resolvedSandboxUrl = useMemo(() => sandboxUrl ?? getSandboxBlobUrl(), [sandboxUrl]);\n const sandbox: SandboxConfig = useMemo(() => ({ url: resolvedSandboxUrl }), [resolvedSandboxUrl]);\n\n const handleCallTool = useCallback(\n async (params: CallToolRequest['params']): Promise<CallToolResult> => {\n if (!onToolCall) {\n return { content: [{ type: 'text', text: 'Tool calls not supported' }] };\n }\n const raw = await onToolCall(params.name, (params.arguments ?? {}) as Record<string, unknown>);\n\n // Detect if the result is already a CallToolResult (has content array with typed items)\n // or wrapped in an API envelope { result: CallToolResult }\n const isCtResult = (obj: unknown): boolean =>\n !!obj &&\n typeof obj === 'object' &&\n Array.isArray((obj as Record<string, unknown>).content) &&\n ((obj as Record<string, unknown>).content as unknown[]).length > 0 &&\n typeof ((obj as Record<string, unknown>).content as Record<string, unknown>[])[0]?.type === 'string';\n\n if (raw && typeof raw === 'object' && 'result' in raw && isCtResult((raw as Record<string, unknown>).result)) {\n return (raw as { result: CallToolResult }).result;\n }\n if (isCtResult(raw)) {\n return raw as CallToolResult;\n }\n return {\n content: [{ type: 'text', text: typeof raw === 'string' ? raw : JSON.stringify(raw) }],\n structuredContent: typeof raw === 'object' ? (raw as Record<string, unknown>) : { result: raw },\n };\n },\n [onToolCall],\n );\n\n const handleMessage = useCallback(\n async (params: { role: string; content: Array<{ type: string; text?: string }> }) => {\n if (!onSendMessage) return {};\n const text = params.content\n ?.filter(block => block.type === 'text')\n .map(block => block.text)\n .join('\\n');\n if (text) {\n onSendMessage(text);\n }\n return {};\n },\n [onSendMessage],\n );\n\n const handleOpenLink = useCallback(async (params: { url: string }) => {\n if (typeof params.url === 'string') {\n window.open(params.url, '_blank', 'noopener,noreferrer');\n }\n return {};\n }, []);\n\n const handleSizeChanged = useCallback((params: { width?: number; height?: number }) => {\n if (typeof params.height === 'number') {\n setHeight(Math.max(100, Math.min(params.height, 2000)));\n }\n }, []);\n\n const handleError = useCallback((error: Error) => {\n console.error('[McpAppViewer]', error);\n }, []);\n\n return (\n <div\n className={className}\n style={{\n width: '100%',\n height: `${height}px`,\n overflow: 'hidden',\n borderRadius: '8px',\n background: 'white',\n }}\n >\n <AppRenderer\n ref={appRef}\n toolName={toolName}\n sandbox={sandbox}\n html={html}\n toolInput={toolInput}\n toolResult={normalizedToolResult}\n hostInfo={hostInfo}\n onCallTool={handleCallTool}\n onMessage={handleMessage}\n onOpenLink={handleOpenLink}\n onSizeChanged={handleSizeChanged}\n onError={handleError}\n />\n </div>\n );\n}\n"],"names":["useRef","useState","useMemo","useCallback","jsx","AppRenderer"],"mappings":"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"}
1
+ {"version":3,"file":"mcp-app-viewer.cjs.js","sources":["../../../../src/domains/mcps/components/mcp-app-viewer.tsx"],"sourcesContent":["import { AppRenderer } from '@mcp-ui/client';\nimport type { AppRendererHandle, SandboxConfig } from '@mcp-ui/client';\nimport type { CallToolRequest, CallToolResult } from '@modelcontextprotocol/sdk/types.js';\nimport { useCallback, useMemo, useRef, useState } from 'react';\n\nconst SANDBOX_PROXY_HTML = `<!DOCTYPE html>\n<html><head><meta charset=\"UTF-8\"><style>html,body{margin:0;padding:0;width:100%;height:100%}</style></head>\n<body><script>\nwindow.addEventListener('message',function(e){\n var d=e.data;if(!d||typeof d!=='object')return;\n if(d.method==='ui/notifications/sandbox-resource-ready'){\n var h=(d.params||{}).html;if(h){document.open();document.write(h);document.close()}\n }\n});\nwindow.parent.postMessage({jsonrpc:'2.0',method:'ui/notifications/sandbox-proxy-ready',params:{}},'*');\n<\\/script></body></html>`;\n\nlet _blobUrl: URL | null = null;\nfunction getSandboxBlobUrl(): URL {\n if (!_blobUrl) {\n const blob = new Blob([SANDBOX_PROXY_HTML], { type: 'text/html' });\n _blobUrl = new URL(URL.createObjectURL(blob));\n }\n return _blobUrl;\n}\n\nexport interface McpAppViewerProps {\n /** The HTML content to render in the sandboxed iframe */\n html: string;\n /** Title for the iframe (accessibility) */\n title?: string;\n /** Name of the MCP tool this UI is associated with */\n toolName?: string;\n /** Tool arguments that triggered this UI (delivered via tool-input notification) */\n toolInput?: Record<string, unknown>;\n /** Tool execution result (delivered via tool-result notification) */\n toolResult?: unknown;\n /** Callback when the app sends a tool call request via callServerTool */\n onToolCall?: (toolName: string, args: Record<string, unknown>) => Promise<unknown>;\n /** Callback when the app sends a message via sendMessage (drives new chat turns) */\n onSendMessage?: (content: string) => void;\n /** Sandbox configuration — URL to the sandbox proxy HTML. If omitted, a blob URL is generated automatically. */\n sandboxUrl?: URL;\n /** Optional className for the container */\n className?: string;\n}\n\n/**\n * McpAppViewer renders MCP App HTML using the standard @mcp-ui/client AppRenderer.\n *\n * This component wraps AppRenderer to provide a Mastra-specific API while delegating\n * all MCP Apps protocol handling (bridge injection, handshake, tool input/result\n * delivery, JSON-RPC communication) to the standard implementation.\n */\nexport function McpAppViewer({\n html,\n title: _title = 'MCP App',\n toolName = 'mcp-app',\n toolInput,\n toolResult,\n onToolCall,\n onSendMessage,\n sandboxUrl,\n className,\n}: McpAppViewerProps) {\n const appRef = useRef<AppRendererHandle>(null);\n const [height, setHeight] = useState(400);\n\n // hostInfo MUST be memoized — it is a dependency of the bridge creation effect\n // in AppRenderer. A new object reference triggers bridge recreation → sandbox\n // timeout → toolInput never delivered.\n const hostInfo = useMemo(() => ({ name: 'Mastra Studio', version: '1.0.0' }), []);\n\n const normalizedToolResult: CallToolResult | undefined = useMemo(() => {\n if (toolResult === undefined) return undefined;\n if (toolResult && typeof toolResult === 'object' && Array.isArray((toolResult as CallToolResult).content)) {\n return toolResult as CallToolResult;\n }\n return {\n content: [\n { type: 'text' as const, text: typeof toolResult === 'string' ? toolResult : JSON.stringify(toolResult) },\n ],\n };\n }, [toolResult]);\n\n const resolvedSandboxUrl = useMemo(() => sandboxUrl ?? getSandboxBlobUrl(), [sandboxUrl]);\n const sandbox: SandboxConfig = useMemo(() => ({ url: resolvedSandboxUrl }), [resolvedSandboxUrl]);\n\n const handleCallTool = useCallback(\n async (params: CallToolRequest['params']): Promise<CallToolResult> => {\n if (!onToolCall) {\n return { content: [{ type: 'text', text: 'Tool calls not supported' }] };\n }\n const raw = await onToolCall(params.name, params.arguments ?? {});\n\n // Detect if the result is already a CallToolResult (has content array with typed items)\n // or wrapped in an API envelope { result: CallToolResult }\n const isCtResult = (obj: unknown): boolean =>\n !!obj &&\n typeof obj === 'object' &&\n Array.isArray((obj as Record<string, unknown>).content) &&\n ((obj as Record<string, unknown>).content as unknown[]).length > 0 &&\n typeof ((obj as Record<string, unknown>).content as Record<string, unknown>[])[0]?.type === 'string';\n\n if (raw && typeof raw === 'object' && 'result' in raw && isCtResult((raw as Record<string, unknown>).result)) {\n return (raw as { result: CallToolResult }).result;\n }\n if (isCtResult(raw)) {\n return raw as CallToolResult;\n }\n return {\n content: [{ type: 'text', text: typeof raw === 'string' ? raw : JSON.stringify(raw) }],\n structuredContent: typeof raw === 'object' ? (raw as Record<string, unknown>) : { result: raw },\n };\n },\n [onToolCall],\n );\n\n const handleMessage = useCallback(\n async (params: { role: string; content: Array<{ type: string; text?: string }> }) => {\n if (!onSendMessage) return {};\n const text = params.content\n ?.filter(block => block.type === 'text')\n .map(block => block.text)\n .join('\\n');\n if (text) {\n onSendMessage(text);\n }\n return {};\n },\n [onSendMessage],\n );\n\n const handleOpenLink = useCallback(async (params: { url: string }) => {\n if (typeof params.url === 'string') {\n window.open(params.url, '_blank', 'noopener,noreferrer');\n }\n return {};\n }, []);\n\n const handleSizeChanged = useCallback((params: { width?: number; height?: number }) => {\n if (typeof params.height === 'number') {\n setHeight(Math.max(100, Math.min(params.height, 2000)));\n }\n }, []);\n\n const handleError = useCallback((error: Error) => {\n console.error('[McpAppViewer]', error);\n }, []);\n\n return (\n <div\n className={className}\n style={{\n width: '100%',\n height: `${height}px`,\n overflow: 'hidden',\n borderRadius: '8px',\n background: 'white',\n }}\n >\n <AppRenderer\n ref={appRef}\n toolName={toolName}\n sandbox={sandbox}\n html={html}\n toolInput={toolInput}\n toolResult={normalizedToolResult}\n hostInfo={hostInfo}\n onCallTool={handleCallTool}\n onMessage={handleMessage}\n onOpenLink={handleOpenLink}\n onSizeChanged={handleSizeChanged}\n onError={handleError}\n />\n </div>\n );\n}\n"],"names":["useRef","useState","useMemo","useCallback","jsx","AppRenderer"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-app-viewer.es.js","sources":["../../../../src/domains/mcps/components/mcp-app-viewer.tsx"],"sourcesContent":["import { AppRenderer } from '@mcp-ui/client';\nimport type { AppRendererHandle, SandboxConfig } from '@mcp-ui/client';\nimport type { CallToolRequest, CallToolResult } from '@modelcontextprotocol/sdk/types.js';\nimport { useCallback, useMemo, useRef, useState } from 'react';\n\nconst SANDBOX_PROXY_HTML = `<!DOCTYPE html>\n<html><head><meta charset=\"UTF-8\"><style>html,body{margin:0;padding:0;width:100%;height:100%}</style></head>\n<body><script>\nwindow.addEventListener('message',function(e){\n var d=e.data;if(!d||typeof d!=='object')return;\n if(d.method==='ui/notifications/sandbox-resource-ready'){\n var h=(d.params||{}).html;if(h){document.open();document.write(h);document.close()}\n }\n});\nwindow.parent.postMessage({jsonrpc:'2.0',method:'ui/notifications/sandbox-proxy-ready',params:{}},'*');\n<\\/script></body></html>`;\n\nlet _blobUrl: URL | null = null;\nfunction getSandboxBlobUrl(): URL {\n if (!_blobUrl) {\n const blob = new Blob([SANDBOX_PROXY_HTML], { type: 'text/html' });\n _blobUrl = new URL(URL.createObjectURL(blob));\n }\n return _blobUrl;\n}\n\nexport interface McpAppViewerProps {\n /** The HTML content to render in the sandboxed iframe */\n html: string;\n /** Title for the iframe (accessibility) */\n title?: string;\n /** Name of the MCP tool this UI is associated with */\n toolName?: string;\n /** Tool arguments that triggered this UI (delivered via tool-input notification) */\n toolInput?: Record<string, unknown>;\n /** Tool execution result (delivered via tool-result notification) */\n toolResult?: unknown;\n /** Callback when the app sends a tool call request via callServerTool */\n onToolCall?: (toolName: string, args: Record<string, unknown>) => Promise<unknown>;\n /** Callback when the app sends a message via sendMessage (drives new chat turns) */\n onSendMessage?: (content: string) => void;\n /** Sandbox configuration — URL to the sandbox proxy HTML. If omitted, a blob URL is generated automatically. */\n sandboxUrl?: URL;\n /** Optional className for the container */\n className?: string;\n}\n\n/**\n * McpAppViewer renders MCP App HTML using the standard @mcp-ui/client AppRenderer.\n *\n * This component wraps AppRenderer to provide a Mastra-specific API while delegating\n * all MCP Apps protocol handling (bridge injection, handshake, tool input/result\n * delivery, JSON-RPC communication) to the standard implementation.\n */\nexport function McpAppViewer({\n html,\n title: _title = 'MCP App',\n toolName = 'mcp-app',\n toolInput,\n toolResult,\n onToolCall,\n onSendMessage,\n sandboxUrl,\n className,\n}: McpAppViewerProps) {\n const appRef = useRef<AppRendererHandle>(null);\n const [height, setHeight] = useState(400);\n\n // hostInfo MUST be memoized — it is a dependency of the bridge creation effect\n // in AppRenderer. A new object reference triggers bridge recreation → sandbox\n // timeout → toolInput never delivered.\n const hostInfo = useMemo(() => ({ name: 'Mastra Studio', version: '1.0.0' }), []);\n\n const normalizedToolResult: CallToolResult | undefined = useMemo(() => {\n if (toolResult === undefined) return undefined;\n if (toolResult && typeof toolResult === 'object' && Array.isArray((toolResult as CallToolResult).content)) {\n return toolResult as CallToolResult;\n }\n return {\n content: [\n { type: 'text' as const, text: typeof toolResult === 'string' ? toolResult : JSON.stringify(toolResult) },\n ],\n };\n }, [toolResult]);\n\n const resolvedSandboxUrl = useMemo(() => sandboxUrl ?? getSandboxBlobUrl(), [sandboxUrl]);\n const sandbox: SandboxConfig = useMemo(() => ({ url: resolvedSandboxUrl }), [resolvedSandboxUrl]);\n\n const handleCallTool = useCallback(\n async (params: CallToolRequest['params']): Promise<CallToolResult> => {\n if (!onToolCall) {\n return { content: [{ type: 'text', text: 'Tool calls not supported' }] };\n }\n const raw = await onToolCall(params.name, (params.arguments ?? {}) as Record<string, unknown>);\n\n // Detect if the result is already a CallToolResult (has content array with typed items)\n // or wrapped in an API envelope { result: CallToolResult }\n const isCtResult = (obj: unknown): boolean =>\n !!obj &&\n typeof obj === 'object' &&\n Array.isArray((obj as Record<string, unknown>).content) &&\n ((obj as Record<string, unknown>).content as unknown[]).length > 0 &&\n typeof ((obj as Record<string, unknown>).content as Record<string, unknown>[])[0]?.type === 'string';\n\n if (raw && typeof raw === 'object' && 'result' in raw && isCtResult((raw as Record<string, unknown>).result)) {\n return (raw as { result: CallToolResult }).result;\n }\n if (isCtResult(raw)) {\n return raw as CallToolResult;\n }\n return {\n content: [{ type: 'text', text: typeof raw === 'string' ? raw : JSON.stringify(raw) }],\n structuredContent: typeof raw === 'object' ? (raw as Record<string, unknown>) : { result: raw },\n };\n },\n [onToolCall],\n );\n\n const handleMessage = useCallback(\n async (params: { role: string; content: Array<{ type: string; text?: string }> }) => {\n if (!onSendMessage) return {};\n const text = params.content\n ?.filter(block => block.type === 'text')\n .map(block => block.text)\n .join('\\n');\n if (text) {\n onSendMessage(text);\n }\n return {};\n },\n [onSendMessage],\n );\n\n const handleOpenLink = useCallback(async (params: { url: string }) => {\n if (typeof params.url === 'string') {\n window.open(params.url, '_blank', 'noopener,noreferrer');\n }\n return {};\n }, []);\n\n const handleSizeChanged = useCallback((params: { width?: number; height?: number }) => {\n if (typeof params.height === 'number') {\n setHeight(Math.max(100, Math.min(params.height, 2000)));\n }\n }, []);\n\n const handleError = useCallback((error: Error) => {\n console.error('[McpAppViewer]', error);\n }, []);\n\n return (\n <div\n className={className}\n style={{\n width: '100%',\n height: `${height}px`,\n overflow: 'hidden',\n borderRadius: '8px',\n background: 'white',\n }}\n >\n <AppRenderer\n ref={appRef}\n toolName={toolName}\n sandbox={sandbox}\n html={html}\n toolInput={toolInput}\n toolResult={normalizedToolResult}\n hostInfo={hostInfo}\n onCallTool={handleCallTool}\n onMessage={handleMessage}\n onOpenLink={handleOpenLink}\n onSizeChanged={handleSizeChanged}\n onError={handleError}\n />\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-app-viewer.es.js","sources":["../../../../src/domains/mcps/components/mcp-app-viewer.tsx"],"sourcesContent":["import { AppRenderer } from '@mcp-ui/client';\nimport type { AppRendererHandle, SandboxConfig } from '@mcp-ui/client';\nimport type { CallToolRequest, CallToolResult } from '@modelcontextprotocol/sdk/types.js';\nimport { useCallback, useMemo, useRef, useState } from 'react';\n\nconst SANDBOX_PROXY_HTML = `<!DOCTYPE html>\n<html><head><meta charset=\"UTF-8\"><style>html,body{margin:0;padding:0;width:100%;height:100%}</style></head>\n<body><script>\nwindow.addEventListener('message',function(e){\n var d=e.data;if(!d||typeof d!=='object')return;\n if(d.method==='ui/notifications/sandbox-resource-ready'){\n var h=(d.params||{}).html;if(h){document.open();document.write(h);document.close()}\n }\n});\nwindow.parent.postMessage({jsonrpc:'2.0',method:'ui/notifications/sandbox-proxy-ready',params:{}},'*');\n<\\/script></body></html>`;\n\nlet _blobUrl: URL | null = null;\nfunction getSandboxBlobUrl(): URL {\n if (!_blobUrl) {\n const blob = new Blob([SANDBOX_PROXY_HTML], { type: 'text/html' });\n _blobUrl = new URL(URL.createObjectURL(blob));\n }\n return _blobUrl;\n}\n\nexport interface McpAppViewerProps {\n /** The HTML content to render in the sandboxed iframe */\n html: string;\n /** Title for the iframe (accessibility) */\n title?: string;\n /** Name of the MCP tool this UI is associated with */\n toolName?: string;\n /** Tool arguments that triggered this UI (delivered via tool-input notification) */\n toolInput?: Record<string, unknown>;\n /** Tool execution result (delivered via tool-result notification) */\n toolResult?: unknown;\n /** Callback when the app sends a tool call request via callServerTool */\n onToolCall?: (toolName: string, args: Record<string, unknown>) => Promise<unknown>;\n /** Callback when the app sends a message via sendMessage (drives new chat turns) */\n onSendMessage?: (content: string) => void;\n /** Sandbox configuration — URL to the sandbox proxy HTML. If omitted, a blob URL is generated automatically. */\n sandboxUrl?: URL;\n /** Optional className for the container */\n className?: string;\n}\n\n/**\n * McpAppViewer renders MCP App HTML using the standard @mcp-ui/client AppRenderer.\n *\n * This component wraps AppRenderer to provide a Mastra-specific API while delegating\n * all MCP Apps protocol handling (bridge injection, handshake, tool input/result\n * delivery, JSON-RPC communication) to the standard implementation.\n */\nexport function McpAppViewer({\n html,\n title: _title = 'MCP App',\n toolName = 'mcp-app',\n toolInput,\n toolResult,\n onToolCall,\n onSendMessage,\n sandboxUrl,\n className,\n}: McpAppViewerProps) {\n const appRef = useRef<AppRendererHandle>(null);\n const [height, setHeight] = useState(400);\n\n // hostInfo MUST be memoized — it is a dependency of the bridge creation effect\n // in AppRenderer. A new object reference triggers bridge recreation → sandbox\n // timeout → toolInput never delivered.\n const hostInfo = useMemo(() => ({ name: 'Mastra Studio', version: '1.0.0' }), []);\n\n const normalizedToolResult: CallToolResult | undefined = useMemo(() => {\n if (toolResult === undefined) return undefined;\n if (toolResult && typeof toolResult === 'object' && Array.isArray((toolResult as CallToolResult).content)) {\n return toolResult as CallToolResult;\n }\n return {\n content: [\n { type: 'text' as const, text: typeof toolResult === 'string' ? toolResult : JSON.stringify(toolResult) },\n ],\n };\n }, [toolResult]);\n\n const resolvedSandboxUrl = useMemo(() => sandboxUrl ?? getSandboxBlobUrl(), [sandboxUrl]);\n const sandbox: SandboxConfig = useMemo(() => ({ url: resolvedSandboxUrl }), [resolvedSandboxUrl]);\n\n const handleCallTool = useCallback(\n async (params: CallToolRequest['params']): Promise<CallToolResult> => {\n if (!onToolCall) {\n return { content: [{ type: 'text', text: 'Tool calls not supported' }] };\n }\n const raw = await onToolCall(params.name, params.arguments ?? {});\n\n // Detect if the result is already a CallToolResult (has content array with typed items)\n // or wrapped in an API envelope { result: CallToolResult }\n const isCtResult = (obj: unknown): boolean =>\n !!obj &&\n typeof obj === 'object' &&\n Array.isArray((obj as Record<string, unknown>).content) &&\n ((obj as Record<string, unknown>).content as unknown[]).length > 0 &&\n typeof ((obj as Record<string, unknown>).content as Record<string, unknown>[])[0]?.type === 'string';\n\n if (raw && typeof raw === 'object' && 'result' in raw && isCtResult((raw as Record<string, unknown>).result)) {\n return (raw as { result: CallToolResult }).result;\n }\n if (isCtResult(raw)) {\n return raw as CallToolResult;\n }\n return {\n content: [{ type: 'text', text: typeof raw === 'string' ? raw : JSON.stringify(raw) }],\n structuredContent: typeof raw === 'object' ? (raw as Record<string, unknown>) : { result: raw },\n };\n },\n [onToolCall],\n );\n\n const handleMessage = useCallback(\n async (params: { role: string; content: Array<{ type: string; text?: string }> }) => {\n if (!onSendMessage) return {};\n const text = params.content\n ?.filter(block => block.type === 'text')\n .map(block => block.text)\n .join('\\n');\n if (text) {\n onSendMessage(text);\n }\n return {};\n },\n [onSendMessage],\n );\n\n const handleOpenLink = useCallback(async (params: { url: string }) => {\n if (typeof params.url === 'string') {\n window.open(params.url, '_blank', 'noopener,noreferrer');\n }\n return {};\n }, []);\n\n const handleSizeChanged = useCallback((params: { width?: number; height?: number }) => {\n if (typeof params.height === 'number') {\n setHeight(Math.max(100, Math.min(params.height, 2000)));\n }\n }, []);\n\n const handleError = useCallback((error: Error) => {\n console.error('[McpAppViewer]', error);\n }, []);\n\n return (\n <div\n className={className}\n style={{\n width: '100%',\n height: `${height}px`,\n overflow: 'hidden',\n borderRadius: '8px',\n background: 'white',\n }}\n >\n <AppRenderer\n ref={appRef}\n toolName={toolName}\n sandbox={sandbox}\n html={html}\n toolInput={toolInput}\n toolResult={normalizedToolResult}\n hostInfo={hostInfo}\n onCallTool={handleCallTool}\n onMessage={handleMessage}\n onOpenLink={handleOpenLink}\n onSizeChanged={handleSizeChanged}\n onError={handleError}\n />\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ const jsxRuntime = require('react/jsx-runtime');
6
6
  const lucideReact = require('lucide-react');
7
7
  const React = require('react');
8
8
  const recharts = require('recharts');
9
- const Button = require('../../../Button-DH1aTzbs.cjs');
9
+ const Button = require('../../../Button-C4I05uT4.cjs');
10
10
  const Txt = require('../../../Txt-CIS2G5Jx.cjs');
11
11
  const primitives_raisedSurface = require('../../../primitives/raised-surface.cjs.js');
12
12
  const domains_memory_lib_replaySelection = require('../lib/replay-selection.cjs.js');
@@ -2,7 +2,7 @@ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
2
  import { RotateCcw } from 'lucide-react';
3
3
  import { useCallback, useState, useEffect, useMemo, useRef } from 'react';
4
4
  import { ResponsiveContainer, ComposedChart, XAxis, YAxis, Tooltip, Area, ReferenceLine, AreaChart, ScatterChart, Scatter } from 'recharts';
5
- import { B as Button } from '../../../Button-EGoajBQY.js';
5
+ import { B as Button } from '../../../Button-D8a5EWJ5.js';
6
6
  import { T as Txt } from '../../../Txt-BtIGLRk1.js';
7
7
  import { overlaySurfaceStyle } from '../../../primitives/raised-surface.es.js';
8
8
  import { tToTimestampMs } from '../lib/replay-selection.es.js';
@@ -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 React = require('react');
8
- const Button = require('../../../Button-DH1aTzbs.cjs');
8
+ const Button = require('../../../Button-C4I05uT4.cjs');
9
9
  const skeleton = require('../../../skeleton-lkFwOzqL.cjs');
10
10
  const Txt = require('../../../Txt-CIS2G5Jx.cjs');
11
11
  const icons_MemoryIcon = require('../../../icons/MemoryIcon.cjs.js');
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { ArrowLeftIcon } from 'lucide-react';
3
3
  import { useState, useMemo, useEffect } from 'react';
4
- import { B as Button } from '../../../Button-EGoajBQY.js';
4
+ import { B as Button } from '../../../Button-D8a5EWJ5.js';
5
5
  import { S as Skeleton } from '../../../skeleton-Q4fDAXcz.js';
6
6
  import { T as Txt } from '../../../Txt-BtIGLRk1.js';
7
7
  import { MemoryIcon } from '../../../icons/MemoryIcon.es.js';
@@ -12,7 +12,7 @@ const domains_metrics_lib_metricsBuckets = require('../lib/metrics-buckets.cjs.j
12
12
  const domains_metrics_components_chartArea = require('./chart-area.cjs.js');
13
13
  const domains_metrics_components_chartCard = require('./chart-card.cjs.js');
14
14
  const domains_metrics_components_chartCardError = require('./chart-card-error.cjs.js');
15
- const metricsCard = require('../../../metrics-card-DaFApxZY.cjs');
15
+ const metricsCard = require('../../../metrics-card-CpjGYNBP.cjs');
16
16
  const metricsStackedBarChart = require('../../../metrics-stacked-bar-chart-BofJ8NDc.cjs');
17
17
 
18
18
  const SERIES = [
@@ -8,7 +8,7 @@ import { bucketPlan, bucketWindow } from '../lib/metrics-buckets.es.js';
8
8
  import { ChartArea } from './chart-area.es.js';
9
9
  import { ChartCard } from './chart-card.es.js';
10
10
  import { ChartCardError } from './chart-card-error.es.js';
11
- import { M as MetricsCard } from '../../../metrics-card-Z_moDiV5.js';
11
+ import { M as MetricsCard } from '../../../metrics-card-D6ty6a6Z.js';
12
12
  import { M as MetricsStackedBarChart } from '../../../metrics-stacked-bar-chart-DcxHznKw.js';
13
13
 
14
14
  const SERIES = [
@@ -4,7 +4,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
5
  const jsxRuntime = require('react/jsx-runtime');
6
6
  const lucideReact = require('lucide-react');
7
- const Button = require('../../../Button-DH1aTzbs.cjs');
7
+ const Button = require('../../../Button-C4I05uT4.cjs');
8
8
 
9
9
  function OpenInTracesButton({ onClick }) {
10
10
  return /* @__PURE__ */ jsxRuntime.jsx(Button.Button, { onClick, variant: "ghost", size: "icon-md", tooltip: "View in Traces", "aria-label": "View in Traces", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.EyeIcon, {}) });
@@ -1,6 +1,6 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { LogsIcon, EyeIcon } from 'lucide-react';
3
- import { B as Button } from '../../../Button-EGoajBQY.js';
3
+ import { B as Button } from '../../../Button-D8a5EWJ5.js';
4
4
 
5
5
  function OpenInTracesButton({ onClick }) {
6
6
  return /* @__PURE__ */ jsx(Button, { onClick, variant: "ghost", size: "icon-md", tooltip: "View in Traces", "aria-label": "View in Traces", children: /* @__PURE__ */ jsx(EyeIcon, {}) });
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
5
  const jsxRuntime = require('react/jsx-runtime');
6
- const metricsCard = require('../../../metrics-card-DaFApxZY.cjs');
6
+ const metricsCard = require('../../../metrics-card-CpjGYNBP.cjs');
7
7
 
8
8
  function ChartArea({ isEmpty = false, emptyMessage = "No data in this range.", children }) {
9
9
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex min-h-0 flex-1 flex-col", children: [
@@ -1,5 +1,5 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { M as MetricsCard } from '../../../metrics-card-Z_moDiV5.js';
2
+ import { M as MetricsCard } from '../../../metrics-card-D6ty6a6Z.js';
3
3
 
4
4
  function ChartArea({ isEmpty = false, emptyMessage = "No data in this range.", children }) {
5
5
  return /* @__PURE__ */ jsxs("div", { className: "relative flex min-h-0 flex-1 flex-col", children: [
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
5
  const jsxRuntime = require('react/jsx-runtime');
6
- const metricsCard = require('../../../metrics-card-DaFApxZY.cjs');
6
+ const metricsCard = require('../../../metrics-card-CpjGYNBP.cjs');
7
7
 
8
8
  function ChartCardError() {
9
9
  return /* @__PURE__ */ jsxRuntime.jsx(metricsCard.MetricsCard.Error, { message: "Couldn't load this data. Try again in a moment.", className: "h-full" });
@@ -1,5 +1,5 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import { M as MetricsCard } from '../../../metrics-card-Z_moDiV5.js';
2
+ import { M as MetricsCard } from '../../../metrics-card-D6ty6a6Z.js';
3
3
 
4
4
  function ChartCardError() {
5
5
  return /* @__PURE__ */ jsx(MetricsCard.Error, { message: "Couldn't load this data. Try again in a moment.", className: "h-full" });
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
5
  const jsxRuntime = require('react/jsx-runtime');
6
- const metricsCard = require('../../../metrics-card-DaFApxZY.cjs');
6
+ const metricsCard = require('../../../metrics-card-CpjGYNBP.cjs');
7
7
  const utils_cn = require('../../../cn-DlOJCxrS.cjs');
8
8
 
9
9
  function ChartCard({
@@ -1,5 +1,5 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { M as MetricsCard } from '../../../metrics-card-Z_moDiV5.js';
2
+ import { M as MetricsCard } from '../../../metrics-card-D6ty6a6Z.js';
3
3
  import { c as cn } from '../../../cn-CQUhN5Jx.js';
4
4
 
5
5
  function ChartCard({
@@ -4,7 +4,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
5
  const jsxRuntime = require('react/jsx-runtime');
6
6
  const React = require('react');
7
- const dateTimeRangePicker = require('../../../date-time-range-picker-BjQVCVUM.cjs');
7
+ const dateTimeRangePicker = require('../../../date-time-range-picker-CXGab8Nj.cjs');
8
8
  const domains_metrics_hooks_useMetrics = require('../hooks/use-metrics.cjs.js');
9
9
  const domains_metrics_metricsDatePresets = require('../metrics-date-presets.cjs.js');
10
10
 
@@ -1,6 +1,6 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { useRef } from 'react';
3
- import { D as DateTimeRangePicker } from '../../../date-time-range-picker-D-EECKzz.js';
3
+ import { D as DateTimeRangePicker } from '../../../date-time-range-picker-CcnDMZJu.js';
4
4
  import { useMetrics } from '../hooks/use-metrics.es.js';
5
5
  import { METRICS_PICKER_PRESETS, toPickerPreset, fromPickerPreset } from '../metrics-date-presets.es.js';
6
6
 
@@ -13,7 +13,7 @@ const domains_metrics_components_cardActionButtons = require('./card-action-butt
13
13
  const domains_metrics_components_chartArea = require('./chart-area.cjs.js');
14
14
  const domains_metrics_components_chartCard = require('./chart-card.cjs.js');
15
15
  const domains_metrics_components_chartCardError = require('./chart-card-error.cjs.js');
16
- const metricsCard = require('../../../metrics-card-DaFApxZY.cjs');
16
+ const metricsCard = require('../../../metrics-card-CpjGYNBP.cjs');
17
17
  const metricsLineChart = require('../../../metrics-line-chart-BkHXfteP.cjs');
18
18
 
19
19
  const SERIES = [{ dataKey: "failureRate", label: "Failed runs", color: domains_metrics_lib_chartColors.CHART_COLORS.error }];
@@ -9,7 +9,7 @@ import { OpenErrorsInLogsButton } from './card-action-buttons.es.js';
9
9
  import { ChartArea } from './chart-area.es.js';
10
10
  import { ChartCard } from './chart-card.es.js';
11
11
  import { ChartCardError } from './chart-card-error.es.js';
12
- import { M as MetricsCard } from '../../../metrics-card-Z_moDiV5.js';
12
+ import { M as MetricsCard } from '../../../metrics-card-D6ty6a6Z.js';
13
13
  import { M as MetricsLineChart } from '../../../metrics-line-chart-EJs7ojrX.js';
14
14
 
15
15
  const SERIES = [{ dataKey: "failureRate", label: "Failed runs", color: CHART_COLORS.error }];
@@ -15,7 +15,7 @@ const domains_metrics_components_cardActionButtons = require('./card-action-butt
15
15
  const domains_metrics_components_chartArea = require('./chart-area.cjs.js');
16
16
  const domains_metrics_components_chartCard = require('./chart-card.cjs.js');
17
17
  const domains_metrics_components_chartCardError = require('./chart-card-error.cjs.js');
18
- const metricsCard = require('../../../metrics-card-DaFApxZY.cjs');
18
+ const metricsCard = require('../../../metrics-card-CpjGYNBP.cjs');
19
19
  const metricsLineChart = require('../../../metrics-line-chart-BkHXfteP.cjs');
20
20
  const metricsLineChartTooltip = require('../../../metrics-line-chart-tooltip-v3F9XvGj.cjs');
21
21
 
@@ -11,7 +11,7 @@ import { OpenInTracesButton } from './card-action-buttons.es.js';
11
11
  import { ChartArea } from './chart-area.es.js';
12
12
  import { ChartCard } from './chart-card.es.js';
13
13
  import { ChartCardError } from './chart-card-error.es.js';
14
- import { M as MetricsCard } from '../../../metrics-card-Z_moDiV5.js';
14
+ import { M as MetricsCard } from '../../../metrics-card-D6ty6a6Z.js';
15
15
  import { M as MetricsLineChart } from '../../../metrics-line-chart-EJs7ojrX.js';
16
16
  import { M as MetricsLineChartLegend } from '../../../metrics-line-chart-tooltip-CGFjb9nn.js';
17
17
 
@@ -9,7 +9,7 @@ const domains_metrics_lib_chartColors = require('../lib/chart-colors.cjs.js');
9
9
  const domains_metrics_components_chartArea = require('./chart-area.cjs.js');
10
10
  const domains_metrics_components_chartCard = require('./chart-card.cjs.js');
11
11
  const domains_metrics_components_chartCardError = require('./chart-card-error.cjs.js');
12
- const metricsCard = require('../../../metrics-card-DaFApxZY.cjs');
12
+ const metricsCard = require('../../../metrics-card-CpjGYNBP.cjs');
13
13
  const metricsLineChart = require('../../../metrics-line-chart-BkHXfteP.cjs');
14
14
 
15
15
  const SCORER_COLORS = [
@@ -5,7 +5,7 @@ import { CHART_COLORS } from '../lib/chart-colors.es.js';
5
5
  import { ChartArea } from './chart-area.es.js';
6
6
  import { ChartCard } from './chart-card.es.js';
7
7
  import { ChartCardError } from './chart-card-error.es.js';
8
- import { M as MetricsCard } from '../../../metrics-card-Z_moDiV5.js';
8
+ import { M as MetricsCard } from '../../../metrics-card-D6ty6a6Z.js';
9
9
  import { M as MetricsLineChart } from '../../../metrics-line-chart-EJs7ojrX.js';
10
10
 
11
11
  const SCORER_COLORS = [
@@ -14,7 +14,7 @@ const domains_metrics_components_cardActionButtons = require('./card-action-butt
14
14
  const domains_metrics_components_chartArea = require('./chart-area.cjs.js');
15
15
  const domains_metrics_components_chartCard = require('./chart-card.cjs.js');
16
16
  const domains_metrics_components_chartCardError = require('./chart-card-error.cjs.js');
17
- const metricsCard = require('../../../metrics-card-DaFApxZY.cjs');
17
+ const metricsCard = require('../../../metrics-card-CpjGYNBP.cjs');
18
18
  const metricsLineChartTooltip = require('../../../metrics-line-chart-tooltip-v3F9XvGj.cjs');
19
19
  const metricsStackedBarChart = require('../../../metrics-stacked-bar-chart-BofJ8NDc.cjs');
20
20
 
@@ -10,7 +10,7 @@ import { OpenInTracesButton } from './card-action-buttons.es.js';
10
10
  import { ChartArea } from './chart-area.es.js';
11
11
  import { ChartCard } from './chart-card.es.js';
12
12
  import { ChartCardError } from './chart-card-error.es.js';
13
- import { M as MetricsCard } from '../../../metrics-card-Z_moDiV5.js';
13
+ import { M as MetricsCard } from '../../../metrics-card-D6ty6a6Z.js';
14
14
  import { M as MetricsLineChartLegend } from '../../../metrics-line-chart-tooltip-CGFjb9nn.js';
15
15
  import { M as MetricsStackedBarChart } from '../../../metrics-stacked-bar-chart-DcxHznKw.js';
16
16
 
@@ -14,7 +14,7 @@ const domains_metrics_components_cardActionButtons = require('./card-action-butt
14
14
  const domains_metrics_components_chartArea = require('./chart-area.cjs.js');
15
15
  const domains_metrics_components_chartCard = require('./chart-card.cjs.js');
16
16
  const domains_metrics_components_chartCardError = require('./chart-card-error.cjs.js');
17
- const metricsCard = require('../../../metrics-card-DaFApxZY.cjs');
17
+ const metricsCard = require('../../../metrics-card-CpjGYNBP.cjs');
18
18
  const metricsShareList = require('../../../metrics-share-list-DYpQ4W4l.cjs');
19
19
 
20
20
  const ROOT_ENTITY = {
@@ -10,7 +10,7 @@ import { OpenInTracesButton, OpenErrorsInLogsButton } from './card-action-button
10
10
  import { ChartArea } from './chart-area.es.js';
11
11
  import { ChartCard } from './chart-card.es.js';
12
12
  import { ChartCardError } from './chart-card-error.es.js';
13
- import { M as MetricsCard } from '../../../metrics-card-Z_moDiV5.js';
13
+ import { M as MetricsCard } from '../../../metrics-card-D6ty6a6Z.js';
14
14
  import { M as MetricsShareList } from '../../../metrics-share-list-CNwWjzJa.js';
15
15
 
16
16
  const ROOT_ENTITY = {
@@ -14,7 +14,7 @@ const domains_metrics_components_cardActionButtons = require('./card-action-butt
14
14
  const domains_metrics_components_chartArea = require('./chart-area.cjs.js');
15
15
  const domains_metrics_components_chartCard = require('./chart-card.cjs.js');
16
16
  const domains_metrics_components_chartCardError = require('./chart-card-error.cjs.js');
17
- const metricsCard = require('../../../metrics-card-DaFApxZY.cjs');
17
+ const metricsCard = require('../../../metrics-card-CpjGYNBP.cjs');
18
18
  const metricsShareList = require('../../../metrics-share-list-DYpQ4W4l.cjs');
19
19
 
20
20
  const KEEP = { placeholderData: reactQuery.keepPreviousData };
@@ -10,7 +10,7 @@ import { OpenInTracesButton } from './card-action-buttons.es.js';
10
10
  import { ChartArea } from './chart-area.es.js';
11
11
  import { ChartCard } from './chart-card.es.js';
12
12
  import { ChartCardError } from './chart-card-error.es.js';
13
- import { M as MetricsCard } from '../../../metrics-card-Z_moDiV5.js';
13
+ import { M as MetricsCard } from '../../../metrics-card-D6ty6a6Z.js';
14
14
  import { M as MetricsShareList } from '../../../metrics-share-list-CNwWjzJa.js';
15
15
 
16
16
  const KEEP = { placeholderData: keepPreviousData };
@@ -10,16 +10,16 @@ const datasets = require('@mastra/react/hooks/datasets');
10
10
  const reactQuery = require('@tanstack/react-query');
11
11
  const lucideReact = require('lucide-react');
12
12
  const React = require('react');
13
- const Button = require('../../../Button-DH1aTzbs.cjs');
14
- const codeEditor = require('../../../code-editor-DQuJ1XXd.cjs');
13
+ const Button = require('../../../Button-C4I05uT4.cjs');
14
+ const codeEditor = require('../../../code-editor-Bd-Cldem.cjs');
15
15
  const field = require('../../../field-BCU5ZtWV.cjs');
16
16
  require('../../../field-control-aria-WzMGs0A4.cjs');
17
17
  const form = require('../../../form-Cw-n1rd9.cjs');
18
- const select = require('../../../select-CbNLtiAs.cjs');
18
+ const select = require('../../../select-A3AFKLd9.cjs');
19
19
  const Txt = require('../../../Txt-CIS2G5Jx.cjs');
20
20
  require('../../../lib/framework.cjs.js');
21
21
  const toast = require('../../../toast-DxKdVSyw.cjs');
22
- const sideDialog = require('../../../side-dialog-BzULMBaH.cjs');
22
+ const sideDialog = require('../../../side-dialog-SJCWBnbw.cjs');
23
23
  const textAndIcon = require('../../../text-and-icon-BcyWJ1Fj.cjs');
24
24
  const utils_id = require('../../../utils/id.cjs.js');
25
25