@mastra/playground-ui 69.0.0-alpha.0 → 69.0.0-alpha.2

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 (842) hide show
  1. package/components.css +6 -0
  2. package/dist/{CodeEditor-ZoBu3Gjw.js → CodeEditor-BqAM9L7t.js} +5 -2
  3. package/dist/{CodeEditor-ZoBu3Gjw.js.map → CodeEditor-BqAM9L7t.js.map} +1 -1
  4. package/dist/{CodeEditor-DHIDfP5g.cjs → CodeEditor-zMSUzPdX.cjs} +5 -2
  5. package/dist/{CodeEditor-DHIDfP5g.cjs.map → CodeEditor-zMSUzPdX.cjs.map} +1 -1
  6. package/dist/{Comment-rQxuMDQv.cjs → Comment-A07IvOt2.cjs} +3 -3
  7. package/dist/{Comment-rQxuMDQv.cjs.map → Comment-A07IvOt2.cjs.map} +1 -1
  8. package/dist/{Comment-2q9SomE2.js → Comment-D_gSx7oM.js} +3 -3
  9. package/dist/{Comment-2q9SomE2.js.map → Comment-D_gSx7oM.js.map} +1 -1
  10. package/dist/{Composer-u1K6edoZ.cjs → Composer-D2BqRyb5.cjs} +2 -2
  11. package/dist/Composer-D2BqRyb5.cjs.map +1 -0
  12. package/dist/{Composer-bVE8qK52.js → Composer-kjwmlIgL.js} +2 -2
  13. package/dist/Composer-kjwmlIgL.js.map +1 -0
  14. package/dist/{DataCodeSection-CTodi9wg.js → DataCodeSection-CcX8Z68Y.js} +2 -2
  15. package/dist/{DataCodeSection-CTodi9wg.js.map → DataCodeSection-CcX8Z68Y.js.map} +1 -1
  16. package/dist/{DataCodeSection-7SvRJj6f.cjs → DataCodeSection-JPGTWLcL.cjs} +2 -2
  17. package/dist/{DataCodeSection-7SvRJj6f.cjs.map → DataCodeSection-JPGTWLcL.cjs.map} +1 -1
  18. package/dist/{DataDetailsPanel-BDoD6pxx.cjs → DataDetailsPanel-DCMlaG7j.cjs} +2 -2
  19. package/dist/{DataDetailsPanel-BDoD6pxx.cjs.map → DataDetailsPanel-DCMlaG7j.cjs.map} +1 -1
  20. package/dist/{DataDetailsPanel-BU05psHL.js → DataDetailsPanel-mTfbbQho.js} +2 -2
  21. package/dist/{DataDetailsPanel-BU05psHL.js.map → DataDetailsPanel-mTfbbQho.js.map} +1 -1
  22. package/dist/{DataPanel-BRRAvWYQ.cjs → DataPanel-LfExjFpP.cjs} +2 -2
  23. package/dist/{DataPanel-BRRAvWYQ.cjs.map → DataPanel-LfExjFpP.cjs.map} +1 -1
  24. package/dist/{DataPanel-pVr5LVaK.js → DataPanel-Rv5Mb_pf.js} +2 -2
  25. package/dist/{DataPanel-pVr5LVaK.js.map → DataPanel-Rv5Mb_pf.js.map} +1 -1
  26. package/dist/{FilterBar-Kmn6gMgO.js → FilterBar-DgHNtsDI.js} +5 -5
  27. package/dist/FilterBar-DgHNtsDI.js.map +1 -0
  28. package/dist/{FilterBar-jBz6yaNu.cjs → FilterBar-O8SYau_Q.cjs} +5 -5
  29. package/dist/FilterBar-O8SYau_Q.cjs.map +1 -0
  30. package/dist/KnowledgePageGraph.css +1 -3
  31. package/dist/{MarkdownRenderer-CY8LGt-l.js → MarkdownRenderer-BSGb65Ze.js} +2 -2
  32. package/dist/{MarkdownRenderer-CY8LGt-l.js.map → MarkdownRenderer-BSGb65Ze.js.map} +1 -1
  33. package/dist/{MarkdownRenderer-CUYpmuPh.cjs → MarkdownRenderer-CDwlvw0Y.cjs} +2 -2
  34. package/dist/{MarkdownRenderer-CUYpmuPh.cjs.map → MarkdownRenderer-CDwlvw0Y.cjs.map} +1 -1
  35. package/dist/{MetricsCard-DojbLiEx.cjs → MetricsCard-CSJ4TsNq.cjs} +3 -3
  36. package/dist/MetricsCard-CSJ4TsNq.cjs.map +1 -0
  37. package/dist/{MetricsCard-kAqSCPPe.js → MetricsCard-D6bQfynP.js} +3 -3
  38. package/dist/MetricsCard-D6bQfynP.js.map +1 -0
  39. package/dist/{Tree-Caz4FTCU.cjs → Tree-6pubDJLQ.cjs} +4 -3
  40. package/dist/Tree-6pubDJLQ.cjs.map +1 -0
  41. package/dist/{Tree-od43gLMO.js → Tree-DpRLmis3.js} +4 -3
  42. package/dist/Tree-DpRLmis3.js.map +1 -0
  43. package/dist/{Workflow-mIbUYdv0.js → Workflow-BVVYys0W.js} +3 -3
  44. package/dist/{Workflow-mIbUYdv0.js.map → Workflow-BVVYys0W.js.map} +1 -1
  45. package/dist/{Workflow-XR5L-3cJ.cjs → Workflow-CwIjxwC6.cjs} +3 -3
  46. package/dist/{Workflow-XR5L-3cJ.cjs.map → Workflow-CwIjxwC6.cjs.map} +1 -1
  47. package/dist/{activity-ClFChYfl.js → activity-BH_eegMA.js} +2 -2
  48. package/dist/{activity-ClFChYfl.js.map → activity-BH_eegMA.js.map} +1 -1
  49. package/dist/{activity-BprmG6yH.cjs → activity-Ciolopq8.cjs} +2 -2
  50. package/dist/{activity-BprmG6yH.cjs.map → activity-Ciolopq8.cjs.map} +1 -1
  51. package/dist/{ask-user-D4ezQ6pt.js → ask-user-CqzPUD9E.js} +2 -2
  52. package/dist/{ask-user-D4ezQ6pt.js.map → ask-user-CqzPUD9E.js.map} +1 -1
  53. package/dist/{ask-user-DcnUNMM5.cjs → ask-user-DIYcPkoX.cjs} +2 -2
  54. package/dist/{ask-user-DcnUNMM5.cjs.map → ask-user-DIYcPkoX.cjs.map} +1 -1
  55. package/dist/{combobox-lbSxWRMl.js → combobox-DLdInLYm.js} +2 -2
  56. package/dist/{combobox-lbSxWRMl.js.map → combobox-DLdInLYm.js.map} +1 -1
  57. package/dist/{combobox-i723LxeC.cjs → combobox-DU2jsrGa.cjs} +2 -2
  58. package/dist/{combobox-i723LxeC.cjs.map → combobox-DU2jsrGa.cjs.map} +1 -1
  59. package/dist/{combobox-parts-BeNqgCbj.cjs → combobox-parts-C236ZHtn.cjs} +2 -2
  60. package/dist/combobox-parts-C236ZHtn.cjs.map +1 -0
  61. package/dist/{combobox-parts-C9o4UfH_.js → combobox-parts-_m3Qgmci.js} +2 -2
  62. package/dist/combobox-parts-_m3Qgmci.js.map +1 -0
  63. package/dist/components/Breadcrumb.cjs.js.map +1 -1
  64. package/dist/components/Breadcrumb.es.js.map +1 -1
  65. package/dist/components/CodeBlock.cjs.js +1 -1
  66. package/dist/components/CodeBlock.es.js +1 -1
  67. package/dist/components/CodeEditor.cjs.js +1 -1
  68. package/dist/components/CodeEditor.es.js +1 -1
  69. package/dist/components/Combobox.cjs.js +2 -2
  70. package/dist/components/Combobox.es.js +2 -2
  71. package/dist/components/Command.cjs.js +1 -1
  72. package/dist/components/Command.cjs.js.map +1 -1
  73. package/dist/components/Command.es.js +1 -1
  74. package/dist/components/Command.es.js.map +1 -1
  75. package/dist/components/Comment.cjs.js +1 -1
  76. package/dist/components/Comment.es.js +1 -1
  77. package/dist/components/Composer.cjs.js +1 -1
  78. package/dist/components/Composer.es.js +1 -1
  79. package/dist/components/DataCodeSection.cjs.js +1 -1
  80. package/dist/components/DataCodeSection.es.js +1 -1
  81. package/dist/components/DataDetailsPanel.cjs.js +1 -1
  82. package/dist/components/DataDetailsPanel.es.js +1 -1
  83. package/dist/components/DataList.cjs.js +1 -1
  84. package/dist/components/DataList.es.js +1 -1
  85. package/dist/components/DataPanel.cjs.js +1 -1
  86. package/dist/components/DataPanel.es.js +1 -1
  87. package/dist/components/DateTimePicker.cjs.js +1 -1
  88. package/dist/components/DateTimePicker.es.js +1 -1
  89. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  90. package/dist/components/DateTimeRangePicker.es.js +1 -1
  91. package/dist/components/DropdownMenu.cjs.js +1 -1
  92. package/dist/components/DropdownMenu.es.js +1 -1
  93. package/dist/components/EnvironmentVariablesEditor.cjs.js +1 -1
  94. package/dist/components/EnvironmentVariablesEditor.es.js +1 -1
  95. package/dist/components/FilterBar.cjs.js +3 -3
  96. package/dist/components/FilterBar.es.js +3 -3
  97. package/dist/components/FormFieldBlocks.cjs.js +1 -1
  98. package/dist/components/FormFieldBlocks.es.js +1 -1
  99. package/dist/components/Input.cjs.js +1 -1
  100. package/dist/components/Input.es.js +1 -1
  101. package/dist/components/InputGroup.cjs.js +1 -1
  102. package/dist/components/InputGroup.es.js +1 -1
  103. package/dist/components/InputNumber.cjs.js +1 -1
  104. package/dist/components/InputNumber.es.js +1 -1
  105. package/dist/components/JSONSchemaForm.cjs.js +1 -1
  106. package/dist/components/JSONSchemaForm.es.js +1 -1
  107. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  108. package/dist/components/MarkdownRenderer.es.js +1 -1
  109. package/dist/components/MetricsCard.cjs.js +1 -1
  110. package/dist/components/MetricsCard.es.js +1 -1
  111. package/dist/components/PropertyFilter.cjs.js +2 -2
  112. package/dist/components/PropertyFilter.es.js +2 -2
  113. package/dist/components/RuleBuilder.cjs.js +1 -1
  114. package/dist/components/RuleBuilder.es.js +1 -1
  115. package/dist/components/SavedViews.cjs.js +3 -3
  116. package/dist/components/SavedViews.cjs.js.map +1 -1
  117. package/dist/components/SavedViews.es.js +3 -3
  118. package/dist/components/SavedViews.es.js.map +1 -1
  119. package/dist/components/SearchInput.cjs.js +1 -1
  120. package/dist/components/SearchInput.es.js +1 -1
  121. package/dist/components/SideDialog.cjs.js +1 -1
  122. package/dist/components/SideDialog.es.js +1 -1
  123. package/dist/components/Sidebar.cjs.js +1 -1
  124. package/dist/components/Sidebar.es.js +1 -1
  125. package/dist/components/Tabs.cjs.js +2 -2
  126. package/dist/components/Tabs.es.js +2 -2
  127. package/dist/components/Textarea.cjs.js +1 -1
  128. package/dist/components/Textarea.cjs.js.map +1 -1
  129. package/dist/components/Textarea.es.js +1 -1
  130. package/dist/components/Textarea.es.js.map +1 -1
  131. package/dist/components/ThreadRail.cjs.js +2 -0
  132. package/dist/components/ThreadRail.cjs.js.map +1 -1
  133. package/dist/components/ThreadRail.es.js +2 -0
  134. package/dist/components/ThreadRail.es.js.map +1 -1
  135. package/dist/components/Tree.cjs.js +1 -1
  136. package/dist/components/Tree.es.js +1 -1
  137. package/dist/components/Workflow.cjs.js +1 -1
  138. package/dist/components/Workflow.es.js +1 -1
  139. package/dist/components/ai/activity.cjs.js +1 -1
  140. package/dist/components/ai/activity.es.js +1 -1
  141. package/dist/components/ai/ask-user.cjs.js +1 -1
  142. package/dist/components/ai/ask-user.es.js +1 -1
  143. package/dist/components/ai/plan.cjs.js +1 -1
  144. package/dist/components/ai/plan.es.js +1 -1
  145. package/dist/components/ai/tool-approval.cjs.js +1 -1
  146. package/dist/components/ai/tool-approval.es.js +1 -1
  147. package/dist/components/ai/tool-call.cjs.js +1 -1
  148. package/dist/components/ai/tool-call.es.js +1 -1
  149. package/dist/{date-time-range-picker-DdNgKD87.js → date-time-range-picker-CJyhcug7.js} +3 -3
  150. package/dist/{date-time-range-picker-DdNgKD87.js.map → date-time-range-picker-CJyhcug7.js.map} +1 -1
  151. package/dist/{date-time-range-picker-Bq-8IPtS.cjs → date-time-range-picker-Dhnuwa-U.cjs} +3 -3
  152. package/dist/{date-time-range-picker-Bq-8IPtS.cjs.map → date-time-range-picker-Dhnuwa-U.cjs.map} +1 -1
  153. package/dist/domains/chat/activity/activity-stretch-line.cjs.js +1 -1
  154. package/dist/domains/chat/activity/activity-stretch-line.es.js +1 -1
  155. package/dist/domains/chat/activity/components/activity-fold.cjs.js +1 -1
  156. package/dist/domains/chat/activity/components/activity-fold.es.js +1 -1
  157. package/dist/domains/chat/activity/components/calls-panel.cjs.js +1 -1
  158. package/dist/domains/chat/activity/components/calls-panel.es.js +1 -1
  159. package/dist/domains/chat/activity/components/stretch-content.cjs.js +1 -1
  160. package/dist/domains/chat/activity/components/stretch-content.es.js +1 -1
  161. package/dist/domains/chat/activity/components/stretch-thought.cjs.js +1 -1
  162. package/dist/domains/chat/activity/components/stretch-thought.es.js +1 -1
  163. package/dist/domains/chat/activity/model/activity-segments.cjs.js +1 -1
  164. package/dist/domains/chat/activity/model/activity-segments.es.js +1 -1
  165. package/dist/domains/chat/activity/model/activity-words.cjs.js +1 -1
  166. package/dist/domains/chat/activity/model/activity-words.es.js +1 -1
  167. package/dist/domains/chat/attachments/composer-attachment-list.cjs.js +1 -1
  168. package/dist/domains/chat/attachments/composer-attachment-list.es.js +1 -1
  169. package/dist/domains/chat/attachments/split-message-attachments.cjs.js +4 -1
  170. package/dist/domains/chat/attachments/split-message-attachments.cjs.js.map +1 -1
  171. package/dist/domains/chat/attachments/split-message-attachments.es.js +4 -1
  172. package/dist/domains/chat/attachments/split-message-attachments.es.js.map +1 -1
  173. package/dist/domains/chat/components/badge-wrapper.cjs.js +1 -1
  174. package/dist/domains/chat/components/badge-wrapper.es.js +1 -1
  175. package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +1 -1
  176. package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +1 -1
  177. package/dist/domains/chat/knowledge/pinned-knowledge.cjs.js +1 -1
  178. package/dist/domains/chat/knowledge/pinned-knowledge.es.js +1 -1
  179. package/dist/domains/chat/messages/dataset-save-action.cjs.js +1 -1
  180. package/dist/domains/chat/messages/dataset-save-action.es.js +1 -1
  181. package/dist/domains/chat/messages/message-row.cjs.js +2 -2
  182. package/dist/domains/chat/messages/message-row.es.js +2 -2
  183. package/dist/domains/chat/messages/notification-signal-notice.cjs.js +1 -1
  184. package/dist/domains/chat/messages/notification-signal-notice.es.js +1 -1
  185. package/dist/domains/chat/messages/reasoning-content.cjs.js +1 -1
  186. package/dist/domains/chat/messages/reasoning-content.es.js +1 -1
  187. package/dist/domains/chat/messages/renderers/message-text.cjs.js +1 -1
  188. package/dist/domains/chat/messages/renderers/message-text.es.js +1 -1
  189. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
  190. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
  191. package/dist/domains/chat/messages/signal-badge.cjs.js +1 -1
  192. package/dist/domains/chat/messages/signal-badge.es.js +1 -1
  193. package/dist/domains/chat/messages/skill-message.cjs.js +2 -2
  194. package/dist/domains/chat/messages/skill-message.es.js +2 -2
  195. package/dist/domains/chat/messages/system-reminder-badge.cjs.js +1 -1
  196. package/dist/domains/chat/messages/system-reminder-badge.es.js +1 -1
  197. package/dist/domains/chat/messages/tripwire-notice.cjs.js +5 -10
  198. package/dist/domains/chat/messages/tripwire-notice.cjs.js.map +1 -1
  199. package/dist/domains/chat/messages/tripwire-notice.es.js +5 -10
  200. package/dist/domains/chat/messages/tripwire-notice.es.js.map +1 -1
  201. package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
  202. package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
  203. package/dist/domains/chat/tools/badges/agent-badge.cjs.js +1 -1
  204. package/dist/domains/chat/tools/badges/agent-badge.es.js +1 -1
  205. package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
  206. package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
  207. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.cjs.js +1 -1
  208. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js +1 -1
  209. package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +1 -1
  210. package/dist/domains/chat/tools/badges/code-mode-badge.es.js +1 -1
  211. package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +1 -1
  212. package/dist/domains/chat/tools/badges/file-tree-badge.es.js +1 -1
  213. package/dist/domains/chat/tools/badges/knowledge-tool-badge.cjs.js +2 -2
  214. package/dist/domains/chat/tools/badges/knowledge-tool-badge.es.js +2 -2
  215. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +2 -2
  216. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +2 -2
  217. package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +2 -2
  218. package/dist/domains/chat/tools/badges/observation-marker-details.es.js +2 -2
  219. package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +1 -1
  220. package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
  221. package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js +1 -1
  222. package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js +1 -1
  223. package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +1 -1
  224. package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
  225. package/dist/domains/chat/tools/badges/tool-badge.cjs.js +2 -2
  226. package/dist/domains/chat/tools/badges/tool-badge.es.js +2 -2
  227. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +2 -2
  228. package/dist/domains/chat/tools/badges/workflow-badge.es.js +2 -2
  229. package/dist/domains/chat/tools/mcp-input-request-tool.cjs.js +2 -2
  230. package/dist/domains/chat/tools/mcp-input-request-tool.es.js +2 -2
  231. package/dist/domains/chat/tools/tool-card.cjs.js +1 -1
  232. package/dist/domains/chat/tools/tool-card.es.js +1 -1
  233. package/dist/domains/chat/tools/tool-groups.cjs.js +1 -1
  234. package/dist/domains/chat/tools/tool-groups.es.js +1 -1
  235. package/dist/domains/dashboards/components/connected-widget.cjs.js +55 -0
  236. package/dist/domains/dashboards/components/connected-widget.cjs.js.map +1 -0
  237. package/dist/domains/dashboards/components/connected-widget.d.ts +1 -0
  238. package/dist/domains/dashboards/components/connected-widget.es.js +54 -0
  239. package/dist/domains/dashboards/components/connected-widget.es.js.map +1 -0
  240. package/dist/domains/dashboards/components/dashboard-renderer.cjs.js +13 -8
  241. package/dist/domains/dashboards/components/dashboard-renderer.cjs.js.map +1 -1
  242. package/dist/domains/dashboards/components/dashboard-renderer.es.js +13 -8
  243. package/dist/domains/dashboards/components/dashboard-renderer.es.js.map +1 -1
  244. package/dist/domains/dashboards/components/stateless-widget.cjs.js +30 -0
  245. package/dist/domains/dashboards/components/stateless-widget.cjs.js.map +1 -0
  246. package/dist/domains/dashboards/components/stateless-widget.d.ts +1 -0
  247. package/dist/domains/dashboards/components/stateless-widget.es.js +29 -0
  248. package/dist/domains/dashboards/components/stateless-widget.es.js.map +1 -0
  249. package/dist/domains/dashboards/components/view-gate.cjs.js +18 -40
  250. package/dist/domains/dashboards/components/view-gate.cjs.js.map +1 -1
  251. package/dist/domains/dashboards/components/view-gate.es.js +18 -40
  252. package/dist/domains/dashboards/components/view-gate.es.js.map +1 -1
  253. package/dist/domains/dashboards/components/widget-chrome.cjs.js +1 -1
  254. package/dist/domains/dashboards/components/widget-chrome.es.js +1 -1
  255. package/dist/domains/dashboards/components/widget-controls.cjs.js +106 -0
  256. package/dist/domains/dashboards/components/widget-controls.cjs.js.map +1 -1
  257. package/dist/domains/dashboards/components/widget-controls.es.js +107 -3
  258. package/dist/domains/dashboards/components/widget-controls.es.js.map +1 -1
  259. package/dist/domains/dashboards/components/widget-error.cjs.js +1 -1
  260. package/dist/domains/dashboards/components/widget-error.es.js +1 -1
  261. package/dist/domains/dashboards/hooks/use-dashboard-environment.cjs.js +55 -0
  262. package/dist/domains/dashboards/hooks/use-dashboard-environment.cjs.js.map +1 -0
  263. package/dist/domains/dashboards/hooks/use-dashboard-environment.d.ts +1 -0
  264. package/dist/domains/dashboards/hooks/use-dashboard-environment.es.js +53 -0
  265. package/dist/domains/dashboards/hooks/use-dashboard-environment.es.js.map +1 -0
  266. package/dist/domains/dashboards/hooks/use-dashboard-requests.cjs.js +24 -0
  267. package/dist/domains/dashboards/hooks/use-dashboard-requests.cjs.js.map +1 -1
  268. package/dist/domains/dashboards/hooks/use-dashboard-requests.es.js +23 -1
  269. package/dist/domains/dashboards/hooks/use-dashboard-requests.es.js.map +1 -1
  270. package/dist/domains/dashboards/hooks/use-widget-views.cjs.js +10 -6
  271. package/dist/domains/dashboards/hooks/use-widget-views.cjs.js.map +1 -1
  272. package/dist/domains/dashboards/hooks/use-widget-views.es.js +10 -7
  273. package/dist/domains/dashboards/hooks/use-widget-views.es.js.map +1 -1
  274. package/dist/domains/dashboards/kinds/kpis/kpis-plan.cjs.js +11 -0
  275. package/dist/domains/dashboards/kinds/kpis/kpis-plan.cjs.js.map +1 -0
  276. package/dist/domains/dashboards/kinds/kpis/kpis-plan.d.ts +1 -0
  277. package/dist/domains/dashboards/kinds/kpis/kpis-plan.es.js +9 -0
  278. package/dist/domains/dashboards/kinds/kpis/kpis-plan.es.js.map +1 -0
  279. package/dist/domains/dashboards/kinds/kpis/kpis-widget.cjs.js +18 -19
  280. package/dist/domains/dashboards/kinds/kpis/kpis-widget.cjs.js.map +1 -1
  281. package/dist/domains/dashboards/kinds/kpis/kpis-widget.es.js +18 -19
  282. package/dist/domains/dashboards/kinds/kpis/kpis-widget.es.js.map +1 -1
  283. package/dist/domains/dashboards/kinds/kpis.cjs.js +3 -0
  284. package/dist/domains/dashboards/kinds/kpis.cjs.js.map +1 -1
  285. package/dist/domains/dashboards/kinds/kpis.es.js +3 -0
  286. package/dist/domains/dashboards/kinds/kpis.es.js.map +1 -1
  287. package/dist/domains/dashboards/kinds/scores/scores-plan.cjs.js +27 -0
  288. package/dist/domains/dashboards/kinds/scores/scores-plan.cjs.js.map +1 -0
  289. package/dist/domains/dashboards/kinds/scores/scores-plan.d.ts +1 -0
  290. package/dist/domains/dashboards/kinds/scores/scores-plan.es.js +24 -0
  291. package/dist/domains/dashboards/kinds/scores/scores-plan.es.js.map +1 -0
  292. package/dist/domains/dashboards/kinds/scores/scores-widget.cjs.js +25 -32
  293. package/dist/domains/dashboards/kinds/scores/scores-widget.cjs.js.map +1 -1
  294. package/dist/domains/dashboards/kinds/scores/scores-widget.es.js +26 -33
  295. package/dist/domains/dashboards/kinds/scores/scores-widget.es.js.map +1 -1
  296. package/dist/domains/dashboards/kinds/scores.cjs.js +4 -0
  297. package/dist/domains/dashboards/kinds/scores.cjs.js.map +1 -1
  298. package/dist/domains/dashboards/kinds/scores.es.js +4 -0
  299. package/dist/domains/dashboards/kinds/scores.es.js.map +1 -1
  300. package/dist/domains/dashboards/kinds/table/table-cells.cjs.js +2 -6
  301. package/dist/domains/dashboards/kinds/table/table-cells.cjs.js.map +1 -1
  302. package/dist/domains/dashboards/kinds/table/table-cells.es.js +2 -6
  303. package/dist/domains/dashboards/kinds/table/table-cells.es.js.map +1 -1
  304. package/dist/domains/dashboards/kinds/table/table-columns.cjs.js +5 -3
  305. package/dist/domains/dashboards/kinds/table/table-columns.cjs.js.map +1 -1
  306. package/dist/domains/dashboards/kinds/table/table-columns.es.js +5 -3
  307. package/dist/domains/dashboards/kinds/table/table-columns.es.js.map +1 -1
  308. package/dist/domains/dashboards/kinds/table/table-plan.cjs.js +47 -0
  309. package/dist/domains/dashboards/kinds/table/table-plan.cjs.js.map +1 -0
  310. package/dist/domains/dashboards/kinds/table/table-plan.d.ts +1 -0
  311. package/dist/domains/dashboards/kinds/table/table-plan.es.js +44 -0
  312. package/dist/domains/dashboards/kinds/table/table-plan.es.js.map +1 -0
  313. package/dist/domains/dashboards/kinds/table/table-tabs.cjs.js +20 -26
  314. package/dist/domains/dashboards/kinds/table/table-tabs.cjs.js.map +1 -1
  315. package/dist/domains/dashboards/kinds/table/table-tabs.es.js +22 -28
  316. package/dist/domains/dashboards/kinds/table/table-tabs.es.js.map +1 -1
  317. package/dist/domains/dashboards/kinds/table/table-view.cjs.js +13 -13
  318. package/dist/domains/dashboards/kinds/table/table-view.cjs.js.map +1 -1
  319. package/dist/domains/dashboards/kinds/table/table-view.es.js +14 -14
  320. package/dist/domains/dashboards/kinds/table/table-view.es.js.map +1 -1
  321. package/dist/domains/dashboards/kinds/table/table-widget.cjs.js +13 -17
  322. package/dist/domains/dashboards/kinds/table/table-widget.cjs.js.map +1 -1
  323. package/dist/domains/dashboards/kinds/table/table-widget.es.js +13 -17
  324. package/dist/domains/dashboards/kinds/table/table-widget.es.js.map +1 -1
  325. package/dist/domains/dashboards/kinds/table.cjs.js +4 -0
  326. package/dist/domains/dashboards/kinds/table.cjs.js.map +1 -1
  327. package/dist/domains/dashboards/kinds/table.es.js +4 -0
  328. package/dist/domains/dashboards/kinds/table.es.js.map +1 -1
  329. package/dist/domains/dashboards/kinds/timeseries/timeseries-plan.cjs.js +18 -0
  330. package/dist/domains/dashboards/kinds/timeseries/timeseries-plan.cjs.js.map +1 -0
  331. package/dist/domains/dashboards/kinds/timeseries/timeseries-plan.d.ts +1 -0
  332. package/dist/domains/dashboards/kinds/timeseries/timeseries-plan.es.js +16 -0
  333. package/dist/domains/dashboards/kinds/timeseries/timeseries-plan.es.js.map +1 -0
  334. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.cjs.js +22 -22
  335. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.cjs.js.map +1 -1
  336. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.es.js +25 -25
  337. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.es.js.map +1 -1
  338. package/dist/domains/dashboards/kinds/timeseries.cjs.js +3 -0
  339. package/dist/domains/dashboards/kinds/timeseries.cjs.js.map +1 -1
  340. package/dist/domains/dashboards/kinds/timeseries.es.js +3 -0
  341. package/dist/domains/dashboards/kinds/timeseries.es.js.map +1 -1
  342. package/dist/domains/dashboards/lib/alert-actions.cjs.js +123 -0
  343. package/dist/domains/dashboards/lib/alert-actions.cjs.js.map +1 -0
  344. package/dist/domains/dashboards/lib/alert-actions.d.ts +1 -0
  345. package/dist/domains/dashboards/lib/alert-actions.es.js +118 -0
  346. package/dist/domains/dashboards/lib/alert-actions.es.js.map +1 -0
  347. package/dist/domains/dashboards/lib/gate.cjs.js +62 -0
  348. package/dist/domains/dashboards/lib/gate.cjs.js.map +1 -0
  349. package/dist/domains/dashboards/lib/gate.d.ts +1 -0
  350. package/dist/domains/dashboards/lib/gate.es.js +60 -0
  351. package/dist/domains/dashboards/lib/gate.es.js.map +1 -0
  352. package/dist/domains/dashboards/lib/plan-widget.cjs.js +41 -0
  353. package/dist/domains/dashboards/lib/plan-widget.cjs.js.map +1 -0
  354. package/dist/domains/dashboards/lib/plan-widget.d.ts +1 -0
  355. package/dist/domains/dashboards/lib/plan-widget.es.js +38 -0
  356. package/dist/domains/dashboards/lib/plan-widget.es.js.map +1 -0
  357. package/dist/domains/dashboards/lib/requests.cjs.js +47 -0
  358. package/dist/domains/dashboards/lib/requests.cjs.js.map +1 -1
  359. package/dist/domains/dashboards/lib/requests.es.js +46 -1
  360. package/dist/domains/dashboards/lib/requests.es.js.map +1 -1
  361. package/dist/domains/dashboards/lib/scores.cjs.js +32 -0
  362. package/dist/domains/dashboards/lib/scores.cjs.js.map +1 -1
  363. package/dist/domains/dashboards/lib/scores.es.js +31 -1
  364. package/dist/domains/dashboards/lib/scores.es.js.map +1 -1
  365. package/dist/domains/dashboards/lib/timeseries.cjs.js +17 -0
  366. package/dist/domains/dashboards/lib/timeseries.cjs.js.map +1 -1
  367. package/dist/domains/dashboards/lib/timeseries.es.js +17 -1
  368. package/dist/domains/dashboards/lib/timeseries.es.js.map +1 -1
  369. package/dist/domains/dashboards/lib/values.cjs.js.map +1 -1
  370. package/dist/domains/dashboards/lib/values.es.js.map +1 -1
  371. package/dist/domains/dashboards/widget-kind.cjs.js.map +1 -1
  372. package/dist/domains/dashboards/widget-kind.es.js.map +1 -1
  373. package/dist/domains/dashboards.cjs.js +19 -2
  374. package/dist/domains/dashboards.es.js +9 -5
  375. package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.cjs.js +1 -1
  376. package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.es.js +1 -1
  377. package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.cjs.js +2 -2
  378. package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.es.js +2 -2
  379. package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js +2 -2
  380. package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js +2 -2
  381. package/dist/domains/knowledge/components/KnowledgePageDetail.cjs.js +186 -212
  382. package/dist/domains/knowledge/components/KnowledgePageDetail.cjs.js.map +1 -1
  383. package/dist/domains/knowledge/components/KnowledgePageDetail.es.js +188 -215
  384. package/dist/domains/knowledge/components/KnowledgePageDetail.es.js.map +1 -1
  385. package/dist/domains/knowledge/components/KnowledgePageExplorer.cjs.js +620 -268
  386. package/dist/domains/knowledge/components/KnowledgePageExplorer.cjs.js.map +1 -1
  387. package/dist/domains/knowledge/components/KnowledgePageExplorer.es.js +622 -270
  388. package/dist/domains/knowledge/components/KnowledgePageExplorer.es.js.map +1 -1
  389. package/dist/domains/knowledge/components/KnowledgePageGraph.cjs.js +544 -454
  390. package/dist/domains/knowledge/components/KnowledgePageGraph.cjs.js.map +1 -1
  391. package/dist/domains/knowledge/components/KnowledgePageGraph.es.js +548 -458
  392. package/dist/domains/knowledge/components/KnowledgePageGraph.es.js.map +1 -1
  393. package/dist/domains/knowledge/components/KnowledgePageTree.cjs.js +21 -12
  394. package/dist/domains/knowledge/components/KnowledgePageTree.cjs.js.map +1 -1
  395. package/dist/domains/knowledge/components/KnowledgePageTree.es.js +22 -13
  396. package/dist/domains/knowledge/components/KnowledgePageTree.es.js.map +1 -1
  397. package/dist/domains/knowledge/components/KnowledgeSourceIcon.cjs.js +16 -0
  398. package/dist/domains/knowledge/components/KnowledgeSourceIcon.cjs.js.map +1 -0
  399. package/dist/domains/knowledge/components/KnowledgeSourceIcon.d.ts +1 -0
  400. package/dist/domains/knowledge/components/KnowledgeSourceIcon.es.js +15 -0
  401. package/dist/domains/knowledge/components/KnowledgeSourceIcon.es.js.map +1 -0
  402. package/dist/domains/knowledge/components/KnowledgeTooltip.cjs.js +10 -0
  403. package/dist/domains/knowledge/components/KnowledgeTooltip.cjs.js.map +1 -0
  404. package/dist/domains/knowledge/components/KnowledgeTooltip.d.ts +1 -0
  405. package/dist/domains/knowledge/components/KnowledgeTooltip.es.js +9 -0
  406. package/dist/domains/knowledge/components/KnowledgeTooltip.es.js.map +1 -0
  407. package/dist/domains/knowledge/lib/fitViewport.cjs.js +22 -8
  408. package/dist/domains/knowledge/lib/fitViewport.cjs.js.map +1 -1
  409. package/dist/domains/knowledge/lib/fitViewport.es.js +22 -9
  410. package/dist/domains/knowledge/lib/fitViewport.es.js.map +1 -1
  411. package/dist/domains/knowledge/lib/pageAddress.cjs.js +51 -0
  412. package/dist/domains/knowledge/lib/pageAddress.cjs.js.map +1 -1
  413. package/dist/domains/knowledge/lib/pageAddress.es.js +50 -1
  414. package/dist/domains/knowledge/lib/pageAddress.es.js.map +1 -1
  415. package/dist/domains/knowledge/lib/pageRefs.cjs.js +43 -2
  416. package/dist/domains/knowledge/lib/pageRefs.cjs.js.map +1 -1
  417. package/dist/domains/knowledge/lib/pageRefs.es.js +43 -3
  418. package/dist/domains/knowledge/lib/pageRefs.es.js.map +1 -1
  419. package/dist/domains/knowledge/lib/pagesByRefContext.cjs.js +10 -0
  420. package/dist/domains/knowledge/lib/pagesByRefContext.cjs.js.map +1 -0
  421. package/dist/domains/knowledge/lib/pagesByRefContext.d.ts +1 -0
  422. package/dist/domains/knowledge/lib/pagesByRefContext.es.js +10 -0
  423. package/dist/domains/knowledge/lib/pagesByRefContext.es.js.map +1 -0
  424. package/dist/domains/logs/components/log-data-panel.cjs.js +1 -1
  425. package/dist/domains/logs/components/log-data-panel.es.js +1 -1
  426. package/dist/domains/logs/components/logs-saved-views.cjs.js +1 -1
  427. package/dist/domains/logs/components/logs-saved-views.es.js +1 -1
  428. package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
  429. package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
  430. package/dist/domains/mcps/components/mcp-app-tool-result.cjs.js +28 -3
  431. package/dist/domains/mcps/components/mcp-app-tool-result.cjs.js.map +1 -1
  432. package/dist/domains/mcps/components/mcp-app-tool-result.es.js +27 -2
  433. package/dist/domains/mcps/components/mcp-app-tool-result.es.js.map +1 -1
  434. package/dist/domains/mcps/components/mcp-app-viewer.cjs.js +163 -2
  435. package/dist/domains/mcps/components/mcp-app-viewer.cjs.js.map +1 -0
  436. package/dist/domains/mcps/components/mcp-app-viewer.es.js +163 -1
  437. package/dist/domains/mcps/components/mcp-app-viewer.es.js.map +1 -0
  438. package/dist/domains/mcps/context/mcp-app-host-context-value.cjs.js +11 -0
  439. package/dist/domains/mcps/context/mcp-app-host-context-value.cjs.js.map +1 -0
  440. package/dist/domains/mcps/context/mcp-app-host-context-value.d.ts +1 -0
  441. package/dist/domains/mcps/context/mcp-app-host-context-value.es.js +9 -0
  442. package/dist/domains/mcps/context/mcp-app-host-context-value.es.js.map +1 -0
  443. package/dist/domains/mcps/context/mcp-app-host-context.cjs.js +14 -0
  444. package/dist/domains/mcps/context/mcp-app-host-context.cjs.js.map +1 -0
  445. package/dist/domains/mcps/context/mcp-app-host-context.d.ts +1 -0
  446. package/dist/domains/mcps/context/mcp-app-host-context.es.js +13 -0
  447. package/dist/domains/mcps/context/mcp-app-host-context.es.js.map +1 -0
  448. package/dist/domains/mcps/hooks/use-mcp-app-tool-call.cjs.js +2 -1
  449. package/dist/domains/mcps/hooks/use-mcp-app-tool-call.cjs.js.map +1 -1
  450. package/dist/domains/mcps/hooks/use-mcp-app-tool-call.es.js +2 -1
  451. package/dist/domains/mcps/hooks/use-mcp-app-tool-call.es.js.map +1 -1
  452. package/dist/domains/mcps.cjs.js +5 -0
  453. package/dist/domains/mcps.d.ts +1 -0
  454. package/dist/domains/mcps.es.js +3 -0
  455. package/dist/domains/metrics/components/agent-runs-card.cjs.js +1 -1
  456. package/dist/domains/metrics/components/agent-runs-card.es.js +1 -1
  457. package/dist/domains/metrics/components/breakdown/breakdown-tab-body.cjs.js +1 -1
  458. package/dist/domains/metrics/components/breakdown/breakdown-tab-body.es.js +1 -1
  459. package/dist/domains/metrics/components/breakdown-card.cjs.js +1 -1
  460. package/dist/domains/metrics/components/breakdown-card.es.js +1 -1
  461. package/dist/domains/metrics/components/chart-area.cjs.js +1 -1
  462. package/dist/domains/metrics/components/chart-area.es.js +1 -1
  463. package/dist/domains/metrics/components/chart-card-error.cjs.js +1 -1
  464. package/dist/domains/metrics/components/chart-card-error.es.js +1 -1
  465. package/dist/domains/metrics/components/chart-card.cjs.js +1 -1
  466. package/dist/domains/metrics/components/chart-card.es.js +1 -1
  467. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  468. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  469. package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.cjs.js +1 -1
  470. package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.es.js +1 -1
  471. package/dist/domains/metrics/components/failure-rate-card.cjs.js +1 -1
  472. package/dist/domains/metrics/components/failure-rate-card.es.js +1 -1
  473. package/dist/domains/metrics/components/latency-card.cjs.js +1 -1
  474. package/dist/domains/metrics/components/latency-card.es.js +1 -1
  475. package/dist/domains/metrics/components/metrics-time-range-chip.cjs.js +1 -1
  476. package/dist/domains/metrics/components/metrics-time-range-chip.es.js +1 -1
  477. package/dist/domains/metrics/components/token-usage-card.cjs.js +1 -1
  478. package/dist/domains/metrics/components/token-usage-card.es.js +1 -1
  479. package/dist/domains/metrics/components/trace-aggregate-card.cjs.js +1 -1
  480. package/dist/domains/metrics/components/trace-aggregate-card.es.js +1 -1
  481. package/dist/domains/metrics.cjs.js +3 -3
  482. package/dist/domains/metrics.es.js +3 -3
  483. package/dist/domains/observability/saved-views/observability-saved-views.cjs.js +1 -1
  484. package/dist/domains/observability/saved-views/observability-saved-views.es.js +1 -1
  485. package/dist/domains/observability/saved-views.cjs.js +1 -1
  486. package/dist/domains/observability/saved-views.es.js +1 -1
  487. package/dist/domains/observability.cjs.js +1 -1
  488. package/dist/domains/observability.es.js +1 -1
  489. package/dist/domains/scores/components/score-data-panel.cjs.js +1 -1
  490. package/dist/domains/scores/components/score-data-panel.es.js +1 -1
  491. package/dist/domains/scores/components/span-scoring.cjs.js +1 -1
  492. package/dist/domains/scores/components/span-scoring.es.js +1 -1
  493. package/dist/domains/scores/components/trace-scores-list.cjs.js +1 -1
  494. package/dist/domains/scores/components/trace-scores-list.es.js +1 -1
  495. package/dist/domains/skills/skill-simple-form.cjs.js +3 -3
  496. package/dist/domains/skills/skill-simple-form.es.js +3 -3
  497. package/dist/domains/spans/components/spans-explorer-body.cjs.js +1 -1
  498. package/dist/domains/spans/components/spans-explorer-body.es.js +1 -1
  499. package/dist/domains/spans/components/spans-filter-bar.cjs.js +2 -2
  500. package/dist/domains/spans/components/spans-filter-bar.es.js +2 -2
  501. package/dist/domains/spans/hooks/use-spans-filter-bar.cjs.js +1 -1
  502. package/dist/domains/spans/hooks/use-spans-filter-bar.es.js +1 -1
  503. package/dist/domains/threads/components/threads-explorer-body.cjs.js +1 -1
  504. package/dist/domains/threads/components/threads-explorer-body.es.js +1 -1
  505. package/dist/domains/threads/components/threads-filter-bar.cjs.js +2 -2
  506. package/dist/domains/threads/components/threads-filter-bar.es.js +2 -2
  507. package/dist/domains/threads/hooks/use-threads-filter-bar.cjs.js +1 -1
  508. package/dist/domains/threads/hooks/use-threads-filter-bar.es.js +1 -1
  509. package/dist/domains/traces/components/feedback-options.cjs.js +0 -0
  510. package/dist/domains/traces/components/feedback-options.d.ts +1 -0
  511. package/dist/domains/traces/components/feedback-options.es.js +0 -0
  512. package/dist/domains/traces/components/feedback-thread.cjs.js +10 -4
  513. package/dist/domains/traces/components/feedback-thread.cjs.js.map +1 -1
  514. package/dist/domains/traces/components/feedback-thread.es.js +10 -4
  515. package/dist/domains/traces/components/feedback-thread.es.js.map +1 -1
  516. package/dist/domains/traces/components/span-data-panel-view.cjs.js +2 -2
  517. package/dist/domains/traces/components/span-data-panel-view.es.js +2 -2
  518. package/dist/domains/traces/components/span-details-view.cjs.js +1 -1
  519. package/dist/domains/traces/components/span-details-view.es.js +1 -1
  520. package/dist/domains/traces/components/span-feedback-tab.cjs.js +8 -5
  521. package/dist/domains/traces/components/span-feedback-tab.cjs.js.map +1 -1
  522. package/dist/domains/traces/components/span-feedback-tab.es.js +8 -5
  523. package/dist/domains/traces/components/span-feedback-tab.es.js.map +1 -1
  524. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +1 -1
  525. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +1 -1
  526. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
  527. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
  528. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +2 -2
  529. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +2 -2
  530. package/dist/domains/traces/components/span-payload/span-payload-json.cjs.js +1 -1
  531. package/dist/domains/traces/components/span-payload/span-payload-json.es.js +1 -1
  532. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +2 -2
  533. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +2 -2
  534. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +1 -1
  535. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +1 -1
  536. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
  537. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
  538. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +1 -1
  539. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +1 -1
  540. package/dist/domains/traces/components/span-payload/span-processor-mutations.cjs.js +1 -1
  541. package/dist/domains/traces/components/span-payload/span-processor-mutations.es.js +1 -1
  542. package/dist/domains/traces/components/span-payload/span-tools-section.cjs.js +1 -1
  543. package/dist/domains/traces/components/span-payload/span-tools-section.es.js +1 -1
  544. package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
  545. package/dist/domains/traces/components/span-summary-description.es.js +1 -1
  546. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
  547. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
  548. package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +2 -2
  549. package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +2 -2
  550. package/dist/domains/traces/components/thread-trace/thread-trace-row.cjs.js +1 -1
  551. package/dist/domains/traces/components/thread-trace/thread-trace-row.es.js +1 -1
  552. package/dist/domains/traces/components/thread-view-by-trace.cjs.js +5 -3
  553. package/dist/domains/traces/components/thread-view-by-trace.cjs.js.map +1 -1
  554. package/dist/domains/traces/components/thread-view-by-trace.es.js +5 -3
  555. package/dist/domains/traces/components/thread-view-by-trace.es.js.map +1 -1
  556. package/dist/domains/traces/components/trace-columns-menu.cjs.js +2 -2
  557. package/dist/domains/traces/components/trace-columns-menu.es.js +2 -2
  558. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +2 -2
  559. package/dist/domains/traces/components/trace-data-panel-view.es.js +2 -2
  560. package/dist/domains/traces/components/trace-details-view.cjs.js +1 -1
  561. package/dist/domains/traces/components/trace-details-view.es.js +1 -1
  562. package/dist/domains/traces/components/trace-feedback-tab.cjs.js +9 -4
  563. package/dist/domains/traces/components/trace-feedback-tab.cjs.js.map +1 -1
  564. package/dist/domains/traces/components/trace-feedback-tab.es.js +9 -4
  565. package/dist/domains/traces/components/trace-feedback-tab.es.js.map +1 -1
  566. package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
  567. package/dist/domains/traces/components/trace-id-button.es.js +1 -1
  568. package/dist/domains/traces/components/trace-span-panel.cjs.js +2 -1
  569. package/dist/domains/traces/components/trace-span-panel.cjs.js.map +1 -1
  570. package/dist/domains/traces/components/trace-span-panel.es.js +2 -1
  571. package/dist/domains/traces/components/trace-span-panel.es.js.map +1 -1
  572. package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
  573. package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
  574. package/dist/domains/traces/components/trace-thread-panel.cjs.js +3 -2
  575. package/dist/domains/traces/components/trace-thread-panel.cjs.js.map +1 -1
  576. package/dist/domains/traces/components/trace-thread-panel.es.js +3 -2
  577. package/dist/domains/traces/components/trace-thread-panel.es.js.map +1 -1
  578. package/dist/domains/traces/components/traces-explorer/traces-explorer-context.cjs.js.map +1 -1
  579. package/dist/domains/traces/components/traces-explorer/traces-explorer-context.es.js.map +1 -1
  580. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.cjs.js +2 -2
  581. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.es.js +2 -2
  582. package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.cjs.js +8 -3
  583. package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.cjs.js.map +1 -1
  584. package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.es.js +8 -3
  585. package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.es.js.map +1 -1
  586. package/dist/domains/traces/components/traces-explorer/traces-explorer-root.cjs.js +14 -1
  587. package/dist/domains/traces/components/traces-explorer/traces-explorer-root.cjs.js.map +1 -1
  588. package/dist/domains/traces/components/traces-explorer/traces-explorer-root.es.js +14 -1
  589. package/dist/domains/traces/components/traces-explorer/traces-explorer-root.es.js.map +1 -1
  590. package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.cjs.js +1 -1
  591. package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.es.js +1 -1
  592. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.cjs.js +1 -1
  593. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.es.js +1 -1
  594. package/dist/domains/traces/components/traces-explorer.cjs.js.map +1 -1
  595. package/dist/domains/traces/components/traces-explorer.es.js.map +1 -1
  596. package/dist/domains/traces/components/traces-list-mode-toggle.cjs.js +1 -1
  597. package/dist/domains/traces/components/traces-list-mode-toggle.es.js +1 -1
  598. package/dist/domains/traces/components/traces-list-view.cjs.js +1 -1
  599. package/dist/domains/traces/components/traces-list-view.es.js +1 -1
  600. package/dist/domains/traces/components/traces-spans-switch.cjs.js +1 -1
  601. package/dist/domains/traces/components/traces-spans-switch.es.js +1 -1
  602. package/dist/domains/workflows/components/workflow-combobox.cjs.js +1 -1
  603. package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
  604. package/dist/domains/workflows/components/workflow-layout.cjs.js +1 -1
  605. package/dist/domains/workflows/components/workflow-layout.es.js +1 -1
  606. package/dist/domains/workflows/components/workflow-step-detail.cjs.js +2 -2
  607. package/dist/domains/workflows/components/workflow-step-detail.es.js +2 -2
  608. package/dist/domains/workflows/workflow/data/workflow-data-button.cjs.js +1 -1
  609. package/dist/domains/workflows/workflow/data/workflow-data-button.es.js +1 -1
  610. package/dist/domains/workflows/workflow/data/workflow-data-inspector.cjs.js +1 -1
  611. package/dist/domains/workflows/workflow/data/workflow-data-inspector.es.js +1 -1
  612. package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js +1 -1
  613. package/dist/domains/workflows/workflow/input/workflow-json-input.es.js +1 -1
  614. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.cjs.js +1 -1
  615. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +1 -1
  616. package/dist/domains/workflows/workflow/utils.cjs.js +1 -1
  617. package/dist/domains/workflows/workflow/utils.es.js +1 -1
  618. package/dist/domains/workflows/workflow/workflow-body-graph.cjs.js +1 -1
  619. package/dist/domains/workflows/workflow/workflow-body-graph.es.js +1 -1
  620. package/dist/domains/workflows/workflow/workflow-data-edge.cjs.js +1 -1
  621. package/dist/domains/workflows/workflow/workflow-data-edge.es.js +1 -1
  622. package/dist/domains/workflows/workflow/workflow-debug-step-controls.cjs.js +1 -1
  623. package/dist/domains/workflows/workflow/workflow-debug-step-controls.es.js +1 -1
  624. package/dist/domains/workflows/workflow/workflow-graph-inner.cjs.js +2 -2
  625. package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +2 -2
  626. package/dist/domains/workflows/workflow/workflow-graph-layout.cjs.js +1 -1
  627. package/dist/domains/workflows/workflow/workflow-graph-layout.es.js +1 -1
  628. package/dist/domains/workflows/workflow/workflow-graph-node.cjs.js +1 -1
  629. package/dist/domains/workflows/workflow/workflow-graph-node.es.js +1 -1
  630. package/dist/domains/workflows/workflow/workflow-graph.cjs.js +1 -1
  631. package/dist/domains/workflows/workflow/workflow-graph.es.js +1 -1
  632. package/dist/domains/workflows/workflow/workflow-map-config-dialog.cjs.js +1 -1
  633. package/dist/domains/workflows/workflow/workflow-map-config-dialog.es.js +1 -1
  634. package/dist/domains/workflows/workflow/workflow-nested-graph.cjs.js +1 -1
  635. package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +1 -1
  636. package/dist/domains/workflows/workflow/workflow-run-data.cjs.js +3 -3
  637. package/dist/domains/workflows/workflow/workflow-run-data.es.js +3 -3
  638. package/dist/domains/workflows/workflow/workflow-status.cjs.js +1 -1
  639. package/dist/domains/workflows/workflow/workflow-status.es.js +1 -1
  640. package/dist/domains/workflows/workflow/workflow-step-action-bar.cjs.js +1 -1
  641. package/dist/domains/workflows/workflow/workflow-step-action-bar.es.js +1 -1
  642. package/dist/domains/workflows/workflow/workflow-step-node-utils.cjs.js +1 -1
  643. package/dist/domains/workflows/workflow/workflow-step-node-utils.es.js +1 -1
  644. package/dist/domains/workflows/workflow/workflow-suspended-steps.cjs.js +1 -1
  645. package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +1 -1
  646. package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +1 -1
  647. package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +1 -1
  648. package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +1 -1
  649. package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +1 -1
  650. package/dist/domains/workspace/components/workspace-create-directory.cjs.js +1 -1
  651. package/dist/domains/workspace/components/workspace-create-directory.es.js +1 -1
  652. package/dist/domains/workspace/components/workspace-markdown-preview.cjs.js +1 -1
  653. package/dist/domains/workspace/components/workspace-markdown-preview.es.js +1 -1
  654. package/dist/domains/workspace/components/workspace-search.cjs.js +1 -1
  655. package/dist/domains/workspace/components/workspace-search.es.js +1 -1
  656. package/dist/domains/workspace/components/workspace-tree.cjs.js +1 -1
  657. package/dist/domains/workspace/components/workspace-tree.es.js +1 -1
  658. package/dist/{dropdown-menu-Dx-jCOIv.cjs → dropdown-menu-D3D8USIY.cjs} +9 -1
  659. package/dist/dropdown-menu-D3D8USIY.cjs.map +1 -0
  660. package/dist/{dropdown-menu-DKoWI8kD.js → dropdown-menu-jsf9D-J_.js} +9 -1
  661. package/dist/dropdown-menu-jsf9D-J_.js.map +1 -0
  662. package/dist/ee/signals/sankey-signals.cjs.js +1 -1
  663. package/dist/ee/signals/sankey-signals.es.js +1 -1
  664. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +1 -1
  665. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +1 -1
  666. package/dist/ee/signals/settings/trace-signal-settings.cjs.js +1 -1
  667. package/dist/ee/signals/settings/trace-signal-settings.es.js +1 -1
  668. package/dist/ee/signals/view-mode-tab.cjs.js +1 -1
  669. package/dist/ee/signals/view-mode-tab.es.js +1 -1
  670. package/dist/{filter-bar-chip-NBtfDca9.js → filter-bar-chip-Cz5GYBWP.js} +2 -2
  671. package/dist/{filter-bar-chip-NBtfDca9.js.map → filter-bar-chip-Cz5GYBWP.js.map} +1 -1
  672. package/dist/{filter-bar-chip-DFsbUZ-V.cjs → filter-bar-chip-q2Zr-cnY.cjs} +2 -2
  673. package/dist/{filter-bar-chip-DFsbUZ-V.cjs.map → filter-bar-chip-q2Zr-cnY.cjs.map} +1 -1
  674. package/dist/{filter-bar-time-range-DlVNjw43.cjs → filter-bar-time-range-D4C3kU0J.cjs} +3 -3
  675. package/dist/{filter-bar-time-range-DlVNjw43.cjs.map → filter-bar-time-range-D4C3kU0J.cjs.map} +1 -1
  676. package/dist/{filter-bar-time-range-D9SnzR2J.js → filter-bar-time-range-ao2YiYEJ.js} +3 -3
  677. package/dist/{filter-bar-time-range-D9SnzR2J.js.map → filter-bar-time-range-ao2YiYEJ.js.map} +1 -1
  678. package/dist/icons/ConfluenceIcon.cjs.js +18 -0
  679. package/dist/icons/ConfluenceIcon.cjs.js.map +1 -0
  680. package/dist/icons/ConfluenceIcon.d.ts +1 -0
  681. package/dist/icons/ConfluenceIcon.es.js +15 -0
  682. package/dist/icons/ConfluenceIcon.es.js.map +1 -0
  683. package/dist/icons/NotionIcon.cjs.js +18 -0
  684. package/dist/icons/NotionIcon.cjs.js.map +1 -0
  685. package/dist/icons/NotionIcon.d.ts +1 -0
  686. package/dist/icons/NotionIcon.es.js +15 -0
  687. package/dist/icons/NotionIcon.es.js.map +1 -0
  688. package/dist/icons/ZendeskIcon.cjs.js +18 -0
  689. package/dist/icons/ZendeskIcon.cjs.js.map +1 -0
  690. package/dist/icons/ZendeskIcon.d.ts +1 -0
  691. package/dist/icons/ZendeskIcon.es.js +15 -0
  692. package/dist/icons/ZendeskIcon.es.js.map +1 -0
  693. package/dist/{input-Cyit5ZSc.js → input-BNykbvOz.js} +2 -2
  694. package/dist/input-BNykbvOz.js.map +1 -0
  695. package/dist/{input-BpnUsQSt.cjs → input-D_V0m95F.cjs} +2 -2
  696. package/dist/input-D_V0m95F.cjs.map +1 -0
  697. package/dist/{input-group-NV4ZzKOk.js → input-group-CCSyY4J5.js} +3 -3
  698. package/dist/{input-group-NV4ZzKOk.js.map → input-group-CCSyY4J5.js.map} +1 -1
  699. package/dist/{input-group-DBCilXjT.cjs → input-group-Da8HBo30.cjs} +3 -3
  700. package/dist/{input-group-DBCilXjT.cjs.map → input-group-Da8HBo30.cjs.map} +1 -1
  701. package/dist/layout/tabbed-container.cjs.js +1 -1
  702. package/dist/layout/tabbed-container.es.js +1 -1
  703. package/dist/lib/form/components/number-field.cjs.js +1 -1
  704. package/dist/lib/form/components/number-field.es.js +1 -1
  705. package/dist/lib/form/components/record-field.cjs.js +1 -1
  706. package/dist/lib/form/components/record-field.es.js +1 -1
  707. package/dist/{observability-saved-views-DgABvgat.cjs → observability-saved-views-CzRPN_9m.cjs} +4 -4
  708. package/dist/{observability-saved-views-DgABvgat.cjs.map → observability-saved-views-CzRPN_9m.cjs.map} +1 -1
  709. package/dist/{observability-saved-views-Ch53fh5_.js → observability-saved-views-hu_hkXVY.js} +4 -4
  710. package/dist/{observability-saved-views-Ch53fh5_.js.map → observability-saved-views-hu_hkXVY.js.map} +1 -1
  711. package/dist/primitives/menu-item.cjs.js +1 -1
  712. package/dist/primitives/menu-item.cjs.js.map +1 -1
  713. package/dist/primitives/menu-item.es.js +1 -1
  714. package/dist/primitives/menu-item.es.js.map +1 -1
  715. package/dist/{property-filter-applied-DuyL4S_K.cjs → property-filter-applied-ML84st6J.cjs} +3 -3
  716. package/dist/{property-filter-applied-DuyL4S_K.cjs.map → property-filter-applied-ML84st6J.cjs.map} +1 -1
  717. package/dist/{property-filter-applied-DoxQHG09.js → property-filter-applied-PaJ7sLsM.js} +3 -3
  718. package/dist/{property-filter-applied-DoxQHG09.js.map → property-filter-applied-PaJ7sLsM.js.map} +1 -1
  719. package/dist/{span-payload-primitives-D2NWznGy.cjs → span-payload-primitives-CL3hlirm.cjs} +3 -3
  720. package/dist/{span-payload-primitives-D2NWznGy.cjs.map → span-payload-primitives-CL3hlirm.cjs.map} +1 -1
  721. package/dist/{span-payload-primitives-BKkRpVVO.js → span-payload-primitives-KxqoXspn.js} +3 -3
  722. package/dist/{span-payload-primitives-BKkRpVVO.js.map → span-payload-primitives-KxqoXspn.js.map} +1 -1
  723. package/dist/src/domains/dashboards/components/connected-widget.d.ts +9 -0
  724. package/dist/src/domains/dashboards/components/dashboard-renderer.d.ts +9 -2
  725. package/dist/src/domains/dashboards/components/stateless-widget.d.ts +40 -0
  726. package/dist/src/domains/dashboards/components/view-gate.d.ts +2 -10
  727. package/dist/src/domains/dashboards/components/widget-controls.d.ts +25 -1
  728. package/dist/src/domains/dashboards/hooks/use-dashboard-environment.d.ts +8 -0
  729. package/dist/src/domains/dashboards/hooks/use-dashboard-requests.d.ts +11 -1
  730. package/dist/src/domains/dashboards/hooks/use-widget-views.d.ts +8 -2
  731. package/dist/src/domains/dashboards/index.d.ts +14 -6
  732. package/dist/src/domains/dashboards/kinds/kpis/kpis-plan.d.ts +355 -0
  733. package/dist/src/domains/dashboards/kinds/kpis/kpis-widget.d.ts +1 -1
  734. package/dist/src/domains/dashboards/kinds/scores/scores-plan.d.ts +358 -0
  735. package/dist/src/domains/dashboards/kinds/scores/scores-widget.d.ts +1 -1
  736. package/dist/src/domains/dashboards/kinds/table/table-cells.d.ts +6 -2
  737. package/dist/src/domains/dashboards/kinds/table/table-columns.d.ts +2 -1
  738. package/dist/src/domains/dashboards/kinds/table/table-plan.d.ts +18 -0
  739. package/dist/src/domains/dashboards/kinds/table/table-tabs.d.ts +1 -1
  740. package/dist/src/domains/dashboards/kinds/table/table-view.d.ts +1 -0
  741. package/dist/src/domains/dashboards/kinds/timeseries/timeseries-plan.d.ts +355 -0
  742. package/dist/src/domains/dashboards/lib/alert-actions.d.ts +36 -0
  743. package/dist/src/domains/dashboards/lib/gate.d.ts +65 -0
  744. package/dist/src/domains/dashboards/lib/plan-widget.d.ts +390 -0
  745. package/dist/src/domains/dashboards/lib/requests.d.ts +22 -0
  746. package/dist/src/domains/dashboards/lib/scores.d.ts +11 -1
  747. package/dist/src/domains/dashboards/lib/timeseries.d.ts +6 -1
  748. package/dist/src/domains/dashboards/lib/values.d.ts +5 -0
  749. package/dist/src/domains/dashboards/widget-kind.d.ts +105 -2
  750. package/dist/src/domains/knowledge/components/KnowledgePageDetail.d.ts +7 -1
  751. package/dist/src/domains/knowledge/components/KnowledgePageExplorer.d.ts +4 -1
  752. package/dist/src/domains/knowledge/components/KnowledgePageGraph.d.ts +3 -0
  753. package/dist/src/domains/knowledge/components/KnowledgeSourceIcon.d.ts +5 -0
  754. package/dist/src/domains/knowledge/components/KnowledgeTooltip.d.ts +5 -0
  755. package/dist/src/domains/knowledge/lib/fitViewport.d.ts +9 -2
  756. package/dist/src/domains/knowledge/lib/pageAddress.d.ts +10 -0
  757. package/dist/src/domains/knowledge/lib/pageRefs.d.ts +12 -1
  758. package/dist/src/domains/knowledge/lib/pagesByRefContext.d.ts +6 -0
  759. package/dist/src/domains/mcps/components/mcp-app-tool-result.d.ts +3 -1
  760. package/dist/src/domains/mcps/components/mcp-app-viewer.d.ts +6 -1
  761. package/dist/src/domains/mcps/context/mcp-app-host-context-value.d.ts +23 -0
  762. package/dist/src/domains/mcps/context/mcp-app-host-context.d.ts +7 -0
  763. package/dist/src/domains/mcps/index.d.ts +3 -0
  764. package/dist/src/domains/traces/components/feedback-options.d.ts +8 -0
  765. package/dist/src/domains/traces/components/feedback-thread.d.ts +2 -1
  766. package/dist/src/domains/traces/components/span-feedback-tab.d.ts +4 -2
  767. package/dist/src/domains/traces/components/thread-view-by-trace.d.ts +4 -1
  768. package/dist/src/domains/traces/components/trace-feedback-tab.d.ts +4 -2
  769. package/dist/src/domains/traces/components/trace-span-panel.d.ts +3 -1
  770. package/dist/src/domains/traces/components/trace-thread-panel.d.ts +3 -1
  771. package/dist/src/domains/traces/components/traces-explorer/index.d.ts +1 -0
  772. package/dist/src/domains/traces/components/traces-explorer/traces-explorer-context.d.ts +2 -0
  773. package/dist/src/domains/traces/components/traces-explorer/traces-explorer-root.d.ts +4 -1
  774. package/dist/src/ds/components/Breadcrumb/Breadcrumb.d.ts +2 -0
  775. package/dist/src/ds/components/DropdownMenu/dropdown-menu.d.ts +3 -0
  776. package/dist/src/ds/components/Tree/tree-label.d.ts +1 -1
  777. package/dist/src/ds/icons/ConfluenceIcon.d.ts +2 -0
  778. package/dist/src/ds/icons/NotionIcon.d.ts +2 -0
  779. package/dist/src/ds/icons/ZendeskIcon.d.ts +2 -0
  780. package/dist/src/ds/icons/index.d.ts +3 -0
  781. package/dist/src/utils/mcp-app-context.d.ts +6 -0
  782. package/dist/style.css +85 -35
  783. package/dist/{tabbed-container-Bhfi-DWr.cjs → tabbed-container-BMLD6mvc.cjs} +4 -4
  784. package/dist/{tabbed-container-Bhfi-DWr.cjs.map → tabbed-container-BMLD6mvc.cjs.map} +1 -1
  785. package/dist/{tabbed-container-DOkHshha.js → tabbed-container-CaS8cZCS.js} +4 -4
  786. package/dist/{tabbed-container-DOkHshha.js.map → tabbed-container-CaS8cZCS.js.map} +1 -1
  787. package/dist/{tabs-content-DwU_eA-a.js → tabs-content-BGkPZ5EQ.js} +2 -2
  788. package/dist/{tabs-content-DwU_eA-a.js.map → tabs-content-BGkPZ5EQ.js.map} +1 -1
  789. package/dist/{tabs-content-BACwMrMG.cjs → tabs-content-D_ic2ZqI.cjs} +2 -2
  790. package/dist/{tabs-content-BACwMrMG.cjs.map → tabs-content-D_ic2ZqI.cjs.map} +1 -1
  791. package/dist/{tabs-tab-BHs639jL.js → tabs-tab-CJVS0WED.js} +2 -2
  792. package/dist/{tabs-tab-BHs639jL.js.map → tabs-tab-CJVS0WED.js.map} +1 -1
  793. package/dist/{tabs-tab-CANh2eAD.cjs → tabs-tab-Dj2huH5T.cjs} +2 -2
  794. package/dist/{tabs-tab-CANh2eAD.cjs.map → tabs-tab-Dj2huH5T.cjs.map} +1 -1
  795. package/dist/{tool-approval-CguPaikn.cjs → tool-approval-C4WNL8VD.cjs} +3 -3
  796. package/dist/{tool-approval-CguPaikn.cjs.map → tool-approval-C4WNL8VD.cjs.map} +1 -1
  797. package/dist/{tool-approval-Cjz0yAzw.js → tool-approval-ZfL3-Vvi.js} +3 -3
  798. package/dist/{tool-approval-Cjz0yAzw.js.map → tool-approval-ZfL3-Vvi.js.map} +1 -1
  799. package/dist/{tool-call-ChJKYCfu.js → tool-call-BLzYTI-x.js} +2 -2
  800. package/dist/{tool-call-ChJKYCfu.js.map → tool-call-BLzYTI-x.js.map} +1 -1
  801. package/dist/{tool-call-BqDI9mrY.cjs → tool-call-C4TBpJ6Y.cjs} +2 -2
  802. package/dist/{tool-call-BqDI9mrY.cjs.map → tool-call-C4TBpJ6Y.cjs.map} +1 -1
  803. package/dist/{tool-card-GSiCfxMz.js → tool-card-CM0aHG3p.js} +4 -3
  804. package/dist/{tool-card-GSiCfxMz.js.map → tool-card-CM0aHG3p.js.map} +1 -1
  805. package/dist/{tool-card-Dg4VOYV6.cjs → tool-card-xDlCD0m6.cjs} +4 -3
  806. package/dist/{tool-card-Dg4VOYV6.cjs.map → tool-card-xDlCD0m6.cjs.map} +1 -1
  807. package/dist/{mcp-app-viewer-BV7FI498.js → types-BwdKiX24.js} +2 -144
  808. package/dist/types-BwdKiX24.js.map +1 -0
  809. package/dist/{mcp-app-viewer-M3-pqAlo.cjs → types-KjLUPShK.cjs} +8 -144
  810. package/dist/types-KjLUPShK.cjs.map +1 -0
  811. package/dist/{use-workflow-graph-runtime-BfCL6nd4.cjs → use-workflow-graph-runtime-DEJA9rk4.cjs} +2 -2
  812. package/dist/{use-workflow-graph-runtime-BfCL6nd4.cjs.map → use-workflow-graph-runtime-DEJA9rk4.cjs.map} +1 -1
  813. package/dist/{use-workflow-graph-runtime-B3VUuhUE.js → use-workflow-graph-runtime-DHOsA1DM.js} +2 -2
  814. package/dist/{use-workflow-graph-runtime-B3VUuhUE.js.map → use-workflow-graph-runtime-DHOsA1DM.js.map} +1 -1
  815. package/dist/utils/mcp-app-context.cjs.js +17 -0
  816. package/dist/utils/mcp-app-context.cjs.js.map +1 -0
  817. package/dist/utils/mcp-app-context.d.ts +1 -0
  818. package/dist/utils/mcp-app-context.es.js +15 -0
  819. package/dist/utils/mcp-app-context.es.js.map +1 -0
  820. package/package.json +8 -8
  821. package/dist/Composer-bVE8qK52.js.map +0 -1
  822. package/dist/Composer-u1K6edoZ.cjs.map +0 -1
  823. package/dist/FilterBar-Kmn6gMgO.js.map +0 -1
  824. package/dist/FilterBar-jBz6yaNu.cjs.map +0 -1
  825. package/dist/MetricsCard-DojbLiEx.cjs.map +0 -1
  826. package/dist/MetricsCard-kAqSCPPe.js.map +0 -1
  827. package/dist/Tree-Caz4FTCU.cjs.map +0 -1
  828. package/dist/Tree-od43gLMO.js.map +0 -1
  829. package/dist/combobox-parts-BeNqgCbj.cjs.map +0 -1
  830. package/dist/combobox-parts-C9o4UfH_.js.map +0 -1
  831. package/dist/domains/dashboards/hooks/use-scorers.cjs.js +0 -41
  832. package/dist/domains/dashboards/hooks/use-scorers.cjs.js.map +0 -1
  833. package/dist/domains/dashboards/hooks/use-scorers.d.ts +0 -1
  834. package/dist/domains/dashboards/hooks/use-scorers.es.js +0 -40
  835. package/dist/domains/dashboards/hooks/use-scorers.es.js.map +0 -1
  836. package/dist/dropdown-menu-DKoWI8kD.js.map +0 -1
  837. package/dist/dropdown-menu-Dx-jCOIv.cjs.map +0 -1
  838. package/dist/input-BpnUsQSt.cjs.map +0 -1
  839. package/dist/input-Cyit5ZSc.js.map +0 -1
  840. package/dist/mcp-app-viewer-BV7FI498.js.map +0 -1
  841. package/dist/mcp-app-viewer-M3-pqAlo.cjs.map +0 -1
  842. package/dist/src/domains/dashboards/hooks/use-scorers.d.ts +0 -66
@@ -1 +1 @@
1
- {"version":3,"file":"trace-span-panel.es.js","names":["_Fragment"],"sources":["../../../../src/domains/traces/components/trace-span-panel.tsx"],"sourcesContent":["import { useSpanDetail, useThreadHasOtherTraces } from '@mastra/react/hooks/traces';\nimport { MessagesSquareIcon } from 'lucide-react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { SpanDataPanelView } from '@/domains/traces/components/span-data-panel-view';\nimport { TraceDataPanel } from '@/domains/traces/components/trace-data-panel';\nimport type { TraceDataPanelView } from '@/domains/traces/components/trace-data-panel-view';\nimport { TraceMessagesPanel } from '@/domains/traces/components/trace-messages-panel';\nimport { getTraceThreadId } from '@/domains/traces/components/trace-thread-context';\nimport { TraceThreadPanel } from '@/domains/traces/components/trace-thread-panel';\nimport { Button } from '@/ds/components/Button';\nimport { useLinkComponent } from '@/lib/framework';\nimport type { LinkComponentPaths } from '@/lib/framework';\n\ntype TraceDataPanelViewProps = ComponentProps<typeof TraceDataPanelView>;\n\nfunction getEntityHref(\n paths: LinkComponentPaths,\n entityType: string | null | undefined,\n entityId: string | null | undefined,\n) {\n if (!entityId || !entityType) return undefined;\n const normalizedEntityType = entityType.toLowerCase();\n if (normalizedEntityType.includes('workflow')) return paths.workflowLink(entityId) || undefined;\n if (normalizedEntityType.includes('agent')) return paths.agentLink(entityId) || undefined;\n return undefined;\n}\ntype SpanDataPanelViewProps = ComponentProps<typeof SpanDataPanelView>;\n\nexport interface TraceSpanPanelProps {\n /** Keep the panel mounted and pass `undefined` to close it, so the drawer animates out. */\n traceId?: string;\n /** Spans returned by `useTraceOrBranchSpans` — the page owns the fetch, the panel renders it. */\n spans: TraceDataPanelViewProps['spans'];\n isLoadingSpans: boolean;\n /** Controlled span selection (URL state on the traces page, local state in the chat aside). */\n selectedSpanId: string | null;\n onSpanSelect: (spanId: string | undefined) => void;\n onClose: () => void;\n\n // Trace-panel pass-through.\n anchorSpanId?: string;\n entityType?: TraceDataPanelViewProps['entityType'];\n initialSpanId?: string | null;\n onPrevious?: () => void;\n onNext?: () => void;\n onSaveAsDatasetItem?: TraceDataPanelViewProps['onSaveAsDatasetItem'];\n feedbackTabBadge?: ReactNode;\n feedbackTabSlot?: TraceDataPanelViewProps['feedbackTabSlot'];\n /** Enables the \"Messages\" column (reconstructed turn) when the displayed root is a complete agent trace with a thread id. */\n showPartialThread?: boolean;\n /** Span ids featured in the timeline (non-featured spans are faded). */\n featuredSpanIds?: string[];\n /** Called with the span ids behind a reconstructed message when the user asks to highlight them. */\n onHighlightSpans?: (spanIds: string[]) => void;\n /** When true, opens the trace's thread (every turn) in a stacked drawer above the trace panel. */\n isFullThreadOpen?: boolean;\n /** Enables the in-place \"Open full thread\" swap; without it the action falls back to a link. */\n onFullThreadOpenChange?: (open: boolean) => void;\n /** Full-thread view: lists through the trace-query API; `false` falls back to `listTracesLight`. */\n withQueryTrace: boolean;\n /** Full-thread view: shows the per-trace Feedback tab. */\n withFeedback: boolean;\n /** Full-thread view: opens a score of one of the thread's traces (the app owns routing). */\n onOpenScore: (traceId: string, scoreId: string) => void;\n scoresTabBadge?: ReactNode;\n scoresTabSlot?: TraceDataPanelViewProps['scoresTabSlot'];\n usage?: TraceDataPanelViewProps['usage'];\n rootStreamingTimings?: TraceDataPanelViewProps['rootStreamingTimings'];\n traceHref?: string;\n /** Drawer width; defaults to `wide`. */\n size?: TraceDataPanelViewProps['size'];\n /** Sibling-drawer elevation (see `DataPanel`). */\n depth?: TraceDataPanelViewProps['depth'];\n /** Rendered inside the drawer above the trace header (e.g. feedback context). */\n headerSlot?: ReactNode;\n /** Integration actions displayed alongside the trace controls. */\n headerActionsSlot?: ReactNode;\n /** Accessible drawer name; defaults to the trace id. */\n title?: string;\n showUnavailableFeaturesMsg?: TraceDataPanelViewProps['showUnavailableFeaturesMsg'];\n spanView?: TraceDataPanelViewProps['spanView'];\n onSpanViewChange?: TraceDataPanelViewProps['onSpanViewChange'];\n\n // Span-panel pass-through.\n spanActiveTab?: SpanDataPanelViewProps['activeTab'];\n onSpanTabChange?: SpanDataPanelViewProps['onTabChange'];\n spanFeedbackTabBadge?: ReactNode;\n spanFeedbackTabSlot?: SpanDataPanelViewProps['feedbackTabSlot'];\n}\n\n/**\n * Shared trace → span drilldown drawer: `TraceDataPanel` with a nested `SpanDataPanelView`.\n * Encapsulates the span-detail fetch and prev/next span navigation that the traces page\n * and the agent chat traces aside used to duplicate.\n */\nexport function TraceSpanPanel({\n traceId,\n spans,\n isLoadingSpans,\n selectedSpanId,\n onSpanSelect,\n onClose,\n anchorSpanId,\n entityType,\n initialSpanId,\n onPrevious,\n onNext,\n onSaveAsDatasetItem,\n feedbackTabBadge,\n feedbackTabSlot,\n showPartialThread,\n featuredSpanIds,\n onHighlightSpans,\n isFullThreadOpen,\n onFullThreadOpenChange,\n withQueryTrace,\n withFeedback,\n onOpenScore,\n scoresTabBadge,\n scoresTabSlot,\n usage,\n rootStreamingTimings,\n traceHref,\n size,\n depth,\n headerSlot,\n headerActionsSlot,\n title,\n showUnavailableFeaturesMsg,\n spanView,\n onSpanViewChange,\n spanActiveTab,\n onSpanTabChange,\n spanFeedbackTabBadge,\n spanFeedbackTabSlot,\n}: TraceSpanPanelProps) {\n const { data: spanDetailData, isLoading: isLoadingSpanDetail } = useSpanDetail({\n traceId: traceId,\n spanId: selectedSpanId ?? '',\n queryOptions: { enabled: !!traceId && !!selectedSpanId },\n });\n const { Link, paths } = useLinkComponent();\n\n // The trace summary links the entity to its page; the app's link provider owns the routes.\n const rootSpan = anchorSpanId\n ? spans?.find(s => s.spanId === anchorSpanId)\n : spans?.find(s => s.parentSpanId == null);\n const entityHref = getEntityHref(paths, rootSpan?.entityType, rootSpan?.entityId);\n const threadId = getTraceThreadId(rootSpan, anchorSpanId);\n const hasMessagesPanel = !!(traceId && showPartialThread && threadId);\n // A single-trace thread would show exactly what the Messages column already shows.\n const hasOtherTraces = useThreadHasOtherTraces({\n threadId: hasMessagesPanel ? threadId : undefined,\n queryOptions: { enabled: !!(hasMessagesPanel ? threadId : undefined) },\n });\n const showFullThreadAction = hasMessagesPanel && hasOtherTraces && !!onFullThreadOpenChange;\n\n return (\n <>\n <TraceDataPanel\n traceId={traceId}\n spans={spans}\n anchorSpanId={anchorSpanId}\n entityType={entityType}\n entityHref={entityHref}\n usage={usage}\n rootStreamingTimings={rootStreamingTimings}\n isLoading={isLoadingSpans}\n onClose={onClose}\n onSpanSelect={onSpanSelect}\n onSaveAsDatasetItem={onSaveAsDatasetItem}\n initialSpanId={initialSpanId ?? selectedSpanId}\n onPrevious={onPrevious}\n onNext={onNext}\n placement=\"traces-list\"\n LinkComponent={Link}\n traceHref={traceHref}\n size={size}\n depth={depth}\n headerSlot={headerSlot}\n headerActionsSlot={headerActionsSlot}\n title={title}\n showUnavailableFeaturesMsg={showUnavailableFeaturesMsg}\n spanView={spanView}\n onSpanViewChange={onSpanViewChange}\n feedbackTabBadge={feedbackTabBadge}\n feedbackTabSlot={feedbackTabSlot}\n featuredSpanIds={featuredSpanIds}\n messagesPanelSlot={\n hasMessagesPanel ? <TraceMessagesPanel traceId={traceId} onHighlightSpans={onHighlightSpans} /> : undefined\n }\n sideHeaderActions={\n showFullThreadAction\n ? ({ compact }) => (\n <Button\n tooltip={compact ? 'Open full thread' : undefined}\n icon={<MessagesSquareIcon />}\n variant=\"ghost\"\n size=\"sm\"\n // At a side column of 500px or less, collapse to a round icon button; the label stays for screen readers.\n className=\"@max-[501px]:w-control-sm @max-[501px]:rounded-full @max-[501px]:px-0 @max-[501px]:[&>[data-slot=button-icon]]:ml-0\"\n onClick={() => onFullThreadOpenChange(true)}\n >\n <span className=\"@max-[501px]:sr-only\">Open full thread</span>\n </Button>\n )\n : undefined\n }\n scoresTabBadge={scoresTabBadge}\n scoresTabSlot={scoresTabSlot}\n spanPanelSlot={\n traceId && selectedSpanId ? (\n <SpanDataPanelView\n traceId={traceId}\n spanId={selectedSpanId}\n span={spanDetailData?.span}\n isLoading={isLoadingSpanDetail}\n onClose={() => onSpanSelect(undefined)}\n activeTab={spanActiveTab}\n onTabChange={onSpanTabChange}\n feedbackTabBadge={spanFeedbackTabBadge}\n feedbackTabSlot={spanFeedbackTabSlot}\n />\n ) : null\n }\n />\n {/* Rendered after the trace panel: DataPanel stacking follows DOM order. */}\n <TraceThreadPanel\n open={!!(traceId && isFullThreadOpen && threadId)}\n depth={depth && depth > 1 ? 3 : 2}\n threadId={threadId ?? ''}\n onOpenScore={onOpenScore}\n withQueryTrace={withQueryTrace}\n withFeedback={withFeedback}\n onClose={() => onFullThreadOpenChange?.(false)}\n />\n </>\n );\n}\n"],"mappings":";;;;;;;;;;;AAeA,SAAS,cACP,OACA,YACA,UACA;CACA,IAAI,CAAC,YAAY,CAAC,YAAY,OAAO,KAAA;CACrC,MAAM,uBAAuB,WAAW,YAAY;CACpD,IAAI,qBAAqB,SAAS,UAAU,GAAG,OAAO,MAAM,aAAa,QAAQ,KAAK,KAAA;CACtF,IAAI,qBAAqB,SAAS,OAAO,GAAG,OAAO,MAAM,UAAU,QAAQ,KAAK,KAAA;AAElF;;;;;;AAsEA,SAAgB,eAAe,EAC7B,SACA,OACA,gBACA,gBACA,cACA,SACA,cACA,YACA,eACA,YACA,QACA,qBACA,kBACA,iBACA,mBACA,iBACA,kBACA,kBACA,wBACA,gBACA,cACA,aACA,gBACA,eACA,OACA,sBACA,WACA,MACA,OACA,YACA,mBACA,OACA,4BACA,UACA,kBACA,eACA,iBACA,sBACA,uBACsB;CACtB,MAAM,EAAE,MAAM,gBAAgB,WAAW,wBAAwB,cAAc;EACpE;EACT,QAAQ,kBAAkB;EAC1B,cAAc,EAAE,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC,eAAe;CACzD,CAAC;CACD,MAAM,EAAE,MAAM,UAAU,iBAAiB;CAGzC,MAAM,WAAW,eACb,OAAO,MAAK,MAAK,EAAE,WAAW,YAAY,IAC1C,OAAO,MAAK,MAAK,EAAE,gBAAgB,IAAI;CAC3C,MAAM,aAAa,cAAc,OAAO,UAAU,YAAY,UAAU,QAAQ;CAChF,MAAM,WAAW,iBAAiB,UAAU,YAAY;CACxD,MAAM,mBAAmB,CAAC,EAAE,WAAW,qBAAqB;CAE5D,MAAM,iBAAiB,wBAAwB;EAC7C,UAAU,mBAAmB,WAAW,KAAA;EACxC,cAAc,EAAE,SAAS,CAAC,EAAE,mBAAmB,WAAW,KAAA,GAAW;CACvE,CAAC;CAGD,OACE,qBAAAA,UAAA,EAAA,UAAA,CACE,oBAAC,gBAAD;EACW;EACF;EACO;EACF;EACA;EACL;EACe;EACtB,WAAW;EACF;EACK;EACO;EACrB,eAAe,iBAAiB;EACpB;EACJ;EACR,WAAU;EACV,eAAe;EACJ;EACL;EACC;EACK;EACO;EACZ;EACqB;EAClB;EACQ;EACA;EACD;EACA;EACjB,mBACE,mBAAmB,oBAAC,oBAAD;GAA6B;GAA2B;EAAmB,CAAA,IAAI,KAAA;EAEpG,mBApCuB,oBAAoB,kBAAkB,CAAC,CAAC,0BAsCxD,EAAE,cACD,oBAAC,QAAD;GACE,SAAS,UAAU,qBAAqB,KAAA;GACxC,MAAM,oBAAC,oBAAD,CAAqB,CAAA;GAC3B,SAAQ;GACR,MAAK;GAEL,WAAU;GACV,eAAe,uBAAuB,IAAI;GAE1C,UAAA,oBAAC,QAAD;IAAM,WAAU;IAAuB,UAAA;GAAsB,CAAA;EACvD,CAAA,IAEV,KAAA;EAEU;EACD;EACf,eACE,WAAW,iBACT,oBAAC,mBAAD;GACW;GACT,QAAQ;GACR,MAAM,gBAAgB;GACtB,WAAW;GACX,eAAe,aAAa,KAAA,CAAS;GACrC,WAAW;GACX,aAAa;GACb,kBAAkB;GAClB,iBAAiB;EAClB,CAAA,IACC;CAEP,CAAA,GAED,oBAAC,kBAAD;EACE,MAAM,CAAC,EAAE,WAAW,oBAAoB;EACxC,OAAO,SAAS,QAAQ,IAAI,IAAI;EAChC,UAAU,YAAY;EACT;EACG;EACF;EACd,eAAe,yBAAyB,KAAK;CAC9C,CAAA,CACD,EAAA,CAAA;AAEN"}
1
+ {"version":3,"file":"trace-span-panel.es.js","names":["_Fragment"],"sources":["../../../../src/domains/traces/components/trace-span-panel.tsx"],"sourcesContent":["import { useSpanDetail, useThreadHasOtherTraces } from '@mastra/react/hooks/traces';\nimport { MessagesSquareIcon } from 'lucide-react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport type { FeedbackOptions } from './feedback-options';\nimport { SpanDataPanelView } from '@/domains/traces/components/span-data-panel-view';\nimport { TraceDataPanel } from '@/domains/traces/components/trace-data-panel';\nimport type { TraceDataPanelView } from '@/domains/traces/components/trace-data-panel-view';\nimport { TraceMessagesPanel } from '@/domains/traces/components/trace-messages-panel';\nimport { getTraceThreadId } from '@/domains/traces/components/trace-thread-context';\nimport { TraceThreadPanel } from '@/domains/traces/components/trace-thread-panel';\nimport { Button } from '@/ds/components/Button';\nimport { useLinkComponent } from '@/lib/framework';\nimport type { LinkComponentPaths } from '@/lib/framework';\n\ntype TraceDataPanelViewProps = ComponentProps<typeof TraceDataPanelView>;\n\nfunction getEntityHref(\n paths: LinkComponentPaths,\n entityType: string | null | undefined,\n entityId: string | null | undefined,\n) {\n if (!entityId || !entityType) return undefined;\n const normalizedEntityType = entityType.toLowerCase();\n if (normalizedEntityType.includes('workflow')) return paths.workflowLink(entityId) || undefined;\n if (normalizedEntityType.includes('agent')) return paths.agentLink(entityId) || undefined;\n return undefined;\n}\ntype SpanDataPanelViewProps = ComponentProps<typeof SpanDataPanelView>;\n\nexport interface TraceSpanPanelProps {\n /** Keep the panel mounted and pass `undefined` to close it, so the drawer animates out. */\n traceId?: string;\n /** Spans returned by `useTraceOrBranchSpans` — the page owns the fetch, the panel renders it. */\n spans: TraceDataPanelViewProps['spans'];\n isLoadingSpans: boolean;\n /** Controlled span selection (URL state on the traces page, local state in the chat aside). */\n selectedSpanId: string | null;\n onSpanSelect: (spanId: string | undefined) => void;\n onClose: () => void;\n\n // Trace-panel pass-through.\n anchorSpanId?: string;\n entityType?: TraceDataPanelViewProps['entityType'];\n initialSpanId?: string | null;\n onPrevious?: () => void;\n onNext?: () => void;\n onSaveAsDatasetItem?: TraceDataPanelViewProps['onSaveAsDatasetItem'];\n feedbackTabBadge?: ReactNode;\n feedbackTabSlot?: TraceDataPanelViewProps['feedbackTabSlot'];\n /** Enables the \"Messages\" column (reconstructed turn) when the displayed root is a complete agent trace with a thread id. */\n showPartialThread?: boolean;\n /** Span ids featured in the timeline (non-featured spans are faded). */\n featuredSpanIds?: string[];\n /** Called with the span ids behind a reconstructed message when the user asks to highlight them. */\n onHighlightSpans?: (spanIds: string[]) => void;\n /** When true, opens the trace's thread (every turn) in a stacked drawer above the trace panel. */\n isFullThreadOpen?: boolean;\n /** Enables the in-place \"Open full thread\" swap; without it the action falls back to a link. */\n onFullThreadOpenChange?: (open: boolean) => void;\n /** Full-thread view: lists through the trace-query API; `false` falls back to `listTracesLight`. */\n withQueryTrace: boolean;\n /** Full-thread view: shows the per-trace Feedback tab. */\n withFeedback: boolean;\n feedbackOptions?: FeedbackOptions;\n /** Full-thread view: opens a score of one of the thread's traces (the app owns routing). */\n onOpenScore: (traceId: string, scoreId: string) => void;\n scoresTabBadge?: ReactNode;\n scoresTabSlot?: TraceDataPanelViewProps['scoresTabSlot'];\n usage?: TraceDataPanelViewProps['usage'];\n rootStreamingTimings?: TraceDataPanelViewProps['rootStreamingTimings'];\n traceHref?: string;\n /** Drawer width; defaults to `wide`. */\n size?: TraceDataPanelViewProps['size'];\n /** Sibling-drawer elevation (see `DataPanel`). */\n depth?: TraceDataPanelViewProps['depth'];\n /** Rendered inside the drawer above the trace header (e.g. feedback context). */\n headerSlot?: ReactNode;\n /** Integration actions displayed alongside the trace controls. */\n headerActionsSlot?: ReactNode;\n /** Accessible drawer name; defaults to the trace id. */\n title?: string;\n showUnavailableFeaturesMsg?: TraceDataPanelViewProps['showUnavailableFeaturesMsg'];\n spanView?: TraceDataPanelViewProps['spanView'];\n onSpanViewChange?: TraceDataPanelViewProps['onSpanViewChange'];\n\n // Span-panel pass-through.\n spanActiveTab?: SpanDataPanelViewProps['activeTab'];\n onSpanTabChange?: SpanDataPanelViewProps['onTabChange'];\n spanFeedbackTabBadge?: ReactNode;\n spanFeedbackTabSlot?: SpanDataPanelViewProps['feedbackTabSlot'];\n}\n\n/**\n * Shared trace → span drilldown drawer: `TraceDataPanel` with a nested `SpanDataPanelView`.\n * Encapsulates the span-detail fetch and prev/next span navigation that the traces page\n * and the agent chat traces aside used to duplicate.\n */\nexport function TraceSpanPanel({\n traceId,\n spans,\n isLoadingSpans,\n selectedSpanId,\n onSpanSelect,\n onClose,\n anchorSpanId,\n entityType,\n initialSpanId,\n onPrevious,\n onNext,\n onSaveAsDatasetItem,\n feedbackTabBadge,\n feedbackTabSlot,\n showPartialThread,\n featuredSpanIds,\n onHighlightSpans,\n isFullThreadOpen,\n onFullThreadOpenChange,\n withQueryTrace,\n withFeedback,\n feedbackOptions,\n onOpenScore,\n scoresTabBadge,\n scoresTabSlot,\n usage,\n rootStreamingTimings,\n traceHref,\n size,\n depth,\n headerSlot,\n headerActionsSlot,\n title,\n showUnavailableFeaturesMsg,\n spanView,\n onSpanViewChange,\n spanActiveTab,\n onSpanTabChange,\n spanFeedbackTabBadge,\n spanFeedbackTabSlot,\n}: TraceSpanPanelProps) {\n const { data: spanDetailData, isLoading: isLoadingSpanDetail } = useSpanDetail({\n traceId: traceId,\n spanId: selectedSpanId ?? '',\n queryOptions: { enabled: !!traceId && !!selectedSpanId },\n });\n const { Link, paths } = useLinkComponent();\n\n // The trace summary links the entity to its page; the app's link provider owns the routes.\n const rootSpan = anchorSpanId\n ? spans?.find(s => s.spanId === anchorSpanId)\n : spans?.find(s => s.parentSpanId == null);\n const entityHref = getEntityHref(paths, rootSpan?.entityType, rootSpan?.entityId);\n const threadId = getTraceThreadId(rootSpan, anchorSpanId);\n const hasMessagesPanel = !!(traceId && showPartialThread && threadId);\n // A single-trace thread would show exactly what the Messages column already shows.\n const hasOtherTraces = useThreadHasOtherTraces({\n threadId: hasMessagesPanel ? threadId : undefined,\n queryOptions: { enabled: !!(hasMessagesPanel ? threadId : undefined) },\n });\n const showFullThreadAction = hasMessagesPanel && hasOtherTraces && !!onFullThreadOpenChange;\n\n return (\n <>\n <TraceDataPanel\n traceId={traceId}\n spans={spans}\n anchorSpanId={anchorSpanId}\n entityType={entityType}\n entityHref={entityHref}\n usage={usage}\n rootStreamingTimings={rootStreamingTimings}\n isLoading={isLoadingSpans}\n onClose={onClose}\n onSpanSelect={onSpanSelect}\n onSaveAsDatasetItem={onSaveAsDatasetItem}\n initialSpanId={initialSpanId ?? selectedSpanId}\n onPrevious={onPrevious}\n onNext={onNext}\n placement=\"traces-list\"\n LinkComponent={Link}\n traceHref={traceHref}\n size={size}\n depth={depth}\n headerSlot={headerSlot}\n headerActionsSlot={headerActionsSlot}\n title={title}\n showUnavailableFeaturesMsg={showUnavailableFeaturesMsg}\n spanView={spanView}\n onSpanViewChange={onSpanViewChange}\n feedbackTabBadge={feedbackTabBadge}\n feedbackTabSlot={feedbackTabSlot}\n featuredSpanIds={featuredSpanIds}\n messagesPanelSlot={\n hasMessagesPanel ? <TraceMessagesPanel traceId={traceId} onHighlightSpans={onHighlightSpans} /> : undefined\n }\n sideHeaderActions={\n showFullThreadAction\n ? ({ compact }) => (\n <Button\n tooltip={compact ? 'Open full thread' : undefined}\n icon={<MessagesSquareIcon />}\n variant=\"ghost\"\n size=\"sm\"\n // At a side column of 500px or less, collapse to a round icon button; the label stays for screen readers.\n className=\"@max-[501px]:w-control-sm @max-[501px]:rounded-full @max-[501px]:px-0 @max-[501px]:[&>[data-slot=button-icon]]:ml-0\"\n onClick={() => onFullThreadOpenChange(true)}\n >\n <span className=\"@max-[501px]:sr-only\">Open full thread</span>\n </Button>\n )\n : undefined\n }\n scoresTabBadge={scoresTabBadge}\n scoresTabSlot={scoresTabSlot}\n spanPanelSlot={\n traceId && selectedSpanId ? (\n <SpanDataPanelView\n traceId={traceId}\n spanId={selectedSpanId}\n span={spanDetailData?.span}\n isLoading={isLoadingSpanDetail}\n onClose={() => onSpanSelect(undefined)}\n activeTab={spanActiveTab}\n onTabChange={onSpanTabChange}\n feedbackTabBadge={spanFeedbackTabBadge}\n feedbackTabSlot={spanFeedbackTabSlot}\n />\n ) : null\n }\n />\n {/* Rendered after the trace panel: DataPanel stacking follows DOM order. */}\n <TraceThreadPanel\n open={!!(traceId && isFullThreadOpen && threadId)}\n depth={depth && depth > 1 ? 3 : 2}\n threadId={threadId ?? ''}\n onOpenScore={onOpenScore}\n withQueryTrace={withQueryTrace}\n withFeedback={withFeedback}\n feedbackOptions={feedbackOptions}\n onClose={() => onFullThreadOpenChange?.(false)}\n />\n </>\n );\n}\n"],"mappings":";;;;;;;;;;;AAgBA,SAAS,cACP,OACA,YACA,UACA;CACA,IAAI,CAAC,YAAY,CAAC,YAAY,OAAO,KAAA;CACrC,MAAM,uBAAuB,WAAW,YAAY;CACpD,IAAI,qBAAqB,SAAS,UAAU,GAAG,OAAO,MAAM,aAAa,QAAQ,KAAK,KAAA;CACtF,IAAI,qBAAqB,SAAS,OAAO,GAAG,OAAO,MAAM,UAAU,QAAQ,KAAK,KAAA;AAElF;;;;;;AAuEA,SAAgB,eAAe,EAC7B,SACA,OACA,gBACA,gBACA,cACA,SACA,cACA,YACA,eACA,YACA,QACA,qBACA,kBACA,iBACA,mBACA,iBACA,kBACA,kBACA,wBACA,gBACA,cACA,iBACA,aACA,gBACA,eACA,OACA,sBACA,WACA,MACA,OACA,YACA,mBACA,OACA,4BACA,UACA,kBACA,eACA,iBACA,sBACA,uBACsB;CACtB,MAAM,EAAE,MAAM,gBAAgB,WAAW,wBAAwB,cAAc;EACpE;EACT,QAAQ,kBAAkB;EAC1B,cAAc,EAAE,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC,eAAe;CACzD,CAAC;CACD,MAAM,EAAE,MAAM,UAAU,iBAAiB;CAGzC,MAAM,WAAW,eACb,OAAO,MAAK,MAAK,EAAE,WAAW,YAAY,IAC1C,OAAO,MAAK,MAAK,EAAE,gBAAgB,IAAI;CAC3C,MAAM,aAAa,cAAc,OAAO,UAAU,YAAY,UAAU,QAAQ;CAChF,MAAM,WAAW,iBAAiB,UAAU,YAAY;CACxD,MAAM,mBAAmB,CAAC,EAAE,WAAW,qBAAqB;CAE5D,MAAM,iBAAiB,wBAAwB;EAC7C,UAAU,mBAAmB,WAAW,KAAA;EACxC,cAAc,EAAE,SAAS,CAAC,EAAE,mBAAmB,WAAW,KAAA,GAAW;CACvE,CAAC;CAGD,OACE,qBAAAA,UAAA,EAAA,UAAA,CACE,oBAAC,gBAAD;EACW;EACF;EACO;EACF;EACA;EACL;EACe;EACtB,WAAW;EACF;EACK;EACO;EACrB,eAAe,iBAAiB;EACpB;EACJ;EACR,WAAU;EACV,eAAe;EACJ;EACL;EACC;EACK;EACO;EACZ;EACqB;EAClB;EACQ;EACA;EACD;EACA;EACjB,mBACE,mBAAmB,oBAAC,oBAAD;GAA6B;GAA2B;EAAmB,CAAA,IAAI,KAAA;EAEpG,mBApCuB,oBAAoB,kBAAkB,CAAC,CAAC,0BAsCxD,EAAE,cACD,oBAAC,QAAD;GACE,SAAS,UAAU,qBAAqB,KAAA;GACxC,MAAM,oBAAC,oBAAD,CAAqB,CAAA;GAC3B,SAAQ;GACR,MAAK;GAEL,WAAU;GACV,eAAe,uBAAuB,IAAI;GAE1C,UAAA,oBAAC,QAAD;IAAM,WAAU;IAAuB,UAAA;GAAsB,CAAA;EACvD,CAAA,IAEV,KAAA;EAEU;EACD;EACf,eACE,WAAW,iBACT,oBAAC,mBAAD;GACW;GACT,QAAQ;GACR,MAAM,gBAAgB;GACtB,WAAW;GACX,eAAe,aAAa,KAAA,CAAS;GACrC,WAAW;GACX,aAAa;GACb,kBAAkB;GAClB,iBAAiB;EAClB,CAAA,IACC;CAEP,CAAA,GAED,oBAAC,kBAAD;EACE,MAAM,CAAC,EAAE,WAAW,oBAAoB;EACxC,OAAO,SAAS,QAAQ,IAAI,IAAI;EAChC,UAAU,YAAY;EACT;EACG;EACF;EACG;EACjB,eAAe,yBAAyB,KAAK;CAC9C,CAAA,CACD,EAAA,CAAA;AAEN"}
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_domains_traces_utils_span_utils = require("../utils/span-utils.cjs.js");
3
3
  const require_domains_traces_components_trace_status_value = require("./trace-status-value.cjs.js");
4
- const require_DataPanel = require("../../../DataPanel-BRRAvWYQ.cjs");
4
+ const require_DataPanel = require("../../../DataPanel-LfExjFpP.cjs");
5
5
  const require_icons_AgentIcon = require("../../../icons/AgentIcon.cjs.js");
6
6
  const require_icons_WorkflowIcon = require("../../../icons/WorkflowIcon.cjs.js");
7
7
  const require_cost = require("../../../cost-CDXUhpb_.cjs");
@@ -1,6 +1,6 @@
1
1
  import { getSpanDurationMs } from "../utils/span-utils.es.js";
2
2
  import { TraceStatusValue } from "./trace-status-value.es.js";
3
- import { t as DataPanel } from "../../../DataPanel-pVr5LVaK.js";
3
+ import { t as DataPanel } from "../../../DataPanel-Rv5Mb_pf.js";
4
4
  import { AgentIcon } from "../../../icons/AgentIcon.es.js";
5
5
  import { WorkflowIcon as WorkflowIcon$1 } from "../../../icons/WorkflowIcon.es.js";
6
6
  import { n as formatCost, t as formatCompactNumber } from "../../../cost-C2vDb3o7.js";
@@ -1,11 +1,11 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_domains_traces_components_thread_view_by_trace = require("./thread-view-by-trace.cjs.js");
3
- const require_DataPanel = require("../../../DataPanel-BRRAvWYQ.cjs");
3
+ const require_DataPanel = require("../../../DataPanel-LfExjFpP.cjs");
4
4
  let react = require("react");
5
5
  let react_jsx_runtime = require("react/jsx-runtime");
6
6
  // src/domains/traces/components/trace-thread-panel.tsx
7
7
  /** The full thread in its own drawer, stacked above the trace panel: every turn as traces, opened on the latest one. */
8
- function TraceThreadPanel({ open, threadId, withQueryTrace, withFeedback, onOpenScore, onClose, depth = 2, title, closeLabel = "Back to trace" }) {
8
+ function TraceThreadPanel({ open, threadId, withQueryTrace, withFeedback, feedbackOptions, onOpenScore, onClose, depth = 2, title, closeLabel = "Back to trace" }) {
9
9
  const [hasSelectedSpan, setHasSelectedSpan] = (0, react.useState)(false);
10
10
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_DataPanel.DataPanel, {
11
11
  open,
@@ -23,6 +23,7 @@ function TraceThreadPanel({ open, threadId, withQueryTrace, withFeedback, onOpen
23
23
  threadId,
24
24
  withQueryTrace,
25
25
  withFeedback,
26
+ feedbackOptions,
26
27
  onOpenScore,
27
28
  onSelectedSpanChange: (selected) => setHasSelectedSpan(selected !== null)
28
29
  }) : null
@@ -1 +1 @@
1
- {"version":3,"file":"trace-thread-panel.cjs.js","names":["useState","DataPanel","ThreadViewByTrace"],"sources":["../../../../src/domains/traces/components/trace-thread-panel.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { ThreadViewByTrace } from '@/domains/traces/components/thread-view-by-trace';\nimport { DataPanel } from '@/ds/components/DataPanel';\n\nexport interface TraceThreadPanelProps {\n /** Keep the panel mounted and toggle `open` so the drawer animates in and out. */\n open: boolean;\n threadId: string;\n withQueryTrace: boolean;\n withFeedback: boolean;\n onOpenScore: (traceId: string, scoreId: string) => void;\n /** Close the thread drawer, revealing the trace panel underneath. */\n onClose: () => void;\n /** Sibling-drawer elevation (see `DataPanel`); defaults to 2, above the trace panel. */\n depth?: 1 | 2 | 3;\n /** Accessible drawer name; defaults to the thread id. */\n title?: string;\n /** Close button label; defaults to \"Back to trace\" for the stacked drawer. */\n closeLabel?: string;\n}\n\n/** The full thread in its own drawer, stacked above the trace panel: every turn as traces, opened on the latest one. */\nexport function TraceThreadPanel({\n open,\n threadId,\n withQueryTrace,\n withFeedback,\n onOpenScore,\n onClose,\n depth = 2,\n title,\n closeLabel = 'Back to trace',\n}: TraceThreadPanelProps) {\n // Like the trace panel: the drawer only takes the full frame while a span detail is open.\n const [hasSelectedSpan, setHasSelectedSpan] = useState(false);\n return (\n <DataPanel\n open={open}\n onClose={onClose}\n title={title ?? `Thread ${threadId}`}\n depth={depth}\n size={hasSelectedSpan ? 'full' : 'wide'}\n >\n <DataPanel.Header>\n <DataPanel.CloseButton onClick={onClose} label={closeLabel} tooltip={closeLabel} />\n <DataPanel.HeaderContent>\n <DataPanel.Heading>\n Thread\n <DataPanel.CopyId id={threadId} />\n </DataPanel.Heading>\n </DataPanel.HeaderContent>\n </DataPanel.Header>\n <div className=\"min-h-0 flex-1\">\n {threadId ? (\n <ThreadViewByTrace\n threadId={threadId}\n withQueryTrace={withQueryTrace}\n withFeedback={withFeedback}\n onOpenScore={onOpenScore}\n onSelectedSpanChange={selected => setHasSelectedSpan(selected !== null)}\n />\n ) : null}\n </div>\n </DataPanel>\n );\n}\n"],"mappings":";;;;;;;AAuBA,SAAgB,iBAAiB,EAC/B,MACA,UACA,gBACA,cACA,aACA,SACA,QAAQ,GACR,OACA,aAAa,mBACW;CAExB,MAAM,CAAC,iBAAiB,uBAAA,GAAsBA,MAAAA,SAAAA,CAAS,KAAK;CAC5D,OACE,iBAAA,GAAA,kBAAA,KAAA,CAACC,kBAAAA,WAAD;EACQ;EACG;EACT,OAAO,SAAS,UAAU;EACnB;EACP,MAAM,kBAAkB,SAAS;EALnC,UAAA,CAOE,iBAAA,GAAA,kBAAA,KAAA,CAACA,kBAAAA,UAAU,QAAX,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACA,kBAAAA,UAAU,aAAX;GAAuB,SAAS;GAAS,OAAO;GAAY,SAAS;EAAa,CAAA,GAClF,iBAAA,GAAA,kBAAA,IAAA,CAACA,kBAAAA,UAAU,eAAX,EAAA,UACE,iBAAA,GAAA,kBAAA,KAAA,CAACA,kBAAAA,UAAU,SAAX,EAAA,UAAA,CAAmB,UAEjB,iBAAA,GAAA,kBAAA,IAAA,CAACA,kBAAAA,UAAU,QAAX,EAAkB,IAAI,SAAW,CAAA,CAChB,EAAA,CAAA,EACI,CAAA,CACT,EAAA,CAAA,GAClB,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;GAAK,WAAU;GACZ,UAAA,WACC,iBAAA,GAAA,kBAAA,IAAA,CAACC,uDAAAA,mBAAD;IACY;IACM;IACF;IACD;IACb,uBAAsB,aAAY,mBAAmB,aAAa,IAAI;GACvE,CAAA,IACC;EACD,CAAA,CACI;;AAEf"}
1
+ {"version":3,"file":"trace-thread-panel.cjs.js","names":["useState","DataPanel","ThreadViewByTrace"],"sources":["../../../../src/domains/traces/components/trace-thread-panel.tsx"],"sourcesContent":["import { useState } from 'react';\nimport type { FeedbackOptions } from './feedback-options';\n\nimport { ThreadViewByTrace } from '@/domains/traces/components/thread-view-by-trace';\nimport { DataPanel } from '@/ds/components/DataPanel';\n\nexport interface TraceThreadPanelProps {\n /** Keep the panel mounted and toggle `open` so the drawer animates in and out. */\n open: boolean;\n threadId: string;\n withQueryTrace: boolean;\n withFeedback: boolean;\n feedbackOptions?: FeedbackOptions;\n onOpenScore: (traceId: string, scoreId: string) => void;\n /** Close the thread drawer, revealing the trace panel underneath. */\n onClose: () => void;\n /** Sibling-drawer elevation (see `DataPanel`); defaults to 2, above the trace panel. */\n depth?: 1 | 2 | 3;\n /** Accessible drawer name; defaults to the thread id. */\n title?: string;\n /** Close button label; defaults to \"Back to trace\" for the stacked drawer. */\n closeLabel?: string;\n}\n\n/** The full thread in its own drawer, stacked above the trace panel: every turn as traces, opened on the latest one. */\nexport function TraceThreadPanel({\n open,\n threadId,\n withQueryTrace,\n withFeedback,\n feedbackOptions,\n onOpenScore,\n onClose,\n depth = 2,\n title,\n closeLabel = 'Back to trace',\n}: TraceThreadPanelProps) {\n // Like the trace panel: the drawer only takes the full frame while a span detail is open.\n const [hasSelectedSpan, setHasSelectedSpan] = useState(false);\n return (\n <DataPanel\n open={open}\n onClose={onClose}\n title={title ?? `Thread ${threadId}`}\n depth={depth}\n size={hasSelectedSpan ? 'full' : 'wide'}\n >\n <DataPanel.Header>\n <DataPanel.CloseButton onClick={onClose} label={closeLabel} tooltip={closeLabel} />\n <DataPanel.HeaderContent>\n <DataPanel.Heading>\n Thread\n <DataPanel.CopyId id={threadId} />\n </DataPanel.Heading>\n </DataPanel.HeaderContent>\n </DataPanel.Header>\n <div className=\"min-h-0 flex-1\">\n {threadId ? (\n <ThreadViewByTrace\n threadId={threadId}\n withQueryTrace={withQueryTrace}\n withFeedback={withFeedback}\n feedbackOptions={feedbackOptions}\n onOpenScore={onOpenScore}\n onSelectedSpanChange={selected => setHasSelectedSpan(selected !== null)}\n />\n ) : null}\n </div>\n </DataPanel>\n );\n}\n"],"mappings":";;;;;;;AAyBA,SAAgB,iBAAiB,EAC/B,MACA,UACA,gBACA,cACA,iBACA,aACA,SACA,QAAQ,GACR,OACA,aAAa,mBACW;CAExB,MAAM,CAAC,iBAAiB,uBAAA,GAAsBA,MAAAA,SAAAA,CAAS,KAAK;CAC5D,OACE,iBAAA,GAAA,kBAAA,KAAA,CAACC,kBAAAA,WAAD;EACQ;EACG;EACT,OAAO,SAAS,UAAU;EACnB;EACP,MAAM,kBAAkB,SAAS;EALnC,UAAA,CAOE,iBAAA,GAAA,kBAAA,KAAA,CAACA,kBAAAA,UAAU,QAAX,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACA,kBAAAA,UAAU,aAAX;GAAuB,SAAS;GAAS,OAAO;GAAY,SAAS;EAAa,CAAA,GAClF,iBAAA,GAAA,kBAAA,IAAA,CAACA,kBAAAA,UAAU,eAAX,EAAA,UACE,iBAAA,GAAA,kBAAA,KAAA,CAACA,kBAAAA,UAAU,SAAX,EAAA,UAAA,CAAmB,UAEjB,iBAAA,GAAA,kBAAA,IAAA,CAACA,kBAAAA,UAAU,QAAX,EAAkB,IAAI,SAAW,CAAA,CAChB,EAAA,CAAA,EACI,CAAA,CACT,EAAA,CAAA,GAClB,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;GAAK,WAAU;GACZ,UAAA,WACC,iBAAA,GAAA,kBAAA,IAAA,CAACC,uDAAAA,mBAAD;IACY;IACM;IACF;IACG;IACJ;IACb,uBAAsB,aAAY,mBAAmB,aAAa,IAAI;GACvE,CAAA,IACC;EACD,CAAA,CACI;;AAEf"}
@@ -1,10 +1,10 @@
1
1
  import { ThreadViewByTrace } from "./thread-view-by-trace.es.js";
2
- import { t as DataPanel } from "../../../DataPanel-pVr5LVaK.js";
2
+ import { t as DataPanel } from "../../../DataPanel-Rv5Mb_pf.js";
3
3
  import { useState } from "react";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
  // src/domains/traces/components/trace-thread-panel.tsx
6
6
  /** The full thread in its own drawer, stacked above the trace panel: every turn as traces, opened on the latest one. */
7
- function TraceThreadPanel({ open, threadId, withQueryTrace, withFeedback, onOpenScore, onClose, depth = 2, title, closeLabel = "Back to trace" }) {
7
+ function TraceThreadPanel({ open, threadId, withQueryTrace, withFeedback, feedbackOptions, onOpenScore, onClose, depth = 2, title, closeLabel = "Back to trace" }) {
8
8
  const [hasSelectedSpan, setHasSelectedSpan] = useState(false);
9
9
  return /* @__PURE__ */ jsxs(DataPanel, {
10
10
  open,
@@ -22,6 +22,7 @@ function TraceThreadPanel({ open, threadId, withQueryTrace, withFeedback, onOpen
22
22
  threadId,
23
23
  withQueryTrace,
24
24
  withFeedback,
25
+ feedbackOptions,
25
26
  onOpenScore,
26
27
  onSelectedSpanChange: (selected) => setHasSelectedSpan(selected !== null)
27
28
  }) : null
@@ -1 +1 @@
1
- {"version":3,"file":"trace-thread-panel.es.js","names":[],"sources":["../../../../src/domains/traces/components/trace-thread-panel.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { ThreadViewByTrace } from '@/domains/traces/components/thread-view-by-trace';\nimport { DataPanel } from '@/ds/components/DataPanel';\n\nexport interface TraceThreadPanelProps {\n /** Keep the panel mounted and toggle `open` so the drawer animates in and out. */\n open: boolean;\n threadId: string;\n withQueryTrace: boolean;\n withFeedback: boolean;\n onOpenScore: (traceId: string, scoreId: string) => void;\n /** Close the thread drawer, revealing the trace panel underneath. */\n onClose: () => void;\n /** Sibling-drawer elevation (see `DataPanel`); defaults to 2, above the trace panel. */\n depth?: 1 | 2 | 3;\n /** Accessible drawer name; defaults to the thread id. */\n title?: string;\n /** Close button label; defaults to \"Back to trace\" for the stacked drawer. */\n closeLabel?: string;\n}\n\n/** The full thread in its own drawer, stacked above the trace panel: every turn as traces, opened on the latest one. */\nexport function TraceThreadPanel({\n open,\n threadId,\n withQueryTrace,\n withFeedback,\n onOpenScore,\n onClose,\n depth = 2,\n title,\n closeLabel = 'Back to trace',\n}: TraceThreadPanelProps) {\n // Like the trace panel: the drawer only takes the full frame while a span detail is open.\n const [hasSelectedSpan, setHasSelectedSpan] = useState(false);\n return (\n <DataPanel\n open={open}\n onClose={onClose}\n title={title ?? `Thread ${threadId}`}\n depth={depth}\n size={hasSelectedSpan ? 'full' : 'wide'}\n >\n <DataPanel.Header>\n <DataPanel.CloseButton onClick={onClose} label={closeLabel} tooltip={closeLabel} />\n <DataPanel.HeaderContent>\n <DataPanel.Heading>\n Thread\n <DataPanel.CopyId id={threadId} />\n </DataPanel.Heading>\n </DataPanel.HeaderContent>\n </DataPanel.Header>\n <div className=\"min-h-0 flex-1\">\n {threadId ? (\n <ThreadViewByTrace\n threadId={threadId}\n withQueryTrace={withQueryTrace}\n withFeedback={withFeedback}\n onOpenScore={onOpenScore}\n onSelectedSpanChange={selected => setHasSelectedSpan(selected !== null)}\n />\n ) : null}\n </div>\n </DataPanel>\n );\n}\n"],"mappings":";;;;;;AAuBA,SAAgB,iBAAiB,EAC/B,MACA,UACA,gBACA,cACA,aACA,SACA,QAAQ,GACR,OACA,aAAa,mBACW;CAExB,MAAM,CAAC,iBAAiB,sBAAsB,SAAS,KAAK;CAC5D,OACE,qBAAC,WAAD;EACQ;EACG;EACT,OAAO,SAAS,UAAU;EACnB;EACP,MAAM,kBAAkB,SAAS;EALnC,UAAA,CAOE,qBAAC,UAAU,QAAX,EAAA,UAAA,CACE,oBAAC,UAAU,aAAX;GAAuB,SAAS;GAAS,OAAO;GAAY,SAAS;EAAa,CAAA,GAClF,oBAAC,UAAU,eAAX,EAAA,UACE,qBAAC,UAAU,SAAX,EAAA,UAAA,CAAmB,UAEjB,oBAAC,UAAU,QAAX,EAAkB,IAAI,SAAW,CAAA,CAChB,EAAA,CAAA,EACI,CAAA,CACT,EAAA,CAAA,GAClB,oBAAC,OAAD;GAAK,WAAU;GACZ,UAAA,WACC,oBAAC,mBAAD;IACY;IACM;IACF;IACD;IACb,uBAAsB,aAAY,mBAAmB,aAAa,IAAI;GACvE,CAAA,IACC;EACD,CAAA,CACI;;AAEf"}
1
+ {"version":3,"file":"trace-thread-panel.es.js","names":[],"sources":["../../../../src/domains/traces/components/trace-thread-panel.tsx"],"sourcesContent":["import { useState } from 'react';\nimport type { FeedbackOptions } from './feedback-options';\n\nimport { ThreadViewByTrace } from '@/domains/traces/components/thread-view-by-trace';\nimport { DataPanel } from '@/ds/components/DataPanel';\n\nexport interface TraceThreadPanelProps {\n /** Keep the panel mounted and toggle `open` so the drawer animates in and out. */\n open: boolean;\n threadId: string;\n withQueryTrace: boolean;\n withFeedback: boolean;\n feedbackOptions?: FeedbackOptions;\n onOpenScore: (traceId: string, scoreId: string) => void;\n /** Close the thread drawer, revealing the trace panel underneath. */\n onClose: () => void;\n /** Sibling-drawer elevation (see `DataPanel`); defaults to 2, above the trace panel. */\n depth?: 1 | 2 | 3;\n /** Accessible drawer name; defaults to the thread id. */\n title?: string;\n /** Close button label; defaults to \"Back to trace\" for the stacked drawer. */\n closeLabel?: string;\n}\n\n/** The full thread in its own drawer, stacked above the trace panel: every turn as traces, opened on the latest one. */\nexport function TraceThreadPanel({\n open,\n threadId,\n withQueryTrace,\n withFeedback,\n feedbackOptions,\n onOpenScore,\n onClose,\n depth = 2,\n title,\n closeLabel = 'Back to trace',\n}: TraceThreadPanelProps) {\n // Like the trace panel: the drawer only takes the full frame while a span detail is open.\n const [hasSelectedSpan, setHasSelectedSpan] = useState(false);\n return (\n <DataPanel\n open={open}\n onClose={onClose}\n title={title ?? `Thread ${threadId}`}\n depth={depth}\n size={hasSelectedSpan ? 'full' : 'wide'}\n >\n <DataPanel.Header>\n <DataPanel.CloseButton onClick={onClose} label={closeLabel} tooltip={closeLabel} />\n <DataPanel.HeaderContent>\n <DataPanel.Heading>\n Thread\n <DataPanel.CopyId id={threadId} />\n </DataPanel.Heading>\n </DataPanel.HeaderContent>\n </DataPanel.Header>\n <div className=\"min-h-0 flex-1\">\n {threadId ? (\n <ThreadViewByTrace\n threadId={threadId}\n withQueryTrace={withQueryTrace}\n withFeedback={withFeedback}\n feedbackOptions={feedbackOptions}\n onOpenScore={onOpenScore}\n onSelectedSpanChange={selected => setHasSelectedSpan(selected !== null)}\n />\n ) : null}\n </div>\n </DataPanel>\n );\n}\n"],"mappings":";;;;;;AAyBA,SAAgB,iBAAiB,EAC/B,MACA,UACA,gBACA,cACA,iBACA,aACA,SACA,QAAQ,GACR,OACA,aAAa,mBACW;CAExB,MAAM,CAAC,iBAAiB,sBAAsB,SAAS,KAAK;CAC5D,OACE,qBAAC,WAAD;EACQ;EACG;EACT,OAAO,SAAS,UAAU;EACnB;EACP,MAAM,kBAAkB,SAAS;EALnC,UAAA,CAOE,qBAAC,UAAU,QAAX,EAAA,UAAA,CACE,oBAAC,UAAU,aAAX;GAAuB,SAAS;GAAS,OAAO;GAAY,SAAS;EAAa,CAAA,GAClF,oBAAC,UAAU,eAAX,EAAA,UACE,qBAAC,UAAU,SAAX,EAAA,UAAA,CAAmB,UAEjB,oBAAC,UAAU,QAAX,EAAkB,IAAI,SAAW,CAAA,CAChB,EAAA,CAAA,EACI,CAAA,CACT,EAAA,CAAA,GAClB,oBAAC,OAAD;GAAK,WAAU;GACZ,UAAA,WACC,oBAAC,mBAAD;IACY;IACM;IACF;IACG;IACJ;IACb,uBAAsB,aAAY,mBAAmB,aAAa,IAAI;GACvE,CAAA,IACC;EACD,CAAA,CACI;;AAEf"}
@@ -1 +1 @@
1
- {"version":3,"file":"traces-explorer-context.cjs.js","names":["createContext","useContext","isTraceUsageColumn","hasTraceUsageColumn"],"sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-context.ts"],"sourcesContent":["import type { EntityType } from '@mastra/core/observability';\nimport type { TraceQueryDiscoveryTimeRange } from '@mastra/react/hooks/traces';\nimport { createContext, useContext } from 'react';\nimport type { useTraceColumnPreferences } from '../../hooks/use-trace-column-preferences';\nimport type { useTracesListSource } from '../../hooks/use-traces-list-source';\nimport { hasTraceUsageColumn, isTraceUsageColumn } from '../../trace-list-columns';\nimport type { TraceColumnPreferences } from '../../trace-list-columns';\nimport type { SpanTab, TraceDatePreset } from '../../types';\nimport type { TraceSpanView } from '../trace-data-panel-view';\nimport type { TracesFilters, TracesSelection, TracesSort } from './traces-explorer-actions';\n\nexport type TracesExplorerScope = { entityId: string; entityType?: EntityType };\n\nexport type TracesMetricsSupport = { supported: boolean; isLoading: boolean };\n\n/**\n * Host switches (e.g. feature flags), combined with what the server supports.\n * `traceQuery` and `feedback` default to on and can only turn their feature off.\n * `spanQuery` and `threadQuery` default to off: each view is offered only when its flag is `true`\n * and the server supports it.\n */\nexport type TracesExplorerFeatures = {\n traceQuery?: boolean;\n feedback?: boolean;\n spanQuery?: boolean;\n threadQuery?: boolean;\n};\n\nexport type TracesConfigContextValue = {\n listId: string;\n scopedFieldIds: ReadonlySet<string>;\n hiddenFieldIds: readonly string[];\n withQueryTrace: boolean;\n withFeedback: boolean;\n /** The span query API is on, so the host can offer a spans view next to the traces list. */\n withSpanQuery: boolean;\n /** The thread rows API is on, so the host can offer a threads view next to the traces list. */\n withThreadQuery: boolean;\n withRootDuration: boolean;\n /** The server filters trace queries on the root span's `outcome` and `stopReason`. */\n withOutcomeFields: boolean;\n /** Trace rows carry the root span's time to first chunk, so the TTFC column can be shown. */\n withTimeToFirstChunk: boolean;\n /** Trace queries can be ordered by the root span's time to first chunk. */\n withTimeToFirstChunkSort: boolean;\n /** Trace rows carry the root span's time to first token, so the TTFT column can be shown. */\n withTimeToFirstToken: boolean;\n /** Trace queries can be ordered by the root span's time to first token. */\n withTimeToFirstTokenSort: boolean;\n /** The server supports delta polling, so auto-refresh merges new traces instead of reloading pages. */\n withDeltaPolling: boolean;\n /** Whether field discovery should run: the server supports it and the trace query API is on. */\n withDiscovery: boolean;\n isCapabilitiesLoading: boolean;\n metricsSupport: TracesMetricsSupport;\n /** Shared by every discovery consumer so they hit the same cached query. */\n discoveryTimeRange: TraceQueryDiscoveryTimeRange;\n};\n\nexport type TracesFiltersActions = {\n /** Replaces the filter tokens and groups. The scope tokens are always kept. */\n setFilterTokens: (tokens: TracesFilters['tokens'], groups: TracesFilters['groups']) => void;\n setDatePreset: (preset: TraceDatePreset) => void;\n setDate: (value: Date | undefined, end: 'from' | 'to') => void;\n setDateRange: (from: Date | undefined, to: Date | undefined) => void;\n /** Narrows the range to a histogram selection, remembering the range to return to on reset. */\n zoomDateRange: (from: Date, to: Date) => void;\n /** Undoes the last histogram zoom, or switches to `defaultPreset` when there is none to undo. */\n resetDateRange: (defaultPreset: TraceDatePreset) => void;\n};\n\nexport type TracesFiltersContextValue = TracesFiltersActions & {\n /** The host's filters with the entries this server can't query dropped. */\n filters: TracesFilters;\n dateFrom?: Date;\n dateTo?: Date;\n filtersApplied: boolean;\n contentFiltersApplied: boolean;\n /** The host's filters ask for `running` traces, which `filters` (and so the query) can't express. */\n runningSelected: boolean;\n};\n\nexport type TracesSelectionActions = {\n selectTrace: (traceId: string) => void;\n closeTrace: () => void;\n selectSpan: (spanId: string | null) => void;\n setSpanTab: (tab: SpanTab) => void;\n setSpanView: (view: TraceSpanView) => void;\n selectScore: (scoreId: string | null) => void;\n highlightSpans: (spanIds: string[]) => void;\n};\n\nexport type TracesSelectionContextValue = TracesSelectionActions & {\n selection: TracesSelection;\n selectedTraceId?: string;\n};\n\ntype ListSource = ReturnType<typeof useTracesListSource>;\n\nexport type TracesListContextValue = Pick<\n ListSource,\n | 'rows'\n | 'isLoading'\n | 'isFetchingNextPage'\n | 'hasNextPage'\n | 'setEndOfListElement'\n | 'error'\n | 'refetch'\n | 'autoRefetch'\n> & {\n sort: TracesSort;\n onSortChange: (next: TracesSort) => void;\n};\n\nexport type TracesColumnsContextValue = ReturnType<typeof useTraceColumnPreferences>;\n\nexport const TracesConfigContext = createContext<TracesConfigContextValue | null>(null);\nexport const TracesFiltersContext = createContext<TracesFiltersContextValue | null>(null);\nexport const TracesSelectionContext = createContext<TracesSelectionContextValue | null>(null);\nexport const TracesListContext = createContext<TracesListContextValue | null>(null);\n/** Kept out of `TracesListContext` so a poll tick doesn't re-render every list consumer. */\nexport const TracesListFetchingContext = createContext<boolean | null>(null);\nexport const TracesColumnsContext = createContext<TracesColumnsContextValue | null>(null);\n\nconst useRequired = <T>(context: React.Context<T | null>, name: string): T => {\n const value = useContext(context);\n if (!value) throw new Error(`${name} must be used inside <TracesExplorer>`);\n return value;\n};\n\nexport const useTracesConfig = () => useRequired(TracesConfigContext, 'useTracesConfig');\nexport const useTracesFilters = () => useRequired(TracesFiltersContext, 'useTracesFilters');\nexport const useTracesSelection = () => useRequired(TracesSelectionContext, 'useTracesSelection');\nexport const useTracesList = () => useRequired(TracesListContext, 'useTracesList');\n/** Whether the list query is fetching, including background refetches and retries. */\nexport const useTracesListFetching = () => {\n const value = useContext(TracesListFetchingContext);\n if (value === null) throw new Error('useTracesListFetching must be used inside <TracesExplorer>');\n return value;\n};\nexport const useTracesColumns = () => useRequired(TracesColumnsContext, 'useTracesColumns');\n\nexport const CHECKING_USAGE_REASON = 'Checking whether this storage supports usage data.';\nexport const UNSUPPORTED_USAGE_REASON = 'This observability store does not support token and cost metrics.';\n\nexport type TraceUsageColumns = {\n /** Column preferences without the columns the store can't serve (usage, time to first chunk/token). */\n displayedPreferences: TraceColumnPreferences;\n /** Whether usage should be fetched: metrics are supported and a usage column is visible. */\n usageEnabled: boolean;\n usageDisabledReason?: string;\n};\n\nexport const useTraceUsageColumns = (): TraceUsageColumns => {\n const { preferences } = useTracesColumns();\n const { metricsSupport, withTimeToFirstChunk, withTimeToFirstToken, isCapabilitiesLoading } = useTracesConfig();\n const unavailable = !metricsSupport.isLoading && !metricsSupport.supported;\n const timeToFirstChunkUnavailable = !isCapabilitiesLoading && !withTimeToFirstChunk;\n const timeToFirstTokenUnavailable = !isCapabilitiesLoading && !withTimeToFirstToken;\n const displayedPreferences =\n unavailable || timeToFirstChunkUnavailable || timeToFirstTokenUnavailable\n ? {\n ...preferences,\n visibleColumns: preferences.visibleColumns.filter(\n column =>\n !(unavailable && isTraceUsageColumn(column)) &&\n !(timeToFirstChunkUnavailable && column === 'timeToFirstChunk') &&\n !(timeToFirstTokenUnavailable && column === 'timeToFirstToken'),\n ),\n }\n : preferences;\n return {\n displayedPreferences,\n usageEnabled: !unavailable && !metricsSupport.isLoading && hasTraceUsageColumn(displayedPreferences),\n usageDisabledReason: metricsSupport.isLoading\n ? CHECKING_USAGE_REASON\n : !metricsSupport.supported\n ? UNSUPPORTED_USAGE_REASON\n : undefined,\n };\n};\n"],"mappings":";;;;AAoHA,IAAa,uBAAA,GAAsBA,MAAAA,cAAAA,CAA+C,IAAI;AACtF,IAAa,wBAAA,GAAuBA,MAAAA,cAAAA,CAAgD,IAAI;AACxF,IAAa,0BAAA,GAAyBA,MAAAA,cAAAA,CAAkD,IAAI;AAC5F,IAAa,qBAAA,GAAoBA,MAAAA,cAAAA,CAA6C,IAAI;;AAElF,IAAa,6BAAA,GAA4BA,MAAAA,cAAAA,CAA8B,IAAI;AAC3E,IAAa,wBAAA,GAAuBA,MAAAA,cAAAA,CAAgD,IAAI;AAExF,IAAM,eAAkB,SAAkC,SAAoB;CAC5E,MAAM,SAAA,GAAQC,MAAAA,WAAAA,CAAW,OAAO;CAChC,IAAI,CAAC,OAAO,MAAM,IAAI,MAAM,GAAG,KAAK,sCAAsC;CAC1E,OAAO;AACT;AAEA,IAAa,wBAAwB,YAAY,qBAAqB,iBAAiB;AACvF,IAAa,yBAAyB,YAAY,sBAAsB,kBAAkB;AAC1F,IAAa,2BAA2B,YAAY,wBAAwB,oBAAoB;AAChG,IAAa,sBAAsB,YAAY,mBAAmB,eAAe;;AAEjF,IAAa,8BAA8B;CACzC,MAAM,SAAA,GAAQA,MAAAA,WAAAA,CAAW,yBAAyB;CAClD,IAAI,UAAU,MAAM,MAAM,IAAI,MAAM,4DAA4D;CAChG,OAAO;AACT;AACA,IAAa,yBAAyB,YAAY,sBAAsB,kBAAkB;AAE1F,IAAa,wBAAwB;AACrC,IAAa,2BAA2B;AAUxC,IAAa,6BAAgD;CAC3D,MAAM,EAAE,gBAAgB,iBAAiB;CACzC,MAAM,EAAE,gBAAgB,sBAAsB,sBAAsB,0BAA0B,gBAAgB;CAC9G,MAAM,cAAc,CAAC,eAAe,aAAa,CAAC,eAAe;CACjE,MAAM,8BAA8B,CAAC,yBAAyB,CAAC;CAC/D,MAAM,8BAA8B,CAAC,yBAAyB,CAAC;CAC/D,MAAM,uBACJ,eAAe,+BAA+B,8BAC1C;EACE,GAAG;EACH,gBAAgB,YAAY,eAAe,QACzC,WACE,EAAE,eAAeC,0CAAAA,mBAAmB,MAAM,MAC1C,EAAE,+BAA+B,WAAW,uBAC5C,EAAE,+BAA+B,WAAW,mBAChD;CACF,IACA;CACN,OAAO;EACL;EACA,cAAc,CAAC,eAAe,CAAC,eAAe,aAAaC,0CAAAA,oBAAoB,oBAAoB;EACnG,qBAAqB,eAAe,YAChC,wBACA,CAAC,eAAe,YACd,2BACA,KAAA;CACR;AACF"}
1
+ {"version":3,"file":"traces-explorer-context.cjs.js","names":["createContext","useContext","isTraceUsageColumn","hasTraceUsageColumn"],"sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-context.ts"],"sourcesContent":["import type { EntityType } from '@mastra/core/observability';\nimport type { TraceQueryDiscoveryTimeRange } from '@mastra/react/hooks/traces';\nimport { createContext, useContext } from 'react';\nimport type { useTraceColumnPreferences } from '../../hooks/use-trace-column-preferences';\nimport type { useTracesListSource } from '../../hooks/use-traces-list-source';\nimport { hasTraceUsageColumn, isTraceUsageColumn } from '../../trace-list-columns';\nimport type { TraceColumnPreferences } from '../../trace-list-columns';\nimport type { SpanTab, TraceDatePreset } from '../../types';\nimport type { FeedbackOptions } from '../feedback-options';\nimport type { TraceSpanView } from '../trace-data-panel-view';\nimport type { TracesFilters, TracesSelection, TracesSort } from './traces-explorer-actions';\n\nexport type TracesExplorerScope = { entityId: string; entityType?: EntityType };\n\nexport type TracesMetricsSupport = { supported: boolean; isLoading: boolean };\n\n/**\n * Host switches (e.g. feature flags), combined with what the server supports.\n * `traceQuery` and `feedback` default to on and can only turn their feature off.\n * `spanQuery` and `threadQuery` default to off: each view is offered only when its flag is `true`\n * and the server supports it.\n */\nexport type TracesExplorerFeatures = {\n traceQuery?: boolean;\n feedback?: boolean;\n spanQuery?: boolean;\n threadQuery?: boolean;\n};\n\nexport type TracesConfigContextValue = {\n listId: string;\n scopedFieldIds: ReadonlySet<string>;\n hiddenFieldIds: readonly string[];\n withQueryTrace: boolean;\n withFeedback: boolean;\n feedbackOptions?: FeedbackOptions;\n /** The span query API is on, so the host can offer a spans view next to the traces list. */\n withSpanQuery: boolean;\n /** The thread rows API is on, so the host can offer a threads view next to the traces list. */\n withThreadQuery: boolean;\n withRootDuration: boolean;\n /** The server filters trace queries on the root span's `outcome` and `stopReason`. */\n withOutcomeFields: boolean;\n /** Trace rows carry the root span's time to first chunk, so the TTFC column can be shown. */\n withTimeToFirstChunk: boolean;\n /** Trace queries can be ordered by the root span's time to first chunk. */\n withTimeToFirstChunkSort: boolean;\n /** Trace rows carry the root span's time to first token, so the TTFT column can be shown. */\n withTimeToFirstToken: boolean;\n /** Trace queries can be ordered by the root span's time to first token. */\n withTimeToFirstTokenSort: boolean;\n /** The server supports delta polling, so auto-refresh merges new traces instead of reloading pages. */\n withDeltaPolling: boolean;\n /** Whether field discovery should run: the server supports it and the trace query API is on. */\n withDiscovery: boolean;\n isCapabilitiesLoading: boolean;\n metricsSupport: TracesMetricsSupport;\n /** Shared by every discovery consumer so they hit the same cached query. */\n discoveryTimeRange: TraceQueryDiscoveryTimeRange;\n};\n\nexport type TracesFiltersActions = {\n /** Replaces the filter tokens and groups. The scope tokens are always kept. */\n setFilterTokens: (tokens: TracesFilters['tokens'], groups: TracesFilters['groups']) => void;\n setDatePreset: (preset: TraceDatePreset) => void;\n setDate: (value: Date | undefined, end: 'from' | 'to') => void;\n setDateRange: (from: Date | undefined, to: Date | undefined) => void;\n /** Narrows the range to a histogram selection, remembering the range to return to on reset. */\n zoomDateRange: (from: Date, to: Date) => void;\n /** Undoes the last histogram zoom, or switches to `defaultPreset` when there is none to undo. */\n resetDateRange: (defaultPreset: TraceDatePreset) => void;\n};\n\nexport type TracesFiltersContextValue = TracesFiltersActions & {\n /** The host's filters with the entries this server can't query dropped. */\n filters: TracesFilters;\n dateFrom?: Date;\n dateTo?: Date;\n filtersApplied: boolean;\n contentFiltersApplied: boolean;\n /** The host's filters ask for `running` traces, which `filters` (and so the query) can't express. */\n runningSelected: boolean;\n};\n\nexport type TracesSelectionActions = {\n selectTrace: (traceId: string) => void;\n closeTrace: () => void;\n selectSpan: (spanId: string | null) => void;\n setSpanTab: (tab: SpanTab) => void;\n setSpanView: (view: TraceSpanView) => void;\n selectScore: (scoreId: string | null) => void;\n highlightSpans: (spanIds: string[]) => void;\n};\n\nexport type TracesSelectionContextValue = TracesSelectionActions & {\n selection: TracesSelection;\n selectedTraceId?: string;\n};\n\ntype ListSource = ReturnType<typeof useTracesListSource>;\n\nexport type TracesListContextValue = Pick<\n ListSource,\n | 'rows'\n | 'isLoading'\n | 'isFetchingNextPage'\n | 'hasNextPage'\n | 'setEndOfListElement'\n | 'error'\n | 'refetch'\n | 'autoRefetch'\n> & {\n sort: TracesSort;\n onSortChange: (next: TracesSort) => void;\n};\n\nexport type TracesColumnsContextValue = ReturnType<typeof useTraceColumnPreferences>;\n\nexport const TracesConfigContext = createContext<TracesConfigContextValue | null>(null);\nexport const TracesFiltersContext = createContext<TracesFiltersContextValue | null>(null);\nexport const TracesSelectionContext = createContext<TracesSelectionContextValue | null>(null);\nexport const TracesListContext = createContext<TracesListContextValue | null>(null);\n/** Kept out of `TracesListContext` so a poll tick doesn't re-render every list consumer. */\nexport const TracesListFetchingContext = createContext<boolean | null>(null);\nexport const TracesColumnsContext = createContext<TracesColumnsContextValue | null>(null);\n\nconst useRequired = <T>(context: React.Context<T | null>, name: string): T => {\n const value = useContext(context);\n if (!value) throw new Error(`${name} must be used inside <TracesExplorer>`);\n return value;\n};\n\nexport const useTracesConfig = () => useRequired(TracesConfigContext, 'useTracesConfig');\nexport const useTracesFilters = () => useRequired(TracesFiltersContext, 'useTracesFilters');\nexport const useTracesSelection = () => useRequired(TracesSelectionContext, 'useTracesSelection');\nexport const useTracesList = () => useRequired(TracesListContext, 'useTracesList');\n/** Whether the list query is fetching, including background refetches and retries. */\nexport const useTracesListFetching = () => {\n const value = useContext(TracesListFetchingContext);\n if (value === null) throw new Error('useTracesListFetching must be used inside <TracesExplorer>');\n return value;\n};\nexport const useTracesColumns = () => useRequired(TracesColumnsContext, 'useTracesColumns');\n\nexport const CHECKING_USAGE_REASON = 'Checking whether this storage supports usage data.';\nexport const UNSUPPORTED_USAGE_REASON = 'This observability store does not support token and cost metrics.';\n\nexport type TraceUsageColumns = {\n /** Column preferences without the columns the store can't serve (usage, time to first chunk/token). */\n displayedPreferences: TraceColumnPreferences;\n /** Whether usage should be fetched: metrics are supported and a usage column is visible. */\n usageEnabled: boolean;\n usageDisabledReason?: string;\n};\n\nexport const useTraceUsageColumns = (): TraceUsageColumns => {\n const { preferences } = useTracesColumns();\n const { metricsSupport, withTimeToFirstChunk, withTimeToFirstToken, isCapabilitiesLoading } = useTracesConfig();\n const unavailable = !metricsSupport.isLoading && !metricsSupport.supported;\n const timeToFirstChunkUnavailable = !isCapabilitiesLoading && !withTimeToFirstChunk;\n const timeToFirstTokenUnavailable = !isCapabilitiesLoading && !withTimeToFirstToken;\n const displayedPreferences =\n unavailable || timeToFirstChunkUnavailable || timeToFirstTokenUnavailable\n ? {\n ...preferences,\n visibleColumns: preferences.visibleColumns.filter(\n column =>\n !(unavailable && isTraceUsageColumn(column)) &&\n !(timeToFirstChunkUnavailable && column === 'timeToFirstChunk') &&\n !(timeToFirstTokenUnavailable && column === 'timeToFirstToken'),\n ),\n }\n : preferences;\n return {\n displayedPreferences,\n usageEnabled: !unavailable && !metricsSupport.isLoading && hasTraceUsageColumn(displayedPreferences),\n usageDisabledReason: metricsSupport.isLoading\n ? CHECKING_USAGE_REASON\n : !metricsSupport.supported\n ? UNSUPPORTED_USAGE_REASON\n : undefined,\n };\n};\n"],"mappings":";;;;AAsHA,IAAa,uBAAA,GAAsBA,MAAAA,cAAAA,CAA+C,IAAI;AACtF,IAAa,wBAAA,GAAuBA,MAAAA,cAAAA,CAAgD,IAAI;AACxF,IAAa,0BAAA,GAAyBA,MAAAA,cAAAA,CAAkD,IAAI;AAC5F,IAAa,qBAAA,GAAoBA,MAAAA,cAAAA,CAA6C,IAAI;;AAElF,IAAa,6BAAA,GAA4BA,MAAAA,cAAAA,CAA8B,IAAI;AAC3E,IAAa,wBAAA,GAAuBA,MAAAA,cAAAA,CAAgD,IAAI;AAExF,IAAM,eAAkB,SAAkC,SAAoB;CAC5E,MAAM,SAAA,GAAQC,MAAAA,WAAAA,CAAW,OAAO;CAChC,IAAI,CAAC,OAAO,MAAM,IAAI,MAAM,GAAG,KAAK,sCAAsC;CAC1E,OAAO;AACT;AAEA,IAAa,wBAAwB,YAAY,qBAAqB,iBAAiB;AACvF,IAAa,yBAAyB,YAAY,sBAAsB,kBAAkB;AAC1F,IAAa,2BAA2B,YAAY,wBAAwB,oBAAoB;AAChG,IAAa,sBAAsB,YAAY,mBAAmB,eAAe;;AAEjF,IAAa,8BAA8B;CACzC,MAAM,SAAA,GAAQA,MAAAA,WAAAA,CAAW,yBAAyB;CAClD,IAAI,UAAU,MAAM,MAAM,IAAI,MAAM,4DAA4D;CAChG,OAAO;AACT;AACA,IAAa,yBAAyB,YAAY,sBAAsB,kBAAkB;AAE1F,IAAa,wBAAwB;AACrC,IAAa,2BAA2B;AAUxC,IAAa,6BAAgD;CAC3D,MAAM,EAAE,gBAAgB,iBAAiB;CACzC,MAAM,EAAE,gBAAgB,sBAAsB,sBAAsB,0BAA0B,gBAAgB;CAC9G,MAAM,cAAc,CAAC,eAAe,aAAa,CAAC,eAAe;CACjE,MAAM,8BAA8B,CAAC,yBAAyB,CAAC;CAC/D,MAAM,8BAA8B,CAAC,yBAAyB,CAAC;CAC/D,MAAM,uBACJ,eAAe,+BAA+B,8BAC1C;EACE,GAAG;EACH,gBAAgB,YAAY,eAAe,QACzC,WACE,EAAE,eAAeC,0CAAAA,mBAAmB,MAAM,MAC1C,EAAE,+BAA+B,WAAW,uBAC5C,EAAE,+BAA+B,WAAW,mBAChD;CACF,IACA;CACN,OAAO;EACL;EACA,cAAc,CAAC,eAAe,CAAC,eAAe,aAAaC,0CAAAA,oBAAoB,oBAAoB;EACnG,qBAAqB,eAAe,YAChC,wBACA,CAAC,eAAe,YACd,2BACA,KAAA;CACR;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"traces-explorer-context.es.js","names":[],"sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-context.ts"],"sourcesContent":["import type { EntityType } from '@mastra/core/observability';\nimport type { TraceQueryDiscoveryTimeRange } from '@mastra/react/hooks/traces';\nimport { createContext, useContext } from 'react';\nimport type { useTraceColumnPreferences } from '../../hooks/use-trace-column-preferences';\nimport type { useTracesListSource } from '../../hooks/use-traces-list-source';\nimport { hasTraceUsageColumn, isTraceUsageColumn } from '../../trace-list-columns';\nimport type { TraceColumnPreferences } from '../../trace-list-columns';\nimport type { SpanTab, TraceDatePreset } from '../../types';\nimport type { TraceSpanView } from '../trace-data-panel-view';\nimport type { TracesFilters, TracesSelection, TracesSort } from './traces-explorer-actions';\n\nexport type TracesExplorerScope = { entityId: string; entityType?: EntityType };\n\nexport type TracesMetricsSupport = { supported: boolean; isLoading: boolean };\n\n/**\n * Host switches (e.g. feature flags), combined with what the server supports.\n * `traceQuery` and `feedback` default to on and can only turn their feature off.\n * `spanQuery` and `threadQuery` default to off: each view is offered only when its flag is `true`\n * and the server supports it.\n */\nexport type TracesExplorerFeatures = {\n traceQuery?: boolean;\n feedback?: boolean;\n spanQuery?: boolean;\n threadQuery?: boolean;\n};\n\nexport type TracesConfigContextValue = {\n listId: string;\n scopedFieldIds: ReadonlySet<string>;\n hiddenFieldIds: readonly string[];\n withQueryTrace: boolean;\n withFeedback: boolean;\n /** The span query API is on, so the host can offer a spans view next to the traces list. */\n withSpanQuery: boolean;\n /** The thread rows API is on, so the host can offer a threads view next to the traces list. */\n withThreadQuery: boolean;\n withRootDuration: boolean;\n /** The server filters trace queries on the root span's `outcome` and `stopReason`. */\n withOutcomeFields: boolean;\n /** Trace rows carry the root span's time to first chunk, so the TTFC column can be shown. */\n withTimeToFirstChunk: boolean;\n /** Trace queries can be ordered by the root span's time to first chunk. */\n withTimeToFirstChunkSort: boolean;\n /** Trace rows carry the root span's time to first token, so the TTFT column can be shown. */\n withTimeToFirstToken: boolean;\n /** Trace queries can be ordered by the root span's time to first token. */\n withTimeToFirstTokenSort: boolean;\n /** The server supports delta polling, so auto-refresh merges new traces instead of reloading pages. */\n withDeltaPolling: boolean;\n /** Whether field discovery should run: the server supports it and the trace query API is on. */\n withDiscovery: boolean;\n isCapabilitiesLoading: boolean;\n metricsSupport: TracesMetricsSupport;\n /** Shared by every discovery consumer so they hit the same cached query. */\n discoveryTimeRange: TraceQueryDiscoveryTimeRange;\n};\n\nexport type TracesFiltersActions = {\n /** Replaces the filter tokens and groups. The scope tokens are always kept. */\n setFilterTokens: (tokens: TracesFilters['tokens'], groups: TracesFilters['groups']) => void;\n setDatePreset: (preset: TraceDatePreset) => void;\n setDate: (value: Date | undefined, end: 'from' | 'to') => void;\n setDateRange: (from: Date | undefined, to: Date | undefined) => void;\n /** Narrows the range to a histogram selection, remembering the range to return to on reset. */\n zoomDateRange: (from: Date, to: Date) => void;\n /** Undoes the last histogram zoom, or switches to `defaultPreset` when there is none to undo. */\n resetDateRange: (defaultPreset: TraceDatePreset) => void;\n};\n\nexport type TracesFiltersContextValue = TracesFiltersActions & {\n /** The host's filters with the entries this server can't query dropped. */\n filters: TracesFilters;\n dateFrom?: Date;\n dateTo?: Date;\n filtersApplied: boolean;\n contentFiltersApplied: boolean;\n /** The host's filters ask for `running` traces, which `filters` (and so the query) can't express. */\n runningSelected: boolean;\n};\n\nexport type TracesSelectionActions = {\n selectTrace: (traceId: string) => void;\n closeTrace: () => void;\n selectSpan: (spanId: string | null) => void;\n setSpanTab: (tab: SpanTab) => void;\n setSpanView: (view: TraceSpanView) => void;\n selectScore: (scoreId: string | null) => void;\n highlightSpans: (spanIds: string[]) => void;\n};\n\nexport type TracesSelectionContextValue = TracesSelectionActions & {\n selection: TracesSelection;\n selectedTraceId?: string;\n};\n\ntype ListSource = ReturnType<typeof useTracesListSource>;\n\nexport type TracesListContextValue = Pick<\n ListSource,\n | 'rows'\n | 'isLoading'\n | 'isFetchingNextPage'\n | 'hasNextPage'\n | 'setEndOfListElement'\n | 'error'\n | 'refetch'\n | 'autoRefetch'\n> & {\n sort: TracesSort;\n onSortChange: (next: TracesSort) => void;\n};\n\nexport type TracesColumnsContextValue = ReturnType<typeof useTraceColumnPreferences>;\n\nexport const TracesConfigContext = createContext<TracesConfigContextValue | null>(null);\nexport const TracesFiltersContext = createContext<TracesFiltersContextValue | null>(null);\nexport const TracesSelectionContext = createContext<TracesSelectionContextValue | null>(null);\nexport const TracesListContext = createContext<TracesListContextValue | null>(null);\n/** Kept out of `TracesListContext` so a poll tick doesn't re-render every list consumer. */\nexport const TracesListFetchingContext = createContext<boolean | null>(null);\nexport const TracesColumnsContext = createContext<TracesColumnsContextValue | null>(null);\n\nconst useRequired = <T>(context: React.Context<T | null>, name: string): T => {\n const value = useContext(context);\n if (!value) throw new Error(`${name} must be used inside <TracesExplorer>`);\n return value;\n};\n\nexport const useTracesConfig = () => useRequired(TracesConfigContext, 'useTracesConfig');\nexport const useTracesFilters = () => useRequired(TracesFiltersContext, 'useTracesFilters');\nexport const useTracesSelection = () => useRequired(TracesSelectionContext, 'useTracesSelection');\nexport const useTracesList = () => useRequired(TracesListContext, 'useTracesList');\n/** Whether the list query is fetching, including background refetches and retries. */\nexport const useTracesListFetching = () => {\n const value = useContext(TracesListFetchingContext);\n if (value === null) throw new Error('useTracesListFetching must be used inside <TracesExplorer>');\n return value;\n};\nexport const useTracesColumns = () => useRequired(TracesColumnsContext, 'useTracesColumns');\n\nexport const CHECKING_USAGE_REASON = 'Checking whether this storage supports usage data.';\nexport const UNSUPPORTED_USAGE_REASON = 'This observability store does not support token and cost metrics.';\n\nexport type TraceUsageColumns = {\n /** Column preferences without the columns the store can't serve (usage, time to first chunk/token). */\n displayedPreferences: TraceColumnPreferences;\n /** Whether usage should be fetched: metrics are supported and a usage column is visible. */\n usageEnabled: boolean;\n usageDisabledReason?: string;\n};\n\nexport const useTraceUsageColumns = (): TraceUsageColumns => {\n const { preferences } = useTracesColumns();\n const { metricsSupport, withTimeToFirstChunk, withTimeToFirstToken, isCapabilitiesLoading } = useTracesConfig();\n const unavailable = !metricsSupport.isLoading && !metricsSupport.supported;\n const timeToFirstChunkUnavailable = !isCapabilitiesLoading && !withTimeToFirstChunk;\n const timeToFirstTokenUnavailable = !isCapabilitiesLoading && !withTimeToFirstToken;\n const displayedPreferences =\n unavailable || timeToFirstChunkUnavailable || timeToFirstTokenUnavailable\n ? {\n ...preferences,\n visibleColumns: preferences.visibleColumns.filter(\n column =>\n !(unavailable && isTraceUsageColumn(column)) &&\n !(timeToFirstChunkUnavailable && column === 'timeToFirstChunk') &&\n !(timeToFirstTokenUnavailable && column === 'timeToFirstToken'),\n ),\n }\n : preferences;\n return {\n displayedPreferences,\n usageEnabled: !unavailable && !metricsSupport.isLoading && hasTraceUsageColumn(displayedPreferences),\n usageDisabledReason: metricsSupport.isLoading\n ? CHECKING_USAGE_REASON\n : !metricsSupport.supported\n ? UNSUPPORTED_USAGE_REASON\n : undefined,\n };\n};\n"],"mappings":";;;AAoHA,IAAa,sBAAsB,cAA+C,IAAI;AACtF,IAAa,uBAAuB,cAAgD,IAAI;AACxF,IAAa,yBAAyB,cAAkD,IAAI;AAC5F,IAAa,oBAAoB,cAA6C,IAAI;;AAElF,IAAa,4BAA4B,cAA8B,IAAI;AAC3E,IAAa,uBAAuB,cAAgD,IAAI;AAExF,IAAM,eAAkB,SAAkC,SAAoB;CAC5E,MAAM,QAAQ,WAAW,OAAO;CAChC,IAAI,CAAC,OAAO,MAAM,IAAI,MAAM,GAAG,KAAK,sCAAsC;CAC1E,OAAO;AACT;AAEA,IAAa,wBAAwB,YAAY,qBAAqB,iBAAiB;AACvF,IAAa,yBAAyB,YAAY,sBAAsB,kBAAkB;AAC1F,IAAa,2BAA2B,YAAY,wBAAwB,oBAAoB;AAChG,IAAa,sBAAsB,YAAY,mBAAmB,eAAe;;AAEjF,IAAa,8BAA8B;CACzC,MAAM,QAAQ,WAAW,yBAAyB;CAClD,IAAI,UAAU,MAAM,MAAM,IAAI,MAAM,4DAA4D;CAChG,OAAO;AACT;AACA,IAAa,yBAAyB,YAAY,sBAAsB,kBAAkB;AAE1F,IAAa,wBAAwB;AACrC,IAAa,2BAA2B;AAUxC,IAAa,6BAAgD;CAC3D,MAAM,EAAE,gBAAgB,iBAAiB;CACzC,MAAM,EAAE,gBAAgB,sBAAsB,sBAAsB,0BAA0B,gBAAgB;CAC9G,MAAM,cAAc,CAAC,eAAe,aAAa,CAAC,eAAe;CACjE,MAAM,8BAA8B,CAAC,yBAAyB,CAAC;CAC/D,MAAM,8BAA8B,CAAC,yBAAyB,CAAC;CAC/D,MAAM,uBACJ,eAAe,+BAA+B,8BAC1C;EACE,GAAG;EACH,gBAAgB,YAAY,eAAe,QACzC,WACE,EAAE,eAAe,mBAAmB,MAAM,MAC1C,EAAE,+BAA+B,WAAW,uBAC5C,EAAE,+BAA+B,WAAW,mBAChD;CACF,IACA;CACN,OAAO;EACL;EACA,cAAc,CAAC,eAAe,CAAC,eAAe,aAAa,oBAAoB,oBAAoB;EACnG,qBAAqB,eAAe,YAChC,wBACA,CAAC,eAAe,YACd,2BACA,KAAA;CACR;AACF"}
1
+ {"version":3,"file":"traces-explorer-context.es.js","names":[],"sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-context.ts"],"sourcesContent":["import type { EntityType } from '@mastra/core/observability';\nimport type { TraceQueryDiscoveryTimeRange } from '@mastra/react/hooks/traces';\nimport { createContext, useContext } from 'react';\nimport type { useTraceColumnPreferences } from '../../hooks/use-trace-column-preferences';\nimport type { useTracesListSource } from '../../hooks/use-traces-list-source';\nimport { hasTraceUsageColumn, isTraceUsageColumn } from '../../trace-list-columns';\nimport type { TraceColumnPreferences } from '../../trace-list-columns';\nimport type { SpanTab, TraceDatePreset } from '../../types';\nimport type { FeedbackOptions } from '../feedback-options';\nimport type { TraceSpanView } from '../trace-data-panel-view';\nimport type { TracesFilters, TracesSelection, TracesSort } from './traces-explorer-actions';\n\nexport type TracesExplorerScope = { entityId: string; entityType?: EntityType };\n\nexport type TracesMetricsSupport = { supported: boolean; isLoading: boolean };\n\n/**\n * Host switches (e.g. feature flags), combined with what the server supports.\n * `traceQuery` and `feedback` default to on and can only turn their feature off.\n * `spanQuery` and `threadQuery` default to off: each view is offered only when its flag is `true`\n * and the server supports it.\n */\nexport type TracesExplorerFeatures = {\n traceQuery?: boolean;\n feedback?: boolean;\n spanQuery?: boolean;\n threadQuery?: boolean;\n};\n\nexport type TracesConfigContextValue = {\n listId: string;\n scopedFieldIds: ReadonlySet<string>;\n hiddenFieldIds: readonly string[];\n withQueryTrace: boolean;\n withFeedback: boolean;\n feedbackOptions?: FeedbackOptions;\n /** The span query API is on, so the host can offer a spans view next to the traces list. */\n withSpanQuery: boolean;\n /** The thread rows API is on, so the host can offer a threads view next to the traces list. */\n withThreadQuery: boolean;\n withRootDuration: boolean;\n /** The server filters trace queries on the root span's `outcome` and `stopReason`. */\n withOutcomeFields: boolean;\n /** Trace rows carry the root span's time to first chunk, so the TTFC column can be shown. */\n withTimeToFirstChunk: boolean;\n /** Trace queries can be ordered by the root span's time to first chunk. */\n withTimeToFirstChunkSort: boolean;\n /** Trace rows carry the root span's time to first token, so the TTFT column can be shown. */\n withTimeToFirstToken: boolean;\n /** Trace queries can be ordered by the root span's time to first token. */\n withTimeToFirstTokenSort: boolean;\n /** The server supports delta polling, so auto-refresh merges new traces instead of reloading pages. */\n withDeltaPolling: boolean;\n /** Whether field discovery should run: the server supports it and the trace query API is on. */\n withDiscovery: boolean;\n isCapabilitiesLoading: boolean;\n metricsSupport: TracesMetricsSupport;\n /** Shared by every discovery consumer so they hit the same cached query. */\n discoveryTimeRange: TraceQueryDiscoveryTimeRange;\n};\n\nexport type TracesFiltersActions = {\n /** Replaces the filter tokens and groups. The scope tokens are always kept. */\n setFilterTokens: (tokens: TracesFilters['tokens'], groups: TracesFilters['groups']) => void;\n setDatePreset: (preset: TraceDatePreset) => void;\n setDate: (value: Date | undefined, end: 'from' | 'to') => void;\n setDateRange: (from: Date | undefined, to: Date | undefined) => void;\n /** Narrows the range to a histogram selection, remembering the range to return to on reset. */\n zoomDateRange: (from: Date, to: Date) => void;\n /** Undoes the last histogram zoom, or switches to `defaultPreset` when there is none to undo. */\n resetDateRange: (defaultPreset: TraceDatePreset) => void;\n};\n\nexport type TracesFiltersContextValue = TracesFiltersActions & {\n /** The host's filters with the entries this server can't query dropped. */\n filters: TracesFilters;\n dateFrom?: Date;\n dateTo?: Date;\n filtersApplied: boolean;\n contentFiltersApplied: boolean;\n /** The host's filters ask for `running` traces, which `filters` (and so the query) can't express. */\n runningSelected: boolean;\n};\n\nexport type TracesSelectionActions = {\n selectTrace: (traceId: string) => void;\n closeTrace: () => void;\n selectSpan: (spanId: string | null) => void;\n setSpanTab: (tab: SpanTab) => void;\n setSpanView: (view: TraceSpanView) => void;\n selectScore: (scoreId: string | null) => void;\n highlightSpans: (spanIds: string[]) => void;\n};\n\nexport type TracesSelectionContextValue = TracesSelectionActions & {\n selection: TracesSelection;\n selectedTraceId?: string;\n};\n\ntype ListSource = ReturnType<typeof useTracesListSource>;\n\nexport type TracesListContextValue = Pick<\n ListSource,\n | 'rows'\n | 'isLoading'\n | 'isFetchingNextPage'\n | 'hasNextPage'\n | 'setEndOfListElement'\n | 'error'\n | 'refetch'\n | 'autoRefetch'\n> & {\n sort: TracesSort;\n onSortChange: (next: TracesSort) => void;\n};\n\nexport type TracesColumnsContextValue = ReturnType<typeof useTraceColumnPreferences>;\n\nexport const TracesConfigContext = createContext<TracesConfigContextValue | null>(null);\nexport const TracesFiltersContext = createContext<TracesFiltersContextValue | null>(null);\nexport const TracesSelectionContext = createContext<TracesSelectionContextValue | null>(null);\nexport const TracesListContext = createContext<TracesListContextValue | null>(null);\n/** Kept out of `TracesListContext` so a poll tick doesn't re-render every list consumer. */\nexport const TracesListFetchingContext = createContext<boolean | null>(null);\nexport const TracesColumnsContext = createContext<TracesColumnsContextValue | null>(null);\n\nconst useRequired = <T>(context: React.Context<T | null>, name: string): T => {\n const value = useContext(context);\n if (!value) throw new Error(`${name} must be used inside <TracesExplorer>`);\n return value;\n};\n\nexport const useTracesConfig = () => useRequired(TracesConfigContext, 'useTracesConfig');\nexport const useTracesFilters = () => useRequired(TracesFiltersContext, 'useTracesFilters');\nexport const useTracesSelection = () => useRequired(TracesSelectionContext, 'useTracesSelection');\nexport const useTracesList = () => useRequired(TracesListContext, 'useTracesList');\n/** Whether the list query is fetching, including background refetches and retries. */\nexport const useTracesListFetching = () => {\n const value = useContext(TracesListFetchingContext);\n if (value === null) throw new Error('useTracesListFetching must be used inside <TracesExplorer>');\n return value;\n};\nexport const useTracesColumns = () => useRequired(TracesColumnsContext, 'useTracesColumns');\n\nexport const CHECKING_USAGE_REASON = 'Checking whether this storage supports usage data.';\nexport const UNSUPPORTED_USAGE_REASON = 'This observability store does not support token and cost metrics.';\n\nexport type TraceUsageColumns = {\n /** Column preferences without the columns the store can't serve (usage, time to first chunk/token). */\n displayedPreferences: TraceColumnPreferences;\n /** Whether usage should be fetched: metrics are supported and a usage column is visible. */\n usageEnabled: boolean;\n usageDisabledReason?: string;\n};\n\nexport const useTraceUsageColumns = (): TraceUsageColumns => {\n const { preferences } = useTracesColumns();\n const { metricsSupport, withTimeToFirstChunk, withTimeToFirstToken, isCapabilitiesLoading } = useTracesConfig();\n const unavailable = !metricsSupport.isLoading && !metricsSupport.supported;\n const timeToFirstChunkUnavailable = !isCapabilitiesLoading && !withTimeToFirstChunk;\n const timeToFirstTokenUnavailable = !isCapabilitiesLoading && !withTimeToFirstToken;\n const displayedPreferences =\n unavailable || timeToFirstChunkUnavailable || timeToFirstTokenUnavailable\n ? {\n ...preferences,\n visibleColumns: preferences.visibleColumns.filter(\n column =>\n !(unavailable && isTraceUsageColumn(column)) &&\n !(timeToFirstChunkUnavailable && column === 'timeToFirstChunk') &&\n !(timeToFirstTokenUnavailable && column === 'timeToFirstToken'),\n ),\n }\n : preferences;\n return {\n displayedPreferences,\n usageEnabled: !unavailable && !metricsSupport.isLoading && hasTraceUsageColumn(displayedPreferences),\n usageDisabledReason: metricsSupport.isLoading\n ? CHECKING_USAGE_REASON\n : !metricsSupport.supported\n ? UNSUPPORTED_USAGE_REASON\n : undefined,\n };\n};\n"],"mappings":";;;AAsHA,IAAa,sBAAsB,cAA+C,IAAI;AACtF,IAAa,uBAAuB,cAAgD,IAAI;AACxF,IAAa,yBAAyB,cAAkD,IAAI;AAC5F,IAAa,oBAAoB,cAA6C,IAAI;;AAElF,IAAa,4BAA4B,cAA8B,IAAI;AAC3E,IAAa,uBAAuB,cAAgD,IAAI;AAExF,IAAM,eAAkB,SAAkC,SAAoB;CAC5E,MAAM,QAAQ,WAAW,OAAO;CAChC,IAAI,CAAC,OAAO,MAAM,IAAI,MAAM,GAAG,KAAK,sCAAsC;CAC1E,OAAO;AACT;AAEA,IAAa,wBAAwB,YAAY,qBAAqB,iBAAiB;AACvF,IAAa,yBAAyB,YAAY,sBAAsB,kBAAkB;AAC1F,IAAa,2BAA2B,YAAY,wBAAwB,oBAAoB;AAChG,IAAa,sBAAsB,YAAY,mBAAmB,eAAe;;AAEjF,IAAa,8BAA8B;CACzC,MAAM,QAAQ,WAAW,yBAAyB;CAClD,IAAI,UAAU,MAAM,MAAM,IAAI,MAAM,4DAA4D;CAChG,OAAO;AACT;AACA,IAAa,yBAAyB,YAAY,sBAAsB,kBAAkB;AAE1F,IAAa,wBAAwB;AACrC,IAAa,2BAA2B;AAUxC,IAAa,6BAAgD;CAC3D,MAAM,EAAE,gBAAgB,iBAAiB;CACzC,MAAM,EAAE,gBAAgB,sBAAsB,sBAAsB,0BAA0B,gBAAgB;CAC9G,MAAM,cAAc,CAAC,eAAe,aAAa,CAAC,eAAe;CACjE,MAAM,8BAA8B,CAAC,yBAAyB,CAAC;CAC/D,MAAM,8BAA8B,CAAC,yBAAyB,CAAC;CAC/D,MAAM,uBACJ,eAAe,+BAA+B,8BAC1C;EACE,GAAG;EACH,gBAAgB,YAAY,eAAe,QACzC,WACE,EAAE,eAAe,mBAAmB,MAAM,MAC1C,EAAE,+BAA+B,WAAW,uBAC5C,EAAE,+BAA+B,WAAW,mBAChD;CACF,IACA;CACN,OAAO;EACL;EACA,cAAc,CAAC,eAAe,CAAC,eAAe,aAAa,oBAAoB,oBAAoB;EACnG,qBAAqB,eAAe,YAChC,wBACA,CAAC,eAAe,YACd,2BACA,KAAA;CACR;AACF"}
@@ -3,8 +3,8 @@ const require_trace_filters = require("../../../../trace-filters-a0N9bf52.cjs");
3
3
  const require_domains_traces_components_traces_explorer_traces_explorer_actions = require("./traces-explorer-actions.cjs.js");
4
4
  const require_domains_traces_components_traces_explorer_traces_explorer_context = require("./traces-explorer-context.cjs.js");
5
5
  const require_domains_traces_components_traces_explorer_use_traces_filter_bar = require("./use-traces-filter-bar.cjs.js");
6
- const require_FilterBar = require("../../../../FilterBar-jBz6yaNu.cjs");
7
- require("../../../../filter-bar-time-range-DlVNjw43.cjs");
6
+ const require_FilterBar = require("../../../../FilterBar-O8SYau_Q.cjs");
7
+ require("../../../../filter-bar-time-range-D4C3kU0J.cjs");
8
8
  let react_jsx_runtime = require("react/jsx-runtime");
9
9
  // src/domains/traces/components/traces-explorer/traces-explorer-filter-bar.tsx
10
10
  var TIME_RANGE_PRESETS = [
@@ -2,8 +2,8 @@ import { u as TRACE_FILTER_BAR_OPERATORS } from "../../../../trace-filters-CaWkw
2
2
  import { DEFAULT_TRACES_FILTERS } from "./traces-explorer-actions.es.js";
3
3
  import { useTracesConfig, useTracesFilters, useTracesList } from "./traces-explorer-context.es.js";
4
4
  import { useTracesFilterBar, useTracesFilterBarFields } from "./use-traces-filter-bar.es.js";
5
- import { n as FilterBar } from "../../../../FilterBar-Kmn6gMgO.js";
6
- import "../../../../filter-bar-time-range-D9SnzR2J.js";
5
+ import { n as FilterBar } from "../../../../FilterBar-DgHNtsDI.js";
6
+ import "../../../../filter-bar-time-range-ao2YiYEJ.js";
7
7
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
8
  // src/domains/traces/components/traces-explorer/traces-explorer-filter-bar.tsx
9
9
  var TIME_RANGE_PRESETS = [
@@ -14,7 +14,7 @@ let _mastra_core_observability = require("@mastra/core/observability");
14
14
  let _mastra_react_hooks_scores = require("@mastra/react/hooks/scores");
15
15
  // src/domains/traces/components/traces-explorer/traces-explorer-panel.tsx
16
16
  function TracesExplorerPanel({ onOpenScore, renderCreateDatasetDialog, headerActionsSlot, traceHref, withAddTraceToDataset = true }) {
17
- const { withQueryTrace, withFeedback } = require_domains_traces_components_traces_explorer_traces_explorer_context.useTracesConfig();
17
+ const { withQueryTrace, withFeedback, feedbackOptions } = require_domains_traces_components_traces_explorer_traces_explorer_context.useTracesConfig();
18
18
  const { rows, autoRefetch, isLoading: isListLoading } = require_domains_traces_components_traces_explorer_traces_explorer_context.useTracesList();
19
19
  const { selection, selectTrace, closeTrace, selectSpan, setSpanTab, setSpanView, selectScore, highlightSpans } = require_domains_traces_components_traces_explorer_traces_explorer_context.useTracesSelection();
20
20
  const { usageEnabled } = require_domains_traces_components_traces_explorer_traces_explorer_context.useTraceUsageColumns();
@@ -76,6 +76,7 @@ function TracesExplorerPanel({ onOpenScore, renderCreateDatasetDialog, headerAct
76
76
  isFullThreadOpen,
77
77
  withQueryTrace,
78
78
  withFeedback,
79
+ feedbackOptions,
79
80
  onOpenScore,
80
81
  onFullThreadOpenChange: (open) => setFullThreadTraceId(open ? traceId ?? null : null),
81
82
  onSpanSelect: (id) => selectSpan(id ?? null),
@@ -87,7 +88,10 @@ function TracesExplorerPanel({ onOpenScore, renderCreateDatasetDialog, headerAct
87
88
  featuredSpanIds: selection.highlightSpanIds,
88
89
  onHighlightSpans: highlightSpans,
89
90
  feedbackTabBadge: withFeedback ? traceFeedbackData?.pagination?.total ?? void 0 : void 0,
90
- feedbackTabSlot: withFeedback ? ({ traceId: tid }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_domains_traces_components_trace_feedback_tab.TraceFeedbackTab, { traceId: tid }) : void 0,
91
+ feedbackTabSlot: withFeedback ? ({ traceId: tid }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_domains_traces_components_trace_feedback_tab.TraceFeedbackTab, {
92
+ traceId: tid,
93
+ feedbackOptions
94
+ }, tid) : void 0,
91
95
  scoresTabBadge: spanScoresData?.pagination?.total ?? void 0,
92
96
  scoresTabSlot: ({ traceId: tid, rootSpanId }) => rootSpanId ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_domains_scores_components_trace_scores_list.TraceScoresList, {
93
97
  traceId: tid,
@@ -101,7 +105,8 @@ function TracesExplorerPanel({ onOpenScore, renderCreateDatasetDialog, headerAct
101
105
  spanFeedbackTabBadge: withFeedback ? spanFeedbackData?.pagination?.total ?? void 0 : void 0,
102
106
  spanFeedbackTabSlot: withFeedback ? ({ traceId: tid, spanId: sid }) => tid && sid ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_domains_traces_components_span_feedback_tab.SpanFeedbackTab, {
103
107
  traceId: tid,
104
- spanId: sid
108
+ spanId: sid,
109
+ feedbackOptions
105
110
  }, `${tid}:${sid}`) : null : void 0,
106
111
  headerActionsSlot: traceId && headerActionsSlot ? headerActionsSlot({
107
112
  traceId,
@@ -1 +1 @@
1
- {"version":3,"file":"traces-explorer-panel.cjs.js","names":["useTracesConfig","useTracesList","useTracesSelection","useTraceUsageColumns","useState","useTraceFeedback","useSpanFeedback","useTraceOrBranchSpans","useTraceSpanScores","useTraceUsage","useTraceListNavigation","EntityType","_Fragment","TraceSpanPanel","TraceFeedbackTab","TraceScoresList","SpanFeedbackTab","ScoreDataPanel","TraceAsItemDialog"],"sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-panel.tsx"],"sourcesContent":["import { EntityType } from '@mastra/core/observability';\nimport { useTraceSpanScores } from '@mastra/react/hooks/scores';\nimport { useSpanFeedback, useTraceFeedback, useTraceOrBranchSpans, useTraceUsage } from '@mastra/react/hooks/traces';\nimport { useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { useTraceListNavigation } from '../../hooks/use-trace-list-navigation';\nimport { SpanFeedbackTab } from '../span-feedback-tab';\nimport { TraceFeedbackTab } from '../trace-feedback-tab';\nimport { TraceSpanPanel } from '../trace-span-panel';\nimport type { TraceSpanPanelProps } from '../trace-span-panel';\nimport { useTraceUsageColumns, useTracesConfig, useTracesList, useTracesSelection } from './traces-explorer-context';\nimport { TraceAsItemDialog } from '@/domains/observability/components/trace-as-item-dialog';\nimport { ScoreDataPanel, TraceScoresList } from '@/domains/scores';\n\nexport type TracesExplorerPanelProps = {\n /** Opens a score of one of the full thread's traces (the host owns routing). */\n onOpenScore: (traceId: string, scoreId: string) => void;\n renderCreateDatasetDialog?: ComponentProps<typeof TraceAsItemDialog>['renderCreateDatasetDialog'];\n /** Host integration actions rendered alongside the trace controls. */\n headerActionsSlot?: (args: { traceId: string; spans: TraceSpanPanelProps['spans'] }) => ReactNode;\n /** Builds the href of the dedicated trace page; without it the drawer offers no \"Open trace page\" link. */\n traceHref?: (traceId: string) => string;\n /** Shows the \"Add to dataset\" button next to \"Score trace\". Defaults to `true`. */\n withAddTraceToDataset?: boolean;\n};\n\ntype DatasetDialogTarget = { traceId: string; rootSpanId: string | undefined };\n\nexport function TracesExplorerPanel({\n onOpenScore,\n renderCreateDatasetDialog,\n headerActionsSlot,\n traceHref,\n withAddTraceToDataset = true,\n}: TracesExplorerPanelProps) {\n const { withQueryTrace, withFeedback } = useTracesConfig();\n const { rows, autoRefetch, isLoading: isListLoading } = useTracesList();\n const { selection, selectTrace, closeTrace, selectSpan, setSpanTab, setSpanView, selectScore, highlightSpans } =\n useTracesSelection();\n const { usageEnabled } = useTraceUsageColumns();\n const traceId = selection.traceId;\n const spanId = selection.spanId;\n\n const [datasetDialogTarget, setDatasetDialogTarget] = useState<DatasetDialogTarget | null>(null);\n // Keyed by trace id so selecting another trace (row click, prev/next) falls back to the trace panel.\n const [fullThreadTraceId, setFullThreadTraceId] = useState<string | null>(null);\n\n // Tab badge counts; the tab bodies re-use these first-page queries through React Query's cache.\n const { data: traceFeedbackData } = useTraceFeedback({\n traceId,\n queryOptions: { enabled: withFeedback && !!traceId },\n });\n const { data: spanFeedbackData } = useSpanFeedback({\n traceId,\n spanId,\n queryOptions: { enabled: withFeedback && !!traceId && !!spanId },\n });\n\n const {\n spans,\n anchorSpanId,\n isLoading: isLoadingSpans,\n } = useTraceOrBranchSpans({ traceId: traceId ?? null, listMode: 'traces', anchorSpanId: null });\n const anchorSpan = anchorSpanId\n ? spans?.find(s => s.spanId === anchorSpanId)\n : spans?.find(s => s.parentSpanId == null);\n\n const { data: spanScoresData } = useTraceSpanScores({\n traceId,\n spanId: anchorSpan?.spanId,\n queryOptions: { enabled: !!traceId && !!anchorSpan?.spanId },\n });\n const featuredScore = selection.scoreId\n ? spanScoresData?.scores?.find(score => score.id === selection.scoreId)\n : undefined;\n\n // Same key as the list's usage query when the trace is listed, so React Query serves it from cache.\n // Waits for the list so a deep-linked trace doesn't fetch its own usage before the rows arrive.\n const rowIds = rows.map(row => row.traceId);\n const isListed = !!traceId && rowIds.includes(traceId);\n const { data: usageByTraceId } = useTraceUsage({\n traceIds: isListed ? rowIds : traceId ? [traceId] : [],\n enabled: usageEnabled && !isListLoading,\n autoRefetch,\n });\n const usage = traceId ? usageByTraceId?.get(traceId) : undefined;\n\n const { handlePreviousTrace, handleNextTrace } = useTraceListNavigation(rows, traceId, null, selectTrace);\n\n const isFullThreadOpen = !!traceId && fullThreadTraceId === traceId;\n const depth = isFullThreadOpen ? 3 : 2;\n\n // Only agent traces carry the Messages column, so other traces open the drawer one size\n // smaller, with or without a span open. The listed row knows the entity on click; the root\n // span covers deep-linked traces outside the list.\n const listedRow = rows.find(row => row.traceId === traceId);\n const entityType = listedRow?.entityType ?? anchorSpan?.entityType;\n const isAgent = entityType === EntityType.AGENT;\n const panelSize = spanId ? (isAgent ? 'full' : 'wide') : isAgent ? 'wide' : 'half';\n\n return (\n <>\n <TraceSpanPanel\n title=\"Trace details\"\n size={panelSize}\n traceId={traceId}\n spans={spans}\n anchorSpanId={anchorSpanId}\n entityType={entityType}\n usage={usage}\n rootStreamingTimings={listedRow}\n isLoadingSpans={isLoadingSpans}\n selectedSpanId={spanId ?? null}\n onClose={() => {\n setFullThreadTraceId(null);\n closeTrace();\n }}\n isFullThreadOpen={isFullThreadOpen}\n withQueryTrace={withQueryTrace}\n withFeedback={withFeedback}\n onOpenScore={onOpenScore}\n onFullThreadOpenChange={open => setFullThreadTraceId(open ? (traceId ?? null) : null)}\n onSpanSelect={id => selectSpan(id ?? null)}\n onSaveAsDatasetItem={withAddTraceToDataset ? setDatasetDialogTarget : undefined}\n initialSpanId={spanId}\n onPrevious={handlePreviousTrace}\n onNext={handleNextTrace}\n showPartialThread\n featuredSpanIds={selection.highlightSpanIds}\n onHighlightSpans={highlightSpans}\n feedbackTabBadge={withFeedback ? (traceFeedbackData?.pagination?.total ?? undefined) : undefined}\n feedbackTabSlot={withFeedback ? ({ traceId: tid }) => <TraceFeedbackTab traceId={tid} /> : undefined}\n scoresTabBadge={spanScoresData?.pagination?.total ?? undefined}\n scoresTabSlot={({ traceId: tid, rootSpanId }) =>\n rootSpanId ? <TraceScoresList traceId={tid} spanId={rootSpanId} onScoreSelect={selectScore} /> : null\n }\n spanView={selection.spanView}\n onSpanViewChange={setSpanView}\n spanActiveTab={selection.spanTab ?? 'details'}\n onSpanTabChange={setSpanTab}\n spanFeedbackTabBadge={withFeedback ? (spanFeedbackData?.pagination?.total ?? undefined) : undefined}\n spanFeedbackTabSlot={\n withFeedback\n ? ({ traceId: tid, spanId: sid }) =>\n tid && sid ? <SpanFeedbackTab key={`${tid}:${sid}`} traceId={tid} spanId={sid} /> : null\n : undefined\n }\n headerActionsSlot={traceId && headerActionsSlot ? headerActionsSlot({ traceId, spans }) : undefined}\n traceHref={traceId && traceHref ? traceHref(traceId) : undefined}\n />\n <ScoreDataPanel depth={depth} score={featuredScore} onClose={() => selectScore(null)} />\n {withAddTraceToDataset && (\n <TraceAsItemDialog\n rootSpanId={datasetDialogTarget?.rootSpanId}\n traceId={datasetDialogTarget?.traceId}\n isOpen={!!datasetDialogTarget}\n onClose={() => setDatasetDialogTarget(null)}\n renderCreateDatasetDialog={renderCreateDatasetDialog}\n />\n )}\n </>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"traces-explorer-panel.cjs.js","names":["useTracesConfig","useTracesList","useTracesSelection","useTraceUsageColumns","useState","useTraceFeedback","useSpanFeedback","useTraceOrBranchSpans","useTraceSpanScores","useTraceUsage","useTraceListNavigation","EntityType","_Fragment","TraceSpanPanel","TraceFeedbackTab","TraceScoresList","SpanFeedbackTab","ScoreDataPanel","TraceAsItemDialog"],"sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-panel.tsx"],"sourcesContent":["import { EntityType } from '@mastra/core/observability';\nimport { useTraceSpanScores } from '@mastra/react/hooks/scores';\nimport { useSpanFeedback, useTraceFeedback, useTraceOrBranchSpans, useTraceUsage } from '@mastra/react/hooks/traces';\nimport { useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { useTraceListNavigation } from '../../hooks/use-trace-list-navigation';\nimport { SpanFeedbackTab } from '../span-feedback-tab';\nimport { TraceFeedbackTab } from '../trace-feedback-tab';\nimport { TraceSpanPanel } from '../trace-span-panel';\nimport type { TraceSpanPanelProps } from '../trace-span-panel';\nimport { useTraceUsageColumns, useTracesConfig, useTracesList, useTracesSelection } from './traces-explorer-context';\nimport { TraceAsItemDialog } from '@/domains/observability/components/trace-as-item-dialog';\nimport { ScoreDataPanel, TraceScoresList } from '@/domains/scores';\n\nexport type TracesExplorerPanelProps = {\n /** Opens a score of one of the full thread's traces (the host owns routing). */\n onOpenScore: (traceId: string, scoreId: string) => void;\n renderCreateDatasetDialog?: ComponentProps<typeof TraceAsItemDialog>['renderCreateDatasetDialog'];\n /** Host integration actions rendered alongside the trace controls. */\n headerActionsSlot?: (args: { traceId: string; spans: TraceSpanPanelProps['spans'] }) => ReactNode;\n /** Builds the href of the dedicated trace page; without it the drawer offers no \"Open trace page\" link. */\n traceHref?: (traceId: string) => string;\n /** Shows the \"Add to dataset\" button next to \"Score trace\". Defaults to `true`. */\n withAddTraceToDataset?: boolean;\n};\n\ntype DatasetDialogTarget = { traceId: string; rootSpanId: string | undefined };\n\nexport function TracesExplorerPanel({\n onOpenScore,\n renderCreateDatasetDialog,\n headerActionsSlot,\n traceHref,\n withAddTraceToDataset = true,\n}: TracesExplorerPanelProps) {\n const { withQueryTrace, withFeedback, feedbackOptions } = useTracesConfig();\n const { rows, autoRefetch, isLoading: isListLoading } = useTracesList();\n const { selection, selectTrace, closeTrace, selectSpan, setSpanTab, setSpanView, selectScore, highlightSpans } =\n useTracesSelection();\n const { usageEnabled } = useTraceUsageColumns();\n const traceId = selection.traceId;\n const spanId = selection.spanId;\n\n const [datasetDialogTarget, setDatasetDialogTarget] = useState<DatasetDialogTarget | null>(null);\n // Keyed by trace id so selecting another trace (row click, prev/next) falls back to the trace panel.\n const [fullThreadTraceId, setFullThreadTraceId] = useState<string | null>(null);\n\n // Tab badge counts; the tab bodies re-use these first-page queries through React Query's cache.\n const { data: traceFeedbackData } = useTraceFeedback({\n traceId,\n queryOptions: { enabled: withFeedback && !!traceId },\n });\n const { data: spanFeedbackData } = useSpanFeedback({\n traceId,\n spanId,\n queryOptions: { enabled: withFeedback && !!traceId && !!spanId },\n });\n\n const {\n spans,\n anchorSpanId,\n isLoading: isLoadingSpans,\n } = useTraceOrBranchSpans({ traceId: traceId ?? null, listMode: 'traces', anchorSpanId: null });\n const anchorSpan = anchorSpanId\n ? spans?.find(s => s.spanId === anchorSpanId)\n : spans?.find(s => s.parentSpanId == null);\n\n const { data: spanScoresData } = useTraceSpanScores({\n traceId,\n spanId: anchorSpan?.spanId,\n queryOptions: { enabled: !!traceId && !!anchorSpan?.spanId },\n });\n const featuredScore = selection.scoreId\n ? spanScoresData?.scores?.find(score => score.id === selection.scoreId)\n : undefined;\n\n // Same key as the list's usage query when the trace is listed, so React Query serves it from cache.\n // Waits for the list so a deep-linked trace doesn't fetch its own usage before the rows arrive.\n const rowIds = rows.map(row => row.traceId);\n const isListed = !!traceId && rowIds.includes(traceId);\n const { data: usageByTraceId } = useTraceUsage({\n traceIds: isListed ? rowIds : traceId ? [traceId] : [],\n enabled: usageEnabled && !isListLoading,\n autoRefetch,\n });\n const usage = traceId ? usageByTraceId?.get(traceId) : undefined;\n\n const { handlePreviousTrace, handleNextTrace } = useTraceListNavigation(rows, traceId, null, selectTrace);\n\n const isFullThreadOpen = !!traceId && fullThreadTraceId === traceId;\n const depth = isFullThreadOpen ? 3 : 2;\n\n // Only agent traces carry the Messages column, so other traces open the drawer one size\n // smaller, with or without a span open. The listed row knows the entity on click; the root\n // span covers deep-linked traces outside the list.\n const listedRow = rows.find(row => row.traceId === traceId);\n const entityType = listedRow?.entityType ?? anchorSpan?.entityType;\n const isAgent = entityType === EntityType.AGENT;\n const panelSize = spanId ? (isAgent ? 'full' : 'wide') : isAgent ? 'wide' : 'half';\n\n return (\n <>\n <TraceSpanPanel\n title=\"Trace details\"\n size={panelSize}\n traceId={traceId}\n spans={spans}\n anchorSpanId={anchorSpanId}\n entityType={entityType}\n usage={usage}\n rootStreamingTimings={listedRow}\n isLoadingSpans={isLoadingSpans}\n selectedSpanId={spanId ?? null}\n onClose={() => {\n setFullThreadTraceId(null);\n closeTrace();\n }}\n isFullThreadOpen={isFullThreadOpen}\n withQueryTrace={withQueryTrace}\n withFeedback={withFeedback}\n feedbackOptions={feedbackOptions}\n onOpenScore={onOpenScore}\n onFullThreadOpenChange={open => setFullThreadTraceId(open ? (traceId ?? null) : null)}\n onSpanSelect={id => selectSpan(id ?? null)}\n onSaveAsDatasetItem={withAddTraceToDataset ? setDatasetDialogTarget : undefined}\n initialSpanId={spanId}\n onPrevious={handlePreviousTrace}\n onNext={handleNextTrace}\n showPartialThread\n featuredSpanIds={selection.highlightSpanIds}\n onHighlightSpans={highlightSpans}\n feedbackTabBadge={withFeedback ? (traceFeedbackData?.pagination?.total ?? undefined) : undefined}\n feedbackTabSlot={\n withFeedback\n ? ({ traceId: tid }) => <TraceFeedbackTab key={tid} traceId={tid} feedbackOptions={feedbackOptions} />\n : undefined\n }\n scoresTabBadge={spanScoresData?.pagination?.total ?? undefined}\n scoresTabSlot={({ traceId: tid, rootSpanId }) =>\n rootSpanId ? <TraceScoresList traceId={tid} spanId={rootSpanId} onScoreSelect={selectScore} /> : null\n }\n spanView={selection.spanView}\n onSpanViewChange={setSpanView}\n spanActiveTab={selection.spanTab ?? 'details'}\n onSpanTabChange={setSpanTab}\n spanFeedbackTabBadge={withFeedback ? (spanFeedbackData?.pagination?.total ?? undefined) : undefined}\n spanFeedbackTabSlot={\n withFeedback\n ? ({ traceId: tid, spanId: sid }) =>\n tid && sid ? (\n <SpanFeedbackTab key={`${tid}:${sid}`} traceId={tid} spanId={sid} feedbackOptions={feedbackOptions} />\n ) : null\n : undefined\n }\n headerActionsSlot={traceId && headerActionsSlot ? headerActionsSlot({ traceId, spans }) : undefined}\n traceHref={traceId && traceHref ? traceHref(traceId) : undefined}\n />\n <ScoreDataPanel depth={depth} score={featuredScore} onClose={() => selectScore(null)} />\n {withAddTraceToDataset && (\n <TraceAsItemDialog\n rootSpanId={datasetDialogTarget?.rootSpanId}\n traceId={datasetDialogTarget?.traceId}\n isOpen={!!datasetDialogTarget}\n onClose={() => setDatasetDialogTarget(null)}\n renderCreateDatasetDialog={renderCreateDatasetDialog}\n />\n )}\n </>\n );\n}\n"],"mappings":"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"}
@@ -13,7 +13,7 @@ import { EntityType } from "@mastra/core/observability";
13
13
  import { useTraceSpanScores } from "@mastra/react/hooks/scores";
14
14
  // src/domains/traces/components/traces-explorer/traces-explorer-panel.tsx
15
15
  function TracesExplorerPanel({ onOpenScore, renderCreateDatasetDialog, headerActionsSlot, traceHref, withAddTraceToDataset = true }) {
16
- const { withQueryTrace, withFeedback } = useTracesConfig();
16
+ const { withQueryTrace, withFeedback, feedbackOptions } = useTracesConfig();
17
17
  const { rows, autoRefetch, isLoading: isListLoading } = useTracesList();
18
18
  const { selection, selectTrace, closeTrace, selectSpan, setSpanTab, setSpanView, selectScore, highlightSpans } = useTracesSelection();
19
19
  const { usageEnabled } = useTraceUsageColumns();
@@ -75,6 +75,7 @@ function TracesExplorerPanel({ onOpenScore, renderCreateDatasetDialog, headerAct
75
75
  isFullThreadOpen,
76
76
  withQueryTrace,
77
77
  withFeedback,
78
+ feedbackOptions,
78
79
  onOpenScore,
79
80
  onFullThreadOpenChange: (open) => setFullThreadTraceId(open ? traceId ?? null : null),
80
81
  onSpanSelect: (id) => selectSpan(id ?? null),
@@ -86,7 +87,10 @@ function TracesExplorerPanel({ onOpenScore, renderCreateDatasetDialog, headerAct
86
87
  featuredSpanIds: selection.highlightSpanIds,
87
88
  onHighlightSpans: highlightSpans,
88
89
  feedbackTabBadge: withFeedback ? traceFeedbackData?.pagination?.total ?? void 0 : void 0,
89
- feedbackTabSlot: withFeedback ? ({ traceId: tid }) => /* @__PURE__ */ jsx(TraceFeedbackTab, { traceId: tid }) : void 0,
90
+ feedbackTabSlot: withFeedback ? ({ traceId: tid }) => /* @__PURE__ */ jsx(TraceFeedbackTab, {
91
+ traceId: tid,
92
+ feedbackOptions
93
+ }, tid) : void 0,
90
94
  scoresTabBadge: spanScoresData?.pagination?.total ?? void 0,
91
95
  scoresTabSlot: ({ traceId: tid, rootSpanId }) => rootSpanId ? /* @__PURE__ */ jsx(TraceScoresList, {
92
96
  traceId: tid,
@@ -100,7 +104,8 @@ function TracesExplorerPanel({ onOpenScore, renderCreateDatasetDialog, headerAct
100
104
  spanFeedbackTabBadge: withFeedback ? spanFeedbackData?.pagination?.total ?? void 0 : void 0,
101
105
  spanFeedbackTabSlot: withFeedback ? ({ traceId: tid, spanId: sid }) => tid && sid ? /* @__PURE__ */ jsx(SpanFeedbackTab, {
102
106
  traceId: tid,
103
- spanId: sid
107
+ spanId: sid,
108
+ feedbackOptions
104
109
  }, `${tid}:${sid}`) : null : void 0,
105
110
  headerActionsSlot: traceId && headerActionsSlot ? headerActionsSlot({
106
111
  traceId,
@@ -1 +1 @@
1
- {"version":3,"file":"traces-explorer-panel.es.js","names":["_Fragment"],"sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-panel.tsx"],"sourcesContent":["import { EntityType } from '@mastra/core/observability';\nimport { useTraceSpanScores } from '@mastra/react/hooks/scores';\nimport { useSpanFeedback, useTraceFeedback, useTraceOrBranchSpans, useTraceUsage } from '@mastra/react/hooks/traces';\nimport { useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { useTraceListNavigation } from '../../hooks/use-trace-list-navigation';\nimport { SpanFeedbackTab } from '../span-feedback-tab';\nimport { TraceFeedbackTab } from '../trace-feedback-tab';\nimport { TraceSpanPanel } from '../trace-span-panel';\nimport type { TraceSpanPanelProps } from '../trace-span-panel';\nimport { useTraceUsageColumns, useTracesConfig, useTracesList, useTracesSelection } from './traces-explorer-context';\nimport { TraceAsItemDialog } from '@/domains/observability/components/trace-as-item-dialog';\nimport { ScoreDataPanel, TraceScoresList } from '@/domains/scores';\n\nexport type TracesExplorerPanelProps = {\n /** Opens a score of one of the full thread's traces (the host owns routing). */\n onOpenScore: (traceId: string, scoreId: string) => void;\n renderCreateDatasetDialog?: ComponentProps<typeof TraceAsItemDialog>['renderCreateDatasetDialog'];\n /** Host integration actions rendered alongside the trace controls. */\n headerActionsSlot?: (args: { traceId: string; spans: TraceSpanPanelProps['spans'] }) => ReactNode;\n /** Builds the href of the dedicated trace page; without it the drawer offers no \"Open trace page\" link. */\n traceHref?: (traceId: string) => string;\n /** Shows the \"Add to dataset\" button next to \"Score trace\". Defaults to `true`. */\n withAddTraceToDataset?: boolean;\n};\n\ntype DatasetDialogTarget = { traceId: string; rootSpanId: string | undefined };\n\nexport function TracesExplorerPanel({\n onOpenScore,\n renderCreateDatasetDialog,\n headerActionsSlot,\n traceHref,\n withAddTraceToDataset = true,\n}: TracesExplorerPanelProps) {\n const { withQueryTrace, withFeedback } = useTracesConfig();\n const { rows, autoRefetch, isLoading: isListLoading } = useTracesList();\n const { selection, selectTrace, closeTrace, selectSpan, setSpanTab, setSpanView, selectScore, highlightSpans } =\n useTracesSelection();\n const { usageEnabled } = useTraceUsageColumns();\n const traceId = selection.traceId;\n const spanId = selection.spanId;\n\n const [datasetDialogTarget, setDatasetDialogTarget] = useState<DatasetDialogTarget | null>(null);\n // Keyed by trace id so selecting another trace (row click, prev/next) falls back to the trace panel.\n const [fullThreadTraceId, setFullThreadTraceId] = useState<string | null>(null);\n\n // Tab badge counts; the tab bodies re-use these first-page queries through React Query's cache.\n const { data: traceFeedbackData } = useTraceFeedback({\n traceId,\n queryOptions: { enabled: withFeedback && !!traceId },\n });\n const { data: spanFeedbackData } = useSpanFeedback({\n traceId,\n spanId,\n queryOptions: { enabled: withFeedback && !!traceId && !!spanId },\n });\n\n const {\n spans,\n anchorSpanId,\n isLoading: isLoadingSpans,\n } = useTraceOrBranchSpans({ traceId: traceId ?? null, listMode: 'traces', anchorSpanId: null });\n const anchorSpan = anchorSpanId\n ? spans?.find(s => s.spanId === anchorSpanId)\n : spans?.find(s => s.parentSpanId == null);\n\n const { data: spanScoresData } = useTraceSpanScores({\n traceId,\n spanId: anchorSpan?.spanId,\n queryOptions: { enabled: !!traceId && !!anchorSpan?.spanId },\n });\n const featuredScore = selection.scoreId\n ? spanScoresData?.scores?.find(score => score.id === selection.scoreId)\n : undefined;\n\n // Same key as the list's usage query when the trace is listed, so React Query serves it from cache.\n // Waits for the list so a deep-linked trace doesn't fetch its own usage before the rows arrive.\n const rowIds = rows.map(row => row.traceId);\n const isListed = !!traceId && rowIds.includes(traceId);\n const { data: usageByTraceId } = useTraceUsage({\n traceIds: isListed ? rowIds : traceId ? [traceId] : [],\n enabled: usageEnabled && !isListLoading,\n autoRefetch,\n });\n const usage = traceId ? usageByTraceId?.get(traceId) : undefined;\n\n const { handlePreviousTrace, handleNextTrace } = useTraceListNavigation(rows, traceId, null, selectTrace);\n\n const isFullThreadOpen = !!traceId && fullThreadTraceId === traceId;\n const depth = isFullThreadOpen ? 3 : 2;\n\n // Only agent traces carry the Messages column, so other traces open the drawer one size\n // smaller, with or without a span open. The listed row knows the entity on click; the root\n // span covers deep-linked traces outside the list.\n const listedRow = rows.find(row => row.traceId === traceId);\n const entityType = listedRow?.entityType ?? anchorSpan?.entityType;\n const isAgent = entityType === EntityType.AGENT;\n const panelSize = spanId ? (isAgent ? 'full' : 'wide') : isAgent ? 'wide' : 'half';\n\n return (\n <>\n <TraceSpanPanel\n title=\"Trace details\"\n size={panelSize}\n traceId={traceId}\n spans={spans}\n anchorSpanId={anchorSpanId}\n entityType={entityType}\n usage={usage}\n rootStreamingTimings={listedRow}\n isLoadingSpans={isLoadingSpans}\n selectedSpanId={spanId ?? null}\n onClose={() => {\n setFullThreadTraceId(null);\n closeTrace();\n }}\n isFullThreadOpen={isFullThreadOpen}\n withQueryTrace={withQueryTrace}\n withFeedback={withFeedback}\n onOpenScore={onOpenScore}\n onFullThreadOpenChange={open => setFullThreadTraceId(open ? (traceId ?? null) : null)}\n onSpanSelect={id => selectSpan(id ?? null)}\n onSaveAsDatasetItem={withAddTraceToDataset ? setDatasetDialogTarget : undefined}\n initialSpanId={spanId}\n onPrevious={handlePreviousTrace}\n onNext={handleNextTrace}\n showPartialThread\n featuredSpanIds={selection.highlightSpanIds}\n onHighlightSpans={highlightSpans}\n feedbackTabBadge={withFeedback ? (traceFeedbackData?.pagination?.total ?? undefined) : undefined}\n feedbackTabSlot={withFeedback ? ({ traceId: tid }) => <TraceFeedbackTab traceId={tid} /> : undefined}\n scoresTabBadge={spanScoresData?.pagination?.total ?? undefined}\n scoresTabSlot={({ traceId: tid, rootSpanId }) =>\n rootSpanId ? <TraceScoresList traceId={tid} spanId={rootSpanId} onScoreSelect={selectScore} /> : null\n }\n spanView={selection.spanView}\n onSpanViewChange={setSpanView}\n spanActiveTab={selection.spanTab ?? 'details'}\n onSpanTabChange={setSpanTab}\n spanFeedbackTabBadge={withFeedback ? (spanFeedbackData?.pagination?.total ?? undefined) : undefined}\n spanFeedbackTabSlot={\n withFeedback\n ? ({ traceId: tid, spanId: sid }) =>\n tid && sid ? <SpanFeedbackTab key={`${tid}:${sid}`} traceId={tid} spanId={sid} /> : null\n : undefined\n }\n headerActionsSlot={traceId && headerActionsSlot ? headerActionsSlot({ traceId, spans }) : undefined}\n traceHref={traceId && traceHref ? traceHref(traceId) : undefined}\n />\n <ScoreDataPanel depth={depth} score={featuredScore} onClose={() => selectScore(null)} />\n {withAddTraceToDataset && (\n <TraceAsItemDialog\n rootSpanId={datasetDialogTarget?.rootSpanId}\n traceId={datasetDialogTarget?.traceId}\n isOpen={!!datasetDialogTarget}\n onClose={() => setDatasetDialogTarget(null)}\n renderCreateDatasetDialog={renderCreateDatasetDialog}\n />\n )}\n </>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"traces-explorer-panel.es.js","names":["_Fragment"],"sources":["../../../../../src/domains/traces/components/traces-explorer/traces-explorer-panel.tsx"],"sourcesContent":["import { EntityType } from '@mastra/core/observability';\nimport { useTraceSpanScores } from '@mastra/react/hooks/scores';\nimport { useSpanFeedback, useTraceFeedback, useTraceOrBranchSpans, useTraceUsage } from '@mastra/react/hooks/traces';\nimport { useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { useTraceListNavigation } from '../../hooks/use-trace-list-navigation';\nimport { SpanFeedbackTab } from '../span-feedback-tab';\nimport { TraceFeedbackTab } from '../trace-feedback-tab';\nimport { TraceSpanPanel } from '../trace-span-panel';\nimport type { TraceSpanPanelProps } from '../trace-span-panel';\nimport { useTraceUsageColumns, useTracesConfig, useTracesList, useTracesSelection } from './traces-explorer-context';\nimport { TraceAsItemDialog } from '@/domains/observability/components/trace-as-item-dialog';\nimport { ScoreDataPanel, TraceScoresList } from '@/domains/scores';\n\nexport type TracesExplorerPanelProps = {\n /** Opens a score of one of the full thread's traces (the host owns routing). */\n onOpenScore: (traceId: string, scoreId: string) => void;\n renderCreateDatasetDialog?: ComponentProps<typeof TraceAsItemDialog>['renderCreateDatasetDialog'];\n /** Host integration actions rendered alongside the trace controls. */\n headerActionsSlot?: (args: { traceId: string; spans: TraceSpanPanelProps['spans'] }) => ReactNode;\n /** Builds the href of the dedicated trace page; without it the drawer offers no \"Open trace page\" link. */\n traceHref?: (traceId: string) => string;\n /** Shows the \"Add to dataset\" button next to \"Score trace\". Defaults to `true`. */\n withAddTraceToDataset?: boolean;\n};\n\ntype DatasetDialogTarget = { traceId: string; rootSpanId: string | undefined };\n\nexport function TracesExplorerPanel({\n onOpenScore,\n renderCreateDatasetDialog,\n headerActionsSlot,\n traceHref,\n withAddTraceToDataset = true,\n}: TracesExplorerPanelProps) {\n const { withQueryTrace, withFeedback, feedbackOptions } = useTracesConfig();\n const { rows, autoRefetch, isLoading: isListLoading } = useTracesList();\n const { selection, selectTrace, closeTrace, selectSpan, setSpanTab, setSpanView, selectScore, highlightSpans } =\n useTracesSelection();\n const { usageEnabled } = useTraceUsageColumns();\n const traceId = selection.traceId;\n const spanId = selection.spanId;\n\n const [datasetDialogTarget, setDatasetDialogTarget] = useState<DatasetDialogTarget | null>(null);\n // Keyed by trace id so selecting another trace (row click, prev/next) falls back to the trace panel.\n const [fullThreadTraceId, setFullThreadTraceId] = useState<string | null>(null);\n\n // Tab badge counts; the tab bodies re-use these first-page queries through React Query's cache.\n const { data: traceFeedbackData } = useTraceFeedback({\n traceId,\n queryOptions: { enabled: withFeedback && !!traceId },\n });\n const { data: spanFeedbackData } = useSpanFeedback({\n traceId,\n spanId,\n queryOptions: { enabled: withFeedback && !!traceId && !!spanId },\n });\n\n const {\n spans,\n anchorSpanId,\n isLoading: isLoadingSpans,\n } = useTraceOrBranchSpans({ traceId: traceId ?? null, listMode: 'traces', anchorSpanId: null });\n const anchorSpan = anchorSpanId\n ? spans?.find(s => s.spanId === anchorSpanId)\n : spans?.find(s => s.parentSpanId == null);\n\n const { data: spanScoresData } = useTraceSpanScores({\n traceId,\n spanId: anchorSpan?.spanId,\n queryOptions: { enabled: !!traceId && !!anchorSpan?.spanId },\n });\n const featuredScore = selection.scoreId\n ? spanScoresData?.scores?.find(score => score.id === selection.scoreId)\n : undefined;\n\n // Same key as the list's usage query when the trace is listed, so React Query serves it from cache.\n // Waits for the list so a deep-linked trace doesn't fetch its own usage before the rows arrive.\n const rowIds = rows.map(row => row.traceId);\n const isListed = !!traceId && rowIds.includes(traceId);\n const { data: usageByTraceId } = useTraceUsage({\n traceIds: isListed ? rowIds : traceId ? [traceId] : [],\n enabled: usageEnabled && !isListLoading,\n autoRefetch,\n });\n const usage = traceId ? usageByTraceId?.get(traceId) : undefined;\n\n const { handlePreviousTrace, handleNextTrace } = useTraceListNavigation(rows, traceId, null, selectTrace);\n\n const isFullThreadOpen = !!traceId && fullThreadTraceId === traceId;\n const depth = isFullThreadOpen ? 3 : 2;\n\n // Only agent traces carry the Messages column, so other traces open the drawer one size\n // smaller, with or without a span open. The listed row knows the entity on click; the root\n // span covers deep-linked traces outside the list.\n const listedRow = rows.find(row => row.traceId === traceId);\n const entityType = listedRow?.entityType ?? anchorSpan?.entityType;\n const isAgent = entityType === EntityType.AGENT;\n const panelSize = spanId ? (isAgent ? 'full' : 'wide') : isAgent ? 'wide' : 'half';\n\n return (\n <>\n <TraceSpanPanel\n title=\"Trace details\"\n size={panelSize}\n traceId={traceId}\n spans={spans}\n anchorSpanId={anchorSpanId}\n entityType={entityType}\n usage={usage}\n rootStreamingTimings={listedRow}\n isLoadingSpans={isLoadingSpans}\n selectedSpanId={spanId ?? null}\n onClose={() => {\n setFullThreadTraceId(null);\n closeTrace();\n }}\n isFullThreadOpen={isFullThreadOpen}\n withQueryTrace={withQueryTrace}\n withFeedback={withFeedback}\n feedbackOptions={feedbackOptions}\n onOpenScore={onOpenScore}\n onFullThreadOpenChange={open => setFullThreadTraceId(open ? (traceId ?? null) : null)}\n onSpanSelect={id => selectSpan(id ?? null)}\n onSaveAsDatasetItem={withAddTraceToDataset ? setDatasetDialogTarget : undefined}\n initialSpanId={spanId}\n onPrevious={handlePreviousTrace}\n onNext={handleNextTrace}\n showPartialThread\n featuredSpanIds={selection.highlightSpanIds}\n onHighlightSpans={highlightSpans}\n feedbackTabBadge={withFeedback ? (traceFeedbackData?.pagination?.total ?? undefined) : undefined}\n feedbackTabSlot={\n withFeedback\n ? ({ traceId: tid }) => <TraceFeedbackTab key={tid} traceId={tid} feedbackOptions={feedbackOptions} />\n : undefined\n }\n scoresTabBadge={spanScoresData?.pagination?.total ?? undefined}\n scoresTabSlot={({ traceId: tid, rootSpanId }) =>\n rootSpanId ? <TraceScoresList traceId={tid} spanId={rootSpanId} onScoreSelect={selectScore} /> : null\n }\n spanView={selection.spanView}\n onSpanViewChange={setSpanView}\n spanActiveTab={selection.spanTab ?? 'details'}\n onSpanTabChange={setSpanTab}\n spanFeedbackTabBadge={withFeedback ? (spanFeedbackData?.pagination?.total ?? undefined) : undefined}\n spanFeedbackTabSlot={\n withFeedback\n ? ({ traceId: tid, spanId: sid }) =>\n tid && sid ? (\n <SpanFeedbackTab key={`${tid}:${sid}`} traceId={tid} spanId={sid} feedbackOptions={feedbackOptions} />\n ) : null\n : undefined\n }\n headerActionsSlot={traceId && headerActionsSlot ? headerActionsSlot({ traceId, spans }) : undefined}\n traceHref={traceId && traceHref ? traceHref(traceId) : undefined}\n />\n <ScoreDataPanel depth={depth} score={featuredScore} onClose={() => selectScore(null)} />\n {withAddTraceToDataset && (\n <TraceAsItemDialog\n rootSpanId={datasetDialogTarget?.rootSpanId}\n traceId={datasetDialogTarget?.traceId}\n isOpen={!!datasetDialogTarget}\n onClose={() => setDatasetDialogTarget(null)}\n renderCreateDatasetDialog={renderCreateDatasetDialog}\n />\n )}\n </>\n );\n}\n"],"mappings":"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"}
@@ -19,7 +19,7 @@ var HIDDEN_SCOPED_FIELD_IDS = [
19
19
  var NO_FIELD_IDS = /* @__PURE__ */ new Set();
20
20
  var NO_HIDDEN_FIELD_IDS = [];
21
21
  var listIdForScope = (scope) => scope?.entityType === _mastra_core_observability.EntityType.AGENT ? "agent-traces" : scope?.entityType === _mastra_core_observability.EntityType.WORKFLOW_RUN ? "workflows-traces" : "all-traces";
22
- function TracesExplorerRoot({ selection, filters: rawFilters, onChange, sort, onSortChange: onHostSortChange, scope, metricsSupport, features, initialFilters = require_domains_traces_components_traces_explorer_traces_explorer_actions.DEFAULT_TRACES_FILTERS, children }) {
22
+ function TracesExplorerRoot({ selection, filters: rawFilters, onChange, sort, onSortChange: onHostSortChange, scope, metricsSupport, features, feedbackOptions, initialFilters = require_domains_traces_components_traces_explorer_traces_explorer_actions.DEFAULT_TRACES_FILTERS, children }) {
23
23
  const traceQuery = (0, _mastra_react_hooks_capabilities.useTraceQueryAvailable)();
24
24
  const withQueryTrace = traceQuery.enabled && features?.traceQuery !== false;
25
25
  const withFeedback = (0, _mastra_react_hooks_capabilities.useFeedbackAvailable)().enabled && features?.feedback !== false;
@@ -144,12 +144,20 @@ function TracesExplorerRoot({ selection, filters: rawFilters, onChange, sort, on
144
144
  discoveryNow
145
145
  ]);
146
146
  const listId = listIdForScope(scope);
147
+ const hasFeedbackOptions = feedbackOptions !== void 0;
148
+ const { contextMode, feedbackUserId, allowDelete, allowReview } = feedbackOptions ?? {};
147
149
  const configValue = (0, react.useMemo)(() => ({
148
150
  listId,
149
151
  scopedFieldIds,
150
152
  hiddenFieldIds,
151
153
  withQueryTrace,
152
154
  withFeedback,
155
+ feedbackOptions: hasFeedbackOptions ? {
156
+ contextMode,
157
+ feedbackUserId,
158
+ allowDelete,
159
+ allowReview
160
+ } : void 0,
153
161
  withSpanQuery,
154
162
  withThreadQuery,
155
163
  withRootDuration,
@@ -169,6 +177,11 @@ function TracesExplorerRoot({ selection, filters: rawFilters, onChange, sort, on
169
177
  hiddenFieldIds,
170
178
  withQueryTrace,
171
179
  withFeedback,
180
+ hasFeedbackOptions,
181
+ contextMode,
182
+ feedbackUserId,
183
+ allowDelete,
184
+ allowReview,
172
185
  withSpanQuery,
173
186
  withThreadQuery,
174
187
  withRootDuration,