@mastra/playground-ui 41.1.0-alpha.2 → 42.0.0-alpha.13

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 (275) hide show
  1. package/CHANGELOG.md +114 -0
  2. package/dist/Card-BjFMX3pD.js +96 -0
  3. package/dist/Card-BjFMX3pD.js.map +1 -0
  4. package/dist/Card-WU2qkiHB.cjs +123 -0
  5. package/dist/Card-WU2qkiHB.cjs.map +1 -0
  6. package/dist/{Txt-p33XTnu8.js → Txt-Df42XG5p.js} +3 -3
  7. package/dist/Txt-Df42XG5p.js.map +1 -0
  8. package/dist/{Txt-BT8_EkuZ.cjs → Txt-I5lK8zy7.cjs} +3 -3
  9. package/dist/Txt-I5lK8zy7.cjs.map +1 -0
  10. package/dist/{buttons-group-b6an6uao.js → buttons-group-DJh4wnMs.js} +4 -4
  11. package/dist/{buttons-group-b6an6uao.js.map → buttons-group-DJh4wnMs.js.map} +1 -1
  12. package/dist/{buttons-group-C0fJastT.cjs → buttons-group-Dw8Wu4sj.cjs} +4 -4
  13. package/dist/{buttons-group-C0fJastT.cjs.map → buttons-group-Dw8Wu4sj.cjs.map} +1 -1
  14. package/dist/components/Avatar.cjs.js +1 -1
  15. package/dist/components/Avatar.es.js +1 -1
  16. package/dist/components/Breadcrumb.cjs.js +2 -2
  17. package/dist/components/Breadcrumb.cjs.js.map +1 -1
  18. package/dist/components/Breadcrumb.es.js +2 -2
  19. package/dist/components/Breadcrumb.es.js.map +1 -1
  20. package/dist/components/ButtonsGroup.cjs.js +1 -1
  21. package/dist/components/ButtonsGroup.es.js +1 -1
  22. package/dist/components/Card.cjs.js +8 -84
  23. package/dist/components/Card.cjs.js.map +1 -1
  24. package/dist/components/Card.es.js +1 -63
  25. package/dist/components/Card.es.js.map +1 -1
  26. package/dist/components/ClampedText.cjs.js +51 -0
  27. package/dist/components/ClampedText.cjs.js.map +1 -0
  28. package/dist/components/ClampedText.d.ts +2 -0
  29. package/dist/components/ClampedText.es.js +47 -0
  30. package/dist/components/ClampedText.es.js.map +1 -0
  31. package/dist/components/Composer.cjs.js +2 -2
  32. package/dist/components/Composer.cjs.js.map +1 -1
  33. package/dist/components/Composer.es.js +2 -2
  34. package/dist/components/Composer.es.js.map +1 -1
  35. package/dist/components/ContentBlocks.cjs.js.map +1 -1
  36. package/dist/components/ContentBlocks.es.js.map +1 -1
  37. package/dist/components/DataCodeSection.cjs.js +1 -1
  38. package/dist/components/DataCodeSection.es.js +1 -1
  39. package/dist/components/DataDetailsPanel.cjs.js +4 -4
  40. package/dist/components/DataDetailsPanel.cjs.js.map +1 -1
  41. package/dist/components/DataDetailsPanel.es.js +4 -4
  42. package/dist/components/DataDetailsPanel.es.js.map +1 -1
  43. package/dist/components/DataPanel.cjs.js +1 -1
  44. package/dist/components/DataPanel.es.js +1 -1
  45. package/dist/components/DateTimePicker.cjs.js +1 -1
  46. package/dist/components/DateTimePicker.es.js +1 -1
  47. package/dist/components/Drawer.cjs.js +1 -1
  48. package/dist/components/Drawer.es.js +1 -1
  49. package/dist/components/Entity.cjs.js +1 -1
  50. package/dist/components/Entity.es.js +1 -1
  51. package/dist/components/EntityHeader.cjs.js +1 -1
  52. package/dist/components/EntityHeader.es.js +1 -1
  53. package/dist/components/Entry.cjs.js +1 -1
  54. package/dist/components/Entry.es.js +1 -1
  55. package/dist/components/EnvironmentVariablesEditor.cjs.js +2 -2
  56. package/dist/components/EnvironmentVariablesEditor.es.js +2 -2
  57. package/dist/components/FormFieldBlocks.cjs.js +4 -4
  58. package/dist/components/FormFieldBlocks.es.js +4 -4
  59. package/dist/components/Header.cjs.js +1 -1
  60. package/dist/components/Header.es.js +1 -1
  61. package/dist/components/JSONSchemaForm.cjs.js +2 -2
  62. package/dist/components/JSONSchemaForm.es.js +2 -2
  63. package/dist/components/ListSearch.cjs.js +1 -1
  64. package/dist/components/ListSearch.es.js +1 -1
  65. package/dist/components/MainContent.cjs.js +3 -3
  66. package/dist/components/MainContent.cjs.js.map +1 -1
  67. package/dist/components/MainContent.es.js +3 -3
  68. package/dist/components/MainContent.es.js.map +1 -1
  69. package/dist/components/MainSidebar.cjs.js +1 -1
  70. package/dist/components/MainSidebar.es.js +1 -1
  71. package/dist/components/PrevNextNav.cjs.js +1 -1
  72. package/dist/components/PrevNextNav.es.js +1 -1
  73. package/dist/components/PropertyFilter.cjs.js +1 -1
  74. package/dist/components/PropertyFilter.es.js +2 -2
  75. package/dist/components/SankeyChart.cjs.js +68 -75
  76. package/dist/components/SankeyChart.cjs.js.map +1 -1
  77. package/dist/components/SankeyChart.es.js +60 -71
  78. package/dist/components/SankeyChart.es.js.map +1 -1
  79. package/dist/components/SideDialog.cjs.js +2 -2
  80. package/dist/components/SideDialog.es.js +2 -2
  81. package/dist/components/Table.cjs.js +1 -1
  82. package/dist/components/Table.es.js +1 -1
  83. package/dist/components/ThreadList.cjs.js +1 -1
  84. package/dist/components/ThreadList.es.js +1 -1
  85. package/dist/components/Toaster.cjs.js +1 -0
  86. package/dist/components/Toaster.cjs.js.map +1 -1
  87. package/dist/components/Toaster.es.js +1 -1
  88. package/dist/components/Truncate.cjs.js +1 -1
  89. package/dist/components/Truncate.es.js +1 -1
  90. package/dist/components/Txt.cjs.js +1 -1
  91. package/dist/components/Txt.es.js +1 -1
  92. package/dist/components/ai/ask-user.cjs.js +147 -0
  93. package/dist/components/ai/ask-user.cjs.js.map +1 -0
  94. package/dist/components/ai/ask-user.d.ts +2 -0
  95. package/dist/components/ai/ask-user.es.js +136 -0
  96. package/dist/components/ai/ask-user.es.js.map +1 -0
  97. package/dist/components/ai/plan.cjs.js +1 -1
  98. package/dist/components/ai/plan.es.js +1 -1
  99. package/dist/components/ai/task-list.cjs.js +90 -0
  100. package/dist/components/ai/task-list.cjs.js.map +1 -0
  101. package/dist/components/ai/task-list.d.ts +2 -0
  102. package/dist/components/ai/task-list.es.js +80 -0
  103. package/dist/components/ai/task-list.es.js.map +1 -0
  104. package/dist/{data-code-section-Crs5wpnX.js → data-code-section-BjqDCzy3.js} +3 -3
  105. package/dist/{data-code-section-Crs5wpnX.js.map → data-code-section-BjqDCzy3.js.map} +1 -1
  106. package/dist/{data-code-section-DYy_n9I1.cjs → data-code-section-D0BwpqvV.cjs} +3 -3
  107. package/dist/{data-code-section-DYy_n9I1.cjs.map → data-code-section-D0BwpqvV.cjs.map} +1 -1
  108. package/dist/{data-panel-Otc4qdKL.js → data-panel-BGpCzY5K.js} +3 -3
  109. package/dist/{data-panel-Otc4qdKL.js.map → data-panel-BGpCzY5K.js.map} +1 -1
  110. package/dist/{data-panel-CAbxKoPF.cjs → data-panel-CsonAnlK.cjs} +3 -3
  111. package/dist/{data-panel-CAbxKoPF.cjs.map → data-panel-CsonAnlK.cjs.map} +1 -1
  112. package/dist/domains/logs/components/log-details-view.cjs.js +1 -1
  113. package/dist/domains/logs/components/log-details-view.es.js +1 -1
  114. package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
  115. package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
  116. package/dist/domains/memory/components/memory-studio-panel.cjs.js +1 -1
  117. package/dist/domains/memory/components/memory-studio-panel.es.js +1 -1
  118. package/dist/domains/traces/components/span-data-panel-view.cjs.js +2 -2
  119. package/dist/domains/traces/components/span-data-panel-view.es.js +2 -2
  120. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +2 -2
  121. package/dist/domains/traces/components/trace-data-panel-view.es.js +2 -2
  122. package/dist/domains/traces/components/traces-toolbar.cjs.js +1 -1
  123. package/dist/domains/traces/components/traces-toolbar.es.js +1 -1
  124. package/dist/{drawer-DtEZQBXj.cjs → drawer-DvuUmhic.cjs} +3 -3
  125. package/dist/{drawer-DtEZQBXj.cjs.map → drawer-DvuUmhic.cjs.map} +1 -1
  126. package/dist/{drawer-Djerm1Lo.js → drawer-Dyx25o_o.js} +3 -3
  127. package/dist/{drawer-Djerm1Lo.js.map → drawer-Dyx25o_o.js.map} +1 -1
  128. package/dist/ee/signals/components/signals-empty-state.cjs.js +152 -0
  129. package/dist/ee/signals/components/signals-empty-state.cjs.js.map +1 -0
  130. package/dist/ee/signals/components/signals-empty-state.d.ts +2 -0
  131. package/dist/ee/signals/components/signals-empty-state.es.js +148 -0
  132. package/dist/ee/signals/components/signals-empty-state.es.js.map +1 -0
  133. package/dist/ee/signals/components/signals-overview-page.cjs.js +3 -201
  134. package/dist/ee/signals/components/signals-overview-page.cjs.js.map +1 -1
  135. package/dist/ee/signals/components/signals-overview-page.es.js +5 -201
  136. package/dist/ee/signals/components/signals-overview-page.es.js.map +1 -1
  137. package/dist/ee/signals/components.cjs.js +0 -10
  138. package/dist/ee/signals/components.cjs.js.map +1 -1
  139. package/dist/ee/signals/components.es.js +1 -3
  140. package/dist/ee/signals/components.es.js.map +1 -1
  141. package/dist/ee/signals/signal-colors.cjs.js +28 -0
  142. package/dist/ee/signals/signal-colors.cjs.js.map +1 -0
  143. package/dist/ee/signals/signal-colors.d.ts +2 -0
  144. package/dist/ee/signals/signal-colors.es.js +23 -0
  145. package/dist/ee/signals/signal-colors.es.js.map +1 -0
  146. package/dist/ee/signals.cjs.js +3 -27
  147. package/dist/ee/signals.cjs.js.map +1 -1
  148. package/dist/ee/signals.es.js +2 -7
  149. package/dist/ee/signals.es.js.map +1 -1
  150. package/dist/{field-block-CC_EYPWe.js → field-block-CBdMcT-i.js} +2 -2
  151. package/dist/{field-block-CC_EYPWe.js.map → field-block-CBdMcT-i.js.map} +1 -1
  152. package/dist/{field-block-Dx-fDIP9.cjs → field-block-CEbnWKc0.cjs} +2 -2
  153. package/dist/{field-block-Dx-fDIP9.cjs.map → field-block-CEbnWKc0.cjs.map} +1 -1
  154. package/dist/hooks/use-is-clamped.cjs.js +36 -0
  155. package/dist/hooks/use-is-clamped.cjs.js.map +1 -0
  156. package/dist/hooks/use-is-clamped.d.ts +2 -0
  157. package/dist/hooks/use-is-clamped.es.js +32 -0
  158. package/dist/hooks/use-is-clamped.es.js.map +1 -0
  159. package/dist/primitives/portal-container.cjs.js.map +1 -1
  160. package/dist/primitives/portal-container.es.js.map +1 -1
  161. package/dist/{property-filter-applied-Ca0UdU5P.js → property-filter-applied-Bs1Ck691.js} +2 -2
  162. package/dist/{property-filter-applied-Ca0UdU5P.js.map → property-filter-applied-Bs1Ck691.js.map} +1 -1
  163. package/dist/{property-filter-applied-BYKTDczo.cjs → property-filter-applied-DgmkZVbl.cjs} +2 -2
  164. package/dist/{property-filter-applied-BYKTDczo.cjs.map → property-filter-applied-DgmkZVbl.cjs.map} +1 -1
  165. package/dist/resize/panel-drawer.cjs.js +1 -1
  166. package/dist/resize/panel-drawer.es.js +1 -1
  167. package/dist/sankeyColor-CQ5nkgtL.js +48 -0
  168. package/dist/sankeyColor-CQ5nkgtL.js.map +1 -0
  169. package/dist/sankeyColor-DONd5cg9.cjs +53 -0
  170. package/dist/sankeyColor-DONd5cg9.cjs.map +1 -0
  171. package/dist/{search-field-block-e9qthuwY.js → search-field-block-CMoQ9fjl.js} +4 -3
  172. package/dist/search-field-block-CMoQ9fjl.js.map +1 -0
  173. package/dist/{search-field-block-C4njnmUx.cjs → search-field-block-DmqZsrrI.cjs} +4 -3
  174. package/dist/search-field-block-DmqZsrrI.cjs.map +1 -0
  175. package/dist/{select-field-block-dq1ZmZVb.cjs → select-field-block-BI_NZs2R.cjs} +2 -2
  176. package/dist/{select-field-block-dq1ZmZVb.cjs.map → select-field-block-BI_NZs2R.cjs.map} +1 -1
  177. package/dist/{select-field-block-BWuqWh4k.js → select-field-block-BSlngEHK.js} +2 -2
  178. package/dist/{select-field-block-BWuqWh4k.js.map → select-field-block-BSlngEHK.js.map} +1 -1
  179. package/dist/signals-empty-state.css +54 -0
  180. package/dist/src/ds/components/Card/Card.d.ts +15 -2
  181. package/dist/src/ds/components/Card/index.d.ts +2 -2
  182. package/dist/src/ds/components/ClampedText/clamped-text.d.ts +20 -0
  183. package/dist/src/ds/components/ClampedText/clamped-text.stories.d.ts +8 -0
  184. package/dist/src/ds/components/ClampedText/index.d.ts +1 -0
  185. package/dist/src/ds/components/Composer/composer.d.ts +5 -1
  186. package/dist/src/ds/components/Composer/index.d.ts +1 -1
  187. package/dist/src/ds/components/SankeyChart/index.d.ts +2 -1
  188. package/dist/src/ds/components/SankeyChart/sankey-chart-utils.d.ts +2 -1
  189. package/dist/src/ds/components/SankeyChart/sankey-chart.d.ts +4 -2
  190. package/dist/src/ds/components/SankeyChart/sankey-context.d.ts +3 -1
  191. package/dist/src/ds/components/Toaster/index.d.ts +1 -1
  192. package/dist/src/ds/components/Txt/Txt.d.ts +3 -2
  193. package/dist/src/ds/components/ai/ask-user/ask-user.d.ts +42 -0
  194. package/dist/src/ds/components/ai/ask-user/ask-user.stories.d.ts +11 -0
  195. package/dist/src/ds/components/ai/ask-user/index.d.ts +1 -0
  196. package/dist/src/ds/components/ai/task-list/index.d.ts +1 -0
  197. package/dist/src/ds/components/ai/task-list/task-list.d.ts +31 -0
  198. package/dist/src/ds/components/ai/task-list/task-list.stories.d.ts +9 -0
  199. package/dist/src/ee/signals/components/index.d.ts +0 -2
  200. package/dist/src/ee/signals/components/signals-empty-state.d.ts +7 -0
  201. package/dist/src/ee/signals/components/signals-overview-page.d.ts +2 -22
  202. package/dist/src/ee/signals/index.d.ts +1 -4
  203. package/dist/src/ee/signals/signal-colors.d.ts +7 -0
  204. package/dist/src/hooks/use-is-clamped.d.ts +11 -0
  205. package/dist/style.css +289 -40
  206. package/dist/{text-field-block-CpKq1NCV.cjs → text-field-block-BUvxjW9m.cjs} +2 -2
  207. package/dist/{text-field-block-CpKq1NCV.cjs.map → text-field-block-BUvxjW9m.cjs.map} +1 -1
  208. package/dist/{text-field-block-CrFqgdKx.js → text-field-block-DxtR1Ft4.js} +2 -2
  209. package/dist/{text-field-block-CrFqgdKx.js.map → text-field-block-DxtR1Ft4.js.map} +1 -1
  210. package/package.json +10 -10
  211. package/theme.css +1 -0
  212. package/dist/Txt-BT8_EkuZ.cjs.map +0 -1
  213. package/dist/Txt-p33XTnu8.js.map +0 -1
  214. package/dist/ee/signals/components/signal-details-page.cjs.js +0 -288
  215. package/dist/ee/signals/components/signal-details-page.cjs.js.map +0 -1
  216. package/dist/ee/signals/components/signal-details-page.d.ts +0 -2
  217. package/dist/ee/signals/components/signal-details-page.es.js +0 -280
  218. package/dist/ee/signals/components/signal-details-page.es.js.map +0 -1
  219. package/dist/ee/signals/components/signals-entity-filter.cjs.js +0 -27
  220. package/dist/ee/signals/components/signals-entity-filter.cjs.js.map +0 -1
  221. package/dist/ee/signals/components/signals-entity-filter.d.ts +0 -2
  222. package/dist/ee/signals/components/signals-entity-filter.es.js +0 -23
  223. package/dist/ee/signals/components/signals-entity-filter.es.js.map +0 -1
  224. package/dist/ee/signals/hooks/use-entity-learning-config.cjs.js +0 -35
  225. package/dist/ee/signals/hooks/use-entity-learning-config.cjs.js.map +0 -1
  226. package/dist/ee/signals/hooks/use-entity-learning-config.d.ts +0 -2
  227. package/dist/ee/signals/hooks/use-entity-learning-config.es.js +0 -31
  228. package/dist/ee/signals/hooks/use-entity-learning-config.es.js.map +0 -1
  229. package/dist/ee/signals/hooks/use-entity-learning.cjs.js +0 -96
  230. package/dist/ee/signals/hooks/use-entity-learning.cjs.js.map +0 -1
  231. package/dist/ee/signals/hooks/use-entity-learning.d.ts +0 -2
  232. package/dist/ee/signals/hooks/use-entity-learning.es.js +0 -84
  233. package/dist/ee/signals/hooks/use-entity-learning.es.js.map +0 -1
  234. package/dist/ee/signals/hooks.cjs.js +0 -20
  235. package/dist/ee/signals/hooks.cjs.js.map +0 -1
  236. package/dist/ee/signals/hooks.d.ts +0 -2
  237. package/dist/ee/signals/hooks.es.js +0 -3
  238. package/dist/ee/signals/hooks.es.js.map +0 -1
  239. package/dist/ee/signals/services/entity-learning-service.cjs.js +0 -88
  240. package/dist/ee/signals/services/entity-learning-service.cjs.js.map +0 -1
  241. package/dist/ee/signals/services/entity-learning-service.d.ts +0 -2
  242. package/dist/ee/signals/services/entity-learning-service.es.js +0 -84
  243. package/dist/ee/signals/services/entity-learning-service.es.js.map +0 -1
  244. package/dist/ee/signals/services/entity-learning-types.cjs.js +0 -3
  245. package/dist/ee/signals/services/entity-learning-types.cjs.js.map +0 -1
  246. package/dist/ee/signals/services/entity-learning-types.d.ts +0 -1
  247. package/dist/ee/signals/services/entity-learning-types.es.js +0 -2
  248. package/dist/ee/signals/services/entity-learning-types.es.js.map +0 -1
  249. package/dist/ee/signals/services.cjs.js +0 -10
  250. package/dist/ee/signals/services.cjs.js.map +0 -1
  251. package/dist/ee/signals/services.d.ts +0 -2
  252. package/dist/ee/signals/services.es.js +0 -2
  253. package/dist/ee/signals/services.es.js.map +0 -1
  254. package/dist/ee/signals/signals-data.cjs.js +0 -53
  255. package/dist/ee/signals/signals-data.cjs.js.map +0 -1
  256. package/dist/ee/signals/signals-data.d.ts +0 -2
  257. package/dist/ee/signals/signals-data.es.js +0 -48
  258. package/dist/ee/signals/signals-data.es.js.map +0 -1
  259. package/dist/ee/signals/types.cjs.js +0 -3
  260. package/dist/ee/signals/types.cjs.js.map +0 -1
  261. package/dist/ee/signals/types.d.ts +0 -1
  262. package/dist/ee/signals/types.es.js +0 -2
  263. package/dist/ee/signals/types.es.js.map +0 -1
  264. package/dist/search-field-block-C4njnmUx.cjs.map +0 -1
  265. package/dist/search-field-block-e9qthuwY.js.map +0 -1
  266. package/dist/src/ee/signals/components/signal-details-page.d.ts +0 -40
  267. package/dist/src/ee/signals/components/signals-entity-filter.d.ts +0 -13
  268. package/dist/src/ee/signals/hooks/index.d.ts +0 -2
  269. package/dist/src/ee/signals/hooks/use-entity-learning-config.d.ts +0 -14
  270. package/dist/src/ee/signals/hooks/use-entity-learning.d.ts +0 -24
  271. package/dist/src/ee/signals/services/entity-learning-service.d.ts +0 -43
  272. package/dist/src/ee/signals/services/entity-learning-types.d.ts +0 -123
  273. package/dist/src/ee/signals/services/index.d.ts +0 -2
  274. package/dist/src/ee/signals/signals-data.d.ts +0 -10
  275. package/dist/src/ee/signals/types.d.ts +0 -15
@@ -0,0 +1,148 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { CpuIcon } from 'lucide-react';
3
+ import { B as Button } from '../../../Button-Dh5CZ6Ir.js';
4
+ import { C as Card } from '../../../Card-BjFMX3pD.js';
5
+ import { n as nodeColor } from '../../../sankeyColor-CQ5nkgtL.js';
6
+ import { getSignalHue } from '../signal-colors.es.js';
7
+
8
+ import '../../../signals-empty-state.css';const signalDefinitions = [
9
+ { label: "Goal", description: "What the user is trying to achieve or have completed." },
10
+ { label: "Sentiment", description: "The user's emotional state or attitude." },
11
+ {
12
+ label: "Behavior",
13
+ description: "The entity's observable actions and patterns, including tool use, omissions, retries, failures, and recovery."
14
+ },
15
+ { label: "Outcome", description: "The final completed, unresolved, or blocked state." }
16
+ ];
17
+ const signalLabels = signalDefinitions.map((signal) => signal.label);
18
+ const traceRows = [
19
+ ["chat.completion", "1.2s"],
20
+ ["tool.search_docs", "340ms"],
21
+ ["workflow.support", "2.8s"]
22
+ ];
23
+ const signalStyle = (label) => ({
24
+ color: nodeColor(getSignalHue(label))
25
+ });
26
+ const PipelineConnector = () => /* @__PURE__ */ jsxs("div", { "aria-hidden": "true", className: "relative hidden h-full items-center lg:flex", children: [
27
+ /* @__PURE__ */ jsx("div", { className: "w-full border-t border-dashed border-border1" }),
28
+ /* @__PURE__ */ jsx("span", { className: "signals-pipeline-connector absolute left-1/2 size-2.5 -translate-x-1/2 rounded-full bg-positive1 shadow-[0_0_12px_currentColor]" })
29
+ ] });
30
+ const SignalsEmptyState = ({ actionSlot, LinkComponent = "a" }) => {
31
+ return /* @__PURE__ */ jsx("section", { className: "min-h-full w-full bg-surface1 p-6 md:px-10 lg:px-12 xl:px-[4.375rem]", children: /* @__PURE__ */ jsxs("div", { className: "max-w-260 mx-auto w-full", children: [
32
+ /* @__PURE__ */ jsx("header", { children: /* @__PURE__ */ jsx("h1", { className: "text-header-xl font-medium tracking-tight text-neutral6", children: "Understand what drives every agent interaction" }) }),
33
+ /* @__PURE__ */ jsxs(
34
+ "div",
35
+ {
36
+ "aria-label": "Signals analysis pipeline",
37
+ className: "mt-14 grid gap-4 lg:grid-cols-[17.5rem_4.5rem_17.5rem_4.5rem_minmax(0,1fr)] lg:gap-0",
38
+ role: "list",
39
+ children: [
40
+ /* @__PURE__ */ jsxs("article", { className: "h-50 p-5", role: "listitem", children: [
41
+ /* @__PURE__ */ jsx("h2", { className: "text-lg font-semibold text-neutral6", children: "Traces" }),
42
+ /* @__PURE__ */ jsx("p", { className: "mt-0.5 text-xs text-neutral3", children: "Every agent interaction" }),
43
+ /* @__PURE__ */ jsx("p", { className: "mt-5 font-mono text-[0.5625rem] tracking-[0.24em] text-neutral2 uppercase", children: "Input" }),
44
+ /* @__PURE__ */ jsx("div", { className: "mt-2.5 space-y-2", children: traceRows.map(([name, duration]) => /* @__PURE__ */ jsxs(
45
+ "div",
46
+ {
47
+ className: "flex items-center justify-between rounded border border-border1 bg-surface3 px-3 py-1.5 font-mono text-ui-xs",
48
+ children: [
49
+ /* @__PURE__ */ jsx("span", { className: "text-neutral4", children: name }),
50
+ /* @__PURE__ */ jsx("span", { className: "text-neutral2", children: duration })
51
+ ]
52
+ },
53
+ name
54
+ )) })
55
+ ] }),
56
+ /* @__PURE__ */ jsx(PipelineConnector, {}),
57
+ /* @__PURE__ */ jsxs(
58
+ Card,
59
+ {
60
+ as: "article",
61
+ className: "h-50 flex flex-col items-center p-5 text-center",
62
+ elevation: "elevated",
63
+ role: "listitem",
64
+ children: [
65
+ /* @__PURE__ */ jsx("h2", { className: "text-lg font-semibold text-neutral6", children: "Mastra Engine" }),
66
+ /* @__PURE__ */ jsx("p", { className: "mt-0.5 text-xs text-neutral3", children: "Clusters recurring patterns" }),
67
+ /* @__PURE__ */ jsxs("div", { "aria-hidden": "true", className: "relative mt-5 flex size-20 items-center justify-center", children: [
68
+ /* @__PURE__ */ jsx("span", { className: "signals-engine-pulse absolute size-20 rounded-full border border-positive1/15" }),
69
+ /* @__PURE__ */ jsx("span", { className: "absolute size-14 rounded-full border border-positive1/25" }),
70
+ /* @__PURE__ */ jsx("span", { className: "absolute size-9 rounded-full border border-positive1/40 bg-positive1/5 shadow-[0_0_24px_var(--color-positive1)]" }),
71
+ /* @__PURE__ */ jsx(CpuIcon, { className: "relative size-4 text-positive1" })
72
+ ] }),
73
+ /* @__PURE__ */ jsx("p", { className: "mt-3 max-w-40 text-ui-xs leading-4 text-neutral2", children: "Finds relationships across conversations, tools, and workflows" })
74
+ ]
75
+ }
76
+ ),
77
+ /* @__PURE__ */ jsx(PipelineConnector, {}),
78
+ /* @__PURE__ */ jsxs("article", { className: "h-50 p-5", role: "listitem", children: [
79
+ /* @__PURE__ */ jsx("h2", { className: "text-lg font-semibold text-neutral6", children: "Signal analysis" }),
80
+ /* @__PURE__ */ jsx("p", { className: "mt-0.5 text-xs text-neutral3", children: "What your users actually do" }),
81
+ /* @__PURE__ */ jsx("p", { className: "mt-5 font-mono text-[0.5625rem] tracking-[0.24em] text-neutral2 uppercase", children: "Output" }),
82
+ /* @__PURE__ */ jsx("div", { className: "mt-3 flex flex-wrap gap-2", children: signalLabels.map((label) => /* @__PURE__ */ jsxs(
83
+ "span",
84
+ {
85
+ className: "signals-chip inline-flex items-center gap-2 rounded border border-current/25 bg-surface3 px-2.5 py-1.5 text-xs font-medium shadow-[0_0_14px_color-mix(in_oklch,currentColor_12%,transparent)]",
86
+ style: signalStyle(label),
87
+ children: [
88
+ /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "size-1.5 rounded-full bg-current shadow-[0_0_7px_currentColor]" }),
89
+ label
90
+ ]
91
+ },
92
+ label
93
+ )) })
94
+ ] })
95
+ ]
96
+ }
97
+ ),
98
+ /* @__PURE__ */ jsxs("section", { className: "mt-10", "aria-labelledby": "signal-definitions-heading", children: [
99
+ /* @__PURE__ */ jsx("h2", { id: "signal-definitions-heading", className: "text-lg font-semibold text-neutral6", children: "What each signal means" }),
100
+ /* @__PURE__ */ jsx("div", { "aria-label": "Signal definitions", className: "mt-4 grid gap-3 sm:grid-cols-2", role: "list", children: signalDefinitions.map((signal) => /* @__PURE__ */ jsxs("article", { className: "px-1 py-2", role: "listitem", children: [
101
+ /* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold", style: signalStyle(signal.label), children: signal.label }),
102
+ /* @__PURE__ */ jsx("p", { className: "mt-1.5 text-xs leading-5 text-neutral3", children: signal.description })
103
+ ] }, signal.label)) })
104
+ ] }),
105
+ /* @__PURE__ */ jsxs("section", { className: "mt-10", "aria-label": "Signal relationship preview", children: [
106
+ /* @__PURE__ */ jsx("p", { className: "font-mono text-[0.5625rem] tracking-[0.2em] text-neutral2 uppercase", children: "Grouped trace relationships will appear after traces contain at least two signal types" }),
107
+ /* @__PURE__ */ jsx("div", { "aria-hidden": "true", className: "h-18 mt-3 grid grid-cols-3 gap-5 opacity-35", children: [0, 1, 2].map((index) => /* @__PURE__ */ jsxs("div", { className: "rounded-md border border-dashed border-border1 bg-surface2/30 p-4", children: [
108
+ /* @__PURE__ */ jsx("div", { className: "h-1.5 w-16 rounded-full bg-neutral1" }),
109
+ /* @__PURE__ */ jsx("div", { className: "mt-3 h-1 w-full rounded-full bg-neutral1/60" }),
110
+ /* @__PURE__ */ jsx("div", { className: "mt-2 h-1 w-2/3 rounded-full bg-neutral1/40" })
111
+ ] }, index)) })
112
+ ] }),
113
+ /* @__PURE__ */ jsxs("aside", { className: "mt-9 flex min-h-16 flex-col gap-4 rounded-md border border-border1 bg-surface2 px-5 py-3.5 sm:flex-row sm:items-center sm:justify-between", children: [
114
+ /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-start gap-3 sm:items-center", children: [
115
+ /* @__PURE__ */ jsx(
116
+ "span",
117
+ {
118
+ "aria-hidden": "true",
119
+ className: "mt-1.5 size-2 shrink-0 rounded-full bg-warning1 shadow-[0_0_9px_currentColor] sm:mt-0"
120
+ }
121
+ ),
122
+ /* @__PURE__ */ jsxs("p", { className: "text-xs leading-5 text-neutral3", children: [
123
+ /* @__PURE__ */ jsx("strong", { className: "font-semibold text-neutral5", children: "Waiting for traces." }),
124
+ " Signals activate automatically once your agents start receiving traffic."
125
+ ] })
126
+ ] }),
127
+ /* @__PURE__ */ jsxs("div", { className: "flex shrink-0 flex-wrap items-center gap-2", children: [
128
+ actionSlot,
129
+ /* @__PURE__ */ jsx(
130
+ Button,
131
+ {
132
+ as: "a",
133
+ href: "https://mastra.ai/en/docs/observability/tracing/overview",
134
+ target: "_blank",
135
+ rel: "noopener noreferrer",
136
+ variant: "outline",
137
+ size: "sm",
138
+ children: "Read the docs"
139
+ }
140
+ ),
141
+ /* @__PURE__ */ jsx(Button, { as: LinkComponent, href: "/observability", variant: "primary", size: "sm", children: "View incoming traces" })
142
+ ] })
143
+ ] })
144
+ ] }) });
145
+ };
146
+
147
+ export { SignalsEmptyState };
148
+ //# sourceMappingURL=signals-empty-state.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signals-empty-state.es.js","sources":["../../../../src/ee/signals/components/signals-empty-state.tsx"],"sourcesContent":["import { CpuIcon } from 'lucide-react';\nimport type { CSSProperties, ReactNode } from 'react';\n\nimport './signals-empty-state.css';\nimport { Button } from '../../../ds/components/Button';\nimport { Card } from '../../../ds/components/Card';\nimport { nodeColor } from '../../../ds/components/SankeyChart/sankeyColor';\nimport type { LinkComponent } from '../../../ds/types/link-component';\nimport { getSignalHue } from '../signal-colors';\n\nconst signalDefinitions = [\n { label: 'Goal', description: 'What the user is trying to achieve or have completed.' },\n { label: 'Sentiment', description: \"The user's emotional state or attitude.\" },\n {\n label: 'Behavior',\n description:\n \"The entity's observable actions and patterns, including tool use, omissions, retries, failures, and recovery.\",\n },\n { label: 'Outcome', description: 'The final completed, unresolved, or blocked state.' },\n];\nconst signalLabels = signalDefinitions.map(signal => signal.label);\n\nconst traceRows = [\n ['chat.completion', '1.2s'],\n ['tool.search_docs', '340ms'],\n ['workflow.support', '2.8s'],\n];\n\nconst signalStyle = (label: string): CSSProperties => ({\n color: nodeColor(getSignalHue(label)),\n});\n\nconst PipelineConnector = () => (\n <div aria-hidden=\"true\" className=\"relative hidden h-full items-center lg:flex\">\n <div className=\"w-full border-t border-dashed border-border1\" />\n <span className=\"signals-pipeline-connector absolute left-1/2 size-2.5 -translate-x-1/2 rounded-full bg-positive1 shadow-[0_0_12px_currentColor]\" />\n </div>\n);\n\nexport type SignalsEmptyStateProps = {\n actionSlot?: ReactNode;\n LinkComponent?: LinkComponent;\n};\n\nexport const SignalsEmptyState = ({ actionSlot, LinkComponent = 'a' }: SignalsEmptyStateProps) => {\n return (\n <section className=\"min-h-full w-full bg-surface1 p-6 md:px-10 lg:px-12 xl:px-[4.375rem]\">\n <div className=\"max-w-260 mx-auto w-full\">\n <header>\n <h1 className=\"text-header-xl font-medium tracking-tight text-neutral6\">\n Understand what drives every agent interaction\n </h1>\n </header>\n\n <div\n aria-label=\"Signals analysis pipeline\"\n className=\"mt-14 grid gap-4 lg:grid-cols-[17.5rem_4.5rem_17.5rem_4.5rem_minmax(0,1fr)] lg:gap-0\"\n role=\"list\"\n >\n <article className=\"h-50 p-5\" role=\"listitem\">\n <h2 className=\"text-lg font-semibold text-neutral6\">Traces</h2>\n <p className=\"mt-0.5 text-xs text-neutral3\">Every agent interaction</p>\n <p className=\"mt-5 font-mono text-[0.5625rem] tracking-[0.24em] text-neutral2 uppercase\">Input</p>\n <div className=\"mt-2.5 space-y-2\">\n {traceRows.map(([name, duration]) => (\n <div\n className=\"flex items-center justify-between rounded border border-border1 bg-surface3 px-3 py-1.5 font-mono text-ui-xs\"\n key={name}\n >\n <span className=\"text-neutral4\">{name}</span>\n <span className=\"text-neutral2\">{duration}</span>\n </div>\n ))}\n </div>\n </article>\n\n <PipelineConnector />\n\n <Card\n as=\"article\"\n className=\"h-50 flex flex-col items-center p-5 text-center\"\n elevation=\"elevated\"\n role=\"listitem\"\n >\n <h2 className=\"text-lg font-semibold text-neutral6\">Mastra Engine</h2>\n <p className=\"mt-0.5 text-xs text-neutral3\">Clusters recurring patterns</p>\n <div aria-hidden=\"true\" className=\"relative mt-5 flex size-20 items-center justify-center\">\n <span className=\"signals-engine-pulse absolute size-20 rounded-full border border-positive1/15\" />\n <span className=\"absolute size-14 rounded-full border border-positive1/25\" />\n <span className=\"absolute size-9 rounded-full border border-positive1/40 bg-positive1/5 shadow-[0_0_24px_var(--color-positive1)]\" />\n <CpuIcon className=\"relative size-4 text-positive1\" />\n </div>\n <p className=\"mt-3 max-w-40 text-ui-xs leading-4 text-neutral2\">\n Finds relationships across conversations, tools, and workflows\n </p>\n </Card>\n\n <PipelineConnector />\n\n <article className=\"h-50 p-5\" role=\"listitem\">\n <h2 className=\"text-lg font-semibold text-neutral6\">Signal analysis</h2>\n <p className=\"mt-0.5 text-xs text-neutral3\">What your users actually do</p>\n <p className=\"mt-5 font-mono text-[0.5625rem] tracking-[0.24em] text-neutral2 uppercase\">Output</p>\n <div className=\"mt-3 flex flex-wrap gap-2\">\n {signalLabels.map(label => (\n <span\n className=\"signals-chip inline-flex items-center gap-2 rounded border border-current/25 bg-surface3 px-2.5 py-1.5 text-xs font-medium shadow-[0_0_14px_color-mix(in_oklch,currentColor_12%,transparent)]\"\n key={label}\n style={signalStyle(label)}\n >\n <span aria-hidden=\"true\" className=\"size-1.5 rounded-full bg-current shadow-[0_0_7px_currentColor]\" />\n {label}\n </span>\n ))}\n </div>\n </article>\n </div>\n\n <section className=\"mt-10\" aria-labelledby=\"signal-definitions-heading\">\n <h2 id=\"signal-definitions-heading\" className=\"text-lg font-semibold text-neutral6\">\n What each signal means\n </h2>\n <div aria-label=\"Signal definitions\" className=\"mt-4 grid gap-3 sm:grid-cols-2\" role=\"list\">\n {signalDefinitions.map(signal => (\n <article className=\"px-1 py-2\" key={signal.label} role=\"listitem\">\n <h3 className=\"text-sm font-semibold\" style={signalStyle(signal.label)}>\n {signal.label}\n </h3>\n <p className=\"mt-1.5 text-xs leading-5 text-neutral3\">{signal.description}</p>\n </article>\n ))}\n </div>\n </section>\n\n <section className=\"mt-10\" aria-label=\"Signal relationship preview\">\n <p className=\"font-mono text-[0.5625rem] tracking-[0.2em] text-neutral2 uppercase\">\n Grouped trace relationships will appear after traces contain at least two signal types\n </p>\n <div aria-hidden=\"true\" className=\"h-18 mt-3 grid grid-cols-3 gap-5 opacity-35\">\n {[0, 1, 2].map(index => (\n <div className=\"rounded-md border border-dashed border-border1 bg-surface2/30 p-4\" key={index}>\n <div className=\"h-1.5 w-16 rounded-full bg-neutral1\" />\n <div className=\"mt-3 h-1 w-full rounded-full bg-neutral1/60\" />\n <div className=\"mt-2 h-1 w-2/3 rounded-full bg-neutral1/40\" />\n </div>\n ))}\n </div>\n </section>\n\n <aside className=\"mt-9 flex min-h-16 flex-col gap-4 rounded-md border border-border1 bg-surface2 px-5 py-3.5 sm:flex-row sm:items-center sm:justify-between\">\n <div className=\"flex min-w-0 items-start gap-3 sm:items-center\">\n <span\n aria-hidden=\"true\"\n className=\"mt-1.5 size-2 shrink-0 rounded-full bg-warning1 shadow-[0_0_9px_currentColor] sm:mt-0\"\n />\n <p className=\"text-xs leading-5 text-neutral3\">\n <strong className=\"font-semibold text-neutral5\">Waiting for traces.</strong> Signals activate\n automatically once your agents start receiving traffic.\n </p>\n </div>\n <div className=\"flex shrink-0 flex-wrap items-center gap-2\">\n {actionSlot}\n <Button\n as=\"a\"\n href=\"https://mastra.ai/en/docs/observability/tracing/overview\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n variant=\"outline\"\n size=\"sm\"\n >\n Read the docs\n </Button>\n <Button as={LinkComponent} href=\"/observability\" variant=\"primary\" size=\"sm\">\n View incoming traces\n </Button>\n </div>\n </aside>\n </div>\n </section>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -3,209 +3,11 @@
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
5
  const jsxRuntime = require('react/jsx-runtime');
6
- const lucideReact = require('lucide-react');
7
- const Badge = require('../../../Badge-BlJpI3fY.cjs');
8
- const Button = require('../../../Button-B5RnKrGb.cjs');
9
- const EmptyState = require('../../../EmptyState-CDPLdgbs.cjs');
10
- const skeleton = require('../../../skeleton-C0zXt2_f.cjs');
11
- const spinner = require('../../../spinner-BBAmiRCS.cjs');
12
- const ee_topics_components_topicsLayout = require('../../topics/components/topics-layout.cjs.js');
13
- require('react');
14
- require('date-fns');
15
- require('date-fns/format');
16
- require('../../../components/DataDetailsPanel.cjs.js');
17
- require('@mastra/react');
18
- require('@tanstack/react-query');
19
- const ee_signals_hooks_useEntityLearning = require('../hooks/use-entity-learning.cjs.js');
20
- const ee_signals_signalsData = require('../signals-data.cjs.js');
21
- const ee_signals_components_signalsEntityFilter = require('./signals-entity-filter.cjs.js');
6
+ const ee_signals_components_signalsEmptyState = require('./signals-empty-state.cjs.js');
22
7
 
23
- function clusterColorFromTopicId(topicId) {
24
- let hash = 0;
25
- for (let i = 0; i < topicId.length; i++) {
26
- hash = topicId.charCodeAt(i) + ((hash << 5) - hash);
27
- hash = hash & hash;
28
- }
29
- const hue = Math.abs(hash * 137.508) % 360;
30
- return `hsl(${hue}, 70%, 55%)`;
31
- }
32
- function SignalClusterCard({ topic, onSelect }) {
33
- const coveragePct = Math.round(topic.coverage * 100);
34
- const itemLabel = topic.itemCount === 1 ? "item" : "items";
35
- const clusterColor = clusterColorFromTopicId(topic.topicId);
36
- const clusterStyle = { "--cluster-color": clusterColor };
37
- return /* @__PURE__ */ jsxRuntime.jsx(
38
- "article",
39
- {
40
- role: "button",
41
- tabIndex: 0,
42
- onClick: () => onSelect(topic.topicId),
43
- onKeyDown: (event) => {
44
- if (event.key === "Enter" || event.key === " ") {
45
- event.preventDefault();
46
- onSelect(topic.topicId);
47
- }
48
- },
49
- className: "group cursor-pointer rounded-2xl border border-border1/70 bg-surface2 p-5 shadow-sm transition-colors hover:border-[var(--cluster-color)] focus-visible:border-[var(--cluster-color)] focus-visible:outline-none",
50
- style: clusterStyle,
51
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full min-w-0 flex-col", children: [
52
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 items-start gap-2", children: [
53
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mt-2 size-2.5 shrink-0 rounded-full", style: { backgroundColor: clusterColor } }),
54
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
55
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-md font-semibold text-neutral6", children: topic.name }),
56
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "line-clamp-2 text-sm text-neutral3", children: topic.description })
57
- ] })
58
- ] }),
59
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 pt-4 pl-4", children: [
60
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
61
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-mono text-xs text-neutral3 uppercase", children: "Coverage" }),
62
- /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "font-mono text-xs text-neutral3", children: [
63
- topic.itemCount,
64
- " ",
65
- itemLabel
66
- ] })
67
- ] }),
68
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[minmax(0,1fr)_4rem] items-center gap-4", children: [
69
- /* @__PURE__ */ jsxRuntime.jsx(
70
- "div",
71
- {
72
- className: "h-3 overflow-hidden rounded-full bg-surface4",
73
- role: "progressbar",
74
- "aria-label": `${topic.name} coverage`,
75
- "aria-valuemin": 0,
76
- "aria-valuemax": 100,
77
- "aria-valuenow": coveragePct,
78
- children: /* @__PURE__ */ jsxRuntime.jsx(
79
- "div",
80
- {
81
- className: "h-full rounded-full",
82
- style: { width: `${coveragePct}%`, backgroundColor: clusterColor }
83
- }
84
- )
85
- }
86
- ),
87
- /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-right text-ui-md font-semibold text-neutral6", children: [
88
- coveragePct,
89
- "%"
90
- ] })
91
- ] })
92
- ] })
93
- ] })
94
- }
95
- );
96
- }
97
- function SignalClusterCardSkeleton() {
98
- return /* @__PURE__ */ jsxRuntime.jsx("article", { className: "rounded-2xl border border-border1/70 bg-surface2 p-5 shadow-sm", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full min-w-0 flex-col", children: [
99
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 items-start gap-2", children: [
100
- /* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "mt-2 size-2.5 shrink-0 rounded-full" }),
101
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1 space-y-2", children: [
102
- /* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "h-4 w-1/2" }),
103
- /* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "h-3 w-full" })
104
- ] })
105
- ] }),
106
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 pt-4 pl-4", children: [
107
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
108
- /* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "h-3 w-20" }),
109
- /* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "h-3 w-12" })
110
- ] }),
111
- /* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "h-3 w-full rounded-full" })
112
- ] })
113
- ] }) });
114
- }
115
- function SignalSectionSkeleton() {
116
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid gap-6 md:grid-cols-2", "aria-label": "Loading clusters", "aria-busy": "true", children: Array.from({ length: 4 }).map((_, index) => /* @__PURE__ */ jsxRuntime.jsx(SignalClusterCardSkeleton, {}, index)) });
117
- }
118
- function SignalSection({ entity, catalog, signalName, onSeeDetails, onSelectCluster }) {
119
- const { data, isLoading, isError } = ee_signals_hooks_useEntityLearning.useEntityTopics(entity.entityId, signalName);
120
- const topics = data?.topics ?? [];
121
- return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "space-y-4", children: [
122
- /* @__PURE__ */ jsxRuntime.jsxs("header", { className: "flex items-start justify-between gap-6 px-1", children: [
123
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
124
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
125
- /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-ui-2xl font-semibold text-neutral6", children: catalog.name }),
126
- isLoading ? /* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "h-badge-default w-20 rounded-full", "aria-hidden": "true" }) : !isError ? /* @__PURE__ */ jsxRuntime.jsxs(Badge.Badge, { variant: "default", children: [
127
- topics.length,
128
- " ",
129
- topics.length === 1 ? "cluster" : "clusters"
130
- ] }) : null
131
- ] }),
132
- catalog.description ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-ui-lg text-neutral3", children: catalog.description }) : null
133
- ] }),
134
- /* @__PURE__ */ jsxRuntime.jsxs(
135
- Button.Button,
136
- {
137
- type: "button",
138
- variant: "outline",
139
- size: "lg",
140
- className: "shrink-0 gap-2 rounded-xl px-5",
141
- onClick: () => onSeeDetails(signalName),
142
- children: [
143
- "See details",
144
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowUpRight, { className: "size-4", "aria-hidden": "true" })
145
- ]
146
- }
147
- )
148
- ] }),
149
- isLoading ? /* @__PURE__ */ jsxRuntime.jsx(SignalSectionSkeleton, {}) : isError ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "px-1 text-ui-md text-accent2", children: "Failed to load clusters for this signal." }) : topics.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "px-1 text-ui-md text-neutral3", children: "No clusters found for this signal yet." }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid gap-6 md:grid-cols-2", children: topics.map((topic) => /* @__PURE__ */ jsxRuntime.jsx(
150
- SignalClusterCard,
151
- {
152
- topic,
153
- onSelect: (topicId) => onSelectCluster(signalName, topicId)
154
- },
155
- topic.topicId
156
- )) })
157
- ] });
158
- }
159
- function SignalsOverviewPage({ selectedEntity, onEntityChange, onSignalSelect }) {
160
- const { data: entities = [], isLoading, isError } = ee_signals_hooks_useEntityLearning.useEntities();
161
- const entity = selectedEntity ? entities.find((item) => item.entityId === selectedEntity.entityId) : void 0;
162
- const showFilterBar = Boolean(entity);
163
- return /* @__PURE__ */ jsxRuntime.jsx(ee_topics_components_topicsLayout.TopicsLayout, { sidebar: null, contentPadding: false, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full min-w-0 flex-col", "aria-label": "Signals", children: [
164
- showFilterBar && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-b border-border1/70 px-6 py-4", children: /* @__PURE__ */ jsxRuntime.jsx(ee_signals_components_signalsEntityFilter.SignalsEntityFilter, { entities, selected: selectedEntity, onChange: onEntityChange }) }),
165
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-h-0 flex-1 overflow-y-auto p-6", children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-full items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(EmptyState.EmptyState, { iconSlot: /* @__PURE__ */ jsxRuntime.jsx(spinner.Spinner, {}), titleSlot: "Loading entities…" }) }) : isError ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-full items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
166
- EmptyState.EmptyState,
167
- {
168
- iconSlot: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleSlashIcon, {}),
169
- titleSlot: "Failed to load entities",
170
- descriptionSlot: "Failed to load entities from the observability endpoint."
171
- }
172
- ) }) : entities.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-full items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
173
- EmptyState.EmptyState,
174
- {
175
- iconSlot: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.InboxIcon, {}),
176
- titleSlot: "No entities available",
177
- descriptionSlot: "No entities are available on the server yet."
178
- }
179
- ) }) : !entity ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-full items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
180
- EmptyState.EmptyState,
181
- {
182
- iconSlot: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MousePointerClickIcon, {}),
183
- titleSlot: "No entity selected",
184
- descriptionSlot: "Select an entity to inspect its signals and clusters.",
185
- actionSlot: /* @__PURE__ */ jsxRuntime.jsx(ee_signals_components_signalsEntityFilter.SignalsEntityFilter, { entities, selected: selectedEntity, onChange: onEntityChange })
186
- }
187
- ) }) : entity.availableSignals.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-full items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
188
- EmptyState.EmptyState,
189
- {
190
- iconSlot: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.InboxIcon, {}),
191
- titleSlot: "No signals yet",
192
- descriptionSlot: "This entity has no signals yet."
193
- }
194
- ) }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-auto flex max-w-6xl flex-col gap-12", children: entity.availableSignals.map((signalName) => /* @__PURE__ */ jsxRuntime.jsx(
195
- SignalSection,
196
- {
197
- entity,
198
- signalName,
199
- catalog: ee_signals_signalsData.getSignalCatalogEntry(signalName),
200
- onSeeDetails: onSignalSelect,
201
- onSelectCluster: onSignalSelect
202
- },
203
- signalName
204
- )) }) })
205
- ] }) });
8
+ function SignalsOverviewPage(props) {
9
+ return /* @__PURE__ */ jsxRuntime.jsx(ee_signals_components_signalsEmptyState.SignalsEmptyState, { ...props });
206
10
  }
207
11
 
208
- exports.SignalClusterCard = SignalClusterCard;
209
- exports.SignalSection = SignalSection;
210
12
  exports.SignalsOverviewPage = SignalsOverviewPage;
211
13
  //# sourceMappingURL=signals-overview-page.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"signals-overview-page.cjs.js","sources":["../../../../src/ee/signals/components/signals-overview-page.tsx"],"sourcesContent":["import { ArrowUpRight, CircleSlashIcon, InboxIcon, MousePointerClickIcon } from 'lucide-react';\nimport type { CSSProperties } from 'react';\nimport { Badge } from '../../../ds/components/Badge';\nimport { Button } from '../../../ds/components/Button';\nimport { EmptyState } from '../../../ds/components/EmptyState';\nimport { Skeleton } from '../../../ds/components/Skeleton';\nimport { Spinner } from '../../../ds/components/Spinner';\nimport { TopicsLayout } from '../../topics';\nimport { useEntities, useEntityTopics } from '../hooks';\nimport type { EntityLearningEntitySummary, EntityLearningTopic } from '../services';\nimport { getSignalCatalogEntry } from '../signals-data';\nimport type { SelectedEntity, SignalCatalogEntry } from '../types';\nimport { SignalsEntityFilter } from './signals-entity-filter';\n\nfunction clusterColorFromTopicId(topicId: string) {\n let hash = 0;\n for (let i = 0; i < topicId.length; i++) {\n hash = topicId.charCodeAt(i) + ((hash << 5) - hash);\n hash = hash & hash;\n }\n // Multiply by the golden-angle so close ids (e.g. \"1\",\"2\",\"3\") map to well-separated hues.\n const hue = Math.abs(hash * 137.508) % 360;\n return `hsl(${hue}, 70%, 55%)`;\n}\n\ninterface SignalClusterCardProps {\n topic: EntityLearningTopic;\n onSelect: (topicId: string) => void;\n}\n\nexport function SignalClusterCard({ topic, onSelect }: SignalClusterCardProps) {\n const coveragePct = Math.round(topic.coverage * 100);\n const itemLabel = topic.itemCount === 1 ? 'item' : 'items';\n const clusterColor = clusterColorFromTopicId(topic.topicId);\n const clusterStyle = { '--cluster-color': clusterColor } as CSSProperties;\n\n return (\n <article\n role=\"button\"\n tabIndex={0}\n onClick={() => onSelect(topic.topicId)}\n onKeyDown={event => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n onSelect(topic.topicId);\n }\n }}\n className=\"group cursor-pointer rounded-2xl border border-border1/70 bg-surface2 p-5 shadow-sm transition-colors hover:border-[var(--cluster-color)] focus-visible:border-[var(--cluster-color)] focus-visible:outline-none\"\n style={clusterStyle}\n >\n <div className=\"flex h-full min-w-0 flex-col\">\n <div className=\"flex min-w-0 items-start gap-2\">\n <span className=\"mt-2 size-2.5 shrink-0 rounded-full\" style={{ backgroundColor: clusterColor }} />\n\n <div>\n <h3 className=\"text-md font-semibold text-neutral6\">{topic.name}</h3>\n <p className=\"line-clamp-2 text-sm text-neutral3\">{topic.description}</p>\n </div>\n </div>\n\n <div className=\"space-y-1 pt-4 pl-4\">\n <div className=\"flex items-center justify-between\">\n <p className=\"font-mono text-xs text-neutral3 uppercase\">Coverage</p>\n <p className=\"font-mono text-xs text-neutral3\">\n {topic.itemCount} {itemLabel}\n </p>\n </div>\n\n <div className=\"grid grid-cols-[minmax(0,1fr)_4rem] items-center gap-4\">\n <div\n className=\"h-3 overflow-hidden rounded-full bg-surface4\"\n role=\"progressbar\"\n aria-label={`${topic.name} coverage`}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={coveragePct}\n >\n <div\n className=\"h-full rounded-full\"\n style={{ width: `${coveragePct}%`, backgroundColor: clusterColor }}\n />\n </div>\n <p className=\"text-right text-ui-md font-semibold text-neutral6\">{coveragePct}%</p>\n </div>\n </div>\n </div>\n </article>\n );\n}\n\nfunction SignalClusterCardSkeleton() {\n return (\n <article className=\"rounded-2xl border border-border1/70 bg-surface2 p-5 shadow-sm\" aria-hidden=\"true\">\n <div className=\"flex h-full min-w-0 flex-col\">\n <div className=\"flex min-w-0 items-start gap-2\">\n <Skeleton className=\"mt-2 size-2.5 shrink-0 rounded-full\" />\n <div className=\"min-w-0 flex-1 space-y-2\">\n <Skeleton className=\"h-4 w-1/2\" />\n <Skeleton className=\"h-3 w-full\" />\n </div>\n </div>\n\n <div className=\"space-y-2 pt-4 pl-4\">\n <div className=\"flex items-center justify-between\">\n <Skeleton className=\"h-3 w-20\" />\n <Skeleton className=\"h-3 w-12\" />\n </div>\n <Skeleton className=\"h-3 w-full rounded-full\" />\n </div>\n </div>\n </article>\n );\n}\n\nfunction SignalSectionSkeleton() {\n return (\n <div className=\"grid gap-6 md:grid-cols-2\" aria-label=\"Loading clusters\" aria-busy=\"true\">\n {Array.from({ length: 4 }).map((_, index) => (\n <SignalClusterCardSkeleton key={index} />\n ))}\n </div>\n );\n}\n\ninterface SignalSectionProps {\n entity: EntityLearningEntitySummary;\n catalog: SignalCatalogEntry;\n signalName: string;\n onSeeDetails: (signalName: string) => void;\n onSelectCluster: (signalName: string, topicId: string) => void;\n}\n\nexport function SignalSection({ entity, catalog, signalName, onSeeDetails, onSelectCluster }: SignalSectionProps) {\n // No runId: the API resolves the latest run per signal. `entity.latestRunId`\n // is entity-wide and belongs to a single signal, so reusing it here would\n // return empty topics for every other signal.\n const { data, isLoading, isError } = useEntityTopics(entity.entityId, signalName);\n const topics = data?.topics ?? [];\n\n return (\n <section className=\"space-y-4\">\n <header className=\"flex items-start justify-between gap-6 px-1\">\n <div className=\"min-w-0\">\n <div className=\"flex items-center gap-3\">\n <h2 className=\"text-ui-2xl font-semibold text-neutral6\">{catalog.name}</h2>\n {isLoading ? (\n <Skeleton className=\"h-badge-default w-20 rounded-full\" aria-hidden=\"true\" />\n ) : !isError ? (\n <Badge variant=\"default\">\n {topics.length} {topics.length === 1 ? 'cluster' : 'clusters'}\n </Badge>\n ) : null}\n </div>\n {catalog.description ? <p className=\"text-ui-lg text-neutral3\">{catalog.description}</p> : null}\n </div>\n\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"lg\"\n className=\"shrink-0 gap-2 rounded-xl px-5\"\n onClick={() => onSeeDetails(signalName)}\n >\n See details\n <ArrowUpRight className=\"size-4\" aria-hidden=\"true\" />\n </Button>\n </header>\n\n {isLoading ? (\n <SignalSectionSkeleton />\n ) : isError ? (\n <p className=\"px-1 text-ui-md text-accent2\">Failed to load clusters for this signal.</p>\n ) : topics.length === 0 ? (\n <p className=\"px-1 text-ui-md text-neutral3\">No clusters found for this signal yet.</p>\n ) : (\n <div className=\"grid gap-6 md:grid-cols-2\">\n {topics.map(topic => (\n <SignalClusterCard\n key={topic.topicId}\n topic={topic}\n onSelect={topicId => onSelectCluster(signalName, topicId)}\n />\n ))}\n </div>\n )}\n </section>\n );\n}\n\nexport interface SignalsOverviewPageProps {\n selectedEntity: SelectedEntity | null;\n onEntityChange: (selected: SelectedEntity | null) => void;\n onSignalSelect: (signalName: string, topicId?: string) => void;\n}\n\nexport function SignalsOverviewPage({ selectedEntity, onEntityChange, onSignalSelect }: SignalsOverviewPageProps) {\n const { data: entities = [], isLoading, isError } = useEntities();\n\n const entity = selectedEntity ? entities.find(item => item.entityId === selectedEntity.entityId) : undefined;\n\n // Only show the pinned filter bar once an agent is selected. While entities\n // are loading/erroring/empty, or when none is selected, the picker is surfaced\n // through the centered empty state instead, so the skeleton/loading view never\n // shows the top bar with an empty agent dropdown.\n const showFilterBar = Boolean(entity);\n\n return (\n <TopicsLayout sidebar={null} contentPadding={false}>\n <div className=\"flex h-full min-w-0 flex-col\" aria-label=\"Signals\">\n {showFilterBar && (\n <div className=\"border-b border-border1/70 px-6 py-4\">\n <SignalsEntityFilter entities={entities} selected={selectedEntity} onChange={onEntityChange} />\n </div>\n )}\n\n <div className=\"min-h-0 flex-1 overflow-y-auto p-6\">\n {isLoading ? (\n <div className=\"flex h-full items-center justify-center\">\n <EmptyState iconSlot={<Spinner />} titleSlot=\"Loading entities…\" />\n </div>\n ) : isError ? (\n <div className=\"flex h-full items-center justify-center\">\n <EmptyState\n iconSlot={<CircleSlashIcon />}\n titleSlot=\"Failed to load entities\"\n descriptionSlot=\"Failed to load entities from the observability endpoint.\"\n />\n </div>\n ) : entities.length === 0 ? (\n <div className=\"flex h-full items-center justify-center\">\n <EmptyState\n iconSlot={<InboxIcon />}\n titleSlot=\"No entities available\"\n descriptionSlot=\"No entities are available on the server yet.\"\n />\n </div>\n ) : !entity ? (\n <div className=\"flex h-full items-center justify-center\">\n <EmptyState\n iconSlot={<MousePointerClickIcon />}\n titleSlot=\"No entity selected\"\n descriptionSlot=\"Select an entity to inspect its signals and clusters.\"\n actionSlot={\n <SignalsEntityFilter entities={entities} selected={selectedEntity} onChange={onEntityChange} />\n }\n />\n </div>\n ) : entity.availableSignals.length === 0 ? (\n <div className=\"flex h-full items-center justify-center\">\n <EmptyState\n iconSlot={<InboxIcon />}\n titleSlot=\"No signals yet\"\n descriptionSlot=\"This entity has no signals yet.\"\n />\n </div>\n ) : (\n <div className=\"mx-auto flex max-w-6xl flex-col gap-12\">\n {entity.availableSignals.map(signalName => (\n <SignalSection\n key={signalName}\n entity={entity}\n signalName={signalName}\n catalog={getSignalCatalogEntry(signalName)}\n onSeeDetails={onSignalSelect}\n onSelectCluster={onSignalSelect}\n />\n ))}\n </div>\n )}\n </div>\n </div>\n </TopicsLayout>\n );\n}\n"],"names":["jsx","jsxs","Skeleton","useEntityTopics","Badge","Button","ArrowUpRight","useEntities","TopicsLayout","SignalsEntityFilter","EmptyState","Spinner","CircleSlashIcon","InboxIcon","MousePointerClickIcon","getSignalCatalogEntry"],"mappings":"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"}
1
+ {"version":3,"file":"signals-overview-page.cjs.js","sources":["../../../../src/ee/signals/components/signals-overview-page.tsx"],"sourcesContent":["import { SignalsEmptyState } from './signals-empty-state';\nimport type { SignalsEmptyStateProps } from './signals-empty-state';\n\nexport function SignalsOverviewPage(props: SignalsEmptyStateProps) {\n return <SignalsEmptyState {...props} />;\n}\n"],"names":["jsx","SignalsEmptyState"],"mappings":";;;;;;;AAGO,SAAS,oBAAoB,KAAA,EAA+B;AACjE,EAAA,uBAAOA,cAAA,CAACC,yDAAA,EAAA,EAAmB,GAAG,KAAA,EAAO,CAAA;AACvC;;;;"}