@mastra/playground-ui 56.0.0 → 57.0.0-alpha.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 (425) hide show
  1. package/dist/{EmptyState-CdRjFB06.cjs → EmptyState-0MgNiP40.cjs} +11 -5
  2. package/dist/EmptyState-0MgNiP40.cjs.map +1 -0
  3. package/dist/{EmptyState-UWXhBp5U.js → EmptyState-CiZVWvpH.js} +11 -5
  4. package/dist/EmptyState-CiZVWvpH.js.map +1 -0
  5. package/dist/ErrorState-C7-4A-rB.cjs +21 -0
  6. package/dist/ErrorState-C7-4A-rB.cjs.map +1 -0
  7. package/dist/ErrorState-l5gg5Nzw.js +19 -0
  8. package/dist/ErrorState-l5gg5Nzw.js.map +1 -0
  9. package/dist/Header-BVnFQlzE.js +31 -0
  10. package/dist/Header-BVnFQlzE.js.map +1 -0
  11. package/dist/Header-CGjhJ0nQ.cjs +36 -0
  12. package/dist/Header-CGjhJ0nQ.cjs.map +1 -0
  13. package/dist/{PermissionDenied-Dz5qXpQj.cjs → PermissionDenied-CwLIzjpC.cjs} +11 -6
  14. package/dist/PermissionDenied-CwLIzjpC.cjs.map +1 -0
  15. package/dist/{PermissionDenied-B6TSGolC.js → PermissionDenied-DPM04x0a.js} +11 -6
  16. package/dist/PermissionDenied-DPM04x0a.js.map +1 -0
  17. package/dist/{SessionExpired-CF0BGNo_.cjs → SessionExpired-07Lz91i3.cjs} +4 -5
  18. package/dist/SessionExpired-07Lz91i3.cjs.map +1 -0
  19. package/dist/{SessionExpired-Bq5LcsDu.js → SessionExpired-CnJ8zr5Y.js} +4 -5
  20. package/dist/SessionExpired-CnJ8zr5Y.js.map +1 -0
  21. package/dist/ask-user-B_O3GEjY.cjs +216 -0
  22. package/dist/ask-user-B_O3GEjY.cjs.map +1 -0
  23. package/dist/ask-user-gT9rODOe.js +206 -0
  24. package/dist/ask-user-gT9rODOe.js.map +1 -0
  25. package/dist/{combobox-BWM3VH-n.cjs → combobox-BTZyTiyL.cjs} +3 -4
  26. package/dist/{combobox-BWM3VH-n.cjs.map → combobox-BTZyTiyL.cjs.map} +1 -1
  27. package/dist/{combobox-D7xJFZuO.js → combobox-B_gv8nUN.js} +2 -3
  28. package/dist/{combobox-D7xJFZuO.js.map → combobox-B_gv8nUN.js.map} +1 -1
  29. package/dist/components/ActionRow.cjs.js +38 -0
  30. package/dist/components/ActionRow.cjs.js.map +1 -0
  31. package/dist/components/ActionRow.d.ts +2 -0
  32. package/dist/components/ActionRow.es.js +34 -0
  33. package/dist/components/ActionRow.es.js.map +1 -0
  34. package/dist/components/Combobox.cjs.js +1 -1
  35. package/dist/components/Combobox.es.js +1 -1
  36. package/dist/components/Comment.cjs.js +2 -3
  37. package/dist/components/Comment.cjs.js.map +1 -1
  38. package/dist/components/Comment.es.js +1 -2
  39. package/dist/components/Comment.es.js.map +1 -1
  40. package/dist/components/DataCodeSection.cjs.js +1 -1
  41. package/dist/components/DataCodeSection.es.js +1 -1
  42. package/dist/components/DataDetailsPanel.cjs.js +2 -2
  43. package/dist/components/DataDetailsPanel.cjs.js.map +1 -1
  44. package/dist/components/DataDetailsPanel.es.js +2 -2
  45. package/dist/components/DataDetailsPanel.es.js.map +1 -1
  46. package/dist/components/DataPanel.cjs.js +1 -1
  47. package/dist/components/DataPanel.es.js +1 -1
  48. package/dist/components/DateTimePicker.cjs.js +1 -1
  49. package/dist/components/DateTimePicker.es.js +1 -1
  50. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  51. package/dist/components/DateTimeRangePicker.es.js +1 -1
  52. package/dist/components/EmptyState.cjs.js +1 -1
  53. package/dist/components/EmptyState.es.js +1 -1
  54. package/dist/components/EnvironmentVariablesEditor.cjs.js +7 -8
  55. package/dist/components/EnvironmentVariablesEditor.cjs.js.map +1 -1
  56. package/dist/components/EnvironmentVariablesEditor.es.js +1 -2
  57. package/dist/components/EnvironmentVariablesEditor.es.js.map +1 -1
  58. package/dist/components/ErrorState.cjs.js +1 -1
  59. package/dist/components/ErrorState.es.js +1 -1
  60. package/dist/components/FilterBar.cjs.js +490 -38
  61. package/dist/components/FilterBar.cjs.js.map +1 -1
  62. package/dist/components/FilterBar.es.js +490 -42
  63. package/dist/components/FilterBar.es.js.map +1 -1
  64. package/dist/components/FormFieldBlocks.cjs.js +11 -12
  65. package/dist/components/FormFieldBlocks.cjs.js.map +1 -1
  66. package/dist/components/FormFieldBlocks.es.js +4 -5
  67. package/dist/components/FormFieldBlocks.es.js.map +1 -1
  68. package/dist/components/Header.cjs.js +6 -31
  69. package/dist/components/Header.cjs.js.map +1 -1
  70. package/dist/components/Header.es.js +1 -30
  71. package/dist/components/Header.es.js.map +1 -1
  72. package/dist/components/IntegrationDialog.cjs.js +1 -1
  73. package/dist/components/IntegrationDialog.es.js +1 -1
  74. package/dist/components/JSONSchemaForm.cjs.js +2 -2
  75. package/dist/components/JSONSchemaForm.es.js +2 -2
  76. package/dist/components/ListSearch.cjs.js +1 -1
  77. package/dist/components/ListSearch.es.js +1 -1
  78. package/dist/components/LogsDataList.cjs.js +2 -0
  79. package/dist/components/LogsDataList.cjs.js.map +1 -1
  80. package/dist/components/LogsDataList.es.js +2 -0
  81. package/dist/components/LogsDataList.es.js.map +1 -1
  82. package/dist/components/Message.cjs.js +1 -1
  83. package/dist/components/Message.es.js +2 -2
  84. package/dist/components/MetricsCard.cjs.js +1 -1
  85. package/dist/components/MetricsCard.es.js +1 -1
  86. package/dist/components/MetricsKpiCard.cjs.js +1 -1
  87. package/dist/components/MetricsKpiCard.es.js +1 -1
  88. package/dist/components/PageLayout.cjs.js +30 -8
  89. package/dist/components/PageLayout.cjs.js.map +1 -1
  90. package/dist/components/PageLayout.es.js +32 -3
  91. package/dist/components/PageLayout.es.js.map +1 -1
  92. package/dist/components/PermissionDenied.cjs.js +1 -1
  93. package/dist/components/PermissionDenied.es.js +1 -1
  94. package/dist/components/PropertyFilter.cjs.js +2 -2
  95. package/dist/components/PropertyFilter.es.js +3 -3
  96. package/dist/components/RadioGroup.cjs.js +3 -56
  97. package/dist/components/RadioGroup.cjs.js.map +1 -1
  98. package/dist/components/RadioGroup.es.js +1 -39
  99. package/dist/components/RadioGroup.es.js.map +1 -1
  100. package/dist/components/SessionExpired.cjs.js +1 -1
  101. package/dist/components/SessionExpired.es.js +1 -1
  102. package/dist/components/SideDialog.cjs.js +10 -2
  103. package/dist/components/SideDialog.cjs.js.map +1 -1
  104. package/dist/components/SideDialog.es.js +10 -2
  105. package/dist/components/SideDialog.es.js.map +1 -1
  106. package/dist/components/Spinner.cjs.js +1 -1
  107. package/dist/components/Spinner.es.js +1 -1
  108. package/dist/components/Steps.cjs.js +1 -1
  109. package/dist/components/Steps.es.js +1 -1
  110. package/dist/components/Workflow.cjs.js +6 -6
  111. package/dist/components/Workflow.cjs.js.map +1 -1
  112. package/dist/components/Workflow.es.js +6 -6
  113. package/dist/components/Workflow.es.js.map +1 -1
  114. package/dist/components/ai/ask-user.cjs.js +4 -3
  115. package/dist/components/ai/ask-user.cjs.js.map +1 -1
  116. package/dist/components/ai/ask-user.es.js +1 -1
  117. package/dist/components/ai/tool-call.cjs.js +1 -1
  118. package/dist/components/ai/tool-call.es.js +2 -2
  119. package/dist/{data-code-section-qujvEc6j.cjs → data-code-section-Dpd2hzmU.cjs} +4 -4
  120. package/dist/{data-code-section-qujvEc6j.cjs.map → data-code-section-Dpd2hzmU.cjs.map} +1 -1
  121. package/dist/{data-code-section-DKz9Okaz.js → data-code-section-O-DRRO6N.js} +4 -4
  122. package/dist/{data-code-section-DKz9Okaz.js.map → data-code-section-O-DRRO6N.js.map} +1 -1
  123. package/dist/{data-panel-CWjgS1Gh.js → data-panel-CDJMMCvz.js} +3 -3
  124. package/dist/{data-panel-CWjgS1Gh.js.map → data-panel-CDJMMCvz.js.map} +1 -1
  125. package/dist/{data-panel-CWZJKBeW.cjs → data-panel-DNPcL38C.cjs} +3 -3
  126. package/dist/{data-panel-CWZJKBeW.cjs.map → data-panel-DNPcL38C.cjs.map} +1 -1
  127. package/dist/{date-time-range-picker-BcjLbkGu.js → date-time-range-picker-B-C-PPI4.js} +2 -3
  128. package/dist/{date-time-range-picker-BcjLbkGu.js.map → date-time-range-picker-B-C-PPI4.js.map} +1 -1
  129. package/dist/{date-time-range-picker-C6hjZswK.cjs → date-time-range-picker-D_mHYCx_.cjs} +3 -4
  130. package/dist/{date-time-range-picker-C6hjZswK.cjs.map → date-time-range-picker-D_mHYCx_.cjs.map} +1 -1
  131. package/dist/domains/chat/components/badge-wrapper.cjs.js +1 -1
  132. package/dist/domains/chat/components/badge-wrapper.es.js +1 -1
  133. package/dist/domains/chat/components/loading-badge.cjs.js +1 -1
  134. package/dist/domains/chat/components/loading-badge.es.js +1 -1
  135. package/dist/domains/chat/messages/reasoning.cjs.js +1 -1
  136. package/dist/domains/chat/messages/reasoning.cjs.js.map +1 -1
  137. package/dist/domains/chat/messages/reasoning.es.js +1 -1
  138. package/dist/domains/chat/messages/reasoning.es.js.map +1 -1
  139. package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +2 -2
  140. package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js.map +1 -1
  141. package/dist/domains/chat/tools/badges/ask-user-badge.es.js +2 -2
  142. package/dist/domains/chat/tools/badges/ask-user-badge.es.js.map +1 -1
  143. package/dist/domains/logs/components/logs-error-content.cjs.js +4 -7
  144. package/dist/domains/logs/components/logs-error-content.cjs.js.map +1 -1
  145. package/dist/domains/logs/components/logs-error-content.es.js +4 -7
  146. package/dist/domains/logs/components/logs-error-content.es.js.map +1 -1
  147. package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
  148. package/dist/domains/logs/components/logs-toolbar.cjs.js.map +1 -1
  149. package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
  150. package/dist/domains/logs/components/logs-toolbar.es.js.map +1 -1
  151. package/dist/domains/logs/components/no-logs-info.cjs.js +5 -5
  152. package/dist/domains/logs/components/no-logs-info.cjs.js.map +1 -1
  153. package/dist/domains/logs/components/no-logs-info.es.js +6 -6
  154. package/dist/domains/logs/components/no-logs-info.es.js.map +1 -1
  155. package/dist/domains/memory/components/flame-graph.cjs.js +6 -6
  156. package/dist/domains/memory/components/flame-graph.cjs.js.map +1 -1
  157. package/dist/domains/memory/components/flame-graph.es.js +6 -6
  158. package/dist/domains/memory/components/flame-graph.es.js.map +1 -1
  159. package/dist/domains/memory/components/observation-detail-view.cjs.js +10 -11
  160. package/dist/domains/memory/components/observation-detail-view.cjs.js.map +1 -1
  161. package/dist/domains/memory/components/observation-detail-view.es.js +10 -11
  162. package/dist/domains/memory/components/observation-detail-view.es.js.map +1 -1
  163. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  164. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  165. package/dist/domains/metrics/components/kpi-card-view.cjs.js +1 -1
  166. package/dist/domains/metrics/components/kpi-card-view.es.js +1 -1
  167. package/dist/domains/metrics/components/latency-card-view.cjs.js +1 -1
  168. package/dist/domains/metrics/components/latency-card-view.es.js +1 -1
  169. package/dist/domains/metrics/components/memory-card-view.cjs.js +1 -1
  170. package/dist/domains/metrics/components/memory-card-view.es.js +1 -1
  171. package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js +1 -1
  172. package/dist/domains/metrics/components/model-usage-cost-card-view.es.js +1 -1
  173. package/dist/domains/metrics/components/scores-card-view.cjs.js +1 -1
  174. package/dist/domains/metrics/components/scores-card-view.es.js +1 -1
  175. package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js +1 -1
  176. package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js +1 -1
  177. package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js +1 -1
  178. package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js +1 -1
  179. package/dist/domains/metrics/components/traces-volume-card-view.cjs.js +1 -1
  180. package/dist/domains/metrics/components/traces-volume-card-view.es.js +1 -1
  181. package/dist/domains/traces/components/no-traces-info.cjs.js +2 -3
  182. package/dist/domains/traces/components/no-traces-info.cjs.js.map +1 -1
  183. package/dist/domains/traces/components/no-traces-info.es.js +2 -3
  184. package/dist/domains/traces/components/no-traces-info.es.js.map +1 -1
  185. package/dist/domains/traces/components/span-data-panel-view.cjs.js +1 -1
  186. package/dist/domains/traces/components/span-data-panel-view.es.js +1 -1
  187. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +1 -1
  188. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +1 -1
  189. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
  190. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
  191. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +1 -1
  192. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +1 -1
  193. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +2 -2
  194. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +2 -2
  195. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +1 -1
  196. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +1 -1
  197. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +2 -2
  198. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +2 -2
  199. package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
  200. package/dist/domains/traces/components/span-summary-description.es.js +1 -1
  201. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
  202. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
  203. package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +1 -1
  204. package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +1 -1
  205. package/dist/domains/traces/components/trace-columns-menu.cjs.js +4 -4
  206. package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
  207. package/dist/domains/traces/components/trace-columns-menu.es.js +2 -2
  208. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +2 -2
  209. package/dist/domains/traces/components/trace-data-panel-view.es.js +2 -2
  210. package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
  211. package/dist/domains/traces/components/trace-id-button.es.js +1 -1
  212. package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
  213. package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
  214. package/dist/domains/traces/components/trace-time-range-chip.cjs.js +2 -2
  215. package/dist/domains/traces/components/trace-time-range-chip.es.js +2 -2
  216. package/dist/domains/traces/components/traces-error-content.cjs.js +3 -3
  217. package/dist/domains/traces/components/traces-error-content.cjs.js.map +1 -1
  218. package/dist/domains/traces/components/traces-error-content.es.js +3 -3
  219. package/dist/domains/traces/components/traces-error-content.es.js.map +1 -1
  220. package/dist/domains/traces/components/traces-page-skeleton.cjs.js +2 -0
  221. package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
  222. package/dist/domains/traces/components/traces-page-skeleton.es.js +2 -0
  223. package/dist/domains/traces/components/traces-page-skeleton.es.js.map +1 -1
  224. package/dist/domains/traces/hooks/use-trace-url-state.cjs.js +4 -2
  225. package/dist/domains/traces/hooks/use-trace-url-state.cjs.js.map +1 -1
  226. package/dist/domains/traces/hooks/use-trace-url-state.es.js +5 -3
  227. package/dist/domains/traces/hooks/use-trace-url-state.es.js.map +1 -1
  228. package/dist/domains/traces/trace-filters.cjs.js +92 -11
  229. package/dist/domains/traces/trace-filters.cjs.js.map +1 -1
  230. package/dist/domains/traces/trace-filters.es.js +87 -13
  231. package/dist/domains/traces/trace-filters.es.js.map +1 -1
  232. package/dist/domains/traces/trace-query-filters.cjs.js +76 -45
  233. package/dist/domains/traces/trace-query-filters.cjs.js.map +1 -1
  234. package/dist/domains/traces/trace-query-filters.es.js +76 -46
  235. package/dist/domains/traces/trace-query-filters.es.js.map +1 -1
  236. package/dist/domains/traces.cjs.js +7 -0
  237. package/dist/domains/traces.cjs.js.map +1 -1
  238. package/dist/domains/traces.es.js +2 -2
  239. package/dist/ee/signals/components/entity-index-list.cjs.js +2 -0
  240. package/dist/ee/signals/components/entity-index-list.cjs.js.map +1 -1
  241. package/dist/ee/signals/components/entity-index-list.es.js +2 -0
  242. package/dist/ee/signals/components/entity-index-list.es.js.map +1 -1
  243. package/dist/ee/signals/components/trace-intelligence-entity-detail.cjs.js +5 -7
  244. package/dist/ee/signals/components/trace-intelligence-entity-detail.cjs.js.map +1 -1
  245. package/dist/ee/signals/components/trace-intelligence-entity-detail.es.js +5 -7
  246. package/dist/ee/signals/components/trace-intelligence-entity-detail.es.js.map +1 -1
  247. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +11 -13
  248. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js.map +1 -1
  249. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +12 -14
  250. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js.map +1 -1
  251. package/dist/ee/signals/sankey-signals.cjs.js +2 -2
  252. package/dist/ee/signals/sankey-signals.cjs.js.map +1 -1
  253. package/dist/ee/signals/sankey-signals.es.js +2 -2
  254. package/dist/ee/signals/sankey-signals.es.js.map +1 -1
  255. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +10 -11
  256. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js.map +1 -1
  257. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +3 -4
  258. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js.map +1 -1
  259. package/dist/ee/topics/components/topics-layout.cjs.js +1 -1
  260. package/dist/ee/topics/components/topics-layout.cjs.js.map +1 -1
  261. package/dist/ee/topics/components/topics-layout.es.js +1 -1
  262. package/dist/ee/topics/components/topics-layout.es.js.map +1 -1
  263. package/dist/{field-block-DWkbNcsV.js → field-error-id-BLxISyNV.js} +4 -2
  264. package/dist/field-error-id-BLxISyNV.js.map +1 -0
  265. package/dist/{field-block-Dy1IaWbv.cjs → field-error-id-CXi0XkjZ.cjs} +4 -1
  266. package/dist/field-error-id-CXi0XkjZ.cjs.map +1 -0
  267. package/dist/{filter-bar-chip-BxI0NgEz.cjs → filter-bar-chip-D-IRgccJ.cjs} +296 -65
  268. package/dist/filter-bar-chip-D-IRgccJ.cjs.map +1 -0
  269. package/dist/{filter-bar-chip-C-JxWUU8.js → filter-bar-chip-luoMVy8-.js} +293 -67
  270. package/dist/filter-bar-chip-luoMVy8-.js.map +1 -0
  271. package/dist/filter-bar-chip.css +33 -1
  272. package/dist/layout/tabbed-container.cjs.js +2 -2
  273. package/dist/layout/tabbed-container.es.js +2 -2
  274. package/dist/{list-search-vyxsZMAK.cjs → list-search-BEDvqI5f.cjs} +2 -2
  275. package/dist/{list-search-vyxsZMAK.cjs.map → list-search-BEDvqI5f.cjs.map} +1 -1
  276. package/dist/{list-search-BTW0Neuc.js → list-search-BcOawrgy.js} +2 -2
  277. package/dist/{list-search-BTW0Neuc.js.map → list-search-BcOawrgy.js.map} +1 -1
  278. package/dist/{message-BrwbcLPi.js → message-Cs8NW-MR.js} +2 -2
  279. package/dist/{message-BrwbcLPi.js.map → message-Cs8NW-MR.js.map} +1 -1
  280. package/dist/{message-CszposMZ.cjs → message-D9b33Pf_.cjs} +2 -2
  281. package/dist/{message-CszposMZ.cjs.map → message-D9b33Pf_.cjs.map} +1 -1
  282. package/dist/{metrics-card-BUJxiwec.cjs → metrics-card-D-VjFkUM.cjs} +3 -3
  283. package/dist/{metrics-card-BUJxiwec.cjs.map → metrics-card-D-VjFkUM.cjs.map} +1 -1
  284. package/dist/{metrics-card-BlBt1WHw.js → metrics-card-jjLRvic4.js} +3 -3
  285. package/dist/{metrics-card-BlBt1WHw.js.map → metrics-card-jjLRvic4.js.map} +1 -1
  286. package/dist/{metrics-kpi-card-CBSNmtc5.js → metrics-kpi-card-CY6F7nTX.js} +2 -2
  287. package/dist/{metrics-kpi-card-CBSNmtc5.js.map → metrics-kpi-card-CY6F7nTX.js.map} +1 -1
  288. package/dist/{metrics-kpi-card-CgqmNcEC.cjs → metrics-kpi-card-krK6uG7U.cjs} +2 -2
  289. package/dist/{metrics-kpi-card-CgqmNcEC.cjs.map → metrics-kpi-card-krK6uG7U.cjs.map} +1 -1
  290. package/dist/new/layout/app-shell.cjs.js +23 -28
  291. package/dist/new/layout/app-shell.cjs.js.map +1 -1
  292. package/dist/new/layout/app-shell.es.js +23 -28
  293. package/dist/new/layout/app-shell.es.js.map +1 -1
  294. package/dist/{property-filter-applied-BmxCPe2d.cjs → property-filter-applied-CAiO4FBw.cjs} +2 -2
  295. package/dist/{property-filter-applied-BmxCPe2d.cjs.map → property-filter-applied-CAiO4FBw.cjs.map} +1 -1
  296. package/dist/{property-filter-applied-BBiUbtr0.js → property-filter-applied-MIKU9okW.js} +2 -2
  297. package/dist/{property-filter-applied-BBiUbtr0.js.map → property-filter-applied-MIKU9okW.js.map} +1 -1
  298. package/dist/radio-group-BdEPWGzi.cjs +62 -0
  299. package/dist/radio-group-BdEPWGzi.cjs.map +1 -0
  300. package/dist/radio-group-CFZXUXZ5.js +40 -0
  301. package/dist/radio-group-CFZXUXZ5.js.map +1 -0
  302. package/dist/{search-field-block-D0PUUCAE.cjs → search-field-block-DAdvPs1N.cjs} +8 -9
  303. package/dist/{search-field-block-D0PUUCAE.cjs.map → search-field-block-DAdvPs1N.cjs.map} +1 -1
  304. package/dist/{search-field-block-B5vUVTpl.js → search-field-block-DjN9AgLw.js} +2 -3
  305. package/dist/{search-field-block-B5vUVTpl.js.map → search-field-block-DjN9AgLw.js.map} +1 -1
  306. package/dist/{select-field-block-W2u2WmN3.cjs → select-field-block-7EHxArfT.cjs} +8 -9
  307. package/dist/{select-field-block-W2u2WmN3.cjs.map → select-field-block-7EHxArfT.cjs.map} +1 -1
  308. package/dist/{select-field-block-Bu7UXI2H.js → select-field-block-CBte2DyW.js} +2 -3
  309. package/dist/{select-field-block-Bu7UXI2H.js.map → select-field-block-CBte2DyW.js.map} +1 -1
  310. package/dist/{span-payload-primitives-DnRsP93D.cjs → span-payload-primitives-BLKf0qn0.cjs} +2 -2
  311. package/dist/{span-payload-primitives-DnRsP93D.cjs.map → span-payload-primitives-BLKf0qn0.cjs.map} +1 -1
  312. package/dist/{span-payload-primitives-sbxk4CHC.js → span-payload-primitives-CDLOoJfp.js} +2 -2
  313. package/dist/{span-payload-primitives-sbxk4CHC.js.map → span-payload-primitives-CDLOoJfp.js.map} +1 -1
  314. package/dist/{spinner-CqP-NaB2.cjs → spinner-BCpN7LL9.cjs} +9 -3
  315. package/dist/spinner-BCpN7LL9.cjs.map +1 -0
  316. package/dist/{spinner-D2C2DYw8.js → spinner-ylbE0TJA.js} +9 -3
  317. package/dist/spinner-ylbE0TJA.js.map +1 -0
  318. package/dist/src/domains/traces/components/traces-error-content.d.ts +2 -2
  319. package/dist/src/domains/traces/hooks/use-trace-url-state.d.ts +5 -3
  320. package/dist/src/domains/traces/trace-filters.d.ts +19 -4
  321. package/dist/src/domains/traces/trace-query-filters.d.ts +13 -1
  322. package/dist/src/ds/components/ActionRow/action-row.d.ts +9 -0
  323. package/dist/src/ds/components/ActionRow/action-row.stories.d.ts +8 -0
  324. package/dist/src/ds/components/ActionRow/index.d.ts +5 -0
  325. package/dist/src/ds/components/ButtonsGroup/buttons-group.stories.d.ts +7 -5
  326. package/dist/src/ds/components/EmptyState/EmptyState.d.ts +8 -2
  327. package/dist/src/ds/components/EmptyState/empty-state.stories.d.ts +1 -0
  328. package/dist/src/ds/components/ErrorState/ErrorState.d.ts +3 -1
  329. package/dist/src/ds/components/ErrorState/error-state.stories.d.ts +1 -0
  330. package/dist/src/ds/components/FilterBar/filter-bar-advanced-chip.d.ts +10 -0
  331. package/dist/src/ds/components/FilterBar/filter-bar-context.d.ts +46 -9
  332. package/dist/src/ds/components/FilterBar/filter-bar-group-editor.d.ts +25 -0
  333. package/dist/src/ds/components/FilterBar/filter-bar-input.d.ts +8 -1
  334. package/dist/src/ds/components/FilterBar/filter-bar-option-list.d.ts +5 -0
  335. package/dist/src/ds/components/FilterBar/filter-bar-tree.d.ts +36 -0
  336. package/dist/src/ds/components/FilterBar/filter-bar.d.ts +28 -7
  337. package/dist/src/ds/components/FilterBar/filter-bar.stories.d.ts +3 -0
  338. package/dist/src/ds/components/FilterBar/index.d.ts +6 -1
  339. package/dist/src/ds/components/FilterBar/types.d.ts +36 -0
  340. package/dist/src/ds/components/FilterBar/use-settle-on-leave.d.ts +2 -0
  341. package/dist/src/ds/components/PageLayout/index.d.ts +1 -2
  342. package/dist/src/ds/components/PageLayout/page-layout.d.ts +13 -11
  343. package/dist/src/ds/components/PageLayout/page-layout.stories.d.ts +1 -2
  344. package/dist/src/ds/components/PermissionDenied/PermissionDenied.d.ts +3 -1
  345. package/dist/src/ds/components/PermissionDenied/permission-denied.stories.d.ts +1 -0
  346. package/dist/src/ds/components/SessionExpired/SessionExpired.d.ts +3 -1
  347. package/dist/src/ds/components/SessionExpired/session-expired.stories.d.ts +1 -0
  348. package/dist/src/ds/components/Spinner/spinner.d.ts +6 -3
  349. package/dist/src/ds/components/Spinner/spinner.stories.d.ts +1 -0
  350. package/dist/src/ds/components/ai/ask-user/ask-user.d.ts +13 -8
  351. package/dist/src/ds/new/layout/app-shell/app-shell.d.ts +2 -8
  352. package/dist/src/ds/new/layout/app-shell/app-shell.stories.d.ts +0 -1
  353. package/dist/style.css +42 -92
  354. package/dist/{text-field-block--EUJKlY_.js → text-field-block-DBesvdaa.js} +2 -3
  355. package/dist/{text-field-block--EUJKlY_.js.map → text-field-block-DBesvdaa.js.map} +1 -1
  356. package/dist/{text-field-block-BLpLWmu8.cjs → text-field-block-DUMc8MTJ.cjs} +8 -9
  357. package/dist/{text-field-block-BLpLWmu8.cjs.map → text-field-block-DUMc8MTJ.cjs.map} +1 -1
  358. package/dist/{tool-call-K147tCug.js → tool-call-Du8XIzfo.js} +2 -2
  359. package/dist/{tool-call-K147tCug.js.map → tool-call-Du8XIzfo.js.map} +1 -1
  360. package/dist/{tool-call-CMRvRE-v.cjs → tool-call-ZKSbU3LR.cjs} +2 -2
  361. package/dist/{tool-call-CMRvRE-v.cjs.map → tool-call-ZKSbU3LR.cjs.map} +1 -1
  362. package/dist/types-CIPrYAzY.js +9 -0
  363. package/dist/types-CIPrYAzY.js.map +1 -0
  364. package/dist/types-Ns4ZNp-g.cjs +12 -0
  365. package/dist/types-Ns4ZNp-g.cjs.map +1 -0
  366. package/package.json +6 -6
  367. package/dist/EmptyState-CdRjFB06.cjs.map +0 -1
  368. package/dist/EmptyState-UWXhBp5U.js.map +0 -1
  369. package/dist/ErrorState-B3uTRAEd.cjs +0 -16
  370. package/dist/ErrorState-B3uTRAEd.cjs.map +0 -1
  371. package/dist/ErrorState-DqRx8Dw_.js +0 -14
  372. package/dist/ErrorState-DqRx8Dw_.js.map +0 -1
  373. package/dist/PermissionDenied-B6TSGolC.js.map +0 -1
  374. package/dist/PermissionDenied-Dz5qXpQj.cjs.map +0 -1
  375. package/dist/SessionExpired-Bq5LcsDu.js.map +0 -1
  376. package/dist/SessionExpired-CF0BGNo_.cjs.map +0 -1
  377. package/dist/ask-user-CS2e6Re4.cjs +0 -147
  378. package/dist/ask-user-CS2e6Re4.cjs.map +0 -1
  379. package/dist/ask-user-gS3Y1bCc.js +0 -138
  380. package/dist/ask-user-gS3Y1bCc.js.map +0 -1
  381. package/dist/components/MainContent.cjs.js +0 -81
  382. package/dist/components/MainContent.cjs.js.map +0 -1
  383. package/dist/components/MainContent.d.ts +0 -2
  384. package/dist/components/MainContent.es.js +0 -75
  385. package/dist/components/MainContent.es.js.map +0 -1
  386. package/dist/field-block-DWkbNcsV.js.map +0 -1
  387. package/dist/field-block-Dy1IaWbv.cjs.map +0 -1
  388. package/dist/field-error-id-B3Z2Zu5y.cjs +0 -6
  389. package/dist/field-error-id-B3Z2Zu5y.cjs.map +0 -1
  390. package/dist/field-error-id-D3yg1nBh.js +0 -4
  391. package/dist/field-error-id-D3yg1nBh.js.map +0 -1
  392. package/dist/filter-bar-chip-BxI0NgEz.cjs.map +0 -1
  393. package/dist/filter-bar-chip-C-JxWUU8.js.map +0 -1
  394. package/dist/new/layout/page-shell.cjs.js +0 -34
  395. package/dist/new/layout/page-shell.cjs.js.map +0 -1
  396. package/dist/new/layout/page-shell.d.ts +0 -2
  397. package/dist/new/layout/page-shell.es.js +0 -30
  398. package/dist/new/layout/page-shell.es.js.map +0 -1
  399. package/dist/no-data-page-layout-DcVPjj-J.js +0 -9
  400. package/dist/no-data-page-layout-DcVPjj-J.js.map +0 -1
  401. package/dist/no-data-page-layout-Drzbg_w8.cjs +0 -11
  402. package/dist/no-data-page-layout-Drzbg_w8.cjs.map +0 -1
  403. package/dist/page-heading-context-D3yjYoJE.js +0 -9
  404. package/dist/page-heading-context-D3yjYoJE.js.map +0 -1
  405. package/dist/page-heading-context-Du-CpxAx.cjs +0 -12
  406. package/dist/page-heading-context-Du-CpxAx.cjs.map +0 -1
  407. package/dist/page-layout-C9ifD9Q8.cjs +0 -99
  408. package/dist/page-layout-C9ifD9Q8.cjs.map +0 -1
  409. package/dist/page-layout-xcM8IR-B.js +0 -97
  410. package/dist/page-layout-xcM8IR-B.js.map +0 -1
  411. package/dist/spinner-CqP-NaB2.cjs.map +0 -1
  412. package/dist/spinner-D2C2DYw8.js.map +0 -1
  413. package/dist/src/ds/components/MainContent/index.d.ts +0 -1
  414. package/dist/src/ds/components/MainContent/main-content.d.ts +0 -21
  415. package/dist/src/ds/components/MainContent/main-content.stories.d.ts +0 -10
  416. package/dist/src/ds/components/PageLayout/no-data-page-layout.d.ts +0 -6
  417. package/dist/src/ds/components/PageLayout/page-heading-context.d.ts +0 -2
  418. package/dist/src/ds/components/PageLayout/page-layout-column.d.ts +0 -5
  419. package/dist/src/ds/components/PageLayout/page-layout-main-area.d.ts +0 -7
  420. package/dist/src/ds/components/PageLayout/page-layout-root.d.ts +0 -7
  421. package/dist/src/ds/components/PageLayout/page-layout-row.d.ts +0 -11
  422. package/dist/src/ds/components/PageLayout/page-layout-top-area.d.ts +0 -5
  423. package/dist/src/ds/new/layout/page-shell/index.d.ts +0 -1
  424. package/dist/src/ds/new/layout/page-shell/page-shell.d.ts +0 -24
  425. package/dist/src/ds/new/layout/page-shell/page-shell.stories.d.ts +0 -63
@@ -21,6 +21,7 @@ const TRACE_FILTER_OPERATOR_IDS = [
21
21
  "lte"
22
22
  ];
23
23
  const isTraceFilterOperatorId = (value) => TRACE_FILTER_OPERATOR_IDS.includes(value);
24
+ const isTraceFilterGroup = (node) => "nodes" in node;
24
25
  const TRACE_FILTER_OPERATOR_TO_QUERY_OP = {
25
26
  is: "eq",
26
27
  isNot: "ne",
@@ -76,55 +77,54 @@ function scalarPredicate(op, path, values) {
76
77
  }
77
78
  }
78
79
  }
79
- function buildTraceQueryRequest({
80
- rootEntityType,
81
- status,
82
- dateFrom,
83
- dateTo,
84
- tokens,
85
- now
86
- }) {
80
+ function tokenToTraceQueryPredicate(token) {
81
+ if (TRACE_QUERY_UNSUPPORTED_FILTER_FIELDS.has(token.fieldId)) return void 0;
82
+ const operatorId = token.operatorId ?? "is";
83
+ const isPresence = operatorId === "exists" || operatorId === "notExists";
84
+ const rawValues = (Array.isArray(token.value) ? token.value : [token.value]).filter(
85
+ (value) => typeof value === "string" && Boolean(value.trim()) && value !== "Any"
86
+ );
87
+ if (!rawValues.length && !isPresence) return void 0;
88
+ let fieldId = token.fieldId;
89
+ let values = rawValues;
90
+ if (fieldId.startsWith("metadata.")) {
91
+ if (fieldId.length === "metadata.".length) return void 0;
92
+ } else if (fieldId === "rootEntityType" || fieldId === "entityType") {
93
+ fieldId = "entityType";
94
+ } else if (fieldId === "status") {
95
+ values = rawValues.filter((value) => value !== "running");
96
+ if (!values.length && !isPresence) return void 0;
97
+ } else if (TRACE_QUERY_NUMERIC_FIELD_IDS.has(fieldId)) {
98
+ values = rawValues.map(Number).filter((value) => !Number.isNaN(value));
99
+ if (!values.length && !isPresence) return void 0;
100
+ }
101
+ const { scope, path } = resolveTraceQueryPath(fieldId);
102
+ const isMetadata = fieldId.startsWith("metadata.");
103
+ if (!scope && !isMetadata && !TRACE_QUERY_TRACE_FIELD_IDS.has(fieldId)) return void 0;
104
+ if (scope && isNegativeOperator(operatorId)) {
105
+ const positive = scalarPredicate(NEGATIVE_TO_POSITIVE[operatorId], path, values);
106
+ return positive ? { predicate: { [scope]: { none: positive } } } : void 0;
107
+ }
108
+ const predicate = scalarPredicate(operatorId, path, values);
109
+ if (!predicate) return void 0;
110
+ if (scope) return { scope, predicate };
111
+ if ((operatorId === "isNot" || operatorId === "notIn") && (isMetadata || TRACE_QUERY_OPTIONAL_TRACE_FIELD_IDS.has(fieldId))) {
112
+ return { predicate: { op: "or", args: [predicate, { op: "notExists", path }] } };
113
+ }
114
+ return { predicate };
115
+ }
116
+ function predicatesForTokens(tokens, { mergeRelated }) {
87
117
  const args = [];
88
118
  const related = { spans: [], scores: [], feedback: [] };
89
- if (rootEntityType) args.push({ op: "eq", left: { path: "entityType" }, right: { literal: rootEntityType } });
90
- if (status && status !== "running") args.push({ op: "eq", left: { path: "status" }, right: { literal: status } });
91
119
  for (const token of tokens) {
92
- if (TRACE_QUERY_UNSUPPORTED_FILTER_FIELDS.has(token.fieldId)) continue;
93
- const operatorId = token.operatorId ?? "is";
94
- const isPresence = operatorId === "exists" || operatorId === "notExists";
95
- const rawValues = (Array.isArray(token.value) ? token.value : [token.value]).filter(
96
- (value) => typeof value === "string" && Boolean(value.trim()) && value !== "Any"
97
- );
98
- if (!rawValues.length && !isPresence) continue;
99
- let fieldId = token.fieldId;
100
- let values = rawValues;
101
- if (fieldId.startsWith("metadata.")) {
102
- if (fieldId.length === "metadata.".length) continue;
103
- } else if (fieldId === "rootEntityType" || fieldId === "entityType") {
104
- fieldId = "entityType";
105
- } else if (fieldId === "status") {
106
- values = rawValues.filter((value) => value !== "running");
107
- if (!values.length && !isPresence) continue;
108
- } else if (TRACE_QUERY_NUMERIC_FIELD_IDS.has(fieldId)) {
109
- values = rawValues.map(Number).filter((value) => !Number.isNaN(value));
110
- if (!values.length && !isPresence) continue;
111
- }
112
- const { scope, path } = resolveTraceQueryPath(fieldId);
113
- const isMetadata = fieldId.startsWith("metadata.");
114
- if (!scope && !isMetadata && !TRACE_QUERY_TRACE_FIELD_IDS.has(fieldId)) continue;
115
- if (scope && isNegativeOperator(operatorId)) {
116
- const positive = scalarPredicate(NEGATIVE_TO_POSITIVE[operatorId], path, values);
117
- if (positive) args.push({ [scope]: { none: positive } });
118
- continue;
119
- }
120
- const predicate = scalarPredicate(operatorId, path, values);
121
- if (!predicate) continue;
122
- if (scope) {
123
- related[scope].push(predicate);
124
- } else if ((operatorId === "isNot" || operatorId === "notIn") && (isMetadata || TRACE_QUERY_OPTIONAL_TRACE_FIELD_IDS.has(fieldId))) {
125
- args.push({ op: "or", args: [predicate, { op: "notExists", path }] });
120
+ const result = tokenToTraceQueryPredicate(token);
121
+ if (!result) continue;
122
+ if (!("scope" in result)) {
123
+ args.push(result.predicate);
124
+ } else if (mergeRelated) {
125
+ related[result.scope].push(result.predicate);
126
126
  } else {
127
- args.push(predicate);
127
+ args.push({ [result.scope]: { some: result.predicate } });
128
128
  }
129
129
  }
130
130
  for (const scope of TRACE_QUERY_RELATED_SCOPES) {
@@ -133,6 +133,36 @@ function buildTraceQueryRequest({
133
133
  const some = rest.length ? { op: "and", args: [first, ...rest] } : first;
134
134
  args.push({ [scope]: { some } });
135
135
  }
136
+ return args;
137
+ }
138
+ function groupToTraceQueryPredicate(group) {
139
+ const tokens = group.nodes.filter((node) => !isTraceFilterGroup(node));
140
+ const args = predicatesForTokens(tokens, { mergeRelated: group.logic === "and" });
141
+ for (const node of group.nodes) {
142
+ if (!isTraceFilterGroup(node)) continue;
143
+ const predicate = groupToTraceQueryPredicate(node);
144
+ if (predicate) args.push(predicate);
145
+ }
146
+ if (args.length === 0) return void 0;
147
+ return args.length === 1 ? args[0] : { op: group.logic, args };
148
+ }
149
+ function buildTraceQueryRequest({
150
+ rootEntityType,
151
+ status,
152
+ dateFrom,
153
+ dateTo,
154
+ tokens,
155
+ groups = [],
156
+ now
157
+ }) {
158
+ const args = [];
159
+ if (rootEntityType) args.push({ op: "eq", left: { path: "entityType" }, right: { literal: rootEntityType } });
160
+ if (status && status !== "running") args.push({ op: "eq", left: { path: "status" }, right: { literal: status } });
161
+ args.push(...predicatesForTokens(tokens, { mergeRelated: true }));
162
+ for (const group of groups) {
163
+ const predicate = groupToTraceQueryPredicate(group);
164
+ if (predicate) args.push(predicate);
165
+ }
136
166
  return {
137
167
  timeRange: {
138
168
  from: (dateFrom ?? new Date(now.getTime() - 7 * 24 * 60 * 60 * 1e3)).toISOString(),
@@ -150,5 +180,5 @@ function clampTraceDiscoveryTimeRange(timeRange) {
150
180
  return { from: new Date(minFrom).toISOString(), to: timeRange.to };
151
181
  }
152
182
 
153
- export { TRACE_FILTER_OPERATOR_IDS, TRACE_QUERY_DISCOVERY_MAX_RANGE_MS, TRACE_QUERY_NUMERIC_FIELD_IDS, TRACE_QUERY_OPTIONAL_TRACE_FIELD_IDS, TRACE_QUERY_UNSUPPORTED_FILTER_FIELDS, buildTraceQueryRequest, clampTraceDiscoveryTimeRange, isTraceFilterOperatorId };
183
+ export { TRACE_FILTER_OPERATOR_IDS, TRACE_QUERY_DISCOVERY_MAX_RANGE_MS, TRACE_QUERY_NUMERIC_FIELD_IDS, TRACE_QUERY_OPTIONAL_TRACE_FIELD_IDS, TRACE_QUERY_UNSUPPORTED_FILTER_FIELDS, buildTraceQueryRequest, clampTraceDiscoveryTimeRange, isTraceFilterGroup, isTraceFilterOperatorId };
154
184
  //# sourceMappingURL=trace-query-filters.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"trace-query-filters.es.js","sources":["../../../src/domains/traces/trace-query-filters.ts"],"sourcesContent":["import type { QueryTracesInput } from '@mastra/client-js';\nimport type { TraceQueryPredicate, TraceQueryScalarPredicate } from '@mastra/core/storage';\nimport type { buildTraceListFilters, TraceStatusFilter } from './trace-filters';\nimport type { PropertyFilterToken } from '@/ds/components/PropertyFilter/types';\n\nexport const TRACE_QUERY_UNSUPPORTED_FILTER_FIELDS = new Set([\n 'tags',\n 'runId',\n 'sessionId',\n 'requestId',\n 'userId',\n 'organizationId',\n 'serviceName',\n 'experimentId',\n]);\n\nexport const TRACE_FILTER_OPERATOR_IDS = [\n 'is',\n 'isNot',\n 'in',\n 'notIn',\n 'exists',\n 'notExists',\n 'gt',\n 'gte',\n 'lt',\n 'lte',\n] as const;\nexport type TraceFilterOperatorId = (typeof TRACE_FILTER_OPERATOR_IDS)[number];\n\nexport const isTraceFilterOperatorId = (value: string): value is TraceFilterOperatorId =>\n (TRACE_FILTER_OPERATOR_IDS as readonly string[]).includes(value);\n\n/** A trace filter chip: `operatorId` defaults to `is` (equality / set membership). */\nexport type TraceFilterToken = PropertyFilterToken & { operatorId?: TraceFilterOperatorId };\n\nconst TRACE_FILTER_OPERATOR_TO_QUERY_OP = {\n is: 'eq',\n isNot: 'ne',\n in: 'in',\n notIn: 'notIn',\n exists: 'exists',\n notExists: 'notExists',\n gt: 'gt',\n gte: 'gte',\n lt: 'lt',\n lte: 'lte',\n} as const satisfies Record<TraceFilterOperatorId, TraceQueryScalarPredicate['op']>;\n\n/** Fields whose values must be sent as numbers. Non-numeric input is dropped. */\nexport const TRACE_QUERY_NUMERIC_FIELD_IDS = new Set(['spans.durationMs', 'scores.score', 'feedback.value']);\n\nconst TRACE_QUERY_TRACE_FIELD_IDS = new Set([\n 'entityType',\n 'status',\n 'entityName',\n 'environment',\n 'traceId',\n 'threadId',\n 'resourceId',\n]);\n\n/** Trace-level fields that may be unset. \"is not X\" on these must also keep traces\n * where the field is missing, so the predicate is `or[ne, notExists]`. */\nexport const TRACE_QUERY_OPTIONAL_TRACE_FIELD_IDS = new Set(['threadId', 'resourceId', 'environment']);\n\n/** Negative operators are expressed as `none(<positive>)` on related collections. */\nconst NEGATIVE_TO_POSITIVE = { isNot: 'is', notIn: 'in', notExists: 'exists' } as const satisfies Partial<\n Record<TraceFilterOperatorId, TraceFilterOperatorId>\n>;\ntype NegativeOperatorId = keyof typeof NEGATIVE_TO_POSITIVE;\nconst isNegativeOperator = (op: TraceFilterOperatorId): op is NegativeOperatorId => op in NEGATIVE_TO_POSITIVE;\n\nconst TRACE_QUERY_RELATED_SCOPES = ['spans', 'scores', 'feedback'] as const;\nexport type TraceQueryRelatedScope = (typeof TRACE_QUERY_RELATED_SCOPES)[number];\n\n/** Split a field id into its related scope (`spans.` / `scores.` / `feedback.`) and\n * the path inside that scope. Trace-level fields have no scope. `entityId` is the\n * legacy id for `spans.entityId`. */\nfunction resolveTraceQueryPath(fieldId: string): { scope?: TraceQueryRelatedScope; path: string } {\n if (fieldId === 'entityId') return { scope: 'spans', path: 'entityId' };\n for (const scope of TRACE_QUERY_RELATED_SCOPES) {\n if (fieldId.startsWith(`${scope}.`) && fieldId.length > scope.length + 1) {\n return { scope, path: fieldId.slice(scope.length + 1) };\n }\n }\n return { path: fieldId };\n}\n\nfunction scalarPredicate(\n op: TraceFilterOperatorId,\n path: string,\n values: (string | number)[],\n): TraceQueryScalarPredicate | undefined {\n const queryOp = TRACE_FILTER_OPERATOR_TO_QUERY_OP[op];\n switch (queryOp) {\n case 'exists':\n case 'notExists':\n return { op: queryOp, path };\n case 'in':\n case 'notIn':\n return values.length ? { op: queryOp, value: { path }, set: values } : undefined;\n default: {\n if (!values.length) return undefined;\n // `is` with several values is set membership; `isNot` with several is exclusion.\n if (values.length > 1) {\n if (queryOp === 'eq') return { op: 'in', value: { path }, set: values };\n if (queryOp === 'ne') return { op: 'notIn', value: { path }, set: values };\n }\n const [literal] = values;\n return literal === undefined ? undefined : { op: queryOp, left: { path }, right: { literal } };\n }\n }\n}\n\nexport function buildTraceQueryRequest({\n rootEntityType,\n status,\n dateFrom,\n dateTo,\n tokens,\n now,\n}: Omit<Parameters<typeof buildTraceListFilters>[0], 'tokens' | 'status'> & {\n status?: TraceStatusFilter;\n tokens: TraceFilterToken[];\n now: Date;\n}): Pick<QueryTracesInput, 'timeRange' | 'where'> {\n const args: TraceQueryPredicate[] = [];\n const related: Record<TraceQueryRelatedScope, TraceQueryScalarPredicate[]> = { spans: [], scores: [], feedback: [] };\n\n if (rootEntityType) args.push({ op: 'eq', left: { path: 'entityType' }, right: { literal: rootEntityType } });\n if (status && status !== 'running') args.push({ op: 'eq', left: { path: 'status' }, right: { literal: status } });\n\n for (const token of tokens) {\n if (TRACE_QUERY_UNSUPPORTED_FILTER_FIELDS.has(token.fieldId)) continue;\n const operatorId = token.operatorId ?? 'is';\n const isPresence = operatorId === 'exists' || operatorId === 'notExists';\n\n const rawValues = (Array.isArray(token.value) ? token.value : [token.value]).filter(\n (value): value is string => typeof value === 'string' && Boolean(value.trim()) && value !== 'Any',\n );\n if (!rawValues.length && !isPresence) continue;\n\n let fieldId = token.fieldId;\n let values: (string | number)[] = rawValues;\n // Discovered metadata fields: the field id is already the predicate path (`metadata.<key>`).\n if (fieldId.startsWith('metadata.')) {\n if (fieldId.length === 'metadata.'.length) continue;\n } else if (fieldId === 'rootEntityType' || fieldId === 'entityType') {\n fieldId = 'entityType';\n } else if (fieldId === 'status') {\n values = rawValues.filter(value => value !== 'running');\n if (!values.length && !isPresence) continue;\n } else if (TRACE_QUERY_NUMERIC_FIELD_IDS.has(fieldId)) {\n values = rawValues.map(Number).filter(value => !Number.isNaN(value));\n if (!values.length && !isPresence) continue;\n }\n\n const { scope, path } = resolveTraceQueryPath(fieldId);\n const isMetadata = fieldId.startsWith('metadata.');\n if (!scope && !isMetadata && !TRACE_QUERY_TRACE_FIELD_IDS.has(fieldId)) continue;\n\n if (scope && isNegativeOperator(operatorId)) {\n // `some(model ne X)` matches any trace with one span that differs; the user\n // means \"no span with model X\", which is `none(model eq X)`.\n const positive = scalarPredicate(NEGATIVE_TO_POSITIVE[operatorId], path, values);\n if (positive) args.push({ [scope]: { none: positive } } as TraceQueryPredicate);\n continue;\n }\n\n const predicate = scalarPredicate(operatorId, path, values);\n if (!predicate) continue;\n if (scope) {\n related[scope].push(predicate);\n } else if (\n (operatorId === 'isNot' || operatorId === 'notIn') &&\n (isMetadata || TRACE_QUERY_OPTIONAL_TRACE_FIELD_IDS.has(fieldId))\n ) {\n args.push({ op: 'or', args: [predicate, { op: 'notExists', path }] });\n } else {\n args.push(predicate);\n }\n }\n\n // Tokens on the same related collection must match the same row (e.g. scorer X\n // AND score < 0.6), so they are merged into a single `some` predicate.\n for (const scope of TRACE_QUERY_RELATED_SCOPES) {\n const [first, ...rest] = related[scope];\n if (!first) continue;\n const some = rest.length ? { op: 'and' as const, args: [first, ...rest] } : first;\n args.push({ [scope]: { some } } as TraceQueryPredicate);\n }\n\n return {\n timeRange: {\n from: (dateFrom ?? new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000)).toISOString(),\n to: (dateTo ?? now).toISOString(),\n },\n ...(args.length ? { where: { op: 'and' as const, args } } : {}),\n };\n}\n\nexport const TRACE_QUERY_DISCOVERY_MAX_RANGE_MS = 31 * 24 * 60 * 60 * 1000;\n\n/** Discovery endpoints reject ranges wider than 31 days (and `from >= to`); clamp\n * the page's selected range so wide custom ranges still get field suggestions\n * for the most recent window. */\nexport function clampTraceDiscoveryTimeRange(timeRange: { from: string; to: string }): { from: string; to: string } {\n const to = new Date(timeRange.to).getTime();\n const from = new Date(timeRange.from).getTime();\n const minFrom = to - TRACE_QUERY_DISCOVERY_MAX_RANGE_MS;\n if (from >= minFrom && from < to) return timeRange;\n return { from: new Date(minFrom).toISOString(), to: timeRange.to };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trace-query-filters.es.js","sources":["../../../src/domains/traces/trace-query-filters.ts"],"sourcesContent":["import type { QueryTracesInput } from '@mastra/client-js';\nimport type { TraceQueryPredicate, TraceQueryScalarPredicate } from '@mastra/core/storage';\nimport type { buildTraceListFilters, TraceStatusFilter } from './trace-filters';\nimport type { PropertyFilterToken } from '@/ds/components/PropertyFilter/types';\n\nexport const TRACE_QUERY_UNSUPPORTED_FILTER_FIELDS = new Set([\n 'tags',\n 'runId',\n 'sessionId',\n 'requestId',\n 'userId',\n 'organizationId',\n 'serviceName',\n 'experimentId',\n]);\n\nexport const TRACE_FILTER_OPERATOR_IDS = [\n 'is',\n 'isNot',\n 'in',\n 'notIn',\n 'exists',\n 'notExists',\n 'gt',\n 'gte',\n 'lt',\n 'lte',\n] as const;\nexport type TraceFilterOperatorId = (typeof TRACE_FILTER_OPERATOR_IDS)[number];\n\nexport const isTraceFilterOperatorId = (value: string): value is TraceFilterOperatorId =>\n (TRACE_FILTER_OPERATOR_IDS as readonly string[]).includes(value);\n\n/** A trace filter chip: `operatorId` defaults to `is` (equality / set membership). */\nexport type TraceFilterToken = PropertyFilterToken & {\n operatorId?: TraceFilterOperatorId;\n /** Only set for tokens inside a group: a group may hold several tokens on the same field. */\n id?: string;\n};\n\nexport type TraceFilterLogic = 'and' | 'or';\n\n/** An advanced filter: a nested boolean combination of tokens. */\nexport type TraceFilterGroup = { id: string; logic: TraceFilterLogic; nodes: TraceFilterNode[] };\nexport type TraceFilterNode = TraceFilterToken | TraceFilterGroup;\n\nexport const isTraceFilterGroup = (node: TraceFilterNode): node is TraceFilterGroup => 'nodes' in node;\n\nconst TRACE_FILTER_OPERATOR_TO_QUERY_OP = {\n is: 'eq',\n isNot: 'ne',\n in: 'in',\n notIn: 'notIn',\n exists: 'exists',\n notExists: 'notExists',\n gt: 'gt',\n gte: 'gte',\n lt: 'lt',\n lte: 'lte',\n} as const satisfies Record<TraceFilterOperatorId, TraceQueryScalarPredicate['op']>;\n\n/** Fields whose values must be sent as numbers. Non-numeric input is dropped. */\nexport const TRACE_QUERY_NUMERIC_FIELD_IDS = new Set(['spans.durationMs', 'scores.score', 'feedback.value']);\n\nconst TRACE_QUERY_TRACE_FIELD_IDS = new Set([\n 'entityType',\n 'status',\n 'entityName',\n 'environment',\n 'traceId',\n 'threadId',\n 'resourceId',\n]);\n\n/** Trace-level fields that may be unset. \"is not X\" on these must also keep traces\n * where the field is missing, so the predicate is `or[ne, notExists]`. */\nexport const TRACE_QUERY_OPTIONAL_TRACE_FIELD_IDS = new Set(['threadId', 'resourceId', 'environment']);\n\n/** Negative operators are expressed as `none(<positive>)` on related collections. */\nconst NEGATIVE_TO_POSITIVE = { isNot: 'is', notIn: 'in', notExists: 'exists' } as const satisfies Partial<\n Record<TraceFilterOperatorId, TraceFilterOperatorId>\n>;\ntype NegativeOperatorId = keyof typeof NEGATIVE_TO_POSITIVE;\nconst isNegativeOperator = (op: TraceFilterOperatorId): op is NegativeOperatorId => op in NEGATIVE_TO_POSITIVE;\n\nconst TRACE_QUERY_RELATED_SCOPES = ['spans', 'scores', 'feedback'] as const;\nexport type TraceQueryRelatedScope = (typeof TRACE_QUERY_RELATED_SCOPES)[number];\n\n/** Split a field id into its related scope (`spans.` / `scores.` / `feedback.`) and\n * the path inside that scope. Trace-level fields have no scope. `entityId` is the\n * legacy id for `spans.entityId`. */\nfunction resolveTraceQueryPath(fieldId: string): { scope?: TraceQueryRelatedScope; path: string } {\n if (fieldId === 'entityId') return { scope: 'spans', path: 'entityId' };\n for (const scope of TRACE_QUERY_RELATED_SCOPES) {\n if (fieldId.startsWith(`${scope}.`) && fieldId.length > scope.length + 1) {\n return { scope, path: fieldId.slice(scope.length + 1) };\n }\n }\n return { path: fieldId };\n}\n\nfunction scalarPredicate(\n op: TraceFilterOperatorId,\n path: string,\n values: (string | number)[],\n): TraceQueryScalarPredicate | undefined {\n const queryOp = TRACE_FILTER_OPERATOR_TO_QUERY_OP[op];\n switch (queryOp) {\n case 'exists':\n case 'notExists':\n return { op: queryOp, path };\n case 'in':\n case 'notIn':\n return values.length ? { op: queryOp, value: { path }, set: values } : undefined;\n default: {\n if (!values.length) return undefined;\n // `is` with several values is set membership; `isNot` with several is exclusion.\n if (values.length > 1) {\n if (queryOp === 'eq') return { op: 'in', value: { path }, set: values };\n if (queryOp === 'ne') return { op: 'notIn', value: { path }, set: values };\n }\n const [literal] = values;\n return literal === undefined ? undefined : { op: queryOp, left: { path }, right: { literal } };\n }\n }\n}\n\ntype TokenPredicate =\n | { predicate: TraceQueryPredicate }\n /** A positive predicate on a related row; the caller decides how to wrap it in `some`. */\n | { scope: TraceQueryRelatedScope; predicate: TraceQueryScalarPredicate };\n\nfunction tokenToTraceQueryPredicate(token: TraceFilterToken): TokenPredicate | undefined {\n if (TRACE_QUERY_UNSUPPORTED_FILTER_FIELDS.has(token.fieldId)) return undefined;\n const operatorId = token.operatorId ?? 'is';\n const isPresence = operatorId === 'exists' || operatorId === 'notExists';\n\n const rawValues = (Array.isArray(token.value) ? token.value : [token.value]).filter(\n (value): value is string => typeof value === 'string' && Boolean(value.trim()) && value !== 'Any',\n );\n if (!rawValues.length && !isPresence) return undefined;\n\n let fieldId = token.fieldId;\n let values: (string | number)[] = rawValues;\n // Discovered metadata fields: the field id is already the predicate path (`metadata.<key>`).\n if (fieldId.startsWith('metadata.')) {\n if (fieldId.length === 'metadata.'.length) return undefined;\n } else if (fieldId === 'rootEntityType' || fieldId === 'entityType') {\n fieldId = 'entityType';\n } else if (fieldId === 'status') {\n values = rawValues.filter(value => value !== 'running');\n if (!values.length && !isPresence) return undefined;\n } else if (TRACE_QUERY_NUMERIC_FIELD_IDS.has(fieldId)) {\n values = rawValues.map(Number).filter(value => !Number.isNaN(value));\n if (!values.length && !isPresence) return undefined;\n }\n\n const { scope, path } = resolveTraceQueryPath(fieldId);\n const isMetadata = fieldId.startsWith('metadata.');\n if (!scope && !isMetadata && !TRACE_QUERY_TRACE_FIELD_IDS.has(fieldId)) return undefined;\n\n if (scope && isNegativeOperator(operatorId)) {\n // `some(model ne X)` matches any trace with one span that differs; the user\n // means \"no span with model X\", which is `none(model eq X)`.\n const positive = scalarPredicate(NEGATIVE_TO_POSITIVE[operatorId], path, values);\n return positive ? { predicate: { [scope]: { none: positive } } as TraceQueryPredicate } : undefined;\n }\n\n const predicate = scalarPredicate(operatorId, path, values);\n if (!predicate) return undefined;\n if (scope) return { scope, predicate };\n if (\n (operatorId === 'isNot' || operatorId === 'notIn') &&\n (isMetadata || TRACE_QUERY_OPTIONAL_TRACE_FIELD_IDS.has(fieldId))\n ) {\n return { predicate: { op: 'or', args: [predicate, { op: 'notExists', path }] } };\n }\n return { predicate };\n}\n\n/** Convert tokens to predicates. With `mergeRelated`, tokens on the same related\n * collection must match the same row (e.g. scorer X AND score < 0.6), so they are\n * merged into a single `some`. Inside an `or` group each token stands alone. */\nfunction predicatesForTokens(tokens: TraceFilterToken[], { mergeRelated }: { mergeRelated: boolean }) {\n const args: TraceQueryPredicate[] = [];\n const related: Record<TraceQueryRelatedScope, TraceQueryScalarPredicate[]> = { spans: [], scores: [], feedback: [] };\n\n for (const token of tokens) {\n const result = tokenToTraceQueryPredicate(token);\n if (!result) continue;\n if (!('scope' in result)) {\n args.push(result.predicate);\n } else if (mergeRelated) {\n related[result.scope].push(result.predicate);\n } else {\n args.push({ [result.scope]: { some: result.predicate } } as TraceQueryPredicate);\n }\n }\n\n for (const scope of TRACE_QUERY_RELATED_SCOPES) {\n const [first, ...rest] = related[scope];\n if (!first) continue;\n const some = rest.length ? { op: 'and' as const, args: [first, ...rest] } : first;\n args.push({ [scope]: { some } } as TraceQueryPredicate);\n }\n\n return args;\n}\n\nfunction groupToTraceQueryPredicate(group: TraceFilterGroup): TraceQueryPredicate | undefined {\n const tokens = group.nodes.filter((node): node is TraceFilterToken => !isTraceFilterGroup(node));\n const args = predicatesForTokens(tokens, { mergeRelated: group.logic === 'and' });\n for (const node of group.nodes) {\n if (!isTraceFilterGroup(node)) continue;\n const predicate = groupToTraceQueryPredicate(node);\n if (predicate) args.push(predicate);\n }\n if (args.length === 0) return undefined;\n return args.length === 1 ? args[0] : { op: group.logic, args };\n}\n\nexport function buildTraceQueryRequest({\n rootEntityType,\n status,\n dateFrom,\n dateTo,\n tokens,\n groups = [],\n now,\n}: Omit<Parameters<typeof buildTraceListFilters>[0], 'tokens' | 'status'> & {\n status?: TraceStatusFilter;\n tokens: TraceFilterToken[];\n groups?: TraceFilterGroup[];\n now: Date;\n}): Pick<QueryTracesInput, 'timeRange' | 'where'> {\n const args: TraceQueryPredicate[] = [];\n\n if (rootEntityType) args.push({ op: 'eq', left: { path: 'entityType' }, right: { literal: rootEntityType } });\n if (status && status !== 'running') args.push({ op: 'eq', left: { path: 'status' }, right: { literal: status } });\n\n args.push(...predicatesForTokens(tokens, { mergeRelated: true }));\n\n for (const group of groups) {\n const predicate = groupToTraceQueryPredicate(group);\n if (predicate) args.push(predicate);\n }\n\n return {\n timeRange: {\n from: (dateFrom ?? new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000)).toISOString(),\n to: (dateTo ?? now).toISOString(),\n },\n ...(args.length ? { where: { op: 'and' as const, args } } : {}),\n };\n}\n\nexport const TRACE_QUERY_DISCOVERY_MAX_RANGE_MS = 31 * 24 * 60 * 60 * 1000;\n\n/** Discovery endpoints reject ranges wider than 31 days (and `from >= to`); clamp\n * the page's selected range so wide custom ranges still get field suggestions\n * for the most recent window. */\nexport function clampTraceDiscoveryTimeRange(timeRange: { from: string; to: string }): { from: string; to: string } {\n const to = new Date(timeRange.to).getTime();\n const from = new Date(timeRange.from).getTime();\n const minFrom = to - TRACE_QUERY_DISCOVERY_MAX_RANGE_MS;\n if (from >= minFrom && from < to) return timeRange;\n return { from: new Date(minFrom).toISOString(), to: timeRange.to };\n}\n"],"names":[],"mappings":"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"}
@@ -142,6 +142,7 @@ exports.TRACE_DATE_PRESET_PARAM = domains_traces_traceFilters.TRACE_DATE_PRESET_
142
142
  exports.TRACE_DATE_PRESET_VALUES = domains_traces_traceFilters.TRACE_DATE_PRESET_VALUES;
143
143
  exports.TRACE_DATE_TO_PARAM = domains_traces_traceFilters.TRACE_DATE_TO_PARAM;
144
144
  exports.TRACE_FILTER_BAR_OPERATORS = domains_traces_traceFilters.TRACE_FILTER_BAR_OPERATORS;
145
+ exports.TRACE_FILTER_GROUP_PARAM = domains_traces_traceFilters.TRACE_FILTER_GROUP_PARAM;
145
146
  exports.TRACE_FILTER_OPERATOR_PARAM_SUFFIX = domains_traces_traceFilters.TRACE_FILTER_OPERATOR_PARAM_SUFFIX;
146
147
  exports.TRACE_LIST_MODE_OPTIONS = domains_traces_traceFilters.TRACE_LIST_MODE_OPTIONS;
147
148
  exports.TRACE_LIST_MODE_PARAM = domains_traces_traceFilters.TRACE_LIST_MODE_PARAM;
@@ -159,19 +160,24 @@ exports.applyTracePropertyFilterTokens = domains_traces_traceFilters.applyTraceP
159
160
  exports.buildTraceListFilters = domains_traces_traceFilters.buildTraceListFilters;
160
161
  exports.clearSavedTraceFilters = domains_traces_traceFilters.clearSavedTraceFilters;
161
162
  exports.createTraceFilterBarFields = domains_traces_traceFilters.createTraceFilterBarFields;
163
+ exports.filterBarExpressionToTraceFilters = domains_traces_traceFilters.filterBarExpressionToTraceFilters;
162
164
  exports.filterBarItemsToTraceTokens = domains_traces_traceFilters.filterBarItemsToTraceTokens;
163
165
  exports.getPreservedTraceFilterParams = domains_traces_traceFilters.getPreservedTraceFilterParams;
166
+ exports.getTraceFilterGroups = domains_traces_traceFilters.getTraceFilterGroups;
164
167
  exports.getTracePropertyFilterTokens = domains_traces_traceFilters.getTracePropertyFilterTokens;
165
168
  exports.hasAnyTraceFilterParams = domains_traces_traceFilters.hasAnyTraceFilterParams;
166
169
  exports.isTraceMetadataFieldId = domains_traces_traceFilters.isTraceMetadataFieldId;
167
170
  exports.loadTraceFiltersFromStorage = domains_traces_traceFilters.loadTraceFiltersFromStorage;
168
171
  exports.metadataFieldIdToParam = domains_traces_traceFilters.metadataFieldIdToParam;
169
172
  exports.metadataParamToFieldId = domains_traces_traceFilters.metadataParamToFieldId;
173
+ exports.parseTraceFilterGroupParam = domains_traces_traceFilters.parseTraceFilterGroupParam;
170
174
  exports.saveTraceFiltersToStorage = domains_traces_traceFilters.saveTraceFiltersToStorage;
175
+ exports.serializeTraceFilterGroup = domains_traces_traceFilters.serializeTraceFilterGroup;
171
176
  exports.traceFilterFieldColor = domains_traces_traceFilters.traceFilterFieldColor;
172
177
  exports.traceFilterFieldIcon = domains_traces_traceFilters.traceFilterFieldIcon;
173
178
  exports.traceFilterOperatorParam = domains_traces_traceFilters.traceFilterOperatorParam;
174
179
  exports.traceFilterTokenOperator = domains_traces_traceFilters.traceFilterTokenOperator;
180
+ exports.traceFiltersToFilterBarExpression = domains_traces_traceFilters.traceFiltersToFilterBarExpression;
175
181
  exports.traceTokensToFilterBarItems = domains_traces_traceFilters.traceTokensToFilterBarItems;
176
182
  exports.TRACE_FILTER_OPERATOR_IDS = domains_traces_traceQueryFilters.TRACE_FILTER_OPERATOR_IDS;
177
183
  exports.TRACE_QUERY_DISCOVERY_MAX_RANGE_MS = domains_traces_traceQueryFilters.TRACE_QUERY_DISCOVERY_MAX_RANGE_MS;
@@ -180,6 +186,7 @@ exports.TRACE_QUERY_OPTIONAL_TRACE_FIELD_IDS = domains_traces_traceQueryFilters.
180
186
  exports.TRACE_QUERY_UNSUPPORTED_FILTER_FIELDS = domains_traces_traceQueryFilters.TRACE_QUERY_UNSUPPORTED_FILTER_FIELDS;
181
187
  exports.buildTraceQueryRequest = domains_traces_traceQueryFilters.buildTraceQueryRequest;
182
188
  exports.clampTraceDiscoveryTimeRange = domains_traces_traceQueryFilters.clampTraceDiscoveryTimeRange;
189
+ exports.isTraceFilterGroup = domains_traces_traceQueryFilters.isTraceFilterGroup;
183
190
  exports.isTraceFilterOperatorId = domains_traces_traceQueryFilters.isTraceFilterOperatorId;
184
191
  exports.CONTEXT_FIELD_IDS = domains_traces_types.CONTEXT_FIELD_IDS;
185
192
  exports.THREAD_TRACE_MESSAGES_TAB = domains_traces_components_threadTrace_threadTraceRow.THREAD_TRACE_MESSAGES_TAB;
@@ -1 +1 @@
1
- {"version":3,"file":"traces.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"traces.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -56,8 +56,8 @@ export { flattenToSearchText } from './traces/utils/flatten-to-search-text.es.js
56
56
  export { selectSearchableSpans, toSearchableSpans } from './traces/utils/to-searchable-spans.es.js';
57
57
  export { getSpanTimingLayout } from './traces/utils/span-timing.es.js';
58
58
  export { formatSpanDuration, getInputPreview, getTokenLimitMessage, isTokenLimitExceeded } from './traces/utils/span-utils.es.js';
59
- export { DEFAULT_TRACE_FILTERS_STORAGE_KEY, ROOT_ENTITY_TYPES, ROOT_ENTITY_TYPE_OPTIONS, TRACE_ANCHOR_SPAN_ID_PARAM, TRACE_DATE_FROM_PARAM, TRACE_DATE_PRESET_PARAM, TRACE_DATE_PRESET_VALUES, TRACE_DATE_TO_PARAM, TRACE_FILTER_BAR_OPERATORS, TRACE_FILTER_OPERATOR_PARAM_SUFFIX, TRACE_LIST_MODE_OPTIONS, TRACE_LIST_MODE_PARAM, TRACE_LIST_MODE_VALUES, TRACE_METADATA_FILTER_FIELD_PREFIX, TRACE_METADATA_FILTER_PARAM_PREFIX, TRACE_PROPERTY_FILTER_FIELD_IDS, TRACE_PROPERTY_FILTER_PARAM_BY_FIELD, TRACE_ROOT_ENTITY_TYPE_PARAM, TRACE_STATUS_OPTIONS, TRACE_STATUS_PARAM, TRACE_STATUS_VALUES, TRACE_SYNTHETIC_FILTER_FIELD_IDS, applyTracePropertyFilterTokens, buildTraceListFilters, clearSavedTraceFilters, createTraceFilterBarFields, filterBarItemsToTraceTokens, getPreservedTraceFilterParams, getTracePropertyFilterTokens, hasAnyTraceFilterParams, isTraceMetadataFieldId, loadTraceFiltersFromStorage, metadataFieldIdToParam, metadataParamToFieldId, saveTraceFiltersToStorage, traceFilterFieldColor, traceFilterFieldIcon, traceFilterOperatorParam, traceFilterTokenOperator, traceTokensToFilterBarItems } from './traces/trace-filters.es.js';
60
- export { TRACE_FILTER_OPERATOR_IDS, TRACE_QUERY_DISCOVERY_MAX_RANGE_MS, TRACE_QUERY_NUMERIC_FIELD_IDS, TRACE_QUERY_OPTIONAL_TRACE_FIELD_IDS, TRACE_QUERY_UNSUPPORTED_FILTER_FIELDS, buildTraceQueryRequest, clampTraceDiscoveryTimeRange, isTraceFilterOperatorId } from './traces/trace-query-filters.es.js';
59
+ export { DEFAULT_TRACE_FILTERS_STORAGE_KEY, ROOT_ENTITY_TYPES, ROOT_ENTITY_TYPE_OPTIONS, TRACE_ANCHOR_SPAN_ID_PARAM, TRACE_DATE_FROM_PARAM, TRACE_DATE_PRESET_PARAM, TRACE_DATE_PRESET_VALUES, TRACE_DATE_TO_PARAM, TRACE_FILTER_BAR_OPERATORS, TRACE_FILTER_GROUP_PARAM, TRACE_FILTER_OPERATOR_PARAM_SUFFIX, TRACE_LIST_MODE_OPTIONS, TRACE_LIST_MODE_PARAM, TRACE_LIST_MODE_VALUES, TRACE_METADATA_FILTER_FIELD_PREFIX, TRACE_METADATA_FILTER_PARAM_PREFIX, TRACE_PROPERTY_FILTER_FIELD_IDS, TRACE_PROPERTY_FILTER_PARAM_BY_FIELD, TRACE_ROOT_ENTITY_TYPE_PARAM, TRACE_STATUS_OPTIONS, TRACE_STATUS_PARAM, TRACE_STATUS_VALUES, TRACE_SYNTHETIC_FILTER_FIELD_IDS, applyTracePropertyFilterTokens, buildTraceListFilters, clearSavedTraceFilters, createTraceFilterBarFields, filterBarExpressionToTraceFilters, filterBarItemsToTraceTokens, getPreservedTraceFilterParams, getTraceFilterGroups, getTracePropertyFilterTokens, hasAnyTraceFilterParams, isTraceMetadataFieldId, loadTraceFiltersFromStorage, metadataFieldIdToParam, metadataParamToFieldId, parseTraceFilterGroupParam, saveTraceFiltersToStorage, serializeTraceFilterGroup, traceFilterFieldColor, traceFilterFieldIcon, traceFilterOperatorParam, traceFilterTokenOperator, traceFiltersToFilterBarExpression, traceTokensToFilterBarItems } from './traces/trace-filters.es.js';
60
+ export { TRACE_FILTER_OPERATOR_IDS, TRACE_QUERY_DISCOVERY_MAX_RANGE_MS, TRACE_QUERY_NUMERIC_FIELD_IDS, TRACE_QUERY_OPTIONAL_TRACE_FIELD_IDS, TRACE_QUERY_UNSUPPORTED_FILTER_FIELDS, buildTraceQueryRequest, clampTraceDiscoveryTimeRange, isTraceFilterGroup, isTraceFilterOperatorId } from './traces/trace-query-filters.es.js';
61
61
  export { CONTEXT_FIELD_IDS } from './traces/types.es.js';
62
62
  export { THREAD_TRACE_MESSAGES_TAB } from './traces/components/thread-trace/thread-trace-row.es.js';
63
63
  export { useThreadTrace } from './traces/components/thread-trace/thread-trace-context.es.js';
@@ -6,6 +6,8 @@ const jsxRuntime = require('react/jsx-runtime');
6
6
  const ee_signals_components_entityIndexModel = require('./entity-index-model.cjs.js');
7
7
  const Badge = require('../../../Badge-BEeYtjmv.cjs');
8
8
  const dataList = require('../../../data-list-CypPKOQ_.cjs');
9
+ require('react');
10
+ require('../../../keyboard/keyboard-shortcuts-context.cjs.js');
9
11
 
10
12
  const columns = "minmax(12rem,1.5fr) minmax(7rem,0.6fr) minmax(8rem,0.7fr) minmax(8rem,0.7fr) minmax(12rem,1fr)";
11
13
  function Status({ entity }) {
@@ -1 +1 @@
1
- {"version":3,"file":"entity-index-list.cjs.js","sources":["../../../../src/ee/signals/components/entity-index-list.tsx"],"sourcesContent":["import type { ThemeLearningEntity } from '@mastra/client-js';\n\nimport { entityIndexMetadata, entityStatusLabel } from './entity-index-model';\nimport { Badge } from '@/ds/components/Badge';\nimport { DataList } from '@/ds/components/DataList';\nimport type { LinkComponent } from '@/ds/types/link-component';\n\nconst columns = 'minmax(12rem,1.5fr) minmax(7rem,0.6fr) minmax(8rem,0.7fr) minmax(8rem,0.7fr) minmax(12rem,1fr)';\n\nexport interface EntityIndexListProps {\n entities: readonly ThemeLearningEntity[];\n hasSearch: boolean;\n getEntityHref: (entity: ThemeLearningEntity) => string;\n LinkComponent: LinkComponent;\n}\n\nfunction Status({ entity }: { entity: ThemeLearningEntity }) {\n const label = entityStatusLabel(entity.status);\n const variant = entity.status === 'ready' ? 'green' : entity.status === 'processing' ? 'blue' : 'neutral';\n return (\n <Badge variant={variant} size=\"sm\" indicator={entity.status === undefined ? undefined : 'dot'}>\n {label}\n </Badge>\n );\n}\n\nexport function EntityIndexList({ entities, hasSearch, getEntityHref, LinkComponent }: EntityIndexListProps) {\n return (\n <section aria-label=\"Trace Intelligence entities\" className=\"min-h-0\">\n <DataList columns={columns} fit=\"container\">\n <DataList.Top>\n <DataList.TopCell>Entity</DataList.TopCell>\n <DataList.TopCell>Traces</DataList.TopCell>\n <DataList.TopCell>Signals set</DataList.TopCell>\n <DataList.TopCell>Status</DataList.TopCell>\n <DataList.TopCell>Updated</DataList.TopCell>\n </DataList.Top>\n {entities.length === 0 && hasSearch ? <DataList.NoMatch message=\"No entities match your search\" /> : null}\n {entities.map(entity => {\n const metadata = entityIndexMetadata(entity);\n return (\n <DataList.RowLink\n key={`${entity.entityType}:${entity.entityId}`}\n to={getEntityHref(entity)}\n LinkComponent={LinkComponent}\n className=\"min-w-0\"\n >\n <DataList.Cell className=\"min-w-0 overflow-visible text-left\">\n <span className=\"sr-only\">Open entity {entity.entityId}</span>\n <span aria-hidden=\"true\" className=\"block overflow-clip text-ellipsis whitespace-nowrap\">\n {entity.entityId}\n </span>\n </DataList.Cell>\n <DataList.NumberCell>{metadata.traceCount}</DataList.NumberCell>\n <DataList.Cell>{metadata.signalsSet}</DataList.Cell>\n <DataList.Cell>\n <Status entity={entity} />\n </DataList.Cell>\n <DataList.Cell title={entity.updatedAt}>{metadata.updatedAt}</DataList.Cell>\n </DataList.RowLink>\n );\n })}\n </DataList>\n </section>\n );\n}\n"],"names":["entityStatusLabel","jsx","Badge","jsxs","DataList","entityIndexMetadata"],"mappings":"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"}
1
+ {"version":3,"file":"entity-index-list.cjs.js","sources":["../../../../src/ee/signals/components/entity-index-list.tsx"],"sourcesContent":["import type { ThemeLearningEntity } from '@mastra/client-js';\n\nimport { entityIndexMetadata, entityStatusLabel } from './entity-index-model';\nimport { Badge } from '@/ds/components/Badge';\nimport { DataList } from '@/ds/components/DataList';\nimport type { LinkComponent } from '@/ds/types/link-component';\n\nconst columns = 'minmax(12rem,1.5fr) minmax(7rem,0.6fr) minmax(8rem,0.7fr) minmax(8rem,0.7fr) minmax(12rem,1fr)';\n\nexport interface EntityIndexListProps {\n entities: readonly ThemeLearningEntity[];\n hasSearch: boolean;\n getEntityHref: (entity: ThemeLearningEntity) => string;\n LinkComponent: LinkComponent;\n}\n\nfunction Status({ entity }: { entity: ThemeLearningEntity }) {\n const label = entityStatusLabel(entity.status);\n const variant = entity.status === 'ready' ? 'green' : entity.status === 'processing' ? 'blue' : 'neutral';\n return (\n <Badge variant={variant} size=\"sm\" indicator={entity.status === undefined ? undefined : 'dot'}>\n {label}\n </Badge>\n );\n}\n\nexport function EntityIndexList({ entities, hasSearch, getEntityHref, LinkComponent }: EntityIndexListProps) {\n return (\n <section aria-label=\"Trace Intelligence entities\" className=\"min-h-0\">\n <DataList columns={columns} fit=\"container\">\n <DataList.Top>\n <DataList.TopCell>Entity</DataList.TopCell>\n <DataList.TopCell>Traces</DataList.TopCell>\n <DataList.TopCell>Signals set</DataList.TopCell>\n <DataList.TopCell>Status</DataList.TopCell>\n <DataList.TopCell>Updated</DataList.TopCell>\n </DataList.Top>\n {entities.length === 0 && hasSearch ? <DataList.NoMatch message=\"No entities match your search\" /> : null}\n {entities.map(entity => {\n const metadata = entityIndexMetadata(entity);\n return (\n <DataList.RowLink\n key={`${entity.entityType}:${entity.entityId}`}\n to={getEntityHref(entity)}\n LinkComponent={LinkComponent}\n className=\"min-w-0\"\n >\n <DataList.Cell className=\"min-w-0 overflow-visible text-left\">\n <span className=\"sr-only\">Open entity {entity.entityId}</span>\n <span aria-hidden=\"true\" className=\"block overflow-clip text-ellipsis whitespace-nowrap\">\n {entity.entityId}\n </span>\n </DataList.Cell>\n <DataList.NumberCell>{metadata.traceCount}</DataList.NumberCell>\n <DataList.Cell>{metadata.signalsSet}</DataList.Cell>\n <DataList.Cell>\n <Status entity={entity} />\n </DataList.Cell>\n <DataList.Cell title={entity.updatedAt}>{metadata.updatedAt}</DataList.Cell>\n </DataList.RowLink>\n );\n })}\n </DataList>\n </section>\n );\n}\n"],"names":["entityStatusLabel","jsx","Badge","jsxs","DataList","entityIndexMetadata"],"mappings":"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"}
@@ -2,6 +2,8 @@ import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { entityIndexMetadata, entityStatusLabel } from './entity-index-model.es.js';
3
3
  import { B as Badge } from '../../../Badge-TD55_qZJ.js';
4
4
  import { D as DataList } from '../../../data-list-DnSdaRES.js';
5
+ import 'react';
6
+ import '../../../keyboard/keyboard-shortcuts-context.es.js';
5
7
 
6
8
  const columns = "minmax(12rem,1.5fr) minmax(7rem,0.6fr) minmax(8rem,0.7fr) minmax(8rem,0.7fr) minmax(12rem,1fr)";
7
9
  function Status({ entity }) {
@@ -1 +1 @@
1
- {"version":3,"file":"entity-index-list.es.js","sources":["../../../../src/ee/signals/components/entity-index-list.tsx"],"sourcesContent":["import type { ThemeLearningEntity } from '@mastra/client-js';\n\nimport { entityIndexMetadata, entityStatusLabel } from './entity-index-model';\nimport { Badge } from '@/ds/components/Badge';\nimport { DataList } from '@/ds/components/DataList';\nimport type { LinkComponent } from '@/ds/types/link-component';\n\nconst columns = 'minmax(12rem,1.5fr) minmax(7rem,0.6fr) minmax(8rem,0.7fr) minmax(8rem,0.7fr) minmax(12rem,1fr)';\n\nexport interface EntityIndexListProps {\n entities: readonly ThemeLearningEntity[];\n hasSearch: boolean;\n getEntityHref: (entity: ThemeLearningEntity) => string;\n LinkComponent: LinkComponent;\n}\n\nfunction Status({ entity }: { entity: ThemeLearningEntity }) {\n const label = entityStatusLabel(entity.status);\n const variant = entity.status === 'ready' ? 'green' : entity.status === 'processing' ? 'blue' : 'neutral';\n return (\n <Badge variant={variant} size=\"sm\" indicator={entity.status === undefined ? undefined : 'dot'}>\n {label}\n </Badge>\n );\n}\n\nexport function EntityIndexList({ entities, hasSearch, getEntityHref, LinkComponent }: EntityIndexListProps) {\n return (\n <section aria-label=\"Trace Intelligence entities\" className=\"min-h-0\">\n <DataList columns={columns} fit=\"container\">\n <DataList.Top>\n <DataList.TopCell>Entity</DataList.TopCell>\n <DataList.TopCell>Traces</DataList.TopCell>\n <DataList.TopCell>Signals set</DataList.TopCell>\n <DataList.TopCell>Status</DataList.TopCell>\n <DataList.TopCell>Updated</DataList.TopCell>\n </DataList.Top>\n {entities.length === 0 && hasSearch ? <DataList.NoMatch message=\"No entities match your search\" /> : null}\n {entities.map(entity => {\n const metadata = entityIndexMetadata(entity);\n return (\n <DataList.RowLink\n key={`${entity.entityType}:${entity.entityId}`}\n to={getEntityHref(entity)}\n LinkComponent={LinkComponent}\n className=\"min-w-0\"\n >\n <DataList.Cell className=\"min-w-0 overflow-visible text-left\">\n <span className=\"sr-only\">Open entity {entity.entityId}</span>\n <span aria-hidden=\"true\" className=\"block overflow-clip text-ellipsis whitespace-nowrap\">\n {entity.entityId}\n </span>\n </DataList.Cell>\n <DataList.NumberCell>{metadata.traceCount}</DataList.NumberCell>\n <DataList.Cell>{metadata.signalsSet}</DataList.Cell>\n <DataList.Cell>\n <Status entity={entity} />\n </DataList.Cell>\n <DataList.Cell title={entity.updatedAt}>{metadata.updatedAt}</DataList.Cell>\n </DataList.RowLink>\n );\n })}\n </DataList>\n </section>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entity-index-list.es.js","sources":["../../../../src/ee/signals/components/entity-index-list.tsx"],"sourcesContent":["import type { ThemeLearningEntity } from '@mastra/client-js';\n\nimport { entityIndexMetadata, entityStatusLabel } from './entity-index-model';\nimport { Badge } from '@/ds/components/Badge';\nimport { DataList } from '@/ds/components/DataList';\nimport type { LinkComponent } from '@/ds/types/link-component';\n\nconst columns = 'minmax(12rem,1.5fr) minmax(7rem,0.6fr) minmax(8rem,0.7fr) minmax(8rem,0.7fr) minmax(12rem,1fr)';\n\nexport interface EntityIndexListProps {\n entities: readonly ThemeLearningEntity[];\n hasSearch: boolean;\n getEntityHref: (entity: ThemeLearningEntity) => string;\n LinkComponent: LinkComponent;\n}\n\nfunction Status({ entity }: { entity: ThemeLearningEntity }) {\n const label = entityStatusLabel(entity.status);\n const variant = entity.status === 'ready' ? 'green' : entity.status === 'processing' ? 'blue' : 'neutral';\n return (\n <Badge variant={variant} size=\"sm\" indicator={entity.status === undefined ? undefined : 'dot'}>\n {label}\n </Badge>\n );\n}\n\nexport function EntityIndexList({ entities, hasSearch, getEntityHref, LinkComponent }: EntityIndexListProps) {\n return (\n <section aria-label=\"Trace Intelligence entities\" className=\"min-h-0\">\n <DataList columns={columns} fit=\"container\">\n <DataList.Top>\n <DataList.TopCell>Entity</DataList.TopCell>\n <DataList.TopCell>Traces</DataList.TopCell>\n <DataList.TopCell>Signals set</DataList.TopCell>\n <DataList.TopCell>Status</DataList.TopCell>\n <DataList.TopCell>Updated</DataList.TopCell>\n </DataList.Top>\n {entities.length === 0 && hasSearch ? <DataList.NoMatch message=\"No entities match your search\" /> : null}\n {entities.map(entity => {\n const metadata = entityIndexMetadata(entity);\n return (\n <DataList.RowLink\n key={`${entity.entityType}:${entity.entityId}`}\n to={getEntityHref(entity)}\n LinkComponent={LinkComponent}\n className=\"min-w-0\"\n >\n <DataList.Cell className=\"min-w-0 overflow-visible text-left\">\n <span className=\"sr-only\">Open entity {entity.entityId}</span>\n <span aria-hidden=\"true\" className=\"block overflow-clip text-ellipsis whitespace-nowrap\">\n {entity.entityId}\n </span>\n </DataList.Cell>\n <DataList.NumberCell>{metadata.traceCount}</DataList.NumberCell>\n <DataList.Cell>{metadata.signalsSet}</DataList.Cell>\n <DataList.Cell>\n <Status entity={entity} />\n </DataList.Cell>\n <DataList.Cell title={entity.updatedAt}>{metadata.updatedAt}</DataList.Cell>\n </DataList.RowLink>\n );\n })}\n </DataList>\n </section>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -3,7 +3,6 @@
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
5
  const jsxRuntime = require('react/jsx-runtime');
6
- const lucideReact = require('lucide-react');
7
6
  const React = require('react');
8
7
  require('@tanstack/react-query');
9
8
  const ee_signals_useTraceIntelligence = require('../use-trace-intelligence.cjs.js');
@@ -16,8 +15,7 @@ const ee_signals_signalsErrorState = require('../signals-error-state.cjs.js');
16
15
  const ee_signals_signalsLoadingSkeleton = require('../signals-loading-skeleton.cjs.js');
17
16
  const ee_signals_traceIntelligenceProvider = require('../trace-intelligence-provider.cjs.js');
18
17
  const ee_signals_components_signalsEmptyState = require('./signals-empty-state.cjs.js');
19
- const EmptyState = require('../../../EmptyState-CdRjFB06.cjs');
20
- const noDataPageLayout = require('../../../no-data-page-layout-Drzbg_w8.cjs');
18
+ const EmptyState = require('../../../EmptyState-0MgNiP40.cjs');
21
19
 
22
20
  function TraceIntelligenceEntityDetail({
23
21
  entityId,
@@ -51,14 +49,14 @@ function TraceIntelligenceEntityDetail({
51
49
  return /* @__PURE__ */ jsxRuntime.jsx(ee_signals_signalsErrorState.SignalsErrorState, { message: "Unable to load trace signal entity.", onRetry: () => void entitiesQuery.refetch() });
52
50
  }
53
51
  if (!entity) {
54
- return /* @__PURE__ */ jsxRuntime.jsx(noDataPageLayout.NoDataPageLayout, { children: /* @__PURE__ */ jsxRuntime.jsx(
52
+ return /* @__PURE__ */ jsxRuntime.jsx(
55
53
  EmptyState.EmptyState,
56
54
  {
57
- iconSlot: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Radar, { "aria-hidden": "true" }),
58
55
  titleSlot: "Trace Intelligence entity not found",
59
- descriptionSlot: "The requested entity is unavailable in this project."
56
+ descriptionSlot: "The requested entity is unavailable in this project.",
57
+ variant: "fill"
60
58
  }
61
- ) });
59
+ );
62
60
  }
63
61
  if (signalNames.length < 2) {
64
62
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -1 +1 @@
1
- {"version":3,"file":"trace-intelligence-entity-detail.cjs.js","sources":["../../../../src/ee/signals/components/trace-intelligence-entity-detail.tsx"],"sourcesContent":["import { Radar } from 'lucide-react';\nimport { useState, type ReactNode } from 'react';\n\nimport { useEntityLearningProgress, useThemeEntities, useThemeSnapshots } from '../hooks';\nimport { SankeySignals } from '../sankey-signals';\nimport { orderedSignals } from '../signal-formatting';\nimport { SignalsErrorState } from '../signals-error-state';\nimport { SignalsLoadingSkeleton } from '../signals-loading-skeleton';\nimport { TraceIntelligenceProvider } from '../trace-intelligence-provider';\nimport { useTraceIntelligence } from '../use-trace-intelligence';\nimport { SignalsEmptyState } from './signals-empty-state';\nimport { EmptyState } from '@/ds/components/EmptyState';\nimport { NoDataPageLayout } from '@/ds/components/PageLayout';\n\nexport interface TraceIntelligenceEntityDetailProps {\n entityId: string;\n entityType: string;\n dateFrom?: Date;\n dateTo?: Date;\n dateRangePicker?: ReactNode;\n}\n\nexport function TraceIntelligenceEntityDetail({\n entityId,\n entityType,\n dateFrom,\n dateTo,\n dateRangePicker,\n}: TraceIntelligenceEntityDetailProps) {\n const [selectedThemeId, setSelectedThemeId] = useState<string>();\n const [selectedFrameId, setSelectedFrameId] = useState<string>();\n const context = useTraceIntelligence();\n const entitiesQuery = useThemeEntities(entityType);\n const entity = entitiesQuery.data?.entities.find(\n candidate => candidate.entityType === entityType && candidate.entityId === entityId,\n );\n const signalCatalog = entity?.signalCatalog ?? context.signalCatalog;\n const signalNames = entity ? orderedSignals(signalCatalog, entity.availableSignals) : [];\n const progressQuery = useEntityLearningProgress(\n entityId,\n entityType,\n !entitiesQuery.isPending && !entitiesQuery.isError && entity !== undefined && signalNames.length < 2,\n );\n const snapshotsQuery = useThemeSnapshots(entityId, entityType, signalNames, dateFrom, dateTo);\n const snapshots = snapshotsQuery.data?.snapshots ?? [];\n const sortedSnapshots = snapshots.toSorted((left, right) => left.ordinal - right.ordinal);\n const selectedSnapshot = sortedSnapshots.find(snapshot => snapshot.snapshotId === selectedFrameId);\n const frameId = selectedSnapshot?.snapshotId ?? sortedSnapshots[0]?.snapshotId;\n const pickerRow = dateRangePicker ? (\n <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>\n ) : undefined;\n\n if (entitiesQuery.isPending) return <SignalsLoadingSkeleton />;\n if (entitiesQuery.isError) {\n return (\n <SignalsErrorState message=\"Unable to load trace signal entity.\" onRetry={() => void entitiesQuery.refetch()} />\n );\n }\n if (!entity) {\n return (\n <NoDataPageLayout>\n <EmptyState\n iconSlot={<Radar aria-hidden=\"true\" />}\n titleSlot=\"Trace Intelligence entity not found\"\n descriptionSlot=\"The requested entity is unavailable in this project.\"\n />\n </NoDataPageLayout>\n );\n }\n if (signalNames.length < 2) {\n return (\n <TraceIntelligenceProvider\n cacheScope={context.cacheScope}\n request={context.request}\n LinkComponent={context.LinkComponent}\n getTraceHref={context.getTraceHref}\n signalCatalog={signalCatalog}\n signalManagement={context.signalManagement}\n >\n <SignalsEmptyState\n LinkComponent={context.LinkComponent}\n progress={progressQuery.data}\n signalCatalog={signalCatalog}\n />\n </TraceIntelligenceProvider>\n );\n }\n if (snapshotsQuery.isPending) {\n return (\n <>\n {pickerRow}\n <SignalsLoadingSkeleton />\n </>\n );\n }\n if (snapshotsQuery.isError) {\n return (\n <>\n {pickerRow}\n <SignalsErrorState message=\"Unable to load trace signal flow.\" onRetry={() => void snapshotsQuery.refetch()} />\n </>\n );\n }\n if (!frameId) {\n return (\n <>\n {pickerRow}\n <SignalsEmptyState LinkComponent={context.LinkComponent} signalCatalog={signalCatalog} isRangeEmpty />\n </>\n );\n }\n\n return (\n <TraceIntelligenceProvider\n cacheScope={context.cacheScope}\n request={context.request}\n LinkComponent={context.LinkComponent}\n getTraceHref={context.getTraceHref}\n signalCatalog={signalCatalog}\n signalManagement={context.signalManagement}\n >\n <SankeySignals\n key={`${entity.entityId}:${signalNames.join(',')}`}\n entityId={entity.entityId}\n entityType={entity.entityType}\n signalNames={signalNames}\n dateFrom={dateFrom}\n dateTo={dateTo}\n selectedThemeId={selectedThemeId}\n onSelectedThemeIdChange={setSelectedThemeId}\n selectedFrameId={frameId}\n onFrameIdChange={setSelectedFrameId}\n dateRangePicker={dateRangePicker}\n />\n </TraceIntelligenceProvider>\n );\n}\n"],"names":["useState","useTraceIntelligence","useThemeEntities","orderedSignals","useEntityLearningProgress","useThemeSnapshots","jsx","SignalsLoadingSkeleton","SignalsErrorState","NoDataPageLayout","EmptyState","Radar","TraceIntelligenceProvider","SignalsEmptyState","jsxs","Fragment","SankeySignals"],"mappings":"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"}
1
+ {"version":3,"file":"trace-intelligence-entity-detail.cjs.js","sources":["../../../../src/ee/signals/components/trace-intelligence-entity-detail.tsx"],"sourcesContent":["import { useState, type ReactNode } from 'react';\n\nimport { useEntityLearningProgress, useThemeEntities, useThemeSnapshots } from '../hooks';\nimport { SankeySignals } from '../sankey-signals';\nimport { orderedSignals } from '../signal-formatting';\nimport { SignalsErrorState } from '../signals-error-state';\nimport { SignalsLoadingSkeleton } from '../signals-loading-skeleton';\nimport { TraceIntelligenceProvider } from '../trace-intelligence-provider';\nimport { useTraceIntelligence } from '../use-trace-intelligence';\nimport { SignalsEmptyState } from './signals-empty-state';\nimport { EmptyState } from '@/ds/components/EmptyState';\n\nexport interface TraceIntelligenceEntityDetailProps {\n entityId: string;\n entityType: string;\n dateFrom?: Date;\n dateTo?: Date;\n dateRangePicker?: ReactNode;\n}\n\nexport function TraceIntelligenceEntityDetail({\n entityId,\n entityType,\n dateFrom,\n dateTo,\n dateRangePicker,\n}: TraceIntelligenceEntityDetailProps) {\n const [selectedThemeId, setSelectedThemeId] = useState<string>();\n const [selectedFrameId, setSelectedFrameId] = useState<string>();\n const context = useTraceIntelligence();\n const entitiesQuery = useThemeEntities(entityType);\n const entity = entitiesQuery.data?.entities.find(\n candidate => candidate.entityType === entityType && candidate.entityId === entityId,\n );\n const signalCatalog = entity?.signalCatalog ?? context.signalCatalog;\n const signalNames = entity ? orderedSignals(signalCatalog, entity.availableSignals) : [];\n const progressQuery = useEntityLearningProgress(\n entityId,\n entityType,\n !entitiesQuery.isPending && !entitiesQuery.isError && entity !== undefined && signalNames.length < 2,\n );\n const snapshotsQuery = useThemeSnapshots(entityId, entityType, signalNames, dateFrom, dateTo);\n const snapshots = snapshotsQuery.data?.snapshots ?? [];\n const sortedSnapshots = snapshots.toSorted((left, right) => left.ordinal - right.ordinal);\n const selectedSnapshot = sortedSnapshots.find(snapshot => snapshot.snapshotId === selectedFrameId);\n const frameId = selectedSnapshot?.snapshotId ?? sortedSnapshots[0]?.snapshotId;\n const pickerRow = dateRangePicker ? (\n <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>\n ) : undefined;\n\n if (entitiesQuery.isPending) return <SignalsLoadingSkeleton />;\n if (entitiesQuery.isError) {\n return (\n <SignalsErrorState message=\"Unable to load trace signal entity.\" onRetry={() => void entitiesQuery.refetch()} />\n );\n }\n if (!entity) {\n return (\n <EmptyState\n titleSlot=\"Trace Intelligence entity not found\"\n descriptionSlot=\"The requested entity is unavailable in this project.\"\n variant=\"fill\"\n />\n );\n }\n if (signalNames.length < 2) {\n return (\n <TraceIntelligenceProvider\n cacheScope={context.cacheScope}\n request={context.request}\n LinkComponent={context.LinkComponent}\n getTraceHref={context.getTraceHref}\n signalCatalog={signalCatalog}\n signalManagement={context.signalManagement}\n >\n <SignalsEmptyState\n LinkComponent={context.LinkComponent}\n progress={progressQuery.data}\n signalCatalog={signalCatalog}\n />\n </TraceIntelligenceProvider>\n );\n }\n if (snapshotsQuery.isPending) {\n return (\n <>\n {pickerRow}\n <SignalsLoadingSkeleton />\n </>\n );\n }\n if (snapshotsQuery.isError) {\n return (\n <>\n {pickerRow}\n <SignalsErrorState message=\"Unable to load trace signal flow.\" onRetry={() => void snapshotsQuery.refetch()} />\n </>\n );\n }\n if (!frameId) {\n return (\n <>\n {pickerRow}\n <SignalsEmptyState LinkComponent={context.LinkComponent} signalCatalog={signalCatalog} isRangeEmpty />\n </>\n );\n }\n\n return (\n <TraceIntelligenceProvider\n cacheScope={context.cacheScope}\n request={context.request}\n LinkComponent={context.LinkComponent}\n getTraceHref={context.getTraceHref}\n signalCatalog={signalCatalog}\n signalManagement={context.signalManagement}\n >\n <SankeySignals\n key={`${entity.entityId}:${signalNames.join(',')}`}\n entityId={entity.entityId}\n entityType={entity.entityType}\n signalNames={signalNames}\n dateFrom={dateFrom}\n dateTo={dateTo}\n selectedThemeId={selectedThemeId}\n onSelectedThemeIdChange={setSelectedThemeId}\n selectedFrameId={frameId}\n onFrameIdChange={setSelectedFrameId}\n dateRangePicker={dateRangePicker}\n />\n </TraceIntelligenceProvider>\n );\n}\n"],"names":["useState","useTraceIntelligence","useThemeEntities","orderedSignals","useEntityLearningProgress","useThemeSnapshots","jsx","SignalsLoadingSkeleton","SignalsErrorState","EmptyState","TraceIntelligenceProvider","SignalsEmptyState","jsxs","Fragment","SankeySignals"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
- import { Radar } from 'lucide-react';
3
2
  import { useState } from 'react';
4
3
  import '@tanstack/react-query';
5
4
  import { useTraceIntelligence } from '../use-trace-intelligence.es.js';
@@ -12,8 +11,7 @@ import { SignalsErrorState } from '../signals-error-state.es.js';
12
11
  import { SignalsLoadingSkeleton } from '../signals-loading-skeleton.es.js';
13
12
  import { TraceIntelligenceProvider } from '../trace-intelligence-provider.es.js';
14
13
  import { SignalsEmptyState } from './signals-empty-state.es.js';
15
- import { E as EmptyState } from '../../../EmptyState-UWXhBp5U.js';
16
- import { N as NoDataPageLayout } from '../../../no-data-page-layout-DcVPjj-J.js';
14
+ import { E as EmptyState } from '../../../EmptyState-CiZVWvpH.js';
17
15
 
18
16
  function TraceIntelligenceEntityDetail({
19
17
  entityId,
@@ -47,14 +45,14 @@ function TraceIntelligenceEntityDetail({
47
45
  return /* @__PURE__ */ jsx(SignalsErrorState, { message: "Unable to load trace signal entity.", onRetry: () => void entitiesQuery.refetch() });
48
46
  }
49
47
  if (!entity) {
50
- return /* @__PURE__ */ jsx(NoDataPageLayout, { children: /* @__PURE__ */ jsx(
48
+ return /* @__PURE__ */ jsx(
51
49
  EmptyState,
52
50
  {
53
- iconSlot: /* @__PURE__ */ jsx(Radar, { "aria-hidden": "true" }),
54
51
  titleSlot: "Trace Intelligence entity not found",
55
- descriptionSlot: "The requested entity is unavailable in this project."
52
+ descriptionSlot: "The requested entity is unavailable in this project.",
53
+ variant: "fill"
56
54
  }
57
- ) });
55
+ );
58
56
  }
59
57
  if (signalNames.length < 2) {
60
58
  return /* @__PURE__ */ jsx(
@@ -1 +1 @@
1
- {"version":3,"file":"trace-intelligence-entity-detail.es.js","sources":["../../../../src/ee/signals/components/trace-intelligence-entity-detail.tsx"],"sourcesContent":["import { Radar } from 'lucide-react';\nimport { useState, type ReactNode } from 'react';\n\nimport { useEntityLearningProgress, useThemeEntities, useThemeSnapshots } from '../hooks';\nimport { SankeySignals } from '../sankey-signals';\nimport { orderedSignals } from '../signal-formatting';\nimport { SignalsErrorState } from '../signals-error-state';\nimport { SignalsLoadingSkeleton } from '../signals-loading-skeleton';\nimport { TraceIntelligenceProvider } from '../trace-intelligence-provider';\nimport { useTraceIntelligence } from '../use-trace-intelligence';\nimport { SignalsEmptyState } from './signals-empty-state';\nimport { EmptyState } from '@/ds/components/EmptyState';\nimport { NoDataPageLayout } from '@/ds/components/PageLayout';\n\nexport interface TraceIntelligenceEntityDetailProps {\n entityId: string;\n entityType: string;\n dateFrom?: Date;\n dateTo?: Date;\n dateRangePicker?: ReactNode;\n}\n\nexport function TraceIntelligenceEntityDetail({\n entityId,\n entityType,\n dateFrom,\n dateTo,\n dateRangePicker,\n}: TraceIntelligenceEntityDetailProps) {\n const [selectedThemeId, setSelectedThemeId] = useState<string>();\n const [selectedFrameId, setSelectedFrameId] = useState<string>();\n const context = useTraceIntelligence();\n const entitiesQuery = useThemeEntities(entityType);\n const entity = entitiesQuery.data?.entities.find(\n candidate => candidate.entityType === entityType && candidate.entityId === entityId,\n );\n const signalCatalog = entity?.signalCatalog ?? context.signalCatalog;\n const signalNames = entity ? orderedSignals(signalCatalog, entity.availableSignals) : [];\n const progressQuery = useEntityLearningProgress(\n entityId,\n entityType,\n !entitiesQuery.isPending && !entitiesQuery.isError && entity !== undefined && signalNames.length < 2,\n );\n const snapshotsQuery = useThemeSnapshots(entityId, entityType, signalNames, dateFrom, dateTo);\n const snapshots = snapshotsQuery.data?.snapshots ?? [];\n const sortedSnapshots = snapshots.toSorted((left, right) => left.ordinal - right.ordinal);\n const selectedSnapshot = sortedSnapshots.find(snapshot => snapshot.snapshotId === selectedFrameId);\n const frameId = selectedSnapshot?.snapshotId ?? sortedSnapshots[0]?.snapshotId;\n const pickerRow = dateRangePicker ? (\n <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>\n ) : undefined;\n\n if (entitiesQuery.isPending) return <SignalsLoadingSkeleton />;\n if (entitiesQuery.isError) {\n return (\n <SignalsErrorState message=\"Unable to load trace signal entity.\" onRetry={() => void entitiesQuery.refetch()} />\n );\n }\n if (!entity) {\n return (\n <NoDataPageLayout>\n <EmptyState\n iconSlot={<Radar aria-hidden=\"true\" />}\n titleSlot=\"Trace Intelligence entity not found\"\n descriptionSlot=\"The requested entity is unavailable in this project.\"\n />\n </NoDataPageLayout>\n );\n }\n if (signalNames.length < 2) {\n return (\n <TraceIntelligenceProvider\n cacheScope={context.cacheScope}\n request={context.request}\n LinkComponent={context.LinkComponent}\n getTraceHref={context.getTraceHref}\n signalCatalog={signalCatalog}\n signalManagement={context.signalManagement}\n >\n <SignalsEmptyState\n LinkComponent={context.LinkComponent}\n progress={progressQuery.data}\n signalCatalog={signalCatalog}\n />\n </TraceIntelligenceProvider>\n );\n }\n if (snapshotsQuery.isPending) {\n return (\n <>\n {pickerRow}\n <SignalsLoadingSkeleton />\n </>\n );\n }\n if (snapshotsQuery.isError) {\n return (\n <>\n {pickerRow}\n <SignalsErrorState message=\"Unable to load trace signal flow.\" onRetry={() => void snapshotsQuery.refetch()} />\n </>\n );\n }\n if (!frameId) {\n return (\n <>\n {pickerRow}\n <SignalsEmptyState LinkComponent={context.LinkComponent} signalCatalog={signalCatalog} isRangeEmpty />\n </>\n );\n }\n\n return (\n <TraceIntelligenceProvider\n cacheScope={context.cacheScope}\n request={context.request}\n LinkComponent={context.LinkComponent}\n getTraceHref={context.getTraceHref}\n signalCatalog={signalCatalog}\n signalManagement={context.signalManagement}\n >\n <SankeySignals\n key={`${entity.entityId}:${signalNames.join(',')}`}\n entityId={entity.entityId}\n entityType={entity.entityType}\n signalNames={signalNames}\n dateFrom={dateFrom}\n dateTo={dateTo}\n selectedThemeId={selectedThemeId}\n onSelectedThemeIdChange={setSelectedThemeId}\n selectedFrameId={frameId}\n onFrameIdChange={setSelectedFrameId}\n dateRangePicker={dateRangePicker}\n />\n </TraceIntelligenceProvider>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trace-intelligence-entity-detail.es.js","sources":["../../../../src/ee/signals/components/trace-intelligence-entity-detail.tsx"],"sourcesContent":["import { useState, type ReactNode } from 'react';\n\nimport { useEntityLearningProgress, useThemeEntities, useThemeSnapshots } from '../hooks';\nimport { SankeySignals } from '../sankey-signals';\nimport { orderedSignals } from '../signal-formatting';\nimport { SignalsErrorState } from '../signals-error-state';\nimport { SignalsLoadingSkeleton } from '../signals-loading-skeleton';\nimport { TraceIntelligenceProvider } from '../trace-intelligence-provider';\nimport { useTraceIntelligence } from '../use-trace-intelligence';\nimport { SignalsEmptyState } from './signals-empty-state';\nimport { EmptyState } from '@/ds/components/EmptyState';\n\nexport interface TraceIntelligenceEntityDetailProps {\n entityId: string;\n entityType: string;\n dateFrom?: Date;\n dateTo?: Date;\n dateRangePicker?: ReactNode;\n}\n\nexport function TraceIntelligenceEntityDetail({\n entityId,\n entityType,\n dateFrom,\n dateTo,\n dateRangePicker,\n}: TraceIntelligenceEntityDetailProps) {\n const [selectedThemeId, setSelectedThemeId] = useState<string>();\n const [selectedFrameId, setSelectedFrameId] = useState<string>();\n const context = useTraceIntelligence();\n const entitiesQuery = useThemeEntities(entityType);\n const entity = entitiesQuery.data?.entities.find(\n candidate => candidate.entityType === entityType && candidate.entityId === entityId,\n );\n const signalCatalog = entity?.signalCatalog ?? context.signalCatalog;\n const signalNames = entity ? orderedSignals(signalCatalog, entity.availableSignals) : [];\n const progressQuery = useEntityLearningProgress(\n entityId,\n entityType,\n !entitiesQuery.isPending && !entitiesQuery.isError && entity !== undefined && signalNames.length < 2,\n );\n const snapshotsQuery = useThemeSnapshots(entityId, entityType, signalNames, dateFrom, dateTo);\n const snapshots = snapshotsQuery.data?.snapshots ?? [];\n const sortedSnapshots = snapshots.toSorted((left, right) => left.ordinal - right.ordinal);\n const selectedSnapshot = sortedSnapshots.find(snapshot => snapshot.snapshotId === selectedFrameId);\n const frameId = selectedSnapshot?.snapshotId ?? sortedSnapshots[0]?.snapshotId;\n const pickerRow = dateRangePicker ? (\n <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>\n ) : undefined;\n\n if (entitiesQuery.isPending) return <SignalsLoadingSkeleton />;\n if (entitiesQuery.isError) {\n return (\n <SignalsErrorState message=\"Unable to load trace signal entity.\" onRetry={() => void entitiesQuery.refetch()} />\n );\n }\n if (!entity) {\n return (\n <EmptyState\n titleSlot=\"Trace Intelligence entity not found\"\n descriptionSlot=\"The requested entity is unavailable in this project.\"\n variant=\"fill\"\n />\n );\n }\n if (signalNames.length < 2) {\n return (\n <TraceIntelligenceProvider\n cacheScope={context.cacheScope}\n request={context.request}\n LinkComponent={context.LinkComponent}\n getTraceHref={context.getTraceHref}\n signalCatalog={signalCatalog}\n signalManagement={context.signalManagement}\n >\n <SignalsEmptyState\n LinkComponent={context.LinkComponent}\n progress={progressQuery.data}\n signalCatalog={signalCatalog}\n />\n </TraceIntelligenceProvider>\n );\n }\n if (snapshotsQuery.isPending) {\n return (\n <>\n {pickerRow}\n <SignalsLoadingSkeleton />\n </>\n );\n }\n if (snapshotsQuery.isError) {\n return (\n <>\n {pickerRow}\n <SignalsErrorState message=\"Unable to load trace signal flow.\" onRetry={() => void snapshotsQuery.refetch()} />\n </>\n );\n }\n if (!frameId) {\n return (\n <>\n {pickerRow}\n <SignalsEmptyState LinkComponent={context.LinkComponent} signalCatalog={signalCatalog} isRangeEmpty />\n </>\n );\n }\n\n return (\n <TraceIntelligenceProvider\n cacheScope={context.cacheScope}\n request={context.request}\n LinkComponent={context.LinkComponent}\n getTraceHref={context.getTraceHref}\n signalCatalog={signalCatalog}\n signalManagement={context.signalManagement}\n >\n <SankeySignals\n key={`${entity.entityId}:${signalNames.join(',')}`}\n entityId={entity.entityId}\n entityType={entity.entityType}\n signalNames={signalNames}\n dateFrom={dateFrom}\n dateTo={dateTo}\n selectedThemeId={selectedThemeId}\n onSelectedThemeIdChange={setSelectedThemeId}\n selectedFrameId={frameId}\n onFrameIdChange={setSelectedFrameId}\n dateRangePicker={dateRangePicker}\n />\n </TraceIntelligenceProvider>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -16,25 +16,24 @@ const ee_signals_components_entityIndexModel = require('./entity-index-model.cjs
16
16
  const Button = require('../../../Button-CVewl8nT.cjs');
17
17
  const buttonsGroup = require('../../../buttons-group-BiLEV_Ak.cjs');
18
18
  const dataListSkeleton = require('../../../data-list-skeleton-ADXw-opu.cjs');
19
- const EmptyState = require('../../../EmptyState-CdRjFB06.cjs');
20
- const ErrorState = require('../../../ErrorState-B3uTRAEd.cjs');
21
- const listSearch = require('../../../list-search-vyxsZMAK.cjs');
22
- const noDataPageLayout = require('../../../no-data-page-layout-Drzbg_w8.cjs');
23
- const pageLayout = require('../../../page-layout-C9ifD9Q8.cjs');
24
- const PermissionDenied = require('../../../PermissionDenied-Dz5qXpQj.cjs');
19
+ require('../../../keyboard/keyboard-shortcuts-context.cjs.js');
20
+ const EmptyState = require('../../../EmptyState-0MgNiP40.cjs');
21
+ const ErrorState = require('../../../ErrorState-C7-4A-rB.cjs');
22
+ const listSearch = require('../../../list-search-BEDvqI5f.cjs');
23
+ const PermissionDenied = require('../../../PermissionDenied-CwLIzjpC.cjs');
25
24
  const select = require('../../../select-7ACAVdGX.cjs');
26
- const SessionExpired = require('../../../SessionExpired-CF0BGNo_.cjs');
25
+ const SessionExpired = require('../../../SessionExpired-07Lz91i3.cjs');
27
26
  const utils_queryUtils = require('../../../utils/query-utils.cjs.js');
28
27
 
29
28
  const listColumns = "minmax(12rem,1.5fr) minmax(7rem,0.6fr) minmax(8rem,0.7fr) minmax(8rem,0.7fr) minmax(12rem,1fr)";
30
29
  function EntityIndexError({ error }) {
31
30
  if (utils_queryUtils.is401UnauthorizedError(error)) {
32
- return /* @__PURE__ */ jsxRuntime.jsx(noDataPageLayout.NoDataPageLayout, { children: /* @__PURE__ */ jsxRuntime.jsx(SessionExpired.SessionExpired, {}) });
31
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-full items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(SessionExpired.SessionExpired, {}) });
33
32
  }
34
33
  if (utils_queryUtils.is403ForbiddenError(error)) {
35
- return /* @__PURE__ */ jsxRuntime.jsx(noDataPageLayout.NoDataPageLayout, { children: /* @__PURE__ */ jsxRuntime.jsx(PermissionDenied.PermissionDenied, { resource: "Trace Intelligence" }) });
34
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-full items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(PermissionDenied.PermissionDenied, { resource: "Trace Intelligence" }) });
36
35
  }
37
- return /* @__PURE__ */ jsxRuntime.jsx(noDataPageLayout.NoDataPageLayout, { children: /* @__PURE__ */ jsxRuntime.jsx(ErrorState.ErrorState, { title: "Failed to load Trace Intelligence", message: error.message }) });
36
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-full items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(ErrorState.ErrorState, { title: "Failed to load Trace Intelligence", message: error.message }) });
38
37
  }
39
38
  function EntityIndexControls({
40
39
  search,
@@ -130,7 +129,6 @@ function TraceIntelligenceEntityIndex({
130
129
  body = /* @__PURE__ */ jsxRuntime.jsx(
131
130
  EmptyState.EmptyState,
132
131
  {
133
- iconSlot: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleSlashIcon, { "aria-hidden": "true" }),
134
132
  titleSlot: "No Trace Intelligence entities yet",
135
133
  descriptionSlot: "Entities appear after Trace Intelligence begins collecting generated signal data."
136
134
  }
@@ -146,8 +144,8 @@ function TraceIntelligenceEntityIndex({
146
144
  }
147
145
  );
148
146
  }
149
- return /* @__PURE__ */ jsxRuntime.jsxs(pageLayout.PageLayout, { width: "narrow", height: "full", className: "max-w-7xl grid-rows-[auto_minmax(0,1fr)] content-normal", children: [
150
- /* @__PURE__ */ jsxRuntime.jsx(pageLayout.PageLayout.TopArea, { children: /* @__PURE__ */ jsxRuntime.jsx(
147
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mx-auto grid size-full min-h-0 max-w-7xl grid-rows-[auto_minmax(0,1fr)]", children: [
148
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pb-3", children: /* @__PURE__ */ jsxRuntime.jsx(
151
149
  EntityIndexControls,
152
150
  {
153
151
  search,