@mastra/playground-ui 65.0.0-alpha.9 → 65.0.0

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 (324) hide show
  1. package/dist/{ask-user-card-DnvW7jXS.js → ask-user-card-B9q_GFTt.js} +2 -2
  2. package/dist/{ask-user-card-DnvW7jXS.js.map → ask-user-card-B9q_GFTt.js.map} +1 -1
  3. package/dist/{ask-user-card-DiFQcUzM.cjs → ask-user-card-C-N5rpYG.cjs} +2 -2
  4. package/dist/{ask-user-card-DiFQcUzM.cjs.map → ask-user-card-C-N5rpYG.cjs.map} +1 -1
  5. package/dist/components/Button.cjs.js +1 -1
  6. package/dist/components/Button.es.js +1 -1
  7. package/dist/components/CommandPalette.cjs.js +1 -1
  8. package/dist/components/CommandPalette.es.js +1 -1
  9. package/dist/components/Comment.cjs.js +1 -1
  10. package/dist/components/Comment.es.js +1 -1
  11. package/dist/components/DataCodeSection.cjs.js +1 -1
  12. package/dist/components/DataCodeSection.es.js +1 -1
  13. package/dist/components/DataList.cjs.js +15 -17
  14. package/dist/components/DataList.cjs.js.map +1 -1
  15. package/dist/components/DataList.es.js +4 -5
  16. package/dist/components/DataList.es.js.map +1 -1
  17. package/dist/components/DataPanel.cjs.js +1 -1
  18. package/dist/components/DataPanel.es.js +1 -1
  19. package/dist/components/DateTimePicker.cjs.js +1 -1
  20. package/dist/components/DateTimePicker.es.js +1 -1
  21. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  22. package/dist/components/DateTimeRangePicker.es.js +1 -1
  23. package/dist/components/EnvironmentVariablesEditor.cjs.js +2 -2
  24. package/dist/components/EnvironmentVariablesEditor.es.js +2 -2
  25. package/dist/components/Field.cjs.js +1 -1
  26. package/dist/components/Field.es.js +1 -1
  27. package/dist/components/FilterBar.cjs.js +2 -2
  28. package/dist/components/FilterBar.es.js +2 -2
  29. package/dist/components/JSONSchemaForm.cjs.js +1 -1
  30. package/dist/components/JSONSchemaForm.es.js +1 -1
  31. package/dist/components/Kbd.cjs.js +1 -1
  32. package/dist/components/Kbd.es.js +1 -1
  33. package/dist/components/ListSearch.cjs.js +1 -1
  34. package/dist/components/ListSearch.es.js +1 -1
  35. package/dist/components/LogsDataList.cjs.js +5 -2
  36. package/dist/components/LogsDataList.cjs.js.map +1 -1
  37. package/dist/components/LogsDataList.es.js +5 -2
  38. package/dist/components/LogsDataList.es.js.map +1 -1
  39. package/dist/components/PropertyFilter.cjs.js +1 -1
  40. package/dist/components/PropertyFilter.es.js +1 -1
  41. package/dist/components/SavedViews.cjs.js +1 -1
  42. package/dist/components/SavedViews.es.js +1 -1
  43. package/dist/components/SearchInput.cjs.js +1 -1
  44. package/dist/components/SearchInput.es.js +1 -1
  45. package/dist/components/Section.cjs.js +1 -1
  46. package/dist/components/Section.es.js +1 -1
  47. package/dist/components/SideDialog.cjs.js +225 -2
  48. package/dist/components/SideDialog.cjs.js.map +1 -1
  49. package/dist/components/SideDialog.es.js +210 -1
  50. package/dist/components/SideDialog.es.js.map +1 -1
  51. package/dist/components/Sidebar.cjs.js +63 -59
  52. package/dist/components/Sidebar.cjs.js.map +1 -1
  53. package/dist/components/Sidebar.es.js +64 -61
  54. package/dist/components/Sidebar.es.js.map +1 -1
  55. package/dist/components/ai/activity.cjs.js +1 -1
  56. package/dist/components/ai/activity.es.js +1 -1
  57. package/dist/components/ai/ask-user.cjs.js +1 -1
  58. package/dist/components/ai/ask-user.es.js +1 -1
  59. package/dist/{data-code-section-BjyHoHEB.cjs → data-code-section-BsvdKW08.cjs} +2 -2
  60. package/dist/{data-code-section-BjyHoHEB.cjs.map → data-code-section-BsvdKW08.cjs.map} +1 -1
  61. package/dist/{data-code-section-BWzfg-1n.js → data-code-section-y1BMLr3c.js} +2 -2
  62. package/dist/{data-code-section-BWzfg-1n.js.map → data-code-section-y1BMLr3c.js.map} +1 -1
  63. package/dist/{data-list-top-DJh08vFA.cjs → data-list-4t6Ueon8.cjs} +365 -16
  64. package/dist/data-list-4t6Ueon8.cjs.map +1 -0
  65. package/dist/{data-list-top-Cu4C2Z07.js → data-list-BQMBFAyK.js} +357 -7
  66. package/dist/data-list-BQMBFAyK.js.map +1 -0
  67. package/dist/{data-list-skeleton-sdcaabdX.cjs → data-list-skeleton-CVXZYY0k.cjs} +6 -6
  68. package/dist/{data-list-skeleton-sdcaabdX.cjs.map → data-list-skeleton-CVXZYY0k.cjs.map} +1 -1
  69. package/dist/{data-list-skeleton-CiilOVAl.js → data-list-skeleton-D54r1ycU.js} +2 -2
  70. package/dist/{data-list-skeleton-CiilOVAl.js.map → data-list-skeleton-D54r1ycU.js.map} +1 -1
  71. package/dist/{data-panel-CUqcB4Vn.js → data-panel-DSgidnnv.js} +2 -2
  72. package/dist/{data-panel-CUqcB4Vn.js.map → data-panel-DSgidnnv.js.map} +1 -1
  73. package/dist/{data-panel-CGRPVnEe.cjs → data-panel-xqrai98b.cjs} +2 -2
  74. package/dist/{data-panel-CGRPVnEe.cjs.map → data-panel-xqrai98b.cjs.map} +1 -1
  75. package/dist/{date-time-range-picker-BB6ivHR-.js → date-time-range-picker-BnYWCqei.js} +2 -2
  76. package/dist/{date-time-range-picker-BB6ivHR-.js.map → date-time-range-picker-BnYWCqei.js.map} +1 -1
  77. package/dist/{date-time-range-picker-ExPgeHV_.cjs → date-time-range-picker-_2RJBOUn.cjs} +2 -2
  78. package/dist/{date-time-range-picker-ExPgeHV_.cjs.map → date-time-range-picker-_2RJBOUn.cjs.map} +1 -1
  79. package/dist/domains/capabilities.cjs.js +4 -0
  80. package/dist/domains/capabilities.cjs.js.map +1 -1
  81. package/dist/domains/capabilities.es.js +1 -1
  82. package/dist/domains/chat/messages/dataset-save-action.cjs.js +1 -1
  83. package/dist/domains/chat/messages/dataset-save-action.es.js +1 -1
  84. package/dist/domains/chat/messages/notification-signal-notice.cjs.js +23 -3
  85. package/dist/domains/chat/messages/notification-signal-notice.cjs.js.map +1 -1
  86. package/dist/domains/chat/messages/notification-signal-notice.es.js +24 -6
  87. package/dist/domains/chat/messages/notification-signal-notice.es.js.map +1 -1
  88. package/dist/domains/chat/messages/signal-data.cjs.js +12 -0
  89. package/dist/domains/chat/messages/signal-data.cjs.js.map +1 -1
  90. package/dist/domains/chat/messages/signal-data.es.js +12 -1
  91. package/dist/domains/chat/messages/signal-data.es.js.map +1 -1
  92. package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
  93. package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
  94. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +3 -0
  95. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js.map +1 -1
  96. package/dist/domains/chat/tools/badges/workflow-badge.es.js +3 -0
  97. package/dist/domains/chat/tools/badges/workflow-badge.es.js.map +1 -1
  98. package/dist/domains/chat.cjs.js +1 -0
  99. package/dist/domains/chat.cjs.js.map +1 -1
  100. package/dist/domains/chat.es.js +1 -1
  101. package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.cjs.js +24 -16
  102. package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.cjs.js.map +1 -1
  103. package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.es.js +24 -16
  104. package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.es.js.map +1 -1
  105. package/dist/domains/datasets/components/add-dataset-item-dialog/build-add-item-payload.cjs.js +7 -8
  106. package/dist/domains/datasets/components/add-dataset-item-dialog/build-add-item-payload.cjs.js.map +1 -1
  107. package/dist/domains/datasets/components/add-dataset-item-dialog/build-add-item-payload.es.js +7 -8
  108. package/dist/domains/datasets/components/add-dataset-item-dialog/build-add-item-payload.es.js.map +1 -1
  109. package/dist/domains/datasets/components/add-dataset-item-dialog/collapsible-settings-row.cjs.js +1 -1
  110. package/dist/domains/datasets/components/add-dataset-item-dialog/collapsible-settings-row.es.js +1 -1
  111. package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-field-errors.cjs.js +1 -1
  112. package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-field-errors.es.js +1 -1
  113. package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-picker.cjs.js +1 -1
  114. package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-picker.es.js +1 -1
  115. package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js +2 -2
  116. package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js +2 -2
  117. package/dist/domains/logs/components/log-data-panel.cjs.js +1 -1
  118. package/dist/domains/logs/components/log-data-panel.es.js +1 -1
  119. package/dist/domains/logs/components/logs-list-view.cjs.js +3 -2
  120. package/dist/domains/logs/components/logs-list-view.cjs.js.map +1 -1
  121. package/dist/domains/logs/components/logs-list-view.es.js +3 -2
  122. package/dist/domains/logs/components/logs-list-view.es.js.map +1 -1
  123. package/dist/domains/memory/components/observation-detail-view.cjs.js +1 -1
  124. package/dist/domains/memory/components/observation-detail-view.es.js +1 -1
  125. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  126. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  127. package/dist/domains/observability/components/trace-as-item-dialog.cjs.js +14 -2
  128. package/dist/domains/observability/components/trace-as-item-dialog.cjs.js.map +1 -1
  129. package/dist/domains/observability/components/trace-as-item-dialog.es.js +14 -2
  130. package/dist/domains/observability/components/trace-as-item-dialog.es.js.map +1 -1
  131. package/dist/domains/scores/components/score-data-panel.cjs.js +1 -1
  132. package/dist/domains/scores/components/score-data-panel.es.js +1 -1
  133. package/dist/domains/scores/components/trace-scores-tab.cjs.js +2 -1
  134. package/dist/domains/scores/components/trace-scores-tab.cjs.js.map +1 -1
  135. package/dist/domains/scores/components/trace-scores-tab.es.js +2 -1
  136. package/dist/domains/scores/components/trace-scores-tab.es.js.map +1 -1
  137. package/dist/domains/traces/components/span-data-panel-view.cjs.js +1 -1
  138. package/dist/domains/traces/components/span-data-panel-view.es.js +1 -1
  139. package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
  140. package/dist/domains/traces/components/span-summary-description.es.js +1 -1
  141. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
  142. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
  143. package/dist/domains/traces/components/trace-columns-menu.cjs.js +1 -1
  144. package/dist/domains/traces/components/trace-columns-menu.es.js +1 -1
  145. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +3 -8
  146. package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
  147. package/dist/domains/traces/components/trace-data-panel-view.es.js +4 -9
  148. package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
  149. package/dist/domains/traces/components/trace-data-panel.cjs.js +2 -0
  150. package/dist/domains/traces/components/trace-data-panel.cjs.js.map +1 -1
  151. package/dist/domains/traces/components/trace-data-panel.es.js +2 -0
  152. package/dist/domains/traces/components/trace-data-panel.es.js.map +1 -1
  153. package/dist/domains/traces/components/trace-error-cell.cjs.js +3 -1
  154. package/dist/domains/traces/components/trace-error-cell.cjs.js.map +1 -1
  155. package/dist/domains/traces/components/trace-error-cell.es.js +3 -1
  156. package/dist/domains/traces/components/trace-error-cell.es.js.map +1 -1
  157. package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
  158. package/dist/domains/traces/components/trace-id-button.es.js +1 -1
  159. package/dist/domains/traces/components/trace-span-panel.cjs.js +0 -2
  160. package/dist/domains/traces/components/trace-span-panel.cjs.js.map +1 -1
  161. package/dist/domains/traces/components/trace-span-panel.es.js +0 -2
  162. package/dist/domains/traces/components/trace-span-panel.es.js.map +1 -1
  163. package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
  164. package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
  165. package/dist/domains/traces/components/trace-thread-panel.cjs.js +1 -1
  166. package/dist/domains/traces/components/trace-thread-panel.es.js +1 -1
  167. package/dist/domains/traces/components/trace-time-range-chip.cjs.js +2 -2
  168. package/dist/domains/traces/components/trace-time-range-chip.es.js +2 -2
  169. package/dist/domains/traces/components/traces-explorer/traces-explorer-auto-refresh.cjs.js +1 -1
  170. package/dist/domains/traces/components/traces-explorer/traces-explorer-auto-refresh.es.js +1 -1
  171. package/dist/domains/traces/components/traces-explorer/traces-explorer-context.cjs.js.map +1 -1
  172. package/dist/domains/traces/components/traces-explorer/traces-explorer-context.es.js.map +1 -1
  173. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.cjs.js +2 -2
  174. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.es.js +2 -2
  175. package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.cjs.js +2 -1
  176. package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.cjs.js.map +1 -1
  177. package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.es.js +2 -1
  178. package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.es.js.map +1 -1
  179. package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.cjs.js +4 -15
  180. package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.cjs.js.map +1 -1
  181. package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.es.js +4 -15
  182. package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.es.js.map +1 -1
  183. package/dist/domains/traces/components/traces-explorer/traces-explorer-root.cjs.js +3 -0
  184. package/dist/domains/traces/components/traces-explorer/traces-explorer-root.cjs.js.map +1 -1
  185. package/dist/domains/traces/components/traces-explorer/traces-explorer-root.es.js +4 -1
  186. package/dist/domains/traces/components/traces-explorer/traces-explorer-root.es.js.map +1 -1
  187. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.cjs.js +1 -1
  188. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.es.js +1 -1
  189. package/dist/domains/traces/components/traces-list-view.cjs.js +4 -5
  190. package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
  191. package/dist/domains/traces/components/traces-list-view.es.js +3 -4
  192. package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
  193. package/dist/domains/traces/components/traces-page-skeleton.cjs.js +4 -1
  194. package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
  195. package/dist/domains/traces/components/traces-page-skeleton.es.js +4 -1
  196. package/dist/domains/traces/components/traces-page-skeleton.es.js.map +1 -1
  197. package/dist/domains/traces/hooks/use-traces-list-source.cjs.js +36 -9
  198. package/dist/domains/traces/hooks/use-traces-list-source.cjs.js.map +1 -1
  199. package/dist/domains/traces/hooks/use-traces-list-source.es.js +37 -12
  200. package/dist/domains/traces/hooks/use-traces-list-source.es.js.map +1 -1
  201. package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +2 -2
  202. package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +2 -2
  203. package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js +1 -1
  204. package/dist/domains/workflows/workflow/input/workflow-json-input.es.js +1 -1
  205. package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js +1 -1
  206. package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js +1 -1
  207. package/dist/domains/workflows/workflow/workflow-debug-mode-switch.cjs.js +1 -1
  208. package/dist/domains/workflows/workflow/workflow-debug-mode-switch.es.js +1 -1
  209. package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +1 -1
  210. package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +1 -1
  211. package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +2 -2
  212. package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +2 -2
  213. package/dist/ee/signals/components/entity-index-list.cjs.js +3 -1
  214. package/dist/ee/signals/components/entity-index-list.cjs.js.map +1 -1
  215. package/dist/ee/signals/components/entity-index-list.es.js +3 -1
  216. package/dist/ee/signals/components/entity-index-list.es.js.map +1 -1
  217. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +4 -2
  218. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js.map +1 -1
  219. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +4 -2
  220. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js.map +1 -1
  221. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +1 -1
  222. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +1 -1
  223. package/dist/ee/signals/trace-intelligence-explainer.cjs.js +1 -0
  224. package/dist/ee/signals/trace-intelligence-explainer.cjs.js.map +1 -1
  225. package/dist/ee/signals/trace-intelligence-explainer.es.js +1 -0
  226. package/dist/ee/signals/trace-intelligence-explainer.es.js.map +1 -1
  227. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +2 -2
  228. package/dist/ee/topics/components/topic-trace-summary-list.es.js +2 -2
  229. package/dist/{field-BCU5ZtWV.cjs → field-CZ5fldpM.cjs} +2 -1
  230. package/dist/{field-BCU5ZtWV.cjs.map → field-CZ5fldpM.cjs.map} +1 -1
  231. package/dist/{field-Dl1zeXTv.js → field-CfA5-ixH.js} +2 -1
  232. package/dist/{field-Dl1zeXTv.js.map → field-CfA5-ixH.js.map} +1 -1
  233. package/dist/{filter-bar-C6NdZctn.cjs → filter-bar-CjBb01b6.cjs} +3 -3
  234. package/dist/{filter-bar-C6NdZctn.cjs.map → filter-bar-CjBb01b6.cjs.map} +1 -1
  235. package/dist/{filter-bar-chip-DgvuQv6c.cjs → filter-bar-chip-C_64m7nX.cjs} +2 -2
  236. package/dist/{filter-bar-chip-DgvuQv6c.cjs.map → filter-bar-chip-C_64m7nX.cjs.map} +1 -1
  237. package/dist/{filter-bar-chip-DM73lTpx.js → filter-bar-chip-D2kKMSRA.js} +2 -2
  238. package/dist/{filter-bar-chip-DM73lTpx.js.map → filter-bar-chip-D2kKMSRA.js.map} +1 -1
  239. package/dist/{filter-bar-DW0fD4bu.js → filter-bar-pXSJt2ye.js} +3 -3
  240. package/dist/{filter-bar-DW0fD4bu.js.map → filter-bar-pXSJt2ye.js.map} +1 -1
  241. package/dist/{kbd-Xgv5HKEi.cjs → kbd-B2zbS_A6.cjs} +2 -2
  242. package/dist/{kbd-Xgv5HKEi.cjs.map → kbd-B2zbS_A6.cjs.map} +1 -1
  243. package/dist/{kbd-7Xx2pm9f.js → kbd-CYtMrOov.js} +2 -2
  244. package/dist/{kbd-7Xx2pm9f.js.map → kbd-CYtMrOov.js.map} +1 -1
  245. package/dist/layout/tabbed-container.cjs.js +2 -2
  246. package/dist/layout/tabbed-container.es.js +2 -2
  247. package/dist/lib/form/components/boolean-field.cjs.js +1 -1
  248. package/dist/lib/form/components/boolean-field.es.js +1 -1
  249. package/dist/lib/form/components/field-wrapper.cjs.js +1 -1
  250. package/dist/lib/form/components/field-wrapper.es.js +1 -1
  251. package/dist/{list-search-ByJdIxIh.js → list-search-8jVOq9LK.js} +2 -2
  252. package/dist/{list-search-ByJdIxIh.js.map → list-search-8jVOq9LK.js.map} +1 -1
  253. package/dist/{list-search-DNJVeHmK.cjs → list-search-C7ckmZHa.cjs} +2 -2
  254. package/dist/{list-search-DNJVeHmK.cjs.map → list-search-C7ckmZHa.cjs.map} +1 -1
  255. package/dist/{logs-data-list-DCj8Pj77.cjs → logs-data-list-C4Z4rw62.cjs} +21 -22
  256. package/dist/{logs-data-list-DCj8Pj77.cjs.map → logs-data-list-C4Z4rw62.cjs.map} +1 -1
  257. package/dist/{logs-data-list-VEEruqHO.js → logs-data-list-CL3iq_6r.js} +2 -3
  258. package/dist/{logs-data-list-VEEruqHO.js.map → logs-data-list-CL3iq_6r.js.map} +1 -1
  259. package/dist/new/settings.cjs.js +1 -1
  260. package/dist/new/settings.es.js +1 -1
  261. package/dist/{notification-activity-BWXHmlTn.js → notification-activity-BRW1Xlj1.js} +9 -5
  262. package/dist/notification-activity-BRW1Xlj1.js.map +1 -0
  263. package/dist/{notification-activity-BSNuqJDd.cjs → notification-activity-DAZOALWI.cjs} +9 -5
  264. package/dist/notification-activity-DAZOALWI.cjs.map +1 -0
  265. package/dist/resize/collapsible-panel.cjs.js +1 -1
  266. package/dist/resize/collapsible-panel.es.js +1 -1
  267. package/dist/{search-input-CMNy0JWd.cjs → search-input-CGNENJDh.cjs} +2 -2
  268. package/dist/{search-input-CMNy0JWd.cjs.map → search-input-CGNENJDh.cjs.map} +1 -1
  269. package/dist/{search-input-C9qFBzn6.js → search-input-cIYk0pl3.js} +2 -2
  270. package/dist/{search-input-C9qFBzn6.js.map → search-input-cIYk0pl3.js.map} +1 -1
  271. package/dist/{section-skBYREaR.cjs → section-BikCyHdf.cjs} +2 -2
  272. package/dist/{section-skBYREaR.cjs.map → section-BikCyHdf.cjs.map} +1 -1
  273. package/dist/{section-eRs4NnCC.js → section-C71zDLKM.js} +2 -2
  274. package/dist/{section-eRs4NnCC.js.map → section-C71zDLKM.js.map} +1 -1
  275. package/dist/{settings-row-Ds-PVocx.cjs → settings-row-C9lT2BJS.cjs} +2 -2
  276. package/dist/{settings-row-Ds-PVocx.cjs.map → settings-row-C9lT2BJS.cjs.map} +1 -1
  277. package/dist/{settings-row-BHtjEfPr.js → settings-row-CRpU1an-.js} +2 -2
  278. package/dist/{settings-row-BHtjEfPr.js.map → settings-row-CRpU1an-.js.map} +1 -1
  279. package/dist/src/domains/capabilities/index.d.ts +1 -1
  280. package/dist/src/domains/chat/messages/notification-signal-notice.d.ts +2 -0
  281. package/dist/src/domains/chat/messages/signal-data.d.ts +9 -0
  282. package/dist/src/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.d.ts +2 -2
  283. package/dist/src/domains/datasets/components/add-dataset-item-dialog/build-add-item-payload.d.ts +2 -0
  284. package/dist/src/domains/traces/components/trace-data-panel-view.d.ts +1 -5
  285. package/dist/src/domains/traces/components/trace-span-panel.d.ts +1 -2
  286. package/dist/src/domains/traces/components/traces-explorer/traces-explorer-context.d.ts +2 -0
  287. package/dist/src/domains/traces/components/traces-explorer/traces-explorer-panel.d.ts +3 -1
  288. package/dist/src/domains/traces/hooks/use-traces-list-source.d.ts +7 -1
  289. package/dist/src/ds/components/DataList/data-list-root.d.ts +2 -0
  290. package/dist/src/ds/components/Sidebar/header/sidebar-badge.d.ts +7 -0
  291. package/dist/src/ds/components/Sidebar/header/sidebar-button-hint.d.ts +7 -0
  292. package/dist/src/ds/components/Sidebar/header/sidebar-search-trigger.d.ts +14 -3
  293. package/dist/src/ds/components/Sidebar/index.d.ts +1 -0
  294. package/dist/src/ds/components/Sidebar/root/sidebar-trigger.d.ts +2 -2
  295. package/dist/src/ds/components/Sidebar/sidebar.d.ts +5 -1
  296. package/dist/src/ds/components/ai/activity/presets/notification-activity.d.ts +5 -1
  297. package/dist/style.css +29 -13
  298. package/dist/{traces-data-list-CF_LFvnf.cjs → traces-data-list-BOHhsgDI.cjs} +18 -20
  299. package/dist/{traces-data-list-CF_LFvnf.cjs.map → traces-data-list-BOHhsgDI.cjs.map} +1 -1
  300. package/dist/{traces-data-list-DgmSuEKb.js → traces-data-list-CP6knkOn.js} +2 -4
  301. package/dist/{traces-data-list-DgmSuEKb.js.map → traces-data-list-CP6knkOn.js.map} +1 -1
  302. package/package.json +11 -11
  303. package/dist/data-list-CD_lls8O.js +0 -138
  304. package/dist/data-list-CD_lls8O.js.map +0 -1
  305. package/dist/data-list-CGD9hzcp.cjs +0 -142
  306. package/dist/data-list-CGD9hzcp.cjs.map +0 -1
  307. package/dist/data-list-spacer-DpXJrZe1.js +0 -209
  308. package/dist/data-list-spacer-DpXJrZe1.js.map +0 -1
  309. package/dist/data-list-spacer-Dpoj55mv.cjs +0 -218
  310. package/dist/data-list-spacer-Dpoj55mv.cjs.map +0 -1
  311. package/dist/data-list-top-Cu4C2Z07.js.map +0 -1
  312. package/dist/data-list-top-DJh08vFA.cjs.map +0 -1
  313. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js +0 -205
  314. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js.map +0 -1
  315. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.d.ts +0 -2
  316. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js +0 -201
  317. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js.map +0 -1
  318. package/dist/notification-activity-BSNuqJDd.cjs.map +0 -1
  319. package/dist/notification-activity-BWXHmlTn.js.map +0 -1
  320. package/dist/side-dialog-B7a4dasE.cjs +0 -231
  321. package/dist/side-dialog-B7a4dasE.cjs.map +0 -1
  322. package/dist/side-dialog-DVea8YTO.js +0 -211
  323. package/dist/side-dialog-DVea8YTO.js.map +0 -1
  324. package/dist/src/domains/observability/components/add-trace-mocks-to-item-dialog.d.ts +0 -9
@@ -2,6 +2,8 @@ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
2
  import { useScorers } from '@mastra/react/hooks/scores';
3
3
  import { useState } from 'react';
4
4
  import { SpanScoring } from '../../scores/components/span-scoring.es.js';
5
+ import '../../../data-list-BQMBFAyK.js';
6
+ import '../../../keyboard/keyboard-shortcuts-context.es.js';
5
7
  import '@base-ui/react/use-render';
6
8
  import 'lucide-react';
7
9
  import '@mastra/core/utils/safe-stringify';
@@ -1 +1 @@
1
- {"version":3,"file":"trace-data-panel.es.js","sources":["../../../../src/domains/traces/components/trace-data-panel.tsx"],"sourcesContent":["import { useScorers } from '@mastra/react/hooks/scores';\nimport { useState } from 'react';\nimport type { ComponentProps } from 'react';\nimport { SpanScoring } from '@/domains/scores';\nimport { TraceDataPanelView } from '@/domains/traces/components/trace-data-panel-view';\nimport type { TraceSideView } from '@/domains/traces/components/trace-data-panel-view';\nimport { Dialog, DialogContent, DialogHeader, DialogTitle } from '@/ds/components/Dialog';\n\ntype TraceDataPanelProps = Omit<\n ComponentProps<typeof TraceDataPanelView>,\n 'sideView' | 'onSideViewChange' | 'onEvaluateTrace'\n>;\n\n/**\n * Owns the trace panel's side column view so scoring can land on \"Scores\". Mount it with a\n * `key` on the trace (and anchor span) so a view picked on a previous trace never leaks into the next one.\n */\nexport function TraceDataPanel(props: TraceDataPanelProps) {\n const [sideView, setSideView] = useState<TraceSideView>();\n const [isScoringOpen, setIsScoringOpen] = useState(false);\n const { data: scorers, isLoading: isLoadingScorers } = useScorers();\n const rootSpan = props.anchorSpanId\n ? props.spans?.find(span => span.spanId === props.anchorSpanId)\n : props.spans?.find(span => span.parentSpanId == null);\n\n return (\n <>\n <TraceDataPanelView\n {...props}\n onEvaluateTrace={() => setIsScoringOpen(true)}\n sideView={sideView}\n onSideViewChange={setSideView}\n />\n <Dialog open={isScoringOpen} onOpenChange={setIsScoringOpen}>\n <DialogContent size=\"lg\">\n <DialogHeader>\n <DialogTitle>Score trace</DialogTitle>\n </DialogHeader>\n\n {isScoringOpen && rootSpan && (\n <SpanScoring\n traceId={props.traceId}\n spanId={rootSpan.spanId}\n entityType={rootSpan.entityType === 'agent' ? 'Agent' : 'Workflow'}\n isTopLevelSpan={!rootSpan.parentSpanId}\n scorers={scorers}\n isLoadingScorers={isLoadingScorers}\n onSuccess={() => {\n setIsScoringOpen(false);\n setSideView('scores');\n }}\n />\n )}\n </DialogContent>\n </Dialog>\n </>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAiBO,SAAS,eAAe,KAAA,EAA4B;AACzD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,QAAA,EAAwB;AACxD,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,SAAS,KAAK,CAAA;AACxD,EAAA,MAAM,EAAE,IAAA,EAAM,OAAA,EAAS,SAAA,EAAW,gBAAA,KAAqB,UAAA,EAAW;AAClE,EAAA,MAAM,WAAW,KAAA,CAAM,YAAA,GACnB,MAAM,KAAA,EAAO,IAAA,CAAK,UAAQ,IAAA,CAAK,MAAA,KAAW,KAAA,CAAM,YAAY,IAC5D,KAAA,CAAM,KAAA,EAAO,KAAK,CAAA,IAAA,KAAQ,IAAA,CAAK,gBAAgB,IAAI,CAAA;AAEvD,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,kBAAA;AAAA,MAAA;AAAA,QACE,GAAG,KAAA;AAAA,QACJ,eAAA,EAAiB,MAAM,gBAAA,CAAiB,IAAI,CAAA;AAAA,QAC5C,QAAA;AAAA,QACA,gBAAA,EAAkB;AAAA;AAAA,KACpB;AAAA,oBACA,GAAA,CAAC,UAAO,IAAA,EAAM,aAAA,EAAe,cAAc,gBAAA,EACzC,QAAA,kBAAA,IAAA,CAAC,aAAA,EAAA,EAAc,IAAA,EAAK,IAAA,EAClB,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,YAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,WAAA,EAAA,EAAY,QAAA,EAAA,aAAA,EAAW,CAAA,EAC1B,CAAA;AAAA,MAEC,iBAAiB,QAAA,oBAChB,GAAA;AAAA,QAAC,WAAA;AAAA,QAAA;AAAA,UACC,SAAS,KAAA,CAAM,OAAA;AAAA,UACf,QAAQ,QAAA,CAAS,MAAA;AAAA,UACjB,UAAA,EAAY,QAAA,CAAS,UAAA,KAAe,OAAA,GAAU,OAAA,GAAU,UAAA;AAAA,UACxD,cAAA,EAAgB,CAAC,QAAA,CAAS,YAAA;AAAA,UAC1B,OAAA;AAAA,UACA,gBAAA;AAAA,UACA,WAAW,MAAM;AACf,YAAA,gBAAA,CAAiB,KAAK,CAAA;AACtB,YAAA,WAAA,CAAY,QAAQ,CAAA;AAAA,UACtB;AAAA;AAAA;AACF,KAAA,EAEJ,CAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"trace-data-panel.es.js","sources":["../../../../src/domains/traces/components/trace-data-panel.tsx"],"sourcesContent":["import { useScorers } from '@mastra/react/hooks/scores';\nimport { useState } from 'react';\nimport type { ComponentProps } from 'react';\nimport { SpanScoring } from '@/domains/scores';\nimport { TraceDataPanelView } from '@/domains/traces/components/trace-data-panel-view';\nimport type { TraceSideView } from '@/domains/traces/components/trace-data-panel-view';\nimport { Dialog, DialogContent, DialogHeader, DialogTitle } from '@/ds/components/Dialog';\n\ntype TraceDataPanelProps = Omit<\n ComponentProps<typeof TraceDataPanelView>,\n 'sideView' | 'onSideViewChange' | 'onEvaluateTrace'\n>;\n\n/**\n * Owns the trace panel's side column view so scoring can land on \"Scores\". Mount it with a\n * `key` on the trace (and anchor span) so a view picked on a previous trace never leaks into the next one.\n */\nexport function TraceDataPanel(props: TraceDataPanelProps) {\n const [sideView, setSideView] = useState<TraceSideView>();\n const [isScoringOpen, setIsScoringOpen] = useState(false);\n const { data: scorers, isLoading: isLoadingScorers } = useScorers();\n const rootSpan = props.anchorSpanId\n ? props.spans?.find(span => span.spanId === props.anchorSpanId)\n : props.spans?.find(span => span.parentSpanId == null);\n\n return (\n <>\n <TraceDataPanelView\n {...props}\n onEvaluateTrace={() => setIsScoringOpen(true)}\n sideView={sideView}\n onSideViewChange={setSideView}\n />\n <Dialog open={isScoringOpen} onOpenChange={setIsScoringOpen}>\n <DialogContent size=\"lg\">\n <DialogHeader>\n <DialogTitle>Score trace</DialogTitle>\n </DialogHeader>\n\n {isScoringOpen && rootSpan && (\n <SpanScoring\n traceId={props.traceId}\n spanId={rootSpan.spanId}\n entityType={rootSpan.entityType === 'agent' ? 'Agent' : 'Workflow'}\n isTopLevelSpan={!rootSpan.parentSpanId}\n scorers={scorers}\n isLoadingScorers={isLoadingScorers}\n onSuccess={() => {\n setIsScoringOpen(false);\n setSideView('scores');\n }}\n />\n )}\n </DialogContent>\n </Dialog>\n </>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAiBO,SAAS,eAAe,KAAA,EAA4B;AACzD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,QAAA,EAAwB;AACxD,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,SAAS,KAAK,CAAA;AACxD,EAAA,MAAM,EAAE,IAAA,EAAM,OAAA,EAAS,SAAA,EAAW,gBAAA,KAAqB,UAAA,EAAW;AAClE,EAAA,MAAM,WAAW,KAAA,CAAM,YAAA,GACnB,MAAM,KAAA,EAAO,IAAA,CAAK,UAAQ,IAAA,CAAK,MAAA,KAAW,KAAA,CAAM,YAAY,IAC5D,KAAA,CAAM,KAAA,EAAO,KAAK,CAAA,IAAA,KAAQ,IAAA,CAAK,gBAAgB,IAAI,CAAA;AAEvD,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,kBAAA;AAAA,MAAA;AAAA,QACE,GAAG,KAAA;AAAA,QACJ,eAAA,EAAiB,MAAM,gBAAA,CAAiB,IAAI,CAAA;AAAA,QAC5C,QAAA;AAAA,QACA,gBAAA,EAAkB;AAAA;AAAA,KACpB;AAAA,oBACA,GAAA,CAAC,UAAO,IAAA,EAAM,aAAA,EAAe,cAAc,gBAAA,EACzC,QAAA,kBAAA,IAAA,CAAC,aAAA,EAAA,EAAc,IAAA,EAAK,IAAA,EAClB,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,YAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,WAAA,EAAA,EAAY,QAAA,EAAA,aAAA,EAAW,CAAA,EAC1B,CAAA;AAAA,MAEC,iBAAiB,QAAA,oBAChB,GAAA;AAAA,QAAC,WAAA;AAAA,QAAA;AAAA,UACC,SAAS,KAAA,CAAM,OAAA;AAAA,UACf,QAAQ,QAAA,CAAS,MAAA;AAAA,UACjB,UAAA,EAAY,QAAA,CAAS,UAAA,KAAe,OAAA,GAAU,OAAA,GAAU,UAAA;AAAA,UACxD,cAAA,EAAgB,CAAC,QAAA,CAAS,YAAA;AAAA,UAC1B,OAAA;AAAA,UACA,gBAAA;AAAA,UACA,WAAW,MAAM;AACf,YAAA,gBAAA,CAAiB,KAAK,CAAA;AACtB,YAAA,WAAA,CAAY,QAAQ,CAAA;AAAA,UACtB;AAAA;AAAA;AACF,KAAA,EAEJ,CAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
@@ -4,7 +4,9 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
5
  const jsxRuntime = require('react/jsx-runtime');
6
6
  const domains_traces_components_traceErrorDetails = require('./trace-error-details.cjs.js');
7
- const dataList = require('../../../data-list-CGD9hzcp.cjs');
7
+ const dataList = require('../../../data-list-4t6Ueon8.cjs');
8
+ require('react');
9
+ require('../../../keyboard/keyboard-shortcuts-context.cjs.js');
8
10
  const hoverCard = require('../../../hover-card-DVBz-iu-.cjs');
9
11
 
10
12
  function TraceErrorCell({ traceId, spanId, errorPreview }) {
@@ -1 +1 @@
1
- {"version":3,"file":"trace-error-cell.cjs.js","sources":["../../../../src/domains/traces/components/trace-error-cell.tsx"],"sourcesContent":["import { TraceErrorDetails } from './trace-error-details';\nimport { DataList } from '@/ds/components/DataList';\nimport { HoverCard, HoverCardContent, HoverCardTrigger } from '@/ds/components/HoverCard';\n\nexport interface TraceErrorCellProps {\n traceId: string;\n spanId: string;\n /** The stored preview, shown in the cell and in the card until the full error loads. */\n errorPreview: string;\n}\n\n/** Output cell of a failed row: the error preview, and the full error in a hover card. */\nexport function TraceErrorCell({ traceId, spanId, errorPreview }: TraceErrorCellProps) {\n return (\n <HoverCard>\n <HoverCardTrigger\n render={\n <DataList.TextCell font=\"mono\" className=\"text-destructive-foreground\">\n {errorPreview}\n </DataList.TextCell>\n }\n />\n <HoverCardContent\n side=\"bottom\"\n align=\"start\"\n showArrow={false}\n className=\"w-100 p-0\"\n // The card is portaled, but React still bubbles its clicks to the row button.\n onClick={event => event.stopPropagation()}\n >\n <TraceErrorDetails traceId={traceId} spanId={spanId} errorPreview={errorPreview} />\n </HoverCardContent>\n </HoverCard>\n );\n}\n"],"names":["HoverCard","jsx","HoverCardTrigger","DataList","HoverCardContent","TraceErrorDetails"],"mappings":";;;;;;;;;AAYO,SAAS,cAAA,CAAe,EAAE,OAAA,EAAS,MAAA,EAAQ,cAAa,EAAwB;AACrF,EAAA,uCACGA,mBAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAC,cAAA;AAAA,MAACC,0BAAA;AAAA,MAAA;AAAA,QACC,MAAA,iCACGC,iBAAA,CAAS,QAAA,EAAT,EAAkB,IAAA,EAAK,MAAA,EAAO,SAAA,EAAU,6BAAA,EACtC,QAAA,EAAA,YAAA,EACH;AAAA;AAAA,KAEJ;AAAA,oBACAF,cAAA;AAAA,MAACG,0BAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,KAAA,EAAM,OAAA;AAAA,QACN,SAAA,EAAW,KAAA;AAAA,QACX,SAAA,EAAU,WAAA;AAAA,QAEV,OAAA,EAAS,CAAA,KAAA,KAAS,KAAA,CAAM,eAAA,EAAgB;AAAA,QAExC,QAAA,kBAAAH,cAAA,CAACI,6DAAA,EAAA,EAAkB,OAAA,EAAkB,MAAA,EAAgB,YAAA,EAA4B;AAAA;AAAA;AACnF,GAAA,EACF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"trace-error-cell.cjs.js","sources":["../../../../src/domains/traces/components/trace-error-cell.tsx"],"sourcesContent":["import { TraceErrorDetails } from './trace-error-details';\nimport { DataList } from '@/ds/components/DataList';\nimport { HoverCard, HoverCardContent, HoverCardTrigger } from '@/ds/components/HoverCard';\n\nexport interface TraceErrorCellProps {\n traceId: string;\n spanId: string;\n /** The stored preview, shown in the cell and in the card until the full error loads. */\n errorPreview: string;\n}\n\n/** Output cell of a failed row: the error preview, and the full error in a hover card. */\nexport function TraceErrorCell({ traceId, spanId, errorPreview }: TraceErrorCellProps) {\n return (\n <HoverCard>\n <HoverCardTrigger\n render={\n <DataList.TextCell font=\"mono\" className=\"text-destructive-foreground\">\n {errorPreview}\n </DataList.TextCell>\n }\n />\n <HoverCardContent\n side=\"bottom\"\n align=\"start\"\n showArrow={false}\n className=\"w-100 p-0\"\n // The card is portaled, but React still bubbles its clicks to the row button.\n onClick={event => event.stopPropagation()}\n >\n <TraceErrorDetails traceId={traceId} spanId={spanId} errorPreview={errorPreview} />\n </HoverCardContent>\n </HoverCard>\n );\n}\n"],"names":["HoverCard","jsx","HoverCardTrigger","DataList","HoverCardContent","TraceErrorDetails"],"mappings":";;;;;;;;;;;AAYO,SAAS,cAAA,CAAe,EAAE,OAAA,EAAS,MAAA,EAAQ,cAAa,EAAwB;AACrF,EAAA,uCACGA,mBAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAC,cAAA;AAAA,MAACC,0BAAA;AAAA,MAAA;AAAA,QACC,MAAA,iCACGC,iBAAA,CAAS,QAAA,EAAT,EAAkB,IAAA,EAAK,MAAA,EAAO,SAAA,EAAU,6BAAA,EACtC,QAAA,EAAA,YAAA,EACH;AAAA;AAAA,KAEJ;AAAA,oBACAF,cAAA;AAAA,MAACG,0BAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,KAAA,EAAM,OAAA;AAAA,QACN,SAAA,EAAW,KAAA;AAAA,QACX,SAAA,EAAU,WAAA;AAAA,QAEV,OAAA,EAAS,CAAA,KAAA,KAAS,KAAA,CAAM,eAAA,EAAgB;AAAA,QAExC,QAAA,kBAAAH,cAAA,CAACI,6DAAA,EAAA,EAAkB,OAAA,EAAkB,MAAA,EAAgB,YAAA,EAA4B;AAAA;AAAA;AACnF,GAAA,EACF,CAAA;AAEJ;;;;"}
@@ -1,6 +1,8 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { TraceErrorDetails } from './trace-error-details.es.js';
3
- import { D as DataList } from '../../../data-list-CD_lls8O.js';
3
+ import { e as DataList } from '../../../data-list-BQMBFAyK.js';
4
+ import 'react';
5
+ import '../../../keyboard/keyboard-shortcuts-context.es.js';
4
6
  import { H as HoverCard, b as HoverCardTrigger, a as HoverCardContent } from '../../../hover-card-CJ1fcJvo.js';
5
7
 
6
8
  function TraceErrorCell({ traceId, spanId, errorPreview }) {
@@ -1 +1 @@
1
- {"version":3,"file":"trace-error-cell.es.js","sources":["../../../../src/domains/traces/components/trace-error-cell.tsx"],"sourcesContent":["import { TraceErrorDetails } from './trace-error-details';\nimport { DataList } from '@/ds/components/DataList';\nimport { HoverCard, HoverCardContent, HoverCardTrigger } from '@/ds/components/HoverCard';\n\nexport interface TraceErrorCellProps {\n traceId: string;\n spanId: string;\n /** The stored preview, shown in the cell and in the card until the full error loads. */\n errorPreview: string;\n}\n\n/** Output cell of a failed row: the error preview, and the full error in a hover card. */\nexport function TraceErrorCell({ traceId, spanId, errorPreview }: TraceErrorCellProps) {\n return (\n <HoverCard>\n <HoverCardTrigger\n render={\n <DataList.TextCell font=\"mono\" className=\"text-destructive-foreground\">\n {errorPreview}\n </DataList.TextCell>\n }\n />\n <HoverCardContent\n side=\"bottom\"\n align=\"start\"\n showArrow={false}\n className=\"w-100 p-0\"\n // The card is portaled, but React still bubbles its clicks to the row button.\n onClick={event => event.stopPropagation()}\n >\n <TraceErrorDetails traceId={traceId} spanId={spanId} errorPreview={errorPreview} />\n </HoverCardContent>\n </HoverCard>\n );\n}\n"],"names":[],"mappings":";;;;;AAYO,SAAS,cAAA,CAAe,EAAE,OAAA,EAAS,MAAA,EAAQ,cAAa,EAAwB;AACrF,EAAA,4BACG,SAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACC,MAAA,sBACG,QAAA,CAAS,QAAA,EAAT,EAAkB,IAAA,EAAK,MAAA,EAAO,SAAA,EAAU,6BAAA,EACtC,QAAA,EAAA,YAAA,EACH;AAAA;AAAA,KAEJ;AAAA,oBACA,GAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,KAAA,EAAM,OAAA;AAAA,QACN,SAAA,EAAW,KAAA;AAAA,QACX,SAAA,EAAU,WAAA;AAAA,QAEV,OAAA,EAAS,CAAA,KAAA,KAAS,KAAA,CAAM,eAAA,EAAgB;AAAA,QAExC,QAAA,kBAAA,GAAA,CAAC,iBAAA,EAAA,EAAkB,OAAA,EAAkB,MAAA,EAAgB,YAAA,EAA4B;AAAA;AAAA;AACnF,GAAA,EACF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"trace-error-cell.es.js","sources":["../../../../src/domains/traces/components/trace-error-cell.tsx"],"sourcesContent":["import { TraceErrorDetails } from './trace-error-details';\nimport { DataList } from '@/ds/components/DataList';\nimport { HoverCard, HoverCardContent, HoverCardTrigger } from '@/ds/components/HoverCard';\n\nexport interface TraceErrorCellProps {\n traceId: string;\n spanId: string;\n /** The stored preview, shown in the cell and in the card until the full error loads. */\n errorPreview: string;\n}\n\n/** Output cell of a failed row: the error preview, and the full error in a hover card. */\nexport function TraceErrorCell({ traceId, spanId, errorPreview }: TraceErrorCellProps) {\n return (\n <HoverCard>\n <HoverCardTrigger\n render={\n <DataList.TextCell font=\"mono\" className=\"text-destructive-foreground\">\n {errorPreview}\n </DataList.TextCell>\n }\n />\n <HoverCardContent\n side=\"bottom\"\n align=\"start\"\n showArrow={false}\n className=\"w-100 p-0\"\n // The card is portaled, but React still bubbles its clicks to the row button.\n onClick={event => event.stopPropagation()}\n >\n <TraceErrorDetails traceId={traceId} spanId={spanId} errorPreview={errorPreview} />\n </HoverCardContent>\n </HoverCard>\n );\n}\n"],"names":[],"mappings":";;;;;;;AAYO,SAAS,cAAA,CAAe,EAAE,OAAA,EAAS,MAAA,EAAQ,cAAa,EAAwB;AACrF,EAAA,4BACG,SAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACC,MAAA,sBACG,QAAA,CAAS,QAAA,EAAT,EAAkB,IAAA,EAAK,MAAA,EAAO,SAAA,EAAU,6BAAA,EACtC,QAAA,EAAA,YAAA,EACH;AAAA;AAAA,KAEJ;AAAA,oBACA,GAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,KAAA,EAAM,OAAA;AAAA,QACN,SAAA,EAAW,KAAA;AAAA,QACX,SAAA,EAAU,WAAA;AAAA,QAEV,OAAA,EAAS,CAAA,KAAA,KAAS,KAAA,CAAM,eAAA,EAAgB;AAAA,QAExC,QAAA,kBAAA,GAAA,CAAC,iBAAA,EAAA,EAAkB,OAAA,EAAkB,MAAA,EAAgB,YAAA,EAA4B;AAAA;AAAA;AACnF,GAAA,EACF,CAAA;AAEJ;;;;"}
@@ -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 dataPanel = require('../../../data-panel-CGRPVnEe.cjs');
6
+ const dataPanel = require('../../../data-panel-xqrai98b.cjs');
7
7
 
8
8
  function TraceIdButton({ id }) {
9
9
  return /* @__PURE__ */ jsxRuntime.jsx(dataPanel.DataPanel.CopyId, { id });
@@ -1,5 +1,5 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import { D as DataPanel } from '../../../data-panel-CUqcB4Vn.js';
2
+ import { D as DataPanel } from '../../../data-panel-DSgidnnv.js';
3
3
 
4
4
  function TraceIdButton({ id }) {
5
5
  return /* @__PURE__ */ jsx(DataPanel.CopyId, { id });
@@ -33,7 +33,6 @@ function TraceSpanPanel({
33
33
  onPrevious,
34
34
  onNext,
35
35
  onSaveAsDatasetItem,
36
- onAddTraceMocksToItem,
37
36
  feedbackTabBadge,
38
37
  feedbackTabSlot,
39
38
  showPartialThread,
@@ -90,7 +89,6 @@ function TraceSpanPanel({
90
89
  onClose,
91
90
  onSpanSelect,
92
91
  onSaveAsDatasetItem,
93
- onAddTraceMocksToItem,
94
92
  initialSpanId: initialSpanId ?? selectedSpanId,
95
93
  onPrevious,
96
94
  onNext,
@@ -1 +1 @@
1
- {"version":3,"file":"trace-span-panel.cjs.js","sources":["../../../../src/domains/traces/components/trace-span-panel.tsx"],"sourcesContent":["import { useSpanDetail, useThreadHasOtherTraces } from '@mastra/react/hooks/traces';\nimport { MessagesSquareIcon } from 'lucide-react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { SpanDataPanelView } from '@/domains/traces/components/span-data-panel-view';\nimport { TraceDataPanel } from '@/domains/traces/components/trace-data-panel';\nimport type { TraceDataPanelView } from '@/domains/traces/components/trace-data-panel-view';\nimport { TraceMessagesPanel } from '@/domains/traces/components/trace-messages-panel';\nimport { getTraceThreadId } from '@/domains/traces/components/trace-thread-context';\nimport { TraceThreadPanel } from '@/domains/traces/components/trace-thread-panel';\nimport { useTraceSpanNavigation } from '@/domains/traces/hooks/use-trace-span-navigation';\nimport { Button } from '@/ds/components/Button';\nimport { useLinkComponent } from '@/lib/framework';\nimport type { LinkComponentPaths } from '@/lib/framework';\n\ntype TraceDataPanelViewProps = ComponentProps<typeof TraceDataPanelView>;\n\nfunction getEntityHref(\n paths: LinkComponentPaths,\n entityType: string | null | undefined,\n entityId: string | null | undefined,\n) {\n if (!entityId || !entityType) return undefined;\n const normalizedEntityType = entityType.toLowerCase();\n if (normalizedEntityType.includes('workflow')) return paths.workflowLink(entityId) || undefined;\n if (normalizedEntityType.includes('agent')) return paths.agentLink(entityId) || undefined;\n return undefined;\n}\ntype SpanDataPanelViewProps = ComponentProps<typeof SpanDataPanelView>;\n\nexport interface TraceSpanPanelProps {\n /** Keep the panel mounted and pass `undefined` to close it, so the drawer animates out. */\n traceId?: string;\n /** Spans returned by `useTraceOrBranchSpans` — the page owns the fetch, the panel renders it. */\n spans: TraceDataPanelViewProps['spans'];\n isLoadingSpans: boolean;\n /** Controlled span selection (URL state on the traces page, local state in the chat aside). */\n selectedSpanId: string | null;\n onSpanSelect: (spanId: string | undefined) => void;\n onClose: () => void;\n\n // Trace-panel pass-through.\n anchorSpanId?: string;\n initialSpanId?: string | null;\n onPrevious?: () => void;\n onNext?: () => void;\n onSaveAsDatasetItem?: TraceDataPanelViewProps['onSaveAsDatasetItem'];\n onAddTraceMocksToItem?: TraceDataPanelViewProps['onAddTraceMocksToItem'];\n feedbackTabBadge?: ReactNode;\n feedbackTabSlot?: TraceDataPanelViewProps['feedbackTabSlot'];\n /** Enables the \"Messages\" column (reconstructed turn) when the displayed root is a complete agent trace with a thread id. */\n showPartialThread?: boolean;\n /** Span ids featured in the timeline (non-featured spans are faded). */\n featuredSpanIds?: string[];\n /** Called with the span ids behind a reconstructed message when the user asks to highlight them. */\n onHighlightSpans?: (spanIds: string[]) => void;\n /** When true, opens the trace's thread (every turn) in a stacked drawer above the trace panel. */\n isFullThreadOpen?: boolean;\n /** Enables the in-place \"Open full thread\" swap; without it the action falls back to a link. */\n onFullThreadOpenChange?: (open: boolean) => void;\n /** Full-thread view: lists through the trace-query API; `false` falls back to `listTracesLight`. */\n withQueryTrace: boolean;\n /** Full-thread view: shows the per-trace Feedback tab. */\n withFeedback: boolean;\n /** Full-thread view: opens a score of one of the thread's traces (the app owns routing). */\n onOpenScore: (traceId: string, scoreId: string) => void;\n scoresTabBadge?: ReactNode;\n scoresTabSlot?: TraceDataPanelViewProps['scoresTabSlot'];\n usage?: TraceDataPanelViewProps['usage'];\n traceHref?: string;\n /** Drawer width; defaults to `wide`. */\n size?: TraceDataPanelViewProps['size'];\n /** Sibling-drawer elevation (see `DataPanel`). */\n depth?: TraceDataPanelViewProps['depth'];\n /** Rendered inside the drawer above the trace header (e.g. feedback context). */\n headerSlot?: ReactNode;\n /** Integration actions displayed alongside the trace controls. */\n headerActionsSlot?: ReactNode;\n /** Accessible drawer name; defaults to the trace id. */\n title?: string;\n showUnavailableFeaturesMsg?: TraceDataPanelViewProps['showUnavailableFeaturesMsg'];\n spanView?: TraceDataPanelViewProps['spanView'];\n onSpanViewChange?: TraceDataPanelViewProps['onSpanViewChange'];\n\n // Span-panel pass-through.\n spanActiveTab?: string;\n onSpanTabChange?: (tab: string) => void;\n spanFeedbackTabBadge?: ReactNode;\n spanFeedbackTabSlot?: SpanDataPanelViewProps['feedbackTabSlot'];\n}\n\n/**\n * Shared trace → span drilldown drawer: `TraceDataPanel` with a nested `SpanDataPanelView`.\n * Encapsulates the span-detail fetch and prev/next span navigation that the traces page\n * and the agent chat traces aside used to duplicate.\n */\nexport function TraceSpanPanel({\n traceId,\n spans,\n isLoadingSpans,\n selectedSpanId,\n onSpanSelect,\n onClose,\n anchorSpanId,\n initialSpanId,\n onPrevious,\n onNext,\n onSaveAsDatasetItem,\n onAddTraceMocksToItem,\n feedbackTabBadge,\n feedbackTabSlot,\n showPartialThread,\n featuredSpanIds,\n onHighlightSpans,\n isFullThreadOpen,\n onFullThreadOpenChange,\n withQueryTrace,\n withFeedback,\n onOpenScore,\n scoresTabBadge,\n scoresTabSlot,\n usage,\n traceHref,\n size,\n depth,\n headerSlot,\n headerActionsSlot,\n title,\n showUnavailableFeaturesMsg,\n spanView,\n onSpanViewChange,\n spanActiveTab,\n onSpanTabChange,\n spanFeedbackTabBadge,\n spanFeedbackTabSlot,\n}: TraceSpanPanelProps) {\n const { data: spanDetailData, isLoading: isLoadingSpanDetail } = useSpanDetail({\n traceId: traceId,\n spanId: selectedSpanId ?? '',\n queryOptions: { enabled: !!traceId && !!selectedSpanId },\n });\n const { handlePreviousSpan, handleNextSpan } = useTraceSpanNavigation(spans, selectedSpanId, onSpanSelect);\n const { Link, paths } = useLinkComponent();\n\n // The trace summary links the entity to its page; the app's link provider owns the routes.\n const rootSpan = anchorSpanId\n ? spans?.find(s => s.spanId === anchorSpanId)\n : spans?.find(s => s.parentSpanId == null);\n const entityHref = getEntityHref(paths, rootSpan?.entityType, rootSpan?.entityId);\n const threadId = getTraceThreadId(rootSpan, anchorSpanId);\n const hasMessagesPanel = !!(traceId && showPartialThread && threadId);\n // A single-trace thread would show exactly what the Messages column already shows.\n const hasOtherTraces = useThreadHasOtherTraces({\n threadId: hasMessagesPanel ? threadId : undefined,\n queryOptions: { enabled: !!(hasMessagesPanel ? threadId : undefined) },\n });\n const showFullThreadAction = hasMessagesPanel && hasOtherTraces && !!onFullThreadOpenChange;\n\n return (\n <>\n <TraceDataPanel\n traceId={traceId}\n spans={spans}\n anchorSpanId={anchorSpanId}\n entityHref={entityHref}\n usage={usage}\n isLoading={isLoadingSpans}\n onClose={onClose}\n onSpanSelect={onSpanSelect}\n onSaveAsDatasetItem={onSaveAsDatasetItem}\n onAddTraceMocksToItem={onAddTraceMocksToItem}\n initialSpanId={initialSpanId ?? selectedSpanId}\n onPrevious={onPrevious}\n onNext={onNext}\n placement=\"traces-list\"\n LinkComponent={Link}\n traceHref={traceHref}\n size={size}\n depth={depth}\n headerSlot={headerSlot}\n headerActionsSlot={headerActionsSlot}\n title={title}\n showUnavailableFeaturesMsg={showUnavailableFeaturesMsg}\n spanView={spanView}\n onSpanViewChange={onSpanViewChange}\n feedbackTabBadge={feedbackTabBadge}\n feedbackTabSlot={feedbackTabSlot}\n featuredSpanIds={featuredSpanIds}\n messagesPanelSlot={\n hasMessagesPanel ? <TraceMessagesPanel traceId={traceId} onHighlightSpans={onHighlightSpans} /> : undefined\n }\n sideHeaderActions={\n showFullThreadAction\n ? ({ compact }) => (\n <Button\n tooltip={compact ? 'Open full thread' : undefined}\n icon={<MessagesSquareIcon />}\n variant=\"ghost\"\n size=\"sm\"\n // At a side column of 500px or less, collapse to a round icon button; the label stays for screen readers.\n className=\"@max-[501px]:w-control-sm @max-[501px]:rounded-full @max-[501px]:px-0 @max-[501px]:[&>[data-slot=button-icon]]:ml-0\"\n onClick={() => onFullThreadOpenChange(true)}\n >\n <span className=\"@max-[501px]:sr-only\">Open full thread</span>\n </Button>\n )\n : undefined\n }\n scoresTabBadge={scoresTabBadge}\n scoresTabSlot={scoresTabSlot}\n spanPanelSlot={\n traceId && selectedSpanId ? (\n <SpanDataPanelView\n traceId={traceId}\n spanId={selectedSpanId}\n span={spanDetailData?.span}\n isAnchor={anchorSpanId ? selectedSpanId === anchorSpanId : undefined}\n isLoading={isLoadingSpanDetail}\n onPrevious={handlePreviousSpan}\n onNext={handleNextSpan}\n onClose={() => onSpanSelect(undefined)}\n activeTab={spanActiveTab}\n onTabChange={onSpanTabChange}\n feedbackTabBadge={spanFeedbackTabBadge}\n feedbackTabSlot={spanFeedbackTabSlot}\n />\n ) : null\n }\n />\n {/* Rendered after the trace panel: DataPanel stacking follows DOM order. */}\n <TraceThreadPanel\n open={!!(traceId && isFullThreadOpen && threadId)}\n depth={depth && depth > 1 ? 3 : 2}\n threadId={threadId ?? ''}\n onOpenScore={onOpenScore}\n withQueryTrace={withQueryTrace}\n withFeedback={withFeedback}\n onClose={() => onFullThreadOpenChange?.(false)}\n />\n </>\n );\n}\n"],"names":["useSpanDetail","useTraceSpanNavigation","useLinkComponent","getTraceThreadId","useThreadHasOtherTraces","jsxs","Fragment","jsx","TraceDataPanel","TraceMessagesPanel","Button","MessagesSquareIcon","SpanDataPanelView","TraceThreadPanel"],"mappings":"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"}
1
+ {"version":3,"file":"trace-span-panel.cjs.js","sources":["../../../../src/domains/traces/components/trace-span-panel.tsx"],"sourcesContent":["import { useSpanDetail, useThreadHasOtherTraces } from '@mastra/react/hooks/traces';\nimport { MessagesSquareIcon } from 'lucide-react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { SpanDataPanelView } from '@/domains/traces/components/span-data-panel-view';\nimport { TraceDataPanel } from '@/domains/traces/components/trace-data-panel';\nimport type { TraceDataPanelView } from '@/domains/traces/components/trace-data-panel-view';\nimport { TraceMessagesPanel } from '@/domains/traces/components/trace-messages-panel';\nimport { getTraceThreadId } from '@/domains/traces/components/trace-thread-context';\nimport { TraceThreadPanel } from '@/domains/traces/components/trace-thread-panel';\nimport { useTraceSpanNavigation } from '@/domains/traces/hooks/use-trace-span-navigation';\nimport { Button } from '@/ds/components/Button';\nimport { useLinkComponent } from '@/lib/framework';\nimport type { LinkComponentPaths } from '@/lib/framework';\n\ntype TraceDataPanelViewProps = ComponentProps<typeof TraceDataPanelView>;\n\nfunction getEntityHref(\n paths: LinkComponentPaths,\n entityType: string | null | undefined,\n entityId: string | null | undefined,\n) {\n if (!entityId || !entityType) return undefined;\n const normalizedEntityType = entityType.toLowerCase();\n if (normalizedEntityType.includes('workflow')) return paths.workflowLink(entityId) || undefined;\n if (normalizedEntityType.includes('agent')) return paths.agentLink(entityId) || undefined;\n return undefined;\n}\ntype SpanDataPanelViewProps = ComponentProps<typeof SpanDataPanelView>;\n\nexport interface TraceSpanPanelProps {\n /** Keep the panel mounted and pass `undefined` to close it, so the drawer animates out. */\n traceId?: string;\n /** Spans returned by `useTraceOrBranchSpans` — the page owns the fetch, the panel renders it. */\n spans: TraceDataPanelViewProps['spans'];\n isLoadingSpans: boolean;\n /** Controlled span selection (URL state on the traces page, local state in the chat aside). */\n selectedSpanId: string | null;\n onSpanSelect: (spanId: string | undefined) => void;\n onClose: () => void;\n\n // Trace-panel pass-through.\n anchorSpanId?: string;\n initialSpanId?: string | null;\n onPrevious?: () => void;\n onNext?: () => void;\n onSaveAsDatasetItem?: TraceDataPanelViewProps['onSaveAsDatasetItem'];\n feedbackTabBadge?: ReactNode;\n feedbackTabSlot?: TraceDataPanelViewProps['feedbackTabSlot'];\n /** Enables the \"Messages\" column (reconstructed turn) when the displayed root is a complete agent trace with a thread id. */\n showPartialThread?: boolean;\n /** Span ids featured in the timeline (non-featured spans are faded). */\n featuredSpanIds?: string[];\n /** Called with the span ids behind a reconstructed message when the user asks to highlight them. */\n onHighlightSpans?: (spanIds: string[]) => void;\n /** When true, opens the trace's thread (every turn) in a stacked drawer above the trace panel. */\n isFullThreadOpen?: boolean;\n /** Enables the in-place \"Open full thread\" swap; without it the action falls back to a link. */\n onFullThreadOpenChange?: (open: boolean) => void;\n /** Full-thread view: lists through the trace-query API; `false` falls back to `listTracesLight`. */\n withQueryTrace: boolean;\n /** Full-thread view: shows the per-trace Feedback tab. */\n withFeedback: boolean;\n /** Full-thread view: opens a score of one of the thread's traces (the app owns routing). */\n onOpenScore: (traceId: string, scoreId: string) => void;\n scoresTabBadge?: ReactNode;\n scoresTabSlot?: TraceDataPanelViewProps['scoresTabSlot'];\n usage?: TraceDataPanelViewProps['usage'];\n traceHref?: string;\n /** Drawer width; defaults to `wide`. */\n size?: TraceDataPanelViewProps['size'];\n /** Sibling-drawer elevation (see `DataPanel`). */\n depth?: TraceDataPanelViewProps['depth'];\n /** Rendered inside the drawer above the trace header (e.g. feedback context). */\n headerSlot?: ReactNode;\n /** Integration actions displayed alongside the trace controls. */\n headerActionsSlot?: ReactNode;\n /** Accessible drawer name; defaults to the trace id. */\n title?: string;\n showUnavailableFeaturesMsg?: TraceDataPanelViewProps['showUnavailableFeaturesMsg'];\n spanView?: TraceDataPanelViewProps['spanView'];\n onSpanViewChange?: TraceDataPanelViewProps['onSpanViewChange'];\n\n // Span-panel pass-through.\n spanActiveTab?: string;\n onSpanTabChange?: (tab: string) => void;\n spanFeedbackTabBadge?: ReactNode;\n spanFeedbackTabSlot?: SpanDataPanelViewProps['feedbackTabSlot'];\n}\n\n/**\n * Shared trace → span drilldown drawer: `TraceDataPanel` with a nested `SpanDataPanelView`.\n * Encapsulates the span-detail fetch and prev/next span navigation that the traces page\n * and the agent chat traces aside used to duplicate.\n */\nexport function TraceSpanPanel({\n traceId,\n spans,\n isLoadingSpans,\n selectedSpanId,\n onSpanSelect,\n onClose,\n anchorSpanId,\n initialSpanId,\n onPrevious,\n onNext,\n onSaveAsDatasetItem,\n feedbackTabBadge,\n feedbackTabSlot,\n showPartialThread,\n featuredSpanIds,\n onHighlightSpans,\n isFullThreadOpen,\n onFullThreadOpenChange,\n withQueryTrace,\n withFeedback,\n onOpenScore,\n scoresTabBadge,\n scoresTabSlot,\n usage,\n traceHref,\n size,\n depth,\n headerSlot,\n headerActionsSlot,\n title,\n showUnavailableFeaturesMsg,\n spanView,\n onSpanViewChange,\n spanActiveTab,\n onSpanTabChange,\n spanFeedbackTabBadge,\n spanFeedbackTabSlot,\n}: TraceSpanPanelProps) {\n const { data: spanDetailData, isLoading: isLoadingSpanDetail } = useSpanDetail({\n traceId: traceId,\n spanId: selectedSpanId ?? '',\n queryOptions: { enabled: !!traceId && !!selectedSpanId },\n });\n const { handlePreviousSpan, handleNextSpan } = useTraceSpanNavigation(spans, selectedSpanId, onSpanSelect);\n const { Link, paths } = useLinkComponent();\n\n // The trace summary links the entity to its page; the app's link provider owns the routes.\n const rootSpan = anchorSpanId\n ? spans?.find(s => s.spanId === anchorSpanId)\n : spans?.find(s => s.parentSpanId == null);\n const entityHref = getEntityHref(paths, rootSpan?.entityType, rootSpan?.entityId);\n const threadId = getTraceThreadId(rootSpan, anchorSpanId);\n const hasMessagesPanel = !!(traceId && showPartialThread && threadId);\n // A single-trace thread would show exactly what the Messages column already shows.\n const hasOtherTraces = useThreadHasOtherTraces({\n threadId: hasMessagesPanel ? threadId : undefined,\n queryOptions: { enabled: !!(hasMessagesPanel ? threadId : undefined) },\n });\n const showFullThreadAction = hasMessagesPanel && hasOtherTraces && !!onFullThreadOpenChange;\n\n return (\n <>\n <TraceDataPanel\n traceId={traceId}\n spans={spans}\n anchorSpanId={anchorSpanId}\n entityHref={entityHref}\n usage={usage}\n isLoading={isLoadingSpans}\n onClose={onClose}\n onSpanSelect={onSpanSelect}\n onSaveAsDatasetItem={onSaveAsDatasetItem}\n initialSpanId={initialSpanId ?? selectedSpanId}\n onPrevious={onPrevious}\n onNext={onNext}\n placement=\"traces-list\"\n LinkComponent={Link}\n traceHref={traceHref}\n size={size}\n depth={depth}\n headerSlot={headerSlot}\n headerActionsSlot={headerActionsSlot}\n title={title}\n showUnavailableFeaturesMsg={showUnavailableFeaturesMsg}\n spanView={spanView}\n onSpanViewChange={onSpanViewChange}\n feedbackTabBadge={feedbackTabBadge}\n feedbackTabSlot={feedbackTabSlot}\n featuredSpanIds={featuredSpanIds}\n messagesPanelSlot={\n hasMessagesPanel ? <TraceMessagesPanel traceId={traceId} onHighlightSpans={onHighlightSpans} /> : undefined\n }\n sideHeaderActions={\n showFullThreadAction\n ? ({ compact }) => (\n <Button\n tooltip={compact ? 'Open full thread' : undefined}\n icon={<MessagesSquareIcon />}\n variant=\"ghost\"\n size=\"sm\"\n // At a side column of 500px or less, collapse to a round icon button; the label stays for screen readers.\n className=\"@max-[501px]:w-control-sm @max-[501px]:rounded-full @max-[501px]:px-0 @max-[501px]:[&>[data-slot=button-icon]]:ml-0\"\n onClick={() => onFullThreadOpenChange(true)}\n >\n <span className=\"@max-[501px]:sr-only\">Open full thread</span>\n </Button>\n )\n : undefined\n }\n scoresTabBadge={scoresTabBadge}\n scoresTabSlot={scoresTabSlot}\n spanPanelSlot={\n traceId && selectedSpanId ? (\n <SpanDataPanelView\n traceId={traceId}\n spanId={selectedSpanId}\n span={spanDetailData?.span}\n isAnchor={anchorSpanId ? selectedSpanId === anchorSpanId : undefined}\n isLoading={isLoadingSpanDetail}\n onPrevious={handlePreviousSpan}\n onNext={handleNextSpan}\n onClose={() => onSpanSelect(undefined)}\n activeTab={spanActiveTab}\n onTabChange={onSpanTabChange}\n feedbackTabBadge={spanFeedbackTabBadge}\n feedbackTabSlot={spanFeedbackTabSlot}\n />\n ) : null\n }\n />\n {/* Rendered after the trace panel: DataPanel stacking follows DOM order. */}\n <TraceThreadPanel\n open={!!(traceId && isFullThreadOpen && threadId)}\n depth={depth && depth > 1 ? 3 : 2}\n threadId={threadId ?? ''}\n onOpenScore={onOpenScore}\n withQueryTrace={withQueryTrace}\n withFeedback={withFeedback}\n onClose={() => onFullThreadOpenChange?.(false)}\n />\n </>\n );\n}\n"],"names":["useSpanDetail","useTraceSpanNavigation","useLinkComponent","getTraceThreadId","useThreadHasOtherTraces","jsxs","Fragment","jsx","TraceDataPanel","TraceMessagesPanel","Button","MessagesSquareIcon","SpanDataPanelView","TraceThreadPanel"],"mappings":"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"}
@@ -29,7 +29,6 @@ function TraceSpanPanel({
29
29
  onPrevious,
30
30
  onNext,
31
31
  onSaveAsDatasetItem,
32
- onAddTraceMocksToItem,
33
32
  feedbackTabBadge,
34
33
  feedbackTabSlot,
35
34
  showPartialThread,
@@ -86,7 +85,6 @@ function TraceSpanPanel({
86
85
  onClose,
87
86
  onSpanSelect,
88
87
  onSaveAsDatasetItem,
89
- onAddTraceMocksToItem,
90
88
  initialSpanId: initialSpanId ?? selectedSpanId,
91
89
  onPrevious,
92
90
  onNext,
@@ -1 +1 @@
1
- {"version":3,"file":"trace-span-panel.es.js","sources":["../../../../src/domains/traces/components/trace-span-panel.tsx"],"sourcesContent":["import { useSpanDetail, useThreadHasOtherTraces } from '@mastra/react/hooks/traces';\nimport { MessagesSquareIcon } from 'lucide-react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { SpanDataPanelView } from '@/domains/traces/components/span-data-panel-view';\nimport { TraceDataPanel } from '@/domains/traces/components/trace-data-panel';\nimport type { TraceDataPanelView } from '@/domains/traces/components/trace-data-panel-view';\nimport { TraceMessagesPanel } from '@/domains/traces/components/trace-messages-panel';\nimport { getTraceThreadId } from '@/domains/traces/components/trace-thread-context';\nimport { TraceThreadPanel } from '@/domains/traces/components/trace-thread-panel';\nimport { useTraceSpanNavigation } from '@/domains/traces/hooks/use-trace-span-navigation';\nimport { Button } from '@/ds/components/Button';\nimport { useLinkComponent } from '@/lib/framework';\nimport type { LinkComponentPaths } from '@/lib/framework';\n\ntype TraceDataPanelViewProps = ComponentProps<typeof TraceDataPanelView>;\n\nfunction getEntityHref(\n paths: LinkComponentPaths,\n entityType: string | null | undefined,\n entityId: string | null | undefined,\n) {\n if (!entityId || !entityType) return undefined;\n const normalizedEntityType = entityType.toLowerCase();\n if (normalizedEntityType.includes('workflow')) return paths.workflowLink(entityId) || undefined;\n if (normalizedEntityType.includes('agent')) return paths.agentLink(entityId) || undefined;\n return undefined;\n}\ntype SpanDataPanelViewProps = ComponentProps<typeof SpanDataPanelView>;\n\nexport interface TraceSpanPanelProps {\n /** Keep the panel mounted and pass `undefined` to close it, so the drawer animates out. */\n traceId?: string;\n /** Spans returned by `useTraceOrBranchSpans` — the page owns the fetch, the panel renders it. */\n spans: TraceDataPanelViewProps['spans'];\n isLoadingSpans: boolean;\n /** Controlled span selection (URL state on the traces page, local state in the chat aside). */\n selectedSpanId: string | null;\n onSpanSelect: (spanId: string | undefined) => void;\n onClose: () => void;\n\n // Trace-panel pass-through.\n anchorSpanId?: string;\n initialSpanId?: string | null;\n onPrevious?: () => void;\n onNext?: () => void;\n onSaveAsDatasetItem?: TraceDataPanelViewProps['onSaveAsDatasetItem'];\n onAddTraceMocksToItem?: TraceDataPanelViewProps['onAddTraceMocksToItem'];\n feedbackTabBadge?: ReactNode;\n feedbackTabSlot?: TraceDataPanelViewProps['feedbackTabSlot'];\n /** Enables the \"Messages\" column (reconstructed turn) when the displayed root is a complete agent trace with a thread id. */\n showPartialThread?: boolean;\n /** Span ids featured in the timeline (non-featured spans are faded). */\n featuredSpanIds?: string[];\n /** Called with the span ids behind a reconstructed message when the user asks to highlight them. */\n onHighlightSpans?: (spanIds: string[]) => void;\n /** When true, opens the trace's thread (every turn) in a stacked drawer above the trace panel. */\n isFullThreadOpen?: boolean;\n /** Enables the in-place \"Open full thread\" swap; without it the action falls back to a link. */\n onFullThreadOpenChange?: (open: boolean) => void;\n /** Full-thread view: lists through the trace-query API; `false` falls back to `listTracesLight`. */\n withQueryTrace: boolean;\n /** Full-thread view: shows the per-trace Feedback tab. */\n withFeedback: boolean;\n /** Full-thread view: opens a score of one of the thread's traces (the app owns routing). */\n onOpenScore: (traceId: string, scoreId: string) => void;\n scoresTabBadge?: ReactNode;\n scoresTabSlot?: TraceDataPanelViewProps['scoresTabSlot'];\n usage?: TraceDataPanelViewProps['usage'];\n traceHref?: string;\n /** Drawer width; defaults to `wide`. */\n size?: TraceDataPanelViewProps['size'];\n /** Sibling-drawer elevation (see `DataPanel`). */\n depth?: TraceDataPanelViewProps['depth'];\n /** Rendered inside the drawer above the trace header (e.g. feedback context). */\n headerSlot?: ReactNode;\n /** Integration actions displayed alongside the trace controls. */\n headerActionsSlot?: ReactNode;\n /** Accessible drawer name; defaults to the trace id. */\n title?: string;\n showUnavailableFeaturesMsg?: TraceDataPanelViewProps['showUnavailableFeaturesMsg'];\n spanView?: TraceDataPanelViewProps['spanView'];\n onSpanViewChange?: TraceDataPanelViewProps['onSpanViewChange'];\n\n // Span-panel pass-through.\n spanActiveTab?: string;\n onSpanTabChange?: (tab: string) => void;\n spanFeedbackTabBadge?: ReactNode;\n spanFeedbackTabSlot?: SpanDataPanelViewProps['feedbackTabSlot'];\n}\n\n/**\n * Shared trace → span drilldown drawer: `TraceDataPanel` with a nested `SpanDataPanelView`.\n * Encapsulates the span-detail fetch and prev/next span navigation that the traces page\n * and the agent chat traces aside used to duplicate.\n */\nexport function TraceSpanPanel({\n traceId,\n spans,\n isLoadingSpans,\n selectedSpanId,\n onSpanSelect,\n onClose,\n anchorSpanId,\n initialSpanId,\n onPrevious,\n onNext,\n onSaveAsDatasetItem,\n onAddTraceMocksToItem,\n feedbackTabBadge,\n feedbackTabSlot,\n showPartialThread,\n featuredSpanIds,\n onHighlightSpans,\n isFullThreadOpen,\n onFullThreadOpenChange,\n withQueryTrace,\n withFeedback,\n onOpenScore,\n scoresTabBadge,\n scoresTabSlot,\n usage,\n traceHref,\n size,\n depth,\n headerSlot,\n headerActionsSlot,\n title,\n showUnavailableFeaturesMsg,\n spanView,\n onSpanViewChange,\n spanActiveTab,\n onSpanTabChange,\n spanFeedbackTabBadge,\n spanFeedbackTabSlot,\n}: TraceSpanPanelProps) {\n const { data: spanDetailData, isLoading: isLoadingSpanDetail } = useSpanDetail({\n traceId: traceId,\n spanId: selectedSpanId ?? '',\n queryOptions: { enabled: !!traceId && !!selectedSpanId },\n });\n const { handlePreviousSpan, handleNextSpan } = useTraceSpanNavigation(spans, selectedSpanId, onSpanSelect);\n const { Link, paths } = useLinkComponent();\n\n // The trace summary links the entity to its page; the app's link provider owns the routes.\n const rootSpan = anchorSpanId\n ? spans?.find(s => s.spanId === anchorSpanId)\n : spans?.find(s => s.parentSpanId == null);\n const entityHref = getEntityHref(paths, rootSpan?.entityType, rootSpan?.entityId);\n const threadId = getTraceThreadId(rootSpan, anchorSpanId);\n const hasMessagesPanel = !!(traceId && showPartialThread && threadId);\n // A single-trace thread would show exactly what the Messages column already shows.\n const hasOtherTraces = useThreadHasOtherTraces({\n threadId: hasMessagesPanel ? threadId : undefined,\n queryOptions: { enabled: !!(hasMessagesPanel ? threadId : undefined) },\n });\n const showFullThreadAction = hasMessagesPanel && hasOtherTraces && !!onFullThreadOpenChange;\n\n return (\n <>\n <TraceDataPanel\n traceId={traceId}\n spans={spans}\n anchorSpanId={anchorSpanId}\n entityHref={entityHref}\n usage={usage}\n isLoading={isLoadingSpans}\n onClose={onClose}\n onSpanSelect={onSpanSelect}\n onSaveAsDatasetItem={onSaveAsDatasetItem}\n onAddTraceMocksToItem={onAddTraceMocksToItem}\n initialSpanId={initialSpanId ?? selectedSpanId}\n onPrevious={onPrevious}\n onNext={onNext}\n placement=\"traces-list\"\n LinkComponent={Link}\n traceHref={traceHref}\n size={size}\n depth={depth}\n headerSlot={headerSlot}\n headerActionsSlot={headerActionsSlot}\n title={title}\n showUnavailableFeaturesMsg={showUnavailableFeaturesMsg}\n spanView={spanView}\n onSpanViewChange={onSpanViewChange}\n feedbackTabBadge={feedbackTabBadge}\n feedbackTabSlot={feedbackTabSlot}\n featuredSpanIds={featuredSpanIds}\n messagesPanelSlot={\n hasMessagesPanel ? <TraceMessagesPanel traceId={traceId} onHighlightSpans={onHighlightSpans} /> : undefined\n }\n sideHeaderActions={\n showFullThreadAction\n ? ({ compact }) => (\n <Button\n tooltip={compact ? 'Open full thread' : undefined}\n icon={<MessagesSquareIcon />}\n variant=\"ghost\"\n size=\"sm\"\n // At a side column of 500px or less, collapse to a round icon button; the label stays for screen readers.\n className=\"@max-[501px]:w-control-sm @max-[501px]:rounded-full @max-[501px]:px-0 @max-[501px]:[&>[data-slot=button-icon]]:ml-0\"\n onClick={() => onFullThreadOpenChange(true)}\n >\n <span className=\"@max-[501px]:sr-only\">Open full thread</span>\n </Button>\n )\n : undefined\n }\n scoresTabBadge={scoresTabBadge}\n scoresTabSlot={scoresTabSlot}\n spanPanelSlot={\n traceId && selectedSpanId ? (\n <SpanDataPanelView\n traceId={traceId}\n spanId={selectedSpanId}\n span={spanDetailData?.span}\n isAnchor={anchorSpanId ? selectedSpanId === anchorSpanId : undefined}\n isLoading={isLoadingSpanDetail}\n onPrevious={handlePreviousSpan}\n onNext={handleNextSpan}\n onClose={() => onSpanSelect(undefined)}\n activeTab={spanActiveTab}\n onTabChange={onSpanTabChange}\n feedbackTabBadge={spanFeedbackTabBadge}\n feedbackTabSlot={spanFeedbackTabSlot}\n />\n ) : null\n }\n />\n {/* Rendered after the trace panel: DataPanel stacking follows DOM order. */}\n <TraceThreadPanel\n open={!!(traceId && isFullThreadOpen && threadId)}\n depth={depth && depth > 1 ? 3 : 2}\n threadId={threadId ?? ''}\n onOpenScore={onOpenScore}\n withQueryTrace={withQueryTrace}\n withFeedback={withFeedback}\n onClose={() => onFullThreadOpenChange?.(false)}\n />\n </>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trace-span-panel.es.js","sources":["../../../../src/domains/traces/components/trace-span-panel.tsx"],"sourcesContent":["import { useSpanDetail, useThreadHasOtherTraces } from '@mastra/react/hooks/traces';\nimport { MessagesSquareIcon } from 'lucide-react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { SpanDataPanelView } from '@/domains/traces/components/span-data-panel-view';\nimport { TraceDataPanel } from '@/domains/traces/components/trace-data-panel';\nimport type { TraceDataPanelView } from '@/domains/traces/components/trace-data-panel-view';\nimport { TraceMessagesPanel } from '@/domains/traces/components/trace-messages-panel';\nimport { getTraceThreadId } from '@/domains/traces/components/trace-thread-context';\nimport { TraceThreadPanel } from '@/domains/traces/components/trace-thread-panel';\nimport { useTraceSpanNavigation } from '@/domains/traces/hooks/use-trace-span-navigation';\nimport { Button } from '@/ds/components/Button';\nimport { useLinkComponent } from '@/lib/framework';\nimport type { LinkComponentPaths } from '@/lib/framework';\n\ntype TraceDataPanelViewProps = ComponentProps<typeof TraceDataPanelView>;\n\nfunction getEntityHref(\n paths: LinkComponentPaths,\n entityType: string | null | undefined,\n entityId: string | null | undefined,\n) {\n if (!entityId || !entityType) return undefined;\n const normalizedEntityType = entityType.toLowerCase();\n if (normalizedEntityType.includes('workflow')) return paths.workflowLink(entityId) || undefined;\n if (normalizedEntityType.includes('agent')) return paths.agentLink(entityId) || undefined;\n return undefined;\n}\ntype SpanDataPanelViewProps = ComponentProps<typeof SpanDataPanelView>;\n\nexport interface TraceSpanPanelProps {\n /** Keep the panel mounted and pass `undefined` to close it, so the drawer animates out. */\n traceId?: string;\n /** Spans returned by `useTraceOrBranchSpans` — the page owns the fetch, the panel renders it. */\n spans: TraceDataPanelViewProps['spans'];\n isLoadingSpans: boolean;\n /** Controlled span selection (URL state on the traces page, local state in the chat aside). */\n selectedSpanId: string | null;\n onSpanSelect: (spanId: string | undefined) => void;\n onClose: () => void;\n\n // Trace-panel pass-through.\n anchorSpanId?: string;\n initialSpanId?: string | null;\n onPrevious?: () => void;\n onNext?: () => void;\n onSaveAsDatasetItem?: TraceDataPanelViewProps['onSaveAsDatasetItem'];\n feedbackTabBadge?: ReactNode;\n feedbackTabSlot?: TraceDataPanelViewProps['feedbackTabSlot'];\n /** Enables the \"Messages\" column (reconstructed turn) when the displayed root is a complete agent trace with a thread id. */\n showPartialThread?: boolean;\n /** Span ids featured in the timeline (non-featured spans are faded). */\n featuredSpanIds?: string[];\n /** Called with the span ids behind a reconstructed message when the user asks to highlight them. */\n onHighlightSpans?: (spanIds: string[]) => void;\n /** When true, opens the trace's thread (every turn) in a stacked drawer above the trace panel. */\n isFullThreadOpen?: boolean;\n /** Enables the in-place \"Open full thread\" swap; without it the action falls back to a link. */\n onFullThreadOpenChange?: (open: boolean) => void;\n /** Full-thread view: lists through the trace-query API; `false` falls back to `listTracesLight`. */\n withQueryTrace: boolean;\n /** Full-thread view: shows the per-trace Feedback tab. */\n withFeedback: boolean;\n /** Full-thread view: opens a score of one of the thread's traces (the app owns routing). */\n onOpenScore: (traceId: string, scoreId: string) => void;\n scoresTabBadge?: ReactNode;\n scoresTabSlot?: TraceDataPanelViewProps['scoresTabSlot'];\n usage?: TraceDataPanelViewProps['usage'];\n traceHref?: string;\n /** Drawer width; defaults to `wide`. */\n size?: TraceDataPanelViewProps['size'];\n /** Sibling-drawer elevation (see `DataPanel`). */\n depth?: TraceDataPanelViewProps['depth'];\n /** Rendered inside the drawer above the trace header (e.g. feedback context). */\n headerSlot?: ReactNode;\n /** Integration actions displayed alongside the trace controls. */\n headerActionsSlot?: ReactNode;\n /** Accessible drawer name; defaults to the trace id. */\n title?: string;\n showUnavailableFeaturesMsg?: TraceDataPanelViewProps['showUnavailableFeaturesMsg'];\n spanView?: TraceDataPanelViewProps['spanView'];\n onSpanViewChange?: TraceDataPanelViewProps['onSpanViewChange'];\n\n // Span-panel pass-through.\n spanActiveTab?: string;\n onSpanTabChange?: (tab: string) => void;\n spanFeedbackTabBadge?: ReactNode;\n spanFeedbackTabSlot?: SpanDataPanelViewProps['feedbackTabSlot'];\n}\n\n/**\n * Shared trace → span drilldown drawer: `TraceDataPanel` with a nested `SpanDataPanelView`.\n * Encapsulates the span-detail fetch and prev/next span navigation that the traces page\n * and the agent chat traces aside used to duplicate.\n */\nexport function TraceSpanPanel({\n traceId,\n spans,\n isLoadingSpans,\n selectedSpanId,\n onSpanSelect,\n onClose,\n anchorSpanId,\n initialSpanId,\n onPrevious,\n onNext,\n onSaveAsDatasetItem,\n feedbackTabBadge,\n feedbackTabSlot,\n showPartialThread,\n featuredSpanIds,\n onHighlightSpans,\n isFullThreadOpen,\n onFullThreadOpenChange,\n withQueryTrace,\n withFeedback,\n onOpenScore,\n scoresTabBadge,\n scoresTabSlot,\n usage,\n traceHref,\n size,\n depth,\n headerSlot,\n headerActionsSlot,\n title,\n showUnavailableFeaturesMsg,\n spanView,\n onSpanViewChange,\n spanActiveTab,\n onSpanTabChange,\n spanFeedbackTabBadge,\n spanFeedbackTabSlot,\n}: TraceSpanPanelProps) {\n const { data: spanDetailData, isLoading: isLoadingSpanDetail } = useSpanDetail({\n traceId: traceId,\n spanId: selectedSpanId ?? '',\n queryOptions: { enabled: !!traceId && !!selectedSpanId },\n });\n const { handlePreviousSpan, handleNextSpan } = useTraceSpanNavigation(spans, selectedSpanId, onSpanSelect);\n const { Link, paths } = useLinkComponent();\n\n // The trace summary links the entity to its page; the app's link provider owns the routes.\n const rootSpan = anchorSpanId\n ? spans?.find(s => s.spanId === anchorSpanId)\n : spans?.find(s => s.parentSpanId == null);\n const entityHref = getEntityHref(paths, rootSpan?.entityType, rootSpan?.entityId);\n const threadId = getTraceThreadId(rootSpan, anchorSpanId);\n const hasMessagesPanel = !!(traceId && showPartialThread && threadId);\n // A single-trace thread would show exactly what the Messages column already shows.\n const hasOtherTraces = useThreadHasOtherTraces({\n threadId: hasMessagesPanel ? threadId : undefined,\n queryOptions: { enabled: !!(hasMessagesPanel ? threadId : undefined) },\n });\n const showFullThreadAction = hasMessagesPanel && hasOtherTraces && !!onFullThreadOpenChange;\n\n return (\n <>\n <TraceDataPanel\n traceId={traceId}\n spans={spans}\n anchorSpanId={anchorSpanId}\n entityHref={entityHref}\n usage={usage}\n isLoading={isLoadingSpans}\n onClose={onClose}\n onSpanSelect={onSpanSelect}\n onSaveAsDatasetItem={onSaveAsDatasetItem}\n initialSpanId={initialSpanId ?? selectedSpanId}\n onPrevious={onPrevious}\n onNext={onNext}\n placement=\"traces-list\"\n LinkComponent={Link}\n traceHref={traceHref}\n size={size}\n depth={depth}\n headerSlot={headerSlot}\n headerActionsSlot={headerActionsSlot}\n title={title}\n showUnavailableFeaturesMsg={showUnavailableFeaturesMsg}\n spanView={spanView}\n onSpanViewChange={onSpanViewChange}\n feedbackTabBadge={feedbackTabBadge}\n feedbackTabSlot={feedbackTabSlot}\n featuredSpanIds={featuredSpanIds}\n messagesPanelSlot={\n hasMessagesPanel ? <TraceMessagesPanel traceId={traceId} onHighlightSpans={onHighlightSpans} /> : undefined\n }\n sideHeaderActions={\n showFullThreadAction\n ? ({ compact }) => (\n <Button\n tooltip={compact ? 'Open full thread' : undefined}\n icon={<MessagesSquareIcon />}\n variant=\"ghost\"\n size=\"sm\"\n // At a side column of 500px or less, collapse to a round icon button; the label stays for screen readers.\n className=\"@max-[501px]:w-control-sm @max-[501px]:rounded-full @max-[501px]:px-0 @max-[501px]:[&>[data-slot=button-icon]]:ml-0\"\n onClick={() => onFullThreadOpenChange(true)}\n >\n <span className=\"@max-[501px]:sr-only\">Open full thread</span>\n </Button>\n )\n : undefined\n }\n scoresTabBadge={scoresTabBadge}\n scoresTabSlot={scoresTabSlot}\n spanPanelSlot={\n traceId && selectedSpanId ? (\n <SpanDataPanelView\n traceId={traceId}\n spanId={selectedSpanId}\n span={spanDetailData?.span}\n isAnchor={anchorSpanId ? selectedSpanId === anchorSpanId : undefined}\n isLoading={isLoadingSpanDetail}\n onPrevious={handlePreviousSpan}\n onNext={handleNextSpan}\n onClose={() => onSpanSelect(undefined)}\n activeTab={spanActiveTab}\n onTabChange={onSpanTabChange}\n feedbackTabBadge={spanFeedbackTabBadge}\n feedbackTabSlot={spanFeedbackTabSlot}\n />\n ) : null\n }\n />\n {/* Rendered after the trace panel: DataPanel stacking follows DOM order. */}\n <TraceThreadPanel\n open={!!(traceId && isFullThreadOpen && threadId)}\n depth={depth && depth > 1 ? 3 : 2}\n threadId={threadId ?? ''}\n onOpenScore={onOpenScore}\n withQueryTrace={withQueryTrace}\n withFeedback={withFeedback}\n onClose={() => onFullThreadOpenChange?.(false)}\n />\n </>\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 domains_traces_utils_spanUtils = require('../utils/span-utils.cjs.js');
8
8
  const domains_traces_components_traceStatusValue = require('./trace-status-value.cjs.js');
9
- const dataPanel = require('../../../data-panel-CGRPVnEe.cjs');
9
+ const dataPanel = require('../../../data-panel-xqrai98b.cjs');
10
10
  const Txt = require('../../../Txt-CIS2G5Jx.cjs');
11
11
  const icons_AgentIcon = require('../../../icons/AgentIcon.cjs.js');
12
12
  const icons_WorkflowIcon = require('../../../icons/WorkflowIcon.cjs.js');
@@ -2,7 +2,7 @@ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
2
  import { CalendarClockIcon, TimerIcon, ArrowDownToLineIcon, ArrowUpFromLineIcon, CircleDollarSignIcon } from 'lucide-react';
3
3
  import { getSpanDurationMs } from '../utils/span-utils.es.js';
4
4
  import { TraceStatusValue } from './trace-status-value.es.js';
5
- import { D as DataPanel } from '../../../data-panel-CUqcB4Vn.js';
5
+ import { D as DataPanel } from '../../../data-panel-DSgidnnv.js';
6
6
  import { T as Txt } from '../../../Txt-BtIGLRk1.js';
7
7
  import { AgentIcon } from '../../../icons/AgentIcon.es.js';
8
8
  import { WorkflowIcon } from '../../../icons/WorkflowIcon.es.js';
@@ -5,7 +5,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5
5
  const jsxRuntime = require('react/jsx-runtime');
6
6
  const React = require('react');
7
7
  const domains_traces_components_threadViewByTrace = require('./thread-view-by-trace.cjs.js');
8
- const dataPanel = require('../../../data-panel-CGRPVnEe.cjs');
8
+ const dataPanel = require('../../../data-panel-xqrai98b.cjs');
9
9
 
10
10
  function TraceThreadPanel({
11
11
  open,
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { useState } from 'react';
3
3
  import { ThreadViewByTrace } from './thread-view-by-trace.es.js';
4
- import { D as DataPanel } from '../../../data-panel-CUqcB4Vn.js';
4
+ import { D as DataPanel } from '../../../data-panel-DSgidnnv.js';
5
5
 
6
6
  function TraceThreadPanel({
7
7
  open,
@@ -4,8 +4,8 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
5
  const jsxRuntime = require('react/jsx-runtime');
6
6
  const domains_traces_traceQueryFilters = require('../../../trace-filters-BtyiQq7Y.cjs');
7
- const dateTimeRangePicker = require('../../../date-time-range-picker-ExPgeHV_.cjs');
8
- const filterBarChip = require('../../../filter-bar-chip-DgvuQv6c.cjs');
7
+ const dateTimeRangePicker = require('../../../date-time-range-picker-_2RJBOUn.cjs');
8
+ const filterBarChip = require('../../../filter-bar-chip-C_64m7nX.cjs');
9
9
  const utils_cn = require('../../../cn-DlOJCxrS.cjs');
10
10
 
11
11
  const TRACE_TIME_RANGE_FIELD_ID = "timeRange";
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { W as traceFilterFieldColor, X as traceFilterFieldIcon } from '../../../trace-filters-DXW-RdDz.js';
3
- import { D as DateTimeRangePicker } from '../../../date-time-range-picker-BB6ivHR-.js';
4
- import { u as useFilterBarContext, F as FilterBarChip, a as FilterBarFieldLabel, f as fieldSegmentAccentStyle, s as segmentClass, e as editableSegmentClass } from '../../../filter-bar-chip-DM73lTpx.js';
3
+ import { D as DateTimeRangePicker } from '../../../date-time-range-picker-BnYWCqei.js';
4
+ import { u as useFilterBarContext, F as FilterBarChip, a as FilterBarFieldLabel, f as fieldSegmentAccentStyle, s as segmentClass, e as editableSegmentClass } from '../../../filter-bar-chip-D2kKMSRA.js';
5
5
  import { c as cn } from '../../../cn-CQUhN5Jx.js';
6
6
 
7
7
  const TRACE_TIME_RANGE_FIELD_ID = "timeRange";
@@ -5,7 +5,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5
5
  const jsxRuntime = require('react/jsx-runtime');
6
6
  const domains_traces_components_tracesExplorer_tracesExplorerContext = require('./traces-explorer-context.cjs.js');
7
7
  const checkbox = require('../../../../checkbox-8X8iYPf7.cjs');
8
- const field = require('../../../../field-BCU5ZtWV.cjs');
8
+ const field = require('../../../../field-CZ5fldpM.cjs');
9
9
  require('../../../../field-control-aria-WzMGs0A4.cjs');
10
10
 
11
11
  function TracesExplorerAutoRefresh() {
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { useTracesList } from './traces-explorer-context.es.js';
3
3
  import { C as Checkbox } from '../../../../checkbox-ts1XgEEa.js';
4
- import { F as Field, e as FieldLabel } from '../../../../field-Dl1zeXTv.js';
4
+ import { F as Field, e as FieldLabel } from '../../../../field-CfA5-ixH.js';
5
5
  import '../../../../field-control-aria-DB6y41tQ.js';
6
6
 
7
7
  function TracesExplorerAutoRefresh() {
@@ -1 +1 @@
1
- {"version":3,"file":"traces-explorer-context.cjs.js","sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-context.ts"],"sourcesContent":["import type { EntityType } from '@mastra/core/observability';\nimport type { TraceQueryDiscoveryTimeRange } from '@mastra/react/hooks/traces';\nimport { createContext, useContext } from 'react';\nimport type { useTraceColumnPreferences } from '../../hooks/use-trace-column-preferences';\nimport type { useTracesListSource } from '../../hooks/use-traces-list-source';\nimport { hasTraceUsageColumn, isTraceUsageColumn } from '../../trace-list-columns';\nimport type { TraceColumnPreferences } from '../../trace-list-columns';\nimport type { SpanTab, TraceDatePreset } from '../../types';\nimport type { TraceSpanView } from '../trace-data-panel-view';\nimport type { TracesFilters, TracesSelection, TracesSortDirection } from './traces-explorer-actions';\nimport type { DataListSort } from '@/ds/components/DataList';\n\nexport type TracesExplorerScope = { entityId: string; entityType?: EntityType };\n\nexport type TracesMetricsSupport = { supported: boolean; isLoading: boolean };\n\n/**\n * Host switches (e.g. feature flags). Each one can only turn a feature off:\n * it is combined with what the server supports, and defaults to on.\n */\nexport type TracesExplorerFeatures = { traceQuery?: boolean; feedback?: boolean };\n\nexport type TracesConfigContextValue = {\n listId: string;\n scopedFieldIds: ReadonlySet<string>;\n hiddenFieldIds: readonly string[];\n withQueryTrace: boolean;\n withFeedback: boolean;\n withRootDuration: boolean;\n /** Whether field discovery should run: the server supports it and the trace query API is on. */\n withDiscovery: boolean;\n isCapabilitiesLoading: boolean;\n metricsSupport: TracesMetricsSupport;\n /** Shared by every discovery consumer so they hit the same cached query. */\n discoveryTimeRange: TraceQueryDiscoveryTimeRange;\n};\n\nexport type TracesFiltersActions = {\n /** Replaces the filter tokens and groups. The scope tokens are always kept. */\n setFilterTokens: (tokens: TracesFilters['tokens'], groups: TracesFilters['groups']) => void;\n setDatePreset: (preset: TraceDatePreset) => void;\n setDate: (value: Date | undefined, end: 'from' | 'to') => void;\n setDateRange: (from: Date | undefined, to: Date | undefined) => void;\n};\n\nexport type TracesFiltersContextValue = TracesFiltersActions & {\n /** The host's filters with the entries this server can't query dropped. */\n filters: TracesFilters;\n dateFrom?: Date;\n dateTo?: Date;\n filtersApplied: boolean;\n contentFiltersApplied: boolean;\n};\n\nexport type TracesSelectionActions = {\n selectTrace: (traceId: string) => void;\n closeTrace: () => void;\n selectSpan: (spanId: string | null) => void;\n setSpanTab: (tab: SpanTab) => void;\n setSpanView: (view: TraceSpanView) => void;\n selectScore: (scoreId: string | null) => void;\n highlightSpans: (spanIds: string[]) => void;\n};\n\nexport type TracesSelectionContextValue = TracesSelectionActions & {\n selection: TracesSelection;\n selectedTraceId?: string;\n};\n\ntype ListSource = ReturnType<typeof useTracesListSource>;\n\nexport type TracesListContextValue = Pick<\n ListSource,\n | 'rows'\n | 'isLoading'\n | 'isFetchingNextPage'\n | 'hasNextPage'\n | 'setEndOfListElement'\n | 'error'\n | 'refetch'\n | 'autoRefetch'\n | 'setAutoRefetch'\n> & {\n sortDirection: TracesSortDirection;\n onSortChange: (direction: DataListSort) => void;\n};\n\nexport type TracesColumnsContextValue = ReturnType<typeof useTraceColumnPreferences>;\n\nexport const TracesConfigContext = createContext<TracesConfigContextValue | null>(null);\nexport const TracesFiltersContext = createContext<TracesFiltersContextValue | null>(null);\nexport const TracesSelectionContext = createContext<TracesSelectionContextValue | null>(null);\nexport const TracesListContext = createContext<TracesListContextValue | null>(null);\n/** Kept out of `TracesListContext` so a poll tick doesn't re-render every list consumer. */\nexport const TracesListFetchingContext = createContext<boolean | null>(null);\nexport const TracesColumnsContext = createContext<TracesColumnsContextValue | null>(null);\n\nconst useRequired = <T>(context: React.Context<T | null>, name: string): T => {\n const value = useContext(context);\n if (!value) throw new Error(`${name} must be used inside <TracesExplorer>`);\n return value;\n};\n\nexport const useTracesConfig = () => useRequired(TracesConfigContext, 'useTracesConfig');\nexport const useTracesFilters = () => useRequired(TracesFiltersContext, 'useTracesFilters');\nexport const useTracesSelection = () => useRequired(TracesSelectionContext, 'useTracesSelection');\nexport const useTracesList = () => useRequired(TracesListContext, 'useTracesList');\n/** Whether the list query is fetching, including background refetches and retries. */\nexport const useTracesListFetching = () => {\n const value = useContext(TracesListFetchingContext);\n if (value === null) throw new Error('useTracesListFetching must be used inside <TracesExplorer>');\n return value;\n};\nexport const useTracesColumns = () => useRequired(TracesColumnsContext, 'useTracesColumns');\n\nconst CHECKING_USAGE_REASON = 'Checking whether this storage supports usage data.';\nconst UNSUPPORTED_USAGE_REASON = 'This observability store does not support token and cost metrics.';\n\nexport type TraceUsageColumns = {\n /** Column preferences with the usage columns removed when the store can't serve them. */\n displayedPreferences: TraceColumnPreferences;\n /** Whether usage should be fetched: metrics are supported and a usage column is visible. */\n usageEnabled: boolean;\n usageDisabledReason?: string;\n};\n\nexport const useTraceUsageColumns = (): TraceUsageColumns => {\n const { preferences } = useTracesColumns();\n const { metricsSupport } = useTracesConfig();\n const unavailable = !metricsSupport.isLoading && !metricsSupport.supported;\n const displayedPreferences = unavailable\n ? { ...preferences, visibleColumns: preferences.visibleColumns.filter(column => !isTraceUsageColumn(column)) }\n : preferences;\n return {\n displayedPreferences,\n usageEnabled: !unavailable && !metricsSupport.isLoading && hasTraceUsageColumn(displayedPreferences),\n usageDisabledReason: metricsSupport.isLoading\n ? CHECKING_USAGE_REASON\n : !metricsSupport.supported\n ? UNSUPPORTED_USAGE_REASON\n : undefined,\n };\n};\n"],"names":["createContext","useContext","isTraceUsageColumn","hasTraceUsageColumn"],"mappings":";;;;;;;AAyFO,MAAM,mBAAA,GAAsBA,oBAA+C,IAAI;AAC/E,MAAM,oBAAA,GAAuBA,oBAAgD,IAAI;AACjF,MAAM,sBAAA,GAAyBA,oBAAkD,IAAI;AACrF,MAAM,iBAAA,GAAoBA,oBAA6C,IAAI;AAE3E,MAAM,yBAAA,GAA4BA,oBAA8B,IAAI;AACpE,MAAM,oBAAA,GAAuBA,oBAAgD,IAAI;AAExF,MAAM,WAAA,GAAc,CAAI,OAAA,EAAkC,IAAA,KAAoB;AAC5E,EAAA,MAAM,KAAA,GAAQC,iBAAW,OAAO,CAAA;AAChC,EAAA,IAAI,CAAC,KAAA,EAAO,MAAM,IAAI,KAAA,CAAM,CAAA,EAAG,IAAI,CAAA,qCAAA,CAAuC,CAAA;AAC1E,EAAA,OAAO,KAAA;AACT,CAAA;AAEO,MAAM,eAAA,GAAkB,MAAM,WAAA,CAAY,mBAAA,EAAqB,iBAAiB;AAChF,MAAM,gBAAA,GAAmB,MAAM,WAAA,CAAY,oBAAA,EAAsB,kBAAkB;AACnF,MAAM,kBAAA,GAAqB,MAAM,WAAA,CAAY,sBAAA,EAAwB,oBAAoB;AACzF,MAAM,aAAA,GAAgB,MAAM,WAAA,CAAY,iBAAA,EAAmB,eAAe;AAE1E,MAAM,wBAAwB,MAAM;AACzC,EAAA,MAAM,KAAA,GAAQA,iBAAW,yBAAyB,CAAA;AAClD,EAAA,IAAI,KAAA,KAAU,IAAA,EAAM,MAAM,IAAI,MAAM,4DAA4D,CAAA;AAChG,EAAA,OAAO,KAAA;AACT;AACO,MAAM,gBAAA,GAAmB,MAAM,WAAA,CAAY,oBAAA,EAAsB,kBAAkB;AAE1F,MAAM,qBAAA,GAAwB,oDAAA;AAC9B,MAAM,wBAAA,GAA2B,mEAAA;AAU1B,MAAM,uBAAuB,MAAyB;AAC3D,EAAA,MAAM,EAAE,WAAA,EAAY,GAAI,gBAAA,EAAiB;AACzC,EAAA,MAAM,EAAE,cAAA,EAAe,GAAI,eAAA,EAAgB;AAC3C,EAAA,MAAM,WAAA,GAAc,CAAC,cAAA,CAAe,SAAA,IAAa,CAAC,cAAA,CAAe,SAAA;AACjE,EAAA,MAAM,oBAAA,GAAuB,WAAA,GACzB,EAAE,GAAG,aAAa,cAAA,EAAgB,WAAA,CAAY,cAAA,CAAe,MAAA,CAAO,YAAU,CAACC,kDAAA,CAAmB,MAAM,CAAC,GAAE,GAC3G,WAAA;AACJ,EAAA,OAAO;AAAA,IACL,oBAAA;AAAA,IACA,cAAc,CAAC,WAAA,IAAe,CAAC,cAAA,CAAe,SAAA,IAAaC,oDAAoB,oBAAoB,CAAA;AAAA,IACnG,qBAAqB,cAAA,CAAe,SAAA,GAChC,wBACA,CAAC,cAAA,CAAe,YACd,wBAAA,GACA;AAAA,GACR;AACF;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"traces-explorer-context.cjs.js","sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-context.ts"],"sourcesContent":["import type { EntityType } from '@mastra/core/observability';\nimport type { TraceQueryDiscoveryTimeRange } from '@mastra/react/hooks/traces';\nimport { createContext, useContext } from 'react';\nimport type { useTraceColumnPreferences } from '../../hooks/use-trace-column-preferences';\nimport type { useTracesListSource } from '../../hooks/use-traces-list-source';\nimport { hasTraceUsageColumn, isTraceUsageColumn } from '../../trace-list-columns';\nimport type { TraceColumnPreferences } from '../../trace-list-columns';\nimport type { SpanTab, TraceDatePreset } from '../../types';\nimport type { TraceSpanView } from '../trace-data-panel-view';\nimport type { TracesFilters, TracesSelection, TracesSortDirection } from './traces-explorer-actions';\nimport type { DataListSort } from '@/ds/components/DataList';\n\nexport type TracesExplorerScope = { entityId: string; entityType?: EntityType };\n\nexport type TracesMetricsSupport = { supported: boolean; isLoading: boolean };\n\n/**\n * Host switches (e.g. feature flags). Each one can only turn a feature off:\n * it is combined with what the server supports, and defaults to on.\n */\nexport type TracesExplorerFeatures = { traceQuery?: boolean; feedback?: boolean };\n\nexport type TracesConfigContextValue = {\n listId: string;\n scopedFieldIds: ReadonlySet<string>;\n hiddenFieldIds: readonly string[];\n withQueryTrace: boolean;\n withFeedback: boolean;\n withRootDuration: boolean;\n /** The server supports delta polling, so auto-refresh merges new traces instead of reloading pages. */\n withDeltaPolling: boolean;\n /** Whether field discovery should run: the server supports it and the trace query API is on. */\n withDiscovery: boolean;\n isCapabilitiesLoading: boolean;\n metricsSupport: TracesMetricsSupport;\n /** Shared by every discovery consumer so they hit the same cached query. */\n discoveryTimeRange: TraceQueryDiscoveryTimeRange;\n};\n\nexport type TracesFiltersActions = {\n /** Replaces the filter tokens and groups. The scope tokens are always kept. */\n setFilterTokens: (tokens: TracesFilters['tokens'], groups: TracesFilters['groups']) => void;\n setDatePreset: (preset: TraceDatePreset) => void;\n setDate: (value: Date | undefined, end: 'from' | 'to') => void;\n setDateRange: (from: Date | undefined, to: Date | undefined) => void;\n};\n\nexport type TracesFiltersContextValue = TracesFiltersActions & {\n /** The host's filters with the entries this server can't query dropped. */\n filters: TracesFilters;\n dateFrom?: Date;\n dateTo?: Date;\n filtersApplied: boolean;\n contentFiltersApplied: boolean;\n};\n\nexport type TracesSelectionActions = {\n selectTrace: (traceId: string) => void;\n closeTrace: () => void;\n selectSpan: (spanId: string | null) => void;\n setSpanTab: (tab: SpanTab) => void;\n setSpanView: (view: TraceSpanView) => void;\n selectScore: (scoreId: string | null) => void;\n highlightSpans: (spanIds: string[]) => void;\n};\n\nexport type TracesSelectionContextValue = TracesSelectionActions & {\n selection: TracesSelection;\n selectedTraceId?: string;\n};\n\ntype ListSource = ReturnType<typeof useTracesListSource>;\n\nexport type TracesListContextValue = Pick<\n ListSource,\n | 'rows'\n | 'isLoading'\n | 'isFetchingNextPage'\n | 'hasNextPage'\n | 'setEndOfListElement'\n | 'error'\n | 'refetch'\n | 'autoRefetch'\n | 'setAutoRefetch'\n> & {\n sortDirection: TracesSortDirection;\n onSortChange: (direction: DataListSort) => void;\n};\n\nexport type TracesColumnsContextValue = ReturnType<typeof useTraceColumnPreferences>;\n\nexport const TracesConfigContext = createContext<TracesConfigContextValue | null>(null);\nexport const TracesFiltersContext = createContext<TracesFiltersContextValue | null>(null);\nexport const TracesSelectionContext = createContext<TracesSelectionContextValue | null>(null);\nexport const TracesListContext = createContext<TracesListContextValue | null>(null);\n/** Kept out of `TracesListContext` so a poll tick doesn't re-render every list consumer. */\nexport const TracesListFetchingContext = createContext<boolean | null>(null);\nexport const TracesColumnsContext = createContext<TracesColumnsContextValue | null>(null);\n\nconst useRequired = <T>(context: React.Context<T | null>, name: string): T => {\n const value = useContext(context);\n if (!value) throw new Error(`${name} must be used inside <TracesExplorer>`);\n return value;\n};\n\nexport const useTracesConfig = () => useRequired(TracesConfigContext, 'useTracesConfig');\nexport const useTracesFilters = () => useRequired(TracesFiltersContext, 'useTracesFilters');\nexport const useTracesSelection = () => useRequired(TracesSelectionContext, 'useTracesSelection');\nexport const useTracesList = () => useRequired(TracesListContext, 'useTracesList');\n/** Whether the list query is fetching, including background refetches and retries. */\nexport const useTracesListFetching = () => {\n const value = useContext(TracesListFetchingContext);\n if (value === null) throw new Error('useTracesListFetching must be used inside <TracesExplorer>');\n return value;\n};\nexport const useTracesColumns = () => useRequired(TracesColumnsContext, 'useTracesColumns');\n\nconst CHECKING_USAGE_REASON = 'Checking whether this storage supports usage data.';\nconst UNSUPPORTED_USAGE_REASON = 'This observability store does not support token and cost metrics.';\n\nexport type TraceUsageColumns = {\n /** Column preferences with the usage columns removed when the store can't serve them. */\n displayedPreferences: TraceColumnPreferences;\n /** Whether usage should be fetched: metrics are supported and a usage column is visible. */\n usageEnabled: boolean;\n usageDisabledReason?: string;\n};\n\nexport const useTraceUsageColumns = (): TraceUsageColumns => {\n const { preferences } = useTracesColumns();\n const { metricsSupport } = useTracesConfig();\n const unavailable = !metricsSupport.isLoading && !metricsSupport.supported;\n const displayedPreferences = unavailable\n ? { ...preferences, visibleColumns: preferences.visibleColumns.filter(column => !isTraceUsageColumn(column)) }\n : preferences;\n return {\n displayedPreferences,\n usageEnabled: !unavailable && !metricsSupport.isLoading && hasTraceUsageColumn(displayedPreferences),\n usageDisabledReason: metricsSupport.isLoading\n ? CHECKING_USAGE_REASON\n : !metricsSupport.supported\n ? UNSUPPORTED_USAGE_REASON\n : undefined,\n };\n};\n"],"names":["createContext","useContext","isTraceUsageColumn","hasTraceUsageColumn"],"mappings":";;;;;;;AA2FO,MAAM,mBAAA,GAAsBA,oBAA+C,IAAI;AAC/E,MAAM,oBAAA,GAAuBA,oBAAgD,IAAI;AACjF,MAAM,sBAAA,GAAyBA,oBAAkD,IAAI;AACrF,MAAM,iBAAA,GAAoBA,oBAA6C,IAAI;AAE3E,MAAM,yBAAA,GAA4BA,oBAA8B,IAAI;AACpE,MAAM,oBAAA,GAAuBA,oBAAgD,IAAI;AAExF,MAAM,WAAA,GAAc,CAAI,OAAA,EAAkC,IAAA,KAAoB;AAC5E,EAAA,MAAM,KAAA,GAAQC,iBAAW,OAAO,CAAA;AAChC,EAAA,IAAI,CAAC,KAAA,EAAO,MAAM,IAAI,KAAA,CAAM,CAAA,EAAG,IAAI,CAAA,qCAAA,CAAuC,CAAA;AAC1E,EAAA,OAAO,KAAA;AACT,CAAA;AAEO,MAAM,eAAA,GAAkB,MAAM,WAAA,CAAY,mBAAA,EAAqB,iBAAiB;AAChF,MAAM,gBAAA,GAAmB,MAAM,WAAA,CAAY,oBAAA,EAAsB,kBAAkB;AACnF,MAAM,kBAAA,GAAqB,MAAM,WAAA,CAAY,sBAAA,EAAwB,oBAAoB;AACzF,MAAM,aAAA,GAAgB,MAAM,WAAA,CAAY,iBAAA,EAAmB,eAAe;AAE1E,MAAM,wBAAwB,MAAM;AACzC,EAAA,MAAM,KAAA,GAAQA,iBAAW,yBAAyB,CAAA;AAClD,EAAA,IAAI,KAAA,KAAU,IAAA,EAAM,MAAM,IAAI,MAAM,4DAA4D,CAAA;AAChG,EAAA,OAAO,KAAA;AACT;AACO,MAAM,gBAAA,GAAmB,MAAM,WAAA,CAAY,oBAAA,EAAsB,kBAAkB;AAE1F,MAAM,qBAAA,GAAwB,oDAAA;AAC9B,MAAM,wBAAA,GAA2B,mEAAA;AAU1B,MAAM,uBAAuB,MAAyB;AAC3D,EAAA,MAAM,EAAE,WAAA,EAAY,GAAI,gBAAA,EAAiB;AACzC,EAAA,MAAM,EAAE,cAAA,EAAe,GAAI,eAAA,EAAgB;AAC3C,EAAA,MAAM,WAAA,GAAc,CAAC,cAAA,CAAe,SAAA,IAAa,CAAC,cAAA,CAAe,SAAA;AACjE,EAAA,MAAM,oBAAA,GAAuB,WAAA,GACzB,EAAE,GAAG,aAAa,cAAA,EAAgB,WAAA,CAAY,cAAA,CAAe,MAAA,CAAO,YAAU,CAACC,kDAAA,CAAmB,MAAM,CAAC,GAAE,GAC3G,WAAA;AACJ,EAAA,OAAO;AAAA,IACL,oBAAA;AAAA,IACA,cAAc,CAAC,WAAA,IAAe,CAAC,cAAA,CAAe,SAAA,IAAaC,oDAAoB,oBAAoB,CAAA;AAAA,IACnG,qBAAqB,cAAA,CAAe,SAAA,GAChC,wBACA,CAAC,cAAA,CAAe,YACd,wBAAA,GACA;AAAA,GACR;AACF;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"traces-explorer-context.es.js","sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-context.ts"],"sourcesContent":["import type { EntityType } from '@mastra/core/observability';\nimport type { TraceQueryDiscoveryTimeRange } from '@mastra/react/hooks/traces';\nimport { createContext, useContext } from 'react';\nimport type { useTraceColumnPreferences } from '../../hooks/use-trace-column-preferences';\nimport type { useTracesListSource } from '../../hooks/use-traces-list-source';\nimport { hasTraceUsageColumn, isTraceUsageColumn } from '../../trace-list-columns';\nimport type { TraceColumnPreferences } from '../../trace-list-columns';\nimport type { SpanTab, TraceDatePreset } from '../../types';\nimport type { TraceSpanView } from '../trace-data-panel-view';\nimport type { TracesFilters, TracesSelection, TracesSortDirection } from './traces-explorer-actions';\nimport type { DataListSort } from '@/ds/components/DataList';\n\nexport type TracesExplorerScope = { entityId: string; entityType?: EntityType };\n\nexport type TracesMetricsSupport = { supported: boolean; isLoading: boolean };\n\n/**\n * Host switches (e.g. feature flags). Each one can only turn a feature off:\n * it is combined with what the server supports, and defaults to on.\n */\nexport type TracesExplorerFeatures = { traceQuery?: boolean; feedback?: boolean };\n\nexport type TracesConfigContextValue = {\n listId: string;\n scopedFieldIds: ReadonlySet<string>;\n hiddenFieldIds: readonly string[];\n withQueryTrace: boolean;\n withFeedback: boolean;\n withRootDuration: boolean;\n /** Whether field discovery should run: the server supports it and the trace query API is on. */\n withDiscovery: boolean;\n isCapabilitiesLoading: boolean;\n metricsSupport: TracesMetricsSupport;\n /** Shared by every discovery consumer so they hit the same cached query. */\n discoveryTimeRange: TraceQueryDiscoveryTimeRange;\n};\n\nexport type TracesFiltersActions = {\n /** Replaces the filter tokens and groups. The scope tokens are always kept. */\n setFilterTokens: (tokens: TracesFilters['tokens'], groups: TracesFilters['groups']) => void;\n setDatePreset: (preset: TraceDatePreset) => void;\n setDate: (value: Date | undefined, end: 'from' | 'to') => void;\n setDateRange: (from: Date | undefined, to: Date | undefined) => void;\n};\n\nexport type TracesFiltersContextValue = TracesFiltersActions & {\n /** The host's filters with the entries this server can't query dropped. */\n filters: TracesFilters;\n dateFrom?: Date;\n dateTo?: Date;\n filtersApplied: boolean;\n contentFiltersApplied: boolean;\n};\n\nexport type TracesSelectionActions = {\n selectTrace: (traceId: string) => void;\n closeTrace: () => void;\n selectSpan: (spanId: string | null) => void;\n setSpanTab: (tab: SpanTab) => void;\n setSpanView: (view: TraceSpanView) => void;\n selectScore: (scoreId: string | null) => void;\n highlightSpans: (spanIds: string[]) => void;\n};\n\nexport type TracesSelectionContextValue = TracesSelectionActions & {\n selection: TracesSelection;\n selectedTraceId?: string;\n};\n\ntype ListSource = ReturnType<typeof useTracesListSource>;\n\nexport type TracesListContextValue = Pick<\n ListSource,\n | 'rows'\n | 'isLoading'\n | 'isFetchingNextPage'\n | 'hasNextPage'\n | 'setEndOfListElement'\n | 'error'\n | 'refetch'\n | 'autoRefetch'\n | 'setAutoRefetch'\n> & {\n sortDirection: TracesSortDirection;\n onSortChange: (direction: DataListSort) => void;\n};\n\nexport type TracesColumnsContextValue = ReturnType<typeof useTraceColumnPreferences>;\n\nexport const TracesConfigContext = createContext<TracesConfigContextValue | null>(null);\nexport const TracesFiltersContext = createContext<TracesFiltersContextValue | null>(null);\nexport const TracesSelectionContext = createContext<TracesSelectionContextValue | null>(null);\nexport const TracesListContext = createContext<TracesListContextValue | null>(null);\n/** Kept out of `TracesListContext` so a poll tick doesn't re-render every list consumer. */\nexport const TracesListFetchingContext = createContext<boolean | null>(null);\nexport const TracesColumnsContext = createContext<TracesColumnsContextValue | null>(null);\n\nconst useRequired = <T>(context: React.Context<T | null>, name: string): T => {\n const value = useContext(context);\n if (!value) throw new Error(`${name} must be used inside <TracesExplorer>`);\n return value;\n};\n\nexport const useTracesConfig = () => useRequired(TracesConfigContext, 'useTracesConfig');\nexport const useTracesFilters = () => useRequired(TracesFiltersContext, 'useTracesFilters');\nexport const useTracesSelection = () => useRequired(TracesSelectionContext, 'useTracesSelection');\nexport const useTracesList = () => useRequired(TracesListContext, 'useTracesList');\n/** Whether the list query is fetching, including background refetches and retries. */\nexport const useTracesListFetching = () => {\n const value = useContext(TracesListFetchingContext);\n if (value === null) throw new Error('useTracesListFetching must be used inside <TracesExplorer>');\n return value;\n};\nexport const useTracesColumns = () => useRequired(TracesColumnsContext, 'useTracesColumns');\n\nconst CHECKING_USAGE_REASON = 'Checking whether this storage supports usage data.';\nconst UNSUPPORTED_USAGE_REASON = 'This observability store does not support token and cost metrics.';\n\nexport type TraceUsageColumns = {\n /** Column preferences with the usage columns removed when the store can't serve them. */\n displayedPreferences: TraceColumnPreferences;\n /** Whether usage should be fetched: metrics are supported and a usage column is visible. */\n usageEnabled: boolean;\n usageDisabledReason?: string;\n};\n\nexport const useTraceUsageColumns = (): TraceUsageColumns => {\n const { preferences } = useTracesColumns();\n const { metricsSupport } = useTracesConfig();\n const unavailable = !metricsSupport.isLoading && !metricsSupport.supported;\n const displayedPreferences = unavailable\n ? { ...preferences, visibleColumns: preferences.visibleColumns.filter(column => !isTraceUsageColumn(column)) }\n : preferences;\n return {\n displayedPreferences,\n usageEnabled: !unavailable && !metricsSupport.isLoading && hasTraceUsageColumn(displayedPreferences),\n usageDisabledReason: metricsSupport.isLoading\n ? CHECKING_USAGE_REASON\n : !metricsSupport.supported\n ? UNSUPPORTED_USAGE_REASON\n : undefined,\n };\n};\n"],"names":[],"mappings":";;;AAyFO,MAAM,mBAAA,GAAsB,cAA+C,IAAI;AAC/E,MAAM,oBAAA,GAAuB,cAAgD,IAAI;AACjF,MAAM,sBAAA,GAAyB,cAAkD,IAAI;AACrF,MAAM,iBAAA,GAAoB,cAA6C,IAAI;AAE3E,MAAM,yBAAA,GAA4B,cAA8B,IAAI;AACpE,MAAM,oBAAA,GAAuB,cAAgD,IAAI;AAExF,MAAM,WAAA,GAAc,CAAI,OAAA,EAAkC,IAAA,KAAoB;AAC5E,EAAA,MAAM,KAAA,GAAQ,WAAW,OAAO,CAAA;AAChC,EAAA,IAAI,CAAC,KAAA,EAAO,MAAM,IAAI,KAAA,CAAM,CAAA,EAAG,IAAI,CAAA,qCAAA,CAAuC,CAAA;AAC1E,EAAA,OAAO,KAAA;AACT,CAAA;AAEO,MAAM,eAAA,GAAkB,MAAM,WAAA,CAAY,mBAAA,EAAqB,iBAAiB;AAChF,MAAM,gBAAA,GAAmB,MAAM,WAAA,CAAY,oBAAA,EAAsB,kBAAkB;AACnF,MAAM,kBAAA,GAAqB,MAAM,WAAA,CAAY,sBAAA,EAAwB,oBAAoB;AACzF,MAAM,aAAA,GAAgB,MAAM,WAAA,CAAY,iBAAA,EAAmB,eAAe;AAE1E,MAAM,wBAAwB,MAAM;AACzC,EAAA,MAAM,KAAA,GAAQ,WAAW,yBAAyB,CAAA;AAClD,EAAA,IAAI,KAAA,KAAU,IAAA,EAAM,MAAM,IAAI,MAAM,4DAA4D,CAAA;AAChG,EAAA,OAAO,KAAA;AACT;AACO,MAAM,gBAAA,GAAmB,MAAM,WAAA,CAAY,oBAAA,EAAsB,kBAAkB;AAE1F,MAAM,qBAAA,GAAwB,oDAAA;AAC9B,MAAM,wBAAA,GAA2B,mEAAA;AAU1B,MAAM,uBAAuB,MAAyB;AAC3D,EAAA,MAAM,EAAE,WAAA,EAAY,GAAI,gBAAA,EAAiB;AACzC,EAAA,MAAM,EAAE,cAAA,EAAe,GAAI,eAAA,EAAgB;AAC3C,EAAA,MAAM,WAAA,GAAc,CAAC,cAAA,CAAe,SAAA,IAAa,CAAC,cAAA,CAAe,SAAA;AACjE,EAAA,MAAM,oBAAA,GAAuB,WAAA,GACzB,EAAE,GAAG,aAAa,cAAA,EAAgB,WAAA,CAAY,cAAA,CAAe,MAAA,CAAO,YAAU,CAAC,kBAAA,CAAmB,MAAM,CAAC,GAAE,GAC3G,WAAA;AACJ,EAAA,OAAO;AAAA,IACL,oBAAA;AAAA,IACA,cAAc,CAAC,WAAA,IAAe,CAAC,cAAA,CAAe,SAAA,IAAa,oBAAoB,oBAAoB,CAAA;AAAA,IACnG,qBAAqB,cAAA,CAAe,SAAA,GAChC,wBACA,CAAC,cAAA,CAAe,YACd,wBAAA,GACA;AAAA,GACR;AACF;;;;"}
1
+ {"version":3,"file":"traces-explorer-context.es.js","sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-context.ts"],"sourcesContent":["import type { EntityType } from '@mastra/core/observability';\nimport type { TraceQueryDiscoveryTimeRange } from '@mastra/react/hooks/traces';\nimport { createContext, useContext } from 'react';\nimport type { useTraceColumnPreferences } from '../../hooks/use-trace-column-preferences';\nimport type { useTracesListSource } from '../../hooks/use-traces-list-source';\nimport { hasTraceUsageColumn, isTraceUsageColumn } from '../../trace-list-columns';\nimport type { TraceColumnPreferences } from '../../trace-list-columns';\nimport type { SpanTab, TraceDatePreset } from '../../types';\nimport type { TraceSpanView } from '../trace-data-panel-view';\nimport type { TracesFilters, TracesSelection, TracesSortDirection } from './traces-explorer-actions';\nimport type { DataListSort } from '@/ds/components/DataList';\n\nexport type TracesExplorerScope = { entityId: string; entityType?: EntityType };\n\nexport type TracesMetricsSupport = { supported: boolean; isLoading: boolean };\n\n/**\n * Host switches (e.g. feature flags). Each one can only turn a feature off:\n * it is combined with what the server supports, and defaults to on.\n */\nexport type TracesExplorerFeatures = { traceQuery?: boolean; feedback?: boolean };\n\nexport type TracesConfigContextValue = {\n listId: string;\n scopedFieldIds: ReadonlySet<string>;\n hiddenFieldIds: readonly string[];\n withQueryTrace: boolean;\n withFeedback: boolean;\n withRootDuration: boolean;\n /** The server supports delta polling, so auto-refresh merges new traces instead of reloading pages. */\n withDeltaPolling: boolean;\n /** Whether field discovery should run: the server supports it and the trace query API is on. */\n withDiscovery: boolean;\n isCapabilitiesLoading: boolean;\n metricsSupport: TracesMetricsSupport;\n /** Shared by every discovery consumer so they hit the same cached query. */\n discoveryTimeRange: TraceQueryDiscoveryTimeRange;\n};\n\nexport type TracesFiltersActions = {\n /** Replaces the filter tokens and groups. The scope tokens are always kept. */\n setFilterTokens: (tokens: TracesFilters['tokens'], groups: TracesFilters['groups']) => void;\n setDatePreset: (preset: TraceDatePreset) => void;\n setDate: (value: Date | undefined, end: 'from' | 'to') => void;\n setDateRange: (from: Date | undefined, to: Date | undefined) => void;\n};\n\nexport type TracesFiltersContextValue = TracesFiltersActions & {\n /** The host's filters with the entries this server can't query dropped. */\n filters: TracesFilters;\n dateFrom?: Date;\n dateTo?: Date;\n filtersApplied: boolean;\n contentFiltersApplied: boolean;\n};\n\nexport type TracesSelectionActions = {\n selectTrace: (traceId: string) => void;\n closeTrace: () => void;\n selectSpan: (spanId: string | null) => void;\n setSpanTab: (tab: SpanTab) => void;\n setSpanView: (view: TraceSpanView) => void;\n selectScore: (scoreId: string | null) => void;\n highlightSpans: (spanIds: string[]) => void;\n};\n\nexport type TracesSelectionContextValue = TracesSelectionActions & {\n selection: TracesSelection;\n selectedTraceId?: string;\n};\n\ntype ListSource = ReturnType<typeof useTracesListSource>;\n\nexport type TracesListContextValue = Pick<\n ListSource,\n | 'rows'\n | 'isLoading'\n | 'isFetchingNextPage'\n | 'hasNextPage'\n | 'setEndOfListElement'\n | 'error'\n | 'refetch'\n | 'autoRefetch'\n | 'setAutoRefetch'\n> & {\n sortDirection: TracesSortDirection;\n onSortChange: (direction: DataListSort) => void;\n};\n\nexport type TracesColumnsContextValue = ReturnType<typeof useTraceColumnPreferences>;\n\nexport const TracesConfigContext = createContext<TracesConfigContextValue | null>(null);\nexport const TracesFiltersContext = createContext<TracesFiltersContextValue | null>(null);\nexport const TracesSelectionContext = createContext<TracesSelectionContextValue | null>(null);\nexport const TracesListContext = createContext<TracesListContextValue | null>(null);\n/** Kept out of `TracesListContext` so a poll tick doesn't re-render every list consumer. */\nexport const TracesListFetchingContext = createContext<boolean | null>(null);\nexport const TracesColumnsContext = createContext<TracesColumnsContextValue | null>(null);\n\nconst useRequired = <T>(context: React.Context<T | null>, name: string): T => {\n const value = useContext(context);\n if (!value) throw new Error(`${name} must be used inside <TracesExplorer>`);\n return value;\n};\n\nexport const useTracesConfig = () => useRequired(TracesConfigContext, 'useTracesConfig');\nexport const useTracesFilters = () => useRequired(TracesFiltersContext, 'useTracesFilters');\nexport const useTracesSelection = () => useRequired(TracesSelectionContext, 'useTracesSelection');\nexport const useTracesList = () => useRequired(TracesListContext, 'useTracesList');\n/** Whether the list query is fetching, including background refetches and retries. */\nexport const useTracesListFetching = () => {\n const value = useContext(TracesListFetchingContext);\n if (value === null) throw new Error('useTracesListFetching must be used inside <TracesExplorer>');\n return value;\n};\nexport const useTracesColumns = () => useRequired(TracesColumnsContext, 'useTracesColumns');\n\nconst CHECKING_USAGE_REASON = 'Checking whether this storage supports usage data.';\nconst UNSUPPORTED_USAGE_REASON = 'This observability store does not support token and cost metrics.';\n\nexport type TraceUsageColumns = {\n /** Column preferences with the usage columns removed when the store can't serve them. */\n displayedPreferences: TraceColumnPreferences;\n /** Whether usage should be fetched: metrics are supported and a usage column is visible. */\n usageEnabled: boolean;\n usageDisabledReason?: string;\n};\n\nexport const useTraceUsageColumns = (): TraceUsageColumns => {\n const { preferences } = useTracesColumns();\n const { metricsSupport } = useTracesConfig();\n const unavailable = !metricsSupport.isLoading && !metricsSupport.supported;\n const displayedPreferences = unavailable\n ? { ...preferences, visibleColumns: preferences.visibleColumns.filter(column => !isTraceUsageColumn(column)) }\n : preferences;\n return {\n displayedPreferences,\n usageEnabled: !unavailable && !metricsSupport.isLoading && hasTraceUsageColumn(displayedPreferences),\n usageDisabledReason: metricsSupport.isLoading\n ? CHECKING_USAGE_REASON\n : !metricsSupport.supported\n ? UNSUPPORTED_USAGE_REASON\n : undefined,\n };\n};\n"],"names":[],"mappings":";;;AA2FO,MAAM,mBAAA,GAAsB,cAA+C,IAAI;AAC/E,MAAM,oBAAA,GAAuB,cAAgD,IAAI;AACjF,MAAM,sBAAA,GAAyB,cAAkD,IAAI;AACrF,MAAM,iBAAA,GAAoB,cAA6C,IAAI;AAE3E,MAAM,yBAAA,GAA4B,cAA8B,IAAI;AACpE,MAAM,oBAAA,GAAuB,cAAgD,IAAI;AAExF,MAAM,WAAA,GAAc,CAAI,OAAA,EAAkC,IAAA,KAAoB;AAC5E,EAAA,MAAM,KAAA,GAAQ,WAAW,OAAO,CAAA;AAChC,EAAA,IAAI,CAAC,KAAA,EAAO,MAAM,IAAI,KAAA,CAAM,CAAA,EAAG,IAAI,CAAA,qCAAA,CAAuC,CAAA;AAC1E,EAAA,OAAO,KAAA;AACT,CAAA;AAEO,MAAM,eAAA,GAAkB,MAAM,WAAA,CAAY,mBAAA,EAAqB,iBAAiB;AAChF,MAAM,gBAAA,GAAmB,MAAM,WAAA,CAAY,oBAAA,EAAsB,kBAAkB;AACnF,MAAM,kBAAA,GAAqB,MAAM,WAAA,CAAY,sBAAA,EAAwB,oBAAoB;AACzF,MAAM,aAAA,GAAgB,MAAM,WAAA,CAAY,iBAAA,EAAmB,eAAe;AAE1E,MAAM,wBAAwB,MAAM;AACzC,EAAA,MAAM,KAAA,GAAQ,WAAW,yBAAyB,CAAA;AAClD,EAAA,IAAI,KAAA,KAAU,IAAA,EAAM,MAAM,IAAI,MAAM,4DAA4D,CAAA;AAChG,EAAA,OAAO,KAAA;AACT;AACO,MAAM,gBAAA,GAAmB,MAAM,WAAA,CAAY,oBAAA,EAAsB,kBAAkB;AAE1F,MAAM,qBAAA,GAAwB,oDAAA;AAC9B,MAAM,wBAAA,GAA2B,mEAAA;AAU1B,MAAM,uBAAuB,MAAyB;AAC3D,EAAA,MAAM,EAAE,WAAA,EAAY,GAAI,gBAAA,EAAiB;AACzC,EAAA,MAAM,EAAE,cAAA,EAAe,GAAI,eAAA,EAAgB;AAC3C,EAAA,MAAM,WAAA,GAAc,CAAC,cAAA,CAAe,SAAA,IAAa,CAAC,cAAA,CAAe,SAAA;AACjE,EAAA,MAAM,oBAAA,GAAuB,WAAA,GACzB,EAAE,GAAG,aAAa,cAAA,EAAgB,WAAA,CAAY,cAAA,CAAe,MAAA,CAAO,YAAU,CAAC,kBAAA,CAAmB,MAAM,CAAC,GAAE,GAC3G,WAAA;AACJ,EAAA,OAAO;AAAA,IACL,oBAAA;AAAA,IACA,cAAc,CAAC,WAAA,IAAe,CAAC,cAAA,CAAe,SAAA,IAAa,oBAAoB,oBAAoB,CAAA;AAAA,IACnG,qBAAqB,cAAA,CAAe,SAAA,GAChC,wBACA,CAAC,cAAA,CAAe,YACd,wBAAA,GACA;AAAA,GACR;AACF;;;;"}
@@ -7,8 +7,8 @@ const domains_traces_traceQueryFilters = require('../../../../trace-filters-Btyi
7
7
  const domains_traces_components_traceTimeRangeChip = require('../trace-time-range-chip.cjs.js');
8
8
  const domains_traces_components_tracesExplorer_tracesExplorerContext = require('./traces-explorer-context.cjs.js');
9
9
  const domains_traces_components_tracesExplorer_useTracesFilterBar = require('./use-traces-filter-bar.cjs.js');
10
- const filterBar = require('../../../../filter-bar-C6NdZctn.cjs');
11
- require('../../../../filter-bar-chip-DgvuQv6c.cjs');
10
+ const filterBar = require('../../../../filter-bar-CjBb01b6.cjs');
11
+ require('../../../../filter-bar-chip-C_64m7nX.cjs');
12
12
 
13
13
  const TIME_RANGE_PRESETS = [
14
14
  "last-24h",
@@ -3,8 +3,8 @@ import { e as TRACE_FILTER_BAR_OPERATORS } from '../../../../trace-filters-DXW-R
3
3
  import { TraceTimeRangeChip, TRACE_TIME_RANGE_FIELD_ID } from '../trace-time-range-chip.es.js';
4
4
  import { useTracesFilters, useTracesList, useTracesConfig } from './traces-explorer-context.es.js';
5
5
  import { useTracesFilterBarFields, useTracesFilterBar } from './use-traces-filter-bar.es.js';
6
- import { F as FilterBar } from '../../../../filter-bar-DW0fD4bu.js';
7
- import '../../../../filter-bar-chip-DM73lTpx.js';
6
+ import { F as FilterBar } from '../../../../filter-bar-pXSJt2ye.js';
7
+ import '../../../../filter-bar-chip-D2kKMSRA.js';
8
8
 
9
9
  const TIME_RANGE_PRESETS = [
10
10
  "last-24h",
@@ -13,13 +13,14 @@ const TracesListProvider = React.memo(function TracesListProvider2({
13
13
  onSortChange,
14
14
  children
15
15
  }) {
16
- const { withQueryTrace, withRootDuration, isCapabilitiesLoading } = domains_traces_components_tracesExplorer_tracesExplorerContext.useTracesConfig();
16
+ const { withQueryTrace, withRootDuration, withDeltaPolling, isCapabilitiesLoading } = domains_traces_components_tracesExplorer_tracesExplorerContext.useTracesConfig();
17
17
  const { filters, dateFrom, dateTo } = domains_traces_components_tracesExplorer_tracesExplorerContext.useTracesFilters();
18
18
  const list = domains_traces_hooks_useTracesListSource.useTracesListSource({
19
19
  rolling: !dateTo,
20
20
  query: (now) => domains_traces_components_tracesExplorer_tracesExplorerActions.buildTracesQueryRequest({ filters, dateFrom, dateTo, withRootDuration, now }),
21
21
  orderBy: [{ field: "startedAt", direction: sortDirection }],
22
22
  withQueryTrace,
23
+ withDeltaPolling,
23
24
  enabled: !isCapabilitiesLoading,
24
25
  legacyFilters: domains_traces_components_tracesExplorer_tracesExplorerActions.buildTracesLegacyFilters({ filters, dateFrom, dateTo })
25
26
  });
@@ -1 +1 @@
1
- {"version":3,"file":"traces-explorer-list-provider.cjs.js","sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-list-provider.tsx"],"sourcesContent":["import { memo, useMemo } from 'react';\nimport type { ReactNode } from 'react';\nimport { useTracesListSource } from '../../hooks/use-traces-list-source';\nimport { buildTracesLegacyFilters, buildTracesQueryRequest } from './traces-explorer-actions';\nimport type { TracesSortDirection } from './traces-explorer-actions';\nimport {\n TracesListContext,\n TracesListFetchingContext,\n useTracesConfig,\n useTracesFilters,\n} from './traces-explorer-context';\nimport type { TracesListContextValue } from './traces-explorer-context';\n\ntype TracesListProviderProps = {\n sortDirection: TracesSortDirection;\n onSortChange: (direction: TracesSortDirection) => void;\n children: ReactNode;\n};\n\n/**\n * Owns the list query and its poll clock. Its own memoized component so a poll tick re-renders\n * only list consumers, and a selection change doesn't re-run the list query hooks.\n */\nexport const TracesListProvider = memo(function TracesListProvider({\n sortDirection,\n onSortChange,\n children,\n}: TracesListProviderProps) {\n const { withQueryTrace, withRootDuration, isCapabilitiesLoading } = useTracesConfig();\n const { filters, dateFrom, dateTo } = useTracesFilters();\n const list = useTracesListSource({\n rolling: !dateTo,\n query: now => buildTracesQueryRequest({ filters, dateFrom, dateTo, withRootDuration, now }),\n orderBy: [{ field: 'startedAt', direction: sortDirection }],\n withQueryTrace,\n enabled: !isCapabilitiesLoading,\n legacyFilters: buildTracesLegacyFilters({ filters, dateFrom, dateTo }),\n });\n\n const {\n rows,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n error,\n refetch,\n isFetching,\n autoRefetch,\n setAutoRefetch,\n } = list;\n const value = useMemo<TracesListContextValue>(\n () => ({\n rows,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n error,\n refetch,\n autoRefetch,\n setAutoRefetch,\n sortDirection,\n onSortChange,\n }),\n [\n rows,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n error,\n refetch,\n autoRefetch,\n setAutoRefetch,\n sortDirection,\n onSortChange,\n ],\n );\n\n return (\n <TracesListContext.Provider value={value}>\n <TracesListFetchingContext.Provider value={isFetching}>{children}</TracesListFetchingContext.Provider>\n </TracesListContext.Provider>\n );\n});\n"],"names":["memo","TracesListProvider","useTracesConfig","useTracesFilters","useTracesListSource","buildTracesQueryRequest","buildTracesLegacyFilters","useMemo","jsx","TracesListContext","TracesListFetchingContext"],"mappings":";;;;;;;;;;AAuBO,MAAM,kBAAA,GAAqBA,UAAA,CAAK,SAASC,mBAAAA,CAAmB;AAAA,EACjE,aAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAA4B;AAC1B,EAAA,MAAM,EAAE,cAAA,EAAgB,gBAAA,EAAkB,qBAAA,KAA0BC,8EAAA,EAAgB;AACpF,EAAA,MAAM,EAAE,OAAA,EAAS,QAAA,EAAU,MAAA,KAAWC,+EAAA,EAAiB;AACvD,EAAA,MAAM,OAAOC,4DAAA,CAAoB;AAAA,IAC/B,SAAS,CAAC,MAAA;AAAA,IACV,KAAA,EAAO,SAAOC,sFAAA,CAAwB,EAAE,SAAS,QAAA,EAAU,MAAA,EAAQ,gBAAA,EAAkB,GAAA,EAAK,CAAA;AAAA,IAC1F,SAAS,CAAC,EAAE,OAAO,WAAA,EAAa,SAAA,EAAW,eAAe,CAAA;AAAA,IAC1D,cAAA;AAAA,IACA,SAAS,CAAC,qBAAA;AAAA,IACV,eAAeC,uFAAA,CAAyB,EAAE,OAAA,EAAS,QAAA,EAAU,QAAQ;AAAA,GACtE,CAAA;AAED,EAAA,MAAM;AAAA,IACJ,IAAA;AAAA,IACA,SAAA;AAAA,IACA,kBAAA;AAAA,IACA,WAAA;AAAA,IACA,mBAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACF,GAAI,IAAA;AACJ,EAAA,MAAM,KAAA,GAAQC,aAAA;AAAA,IACZ,OAAO;AAAA,MACL,IAAA;AAAA,MACA,SAAA;AAAA,MACA,kBAAA;AAAA,MACA,WAAA;AAAA,MACA,mBAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,IACA;AAAA,MACE,IAAA;AAAA,MACA,SAAA;AAAA,MACA,kBAAA;AAAA,MACA,WAAA;AAAA,MACA,mBAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,uBACEC,cAAA,CAACC,gFAAA,CAAkB,QAAA,EAAlB,EAA2B,KAAA,EAC1B,QAAA,kBAAAD,cAAA,CAACE,wFAAA,CAA0B,QAAA,EAA1B,EAAmC,KAAA,EAAO,UAAA,EAAa,QAAA,EAAS,CAAA,EACnE,CAAA;AAEJ,CAAC;;;;"}
1
+ {"version":3,"file":"traces-explorer-list-provider.cjs.js","sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-list-provider.tsx"],"sourcesContent":["import { memo, useMemo } from 'react';\nimport type { ReactNode } from 'react';\nimport { useTracesListSource } from '../../hooks/use-traces-list-source';\nimport { buildTracesLegacyFilters, buildTracesQueryRequest } from './traces-explorer-actions';\nimport type { TracesSortDirection } from './traces-explorer-actions';\nimport {\n TracesListContext,\n TracesListFetchingContext,\n useTracesConfig,\n useTracesFilters,\n} from './traces-explorer-context';\nimport type { TracesListContextValue } from './traces-explorer-context';\n\ntype TracesListProviderProps = {\n sortDirection: TracesSortDirection;\n onSortChange: (direction: TracesSortDirection) => void;\n children: ReactNode;\n};\n\n/**\n * Owns the list query and its poll clock. Its own memoized component so a poll tick re-renders\n * only list consumers, and a selection change doesn't re-run the list query hooks.\n */\nexport const TracesListProvider = memo(function TracesListProvider({\n sortDirection,\n onSortChange,\n children,\n}: TracesListProviderProps) {\n const { withQueryTrace, withRootDuration, withDeltaPolling, isCapabilitiesLoading } = useTracesConfig();\n const { filters, dateFrom, dateTo } = useTracesFilters();\n const list = useTracesListSource({\n rolling: !dateTo,\n query: now => buildTracesQueryRequest({ filters, dateFrom, dateTo, withRootDuration, now }),\n orderBy: [{ field: 'startedAt', direction: sortDirection }],\n withQueryTrace,\n withDeltaPolling,\n enabled: !isCapabilitiesLoading,\n legacyFilters: buildTracesLegacyFilters({ filters, dateFrom, dateTo }),\n });\n\n const {\n rows,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n error,\n refetch,\n isFetching,\n autoRefetch,\n setAutoRefetch,\n } = list;\n const value = useMemo<TracesListContextValue>(\n () => ({\n rows,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n error,\n refetch,\n autoRefetch,\n setAutoRefetch,\n sortDirection,\n onSortChange,\n }),\n [\n rows,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n error,\n refetch,\n autoRefetch,\n setAutoRefetch,\n sortDirection,\n onSortChange,\n ],\n );\n\n return (\n <TracesListContext.Provider value={value}>\n <TracesListFetchingContext.Provider value={isFetching}>{children}</TracesListFetchingContext.Provider>\n </TracesListContext.Provider>\n );\n});\n"],"names":["memo","TracesListProvider","useTracesConfig","useTracesFilters","useTracesListSource","buildTracesQueryRequest","buildTracesLegacyFilters","useMemo","jsx","TracesListContext","TracesListFetchingContext"],"mappings":";;;;;;;;;;AAuBO,MAAM,kBAAA,GAAqBA,UAAA,CAAK,SAASC,mBAAAA,CAAmB;AAAA,EACjE,aAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAA4B;AAC1B,EAAA,MAAM,EAAE,cAAA,EAAgB,gBAAA,EAAkB,gBAAA,EAAkB,qBAAA,KAA0BC,8EAAA,EAAgB;AACtG,EAAA,MAAM,EAAE,OAAA,EAAS,QAAA,EAAU,MAAA,KAAWC,+EAAA,EAAiB;AACvD,EAAA,MAAM,OAAOC,4DAAA,CAAoB;AAAA,IAC/B,SAAS,CAAC,MAAA;AAAA,IACV,KAAA,EAAO,SAAOC,sFAAA,CAAwB,EAAE,SAAS,QAAA,EAAU,MAAA,EAAQ,gBAAA,EAAkB,GAAA,EAAK,CAAA;AAAA,IAC1F,SAAS,CAAC,EAAE,OAAO,WAAA,EAAa,SAAA,EAAW,eAAe,CAAA;AAAA,IAC1D,cAAA;AAAA,IACA,gBAAA;AAAA,IACA,SAAS,CAAC,qBAAA;AAAA,IACV,eAAeC,uFAAA,CAAyB,EAAE,OAAA,EAAS,QAAA,EAAU,QAAQ;AAAA,GACtE,CAAA;AAED,EAAA,MAAM;AAAA,IACJ,IAAA;AAAA,IACA,SAAA;AAAA,IACA,kBAAA;AAAA,IACA,WAAA;AAAA,IACA,mBAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACF,GAAI,IAAA;AACJ,EAAA,MAAM,KAAA,GAAQC,aAAA;AAAA,IACZ,OAAO;AAAA,MACL,IAAA;AAAA,MACA,SAAA;AAAA,MACA,kBAAA;AAAA,MACA,WAAA;AAAA,MACA,mBAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,IACA;AAAA,MACE,IAAA;AAAA,MACA,SAAA;AAAA,MACA,kBAAA;AAAA,MACA,WAAA;AAAA,MACA,mBAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,uBACEC,cAAA,CAACC,gFAAA,CAAkB,QAAA,EAAlB,EAA2B,KAAA,EAC1B,QAAA,kBAAAD,cAAA,CAACE,wFAAA,CAA0B,QAAA,EAA1B,EAAmC,KAAA,EAAO,UAAA,EAAa,QAAA,EAAS,CAAA,EACnE,CAAA;AAEJ,CAAC;;;;"}
@@ -9,13 +9,14 @@ const TracesListProvider = memo(function TracesListProvider2({
9
9
  onSortChange,
10
10
  children
11
11
  }) {
12
- const { withQueryTrace, withRootDuration, isCapabilitiesLoading } = useTracesConfig();
12
+ const { withQueryTrace, withRootDuration, withDeltaPolling, isCapabilitiesLoading } = useTracesConfig();
13
13
  const { filters, dateFrom, dateTo } = useTracesFilters();
14
14
  const list = useTracesListSource({
15
15
  rolling: !dateTo,
16
16
  query: (now) => buildTracesQueryRequest({ filters, dateFrom, dateTo, withRootDuration, now }),
17
17
  orderBy: [{ field: "startedAt", direction: sortDirection }],
18
18
  withQueryTrace,
19
+ withDeltaPolling,
19
20
  enabled: !isCapabilitiesLoading,
20
21
  legacyFilters: buildTracesLegacyFilters({ filters, dateFrom, dateTo })
21
22
  });
@@ -1 +1 @@
1
- {"version":3,"file":"traces-explorer-list-provider.es.js","sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-list-provider.tsx"],"sourcesContent":["import { memo, useMemo } from 'react';\nimport type { ReactNode } from 'react';\nimport { useTracesListSource } from '../../hooks/use-traces-list-source';\nimport { buildTracesLegacyFilters, buildTracesQueryRequest } from './traces-explorer-actions';\nimport type { TracesSortDirection } from './traces-explorer-actions';\nimport {\n TracesListContext,\n TracesListFetchingContext,\n useTracesConfig,\n useTracesFilters,\n} from './traces-explorer-context';\nimport type { TracesListContextValue } from './traces-explorer-context';\n\ntype TracesListProviderProps = {\n sortDirection: TracesSortDirection;\n onSortChange: (direction: TracesSortDirection) => void;\n children: ReactNode;\n};\n\n/**\n * Owns the list query and its poll clock. Its own memoized component so a poll tick re-renders\n * only list consumers, and a selection change doesn't re-run the list query hooks.\n */\nexport const TracesListProvider = memo(function TracesListProvider({\n sortDirection,\n onSortChange,\n children,\n}: TracesListProviderProps) {\n const { withQueryTrace, withRootDuration, isCapabilitiesLoading } = useTracesConfig();\n const { filters, dateFrom, dateTo } = useTracesFilters();\n const list = useTracesListSource({\n rolling: !dateTo,\n query: now => buildTracesQueryRequest({ filters, dateFrom, dateTo, withRootDuration, now }),\n orderBy: [{ field: 'startedAt', direction: sortDirection }],\n withQueryTrace,\n enabled: !isCapabilitiesLoading,\n legacyFilters: buildTracesLegacyFilters({ filters, dateFrom, dateTo }),\n });\n\n const {\n rows,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n error,\n refetch,\n isFetching,\n autoRefetch,\n setAutoRefetch,\n } = list;\n const value = useMemo<TracesListContextValue>(\n () => ({\n rows,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n error,\n refetch,\n autoRefetch,\n setAutoRefetch,\n sortDirection,\n onSortChange,\n }),\n [\n rows,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n error,\n refetch,\n autoRefetch,\n setAutoRefetch,\n sortDirection,\n onSortChange,\n ],\n );\n\n return (\n <TracesListContext.Provider value={value}>\n <TracesListFetchingContext.Provider value={isFetching}>{children}</TracesListFetchingContext.Provider>\n </TracesListContext.Provider>\n );\n});\n"],"names":["TracesListProvider"],"mappings":";;;;;;AAuBO,MAAM,kBAAA,GAAqB,IAAA,CAAK,SAASA,mBAAAA,CAAmB;AAAA,EACjE,aAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAA4B;AAC1B,EAAA,MAAM,EAAE,cAAA,EAAgB,gBAAA,EAAkB,qBAAA,KAA0B,eAAA,EAAgB;AACpF,EAAA,MAAM,EAAE,OAAA,EAAS,QAAA,EAAU,MAAA,KAAW,gBAAA,EAAiB;AACvD,EAAA,MAAM,OAAO,mBAAA,CAAoB;AAAA,IAC/B,SAAS,CAAC,MAAA;AAAA,IACV,KAAA,EAAO,SAAO,uBAAA,CAAwB,EAAE,SAAS,QAAA,EAAU,MAAA,EAAQ,gBAAA,EAAkB,GAAA,EAAK,CAAA;AAAA,IAC1F,SAAS,CAAC,EAAE,OAAO,WAAA,EAAa,SAAA,EAAW,eAAe,CAAA;AAAA,IAC1D,cAAA;AAAA,IACA,SAAS,CAAC,qBAAA;AAAA,IACV,eAAe,wBAAA,CAAyB,EAAE,OAAA,EAAS,QAAA,EAAU,QAAQ;AAAA,GACtE,CAAA;AAED,EAAA,MAAM;AAAA,IACJ,IAAA;AAAA,IACA,SAAA;AAAA,IACA,kBAAA;AAAA,IACA,WAAA;AAAA,IACA,mBAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACF,GAAI,IAAA;AACJ,EAAA,MAAM,KAAA,GAAQ,OAAA;AAAA,IACZ,OAAO;AAAA,MACL,IAAA;AAAA,MACA,SAAA;AAAA,MACA,kBAAA;AAAA,MACA,WAAA;AAAA,MACA,mBAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,IACA;AAAA,MACE,IAAA;AAAA,MACA,SAAA;AAAA,MACA,kBAAA;AAAA,MACA,WAAA;AAAA,MACA,mBAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,uBACE,GAAA,CAAC,iBAAA,CAAkB,QAAA,EAAlB,EAA2B,KAAA,EAC1B,QAAA,kBAAA,GAAA,CAAC,yBAAA,CAA0B,QAAA,EAA1B,EAAmC,KAAA,EAAO,UAAA,EAAa,QAAA,EAAS,CAAA,EACnE,CAAA;AAEJ,CAAC;;;;"}
1
+ {"version":3,"file":"traces-explorer-list-provider.es.js","sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-list-provider.tsx"],"sourcesContent":["import { memo, useMemo } from 'react';\nimport type { ReactNode } from 'react';\nimport { useTracesListSource } from '../../hooks/use-traces-list-source';\nimport { buildTracesLegacyFilters, buildTracesQueryRequest } from './traces-explorer-actions';\nimport type { TracesSortDirection } from './traces-explorer-actions';\nimport {\n TracesListContext,\n TracesListFetchingContext,\n useTracesConfig,\n useTracesFilters,\n} from './traces-explorer-context';\nimport type { TracesListContextValue } from './traces-explorer-context';\n\ntype TracesListProviderProps = {\n sortDirection: TracesSortDirection;\n onSortChange: (direction: TracesSortDirection) => void;\n children: ReactNode;\n};\n\n/**\n * Owns the list query and its poll clock. Its own memoized component so a poll tick re-renders\n * only list consumers, and a selection change doesn't re-run the list query hooks.\n */\nexport const TracesListProvider = memo(function TracesListProvider({\n sortDirection,\n onSortChange,\n children,\n}: TracesListProviderProps) {\n const { withQueryTrace, withRootDuration, withDeltaPolling, isCapabilitiesLoading } = useTracesConfig();\n const { filters, dateFrom, dateTo } = useTracesFilters();\n const list = useTracesListSource({\n rolling: !dateTo,\n query: now => buildTracesQueryRequest({ filters, dateFrom, dateTo, withRootDuration, now }),\n orderBy: [{ field: 'startedAt', direction: sortDirection }],\n withQueryTrace,\n withDeltaPolling,\n enabled: !isCapabilitiesLoading,\n legacyFilters: buildTracesLegacyFilters({ filters, dateFrom, dateTo }),\n });\n\n const {\n rows,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n error,\n refetch,\n isFetching,\n autoRefetch,\n setAutoRefetch,\n } = list;\n const value = useMemo<TracesListContextValue>(\n () => ({\n rows,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n error,\n refetch,\n autoRefetch,\n setAutoRefetch,\n sortDirection,\n onSortChange,\n }),\n [\n rows,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n setEndOfListElement,\n error,\n refetch,\n autoRefetch,\n setAutoRefetch,\n sortDirection,\n onSortChange,\n ],\n );\n\n return (\n <TracesListContext.Provider value={value}>\n <TracesListFetchingContext.Provider value={isFetching}>{children}</TracesListFetchingContext.Provider>\n </TracesListContext.Provider>\n );\n});\n"],"names":["TracesListProvider"],"mappings":";;;;;;AAuBO,MAAM,kBAAA,GAAqB,IAAA,CAAK,SAASA,mBAAAA,CAAmB;AAAA,EACjE,aAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAA4B;AAC1B,EAAA,MAAM,EAAE,cAAA,EAAgB,gBAAA,EAAkB,gBAAA,EAAkB,qBAAA,KAA0B,eAAA,EAAgB;AACtG,EAAA,MAAM,EAAE,OAAA,EAAS,QAAA,EAAU,MAAA,KAAW,gBAAA,EAAiB;AACvD,EAAA,MAAM,OAAO,mBAAA,CAAoB;AAAA,IAC/B,SAAS,CAAC,MAAA;AAAA,IACV,KAAA,EAAO,SAAO,uBAAA,CAAwB,EAAE,SAAS,QAAA,EAAU,MAAA,EAAQ,gBAAA,EAAkB,GAAA,EAAK,CAAA;AAAA,IAC1F,SAAS,CAAC,EAAE,OAAO,WAAA,EAAa,SAAA,EAAW,eAAe,CAAA;AAAA,IAC1D,cAAA;AAAA,IACA,gBAAA;AAAA,IACA,SAAS,CAAC,qBAAA;AAAA,IACV,eAAe,wBAAA,CAAyB,EAAE,OAAA,EAAS,QAAA,EAAU,QAAQ;AAAA,GACtE,CAAA;AAED,EAAA,MAAM;AAAA,IACJ,IAAA;AAAA,IACA,SAAA;AAAA,IACA,kBAAA;AAAA,IACA,WAAA;AAAA,IACA,mBAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACF,GAAI,IAAA;AACJ,EAAA,MAAM,KAAA,GAAQ,OAAA;AAAA,IACZ,OAAO;AAAA,MACL,IAAA;AAAA,MACA,SAAA;AAAA,MACA,kBAAA;AAAA,MACA,WAAA;AAAA,MACA,mBAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,IACA;AAAA,MACE,IAAA;AAAA,MACA,SAAA;AAAA,MACA,kBAAA;AAAA,MACA,WAAA;AAAA,MACA,mBAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,uBACE,GAAA,CAAC,iBAAA,CAAkB,QAAA,EAAlB,EAA2B,KAAA,EAC1B,QAAA,kBAAA,GAAA,CAAC,yBAAA,CAA0B,QAAA,EAA1B,EAAmC,KAAA,EAAO,UAAA,EAAa,QAAA,EAAS,CAAA,EACnE,CAAA;AAEJ,CAAC;;;;"}