@mastra/playground-ui 58.0.0 → 59.0.0-alpha.1

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 (691) hide show
  1. package/README.md +62 -0
  2. package/dist/{Badge-TD55_qZJ.js → Badge-Bzn8Z-_I.js} +2 -2
  3. package/dist/Badge-Bzn8Z-_I.js.map +1 -0
  4. package/dist/{Badge-BEeYtjmv.cjs → Badge-DFNxcz-r.cjs} +2 -2
  5. package/dist/Badge-DFNxcz-r.cjs.map +1 -0
  6. package/dist/{Header-BVnFQlzE.js → Header-hTHhO02b.js} +2 -2
  7. package/dist/{Header-BVnFQlzE.js.map → Header-hTHhO02b.js.map} +1 -1
  8. package/dist/{Header-CGjhJ0nQ.cjs → Header-y51Sfo3G.cjs} +2 -2
  9. package/dist/{Header-CGjhJ0nQ.cjs.map → Header-y51Sfo3G.cjs.map} +1 -1
  10. package/dist/{Txt-DTh3Pa_a.js → Txt-BP1SRHmL.js} +4 -10
  11. package/dist/Txt-BP1SRHmL.js.map +1 -0
  12. package/dist/{Txt-B4-2nLaI.cjs → Txt-DPmEpNbp.cjs} +4 -10
  13. package/dist/Txt-DPmEpNbp.cjs.map +1 -0
  14. package/dist/{ask-user-BPpgiE7k.cjs → ask-user-4pnmHbuC.cjs} +3 -3
  15. package/dist/{ask-user-BPpgiE7k.cjs.map → ask-user-4pnmHbuC.cjs.map} +1 -1
  16. package/dist/{ask-user-jDUt7hgT.js → ask-user-CFcQN_7m.js} +3 -3
  17. package/dist/{ask-user-jDUt7hgT.js.map → ask-user-CFcQN_7m.js.map} +1 -1
  18. package/dist/{chat-notification-CmdRGO_D.js → chat-notification-BI_WRUvG.js} +3 -3
  19. package/dist/{chat-notification-CmdRGO_D.js.map → chat-notification-BI_WRUvG.js.map} +1 -1
  20. package/dist/{chat-notification-DJykWtoj.cjs → chat-notification-Dc7jwULm.cjs} +3 -3
  21. package/dist/{chat-notification-DJykWtoj.cjs.map → chat-notification-Dc7jwULm.cjs.map} +1 -1
  22. package/dist/{chat-signal-xs3FkPts.cjs → chat-signal-BodewV33.cjs} +3 -3
  23. package/dist/{chat-signal-xs3FkPts.cjs.map → chat-signal-BodewV33.cjs.map} +1 -1
  24. package/dist/{chat-signal-Vg8pGXwH.js → chat-signal-D0zw80bU.js} +3 -3
  25. package/dist/{chat-signal-Vg8pGXwH.js.map → chat-signal-D0zw80bU.js.map} +1 -1
  26. package/dist/{combobox-BoSB-muq.cjs → combobox-B19HJqE-.cjs} +2 -2
  27. package/dist/{combobox-BoSB-muq.cjs.map → combobox-B19HJqE-.cjs.map} +1 -1
  28. package/dist/{combobox-Cd0JPUQW.js → combobox-D_kmwSKS.js} +2 -2
  29. package/dist/{combobox-Cd0JPUQW.js.map → combobox-D_kmwSKS.js.map} +1 -1
  30. package/dist/components/Avatar.cjs.js +1 -1
  31. package/dist/components/Avatar.es.js +1 -1
  32. package/dist/components/Badge.cjs.js +1 -1
  33. package/dist/components/Badge.es.js +1 -1
  34. package/dist/components/ClampedText.cjs.js +1 -1
  35. package/dist/components/ClampedText.es.js +1 -1
  36. package/dist/components/Combobox.cjs.js +1 -1
  37. package/dist/components/Combobox.es.js +1 -1
  38. package/dist/components/Comment.cjs.js +2 -2
  39. package/dist/components/Comment.es.js +2 -2
  40. package/dist/components/CompactNumber.cjs.js +24 -0
  41. package/dist/components/CompactNumber.cjs.js.map +1 -0
  42. package/dist/components/CompactNumber.d.ts +2 -0
  43. package/dist/components/CompactNumber.es.js +20 -0
  44. package/dist/components/CompactNumber.es.js.map +1 -0
  45. package/dist/components/DataCodeSection.cjs.js +1 -1
  46. package/dist/components/DataCodeSection.es.js +1 -1
  47. package/dist/components/DataList.cjs.js +8 -14
  48. package/dist/components/DataList.cjs.js.map +1 -1
  49. package/dist/components/DataList.es.js +8 -14
  50. package/dist/components/DataList.es.js.map +1 -1
  51. package/dist/components/DataPanel.cjs.js +1 -1
  52. package/dist/components/DataPanel.es.js +1 -1
  53. package/dist/components/DateRangeTimeline.cjs.js +1 -1
  54. package/dist/components/DateRangeTimeline.es.js +1 -1
  55. package/dist/components/DateTimePicker.cjs.js +1 -1
  56. package/dist/components/DateTimePicker.es.js +1 -1
  57. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  58. package/dist/components/DateTimeRangePicker.es.js +1 -1
  59. package/dist/components/Entity.cjs.js +1 -1
  60. package/dist/components/Entity.es.js +1 -1
  61. package/dist/components/EntityHeader.cjs.js +1 -1
  62. package/dist/components/EntityHeader.es.js +1 -1
  63. package/dist/components/Entry.cjs.js +1 -1
  64. package/dist/components/Entry.es.js +1 -1
  65. package/dist/components/EnvironmentVariablesEditor.cjs.js +3 -3
  66. package/dist/components/EnvironmentVariablesEditor.es.js +3 -3
  67. package/dist/components/FilterBar.cjs.js +1 -1
  68. package/dist/components/FilterBar.es.js +1 -1
  69. package/dist/components/FormFieldBlocks.cjs.js +4 -4
  70. package/dist/components/FormFieldBlocks.es.js +4 -4
  71. package/dist/components/Header.cjs.js +1 -1
  72. package/dist/components/Header.es.js +1 -1
  73. package/dist/components/InlineCode.cjs.js +10 -0
  74. package/dist/components/InlineCode.cjs.js.map +1 -0
  75. package/dist/components/InlineCode.d.ts +2 -0
  76. package/dist/components/InlineCode.es.js +2 -0
  77. package/dist/components/InlineCode.es.js.map +1 -0
  78. package/dist/components/ItemList.cjs.js +5 -17
  79. package/dist/components/ItemList.cjs.js.map +1 -1
  80. package/dist/components/ItemList.es.js +5 -17
  81. package/dist/components/ItemList.es.js.map +1 -1
  82. package/dist/components/JSONSchemaForm.cjs.js +2 -2
  83. package/dist/components/JSONSchemaForm.es.js +2 -2
  84. package/dist/components/ListSearch.cjs.js +1 -1
  85. package/dist/components/ListSearch.es.js +1 -1
  86. package/dist/components/LogsDataList.cjs.js +2 -2
  87. package/dist/components/LogsDataList.es.js +2 -2
  88. package/dist/components/Message.cjs.js +4 -5
  89. package/dist/components/Message.cjs.js.map +1 -1
  90. package/dist/components/Message.es.js +4 -5
  91. package/dist/components/Message.es.js.map +1 -1
  92. package/dist/components/MetricsCard.cjs.js +1 -1
  93. package/dist/components/MetricsCard.es.js +1 -1
  94. package/dist/components/MetricsCardGroup.cjs.js +2 -11
  95. package/dist/components/MetricsCardGroup.cjs.js.map +1 -1
  96. package/dist/components/MetricsCardGroup.es.js +2 -11
  97. package/dist/components/MetricsCardGroup.es.js.map +1 -1
  98. package/dist/components/MetricsKpiCard.cjs.js +1 -1
  99. package/dist/components/MetricsKpiCard.es.js +1 -1
  100. package/dist/components/MetricsLineChart.cjs.js +2 -1
  101. package/dist/components/MetricsLineChart.cjs.js.map +1 -1
  102. package/dist/components/MetricsLineChart.es.js +1 -1
  103. package/dist/components/PageHeader.cjs.js +1 -1
  104. package/dist/components/PageHeader.es.js +1 -1
  105. package/dist/components/PageLayout.cjs.js +1 -1
  106. package/dist/components/PageLayout.es.js +1 -1
  107. package/dist/components/PropertyFilter.cjs.js +1 -1
  108. package/dist/components/PropertyFilter.es.js +1 -1
  109. package/dist/components/RelativeTimestamp.cjs.js +119 -0
  110. package/dist/components/RelativeTimestamp.cjs.js.map +1 -0
  111. package/dist/components/RelativeTimestamp.d.ts +2 -0
  112. package/dist/components/RelativeTimestamp.es.js +115 -0
  113. package/dist/components/RelativeTimestamp.es.js.map +1 -0
  114. package/dist/components/Section.cjs.js +1 -1
  115. package/dist/components/Section.es.js +1 -1
  116. package/dist/components/SettingsRow.cjs.js +1 -1
  117. package/dist/components/SettingsRow.es.js +1 -1
  118. package/dist/components/SideDialog.cjs.js +1 -1
  119. package/dist/components/SideDialog.es.js +1 -1
  120. package/dist/components/StatusIndicators.cjs.js +21 -14
  121. package/dist/components/StatusIndicators.cjs.js.map +1 -1
  122. package/dist/components/StatusIndicators.es.js +21 -15
  123. package/dist/components/StatusIndicators.es.js.map +1 -1
  124. package/dist/components/Table.cjs.js +3 -21
  125. package/dist/components/Table.cjs.js.map +1 -1
  126. package/dist/components/Table.es.js +3 -21
  127. package/dist/components/Table.es.js.map +1 -1
  128. package/dist/components/ThreadList.cjs.js +1 -1
  129. package/dist/components/ThreadList.es.js +1 -1
  130. package/dist/components/Truncate.cjs.js +1 -1
  131. package/dist/components/Truncate.es.js +1 -1
  132. package/dist/components/Txt.cjs.js +1 -1
  133. package/dist/components/Txt.es.js +1 -1
  134. package/dist/components/Workflow.cjs.js +9 -13
  135. package/dist/components/Workflow.cjs.js.map +1 -1
  136. package/dist/components/Workflow.es.js +9 -13
  137. package/dist/components/Workflow.es.js.map +1 -1
  138. package/dist/components/ai/ask-user.cjs.js +1 -1
  139. package/dist/components/ai/ask-user.es.js +1 -1
  140. package/dist/components/ai/chat-event.cjs.js +3 -3
  141. package/dist/components/ai/chat-event.es.js +4 -4
  142. package/dist/components/ai/plan.cjs.js +3 -3
  143. package/dist/components/ai/plan.cjs.js.map +1 -1
  144. package/dist/components/ai/plan.es.js +3 -3
  145. package/dist/components/ai/plan.es.js.map +1 -1
  146. package/dist/components/ai/task-list.cjs.js +370 -55
  147. package/dist/components/ai/task-list.cjs.js.map +1 -1
  148. package/dist/components/ai/task-list.es.js +374 -58
  149. package/dist/components/ai/task-list.es.js.map +1 -1
  150. package/dist/components/ai/tool-call.cjs.js +7 -9
  151. package/dist/components/ai/tool-call.cjs.js.map +1 -1
  152. package/dist/components/ai/tool-call.es.js +8 -10
  153. package/dist/components/ai/tool-call.es.js.map +1 -1
  154. package/dist/{data-code-section-Cth9zVkj.js → data-code-section-BKrCkj90.js} +2 -2
  155. package/dist/{data-code-section-Cth9zVkj.js.map → data-code-section-BKrCkj90.js.map} +1 -1
  156. package/dist/{data-code-section-DE4AgaTU.cjs → data-code-section-C9z94ytx.cjs} +2 -2
  157. package/dist/{data-code-section-DE4AgaTU.cjs.map → data-code-section-C9z94ytx.cjs.map} +1 -1
  158. package/dist/{data-list-DisTjDHP.js → data-list-5-nRJbEO.js} +3 -3
  159. package/dist/{data-list-DisTjDHP.js.map → data-list-5-nRJbEO.js.map} +1 -1
  160. package/dist/{data-list-PwFpP_mo.cjs → data-list-RI8c32dk.cjs} +3 -3
  161. package/dist/{data-list-PwFpP_mo.cjs.map → data-list-RI8c32dk.cjs.map} +1 -1
  162. package/dist/{data-list-skeleton-DAfM8AjW.js → data-list-skeleton-BrSh9Y_3.js} +2 -2
  163. package/dist/{data-list-skeleton-DAfM8AjW.js.map → data-list-skeleton-BrSh9Y_3.js.map} +1 -1
  164. package/dist/{data-list-skeleton-CjwR0o3w.cjs → data-list-skeleton-CgbWqYky.cjs} +2 -2
  165. package/dist/{data-list-skeleton-CjwR0o3w.cjs.map → data-list-skeleton-CgbWqYky.cjs.map} +1 -1
  166. package/dist/{data-list-spacer-DEcgVGFM.cjs → data-list-spacer-1OqlC7WX.cjs} +2 -2
  167. package/dist/{data-list-spacer-DEcgVGFM.cjs.map → data-list-spacer-1OqlC7WX.cjs.map} +1 -1
  168. package/dist/{data-list-spacer-BmorAN0V.js → data-list-spacer-D3Rn1evn.js} +2 -2
  169. package/dist/{data-list-spacer-BmorAN0V.js.map → data-list-spacer-D3Rn1evn.js.map} +1 -1
  170. package/dist/{data-list-top-DpbOA3uw.js → data-list-top-B-AopfvE.js} +13 -21
  171. package/dist/data-list-top-B-AopfvE.js.map +1 -0
  172. package/dist/{data-list-top-WGUY167p.cjs → data-list-top-DFnudSA_.cjs} +13 -21
  173. package/dist/data-list-top-DFnudSA_.cjs.map +1 -0
  174. package/dist/{data-panel-BQVTKo86.js → data-panel-BWgExbHs.js} +2 -2
  175. package/dist/{data-panel-BQVTKo86.js.map → data-panel-BWgExbHs.js.map} +1 -1
  176. package/dist/{data-panel-XPXrhYJI.cjs → data-panel-C_BqhzeL.cjs} +2 -2
  177. package/dist/{data-panel-XPXrhYJI.cjs.map → data-panel-C_BqhzeL.cjs.map} +1 -1
  178. package/dist/{date-time-range-picker-C-t3Kdpk.js → date-time-range-picker-Bnviv7s-.js} +2 -2
  179. package/dist/{date-time-range-picker-C-t3Kdpk.js.map → date-time-range-picker-Bnviv7s-.js.map} +1 -1
  180. package/dist/{date-time-range-picker-BCzvSYx3.cjs → date-time-range-picker-sT5qAW-_.cjs} +2 -2
  181. package/dist/{date-time-range-picker-BCzvSYx3.cjs.map → date-time-range-picker-sT5qAW-_.cjs.map} +1 -1
  182. package/dist/domains/capabilities/hooks/use-feedback-available.cjs.js +16 -0
  183. package/dist/domains/capabilities/hooks/use-feedback-available.cjs.js.map +1 -0
  184. package/dist/domains/capabilities/hooks/use-feedback-available.d.ts +2 -0
  185. package/dist/domains/capabilities/hooks/use-feedback-available.es.js +12 -0
  186. package/dist/domains/capabilities/hooks/use-feedback-available.es.js.map +1 -0
  187. package/dist/domains/capabilities/hooks/use-observability-capabilities.cjs.js +20 -0
  188. package/dist/domains/capabilities/hooks/use-observability-capabilities.cjs.js.map +1 -0
  189. package/dist/domains/capabilities/hooks/use-observability-capabilities.d.ts +2 -0
  190. package/dist/domains/capabilities/hooks/use-observability-capabilities.es.js +16 -0
  191. package/dist/domains/capabilities/hooks/use-observability-capabilities.es.js.map +1 -0
  192. package/dist/domains/capabilities/hooks/use-trace-query-available.cjs.js +16 -0
  193. package/dist/domains/capabilities/hooks/use-trace-query-available.cjs.js.map +1 -0
  194. package/dist/domains/capabilities/hooks/use-trace-query-available.d.ts +2 -0
  195. package/dist/domains/capabilities/hooks/use-trace-query-available.es.js +12 -0
  196. package/dist/domains/capabilities/hooks/use-trace-query-available.es.js.map +1 -0
  197. package/dist/domains/capabilities/hooks.cjs.js +14 -0
  198. package/dist/domains/capabilities/hooks.cjs.js.map +1 -0
  199. package/dist/domains/capabilities/hooks.d.ts +2 -0
  200. package/dist/domains/capabilities/hooks.es.js +4 -0
  201. package/dist/domains/capabilities/hooks.es.js.map +1 -0
  202. package/dist/domains/capabilities.cjs.js +14 -0
  203. package/dist/domains/capabilities.cjs.js.map +1 -0
  204. package/dist/domains/capabilities.d.ts +2 -0
  205. package/dist/domains/capabilities.es.js +4 -0
  206. package/dist/domains/capabilities.es.js.map +1 -0
  207. package/dist/domains/chat/attachments/attachment-kind.es.js +1 -1
  208. package/dist/domains/chat/components/badge-wrapper.cjs.js +1 -1
  209. package/dist/domains/chat/components/badge-wrapper.es.js +1 -1
  210. package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +1 -1
  211. package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +1 -1
  212. package/dist/domains/chat/components/section-label.cjs.js +1 -1
  213. package/dist/domains/chat/components/section-label.es.js +1 -1
  214. package/dist/domains/chat/messages/notification-signal-notice.cjs.js +1 -1
  215. package/dist/domains/chat/messages/notification-signal-notice.es.js +1 -1
  216. package/dist/domains/chat/messages/reasoning-streaming-line.cjs.js +1 -1
  217. package/dist/domains/chat/messages/reasoning-streaming-line.es.js +1 -1
  218. package/dist/domains/chat/messages/reasoning.cjs.js +4 -3
  219. package/dist/domains/chat/messages/reasoning.cjs.js.map +1 -1
  220. package/dist/domains/chat/messages/reasoning.es.js +4 -3
  221. package/dist/domains/chat/messages/reasoning.es.js.map +1 -1
  222. package/dist/domains/chat/messages/renderers/message-text.cjs.js +1 -1
  223. package/dist/domains/chat/messages/renderers/message-text.es.js +1 -1
  224. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +2 -2
  225. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js.map +1 -1
  226. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +2 -2
  227. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js.map +1 -1
  228. package/dist/domains/chat/messages/renderers/user-file-part-renderer.es.js +1 -1
  229. package/dist/domains/chat/messages/signal-badge.cjs.js +1 -1
  230. package/dist/domains/chat/messages/signal-badge.es.js +1 -1
  231. package/dist/domains/chat/messages/system-reminder-badge.cjs.js +1 -1
  232. package/dist/domains/chat/messages/system-reminder-badge.cjs.js.map +1 -1
  233. package/dist/domains/chat/messages/system-reminder-badge.es.js +1 -1
  234. package/dist/domains/chat/messages/system-reminder-badge.es.js.map +1 -1
  235. package/dist/domains/chat/messages/tripwire-notice.cjs.js +2 -2
  236. package/dist/domains/chat/messages/tripwire-notice.cjs.js.map +1 -1
  237. package/dist/domains/chat/messages/tripwire-notice.es.js +2 -2
  238. package/dist/domains/chat/messages/tripwire-notice.es.js.map +1 -1
  239. package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
  240. package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
  241. package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +3 -3
  242. package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js.map +1 -1
  243. package/dist/domains/chat/tools/badges/code-mode-badge.es.js +3 -3
  244. package/dist/domains/chat/tools/badges/code-mode-badge.es.js.map +1 -1
  245. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +6 -4
  246. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js.map +1 -1
  247. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +6 -4
  248. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js.map +1 -1
  249. package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +11 -8
  250. package/dist/domains/chat/tools/badges/observation-renderer.cjs.js.map +1 -1
  251. package/dist/domains/chat/tools/badges/observation-renderer.es.js +11 -8
  252. package/dist/domains/chat/tools/badges/observation-renderer.es.js.map +1 -1
  253. package/dist/domains/logs/components/log-data-panel.cjs.js +3 -6
  254. package/dist/domains/logs/components/log-data-panel.cjs.js.map +1 -1
  255. package/dist/domains/logs/components/log-data-panel.es.js +3 -6
  256. package/dist/domains/logs/components/log-data-panel.es.js.map +1 -1
  257. package/dist/domains/logs/components/logs-list-view.cjs.js +2 -2
  258. package/dist/domains/logs/components/logs-list-view.es.js +2 -2
  259. package/dist/domains/logs/components/no-logs-info.cjs.js +3 -4
  260. package/dist/domains/logs/components/no-logs-info.cjs.js.map +1 -1
  261. package/dist/domains/logs/components/no-logs-info.es.js +3 -4
  262. package/dist/domains/logs/components/no-logs-info.es.js.map +1 -1
  263. package/dist/domains/memory/components/flame-graph.cjs.js +7 -5
  264. package/dist/domains/memory/components/flame-graph.cjs.js.map +1 -1
  265. package/dist/domains/memory/components/flame-graph.es.js +8 -6
  266. package/dist/domains/memory/components/flame-graph.es.js.map +1 -1
  267. package/dist/domains/memory/components/memory-studio-panel.cjs.js +1 -1
  268. package/dist/domains/memory/components/memory-studio-panel.es.js +1 -1
  269. package/dist/domains/memory/components/observation-detail-view.cjs.js +4 -5
  270. package/dist/domains/memory/components/observation-detail-view.cjs.js.map +1 -1
  271. package/dist/domains/memory/components/observation-detail-view.es.js +4 -5
  272. package/dist/domains/memory/components/observation-detail-view.es.js.map +1 -1
  273. package/dist/domains/memory/components/thread-context-progress.cjs.js +1 -1
  274. package/dist/domains/memory/components/thread-context-progress.cjs.js.map +1 -1
  275. package/dist/domains/memory/components/thread-context-progress.es.js +1 -1
  276. package/dist/domains/memory/components/thread-context-progress.es.js.map +1 -1
  277. package/dist/domains/memory/lib/timeline.cjs.js +0 -9
  278. package/dist/domains/memory/lib/timeline.cjs.js.map +1 -1
  279. package/dist/domains/memory/lib/timeline.es.js +1 -9
  280. package/dist/domains/memory/lib/timeline.es.js.map +1 -1
  281. package/dist/domains/metrics/components/bar-list.cjs.js +4 -4
  282. package/dist/domains/metrics/components/bar-list.cjs.js.map +1 -1
  283. package/dist/domains/metrics/components/bar-list.es.js +4 -4
  284. package/dist/domains/metrics/components/bar-list.es.js.map +1 -1
  285. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  286. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  287. package/dist/domains/metrics/components/kpi-card-view.cjs.js +1 -1
  288. package/dist/domains/metrics/components/kpi-card-view.cjs.js.map +1 -1
  289. package/dist/domains/metrics/components/kpi-card-view.es.js +1 -1
  290. package/dist/domains/metrics/components/kpi-card-view.es.js.map +1 -1
  291. package/dist/domains/metrics/components/latency-card-view.cjs.js +33 -24
  292. package/dist/domains/metrics/components/latency-card-view.cjs.js.map +1 -1
  293. package/dist/domains/metrics/components/latency-card-view.es.js +34 -25
  294. package/dist/domains/metrics/components/latency-card-view.es.js.map +1 -1
  295. package/dist/domains/metrics/components/memory-card-view.cjs.js +9 -8
  296. package/dist/domains/metrics/components/memory-card-view.cjs.js.map +1 -1
  297. package/dist/domains/metrics/components/memory-card-view.es.js +8 -7
  298. package/dist/domains/metrics/components/memory-card-view.es.js.map +1 -1
  299. package/dist/domains/metrics/components/metrics-utils.cjs.js +0 -15
  300. package/dist/domains/metrics/components/metrics-utils.cjs.js.map +1 -1
  301. package/dist/domains/metrics/components/metrics-utils.es.js +1 -14
  302. package/dist/domains/metrics/components/metrics-utils.es.js.map +1 -1
  303. package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js +6 -5
  304. package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js.map +1 -1
  305. package/dist/domains/metrics/components/model-usage-cost-card-view.es.js +4 -3
  306. package/dist/domains/metrics/components/model-usage-cost-card-view.es.js.map +1 -1
  307. package/dist/domains/metrics/components/scores-card-view.cjs.js +5 -5
  308. package/dist/domains/metrics/components/scores-card-view.cjs.js.map +1 -1
  309. package/dist/domains/metrics/components/scores-card-view.es.js +5 -5
  310. package/dist/domains/metrics/components/scores-card-view.es.js.map +1 -1
  311. package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js +7 -6
  312. package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js.map +1 -1
  313. package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js +7 -6
  314. package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js.map +1 -1
  315. package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js +13 -11
  316. package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js.map +1 -1
  317. package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js +13 -11
  318. package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js.map +1 -1
  319. package/dist/domains/metrics/components/traces-volume-card-view.cjs.js +7 -6
  320. package/dist/domains/metrics/components/traces-volume-card-view.cjs.js.map +1 -1
  321. package/dist/domains/metrics/components/traces-volume-card-view.es.js +8 -7
  322. package/dist/domains/metrics/components/traces-volume-card-view.es.js.map +1 -1
  323. package/dist/domains/metrics/components.cjs.js +0 -2
  324. package/dist/domains/metrics/components.cjs.js.map +1 -1
  325. package/dist/domains/metrics/components.es.js +1 -1
  326. package/dist/domains/metrics/hooks/use-latency-metrics.cjs.js +11 -11
  327. package/dist/domains/metrics/hooks/use-latency-metrics.cjs.js.map +1 -1
  328. package/dist/domains/metrics/hooks/use-latency-metrics.es.js +12 -11
  329. package/dist/domains/metrics/hooks/use-latency-metrics.es.js.map +1 -1
  330. package/dist/domains/metrics/hooks/use-metrics.cjs.js +3 -3
  331. package/dist/domains/metrics/hooks/use-metrics.cjs.js.map +1 -1
  332. package/dist/domains/metrics/hooks/use-metrics.es.js +3 -3
  333. package/dist/domains/metrics/hooks/use-metrics.es.js.map +1 -1
  334. package/dist/domains/metrics/hooks/use-model-usage-cost-metrics.cjs.js +5 -5
  335. package/dist/domains/metrics/hooks/use-model-usage-cost-metrics.cjs.js.map +1 -1
  336. package/dist/domains/metrics/hooks/use-model-usage-cost-metrics.es.js +5 -5
  337. package/dist/domains/metrics/hooks/use-model-usage-cost-metrics.es.js.map +1 -1
  338. package/dist/domains/metrics/hooks/use-scores-metrics.cjs.js +6 -7
  339. package/dist/domains/metrics/hooks/use-scores-metrics.cjs.js.map +1 -1
  340. package/dist/domains/metrics/hooks/use-scores-metrics.es.js +6 -7
  341. package/dist/domains/metrics/hooks/use-scores-metrics.es.js.map +1 -1
  342. package/dist/domains/metrics/hooks/use-token-usage-timeseries.cjs.js +4 -12
  343. package/dist/domains/metrics/hooks/use-token-usage-timeseries.cjs.js.map +1 -1
  344. package/dist/domains/metrics/hooks/use-token-usage-timeseries.es.js +4 -12
  345. package/dist/domains/metrics/hooks/use-token-usage-timeseries.es.js.map +1 -1
  346. package/dist/domains/metrics/hooks.cjs.js +3 -0
  347. package/dist/domains/metrics/hooks.cjs.js.map +1 -1
  348. package/dist/domains/metrics/hooks.es.js +1 -0
  349. package/dist/domains/metrics/hooks.es.js.map +1 -1
  350. package/dist/domains/metrics/metrics-interval.cjs.js +20 -0
  351. package/dist/domains/metrics/metrics-interval.cjs.js.map +1 -0
  352. package/dist/domains/metrics/metrics-interval.d.ts +2 -0
  353. package/dist/domains/metrics/metrics-interval.es.js +15 -0
  354. package/dist/domains/metrics/metrics-interval.es.js.map +1 -0
  355. package/dist/domains/metrics.cjs.js +3 -2
  356. package/dist/domains/metrics.cjs.js.map +1 -1
  357. package/dist/domains/metrics.es.js +2 -1
  358. package/dist/domains/metrics.es.js.map +1 -1
  359. package/dist/domains/traces/components/no-traces-info.cjs.js +3 -4
  360. package/dist/domains/traces/components/no-traces-info.cjs.js.map +1 -1
  361. package/dist/domains/traces/components/no-traces-info.es.js +3 -4
  362. package/dist/domains/traces/components/no-traces-info.es.js.map +1 -1
  363. package/dist/domains/traces/components/span-data-panel-view.cjs.js +1 -1
  364. package/dist/domains/traces/components/span-data-panel-view.es.js +1 -1
  365. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +1 -1
  366. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +1 -1
  367. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
  368. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
  369. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +3 -2
  370. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js.map +1 -1
  371. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +3 -2
  372. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js.map +1 -1
  373. package/dist/domains/traces/components/span-payload/span-payload-json.cjs.js +1 -1
  374. package/dist/domains/traces/components/span-payload/span-payload-json.cjs.js.map +1 -1
  375. package/dist/domains/traces/components/span-payload/span-payload-json.es.js +1 -1
  376. package/dist/domains/traces/components/span-payload/span-payload-json.es.js.map +1 -1
  377. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +1 -1
  378. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +1 -1
  379. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +1 -1
  380. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +1 -1
  381. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
  382. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
  383. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +2 -2
  384. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +2 -2
  385. package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js +3 -2
  386. package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js.map +1 -1
  387. package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +3 -2
  388. package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js.map +1 -1
  389. package/dist/domains/traces/components/span-summary-description.cjs.js +6 -4
  390. package/dist/domains/traces/components/span-summary-description.cjs.js.map +1 -1
  391. package/dist/domains/traces/components/span-summary-description.es.js +7 -5
  392. package/dist/domains/traces/components/span-summary-description.es.js.map +1 -1
  393. package/dist/domains/traces/components/span-timeline-row.cjs.js +3 -4
  394. package/dist/domains/traces/components/span-timeline-row.cjs.js.map +1 -1
  395. package/dist/domains/traces/components/span-timeline-row.es.js +3 -4
  396. package/dist/domains/traces/components/span-timeline-row.es.js.map +1 -1
  397. package/dist/domains/traces/components/span-timing-hover-card.cjs.js +6 -11
  398. package/dist/domains/traces/components/span-timing-hover-card.cjs.js.map +1 -1
  399. package/dist/domains/traces/components/span-timing-hover-card.es.js +6 -11
  400. package/dist/domains/traces/components/span-timing-hover-card.es.js.map +1 -1
  401. package/dist/domains/traces/components/span-type-legend.cjs.js +1 -1
  402. package/dist/domains/traces/components/span-type-legend.es.js +1 -1
  403. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
  404. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
  405. package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +1 -1
  406. package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +1 -1
  407. package/dist/domains/traces/components/timeline-timing-col.cjs.js +3 -4
  408. package/dist/domains/traces/components/timeline-timing-col.cjs.js.map +1 -1
  409. package/dist/domains/traces/components/timeline-timing-col.es.js +3 -4
  410. package/dist/domains/traces/components/timeline-timing-col.es.js.map +1 -1
  411. package/dist/domains/traces/components/trace-columns-menu.cjs.js +21 -18
  412. package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
  413. package/dist/domains/traces/components/trace-columns-menu.es.js +21 -18
  414. package/dist/domains/traces/components/trace-columns-menu.es.js.map +1 -1
  415. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +2 -2
  416. package/dist/domains/traces/components/trace-data-panel-view.es.js +2 -2
  417. package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
  418. package/dist/domains/traces/components/trace-id-button.es.js +1 -1
  419. package/dist/domains/traces/components/trace-span-timeline.cjs.js +10 -4
  420. package/dist/domains/traces/components/trace-span-timeline.cjs.js.map +1 -1
  421. package/dist/domains/traces/components/trace-span-timeline.es.js +10 -4
  422. package/dist/domains/traces/components/trace-span-timeline.es.js.map +1 -1
  423. package/dist/domains/traces/components/trace-span-tree.cjs.js +3 -4
  424. package/dist/domains/traces/components/trace-span-tree.cjs.js.map +1 -1
  425. package/dist/domains/traces/components/trace-span-tree.es.js +3 -4
  426. package/dist/domains/traces/components/trace-span-tree.es.js.map +1 -1
  427. package/dist/domains/traces/components/trace-summary-description.cjs.js +13 -10
  428. package/dist/domains/traces/components/trace-summary-description.cjs.js.map +1 -1
  429. package/dist/domains/traces/components/trace-summary-description.es.js +13 -10
  430. package/dist/domains/traces/components/trace-summary-description.es.js.map +1 -1
  431. package/dist/domains/traces/components/trace-time-range-chip.cjs.js +1 -1
  432. package/dist/domains/traces/components/trace-time-range-chip.es.js +1 -1
  433. package/dist/domains/traces/components/traces-list-view.cjs.js +12 -10
  434. package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
  435. package/dist/domains/traces/components/traces-list-view.es.js +12 -10
  436. package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
  437. package/dist/domains/traces/components/traces-page-skeleton.cjs.js +1 -1
  438. package/dist/domains/traces/components/traces-page-skeleton.es.js +1 -1
  439. package/dist/domains/traces/hooks/use-branch.cjs.js +0 -1
  440. package/dist/domains/traces/hooks/use-branch.cjs.js.map +1 -1
  441. package/dist/domains/traces/hooks/use-branch.es.js +0 -1
  442. package/dist/domains/traces/hooks/use-branch.es.js.map +1 -1
  443. package/dist/domains/traces/hooks/use-trace-light-spans.cjs.js +0 -1
  444. package/dist/domains/traces/hooks/use-trace-light-spans.cjs.js.map +1 -1
  445. package/dist/domains/traces/hooks/use-trace-light-spans.es.js +0 -1
  446. package/dist/domains/traces/hooks/use-trace-light-spans.es.js.map +1 -1
  447. package/dist/domains/traces/hooks/use-trace-query.cjs.js +63 -3
  448. package/dist/domains/traces/hooks/use-trace-query.cjs.js.map +1 -1
  449. package/dist/domains/traces/hooks/use-trace-query.es.js +61 -4
  450. package/dist/domains/traces/hooks/use-trace-query.es.js.map +1 -1
  451. package/dist/domains/traces/hooks/use-trace-search.cjs.js +0 -1
  452. package/dist/domains/traces/hooks/use-trace-search.cjs.js.map +1 -1
  453. package/dist/domains/traces/hooks/use-trace-search.es.js +0 -1
  454. package/dist/domains/traces/hooks/use-trace-search.es.js.map +1 -1
  455. package/dist/domains/traces/hooks/use-trace-spans.cjs.js +0 -1
  456. package/dist/domains/traces/hooks/use-trace-spans.cjs.js.map +1 -1
  457. package/dist/domains/traces/hooks/use-trace-spans.es.js +0 -1
  458. package/dist/domains/traces/hooks/use-trace-spans.es.js.map +1 -1
  459. package/dist/domains/traces/hooks/use-traces-list-source.cjs.js +42 -0
  460. package/dist/domains/traces/hooks/use-traces-list-source.cjs.js.map +1 -0
  461. package/dist/domains/traces/hooks/use-traces-list-source.d.ts +2 -0
  462. package/dist/domains/traces/hooks/use-traces-list-source.es.js +38 -0
  463. package/dist/domains/traces/hooks/use-traces-list-source.es.js.map +1 -0
  464. package/dist/domains/traces/hooks.cjs.js +2 -0
  465. package/dist/domains/traces/hooks.cjs.js.map +1 -1
  466. package/dist/domains/traces/hooks.es.js +1 -0
  467. package/dist/domains/traces/hooks.es.js.map +1 -1
  468. package/dist/domains/traces/trace-filters.cjs.js +10 -1
  469. package/dist/domains/traces/trace-filters.cjs.js.map +1 -1
  470. package/dist/domains/traces/trace-filters.es.js +10 -1
  471. package/dist/domains/traces/trace-filters.es.js.map +1 -1
  472. package/dist/domains/traces/utils/span-utils.cjs.js +4 -36
  473. package/dist/domains/traces/utils/span-utils.cjs.js.map +1 -1
  474. package/dist/domains/traces/utils/span-utils.es.js +4 -32
  475. package/dist/domains/traces/utils/span-utils.es.js.map +1 -1
  476. package/dist/domains/traces/utils.cjs.js +1 -1
  477. package/dist/domains/traces/utils.es.js +1 -1
  478. package/dist/domains/traces.cjs.js +3 -1
  479. package/dist/domains/traces.cjs.js.map +1 -1
  480. package/dist/domains/traces.es.js +2 -1
  481. package/dist/domains/traces.es.js.map +1 -1
  482. package/dist/ee/signals/components/entity-index-compact-grid.cjs.js +1 -1
  483. package/dist/ee/signals/components/entity-index-compact-grid.es.js +1 -1
  484. package/dist/ee/signals/components/entity-index-list.cjs.js +2 -2
  485. package/dist/ee/signals/components/entity-index-list.es.js +2 -2
  486. package/dist/ee/signals/components/entity-index-model.cjs.js +3 -2
  487. package/dist/ee/signals/components/entity-index-model.cjs.js.map +1 -1
  488. package/dist/ee/signals/components/entity-index-model.es.js +3 -2
  489. package/dist/ee/signals/components/entity-index-model.es.js.map +1 -1
  490. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +2 -2
  491. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +2 -2
  492. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +2 -2
  493. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +2 -2
  494. package/dist/ee/signals/settings/trace-signal-settings.cjs.js +1 -1
  495. package/dist/ee/signals/settings/trace-signal-settings.es.js +1 -1
  496. package/dist/ee/signals/signal-formatting.cjs.js +6 -34
  497. package/dist/ee/signals/signal-formatting.cjs.js.map +1 -1
  498. package/dist/ee/signals/signal-formatting.es.js +6 -34
  499. package/dist/ee/signals/signal-formatting.es.js.map +1 -1
  500. package/dist/ee/signals/snapshot-timeline-data.cjs.js +1 -1
  501. package/dist/ee/signals/snapshot-timeline-data.cjs.js.map +1 -1
  502. package/dist/ee/signals/snapshot-timeline-data.es.js +1 -1
  503. package/dist/ee/signals/snapshot-timeline-data.es.js.map +1 -1
  504. package/dist/ee/signals/view-mode-tab.cjs.js +1 -1
  505. package/dist/ee/signals/view-mode-tab.es.js +1 -1
  506. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +1 -1
  507. package/dist/ee/topics/components/topic-trace-summary-list.es.js +1 -1
  508. package/dist/field-block-error-msg-Y0fi0HUC.js +22 -0
  509. package/dist/field-block-error-msg-Y0fi0HUC.js.map +1 -0
  510. package/dist/field-block-error-msg-oudJz2Hx.cjs +24 -0
  511. package/dist/field-block-error-msg-oudJz2Hx.cjs.map +1 -0
  512. package/dist/{field-error-id-DyWx33Fu.js → field-error-id-DD7OARLU.js} +2 -13
  513. package/dist/field-error-id-DD7OARLU.js.map +1 -0
  514. package/dist/{field-error-id-6EfqmQ4C.cjs → field-error-id-V_WejsRL.cjs} +4 -15
  515. package/dist/field-error-id-V_WejsRL.cjs.map +1 -0
  516. package/dist/hooks/use-elapsed-time.cjs.js +25 -0
  517. package/dist/hooks/use-elapsed-time.cjs.js.map +1 -0
  518. package/dist/hooks/use-elapsed-time.d.ts +2 -0
  519. package/dist/hooks/use-elapsed-time.es.js +21 -0
  520. package/dist/hooks/use-elapsed-time.es.js.map +1 -0
  521. package/dist/inline-code-BW6W121s.js +13 -0
  522. package/dist/inline-code-BW6W121s.js.map +1 -0
  523. package/dist/inline-code-CSwG-x8D.cjs +15 -0
  524. package/dist/inline-code-CSwG-x8D.cjs.map +1 -0
  525. package/dist/layout/tabbed-container.cjs.js +3 -3
  526. package/dist/layout/tabbed-container.es.js +3 -3
  527. package/dist/{list-search-S1mco9Bl.cjs → list-search-CsYQX8qR.cjs} +2 -2
  528. package/dist/{list-search-S1mco9Bl.cjs.map → list-search-CsYQX8qR.cjs.map} +1 -1
  529. package/dist/{list-search-FJ1O5F3S.js → list-search-D1FD8FCL.js} +2 -2
  530. package/dist/{list-search-FJ1O5F3S.js.map → list-search-D1FD8FCL.js.map} +1 -1
  531. package/dist/{logs-data-list-5BAeLU57.js → logs-data-list-BKE5vYZR.js} +4 -4
  532. package/dist/{logs-data-list-5BAeLU57.js.map → logs-data-list-BKE5vYZR.js.map} +1 -1
  533. package/dist/{logs-data-list-YL9yLKF3.cjs → logs-data-list-lJK0yGYj.cjs} +4 -4
  534. package/dist/{logs-data-list-YL9yLKF3.cjs.map → logs-data-list-lJK0yGYj.cjs.map} +1 -1
  535. package/dist/{metrics-card-Bzm6m1dy.js → metrics-card-C2RTi5Ew.js} +7 -7
  536. package/dist/metrics-card-C2RTi5Ew.js.map +1 -0
  537. package/dist/{metrics-card-DCCHIG-z.cjs → metrics-card-DzcVJTAN.cjs} +7 -7
  538. package/dist/metrics-card-DzcVJTAN.cjs.map +1 -0
  539. package/dist/{metrics-kpi-card-BrnFhFQm.js → metrics-kpi-card-BVCuXeDa.js} +21 -10
  540. package/dist/metrics-kpi-card-BVCuXeDa.js.map +1 -0
  541. package/dist/{metrics-kpi-card-Bhb4R4z0.cjs → metrics-kpi-card-DoIeHfv6.cjs} +21 -10
  542. package/dist/metrics-kpi-card-DoIeHfv6.cjs.map +1 -0
  543. package/dist/{metrics-line-chart-0FR3SYSt.cjs → metrics-line-chart-BNNRRxM8.cjs} +61 -25
  544. package/dist/metrics-line-chart-BNNRRxM8.cjs.map +1 -0
  545. package/dist/{metrics-line-chart-knlgw8bV.js → metrics-line-chart-CT_pqJtC.js} +62 -27
  546. package/dist/metrics-line-chart-CT_pqJtC.js.map +1 -0
  547. package/dist/new/layout/page-header.cjs.js +1 -1
  548. package/dist/new/layout/page-header.es.js +1 -1
  549. package/dist/new/settings.cjs.js +2 -2
  550. package/dist/new/settings.es.js +2 -2
  551. package/dist/{page-header-CyXAezlZ.js → page-header-BGyZw13s.js} +2 -2
  552. package/dist/page-header-BGyZw13s.js.map +1 -0
  553. package/dist/{page-header-Dk3s3XtC.cjs → page-header-CqvBk1wE.cjs} +2 -2
  554. package/dist/page-header-CqvBk1wE.cjs.map +1 -0
  555. package/dist/{schemes-C9EhSOkB.js → schemes-CGK3gQJ6.js} +2 -2
  556. package/dist/{schemes-C9EhSOkB.js.map → schemes-CGK3gQJ6.js.map} +1 -1
  557. package/dist/{search-field-block-fU3tStmB.js → search-field-block-Dj2KJyjQ.js} +2 -2
  558. package/dist/{search-field-block-fU3tStmB.js.map → search-field-block-Dj2KJyjQ.js.map} +1 -1
  559. package/dist/{search-field-block-7-ufp4uG.cjs → search-field-block-K_e_S9WY.cjs} +2 -2
  560. package/dist/{search-field-block-7-ufp4uG.cjs.map → search-field-block-K_e_S9WY.cjs.map} +1 -1
  561. package/dist/{section-B9OLuEq3.js → section-Bi0g7cn6.js} +2 -2
  562. package/dist/{section-B9OLuEq3.js.map → section-Bi0g7cn6.js.map} +1 -1
  563. package/dist/{section-CTihfzmc.cjs → section-p9vCSmPq.cjs} +2 -2
  564. package/dist/{section-CTihfzmc.cjs.map → section-p9vCSmPq.cjs.map} +1 -1
  565. package/dist/{select-field-block-BfiHq9t6.js → select-field-block-BF8v698d.js} +2 -2
  566. package/dist/{select-field-block-BfiHq9t6.js.map → select-field-block-BF8v698d.js.map} +1 -1
  567. package/dist/{select-field-block-DJo2cX9Y.cjs → select-field-block-CaGjpIKM.cjs} +2 -2
  568. package/dist/{select-field-block-DJo2cX9Y.cjs.map → select-field-block-CaGjpIKM.cjs.map} +1 -1
  569. package/dist/{settings-row-BoAuUUuH.cjs → settings-row-Cr8gaO5a.cjs} +14 -4
  570. package/dist/settings-row-Cr8gaO5a.cjs.map +1 -0
  571. package/dist/{settings-row-B2IekRyH.js → settings-row-Cr9DsBSX.js} +14 -4
  572. package/dist/settings-row-Cr9DsBSX.js.map +1 -0
  573. package/dist/{span-payload-primitives-Buq9V8nK.js → span-payload-primitives-Dmzm3mb2.js} +2 -2
  574. package/dist/{span-payload-primitives-Buq9V8nK.js.map → span-payload-primitives-Dmzm3mb2.js.map} +1 -1
  575. package/dist/{span-payload-primitives-CjlNH9C-.cjs → span-payload-primitives-Dq8WqqNm.cjs} +2 -2
  576. package/dist/{span-payload-primitives-CjlNH9C-.cjs.map → span-payload-primitives-Dq8WqqNm.cjs.map} +1 -1
  577. package/dist/src/domains/capabilities/hooks/index.d.ts +3 -0
  578. package/dist/src/domains/capabilities/hooks/use-feedback-available.d.ts +8 -0
  579. package/dist/src/domains/capabilities/hooks/use-observability-capabilities.d.ts +22 -0
  580. package/dist/src/domains/capabilities/hooks/use-trace-query-available.d.ts +8 -0
  581. package/dist/src/domains/capabilities/index.d.ts +1 -0
  582. package/dist/src/domains/chat/messages/reasoning.d.ts +3 -1
  583. package/dist/src/domains/chat/messages/renderers/reasoning-part-renderer.d.ts +3 -1
  584. package/dist/src/domains/chat/stories/reasoning.stories.d.ts +1 -1
  585. package/dist/src/domains/memory/lib/timeline.d.ts +0 -1
  586. package/dist/src/domains/metrics/components/index.d.ts +1 -1
  587. package/dist/src/domains/metrics/components/kpi-card-view.d.ts +2 -1
  588. package/dist/src/domains/metrics/components/latency-card-view.d.ts +4 -1
  589. package/dist/src/domains/metrics/components/metrics-utils.d.ts +0 -2
  590. package/dist/src/domains/metrics/hooks/index.d.ts +1 -0
  591. package/dist/src/domains/metrics/hooks/use-latency-metrics.d.ts +2 -2
  592. package/dist/src/domains/metrics/hooks/use-token-usage-timeseries.d.ts +2 -1
  593. package/dist/src/domains/metrics/metrics-interval.d.ts +7 -0
  594. package/dist/src/domains/traces/components/trace-columns-menu.d.ts +3 -1
  595. package/dist/src/domains/traces/components/trace-data-panel-view.stories.d.ts +1 -1
  596. package/dist/src/domains/traces/hooks/index.d.ts +1 -0
  597. package/dist/src/domains/traces/hooks/use-trace-query.d.ts +19 -2
  598. package/dist/src/domains/traces/hooks/use-traces-list-source.d.ts +46 -0
  599. package/dist/src/domains/traces/trace-filters.d.ts +6 -1
  600. package/dist/src/domains/traces/utils/index.d.ts +1 -1
  601. package/dist/src/domains/traces/utils/span-utils.d.ts +1 -6
  602. package/dist/src/ds/components/Card/Card.d.ts +2 -2
  603. package/dist/src/ds/components/CompactNumber/compact-number.d.ts +6 -0
  604. package/dist/src/ds/components/CompactNumber/compact-number.stories.d.ts +7 -0
  605. package/dist/src/ds/components/CompactNumber/index.d.ts +1 -0
  606. package/dist/src/ds/components/DataList/data-list-cells.d.ts +4 -3
  607. package/dist/src/ds/components/InlineCode/index.d.ts +1 -0
  608. package/dist/src/ds/components/InlineCode/inline-code.d.ts +3 -0
  609. package/dist/src/ds/components/InlineCode/inline-code.stories.d.ts +13 -0
  610. package/dist/src/ds/components/ItemList/item-list-date-cell.d.ts +3 -2
  611. package/dist/src/ds/components/MetricsCardGroup/metrics-card-group.d.ts +3 -8
  612. package/dist/src/ds/components/MetricsLineChart/index.d.ts +1 -0
  613. package/dist/src/ds/components/MetricsLineChart/metrics-line-chart-legend.d.ts +6 -0
  614. package/dist/src/ds/components/MetricsLineChart/metrics-line-chart.d.ts +6 -4
  615. package/dist/src/ds/components/MetricsLineChart/metrics-line-chart.stories.d.ts +1 -0
  616. package/dist/src/ds/components/RelativeTimestamp/index.d.ts +1 -0
  617. package/dist/src/ds/components/RelativeTimestamp/relative-timestamp.d.ts +6 -0
  618. package/dist/src/ds/components/RelativeTimestamp/relative-timestamp.stories.d.ts +7 -0
  619. package/dist/src/ds/components/StatusIndicators/status-dot-styles.d.ts +31 -2
  620. package/dist/src/ds/components/StatusIndicators/status-dot.stories.d.ts +3 -4
  621. package/dist/src/ds/components/StatusIndicators/status.d.ts +2 -3
  622. package/dist/src/ds/components/StatusIndicators/status.stories.d.ts +2 -1
  623. package/dist/src/ds/components/Txt/Txt.d.ts +5 -1
  624. package/dist/src/ds/components/ai/task-list/task-graph-node.d.ts +8 -0
  625. package/dist/src/ds/components/ai/task-list/task-graph.d.ts +8 -0
  626. package/dist/src/ds/components/ai/task-list/task-list.d.ts +4 -8
  627. package/dist/src/ds/components/ai/task-list/task-list.stories.d.ts +1 -1
  628. package/dist/src/ds/components/ai/task-list/use-focused-row-scroll.d.ts +12 -0
  629. package/dist/src/ds/new/layout/page-header/page-header.stories.d.ts +1 -0
  630. package/dist/src/ds/new/settings/settings-row.d.ts +3 -1
  631. package/dist/src/ds/new/settings/settings.stories.d.ts +1 -0
  632. package/dist/src/hooks/stories/state/use-elapsed-time.stories.d.ts +17 -0
  633. package/dist/src/hooks/use-elapsed-time.d.ts +2 -0
  634. package/dist/src/lib/cost.d.ts +6 -0
  635. package/dist/src/utils/cost.d.ts +1 -0
  636. package/dist/src/utils/date-format.d.ts +28 -0
  637. package/dist/src/utils/duration.d.ts +7 -1
  638. package/dist/src/utils/relative-time.d.ts +7 -0
  639. package/dist/style.css +329 -18
  640. package/dist/{text-field-block-DGIM1i3Z.js → text-field-block-BYPiO9h4.js} +2 -2
  641. package/dist/{text-field-block-DGIM1i3Z.js.map → text-field-block-BYPiO9h4.js.map} +1 -1
  642. package/dist/{text-field-block-DePCgDOh.cjs → text-field-block-CRh8sRXP.cjs} +2 -2
  643. package/dist/{text-field-block-DePCgDOh.cjs.map → text-field-block-CRh8sRXP.cjs.map} +1 -1
  644. package/dist/{tool-call-Bs-9Cah5.js → tool-call-CIeNEYpK.js} +2 -2
  645. package/dist/{tool-call-Bs-9Cah5.js.map → tool-call-CIeNEYpK.js.map} +1 -1
  646. package/dist/{tool-call-C0JeHe8Z.cjs → tool-call-CnEm3eE0.cjs} +2 -2
  647. package/dist/{tool-call-C0JeHe8Z.cjs.map → tool-call-CnEm3eE0.cjs.map} +1 -1
  648. package/dist/{traces-data-list-Dam8-XW-.cjs → traces-data-list-C5KZesk6.cjs} +5 -5
  649. package/dist/{traces-data-list-Dam8-XW-.cjs.map → traces-data-list-C5KZesk6.cjs.map} +1 -1
  650. package/dist/{traces-data-list-Dvi0s56v.js → traces-data-list-CdWW9J6z.js} +5 -5
  651. package/dist/{traces-data-list-Dvi0s56v.js.map → traces-data-list-CdWW9J6z.js.map} +1 -1
  652. package/dist/utils/cost.cjs.js +40 -0
  653. package/dist/utils/cost.cjs.js.map +1 -0
  654. package/dist/utils/cost.d.ts +2 -0
  655. package/dist/utils/cost.es.js +34 -0
  656. package/dist/utils/cost.es.js.map +1 -0
  657. package/dist/utils/date-format.cjs.js +99 -0
  658. package/dist/utils/date-format.cjs.js.map +1 -0
  659. package/dist/utils/date-format.d.ts +2 -0
  660. package/dist/utils/date-format.es.js +91 -0
  661. package/dist/utils/date-format.es.js.map +1 -0
  662. package/dist/utils/duration.cjs.js +19 -2
  663. package/dist/utils/duration.cjs.js.map +1 -1
  664. package/dist/utils/duration.es.js +18 -3
  665. package/dist/utils/duration.es.js.map +1 -1
  666. package/dist/utils/file.es.js +2 -2
  667. package/dist/utils/relative-time.cjs.js +12 -0
  668. package/dist/utils/relative-time.cjs.js.map +1 -0
  669. package/dist/utils/relative-time.d.ts +2 -0
  670. package/dist/utils/relative-time.es.js +8 -0
  671. package/dist/utils/relative-time.es.js.map +1 -0
  672. package/package.json +7 -7
  673. package/dist/Badge-BEeYtjmv.cjs.map +0 -1
  674. package/dist/Badge-TD55_qZJ.js.map +0 -1
  675. package/dist/Txt-B4-2nLaI.cjs.map +0 -1
  676. package/dist/Txt-DTh3Pa_a.js.map +0 -1
  677. package/dist/data-list-top-DpbOA3uw.js.map +0 -1
  678. package/dist/data-list-top-WGUY167p.cjs.map +0 -1
  679. package/dist/field-error-id-6EfqmQ4C.cjs.map +0 -1
  680. package/dist/field-error-id-DyWx33Fu.js.map +0 -1
  681. package/dist/metrics-card-Bzm6m1dy.js.map +0 -1
  682. package/dist/metrics-card-DCCHIG-z.cjs.map +0 -1
  683. package/dist/metrics-kpi-card-Bhb4R4z0.cjs.map +0 -1
  684. package/dist/metrics-kpi-card-BrnFhFQm.js.map +0 -1
  685. package/dist/metrics-line-chart-0FR3SYSt.cjs.map +0 -1
  686. package/dist/metrics-line-chart-knlgw8bV.js.map +0 -1
  687. package/dist/page-header-CyXAezlZ.js.map +0 -1
  688. package/dist/page-header-Dk3s3XtC.cjs.map +0 -1
  689. package/dist/settings-row-B2IekRyH.js.map +0 -1
  690. package/dist/settings-row-BoAuUUuH.cjs.map +0 -1
  691. package/dist/src/ds/components/Table/utils.d.ts +0 -4
@@ -1,20 +1,190 @@
1
- import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { ChevronRight, ListChecks, Circle, Loader2, CheckCircle2 } from 'lucide-react';
3
- import { useState } from 'react';
4
- import { C as Collapsible, a as CollapsibleContent, b as CollapsibleTrigger } from '../../collapsible-DhhP5p1j.js';
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { ChevronDown } from 'lucide-react';
3
+ import { useId, useRef, useEffectEvent, useEffect, useState } from 'react';
4
+ import { c as cn } from '../../cn-65Adrsfj.js';
5
5
  import { S as ScrollArea } from '../../scroll-area-DyTZoISq.js';
6
6
  import { b as TooltipProvider, T as Tooltip, c as TooltipTrigger, a as TooltipContent } from '../../tooltip-BrDiP0RI.js';
7
7
  import { raisedSurfaceStyle } from '../../primitives/raised-surface.es.js';
8
- import { c as cn } from '../../cn-65Adrsfj.js';
8
+ import { focusRing, transitions } from '../../primitives/transitions.es.js';
9
9
 
10
- const TaskListContainer = ({ className, ...props }) => /* @__PURE__ */ jsx("section", { className: cn(raisedSurfaceStyle, "rounded-2xl px-3 py-2.5", className), ...props });
11
- const TaskListHeader = ({ className, ...props }) => /* @__PURE__ */ jsx(
12
- CollapsibleTrigger,
13
- {
14
- className: cn("flex w-full cursor-pointer items-center gap-2 text-left text-muted-foreground", className),
15
- ...props
10
+ const TASK_ROW_HEIGHT = 28;
11
+ const TASK_GRAPH_MOTION_MS = 600;
12
+ const taskGraphMotion = "duration-[600ms] ease-(--resize-ease) motion-reduce:transition-none";
13
+ const taskGraphNodeClass = "absolute top-1/2 left-0.5 -translate-y-1/2 transition-[translate]";
14
+ const taskGraphLaneShift = {
15
+ completed: "translate-x-0",
16
+ in_progress: "translate-x-4",
17
+ pending: "translate-x-0"
18
+ };
19
+
20
+ const TRUNK_X = 8;
21
+ const LANE_X = 24;
22
+ const laneX = (status, singleLane) => status === "in_progress" && !singleLane ? LANE_X : TRUNK_X;
23
+ const rowCenter = (index) => index * TASK_ROW_HEIGHT + TASK_ROW_HEIGHT / 2;
24
+ const ink = {
25
+ completed: "var(--accent1)",
26
+ in_progress: "var(--accent6)",
27
+ pending: "color-mix(in oklab, var(--muted-foreground) 45%, transparent)"
28
+ };
29
+ const connectorPathData = (upper, lower, index, singleLane) => {
30
+ const fromY = rowCenter(index);
31
+ const toY = rowCenter(index + 1);
32
+ const midY = (fromY + toY) / 2;
33
+ const fromX = laneX(upper, singleLane);
34
+ const toX = laneX(lower, singleLane);
35
+ return `M ${fromX} ${fromY} C ${fromX} ${midY} ${toX} ${midY} ${toX} ${toY}`;
36
+ };
37
+ const TaskGraphSegment = ({ upper, lower, index, graphId, singleLane }) => {
38
+ const pathData = connectorPathData(upper, lower, index, singleLane);
39
+ const d = `path("${pathData}")`;
40
+ const reached = upper !== "pending" && lower !== "pending";
41
+ const touchesActive = upper === "in_progress" || lower === "in_progress";
42
+ return /* @__PURE__ */ jsxs("g", { children: [
43
+ /* @__PURE__ */ jsx(
44
+ "path",
45
+ {
46
+ d: pathData,
47
+ fill: "none",
48
+ strokeWidth: 1,
49
+ mask: `url(#${graphId}-future)`,
50
+ className: cn("transition-[d]", taskGraphMotion),
51
+ style: { d, stroke: ink.pending }
52
+ }
53
+ ),
54
+ /* @__PURE__ */ jsx(
55
+ "path",
56
+ {
57
+ d: pathData,
58
+ fill: "none",
59
+ strokeWidth: 1,
60
+ pathLength: 1,
61
+ strokeDasharray: "1 1",
62
+ className: cn("transition-[d,stroke-dashoffset,stroke]", taskGraphMotion),
63
+ style: { d, strokeDashoffset: reached ? 0 : 1, stroke: touchesActive ? ink.in_progress : ink.completed }
64
+ }
65
+ )
66
+ ] });
67
+ };
68
+ const TaskGraphLines = ({ statuses, singleLane = false }) => {
69
+ const graphId = `task-graph${useId().replace(/[^a-zA-Z0-9]/g, "")}`;
70
+ const height = statuses.length * TASK_ROW_HEIGHT;
71
+ const maskBox = { x: -8, y: 0, width: LANE_X + 24, height };
72
+ return /* @__PURE__ */ jsxs(
73
+ "svg",
74
+ {
75
+ "aria-hidden": true,
76
+ width: LANE_X + 8,
77
+ height,
78
+ className: "pointer-events-none absolute top-0 left-0 overflow-visible",
79
+ children: [
80
+ /* @__PURE__ */ jsxs("defs", { children: [
81
+ /* @__PURE__ */ jsxs("linearGradient", { id: `${graphId}-fade`, gradientUnits: "userSpaceOnUse", x1: 0, x2: 0, y1: 0, y2: height, children: [
82
+ /* @__PURE__ */ jsx("stop", { offset: "0", stopColor: "white", stopOpacity: 1 }),
83
+ /* @__PURE__ */ jsx("stop", { offset: "1", stopColor: "white", stopOpacity: 0.15 })
84
+ ] }),
85
+ /* @__PURE__ */ jsx("mask", { id: `${graphId}-future`, maskUnits: "userSpaceOnUse", ...maskBox, children: /* @__PURE__ */ jsx("rect", { ...maskBox, fill: `url(#${graphId}-fade)` }) }),
86
+ /* @__PURE__ */ jsxs("linearGradient", { id: `${graphId}-gap`, x1: 0, x2: 0, y1: 0, y2: 1, children: [
87
+ /* @__PURE__ */ jsx("stop", { offset: "0.2", stopColor: "white", stopOpacity: 0 }),
88
+ /* @__PURE__ */ jsx("stop", { offset: "0.4", stopColor: "white", stopOpacity: 1 }),
89
+ /* @__PURE__ */ jsx("stop", { offset: "0.6", stopColor: "white", stopOpacity: 1 }),
90
+ /* @__PURE__ */ jsx("stop", { offset: "0.8", stopColor: "white", stopOpacity: 0 })
91
+ ] }),
92
+ /* @__PURE__ */ jsx(
93
+ "pattern",
94
+ {
95
+ id: `${graphId}-gaps`,
96
+ patternUnits: "userSpaceOnUse",
97
+ x: maskBox.x,
98
+ y: TASK_ROW_HEIGHT / 2,
99
+ width: maskBox.width,
100
+ height: TASK_ROW_HEIGHT,
101
+ children: /* @__PURE__ */ jsx("rect", { width: maskBox.width, height: TASK_ROW_HEIGHT, fill: `url(#${graphId}-gap)` })
102
+ }
103
+ ),
104
+ /* @__PURE__ */ jsx("mask", { id: `${graphId}-between-nodes`, maskUnits: "userSpaceOnUse", ...maskBox, children: /* @__PURE__ */ jsx("rect", { ...maskBox, fill: `url(#${graphId}-gaps)` }) })
105
+ ] }),
106
+ /* @__PURE__ */ jsx("g", { mask: `url(#${graphId}-between-nodes)`, children: statuses.map((status, index) => {
107
+ const next = statuses[index + 1];
108
+ if (!next) return null;
109
+ return /* @__PURE__ */ jsx(
110
+ TaskGraphSegment,
111
+ {
112
+ upper: status,
113
+ lower: next,
114
+ index,
115
+ graphId,
116
+ singleLane
117
+ },
118
+ index
119
+ );
120
+ }) })
121
+ ]
122
+ }
123
+ );
124
+ };
125
+
126
+ const prefersReducedMotion = () => window.matchMedia?.("(prefers-reduced-motion: reduce)").matches ?? false;
127
+ const easeOutQuint = (progress) => 1 - (1 - progress) ** 5;
128
+ const glideScrollTop = (viewport, top) => {
129
+ const start = viewport.scrollTop;
130
+ const distance = top - start;
131
+ if (prefersReducedMotion()) {
132
+ viewport.scrollTo({ top });
133
+ return () => {
134
+ };
16
135
  }
17
- );
136
+ let frame = 0;
137
+ const startedAt = performance.now();
138
+ const step = (now) => {
139
+ const progress = Math.min((now - startedAt) / TASK_GRAPH_MOTION_MS, 1);
140
+ viewport.scrollTo({ top: start + distance * easeOutQuint(progress) });
141
+ if (progress < 1) frame = requestAnimationFrame(step);
142
+ };
143
+ frame = requestAnimationFrame(step);
144
+ return () => cancelAnimationFrame(frame);
145
+ };
146
+ const revealedScrollTop = (rowIndex, currentTop, windowHeight) => {
147
+ const rowTop = rowIndex * TASK_ROW_HEIGHT;
148
+ const rowBottom = rowTop + TASK_ROW_HEIGHT;
149
+ if (rowTop < currentTop) return rowTop;
150
+ if (rowBottom > currentTop + windowHeight) return rowBottom - windowHeight;
151
+ return currentTop;
152
+ };
153
+ const EXPANDED_VISIBLE_ROWS = 4.5;
154
+ const taskWindowHeight = (rowCount, open) => open ? Math.min(rowCount, EXPANDED_VISIBLE_ROWS) * TASK_ROW_HEIGHT : TASK_ROW_HEIGHT;
155
+ const wantedScrollTop = (currentTop, { focusIndex, windowHeight, open, followFocus }) => {
156
+ if (!open) return focusIndex * TASK_ROW_HEIGHT;
157
+ if (!followFocus) return currentTop;
158
+ return revealedScrollTop(focusIndex, currentTop, windowHeight);
159
+ };
160
+ const clampScrollTop = (top, contentHeight, windowHeight) => Math.min(Math.max(top, 0), Math.max(contentHeight - windowHeight, 0));
161
+ const useFocusedRowScroll = ({ focusIndex, rowCount, open, followFocus }) => {
162
+ const viewportRef = useRef(null);
163
+ const cancelGlide = useRef(void 0);
164
+ const placedOnce = useRef(false);
165
+ const glideForOpen = (nextOpen) => {
166
+ const viewport = viewportRef.current;
167
+ if (!viewport || typeof viewport.scrollTo !== "function") return;
168
+ const windowHeight = taskWindowHeight(rowCount, nextOpen);
169
+ const wantedTop = wantedScrollTop(viewport.scrollTop, { focusIndex, windowHeight, open: nextOpen, followFocus });
170
+ const top = clampScrollTop(wantedTop, rowCount * TASK_ROW_HEIGHT, windowHeight);
171
+ cancelGlide.current?.();
172
+ if (!placedOnce.current) {
173
+ placedOnce.current = true;
174
+ viewport.scrollTo({ top });
175
+ return;
176
+ }
177
+ if (top !== viewport.scrollTop) cancelGlide.current = glideScrollTop(viewport, top);
178
+ };
179
+ const followFocusedRow = useEffectEvent(() => glideForOpen(open));
180
+ useEffect(() => {
181
+ followFocusedRow();
182
+ return () => cancelGlide.current?.();
183
+ }, [focusIndex]);
184
+ return { viewportRef, glideForOpen };
185
+ };
186
+
187
+ const TaskListContainer = ({ className, ...props }) => /* @__PURE__ */ jsx("section", { className: cn(raisedSurfaceStyle, "overflow-hidden rounded-2xl", className), ...props });
18
188
  const barColors = {
19
189
  completed: "bg-positive1",
20
190
  in_progress: "bg-warning1",
@@ -39,7 +209,11 @@ const TaskListProgress = ({ tasks, className, ...props }) => {
39
209
  children: tasks.map((task) => /* @__PURE__ */ jsx(
40
210
  "span",
41
211
  {
42
- className: cn("h-full w-0.5 min-w-px shrink rounded-full", barColors[task.status])
212
+ className: cn(
213
+ "h-full w-0.5 min-w-px shrink rounded-full transition-colors",
214
+ taskGraphMotion,
215
+ barColors[task.status]
216
+ )
43
217
  },
44
218
  task.id
45
219
  ))
@@ -55,69 +229,211 @@ const TaskListProgress = ({ tasks, className, ...props }) => {
55
229
  ] })
56
230
  ] }) });
57
231
  };
58
- const icons = {
59
- completed: /* @__PURE__ */ jsx(CheckCircle2, { className: "size-3.5 shrink-0 text-positive1" }),
60
- in_progress: /* @__PURE__ */ jsx(Loader2, { className: "size-3.5 shrink-0 text-warning1 motion-safe:animate-spin" }),
61
- pending: /* @__PURE__ */ jsx(Circle, { className: "size-3.5 shrink-0 text-muted-foreground" })
62
- };
63
232
  const statusLabels = {
64
233
  completed: "Completed",
65
234
  in_progress: "In progress",
66
235
  pending: "Pending"
67
236
  };
68
- const textClasses = {
69
- completed: "text-muted-foreground line-through",
70
- in_progress: "text-column text-warning1",
71
- pending: "text-foreground"
237
+ const ringClasses = {
238
+ completed: "size-[7px] border-accent1 bg-card",
239
+ in_progress: "size-2 border-accent6 bg-accent6/25",
240
+ pending: "size-1.5 border-muted-foreground/45 bg-card"
72
241
  };
73
- const taskLabel = (task) => task.status === "in_progress" ? task.activeForm : task.content;
74
- const TaskListStatusIcon = ({ status, className, ...props }) => /* @__PURE__ */ jsx("span", { "aria-label": statusLabels[status], className: cn("flex pt-0.5", className), ...props, children: icons[status] });
75
- const TaskListRow = ({ task, className, ...props }) => /* @__PURE__ */ jsxs("li", { className: cn("flex items-start gap-2 py-0.5", className), ...props, children: [
76
- /* @__PURE__ */ jsx(TaskListStatusIcon, { status: task.status }),
77
- /* @__PURE__ */ jsx("span", { className: cn("text-caption", textClasses[task.status]), children: taskLabel(task) })
78
- ] });
79
- const TaskListSummary = ({ task }) => /* @__PURE__ */ jsxs("span", { className: "flex min-w-0 flex-1 items-center gap-2", children: [
80
- /* @__PURE__ */ jsx(TaskListStatusIcon, { status: task.status, className: "pt-0" }),
81
- /* @__PURE__ */ jsx("span", { className: cn("truncate text-caption", textClasses[task.status]), children: taskLabel(task) })
82
- ] });
83
- const TaskListTitle = ({ title }) => /* @__PURE__ */ jsxs("span", { className: "flex min-w-0 flex-1 items-center gap-2", children: [
84
- /* @__PURE__ */ jsx(ListChecks, { className: "size-4 shrink-0 text-accent6" }),
85
- /* @__PURE__ */ jsx("span", { className: "truncate text-column text-foreground", children: title })
242
+ const TaskListStatusIcon = ({ status, className, ...props }) => /* @__PURE__ */ jsx(
243
+ "span",
244
+ {
245
+ role: "img",
246
+ "aria-label": statusLabels[status],
247
+ className: cn("grid size-3 shrink-0 place-items-center rounded-full", className),
248
+ ...props,
249
+ children: /* @__PURE__ */ jsx(
250
+ "span",
251
+ {
252
+ className: cn(
253
+ "rounded-full border-[1.5px] transition-[width,height,border-color,background-color]",
254
+ taskGraphMotion,
255
+ ringClasses[status]
256
+ )
257
+ }
258
+ )
259
+ }
260
+ );
261
+ const TaskListLabel = ({ task }) => {
262
+ const active = task.status === "in_progress";
263
+ return /* @__PURE__ */ jsxs("span", { className: "grid min-w-0 text-caption", children: [
264
+ /* @__PURE__ */ jsx(
265
+ "span",
266
+ {
267
+ "aria-hidden": active,
268
+ className: cn(
269
+ "col-start-1 row-start-1 truncate transition-[opacity,color,translate,filter]",
270
+ taskGraphMotion,
271
+ task.status === "pending" ? "text-muted-foreground/70" : "text-muted-foreground",
272
+ active ? "-translate-y-1 opacity-0 blur-[2px]" : "translate-y-0 opacity-100 blur-none"
273
+ ),
274
+ children: /* @__PURE__ */ jsx(
275
+ "span",
276
+ {
277
+ className: cn(
278
+ "bg-[linear-gradient(currentColor,currentColor)] bg-no-repeat transition-[background-size]",
279
+ taskGraphMotion,
280
+ task.status === "completed" ? "bg-size-[100%_1px] bg-position-[left_55%]" : "bg-size-[0%_1px] bg-position-[right_55%]"
281
+ ),
282
+ children: task.content
283
+ }
284
+ )
285
+ }
286
+ ),
287
+ /* @__PURE__ */ jsx(
288
+ "span",
289
+ {
290
+ "aria-hidden": !active,
291
+ className: cn(
292
+ "col-start-1 row-start-1 truncate bg-linear-to-r from-accent6 to-foreground to-30% bg-size-[200%_100%] bg-clip-text font-medium text-transparent transition-[opacity,translate,filter,background-position] dark:from-[color-mix(in_oklab,var(--accent6)_60%,var(--foreground))]",
293
+ taskGraphMotion,
294
+ active ? "translate-y-0 bg-position-[0%_0] opacity-100 blur-none" : "translate-y-1 bg-position-[100%_0] opacity-0 blur-[2px]"
295
+ ),
296
+ children: task.activeForm
297
+ }
298
+ )
299
+ ] });
300
+ };
301
+ const TaskListRow = ({ task, className, style, ...props }) => /* @__PURE__ */ jsxs("li", { className: cn("relative flex items-center", className), style: { height: TASK_ROW_HEIGHT, ...style }, ...props, children: [
302
+ /* @__PURE__ */ jsx(
303
+ TaskListStatusIcon,
304
+ {
305
+ status: task.status,
306
+ className: cn(
307
+ taskGraphNodeClass,
308
+ taskGraphMotion,
309
+ taskGraphLaneShift[task.status],
310
+ "group-data-collapsed/task-list:translate-x-0"
311
+ )
312
+ }
313
+ ),
314
+ /* @__PURE__ */ jsx(
315
+ "span",
316
+ {
317
+ className: cn(
318
+ "flex min-w-0 transition-[padding-left]",
319
+ taskGraphMotion,
320
+ task.status === "in_progress" ? "pl-10 group-data-collapsed/task-list:pl-6" : "pl-6"
321
+ ),
322
+ children: /* @__PURE__ */ jsx(TaskListLabel, { task })
323
+ }
324
+ )
86
325
  ] });
87
- const scrollTaskIntoView = (node) => {
88
- if (typeof node?.scrollIntoView === "function") node.scrollIntoView({ block: "nearest" });
326
+ const LIST_INSET_Y = 10;
327
+ const edgeFades = "mask-no-repeat [--fade-bottom:0.875rem] [--fade-top:0.875rem] [mask-composite:subtract,add] [mask-image:linear-gradient(black,black),linear-gradient(to_bottom,black_40%,transparent),linear-gradient(to_top,black_40%,transparent)] [mask-position:0_0,0_0,0_100%] [mask-size:100%_100%,100%_var(--fade-top),100%_var(--fade-bottom)]";
328
+ const edgeFadesWhenScrolled = "data-[overflow-y-end]:[--fade-bottom:2rem] data-[overflow-y-start]:[--fade-top:2rem]";
329
+ const focusedTaskIndex = (tasks) => {
330
+ const activeIndex = tasks.findIndex((task) => task.status === "in_progress");
331
+ if (activeIndex >= 0) return activeIndex;
332
+ const pendingIndex = tasks.findIndex((task) => task.status === "pending");
333
+ if (pendingIndex >= 0) return pendingIndex;
334
+ return tasks.length - 1;
89
335
  };
90
336
  const TaskList = ({
91
337
  tasks,
92
- title = "Tasks",
93
- hideWhenEmpty = true,
94
338
  hideWhenComplete = true,
95
339
  scrollActiveIntoView = true,
96
340
  defaultOpen = true,
341
+ className,
97
342
  ...props
98
343
  }) => {
99
344
  const [open, setOpen] = useState(defaultOpen);
100
- const activeTask = tasks.find((task) => task.status === "in_progress");
101
- const summaryTask = activeTask ?? tasks.find((task) => task.status === "pending");
345
+ const listId = useId();
102
346
  const completed = tasks.filter((task) => task.status === "completed").length;
103
347
  const total = tasks.length;
104
- if (hideWhenEmpty && total === 0 || hideWhenComplete && total > 0 && completed === total) return null;
105
- return /* @__PURE__ */ jsx(TaskListContainer, { "aria-label": "Task list", "data-testid": "task-list", ...props, children: /* @__PURE__ */ jsxs(Collapsible, { open, onOpenChange: setOpen, children: [
106
- /* @__PURE__ */ jsxs(TaskListHeader, { children: [
107
- /* @__PURE__ */ jsx(ChevronRight, { className: "size-3.5 shrink-0" }),
108
- open || !summaryTask ? /* @__PURE__ */ jsx(TaskListTitle, { title }) : /* @__PURE__ */ jsx(TaskListSummary, { task: summaryTask }),
109
- /* @__PURE__ */ jsx(TaskListProgress, { tasks })
110
- ] }),
111
- /* @__PURE__ */ jsx(CollapsibleContent, { children: /* @__PURE__ */ jsx(ScrollArea, { maxHeight: "8rem", viewPortClassName: "pr-1", className: "mt-1", children: /* @__PURE__ */ jsx("ul", { className: "space-y-1", children: tasks.map((task) => /* @__PURE__ */ jsx(
112
- TaskListRow,
113
- {
114
- ref: scrollActiveIntoView && task.id === activeTask?.id ? scrollTaskIntoView : void 0,
115
- task
116
- },
117
- task.id
118
- )) }) }) })
119
- ] }) });
348
+ const focusIndex = focusedTaskIndex(tasks);
349
+ const windowHeight = taskWindowHeight(total, open);
350
+ const { viewportRef, glideForOpen } = useFocusedRowScroll({
351
+ focusIndex,
352
+ rowCount: total,
353
+ open,
354
+ followFocus: scrollActiveIntoView
355
+ });
356
+ const changeOpen = (nextOpen) => {
357
+ setOpen(nextOpen);
358
+ glideForOpen(nextOpen);
359
+ };
360
+ if (total === 0 || hideWhenComplete && completed === total) return null;
361
+ return /* @__PURE__ */ jsxs(
362
+ TaskListContainer,
363
+ {
364
+ "aria-label": "Task list",
365
+ "data-testid": "task-list",
366
+ "data-collapsed": open ? void 0 : "",
367
+ onClick: open ? void 0 : () => changeOpen(true),
368
+ className: cn("group/task-list relative", !open && "cursor-pointer", className),
369
+ ...props,
370
+ children: [
371
+ /* @__PURE__ */ jsx(
372
+ ScrollArea,
373
+ {
374
+ id: listId,
375
+ maxHeight: `${windowHeight + 2 * LIST_INSET_Y}px`,
376
+ mask: false,
377
+ viewPortClassName: cn(
378
+ edgeFades,
379
+ "transition-[max-height,mask-size]",
380
+ taskGraphMotion,
381
+ open ? edgeFadesWhenScrolled : "overflow-hidden!"
382
+ ),
383
+ viewportRef,
384
+ children: /* @__PURE__ */ jsx("div", { className: "px-3", style: { paddingBlock: LIST_INSET_Y }, children: /* @__PURE__ */ jsxs("div", { className: "relative", children: [
385
+ /* @__PURE__ */ jsx(TaskGraphLines, { statuses: tasks.map((task) => task.status), singleLane: !open }),
386
+ /* @__PURE__ */ jsx("ul", { children: tasks.map((task, index) => {
387
+ const clippedAway = !open && index !== focusIndex;
388
+ return /* @__PURE__ */ jsx(TaskListRow, { task, inert: clippedAway, "aria-hidden": clippedAway }, task.id);
389
+ }) })
390
+ ] }) })
391
+ }
392
+ ),
393
+ /* @__PURE__ */ jsxs("div", { className: "absolute top-2.5 right-3 flex h-7 items-center bg-linear-to-r from-transparent to-card to-[1.5rem] pl-6", children: [
394
+ /* @__PURE__ */ jsx(
395
+ "div",
396
+ {
397
+ inert: open,
398
+ "aria-hidden": open,
399
+ className: cn(
400
+ "grid transition-[grid-template-columns,opacity]",
401
+ taskGraphMotion,
402
+ open ? "grid-cols-[0fr] opacity-0" : "grid-cols-[1fr] opacity-100"
403
+ ),
404
+ children: /* @__PURE__ */ jsx("div", { className: "min-w-0 overflow-hidden", children: /* @__PURE__ */ jsx(TaskListProgress, { tasks, className: "mr-2" }) })
405
+ }
406
+ ),
407
+ /* @__PURE__ */ jsx(
408
+ "button",
409
+ {
410
+ type: "button",
411
+ "aria-label": open ? "Collapse tasks" : "Show all tasks",
412
+ "aria-expanded": open,
413
+ "aria-controls": listId,
414
+ onClick: (event) => {
415
+ event.stopPropagation();
416
+ changeOpen(!open);
417
+ },
418
+ className: cn(
419
+ "grid size-6 cursor-pointer place-items-center rounded-md text-muted-foreground hover:text-foreground",
420
+ transitions.colors,
421
+ focusRing.visible,
422
+ !open && "group-hover/task-list:text-foreground"
423
+ ),
424
+ children: /* @__PURE__ */ jsx(
425
+ ChevronDown,
426
+ {
427
+ className: cn("size-3.5 transition-[rotate]", taskGraphMotion, open ? "rotate-180" : "rotate-0")
428
+ }
429
+ )
430
+ }
431
+ )
432
+ ] })
433
+ ]
434
+ }
435
+ );
120
436
  };
121
437
 
122
- export { TaskList, TaskListContainer, TaskListHeader, TaskListProgress, TaskListRow, TaskListStatusIcon };
438
+ export { TaskList, TaskListContainer, TaskListProgress, TaskListRow, TaskListStatusIcon };
123
439
  //# sourceMappingURL=task-list.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"task-list.es.js","sources":["../../../src/ds/components/ai/task-list/task-list.tsx"],"sourcesContent":["import type { TaskItem } from '@mastra/core/signals';\nimport { CheckCircle2, ChevronRight, Circle, ListChecks, Loader2 } from 'lucide-react';\nimport { useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/ds/components/Collapsible';\nimport { ScrollArea } from '@/ds/components/ScrollArea';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { raisedSurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { cn } from '@/lib/utils';\n\nexport type TaskListItem = TaskItem;\n\nexport const TaskListContainer = ({ className, ...props }: ComponentProps<'section'>) => (\n <section className={cn(raisedSurfaceStyle, 'rounded-2xl px-3 py-2.5', className)} {...props} />\n);\n\nexport const TaskListHeader = ({ className, ...props }: ComponentProps<typeof CollapsibleTrigger>) => (\n <CollapsibleTrigger\n className={cn('flex w-full cursor-pointer items-center gap-2 text-left text-muted-foreground', className)}\n {...props}\n />\n);\n\nconst barColors: Record<TaskListItem['status'], string> = {\n completed: 'bg-positive1',\n in_progress: 'bg-warning1',\n pending: 'bg-fill-hover',\n};\n\nexport interface TaskListProgressProps extends Omit<ComponentProps<'span'>, 'children'> {\n tasks: TaskListItem[];\n}\n\nexport const TaskListProgress = ({ tasks, className, ...props }: TaskListProgressProps) => {\n const completed = tasks.filter(task => task.status === 'completed').length;\n return (\n <TooltipProvider delayDuration={0}>\n <Tooltip>\n <TooltipTrigger\n render={\n <span\n role=\"progressbar\"\n aria-label=\"Task completion\"\n aria-valuemin={0}\n aria-valuemax={tasks.length}\n aria-valuenow={completed}\n className={cn('ml-auto flex h-4 w-fit max-w-40 shrink-0 items-center gap-1 overflow-hidden', className)}\n {...props}\n >\n {tasks.map(task => (\n <span\n key={task.id}\n className={cn('h-full w-0.5 min-w-px shrink rounded-full', barColors[task.status])}\n />\n ))}\n </span>\n }\n />\n <TooltipContent>\n {completed}/{tasks.length} completed\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n};\n\nconst icons: Record<TaskListItem['status'], ReactNode> = {\n completed: <CheckCircle2 className=\"size-3.5 shrink-0 text-positive1\" />,\n in_progress: <Loader2 className=\"size-3.5 shrink-0 text-warning1 motion-safe:animate-spin\" />,\n pending: <Circle className=\"size-3.5 shrink-0 text-muted-foreground\" />,\n};\n\nconst statusLabels: Record<TaskListItem['status'], string> = {\n completed: 'Completed',\n in_progress: 'In progress',\n pending: 'Pending',\n};\n\nconst textClasses: Record<TaskListItem['status'], string> = {\n completed: 'text-muted-foreground line-through',\n in_progress: 'text-column text-warning1',\n pending: 'text-foreground',\n};\n\nconst taskLabel = (task: TaskListItem) => (task.status === 'in_progress' ? task.activeForm : task.content);\n\nexport interface TaskListStatusIconProps extends ComponentProps<'span'> {\n status: TaskListItem['status'];\n}\n\nexport const TaskListStatusIcon = ({ status, className, ...props }: TaskListStatusIconProps) => (\n <span aria-label={statusLabels[status]} className={cn('flex pt-0.5', className)} {...props}>\n {icons[status]}\n </span>\n);\n\nexport interface TaskListRowProps extends ComponentProps<'li'> {\n task: TaskListItem;\n}\n\nexport const TaskListRow = ({ task, className, ...props }: TaskListRowProps) => (\n <li className={cn('flex items-start gap-2 py-0.5', className)} {...props}>\n <TaskListStatusIcon status={task.status} />\n <span className={cn('text-caption', textClasses[task.status])}>{taskLabel(task)}</span>\n </li>\n);\n\nconst TaskListSummary = ({ task }: { task: TaskListItem }) => (\n <span className=\"flex min-w-0 flex-1 items-center gap-2\">\n <TaskListStatusIcon status={task.status} className=\"pt-0\" />\n <span className={cn('truncate text-caption', textClasses[task.status])}>{taskLabel(task)}</span>\n </span>\n);\n\nconst TaskListTitle = ({ title }: { title: ReactNode }) => (\n <span className=\"flex min-w-0 flex-1 items-center gap-2\">\n <ListChecks className=\"size-4 shrink-0 text-accent6\" />\n <span className=\"truncate text-column text-foreground\">{title}</span>\n </span>\n);\n\nconst scrollTaskIntoView = (node: HTMLLIElement | null) => {\n if (typeof node?.scrollIntoView === 'function') node.scrollIntoView({ block: 'nearest' });\n};\n\nexport interface TaskListProps extends Omit<ComponentProps<typeof TaskListContainer>, 'children' | 'title'> {\n tasks: TaskListItem[];\n title?: ReactNode;\n hideWhenEmpty?: boolean;\n hideWhenComplete?: boolean;\n scrollActiveIntoView?: boolean;\n defaultOpen?: boolean;\n}\n\nexport const TaskList = ({\n tasks,\n title = 'Tasks',\n hideWhenEmpty = true,\n hideWhenComplete = true,\n scrollActiveIntoView = true,\n defaultOpen = true,\n ...props\n}: TaskListProps) => {\n const [open, setOpen] = useState(defaultOpen);\n const activeTask = tasks.find(task => task.status === 'in_progress');\n const summaryTask = activeTask ?? tasks.find(task => task.status === 'pending');\n const completed = tasks.filter(task => task.status === 'completed').length;\n const total = tasks.length;\n\n if ((hideWhenEmpty && total === 0) || (hideWhenComplete && total > 0 && completed === total)) return null;\n\n return (\n <TaskListContainer aria-label=\"Task list\" data-testid=\"task-list\" {...props}>\n <Collapsible open={open} onOpenChange={setOpen}>\n <TaskListHeader>\n <ChevronRight className=\"size-3.5 shrink-0\" />\n {open || !summaryTask ? <TaskListTitle title={title} /> : <TaskListSummary task={summaryTask} />}\n <TaskListProgress tasks={tasks} />\n </TaskListHeader>\n <CollapsibleContent>\n <ScrollArea maxHeight=\"8rem\" viewPortClassName=\"pr-1\" className=\"mt-1\">\n <ul className=\"space-y-1\">\n {tasks.map(task => (\n <TaskListRow\n key={task.id}\n ref={scrollActiveIntoView && task.id === activeTask?.id ? scrollTaskIntoView : undefined}\n task={task}\n />\n ))}\n </ul>\n </ScrollArea>\n </CollapsibleContent>\n </Collapsible>\n </TaskListContainer>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task-list.es.js","sources":["../../../src/ds/components/ai/task-list/task-graph-node.ts","../../../src/ds/components/ai/task-list/task-graph.tsx","../../../src/ds/components/ai/task-list/use-focused-row-scroll.ts","../../../src/ds/components/ai/task-list/task-list.tsx"],"sourcesContent":["import type { TaskItem } from '@mastra/core/signals';\n\ntype TaskStatus = TaskItem['status'];\n\nexport const TASK_ROW_HEIGHT = 28;\nexport const TASK_GRAPH_MOTION_MS = 600;\n\n/* One timing for nodes and lines, so a line end never detaches from its node mid-move. */\nexport const taskGraphMotion = 'duration-[600ms] ease-(--resize-ease) motion-reduce:transition-none';\n\n/* left-0.5 centres the 12px node on the trunk (x=8); translate-x-4 lands it on the lane (x=24). */\nexport const taskGraphNodeClass = 'absolute top-1/2 left-0.5 -translate-y-1/2 transition-[translate]';\nexport const taskGraphLaneShift: Record<TaskStatus, string> = {\n completed: 'translate-x-0',\n in_progress: 'translate-x-4',\n pending: 'translate-x-0',\n};\n","import type { TaskItem } from '@mastra/core/signals';\nimport { useId } from 'react';\nimport { TASK_ROW_HEIGHT, taskGraphMotion } from './task-graph-node';\nimport { cn } from '@/lib/utils';\n\ntype TaskStatus = TaskItem['status'];\n\nconst TRUNK_X = 8;\nconst LANE_X = 24;\n\nconst laneX = (status: TaskStatus, singleLane: boolean) => (status === 'in_progress' && !singleLane ? LANE_X : TRUNK_X);\nconst rowCenter = (index: number) => index * TASK_ROW_HEIGHT + TASK_ROW_HEIGHT / 2;\n\nconst ink: Record<TaskStatus, string> = {\n completed: 'var(--accent1)',\n in_progress: 'var(--accent6)',\n pending: 'color-mix(in oklab, var(--muted-foreground) 45%, transparent)',\n};\n\nconst connectorPathData = (upper: TaskStatus, lower: TaskStatus, index: number, singleLane: boolean) => {\n const fromY = rowCenter(index);\n const toY = rowCenter(index + 1);\n const midY = (fromY + toY) / 2;\n const fromX = laneX(upper, singleLane);\n const toX = laneX(lower, singleLane);\n return `M ${fromX} ${fromY} C ${fromX} ${midY} ${toX} ${midY} ${toX} ${toY}`;\n};\n\ninterface TaskGraphSegmentProps {\n upper: TaskStatus;\n lower: TaskStatus;\n index: number;\n graphId: string;\n singleLane: boolean;\n}\n\nconst TaskGraphSegment = ({ upper, lower, index, graphId, singleLane }: TaskGraphSegmentProps) => {\n const pathData = connectorPathData(upper, lower, index, singleLane);\n const d = `path(\"${pathData}\")`;\n const reached = upper !== 'pending' && lower !== 'pending';\n const touchesActive = upper === 'in_progress' || lower === 'in_progress';\n\n return (\n <g>\n <path\n d={pathData}\n fill=\"none\"\n strokeWidth={1}\n mask={`url(#${graphId}-future)`}\n className={cn('transition-[d]', taskGraphMotion)}\n style={{ d, stroke: ink.pending }}\n />\n <path\n d={pathData}\n fill=\"none\"\n strokeWidth={1}\n pathLength={1}\n strokeDasharray=\"1 1\"\n className={cn('transition-[d,stroke-dashoffset,stroke]', taskGraphMotion)}\n style={{ d, strokeDashoffset: reached ? 0 : 1, stroke: touchesActive ? ink.in_progress : ink.completed }}\n />\n </g>\n );\n};\n\ninterface TaskGraphLinesProps {\n statuses: TaskStatus[];\n singleLane?: boolean;\n}\n\nexport const TaskGraphLines = ({ statuses, singleLane = false }: TaskGraphLinesProps) => {\n const graphId = `task-graph${useId().replace(/[^a-zA-Z0-9]/g, '')}`;\n const height = statuses.length * TASK_ROW_HEIGHT;\n const maskBox = { x: -8, y: 0, width: LANE_X + 24, height };\n\n return (\n <svg\n aria-hidden\n width={LANE_X + 8}\n height={height}\n className=\"pointer-events-none absolute top-0 left-0 overflow-visible\"\n >\n <defs>\n <linearGradient id={`${graphId}-fade`} gradientUnits=\"userSpaceOnUse\" x1={0} x2={0} y1={0} y2={height}>\n <stop offset=\"0\" stopColor=\"white\" stopOpacity={1} />\n <stop offset=\"1\" stopColor=\"white\" stopOpacity={0.15} />\n </linearGradient>\n <mask id={`${graphId}-future`} maskUnits=\"userSpaceOnUse\" {...maskBox}>\n <rect {...maskBox} fill={`url(#${graphId}-fade)`} />\n </mask>\n <linearGradient id={`${graphId}-gap`} x1={0} x2={0} y1={0} y2={1}>\n <stop offset=\"0.2\" stopColor=\"white\" stopOpacity={0} />\n <stop offset=\"0.4\" stopColor=\"white\" stopOpacity={1} />\n <stop offset=\"0.6\" stopColor=\"white\" stopOpacity={1} />\n <stop offset=\"0.8\" stopColor=\"white\" stopOpacity={0} />\n </linearGradient>\n <pattern\n id={`${graphId}-gaps`}\n patternUnits=\"userSpaceOnUse\"\n x={maskBox.x}\n y={TASK_ROW_HEIGHT / 2}\n width={maskBox.width}\n height={TASK_ROW_HEIGHT}\n >\n <rect width={maskBox.width} height={TASK_ROW_HEIGHT} fill={`url(#${graphId}-gap)`} />\n </pattern>\n <mask id={`${graphId}-between-nodes`} maskUnits=\"userSpaceOnUse\" {...maskBox}>\n <rect {...maskBox} fill={`url(#${graphId}-gaps)`} />\n </mask>\n </defs>\n <g mask={`url(#${graphId}-between-nodes)`}>\n {statuses.map((status, index) => {\n const next = statuses[index + 1];\n if (!next) return null;\n return (\n <TaskGraphSegment\n key={index}\n upper={status}\n lower={next}\n index={index}\n graphId={graphId}\n singleLane={singleLane}\n />\n );\n })}\n </g>\n </svg>\n );\n};\n","import { useEffect, useEffectEvent, useRef } from 'react';\nimport { TASK_GRAPH_MOTION_MS, TASK_ROW_HEIGHT } from './task-graph-node';\n\nconst prefersReducedMotion = () => window.matchMedia?.('(prefers-reduced-motion: reduce)').matches ?? false;\n\nconst easeOutQuint = (progress: number) => 1 - (1 - progress) ** 5;\n\n/* Scroll position is not a CSS property, so the glide is tweened to match the max-height transition. */\nconst glideScrollTop = (viewport: HTMLElement, top: number) => {\n const start = viewport.scrollTop;\n const distance = top - start;\n if (prefersReducedMotion()) {\n viewport.scrollTo({ top });\n return () => {};\n }\n let frame = 0;\n const startedAt = performance.now();\n const step = (now: number) => {\n const progress = Math.min((now - startedAt) / TASK_GRAPH_MOTION_MS, 1);\n viewport.scrollTo({ top: start + distance * easeOutQuint(progress) });\n if (progress < 1) frame = requestAnimationFrame(step);\n };\n frame = requestAnimationFrame(step);\n return () => cancelAnimationFrame(frame);\n};\n\nconst revealedScrollTop = (rowIndex: number, currentTop: number, windowHeight: number) => {\n const rowTop = rowIndex * TASK_ROW_HEIGHT;\n const rowBottom = rowTop + TASK_ROW_HEIGHT;\n if (rowTop < currentTop) return rowTop;\n if (rowBottom > currentTop + windowHeight) return rowBottom - windowHeight;\n return currentTop;\n};\n\nconst EXPANDED_VISIBLE_ROWS = 4.5;\n\nexport const taskWindowHeight = (rowCount: number, open: boolean) =>\n open ? Math.min(rowCount, EXPANDED_VISIBLE_ROWS) * TASK_ROW_HEIGHT : TASK_ROW_HEIGHT;\n\ninterface ScrollTarget {\n focusIndex: number;\n windowHeight: number;\n open: boolean;\n followFocus: boolean;\n}\n\nconst wantedScrollTop = (currentTop: number, { focusIndex, windowHeight, open, followFocus }: ScrollTarget) => {\n if (!open) return focusIndex * TASK_ROW_HEIGHT;\n if (!followFocus) return currentTop;\n return revealedScrollTop(focusIndex, currentTop, windowHeight);\n};\n\nconst clampScrollTop = (top: number, contentHeight: number, windowHeight: number) =>\n Math.min(Math.max(top, 0), Math.max(contentHeight - windowHeight, 0));\n\ninterface FocusedRowScrollOptions {\n focusIndex: number;\n rowCount: number;\n open: boolean;\n followFocus: boolean;\n}\n\nexport const useFocusedRowScroll = ({ focusIndex, rowCount, open, followFocus }: FocusedRowScrollOptions) => {\n const viewportRef = useRef<HTMLDivElement>(null);\n const cancelGlide = useRef<() => void>(undefined);\n const placedOnce = useRef(false);\n\n const glideForOpen = (nextOpen: boolean) => {\n const viewport = viewportRef.current;\n if (!viewport || typeof viewport.scrollTo !== 'function') return;\n const windowHeight = taskWindowHeight(rowCount, nextOpen);\n const wantedTop = wantedScrollTop(viewport.scrollTop, { focusIndex, windowHeight, open: nextOpen, followFocus });\n const top = clampScrollTop(wantedTop, rowCount * TASK_ROW_HEIGHT, windowHeight);\n cancelGlide.current?.();\n if (!placedOnce.current) {\n placedOnce.current = true;\n viewport.scrollTo({ top });\n return;\n }\n if (top !== viewport.scrollTop) cancelGlide.current = glideScrollTop(viewport, top);\n };\n\n const followFocusedRow = useEffectEvent(() => glideForOpen(open));\n\n useEffect(() => {\n followFocusedRow();\n return () => cancelGlide.current?.();\n }, [focusIndex]);\n\n return { viewportRef, glideForOpen };\n};\n","import type { TaskItem } from '@mastra/core/signals';\nimport { ChevronDown } from 'lucide-react';\nimport { useId, useState } from 'react';\nimport type { ComponentProps } from 'react';\nimport { TaskGraphLines } from './task-graph';\nimport { TASK_ROW_HEIGHT, taskGraphLaneShift, taskGraphMotion, taskGraphNodeClass } from './task-graph-node';\nimport { taskWindowHeight, useFocusedRowScroll } from './use-focused-row-scroll';\nimport { ScrollArea } from '@/ds/components/ScrollArea';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { raisedSurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { focusRing, transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport type TaskListItem = TaskItem;\n\nexport const TaskListContainer = ({ className, ...props }: ComponentProps<'section'>) => (\n <section className={cn(raisedSurfaceStyle, 'overflow-hidden rounded-2xl', className)} {...props} />\n);\n\nconst barColors: Record<TaskListItem['status'], string> = {\n completed: 'bg-positive1',\n in_progress: 'bg-warning1',\n pending: 'bg-fill-hover',\n};\n\nexport interface TaskListProgressProps extends Omit<ComponentProps<'span'>, 'children'> {\n tasks: TaskListItem[];\n}\n\nexport const TaskListProgress = ({ tasks, className, ...props }: TaskListProgressProps) => {\n const completed = tasks.filter(task => task.status === 'completed').length;\n return (\n <TooltipProvider delayDuration={0}>\n <Tooltip>\n <TooltipTrigger\n render={\n <span\n role=\"progressbar\"\n aria-label=\"Task completion\"\n aria-valuemin={0}\n aria-valuemax={tasks.length}\n aria-valuenow={completed}\n className={cn('ml-auto flex h-4 w-fit max-w-40 shrink-0 items-center gap-1 overflow-hidden', className)}\n {...props}\n >\n {tasks.map(task => (\n <span\n key={task.id}\n className={cn(\n 'h-full w-0.5 min-w-px shrink rounded-full transition-colors',\n taskGraphMotion,\n barColors[task.status],\n )}\n />\n ))}\n </span>\n }\n />\n <TooltipContent>\n {completed}/{tasks.length} completed\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n};\n\nconst statusLabels: Record<TaskListItem['status'], string> = {\n completed: 'Completed',\n in_progress: 'In progress',\n pending: 'Pending',\n};\n\nconst ringClasses: Record<TaskListItem['status'], string> = {\n completed: 'size-[7px] border-accent1 bg-card',\n in_progress: 'size-2 border-accent6 bg-accent6/25',\n pending: 'size-1.5 border-muted-foreground/45 bg-card',\n};\n\nexport interface TaskListStatusIconProps extends ComponentProps<'span'> {\n status: TaskListItem['status'];\n}\n\nexport const TaskListStatusIcon = ({ status, className, ...props }: TaskListStatusIconProps) => (\n <span\n role=\"img\"\n aria-label={statusLabels[status]}\n className={cn('grid size-3 shrink-0 place-items-center rounded-full', className)}\n {...props}\n >\n <span\n className={cn(\n 'rounded-full border-[1.5px] transition-[width,height,border-color,background-color]',\n taskGraphMotion,\n ringClasses[status],\n )}\n />\n </span>\n);\n\nconst TaskListLabel = ({ task }: { task: TaskListItem }) => {\n const active = task.status === 'in_progress';\n return (\n <span className=\"grid min-w-0 text-caption\">\n <span\n aria-hidden={active}\n className={cn(\n 'col-start-1 row-start-1 truncate transition-[opacity,color,translate,filter]',\n taskGraphMotion,\n task.status === 'pending' ? 'text-muted-foreground/70' : 'text-muted-foreground',\n active ? '-translate-y-1 opacity-0 blur-[2px]' : 'translate-y-0 opacity-100 blur-none',\n )}\n >\n <span\n className={cn(\n 'bg-[linear-gradient(currentColor,currentColor)] bg-no-repeat transition-[background-size]',\n taskGraphMotion,\n task.status === 'completed'\n ? 'bg-size-[100%_1px] bg-position-[left_55%]'\n : 'bg-size-[0%_1px] bg-position-[right_55%]',\n )}\n >\n {task.content}\n </span>\n </span>\n <span\n aria-hidden={!active}\n className={cn(\n 'col-start-1 row-start-1 truncate bg-linear-to-r from-accent6 to-foreground to-30% bg-size-[200%_100%] bg-clip-text font-medium text-transparent transition-[opacity,translate,filter,background-position] dark:from-[color-mix(in_oklab,var(--accent6)_60%,var(--foreground))]',\n taskGraphMotion,\n active\n ? 'translate-y-0 bg-position-[0%_0] opacity-100 blur-none'\n : 'translate-y-1 bg-position-[100%_0] opacity-0 blur-[2px]',\n )}\n >\n {task.activeForm}\n </span>\n </span>\n );\n};\n\nexport interface TaskListRowProps extends ComponentProps<'li'> {\n task: TaskListItem;\n}\n\nexport const TaskListRow = ({ task, className, style, ...props }: TaskListRowProps) => (\n <li className={cn('relative flex items-center', className)} style={{ height: TASK_ROW_HEIGHT, ...style }} {...props}>\n <TaskListStatusIcon\n status={task.status}\n className={cn(\n taskGraphNodeClass,\n taskGraphMotion,\n taskGraphLaneShift[task.status],\n 'group-data-collapsed/task-list:translate-x-0',\n )}\n />\n <span\n className={cn(\n 'flex min-w-0 transition-[padding-left]',\n taskGraphMotion,\n task.status === 'in_progress' ? 'pl-10 group-data-collapsed/task-list:pl-6' : 'pl-6',\n )}\n >\n <TaskListLabel task={task} />\n </span>\n </li>\n);\n\nconst LIST_INSET_Y = 10;\n\n/* A full layer minus one fade per edge; the fades are sized by mask-size, so their depth animates. */\nconst edgeFades =\n 'mask-no-repeat [--fade-bottom:0.875rem] [--fade-top:0.875rem] [mask-composite:subtract,add] [mask-image:linear-gradient(black,black),linear-gradient(to_bottom,black_40%,transparent),linear-gradient(to_top,black_40%,transparent)] [mask-position:0_0,0_0,0_100%] [mask-size:100%_100%,100%_var(--fade-top),100%_var(--fade-bottom)]';\nconst edgeFadesWhenScrolled = 'data-[overflow-y-end]:[--fade-bottom:2rem] data-[overflow-y-start]:[--fade-top:2rem]';\n\nconst focusedTaskIndex = (tasks: TaskListItem[]) => {\n const activeIndex = tasks.findIndex(task => task.status === 'in_progress');\n if (activeIndex >= 0) return activeIndex;\n const pendingIndex = tasks.findIndex(task => task.status === 'pending');\n if (pendingIndex >= 0) return pendingIndex;\n return tasks.length - 1;\n};\n\nexport interface TaskListProps extends Omit<ComponentProps<typeof TaskListContainer>, 'children'> {\n tasks: TaskListItem[];\n hideWhenComplete?: boolean;\n scrollActiveIntoView?: boolean;\n defaultOpen?: boolean;\n}\n\nexport const TaskList = ({\n tasks,\n hideWhenComplete = true,\n scrollActiveIntoView = true,\n defaultOpen = true,\n className,\n ...props\n}: TaskListProps) => {\n const [open, setOpen] = useState(defaultOpen);\n const listId = useId();\n const completed = tasks.filter(task => task.status === 'completed').length;\n const total = tasks.length;\n const focusIndex = focusedTaskIndex(tasks);\n const windowHeight = taskWindowHeight(total, open);\n const { viewportRef, glideForOpen } = useFocusedRowScroll({\n focusIndex,\n rowCount: total,\n open,\n followFocus: scrollActiveIntoView,\n });\n\n const changeOpen = (nextOpen: boolean) => {\n setOpen(nextOpen);\n glideForOpen(nextOpen);\n };\n\n if (total === 0 || (hideWhenComplete && completed === total)) return null;\n\n return (\n <TaskListContainer\n aria-label=\"Task list\"\n data-testid=\"task-list\"\n data-collapsed={open ? undefined : ''}\n onClick={open ? undefined : () => changeOpen(true)}\n className={cn('group/task-list relative', !open && 'cursor-pointer', className)}\n {...props}\n >\n <ScrollArea\n id={listId}\n maxHeight={`${windowHeight + 2 * LIST_INSET_Y}px`}\n mask={false}\n viewPortClassName={cn(\n edgeFades,\n 'transition-[max-height,mask-size]',\n taskGraphMotion,\n open ? edgeFadesWhenScrolled : 'overflow-hidden!',\n )}\n viewportRef={viewportRef}\n >\n <div className=\"px-3\" style={{ paddingBlock: LIST_INSET_Y }}>\n <div className=\"relative\">\n <TaskGraphLines statuses={tasks.map(task => task.status)} singleLane={!open} />\n <ul>\n {tasks.map((task, index) => {\n const clippedAway = !open && index !== focusIndex;\n return <TaskListRow key={task.id} task={task} inert={clippedAway} aria-hidden={clippedAway} />;\n })}\n </ul>\n </div>\n </div>\n </ScrollArea>\n <div className=\"absolute top-2.5 right-3 flex h-7 items-center bg-linear-to-r from-transparent to-card to-[1.5rem] pl-6\">\n <div\n inert={open}\n aria-hidden={open}\n className={cn(\n 'grid transition-[grid-template-columns,opacity]',\n taskGraphMotion,\n open ? 'grid-cols-[0fr] opacity-0' : 'grid-cols-[1fr] opacity-100',\n )}\n >\n <div className=\"min-w-0 overflow-hidden\">\n <TaskListProgress tasks={tasks} className=\"mr-2\" />\n </div>\n </div>\n <button\n type=\"button\"\n aria-label={open ? 'Collapse tasks' : 'Show all tasks'}\n aria-expanded={open}\n aria-controls={listId}\n onClick={event => {\n event.stopPropagation();\n changeOpen(!open);\n }}\n className={cn(\n 'grid size-6 cursor-pointer place-items-center rounded-md text-muted-foreground hover:text-foreground',\n transitions.colors,\n focusRing.visible,\n !open && 'group-hover/task-list:text-foreground',\n )}\n >\n <ChevronDown\n className={cn('size-3.5 transition-[rotate]', taskGraphMotion, open ? 'rotate-180' : 'rotate-0')}\n />\n </button>\n </div>\n </TaskListContainer>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
5
  const groupConsecutive = require('../../group-consecutive-KN5O6teY.cjs');
6
- const toolCall = require('../../tool-call-C0JeHe8Z.cjs');
6
+ const toolCall = require('../../tool-call-CnEm3eE0.cjs');
7
7
  const jsxRuntime = require('react/jsx-runtime');
8
8
  const code = require('../../code-B-x-9sJ1.cjs');
9
9
  const codeBlock = require('../../code-block-il1MzQTs.cjs');
@@ -13,7 +13,8 @@ const utils_cn = require('../../cn-DG0X1KEP.cjs');
13
13
  const toolPresentation = require('../../tool-presentation-BGWx2mEc.cjs');
14
14
  const lucideReact = require('lucide-react');
15
15
  const scrollArea = require('../../scroll-area-BzOyuS8Y.cjs');
16
- const Txt = require('../../Txt-B4-2nLaI.cjs');
16
+ const Txt = require('../../Txt-DPmEpNbp.cjs');
17
+ const utils_dateFormat = require('../../utils/date-format.cjs.js');
17
18
 
18
19
  const ANSI_RE = /[\u001b\u009b][[\]()#;?]*(?:(?:[a-zA-Z\d]*(?:;[-a-zA-Z\d/#&.:=?%@~_]*)*)?\u0007|(?:\d{1,4}(?:;\d{0,4})*)?[\dA-PR-TZcf-nq-uy=><~])/g;
19
20
  const ESCAPED_ANSI_RE = /(?<!\\)((?:\\\\)*)\\u001[bB](?:\[[0-9;?<=>]*[a-zA-Z]|\][\s\S]*?(?:\\u0007|\\u001[bB]\\\\))/g;
@@ -152,19 +153,16 @@ function ToolCallOutput({ text, error, maxLength, "data-testid": testId }) {
152
153
  return /* @__PURE__ */ jsxRuntime.jsx(toolCall.ToolCallMono, { copyText: text, "data-testid": testId, className: error ? "text-error/90" : "text-muted-foreground", children: preview });
153
154
  }
154
155
 
155
- const clock = new Intl.DateTimeFormat(void 0, { hour: "numeric", minute: "2-digit", second: "2-digit" });
156
- const calendar = new Intl.DateTimeFormat(void 0, { dateStyle: "full", timeStyle: "medium" });
157
156
  function ToolCallTime({ at }) {
158
- if (at === void 0) return null;
159
- const time = new Date(at);
160
- if (Number.isNaN(time.getTime())) return null;
157
+ const time = utils_dateFormat.toDate(at);
158
+ if (!time) return null;
161
159
  return /* @__PURE__ */ jsxRuntime.jsx(
162
160
  "time",
163
161
  {
164
162
  className: "shrink-0 text-meta text-muted-foreground tabular-nums",
165
163
  dateTime: time.toISOString(),
166
- title: calendar.format(time),
167
- children: clock.format(time)
164
+ title: utils_dateFormat.formatDate(time, "date-time-seconds"),
165
+ children: utils_dateFormat.formatDate(time, "time-seconds")
168
166
  }
169
167
  );
170
168
  }