@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
@@ -0,0 +1,123 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_domains_dashboards_components_widget_controls = require("../components/widget-controls.cjs.js");
3
+ const require_domains_dashboards_lib_chrome = require("./chrome.cjs.js");
4
+ const require_domains_dashboards_lib_requests = require("./requests.cjs.js");
5
+ const require_domains_dashboards_lib_values = require("./values.cjs.js");
6
+ let react_jsx_runtime = require("react/jsx-runtime");
7
+ // src/domains/dashboards/lib/alert-actions.tsx
8
+ var UNSATISFIABLE_ALERT = "The page's filters exclude everything this card shows.";
9
+ /** `p95` for 0.95: percentiles as people name them. */
10
+ var percentileName = (p) => `p${Math.round(p * 1e3) / 10}`;
11
+ /** What a ref picks from its query, beyond the query itself: `(countDistinct.threadId)`, `(p95)`. */
12
+ function refDetail(ref) {
13
+ const parts = [
14
+ ref.measure,
15
+ ref.field,
16
+ ref.percentile === void 0 ? void 0 : percentileName(ref.percentile),
17
+ ref.groups?.join(", "),
18
+ ref.notGroups && `not ${ref.notGroups.join(", ")}`
19
+ ].filter((p) => p !== void 0);
20
+ return parts.length ? ` (${parts.join(", ")})` : "";
21
+ }
22
+ var refKey = ({ query, measure, field, percentile, groups, notGroups }) => JSON.stringify([
23
+ query,
24
+ measure,
25
+ field,
26
+ percentile,
27
+ groups,
28
+ notGroups
29
+ ]);
30
+ /**
31
+ * Each distinct ref the view's values read, labelled: by the label of a value that is just that ref
32
+ * if there is one, else as a part of the first combined value reading it (the value's label, its
33
+ * query and what it picks). In the order the values first read them.
34
+ */
35
+ function alertRefs(values) {
36
+ const own = /* @__PURE__ */ new Map();
37
+ for (const { label, value } of values) if ("query" in value && !own.has(refKey(value))) own.set(refKey(value), label);
38
+ const seen = /* @__PURE__ */ new Set();
39
+ return values.flatMap(({ label, value }) => require_domains_dashboards_lib_values.exprRefs(value).flatMap((ref) => {
40
+ const key = refKey(ref);
41
+ if (seen.has(key)) return [];
42
+ seen.add(key);
43
+ const { query: _query, ...rest } = ref;
44
+ return [{
45
+ label: own.get(key) ?? `${label}: ${ref.query}${refDetail(rest)}`,
46
+ ref
47
+ }];
48
+ }));
49
+ }
50
+ /** Each source's action, the host's for those it was asked about, in the view's order. */
51
+ function entries(located, answers) {
52
+ let asked = 0;
53
+ return located.flatMap(({ label, query }) => {
54
+ const action = query === "unsatisfiable" ? { disabled: UNSATISFIABLE_ALERT } : answers[asked++];
55
+ return action ? [{
56
+ label,
57
+ action
58
+ }] : [];
59
+ });
60
+ }
61
+ /**
62
+ * The open view's Create alert button, or nothing without an `alert` host. A view the page's filters
63
+ * block, or contradict, gets a disabled button saying so; otherwise the host decides, for the whole
64
+ * card or per source. A source whose query the page's filters contradict is disabled on its own.
65
+ */
66
+ function alertAction(alert, widget, view, source) {
67
+ if (!alert) return void 0;
68
+ const name = view.label?.trim() || widget.title?.trim();
69
+ const label = name ? `Create alert from ${name}` : "Create alert";
70
+ const button = (action) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_domains_dashboards_components_widget_controls.AlertAction, {
71
+ action,
72
+ label,
73
+ LinkComponent: alert.LinkComponent
74
+ });
75
+ if ("blocked" in source) return button({ disabled: require_domains_dashboards_lib_chrome.unsupportedMessage(source.blocked, source.names) });
76
+ const page = source.page;
77
+ const queries = view.queries.map((q) => require_domains_dashboards_lib_requests.pageQuery(q, page));
78
+ const located = alertRefs(source.values).flatMap(({ label, ref }) => {
79
+ const index = view.queries.findIndex((q) => q.id === ref.query);
80
+ const query = queries[index];
81
+ if (query === void 0) return [];
82
+ const { query: _query, ...rest } = ref;
83
+ return [{
84
+ label,
85
+ ref: rest,
86
+ query
87
+ }];
88
+ });
89
+ const satisfiable = located.filter((s) => s.query !== "unsatisfiable");
90
+ if (located.length ? satisfiable.length === 0 : queries.some((q) => q === "unsatisfiable")) return button({ disabled: UNSATISFIABLE_ALERT });
91
+ const action = alert.action({
92
+ widget,
93
+ view,
94
+ queries: queries.filter((q) => q !== "unsatisfiable"),
95
+ sources: satisfiable
96
+ });
97
+ if (!Array.isArray(action)) return action && button(action);
98
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_domains_dashboards_components_widget_controls.AlertMenu, {
99
+ entries: entries(located, action),
100
+ label,
101
+ LinkComponent: alert.LinkComponent
102
+ });
103
+ }
104
+ /** `heading` with `action` first among its hover actions, so it sits left of the pin. */
105
+ function withAction(heading, action) {
106
+ if (!action) return heading;
107
+ return {
108
+ ...heading,
109
+ actions: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [action, heading.actions] })
110
+ };
111
+ }
112
+ /** A pending card's heading: a view the page's filters block gets its disabled button, saying so. */
113
+ function pendingHeading(heading, gate, alert, widget, view) {
114
+ if (gate.status !== "unsupported-filter") return heading;
115
+ return withAction(heading, alertAction(alert, widget, view, { blocked: gate.unsupportedFields }));
116
+ }
117
+ exports.UNSATISFIABLE_ALERT = UNSATISFIABLE_ALERT;
118
+ exports.alertAction = alertAction;
119
+ exports.alertRefs = alertRefs;
120
+ exports.pendingHeading = pendingHeading;
121
+ exports.withAction = withAction;
122
+
123
+ //# sourceMappingURL=alert-actions.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert-actions.cjs.js","names":["exprRefs","AlertAction","unsupportedMessage","pageQuery","AlertMenu","_Fragment"],"sources":["../../../../src/domains/dashboards/lib/alert-actions.tsx"],"sourcesContent":["import type { DashboardQuery, DashboardWidget, DashboardWidgetView } from '@mastra/client-js';\nimport type { ReactNode } from 'react';\n\nimport { AlertAction, AlertMenu } from '../components/widget-controls';\nimport type { AlertEntry } from '../components/widget-controls';\nimport type { DashboardAlert, DashboardAlertAction, DashboardAlertRef, DashboardAlertSource } from '../widget-kind';\nimport type { ViewHeading } from './chrome';\nimport { unsupportedMessage } from './chrome';\nimport type { PendingGate } from './gate';\nimport { pageQuery } from './requests';\nimport type { DashboardPageContext } from './requests';\nimport { exprRefs } from './values';\nimport type { LabelledValue, ValueRef } from './values';\n\n/** What the open view runs against: the page's filters, or the page filters its aggregates can't apply. */\nexport type AlertSource =\n | {\n page: DashboardPageContext;\n /** The view's series, columns or KPIs, each becoming the alert's sources. */\n values: LabelledValue[];\n }\n | {\n blocked: string[];\n /** The filter bar's names for `blocked`, as the card names them. */ names?: Record<string, string>;\n };\n\nexport const UNSATISFIABLE_ALERT = \"The page's filters exclude everything this card shows.\";\n\n/** `p95` for 0.95: percentiles as people name them. */\nconst percentileName = (p: number) => `p${Math.round(p * 1000) / 10}`;\n\n/** What a ref picks from its query, beyond the query itself: `(countDistinct.threadId)`, `(p95)`. */\nfunction refDetail(ref: DashboardAlertRef) {\n const parts = [\n ref.measure,\n ref.field,\n ref.percentile === undefined ? undefined : percentileName(ref.percentile),\n ref.groups?.join(', '),\n ref.notGroups && `not ${ref.notGroups.join(', ')}`,\n ].filter((p): p is string => p !== undefined);\n return parts.length ? ` (${parts.join(', ')})` : '';\n}\n\nconst refKey = ({ query, measure, field, percentile, groups, notGroups }: ValueRef) =>\n JSON.stringify([query, measure, field, percentile, groups, notGroups]);\n\n/**\n * Each distinct ref the view's values read, labelled: by the label of a value that is just that ref\n * if there is one, else as a part of the first combined value reading it (the value's label, its\n * query and what it picks). In the order the values first read them.\n */\nexport function alertRefs(values: LabelledValue[]): { label: string; ref: ValueRef }[] {\n const own = new Map<string, string>();\n for (const { label, value } of values) {\n if ('query' in value && !own.has(refKey(value))) own.set(refKey(value), label);\n }\n const seen = new Set<string>();\n return values.flatMap(({ label, value }) =>\n exprRefs(value).flatMap(ref => {\n const key = refKey(ref);\n if (seen.has(key)) return [];\n seen.add(key);\n const { query: _query, ...rest } = ref;\n return [{ label: own.get(key) ?? `${label}: ${ref.query}${refDetail(rest)}`, ref }];\n }),\n );\n}\n\ntype Located = { label: string; ref: DashboardAlertRef; query: DashboardQuery | 'unsatisfiable' };\n\n/** Each source's action, the host's for those it was asked about, in the view's order. */\nfunction entries(located: Located[], answers: (DashboardAlertAction | undefined)[]): AlertEntry[] {\n let asked = 0;\n return located.flatMap(({ label, query }) => {\n const action: DashboardAlertAction | undefined =\n query === 'unsatisfiable' ? { disabled: UNSATISFIABLE_ALERT } : answers[asked++];\n return action ? [{ label, action }] : [];\n });\n}\n\n/**\n * The open view's Create alert button, or nothing without an `alert` host. A view the page's filters\n * block, or contradict, gets a disabled button saying so; otherwise the host decides, for the whole\n * card or per source. A source whose query the page's filters contradict is disabled on its own.\n */\nexport function alertAction(\n alert: DashboardAlert | undefined,\n widget: DashboardWidget,\n view: DashboardWidgetView,\n source: AlertSource,\n): ReactNode {\n if (!alert) return undefined;\n const name = view.label?.trim() || widget.title?.trim();\n const label = name ? `Create alert from ${name}` : 'Create alert';\n const button = (action: DashboardAlertAction) => (\n <AlertAction action={action} label={label} LinkComponent={alert.LinkComponent} />\n );\n if ('blocked' in source) return button({ disabled: unsupportedMessage(source.blocked, source.names) });\n const page = source.page;\n const queries = view.queries.map(q => pageQuery(q, page));\n const located = alertRefs(source.values).flatMap(({ label, ref }): Located[] => {\n const index = view.queries.findIndex(q => q.id === ref.query);\n const query = queries[index];\n if (query === undefined) return [];\n const { query: _query, ...rest } = ref;\n return [{ label, ref: rest, query }];\n });\n const satisfiable = located.filter((s): s is DashboardAlertSource => s.query !== 'unsatisfiable');\n const contradicted = located.length ? satisfiable.length === 0 : queries.some(q => q === 'unsatisfiable');\n if (contradicted) return button({ disabled: UNSATISFIABLE_ALERT });\n const action = alert.action({\n widget,\n view,\n queries: queries.filter(q => q !== 'unsatisfiable'),\n sources: satisfiable,\n });\n if (!Array.isArray(action)) return action && button(action);\n return <AlertMenu entries={entries(located, action)} label={label} LinkComponent={alert.LinkComponent} />;\n}\n\n/** `heading` with `action` first among its hover actions, so it sits left of the pin. */\nexport function withAction(heading: ViewHeading, action: ReactNode): ViewHeading {\n if (!action) return heading;\n return {\n ...heading,\n actions: (\n <>\n {action}\n {heading.actions}\n </>\n ),\n };\n}\n\n/** A pending card's heading: a view the page's filters block gets its disabled button, saying so. */\nexport function pendingHeading(\n heading: ViewHeading,\n gate: PendingGate,\n alert: DashboardAlert | undefined,\n widget: DashboardWidget,\n view: DashboardWidgetView,\n): ViewHeading {\n if (gate.status !== 'unsupported-filter') return heading;\n return withAction(heading, alertAction(alert, widget, view, { blocked: gate.unsupportedFields }));\n}\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from '../../../src/domains/dashboards/lib/alert-actions';
@@ -0,0 +1,118 @@
1
+ import { AlertAction, AlertMenu } from "../components/widget-controls.es.js";
2
+ import { unsupportedMessage } from "./chrome.es.js";
3
+ import { pageQuery } from "./requests.es.js";
4
+ import { exprRefs } from "./values.es.js";
5
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
+ // src/domains/dashboards/lib/alert-actions.tsx
7
+ var UNSATISFIABLE_ALERT = "The page's filters exclude everything this card shows.";
8
+ /** `p95` for 0.95: percentiles as people name them. */
9
+ var percentileName = (p) => `p${Math.round(p * 1e3) / 10}`;
10
+ /** What a ref picks from its query, beyond the query itself: `(countDistinct.threadId)`, `(p95)`. */
11
+ function refDetail(ref) {
12
+ const parts = [
13
+ ref.measure,
14
+ ref.field,
15
+ ref.percentile === void 0 ? void 0 : percentileName(ref.percentile),
16
+ ref.groups?.join(", "),
17
+ ref.notGroups && `not ${ref.notGroups.join(", ")}`
18
+ ].filter((p) => p !== void 0);
19
+ return parts.length ? ` (${parts.join(", ")})` : "";
20
+ }
21
+ var refKey = ({ query, measure, field, percentile, groups, notGroups }) => JSON.stringify([
22
+ query,
23
+ measure,
24
+ field,
25
+ percentile,
26
+ groups,
27
+ notGroups
28
+ ]);
29
+ /**
30
+ * Each distinct ref the view's values read, labelled: by the label of a value that is just that ref
31
+ * if there is one, else as a part of the first combined value reading it (the value's label, its
32
+ * query and what it picks). In the order the values first read them.
33
+ */
34
+ function alertRefs(values) {
35
+ const own = /* @__PURE__ */ new Map();
36
+ for (const { label, value } of values) if ("query" in value && !own.has(refKey(value))) own.set(refKey(value), label);
37
+ const seen = /* @__PURE__ */ new Set();
38
+ return values.flatMap(({ label, value }) => exprRefs(value).flatMap((ref) => {
39
+ const key = refKey(ref);
40
+ if (seen.has(key)) return [];
41
+ seen.add(key);
42
+ const { query: _query, ...rest } = ref;
43
+ return [{
44
+ label: own.get(key) ?? `${label}: ${ref.query}${refDetail(rest)}`,
45
+ ref
46
+ }];
47
+ }));
48
+ }
49
+ /** Each source's action, the host's for those it was asked about, in the view's order. */
50
+ function entries(located, answers) {
51
+ let asked = 0;
52
+ return located.flatMap(({ label, query }) => {
53
+ const action = query === "unsatisfiable" ? { disabled: UNSATISFIABLE_ALERT } : answers[asked++];
54
+ return action ? [{
55
+ label,
56
+ action
57
+ }] : [];
58
+ });
59
+ }
60
+ /**
61
+ * The open view's Create alert button, or nothing without an `alert` host. A view the page's filters
62
+ * block, or contradict, gets a disabled button saying so; otherwise the host decides, for the whole
63
+ * card or per source. A source whose query the page's filters contradict is disabled on its own.
64
+ */
65
+ function alertAction(alert, widget, view, source) {
66
+ if (!alert) return void 0;
67
+ const name = view.label?.trim() || widget.title?.trim();
68
+ const label = name ? `Create alert from ${name}` : "Create alert";
69
+ const button = (action) => /* @__PURE__ */ jsx(AlertAction, {
70
+ action,
71
+ label,
72
+ LinkComponent: alert.LinkComponent
73
+ });
74
+ if ("blocked" in source) return button({ disabled: unsupportedMessage(source.blocked, source.names) });
75
+ const page = source.page;
76
+ const queries = view.queries.map((q) => pageQuery(q, page));
77
+ const located = alertRefs(source.values).flatMap(({ label, ref }) => {
78
+ const index = view.queries.findIndex((q) => q.id === ref.query);
79
+ const query = queries[index];
80
+ if (query === void 0) return [];
81
+ const { query: _query, ...rest } = ref;
82
+ return [{
83
+ label,
84
+ ref: rest,
85
+ query
86
+ }];
87
+ });
88
+ const satisfiable = located.filter((s) => s.query !== "unsatisfiable");
89
+ if (located.length ? satisfiable.length === 0 : queries.some((q) => q === "unsatisfiable")) return button({ disabled: UNSATISFIABLE_ALERT });
90
+ const action = alert.action({
91
+ widget,
92
+ view,
93
+ queries: queries.filter((q) => q !== "unsatisfiable"),
94
+ sources: satisfiable
95
+ });
96
+ if (!Array.isArray(action)) return action && button(action);
97
+ return /* @__PURE__ */ jsx(AlertMenu, {
98
+ entries: entries(located, action),
99
+ label,
100
+ LinkComponent: alert.LinkComponent
101
+ });
102
+ }
103
+ /** `heading` with `action` first among its hover actions, so it sits left of the pin. */
104
+ function withAction(heading, action) {
105
+ if (!action) return heading;
106
+ return {
107
+ ...heading,
108
+ actions: /* @__PURE__ */ jsxs(Fragment, { children: [action, heading.actions] })
109
+ };
110
+ }
111
+ /** A pending card's heading: a view the page's filters block gets its disabled button, saying so. */
112
+ function pendingHeading(heading, gate, alert, widget, view) {
113
+ if (gate.status !== "unsupported-filter") return heading;
114
+ return withAction(heading, alertAction(alert, widget, view, { blocked: gate.unsupportedFields }));
115
+ }
116
+ export { UNSATISFIABLE_ALERT, alertAction, alertRefs, pendingHeading, withAction };
117
+
118
+ //# sourceMappingURL=alert-actions.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert-actions.es.js","names":["_Fragment"],"sources":["../../../../src/domains/dashboards/lib/alert-actions.tsx"],"sourcesContent":["import type { DashboardQuery, DashboardWidget, DashboardWidgetView } from '@mastra/client-js';\nimport type { ReactNode } from 'react';\n\nimport { AlertAction, AlertMenu } from '../components/widget-controls';\nimport type { AlertEntry } from '../components/widget-controls';\nimport type { DashboardAlert, DashboardAlertAction, DashboardAlertRef, DashboardAlertSource } from '../widget-kind';\nimport type { ViewHeading } from './chrome';\nimport { unsupportedMessage } from './chrome';\nimport type { PendingGate } from './gate';\nimport { pageQuery } from './requests';\nimport type { DashboardPageContext } from './requests';\nimport { exprRefs } from './values';\nimport type { LabelledValue, ValueRef } from './values';\n\n/** What the open view runs against: the page's filters, or the page filters its aggregates can't apply. */\nexport type AlertSource =\n | {\n page: DashboardPageContext;\n /** The view's series, columns or KPIs, each becoming the alert's sources. */\n values: LabelledValue[];\n }\n | {\n blocked: string[];\n /** The filter bar's names for `blocked`, as the card names them. */ names?: Record<string, string>;\n };\n\nexport const UNSATISFIABLE_ALERT = \"The page's filters exclude everything this card shows.\";\n\n/** `p95` for 0.95: percentiles as people name them. */\nconst percentileName = (p: number) => `p${Math.round(p * 1000) / 10}`;\n\n/** What a ref picks from its query, beyond the query itself: `(countDistinct.threadId)`, `(p95)`. */\nfunction refDetail(ref: DashboardAlertRef) {\n const parts = [\n ref.measure,\n ref.field,\n ref.percentile === undefined ? undefined : percentileName(ref.percentile),\n ref.groups?.join(', '),\n ref.notGroups && `not ${ref.notGroups.join(', ')}`,\n ].filter((p): p is string => p !== undefined);\n return parts.length ? ` (${parts.join(', ')})` : '';\n}\n\nconst refKey = ({ query, measure, field, percentile, groups, notGroups }: ValueRef) =>\n JSON.stringify([query, measure, field, percentile, groups, notGroups]);\n\n/**\n * Each distinct ref the view's values read, labelled: by the label of a value that is just that ref\n * if there is one, else as a part of the first combined value reading it (the value's label, its\n * query and what it picks). In the order the values first read them.\n */\nexport function alertRefs(values: LabelledValue[]): { label: string; ref: ValueRef }[] {\n const own = new Map<string, string>();\n for (const { label, value } of values) {\n if ('query' in value && !own.has(refKey(value))) own.set(refKey(value), label);\n }\n const seen = new Set<string>();\n return values.flatMap(({ label, value }) =>\n exprRefs(value).flatMap(ref => {\n const key = refKey(ref);\n if (seen.has(key)) return [];\n seen.add(key);\n const { query: _query, ...rest } = ref;\n return [{ label: own.get(key) ?? `${label}: ${ref.query}${refDetail(rest)}`, ref }];\n }),\n );\n}\n\ntype Located = { label: string; ref: DashboardAlertRef; query: DashboardQuery | 'unsatisfiable' };\n\n/** Each source's action, the host's for those it was asked about, in the view's order. */\nfunction entries(located: Located[], answers: (DashboardAlertAction | undefined)[]): AlertEntry[] {\n let asked = 0;\n return located.flatMap(({ label, query }) => {\n const action: DashboardAlertAction | undefined =\n query === 'unsatisfiable' ? { disabled: UNSATISFIABLE_ALERT } : answers[asked++];\n return action ? [{ label, action }] : [];\n });\n}\n\n/**\n * The open view's Create alert button, or nothing without an `alert` host. A view the page's filters\n * block, or contradict, gets a disabled button saying so; otherwise the host decides, for the whole\n * card or per source. A source whose query the page's filters contradict is disabled on its own.\n */\nexport function alertAction(\n alert: DashboardAlert | undefined,\n widget: DashboardWidget,\n view: DashboardWidgetView,\n source: AlertSource,\n): ReactNode {\n if (!alert) return undefined;\n const name = view.label?.trim() || widget.title?.trim();\n const label = name ? `Create alert from ${name}` : 'Create alert';\n const button = (action: DashboardAlertAction) => (\n <AlertAction action={action} label={label} LinkComponent={alert.LinkComponent} />\n );\n if ('blocked' in source) return button({ disabled: unsupportedMessage(source.blocked, source.names) });\n const page = source.page;\n const queries = view.queries.map(q => pageQuery(q, page));\n const located = alertRefs(source.values).flatMap(({ label, ref }): Located[] => {\n const index = view.queries.findIndex(q => q.id === ref.query);\n const query = queries[index];\n if (query === undefined) return [];\n const { query: _query, ...rest } = ref;\n return [{ label, ref: rest, query }];\n });\n const satisfiable = located.filter((s): s is DashboardAlertSource => s.query !== 'unsatisfiable');\n const contradicted = located.length ? satisfiable.length === 0 : queries.some(q => q === 'unsatisfiable');\n if (contradicted) return button({ disabled: UNSATISFIABLE_ALERT });\n const action = alert.action({\n widget,\n view,\n queries: queries.filter(q => q !== 'unsatisfiable'),\n sources: satisfiable,\n });\n if (!Array.isArray(action)) return action && button(action);\n return <AlertMenu entries={entries(located, action)} label={label} LinkComponent={alert.LinkComponent} />;\n}\n\n/** `heading` with `action` first among its hover actions, so it sits left of the pin. */\nexport function withAction(heading: ViewHeading, action: ReactNode): ViewHeading {\n if (!action) return heading;\n return {\n ...heading,\n actions: (\n <>\n {action}\n {heading.actions}\n </>\n ),\n };\n}\n\n/** A pending card's heading: a view the page's filters block gets its disabled button, saying so. */\nexport function pendingHeading(\n heading: ViewHeading,\n gate: PendingGate,\n alert: DashboardAlert | undefined,\n widget: DashboardWidget,\n view: DashboardWidgetView,\n): ViewHeading {\n if (gate.status !== 'unsupported-filter') return heading;\n return withAction(heading, alertAction(alert, widget, view, { blocked: gate.unsupportedFields }));\n}\n"],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_domains_dashboards_lib_requests = require("./requests.cjs.js");
3
+ // src/domains/dashboards/lib/gate.ts
4
+ var sourcesOf = (queries) => new Set(queries.map(require_domains_dashboards_lib_requests.aggregateSource));
5
+ /** Whether any of `queries` reads trace or span aggregates, so the page's gates apply to it. */
6
+ var needsAggregates = (queries) => {
7
+ const sources = sourcesOf(queries);
8
+ return sources.has("trace") || sources.has("span");
9
+ };
10
+ /**
11
+ * Whether `queries` can run on the page `env` describes, and their page context when they can.
12
+ * Metrics and scores answer every filter; trace and span aggregates wait on their gates. With
13
+ * `partial`, a page filter the aggregates can't apply doesn't hold the widget up: its views check
14
+ * `blocked` themselves (a table's tabs).
15
+ */
16
+ function widgetGate(queries, env, { partial = false } = {}) {
17
+ if (!needsAggregates(queries)) return {
18
+ status: "ready",
19
+ page: {
20
+ window: env.window,
21
+ filters: env.filters
22
+ },
23
+ blocked: () => void 0
24
+ };
25
+ const { trace, span } = env.gates;
26
+ const gatesOf = (qs) => {
27
+ const sources = sourcesOf(qs);
28
+ return [...sources.has("trace") ? [trace] : [], ...sources.has("span") ? [span] : []];
29
+ };
30
+ const blocked = (qs) => {
31
+ const fields = gatesOf(qs).flatMap((g) => g.status === "unsupported-filter" ? g.unsupportedFields : []);
32
+ return fields.length ? [...new Set(fields)] : void 0;
33
+ };
34
+ const gates = gatesOf(queries);
35
+ if (gates.some((g) => g.status === "unavailable")) return { status: "hidden" };
36
+ if (gates.some((g) => g.status === "loading")) return {
37
+ status: "pending",
38
+ gate: { status: "loading" }
39
+ };
40
+ const unsupportedFields = blocked(queries);
41
+ if (unsupportedFields && !partial) return {
42
+ status: "pending",
43
+ gate: {
44
+ status: "unsupported-filter",
45
+ unsupportedFields
46
+ }
47
+ };
48
+ return {
49
+ status: "ready",
50
+ page: {
51
+ window: env.window,
52
+ filters: env.filters,
53
+ traceWhere: trace.status === "ready" ? trace.where : void 0,
54
+ spanWhere: span.status === "ready" ? span.where : void 0
55
+ },
56
+ blocked
57
+ };
58
+ }
59
+ exports.needsAggregates = needsAggregates;
60
+ exports.widgetGate = widgetGate;
61
+
62
+ //# sourceMappingURL=gate.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate.cjs.js","names":["aggregateSource"],"sources":["../../../../src/domains/dashboards/lib/gate.ts"],"sourcesContent":["import type { DashboardQuery } from '@mastra/client-js';\nimport { aggregateSource } from './requests';\nimport type { DashboardPageContext } from './requests';\n\n/** One aggregate backend's readiness, as plain data a host can provide. */\nexport type AggregateGateInput<Where> =\n /** Capabilities are still loading. */\n | { status: 'loading' }\n /** The server can't answer these aggregates: widgets that need them are hidden. */\n | { status: 'unavailable' }\n /** A page filter has no equivalent on this backend, so its numbers would ignore it. */\n | { status: 'unsupported-filter'; unsupportedFields: string[] }\n | { status: 'ready'; where?: Where };\n\n/** What a widget needs from its page: the frozen window, the filters, and the aggregate gates. */\nexport type DashboardEnvironment = {\n window: DashboardPageContext['window'];\n filters: DashboardPageContext['filters'];\n /** What figures are compared against, e.g. `vs previous 24h`. */\n comparisonLabel: string;\n /** Display name for a project id, when the page spans several projects; ids show as they are without it. */\n projectLabel?: (projectId: string) => string;\n gates: {\n trace: AggregateGateInput<NonNullable<DashboardPageContext['traceWhere']>>;\n span: AggregateGateInput<NonNullable<DashboardPageContext['spanWhere']>>;\n };\n};\n\n/** A view that can't run yet: capabilities loading, or a page filter its aggregates can't apply. */\nexport type PendingGate = { status: 'loading' } | { status: 'unsupported-filter'; unsupportedFields: string[] };\n\n/** The page filters `queries` can't apply; `undefined` when they apply them all. */\nexport type BlockedFields = (queries: readonly DashboardQuery[]) => string[] | undefined;\n\nexport type WidgetGate =\n /** The server can't answer the widget: it renders nothing. */\n | { status: 'hidden' }\n | { status: 'pending'; gate: PendingGate }\n | { status: 'ready'; page: DashboardPageContext; blocked: BlockedFields };\n\nconst sourcesOf = (queries: readonly DashboardQuery[]) => new Set(queries.map(aggregateSource));\n\n/** Whether any of `queries` reads trace or span aggregates, so the page's gates apply to it. */\nexport const needsAggregates = (queries: readonly DashboardQuery[]) => {\n const sources = sourcesOf(queries);\n return sources.has('trace') || sources.has('span');\n};\n\n/**\n * Whether `queries` can run on the page `env` describes, and their page context when they can.\n * Metrics and scores answer every filter; trace and span aggregates wait on their gates. With\n * `partial`, a page filter the aggregates can't apply doesn't hold the widget up: its views check\n * `blocked` themselves (a table's tabs).\n */\nexport function widgetGate(\n queries: readonly DashboardQuery[],\n env: DashboardEnvironment,\n { partial = false }: { partial?: boolean } = {},\n): WidgetGate {\n if (!needsAggregates(queries)) {\n return { status: 'ready', page: { window: env.window, filters: env.filters }, blocked: () => undefined };\n }\n\n const { trace, span } = env.gates;\n const gatesOf = (qs: readonly DashboardQuery[]) => {\n const sources = sourcesOf(qs);\n return [...(sources.has('trace') ? [trace] : []), ...(sources.has('span') ? [span] : [])];\n };\n const blocked: BlockedFields = qs => {\n const fields = gatesOf(qs).flatMap(g => (g.status === 'unsupported-filter' ? g.unsupportedFields : []));\n return fields.length ? [...new Set(fields)] : undefined;\n };\n\n const gates = gatesOf(queries);\n if (gates.some(g => g.status === 'unavailable')) return { status: 'hidden' };\n if (gates.some(g => g.status === 'loading')) return { status: 'pending', gate: { status: 'loading' } };\n const unsupportedFields = blocked(queries);\n if (unsupportedFields && !partial) {\n return { status: 'pending', gate: { status: 'unsupported-filter', unsupportedFields } };\n }\n\n return {\n status: 'ready',\n page: {\n window: env.window,\n filters: env.filters,\n traceWhere: trace.status === 'ready' ? trace.where : undefined,\n spanWhere: span.status === 'ready' ? span.where : undefined,\n },\n blocked,\n };\n}\n"],"mappings":";;;AAwCA,IAAM,aAAa,YAAuC,IAAI,IAAI,QAAQ,IAAIA,wCAAAA,eAAe,CAAC;;AAG9F,IAAa,mBAAmB,YAAuC;CACrE,MAAM,UAAU,UAAU,OAAO;CACjC,OAAO,QAAQ,IAAI,OAAO,KAAK,QAAQ,IAAI,MAAM;AACnD;;;;;;;AAQA,SAAgB,WACd,SACA,KACA,EAAE,UAAU,UAAiC,CAAC,GAClC;CACZ,IAAI,CAAC,gBAAgB,OAAO,GAC1B,OAAO;EAAE,QAAQ;EAAS,MAAM;GAAE,QAAQ,IAAI;GAAQ,SAAS,IAAI;EAAQ;EAAG,eAAe,KAAA;CAAU;CAGzG,MAAM,EAAE,OAAO,SAAS,IAAI;CAC5B,MAAM,WAAW,OAAkC;EACjD,MAAM,UAAU,UAAU,EAAE;EAC5B,OAAO,CAAC,GAAI,QAAQ,IAAI,OAAO,IAAI,CAAC,KAAK,IAAI,CAAC,GAAI,GAAI,QAAQ,IAAI,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,CAAE;CAC1F;CACA,MAAM,WAAyB,OAAM;EACnC,MAAM,SAAS,QAAQ,EAAE,CAAC,CAAC,SAAQ,MAAM,EAAE,WAAW,uBAAuB,EAAE,oBAAoB,CAAC,CAAE;EACtG,OAAO,OAAO,SAAS,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,IAAI,KAAA;CAChD;CAEA,MAAM,QAAQ,QAAQ,OAAO;CAC7B,IAAI,MAAM,MAAK,MAAK,EAAE,WAAW,aAAa,GAAG,OAAO,EAAE,QAAQ,SAAS;CAC3E,IAAI,MAAM,MAAK,MAAK,EAAE,WAAW,SAAS,GAAG,OAAO;EAAE,QAAQ;EAAW,MAAM,EAAE,QAAQ,UAAU;CAAE;CACrG,MAAM,oBAAoB,QAAQ,OAAO;CACzC,IAAI,qBAAqB,CAAC,SACxB,OAAO;EAAE,QAAQ;EAAW,MAAM;GAAE,QAAQ;GAAsB;EAAkB;CAAE;CAGxF,OAAO;EACL,QAAQ;EACR,MAAM;GACJ,QAAQ,IAAI;GACZ,SAAS,IAAI;GACb,YAAY,MAAM,WAAW,UAAU,MAAM,QAAQ,KAAA;GACrD,WAAW,KAAK,WAAW,UAAU,KAAK,QAAQ,KAAA;EACpD;EACA;CACF;AACF"}
@@ -0,0 +1 @@
1
+ export * from '../../../src/domains/dashboards/lib/gate';
@@ -0,0 +1,60 @@
1
+ import { aggregateSource } from "./requests.es.js";
2
+ // src/domains/dashboards/lib/gate.ts
3
+ var sourcesOf = (queries) => new Set(queries.map(aggregateSource));
4
+ /** Whether any of `queries` reads trace or span aggregates, so the page's gates apply to it. */
5
+ var needsAggregates = (queries) => {
6
+ const sources = sourcesOf(queries);
7
+ return sources.has("trace") || sources.has("span");
8
+ };
9
+ /**
10
+ * Whether `queries` can run on the page `env` describes, and their page context when they can.
11
+ * Metrics and scores answer every filter; trace and span aggregates wait on their gates. With
12
+ * `partial`, a page filter the aggregates can't apply doesn't hold the widget up: its views check
13
+ * `blocked` themselves (a table's tabs).
14
+ */
15
+ function widgetGate(queries, env, { partial = false } = {}) {
16
+ if (!needsAggregates(queries)) return {
17
+ status: "ready",
18
+ page: {
19
+ window: env.window,
20
+ filters: env.filters
21
+ },
22
+ blocked: () => void 0
23
+ };
24
+ const { trace, span } = env.gates;
25
+ const gatesOf = (qs) => {
26
+ const sources = sourcesOf(qs);
27
+ return [...sources.has("trace") ? [trace] : [], ...sources.has("span") ? [span] : []];
28
+ };
29
+ const blocked = (qs) => {
30
+ const fields = gatesOf(qs).flatMap((g) => g.status === "unsupported-filter" ? g.unsupportedFields : []);
31
+ return fields.length ? [...new Set(fields)] : void 0;
32
+ };
33
+ const gates = gatesOf(queries);
34
+ if (gates.some((g) => g.status === "unavailable")) return { status: "hidden" };
35
+ if (gates.some((g) => g.status === "loading")) return {
36
+ status: "pending",
37
+ gate: { status: "loading" }
38
+ };
39
+ const unsupportedFields = blocked(queries);
40
+ if (unsupportedFields && !partial) return {
41
+ status: "pending",
42
+ gate: {
43
+ status: "unsupported-filter",
44
+ unsupportedFields
45
+ }
46
+ };
47
+ return {
48
+ status: "ready",
49
+ page: {
50
+ window: env.window,
51
+ filters: env.filters,
52
+ traceWhere: trace.status === "ready" ? trace.where : void 0,
53
+ spanWhere: span.status === "ready" ? span.where : void 0
54
+ },
55
+ blocked
56
+ };
57
+ }
58
+ export { needsAggregates, widgetGate };
59
+
60
+ //# sourceMappingURL=gate.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate.es.js","names":[],"sources":["../../../../src/domains/dashboards/lib/gate.ts"],"sourcesContent":["import type { DashboardQuery } from '@mastra/client-js';\nimport { aggregateSource } from './requests';\nimport type { DashboardPageContext } from './requests';\n\n/** One aggregate backend's readiness, as plain data a host can provide. */\nexport type AggregateGateInput<Where> =\n /** Capabilities are still loading. */\n | { status: 'loading' }\n /** The server can't answer these aggregates: widgets that need them are hidden. */\n | { status: 'unavailable' }\n /** A page filter has no equivalent on this backend, so its numbers would ignore it. */\n | { status: 'unsupported-filter'; unsupportedFields: string[] }\n | { status: 'ready'; where?: Where };\n\n/** What a widget needs from its page: the frozen window, the filters, and the aggregate gates. */\nexport type DashboardEnvironment = {\n window: DashboardPageContext['window'];\n filters: DashboardPageContext['filters'];\n /** What figures are compared against, e.g. `vs previous 24h`. */\n comparisonLabel: string;\n /** Display name for a project id, when the page spans several projects; ids show as they are without it. */\n projectLabel?: (projectId: string) => string;\n gates: {\n trace: AggregateGateInput<NonNullable<DashboardPageContext['traceWhere']>>;\n span: AggregateGateInput<NonNullable<DashboardPageContext['spanWhere']>>;\n };\n};\n\n/** A view that can't run yet: capabilities loading, or a page filter its aggregates can't apply. */\nexport type PendingGate = { status: 'loading' } | { status: 'unsupported-filter'; unsupportedFields: string[] };\n\n/** The page filters `queries` can't apply; `undefined` when they apply them all. */\nexport type BlockedFields = (queries: readonly DashboardQuery[]) => string[] | undefined;\n\nexport type WidgetGate =\n /** The server can't answer the widget: it renders nothing. */\n | { status: 'hidden' }\n | { status: 'pending'; gate: PendingGate }\n | { status: 'ready'; page: DashboardPageContext; blocked: BlockedFields };\n\nconst sourcesOf = (queries: readonly DashboardQuery[]) => new Set(queries.map(aggregateSource));\n\n/** Whether any of `queries` reads trace or span aggregates, so the page's gates apply to it. */\nexport const needsAggregates = (queries: readonly DashboardQuery[]) => {\n const sources = sourcesOf(queries);\n return sources.has('trace') || sources.has('span');\n};\n\n/**\n * Whether `queries` can run on the page `env` describes, and their page context when they can.\n * Metrics and scores answer every filter; trace and span aggregates wait on their gates. With\n * `partial`, a page filter the aggregates can't apply doesn't hold the widget up: its views check\n * `blocked` themselves (a table's tabs).\n */\nexport function widgetGate(\n queries: readonly DashboardQuery[],\n env: DashboardEnvironment,\n { partial = false }: { partial?: boolean } = {},\n): WidgetGate {\n if (!needsAggregates(queries)) {\n return { status: 'ready', page: { window: env.window, filters: env.filters }, blocked: () => undefined };\n }\n\n const { trace, span } = env.gates;\n const gatesOf = (qs: readonly DashboardQuery[]) => {\n const sources = sourcesOf(qs);\n return [...(sources.has('trace') ? [trace] : []), ...(sources.has('span') ? [span] : [])];\n };\n const blocked: BlockedFields = qs => {\n const fields = gatesOf(qs).flatMap(g => (g.status === 'unsupported-filter' ? g.unsupportedFields : []));\n return fields.length ? [...new Set(fields)] : undefined;\n };\n\n const gates = gatesOf(queries);\n if (gates.some(g => g.status === 'unavailable')) return { status: 'hidden' };\n if (gates.some(g => g.status === 'loading')) return { status: 'pending', gate: { status: 'loading' } };\n const unsupportedFields = blocked(queries);\n if (unsupportedFields && !partial) {\n return { status: 'pending', gate: { status: 'unsupported-filter', unsupportedFields } };\n }\n\n return {\n status: 'ready',\n page: {\n window: env.window,\n filters: env.filters,\n traceWhere: trace.status === 'ready' ? trace.where : undefined,\n spanWhere: span.status === 'ready' ? span.where : undefined,\n },\n blocked,\n };\n}\n"],"mappings":";;AAwCA,IAAM,aAAa,YAAuC,IAAI,IAAI,QAAQ,IAAI,eAAe,CAAC;;AAG9F,IAAa,mBAAmB,YAAuC;CACrE,MAAM,UAAU,UAAU,OAAO;CACjC,OAAO,QAAQ,IAAI,OAAO,KAAK,QAAQ,IAAI,MAAM;AACnD;;;;;;;AAQA,SAAgB,WACd,SACA,KACA,EAAE,UAAU,UAAiC,CAAC,GAClC;CACZ,IAAI,CAAC,gBAAgB,OAAO,GAC1B,OAAO;EAAE,QAAQ;EAAS,MAAM;GAAE,QAAQ,IAAI;GAAQ,SAAS,IAAI;EAAQ;EAAG,eAAe,KAAA;CAAU;CAGzG,MAAM,EAAE,OAAO,SAAS,IAAI;CAC5B,MAAM,WAAW,OAAkC;EACjD,MAAM,UAAU,UAAU,EAAE;EAC5B,OAAO,CAAC,GAAI,QAAQ,IAAI,OAAO,IAAI,CAAC,KAAK,IAAI,CAAC,GAAI,GAAI,QAAQ,IAAI,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,CAAE;CAC1F;CACA,MAAM,WAAyB,OAAM;EACnC,MAAM,SAAS,QAAQ,EAAE,CAAC,CAAC,SAAQ,MAAM,EAAE,WAAW,uBAAuB,EAAE,oBAAoB,CAAC,CAAE;EACtG,OAAO,OAAO,SAAS,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,IAAI,KAAA;CAChD;CAEA,MAAM,QAAQ,QAAQ,OAAO;CAC7B,IAAI,MAAM,MAAK,MAAK,EAAE,WAAW,aAAa,GAAG,OAAO,EAAE,QAAQ,SAAS;CAC3E,IAAI,MAAM,MAAK,MAAK,EAAE,WAAW,SAAS,GAAG,OAAO;EAAE,QAAQ;EAAW,MAAM,EAAE,QAAQ,UAAU;CAAE;CACrG,MAAM,oBAAoB,QAAQ,OAAO;CACzC,IAAI,qBAAqB,CAAC,SACxB,OAAO;EAAE,QAAQ;EAAW,MAAM;GAAE,QAAQ;GAAsB;EAAkB;CAAE;CAGxF,OAAO;EACL,QAAQ;EACR,MAAM;GACJ,QAAQ,IAAI;GACZ,SAAS,IAAI;GACb,YAAY,MAAM,WAAW,UAAU,MAAM,QAAQ,KAAA;GACrD,WAAW,KAAK,WAAW,UAAU,KAAK,QAAQ,KAAA;EACpD;EACA;CACF;AACF"}
@@ -0,0 +1,41 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_domains_dashboards_lib_gate = require("./gate.cjs.js");
3
+ // src/domains/dashboards/lib/plan-widget.ts
4
+ /**
5
+ * The queries the page's gates apply to with `state` picked: the kind's `gatedQueries`, or every
6
+ * view's. A kind planning no requests fetches on its own, behind its own `ViewGate`, so the planner
7
+ * never holds it up.
8
+ */
9
+ function plannedQueries({ kind, views }, state) {
10
+ if (!kind.discover && !kind.requests) return [];
11
+ return kind.gatedQueries ? kind.gatedQueries(views, state) : views.flatMap((v) => v.queries);
12
+ }
13
+ /** Whether the queries the widget shows with `state` picked can run on the page `env` describes. */
14
+ var preparedGate = (prepared, env, state) => require_domains_dashboards_lib_gate.widgetGate(plannedQueries(prepared, state), env, { partial: prepared.kind.partial });
15
+ /**
16
+ * What a widget sends, worked out from plain data and nothing else: the page `env`, the user's
17
+ * `state`, and the answers so far to its `discover` requests. Call it once without `discovered`,
18
+ * send `discover`, then again with their answers for the full `requests`; a host sending both at
19
+ * once (as `DashboardRenderer` does) re-plans as the answers arrive.
20
+ */
21
+ function planWidget(prepared, env, state, discovered = []) {
22
+ const gate = preparedGate(prepared, env, state);
23
+ if (gate.status !== "ready") return gate;
24
+ const ctx = {
25
+ widget: prepared.widget,
26
+ views: prepared.views,
27
+ page: gate.page,
28
+ blocked: gate.blocked,
29
+ state
30
+ };
31
+ return {
32
+ ...gate,
33
+ discover: prepared.kind.discover?.(ctx) ?? [],
34
+ requests: prepared.kind.requests?.(ctx, discovered) ?? []
35
+ };
36
+ }
37
+ exports.planWidget = planWidget;
38
+ exports.plannedQueries = plannedQueries;
39
+ exports.preparedGate = preparedGate;
40
+
41
+ //# sourceMappingURL=plan-widget.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-widget.cjs.js","names":["widgetGate"],"sources":["../../../../src/domains/dashboards/lib/plan-widget.ts"],"sourcesContent":["import type { WidgetPlanContext, WidgetRequests, WidgetState } from '../widget-kind';\nimport { widgetGate } from './gate';\nimport type { BlockedFields, DashboardEnvironment, PendingGate, WidgetGate } from './gate';\nimport type { PreparedWidget } from './prepare-widget';\nimport type { DashboardPageContext, DashboardResult } from './requests';\n\n/** A widget that parsed and shows at the page's scope. */\nexport type ReadyPreparedWidget = Extract<PreparedWidget, { ok: true }>;\n\nexport type WidgetPlan =\n /** The server can't answer the widget: it renders nothing and sends nothing. */\n | { status: 'hidden' }\n /** The widget waits on, or can't apply, the page's aggregate gates: it sends nothing yet. */\n | { status: 'pending'; gate: PendingGate }\n | {\n status: 'ready';\n page: DashboardPageContext;\n blocked: BlockedFields;\n /** Send first: their answers, passed back as `discovered`, decide `requests`. */\n discover: WidgetRequests;\n /** What the widget renders from; `undefined` slots aren't sent. */\n requests: WidgetRequests;\n };\n\n/**\n * The queries the page's gates apply to with `state` picked: the kind's `gatedQueries`, or every\n * view's. A kind planning no requests fetches on its own, behind its own `ViewGate`, so the planner\n * never holds it up.\n */\nexport function plannedQueries({ kind, views }: ReadyPreparedWidget, state: WidgetState) {\n if (!kind.discover && !kind.requests) return [];\n return kind.gatedQueries ? kind.gatedQueries(views, state) : views.flatMap(v => v.queries);\n}\n\n/** Whether the queries the widget shows with `state` picked can run on the page `env` describes. */\nexport const preparedGate = (\n prepared: ReadyPreparedWidget,\n env: DashboardEnvironment,\n state: WidgetState,\n): WidgetGate => widgetGate(plannedQueries(prepared, state), env, { partial: prepared.kind.partial });\n\n/**\n * What a widget sends, worked out from plain data and nothing else: the page `env`, the user's\n * `state`, and the answers so far to its `discover` requests. Call it once without `discovered`,\n * send `discover`, then again with their answers for the full `requests`; a host sending both at\n * once (as `DashboardRenderer` does) re-plans as the answers arrive.\n */\nexport function planWidget(\n prepared: ReadyPreparedWidget,\n env: DashboardEnvironment,\n state: WidgetState,\n discovered: (DashboardResult | undefined)[] = [],\n): WidgetPlan {\n const gate = preparedGate(prepared, env, state);\n if (gate.status !== 'ready') return gate;\n const ctx: WidgetPlanContext<unknown> = {\n widget: prepared.widget,\n views: prepared.views,\n page: gate.page,\n blocked: gate.blocked,\n state,\n };\n return {\n ...gate,\n discover: prepared.kind.discover?.(ctx) ?? [],\n requests: prepared.kind.requests?.(ctx, discovered) ?? [],\n };\n}\n"],"mappings":";;;;;;;;AA6BA,SAAgB,eAAe,EAAE,MAAM,SAA8B,OAAoB;CACvF,IAAI,CAAC,KAAK,YAAY,CAAC,KAAK,UAAU,OAAO,CAAC;CAC9C,OAAO,KAAK,eAAe,KAAK,aAAa,OAAO,KAAK,IAAI,MAAM,SAAQ,MAAK,EAAE,OAAO;AAC3F;;AAGA,IAAa,gBACX,UACA,KACA,UACeA,oCAAAA,WAAW,eAAe,UAAU,KAAK,GAAG,KAAK,EAAE,SAAS,SAAS,KAAK,QAAQ,CAAC;;;;;;;AAQpG,SAAgB,WACd,UACA,KACA,OACA,aAA8C,CAAC,GACnC;CACZ,MAAM,OAAO,aAAa,UAAU,KAAK,KAAK;CAC9C,IAAI,KAAK,WAAW,SAAS,OAAO;CACpC,MAAM,MAAkC;EACtC,QAAQ,SAAS;EACjB,OAAO,SAAS;EAChB,MAAM,KAAK;EACX,SAAS,KAAK;EACd;CACF;CACA,OAAO;EACL,GAAG;EACH,UAAU,SAAS,KAAK,WAAW,GAAG,KAAK,CAAC;EAC5C,UAAU,SAAS,KAAK,WAAW,KAAK,UAAU,KAAK,CAAC;CAC1D;AACF"}
@@ -0,0 +1 @@
1
+ export * from '../../../src/domains/dashboards/lib/plan-widget';
@@ -0,0 +1,38 @@
1
+ import { widgetGate } from "./gate.es.js";
2
+ // src/domains/dashboards/lib/plan-widget.ts
3
+ /**
4
+ * The queries the page's gates apply to with `state` picked: the kind's `gatedQueries`, or every
5
+ * view's. A kind planning no requests fetches on its own, behind its own `ViewGate`, so the planner
6
+ * never holds it up.
7
+ */
8
+ function plannedQueries({ kind, views }, state) {
9
+ if (!kind.discover && !kind.requests) return [];
10
+ return kind.gatedQueries ? kind.gatedQueries(views, state) : views.flatMap((v) => v.queries);
11
+ }
12
+ /** Whether the queries the widget shows with `state` picked can run on the page `env` describes. */
13
+ var preparedGate = (prepared, env, state) => widgetGate(plannedQueries(prepared, state), env, { partial: prepared.kind.partial });
14
+ /**
15
+ * What a widget sends, worked out from plain data and nothing else: the page `env`, the user's
16
+ * `state`, and the answers so far to its `discover` requests. Call it once without `discovered`,
17
+ * send `discover`, then again with their answers for the full `requests`; a host sending both at
18
+ * once (as `DashboardRenderer` does) re-plans as the answers arrive.
19
+ */
20
+ function planWidget(prepared, env, state, discovered = []) {
21
+ const gate = preparedGate(prepared, env, state);
22
+ if (gate.status !== "ready") return gate;
23
+ const ctx = {
24
+ widget: prepared.widget,
25
+ views: prepared.views,
26
+ page: gate.page,
27
+ blocked: gate.blocked,
28
+ state
29
+ };
30
+ return {
31
+ ...gate,
32
+ discover: prepared.kind.discover?.(ctx) ?? [],
33
+ requests: prepared.kind.requests?.(ctx, discovered) ?? []
34
+ };
35
+ }
36
+ export { planWidget, plannedQueries, preparedGate };
37
+
38
+ //# sourceMappingURL=plan-widget.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-widget.es.js","names":[],"sources":["../../../../src/domains/dashboards/lib/plan-widget.ts"],"sourcesContent":["import type { WidgetPlanContext, WidgetRequests, WidgetState } from '../widget-kind';\nimport { widgetGate } from './gate';\nimport type { BlockedFields, DashboardEnvironment, PendingGate, WidgetGate } from './gate';\nimport type { PreparedWidget } from './prepare-widget';\nimport type { DashboardPageContext, DashboardResult } from './requests';\n\n/** A widget that parsed and shows at the page's scope. */\nexport type ReadyPreparedWidget = Extract<PreparedWidget, { ok: true }>;\n\nexport type WidgetPlan =\n /** The server can't answer the widget: it renders nothing and sends nothing. */\n | { status: 'hidden' }\n /** The widget waits on, or can't apply, the page's aggregate gates: it sends nothing yet. */\n | { status: 'pending'; gate: PendingGate }\n | {\n status: 'ready';\n page: DashboardPageContext;\n blocked: BlockedFields;\n /** Send first: their answers, passed back as `discovered`, decide `requests`. */\n discover: WidgetRequests;\n /** What the widget renders from; `undefined` slots aren't sent. */\n requests: WidgetRequests;\n };\n\n/**\n * The queries the page's gates apply to with `state` picked: the kind's `gatedQueries`, or every\n * view's. A kind planning no requests fetches on its own, behind its own `ViewGate`, so the planner\n * never holds it up.\n */\nexport function plannedQueries({ kind, views }: ReadyPreparedWidget, state: WidgetState) {\n if (!kind.discover && !kind.requests) return [];\n return kind.gatedQueries ? kind.gatedQueries(views, state) : views.flatMap(v => v.queries);\n}\n\n/** Whether the queries the widget shows with `state` picked can run on the page `env` describes. */\nexport const preparedGate = (\n prepared: ReadyPreparedWidget,\n env: DashboardEnvironment,\n state: WidgetState,\n): WidgetGate => widgetGate(plannedQueries(prepared, state), env, { partial: prepared.kind.partial });\n\n/**\n * What a widget sends, worked out from plain data and nothing else: the page `env`, the user's\n * `state`, and the answers so far to its `discover` requests. Call it once without `discovered`,\n * send `discover`, then again with their answers for the full `requests`; a host sending both at\n * once (as `DashboardRenderer` does) re-plans as the answers arrive.\n */\nexport function planWidget(\n prepared: ReadyPreparedWidget,\n env: DashboardEnvironment,\n state: WidgetState,\n discovered: (DashboardResult | undefined)[] = [],\n): WidgetPlan {\n const gate = preparedGate(prepared, env, state);\n if (gate.status !== 'ready') return gate;\n const ctx: WidgetPlanContext<unknown> = {\n widget: prepared.widget,\n views: prepared.views,\n page: gate.page,\n blocked: gate.blocked,\n state,\n };\n return {\n ...gate,\n discover: prepared.kind.discover?.(ctx) ?? [],\n requests: prepared.kind.requests?.(ctx, discovered) ?? [],\n };\n}\n"],"mappings":";;;;;;;AA6BA,SAAgB,eAAe,EAAE,MAAM,SAA8B,OAAoB;CACvF,IAAI,CAAC,KAAK,YAAY,CAAC,KAAK,UAAU,OAAO,CAAC;CAC9C,OAAO,KAAK,eAAe,KAAK,aAAa,OAAO,KAAK,IAAI,MAAM,SAAQ,MAAK,EAAE,OAAO;AAC3F;;AAGA,IAAa,gBACX,UACA,KACA,UACe,WAAW,eAAe,UAAU,KAAK,GAAG,KAAK,EAAE,SAAS,SAAS,KAAK,QAAQ,CAAC;;;;;;;AAQpG,SAAgB,WACd,UACA,KACA,OACA,aAA8C,CAAC,GACnC;CACZ,MAAM,OAAO,aAAa,UAAU,KAAK,KAAK;CAC9C,IAAI,KAAK,WAAW,SAAS,OAAO;CACpC,MAAM,MAAkC;EACtC,QAAQ,SAAS;EACjB,OAAO,SAAS;EAChB,MAAM,KAAK;EACX,SAAS,KAAK;EACd;CACF;CACA,OAAO;EACL,GAAG;EACH,UAAU,SAAS,KAAK,WAAW,GAAG,KAAK,CAAC;EAC5C,UAAU,SAAS,KAAK,WAAW,KAAK,UAAU,KAAK,CAAC;CAC1D;AACF"}
@@ -37,6 +37,35 @@ function valuesArgs(query, page, window) {
37
37
  }
38
38
  };
39
39
  }
40
+ /**
41
+ * The query with the page's filter bar ANDed in, as `buildRequest` applies it, but without the time
42
+ * window: trace and span predicates joined with `and`, metrics and scores filters intersected.
43
+ * `'unsatisfiable'` when the filters contradict, so nothing can match.
44
+ */
45
+ function pageQuery(query, page) {
46
+ if (query.source === "traceAggregate") {
47
+ const where = andTrace(query.where, page.traceWhere);
48
+ return where ? {
49
+ ...query,
50
+ where
51
+ } : query;
52
+ }
53
+ if (query.source === "spanAggregate") {
54
+ const where = andSpan(query.where, page.spanWhere);
55
+ return where ? {
56
+ ...query,
57
+ where
58
+ } : query;
59
+ }
60
+ const combined = require_domains_dashboards_lib_filters.intersectFilters(page.filters, query.filters);
61
+ if (combined === void 0) return "unsatisfiable";
62
+ const { timestamp: _timestamp, ...filters } = combined;
63
+ const { filters: _own, ...rest } = query;
64
+ return Object.keys(filters).length > 0 ? {
65
+ ...rest,
66
+ filters
67
+ } : rest;
68
+ }
40
69
  /** A bucketed request's interval: its own, else the kind's, else the bar charts' for `window`. */
41
70
  function bucketOf(own, interval, window) {
42
71
  return own ?? interval ?? require_domains_metrics_lib_metrics_buckets.bucketPlan(window.start, window.end).interval;
@@ -203,6 +232,18 @@ function emptyAnswer(method) {
203
232
  method,
204
233
  data: { series: [] }
205
234
  };
235
+ case "listScores": return {
236
+ method,
237
+ data: {
238
+ scores: [],
239
+ pagination: {
240
+ total: 0,
241
+ page: 0,
242
+ perPage: 0,
243
+ hasMore: false
244
+ }
245
+ }
246
+ };
206
247
  }
207
248
  }
208
249
  /** Runs a request on the client; an unsatisfiable one answers empty without a call. */
@@ -249,6 +290,10 @@ async function sendRequest(client, request) {
249
290
  method: request.method,
250
291
  data: await client.getScorePercentiles(request.args)
251
292
  };
293
+ case "listScores": return {
294
+ method: request.method,
295
+ data: await client.listScores(request.args)
296
+ };
252
297
  }
253
298
  }
254
299
  /**
@@ -272,6 +317,8 @@ var aggregateSource = (query) => query.source === "traceAggregate" ? "trace" : q
272
317
  exports.aggregateSource = aggregateSource;
273
318
  exports.buildPreviousRequest = buildPreviousRequest;
274
319
  exports.buildRequest = buildRequest;
320
+ exports.emptyAnswer = emptyAnswer;
321
+ exports.pageQuery = pageQuery;
275
322
  exports.requestKey = requestKey;
276
323
  exports.sendRequest = sendRequest;
277
324
  exports.sendsPreviousRequest = sendsPreviousRequest;