@mastra/playground-ui 63.1.0-alpha.2 → 63.1.0-alpha.4

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 (292) hide show
  1. package/dist/{code-Dcah35Gp.cjs → code-DJReJPSX.cjs} +3 -2
  2. package/dist/code-DJReJPSX.cjs.map +1 -0
  3. package/dist/{code-DAXWNzvf.js → code-DLuATvYu.js} +3 -2
  4. package/dist/code-DLuATvYu.js.map +1 -0
  5. package/dist/{code-block-BzUcNWrb.js → code-block-BQV4o92x.js} +2 -2
  6. package/dist/{code-block-BzUcNWrb.js.map → code-block-BQV4o92x.js.map} +1 -1
  7. package/dist/{code-block-CKLCdWtP.cjs → code-block-DZb0Tb3k.cjs} +2 -2
  8. package/dist/{code-block-CKLCdWtP.cjs.map → code-block-DZb0Tb3k.cjs.map} +1 -1
  9. package/dist/components/Code.cjs.js +1 -1
  10. package/dist/components/Code.es.js +1 -1
  11. package/dist/components/CodeBlock.cjs.js +1 -1
  12. package/dist/components/CodeBlock.es.js +1 -1
  13. package/dist/components/ContentBlocks.cjs.js +6 -2
  14. package/dist/components/ContentBlocks.cjs.js.map +1 -1
  15. package/dist/components/ContentBlocks.es.js +6 -2
  16. package/dist/components/ContentBlocks.es.js.map +1 -1
  17. package/dist/components/DataCodeSection.cjs.js +1 -1
  18. package/dist/components/DataCodeSection.es.js +1 -1
  19. package/dist/components/DataDetailsPanel.cjs.js +1 -1
  20. package/dist/components/DataDetailsPanel.es.js +1 -1
  21. package/dist/components/DataList.cjs.js +3 -3
  22. package/dist/components/DataList.es.js +4 -4
  23. package/dist/components/DataPanel.cjs.js +1 -1
  24. package/dist/components/DataPanel.es.js +1 -1
  25. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  26. package/dist/components/DateTimeRangePicker.es.js +1 -1
  27. package/dist/components/EnvironmentVariablesEditor.cjs.js +1 -1
  28. package/dist/components/EnvironmentVariablesEditor.es.js +1 -1
  29. package/dist/components/FilterBar.cjs.js +3 -1
  30. package/dist/components/FilterBar.cjs.js.map +1 -1
  31. package/dist/components/FilterBar.es.js +4 -2
  32. package/dist/components/FilterBar.es.js.map +1 -1
  33. package/dist/components/LogsDataList.cjs.js +3 -3
  34. package/dist/components/LogsDataList.es.js +3 -3
  35. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  36. package/dist/components/MarkdownRenderer.es.js +1 -1
  37. package/dist/components/SavedViews.cjs.js +1 -1
  38. package/dist/components/SavedViews.es.js +1 -1
  39. package/dist/components/Sidebar.cjs.js +33 -0
  40. package/dist/components/Sidebar.cjs.js.map +1 -1
  41. package/dist/components/Sidebar.es.js +33 -1
  42. package/dist/components/Sidebar.es.js.map +1 -1
  43. package/dist/components/Workflow.cjs.js +1 -1
  44. package/dist/components/Workflow.es.js +1 -1
  45. package/dist/components/ai/activity.cjs.js +1 -1
  46. package/dist/components/ai/activity.es.js +1 -1
  47. package/dist/components/ai/plan.cjs.js +1 -1
  48. package/dist/components/ai/plan.es.js +1 -1
  49. package/dist/components/ai/tool-approval.cjs.js +1 -1
  50. package/dist/components/ai/tool-approval.es.js +1 -1
  51. package/dist/components/ai/tool-call.cjs.js +1 -1
  52. package/dist/components/ai/tool-call.es.js +1 -1
  53. package/dist/{data-code-section-BB2RWius.cjs → data-code-section-DCuBY9Mf.cjs} +2 -2
  54. package/dist/{data-code-section-BB2RWius.cjs.map → data-code-section-DCuBY9Mf.cjs.map} +1 -1
  55. package/dist/{data-code-section-DsU-ubVW.js → data-code-section-DOSV2o6P.js} +2 -2
  56. package/dist/{data-code-section-DsU-ubVW.js.map → data-code-section-DOSV2o6P.js.map} +1 -1
  57. package/dist/{data-list-BbOYiz4B.js → data-list-B4Ho_OCZ.js} +5 -2
  58. package/dist/data-list-B4Ho_OCZ.js.map +1 -0
  59. package/dist/{data-list-2svaWtkq.cjs → data-list-CYpGCm6F.cjs} +5 -2
  60. package/dist/data-list-CYpGCm6F.cjs.map +1 -0
  61. package/dist/{data-list-skeleton-C9Zm5XMX.js → data-list-skeleton-AfVi5OHw.js} +2 -2
  62. package/dist/{data-list-skeleton-C9Zm5XMX.js.map → data-list-skeleton-AfVi5OHw.js.map} +1 -1
  63. package/dist/{data-list-skeleton-C-j6Sf0F.cjs → data-list-skeleton-CIfVTfq4.cjs} +2 -2
  64. package/dist/{data-list-skeleton-C-j6Sf0F.cjs.map → data-list-skeleton-CIfVTfq4.cjs.map} +1 -1
  65. package/dist/{data-panel-CwIdwpov.js → data-panel-C8sHDwrx.js} +2 -2
  66. package/dist/{data-panel-CwIdwpov.js.map → data-panel-C8sHDwrx.js.map} +1 -1
  67. package/dist/{data-panel-CtFwwsPs.cjs → data-panel-DIVqWg0V.cjs} +2 -2
  68. package/dist/{data-panel-CtFwwsPs.cjs.map → data-panel-DIVqWg0V.cjs.map} +1 -1
  69. package/dist/{date-time-range-picker-BT9qan60.js → date-time-range-picker-B9me2TUa.js} +21 -4
  70. package/dist/date-time-range-picker-B9me2TUa.js.map +1 -0
  71. package/dist/{date-time-range-picker-DQa5XLST.cjs → date-time-range-picker-CyoaOAsi.cjs} +21 -4
  72. package/dist/date-time-range-picker-CyoaOAsi.cjs.map +1 -0
  73. package/dist/domains/chat/messages/renderers/message-text.cjs.js +1 -1
  74. package/dist/domains/chat/messages/renderers/message-text.es.js +1 -1
  75. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
  76. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
  77. package/dist/domains/chat/messages/skill-message.cjs.js +1 -1
  78. package/dist/domains/chat/messages/skill-message.es.js +1 -1
  79. package/dist/domains/chat/messages/tripwire-notice.cjs.js +1 -1
  80. package/dist/domains/chat/messages/tripwire-notice.es.js +1 -1
  81. package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +2 -2
  82. package/dist/domains/chat/tools/badges/code-mode-badge.es.js +2 -2
  83. package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +1 -1
  84. package/dist/domains/chat/tools/badges/file-tree-badge.es.js +1 -1
  85. package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +2 -2
  86. package/dist/domains/chat/tools/badges/observation-marker-details.es.js +2 -2
  87. package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +1 -1
  88. package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
  89. package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +1 -1
  90. package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
  91. package/dist/domains/chat/tools/badges/tool-badge.cjs.js +1 -1
  92. package/dist/domains/chat/tools/badges/tool-badge.es.js +1 -1
  93. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +1 -1
  94. package/dist/domains/chat/tools/badges/workflow-badge.es.js +1 -1
  95. package/dist/domains/chat/tools/submit-plan-tool.cjs.js +1 -1
  96. package/dist/domains/chat/tools/submit-plan-tool.es.js +1 -1
  97. package/dist/domains/logs/components/log-data-panel.cjs.js +1 -1
  98. package/dist/domains/logs/components/log-data-panel.es.js +1 -1
  99. package/dist/domains/logs/components/logs-list-view.cjs.js +3 -3
  100. package/dist/domains/logs/components/logs-list-view.es.js +3 -3
  101. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  102. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  103. package/dist/domains/metrics/drilldown.cjs.js +1 -1
  104. package/dist/domains/metrics/drilldown.es.js +1 -1
  105. package/dist/domains/metrics/metrics-filters.cjs.js +1 -1
  106. package/dist/domains/metrics/metrics-filters.es.js +1 -1
  107. package/dist/domains/scores/components/score-data-panel.cjs.js +1 -1
  108. package/dist/domains/scores/components/score-data-panel.es.js +1 -1
  109. package/dist/domains/scores/components/trace-scores-tab.cjs.js +1 -1
  110. package/dist/domains/scores/components/trace-scores-tab.es.js +1 -1
  111. package/dist/domains/traces/components/span-data-panel-view.cjs.js +2 -2
  112. package/dist/domains/traces/components/span-data-panel-view.es.js +2 -2
  113. package/dist/domains/traces/components/span-details-view.cjs.js +1 -1
  114. package/dist/domains/traces/components/span-details-view.es.js +1 -1
  115. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +1 -1
  116. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +1 -1
  117. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
  118. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
  119. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +2 -2
  120. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +2 -2
  121. package/dist/domains/traces/components/span-payload/span-payload-json.cjs.js +1 -1
  122. package/dist/domains/traces/components/span-payload/span-payload-json.es.js +1 -1
  123. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +2 -2
  124. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +2 -2
  125. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +2 -2
  126. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +2 -2
  127. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
  128. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
  129. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +1 -1
  130. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +1 -1
  131. package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js +1 -1
  132. package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +1 -1
  133. package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
  134. package/dist/domains/traces/components/span-summary-description.es.js +1 -1
  135. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
  136. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
  137. package/dist/domains/traces/components/thread-view-by-trace.cjs.js +2 -2
  138. package/dist/domains/traces/components/thread-view-by-trace.cjs.js.map +1 -1
  139. package/dist/domains/traces/components/thread-view-by-trace.es.js +2 -2
  140. package/dist/domains/traces/components/thread-view-by-trace.es.js.map +1 -1
  141. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +1 -1
  142. package/dist/domains/traces/components/trace-data-panel-view.es.js +1 -1
  143. package/dist/domains/traces/components/trace-data-panel.cjs.js +1 -1
  144. package/dist/domains/traces/components/trace-data-panel.es.js +1 -1
  145. package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
  146. package/dist/domains/traces/components/trace-id-button.es.js +1 -1
  147. package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
  148. package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
  149. package/dist/domains/traces/components/trace-thread-panel.cjs.js +1 -1
  150. package/dist/domains/traces/components/trace-thread-panel.es.js +1 -1
  151. package/dist/domains/traces/components/trace-time-range-chip.cjs.js +3 -3
  152. package/dist/domains/traces/components/trace-time-range-chip.cjs.js.map +1 -1
  153. package/dist/domains/traces/components/trace-time-range-chip.es.js +3 -3
  154. package/dist/domains/traces/components/trace-time-range-chip.es.js.map +1 -1
  155. package/dist/domains/traces/components/traces-error-content.cjs.js +1 -1
  156. package/dist/domains/traces/components/traces-error-content.es.js +1 -1
  157. package/dist/domains/traces/components/traces-list-view.cjs.js +3 -3
  158. package/dist/domains/traces/components/traces-list-view.es.js +3 -3
  159. package/dist/domains/traces/components/traces-page-skeleton.cjs.js +2 -2
  160. package/dist/domains/traces/components/traces-page-skeleton.es.js +2 -2
  161. package/dist/domains/traces/hooks/use-trace-filter-persistence.cjs.js +1 -1
  162. package/dist/domains/traces/hooks/use-trace-filter-persistence.es.js +1 -1
  163. package/dist/domains/traces/hooks/use-trace-url-state.cjs.js +1 -1
  164. package/dist/domains/traces/hooks/use-trace-url-state.es.js +1 -1
  165. package/dist/domains/traces/hooks/use-traces-list-source.cjs.js +15 -3
  166. package/dist/domains/traces/hooks/use-traces-list-source.cjs.js.map +1 -1
  167. package/dist/domains/traces/hooks/use-traces-list-source.es.js +13 -4
  168. package/dist/domains/traces/hooks/use-traces-list-source.es.js.map +1 -1
  169. package/dist/domains/traces/trace-filters.cjs.js +1 -1
  170. package/dist/domains/traces/trace-filters.es.js +1 -1
  171. package/dist/domains/traces/trace-query-filters.cjs.js +1 -3
  172. package/dist/domains/traces/trace-query-filters.cjs.js.map +1 -1
  173. package/dist/domains/traces/trace-query-filters.es.js +1 -1
  174. package/dist/domains/traces.cjs.js +1 -3
  175. package/dist/domains/traces.cjs.js.map +1 -1
  176. package/dist/domains/traces.es.js +1 -1
  177. package/dist/domains/workflows/components/workflow-step-detail.cjs.js +2 -2
  178. package/dist/domains/workflows/components/workflow-step-detail.es.js +2 -2
  179. package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +2 -2
  180. package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +2 -2
  181. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.cjs.js +2 -2
  182. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +2 -2
  183. package/dist/domains/workflows/workflow/workflow-body-graph.cjs.js +1 -1
  184. package/dist/domains/workflows/workflow/workflow-body-graph.es.js +1 -1
  185. package/dist/domains/workflows/workflow/workflow-graph-boundary.cjs.js +1 -1
  186. package/dist/domains/workflows/workflow/workflow-graph-boundary.es.js +1 -1
  187. package/dist/domains/workflows/workflow/workflow-graph-inner.cjs.js +2 -2
  188. package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +2 -2
  189. package/dist/domains/workflows/workflow/workflow-graph-node.cjs.js +2 -2
  190. package/dist/domains/workflows/workflow/workflow-graph-node.es.js +2 -2
  191. package/dist/domains/workflows/workflow/workflow-nested-graph.cjs.js +2 -2
  192. package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +2 -2
  193. package/dist/domains/workspace/components/workspace-active-file.cjs.js +1 -1
  194. package/dist/domains/workspace/components/workspace-active-file.es.js +1 -1
  195. package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +1 -1
  196. package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +1 -1
  197. package/dist/domains/workspace/components/workspace-markdown-preview.cjs.js +2 -2
  198. package/dist/domains/workspace/components/workspace-markdown-preview.es.js +2 -2
  199. package/dist/ee/signals/components/entity-index-list.cjs.js +1 -1
  200. package/dist/ee/signals/components/entity-index-list.es.js +1 -1
  201. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +2 -2
  202. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +2 -2
  203. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +1 -1
  204. package/dist/ee/topics/components/topic-trace-summary-list.es.js +1 -1
  205. package/dist/{errors-BiY55qIh.cjs → errors-7WFF-9EC.cjs} +3 -2
  206. package/dist/errors-7WFF-9EC.cjs.map +1 -0
  207. package/dist/{errors-CDTokuME.js → errors-BFVXW8Dr.js} +3 -2
  208. package/dist/errors-BFVXW8Dr.js.map +1 -0
  209. package/dist/{filter-bar-chip-BBErw_aR.cjs → filter-bar-chip-CYCOeX1B.cjs} +8 -4
  210. package/dist/filter-bar-chip-CYCOeX1B.cjs.map +1 -0
  211. package/dist/{filter-bar-chip-DvRTWRwT.js → filter-bar-chip-U55TxGOw.js} +8 -4
  212. package/dist/filter-bar-chip-U55TxGOw.js.map +1 -0
  213. package/dist/hooks/use-local-storage-store.cjs.js +71 -0
  214. package/dist/hooks/use-local-storage-store.cjs.js.map +1 -0
  215. package/dist/hooks/use-local-storage-store.d.ts +2 -0
  216. package/dist/hooks/use-local-storage-store.es.js +66 -0
  217. package/dist/hooks/use-local-storage-store.es.js.map +1 -0
  218. package/dist/layout/tabbed-container.cjs.js +1 -1
  219. package/dist/layout/tabbed-container.es.js +1 -1
  220. package/dist/{logs-data-list-D4sVbF23.cjs → logs-data-list-Bh_wPam2.cjs} +2 -2
  221. package/dist/{logs-data-list-D4sVbF23.cjs.map → logs-data-list-Bh_wPam2.cjs.map} +1 -1
  222. package/dist/{logs-data-list-0_z4s0Sj.js → logs-data-list-CZ2TvWyb.js} +2 -2
  223. package/dist/{logs-data-list-0_z4s0Sj.js.map → logs-data-list-CZ2TvWyb.js.map} +1 -1
  224. package/dist/{markdown-renderer-WesDzhMr.js → markdown-renderer-B55LVMsv.js} +2 -2
  225. package/dist/{markdown-renderer-WesDzhMr.js.map → markdown-renderer-B55LVMsv.js.map} +1 -1
  226. package/dist/{markdown-renderer-BRu3RpQD.cjs → markdown-renderer-B8Zmudqn.cjs} +2 -2
  227. package/dist/{markdown-renderer-BRu3RpQD.cjs.map → markdown-renderer-B8Zmudqn.cjs.map} +1 -1
  228. package/dist/{plan-ColU7p3H.cjs → plan-BxKWT5Jc.cjs} +2 -2
  229. package/dist/{plan-ColU7p3H.cjs.map → plan-BxKWT5Jc.cjs.map} +1 -1
  230. package/dist/{plan-CBiLa54G.js → plan-CoeSire7.js} +2 -2
  231. package/dist/{plan-CBiLa54G.js.map → plan-CoeSire7.js.map} +1 -1
  232. package/dist/{reasoning-activity-DLrXgE9k.js → reasoning-activity-C6KlS9dD.js} +2 -2
  233. package/dist/{reasoning-activity-DLrXgE9k.js.map → reasoning-activity-C6KlS9dD.js.map} +1 -1
  234. package/dist/{reasoning-activity-B8bR8ib_.cjs → reasoning-activity-DwvH_xWp.cjs} +2 -2
  235. package/dist/{reasoning-activity-B8bR8ib_.cjs.map → reasoning-activity-DwvH_xWp.cjs.map} +1 -1
  236. package/dist/{span-payload-primitives-DBNNkmHo.js → span-payload-primitives-DPAyz0rW.js} +2 -2
  237. package/dist/{span-payload-primitives-DBNNkmHo.js.map → span-payload-primitives-DPAyz0rW.js.map} +1 -1
  238. package/dist/{span-payload-primitives-BymKsUAo.cjs → span-payload-primitives-nXrFCYgn.cjs} +2 -2
  239. package/dist/{span-payload-primitives-BymKsUAo.cjs.map → span-payload-primitives-nXrFCYgn.cjs.map} +1 -1
  240. package/dist/src/domains/traces/components/trace-time-range-chip.d.ts +1 -1
  241. package/dist/src/domains/traces/hooks/use-traces-list-source.d.ts +6 -0
  242. package/dist/src/domains/traces/trace-query-filters.d.ts +0 -11
  243. package/dist/src/ds/components/ContentBlocks/content-blocks.d.ts +3 -2
  244. package/dist/src/ds/components/DataList/shared.d.ts +4 -4
  245. package/dist/src/ds/components/DateTimeRangePicker/custom-range-editor.d.ts +3 -1
  246. package/dist/src/ds/components/DateTimeRangePicker/date-time-range-picker.d.ts +3 -1
  247. package/dist/src/ds/components/FilterBar/filter-bar-context.d.ts +11 -1
  248. package/dist/src/ds/components/FilterBar/filter-bar.d.ts +6 -1
  249. package/dist/src/ds/components/Sidebar/index.d.ts +1 -0
  250. package/dist/src/ds/components/Sidebar/nav/sidebar-nav-show-more.d.ts +9 -0
  251. package/dist/src/ds/components/Sidebar/sidebar.d.ts +2 -0
  252. package/dist/src/hooks/use-local-storage-store.d.ts +15 -0
  253. package/dist/style.css +20 -0
  254. package/dist/{tool-approval-BK2j7aj_.js → tool-approval-CYmQJ2i4.js} +2 -2
  255. package/dist/{tool-approval-BK2j7aj_.js.map → tool-approval-CYmQJ2i4.js.map} +1 -1
  256. package/dist/{tool-approval-Bza_sgxa.cjs → tool-approval-aWNKG9dK.cjs} +2 -2
  257. package/dist/{tool-approval-Bza_sgxa.cjs.map → tool-approval-aWNKG9dK.cjs.map} +1 -1
  258. package/dist/{tool-call-arguments-BLCAiFYg.js → tool-call-arguments-Bk13pV6A.js} +3 -3
  259. package/dist/{tool-call-arguments-BLCAiFYg.js.map → tool-call-arguments-Bk13pV6A.js.map} +1 -1
  260. package/dist/{tool-call-arguments-CK3kQ_FX.cjs → tool-call-arguments-DTwVq7AB.cjs} +3 -3
  261. package/dist/{tool-call-arguments-CK3kQ_FX.cjs.map → tool-call-arguments-DTwVq7AB.cjs.map} +1 -1
  262. package/dist/{trace-filters-C71gmCq4.js → trace-filters-C91h9X86.js} +2 -10
  263. package/dist/trace-filters-C91h9X86.js.map +1 -0
  264. package/dist/{trace-filters-Bh4dVNPX.cjs → trace-filters-Dz4oj8yV.cjs} +1 -11
  265. package/dist/trace-filters-Dz4oj8yV.cjs.map +1 -0
  266. package/dist/{traces-data-list-C05UwTiE.js → traces-data-list-BXotATNk.js} +2 -2
  267. package/dist/{traces-data-list-C05UwTiE.js.map → traces-data-list-BXotATNk.js.map} +1 -1
  268. package/dist/{traces-data-list-DPA5T14k.cjs → traces-data-list-D6pq_WLy.cjs} +2 -2
  269. package/dist/{traces-data-list-DPA5T14k.cjs.map → traces-data-list-D6pq_WLy.cjs.map} +1 -1
  270. package/dist/{use-workflow-graph-runtime-DX56livO.js → use-workflow-graph-runtime-S5G_ZvSM.js} +2 -2
  271. package/dist/{use-workflow-graph-runtime-DX56livO.js.map → use-workflow-graph-runtime-S5G_ZvSM.js.map} +1 -1
  272. package/dist/{use-workflow-graph-runtime-C8TkqjvM.cjs → use-workflow-graph-runtime-UxUOrRDb.cjs} +2 -2
  273. package/dist/{use-workflow-graph-runtime-C8TkqjvM.cjs.map → use-workflow-graph-runtime-UxUOrRDb.cjs.map} +1 -1
  274. package/dist/utils/errors.cjs.js +1 -1
  275. package/dist/utils/errors.es.js +1 -1
  276. package/dist/{workflow-condition-card-bn5mrwKe.cjs → workflow-condition-card-CHV32SJm.cjs} +2 -2
  277. package/dist/{workflow-condition-card-bn5mrwKe.cjs.map → workflow-condition-card-CHV32SJm.cjs.map} +1 -1
  278. package/dist/{workflow-condition-card-DMkPh5TM.js → workflow-condition-card-DNsQmIae.js} +2 -2
  279. package/dist/{workflow-condition-card-DMkPh5TM.js.map → workflow-condition-card-DNsQmIae.js.map} +1 -1
  280. package/package.json +8 -8
  281. package/dist/code-DAXWNzvf.js.map +0 -1
  282. package/dist/code-Dcah35Gp.cjs.map +0 -1
  283. package/dist/data-list-2svaWtkq.cjs.map +0 -1
  284. package/dist/data-list-BbOYiz4B.js.map +0 -1
  285. package/dist/date-time-range-picker-BT9qan60.js.map +0 -1
  286. package/dist/date-time-range-picker-DQa5XLST.cjs.map +0 -1
  287. package/dist/errors-BiY55qIh.cjs.map +0 -1
  288. package/dist/errors-CDTokuME.js.map +0 -1
  289. package/dist/filter-bar-chip-BBErw_aR.cjs.map +0 -1
  290. package/dist/filter-bar-chip-DvRTWRwT.js.map +0 -1
  291. package/dist/trace-filters-Bh4dVNPX.cjs.map +0 -1
  292. package/dist/trace-filters-C71gmCq4.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"plan-CBiLa54G.js","sources":["../src/ds/components/ai/plan/plan.tsx"],"sourcesContent":["import { CheckIcon, ClipboardList, CopyIcon, Maximize2, Minimize2 } from 'lucide-react';\nimport { createContext, useContext } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\n\nimport { Badge } from '@/ds/components/Badge';\nimport { Button } from '@/ds/components/Button';\nimport { CollapsibleBox, DEFAULT_COLLAPSED_HEIGHT, useCollapsibleBox } from '@/ds/components/CollapsibleBox';\nimport type { CollapsibleBoxState } from '@/ds/components/CollapsibleBox';\nimport { MarkdownRenderer } from '@/ds/components/MarkdownRenderer';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { useCopyToClipboard } from '@/hooks/use-copy-to-clipboard';\nimport { cn } from '@/lib/utils';\n\nconst PlanContext = createContext<CollapsibleBoxState | null>(null);\n\nconst usePlanContext = () => {\n const context = useContext(PlanContext);\n\n if (!context) {\n throw new Error('Plan compound components must be rendered inside <Plan>.');\n }\n\n return context;\n};\n\nexport interface PlanProps extends ComponentProps<'div'> {\n collapsedHeight?: number;\n}\n\nexport function Plan({ children, collapsedHeight = DEFAULT_COLLAPSED_HEIGHT, className, ...props }: PlanProps) {\n const contextValue = useCollapsibleBox({ collapsedHeight });\n\n return (\n <PlanContext.Provider value={contextValue}>\n <div data-slot=\"plan\" className={cn('w-full overflow-hidden rounded-xl bg-card', className)} {...props}>\n {children}\n </div>\n </PlanContext.Provider>\n );\n}\n\nexport type PlanHeaderProps = ComponentProps<'div'>;\n\nexport function PlanHeader({ children, className, ...props }: PlanHeaderProps) {\n return (\n <div\n data-slot=\"plan-header\"\n className={cn('flex min-h-10 items-center justify-between gap-3 px-4 pt-3', className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport type PlanLabelProps = ComponentProps<'div'>;\n\nexport function PlanLabel({ children = 'Plan', className, ...props }: PlanLabelProps) {\n return (\n <div data-slot=\"plan-label\" className={cn('flex min-w-0 items-center gap-2', className)} {...props}>\n <Icon size=\"xs\" className=\"text-muted-foreground\">\n <ClipboardList />\n </Icon>\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {children}\n </Txt>\n </div>\n );\n}\n\nexport type PlanHeaderActionsProps = ComponentProps<'div'>;\n\nexport function PlanHeaderActions({ children, className, ...props }: PlanHeaderActionsProps) {\n return (\n <div data-slot=\"plan-header-actions\" className={cn('flex shrink-0 items-center gap-1', className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport type PlanStatusProps = Omit<ComponentProps<typeof Badge>, 'icon' | 'indicator' | 'size'>;\n\nexport function PlanStatus({ children, variant = 'neutral', ...props }: PlanStatusProps) {\n return (\n <Badge {...props} variant={variant} size=\"xs\" indicator=\"dot\">\n {children}\n </Badge>\n );\n}\n\nexport interface PlanCopyButtonProps extends Omit<\n ComponentProps<typeof Button>,\n 'aria-label' | 'children' | 'onClick' | 'size' | 'tooltip' | 'type' | 'variant'\n> {\n content: string;\n}\n\nexport function PlanCopyButton({ content, ...props }: PlanCopyButtonProps) {\n const { isCopied, handleCopy } = useCopyToClipboard({\n text: content,\n copiedDuration: 1500,\n showToast: false,\n });\n\n return (\n <Button\n {...props}\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n tooltip=\"Copy plan\"\n aria-label=\"Copy plan\"\n onClick={handleCopy}\n >\n {isCopied ? <CheckIcon /> : <CopyIcon />}\n </Button>\n );\n}\n\nexport type PlanBodyProps = ComponentProps<'div'>;\n\nexport function PlanBody({ children, className, ...props }: PlanBodyProps) {\n return (\n <div data-slot=\"plan-body\" className={cn('px-5 pt-4 pb-5', className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport type PlanIntroProps = ComponentProps<'div'>;\n\nexport function PlanIntro({ children, className, ...props }: PlanIntroProps) {\n return (\n <div data-slot=\"plan-intro\" className={cn('mb-5 space-y-1', className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport interface PlanTitleProps extends Omit<ComponentProps<typeof Txt<'h3'>>, 'as' | 'children' | 'variant'> {\n children: ReactNode;\n}\n\nexport function PlanTitle({ children, className, ...props }: PlanTitleProps) {\n return (\n <Txt {...props} as=\"h3\" variant=\"heading\" tone=\"ink\" className={className}>\n {children}\n </Txt>\n );\n}\n\nexport interface PlanPathProps extends Omit<\n ComponentProps<typeof Txt<'p'>>,\n 'as' | 'children' | 'font' | 'title' | 'variant'\n> {\n children: string;\n}\n\nconst getFileName = (path: string) => {\n const segments = path.split(/[\\\\/]/).filter(Boolean);\n return segments[segments.length - 1] ?? path;\n};\n\nexport function PlanPath({ children, className, ...props }: PlanPathProps) {\n return (\n <Txt\n {...props}\n as=\"p\"\n variant=\"meta\"\n tone=\"muted\"\n font=\"mono\"\n title={children}\n className={cn('max-w-full truncate overflow-hidden', className)}\n >\n {getFileName(children)}\n </Txt>\n );\n}\n\nexport type PlanMainProps = ComponentProps<'div'>;\n\nexport function PlanMain({ children, className, ...props }: PlanMainProps) {\n return (\n <div data-slot=\"plan-main\" className={cn('relative', className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport interface PlanContentProps extends Omit<ComponentProps<'div'>, 'children'> {\n children: string;\n}\n\nexport function PlanContent({ children, ...props }: PlanContentProps) {\n const state = usePlanContext();\n\n return (\n <CollapsibleBox data-slot=\"plan-content\" state={state} {...props}>\n <div className=\"[&_code]:bg-muted [&_h1]:text-title [&_h2]:text-heading [&_h3]:text-subheading [&_p]:text-body\">\n <MarkdownRenderer className=\"text-foreground\">{children}</MarkdownRenderer>\n </div>\n </CollapsibleBox>\n );\n}\n\nexport interface PlanFileProps extends Omit<ComponentProps<'div'>, 'children'> {\n children: string;\n}\n\nexport function PlanFile({ children, className, ...props }: PlanFileProps) {\n return (\n <div data-slot=\"plan-file\" className={className} {...props}>\n <Txt as=\"p\" variant=\"meta\" tone=\"muted\" className=\"mb-2\">\n Plan file\n </Txt>\n <Txt as=\"p\" variant=\"caption\" tone=\"ink\" font=\"mono\" className=\"break-all\">\n {children}\n </Txt>\n </div>\n );\n}\n\nexport type PlanControlsProps = ComponentProps<'div'>;\n\nexport function PlanControls({ children, className, ...props }: PlanControlsProps) {\n const hasActions = Boolean(children);\n\n return (\n <div\n data-slot=\"plan-controls\"\n className={cn('relative z-10 mt-4 flex justify-center empty:hidden', className)}\n {...props}\n >\n {hasActions ? (\n <div className=\"grid w-full max-w-sm grid-cols-[1fr_auto_1fr] items-center gap-2 px-10\">{children}</div>\n ) : (\n <PlanExpandButton />\n )}\n </div>\n );\n}\n\nexport type PlanActionGroupProps = ComponentProps<'div'>;\n\nexport function PlanActionGroup({ children, className, ...props }: PlanActionGroupProps) {\n return (\n <div data-slot=\"plan-action-group\" className={cn('flex justify-start gap-2 empty:hidden', className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport type PlanExpandButtonProps = Omit<\n ComponentProps<typeof Button>,\n 'aria-label' | 'children' | 'onClick' | 'size' | 'type'\n>;\n\nexport function PlanExpandButton({ className, variant = 'default', ...props }: PlanExpandButtonProps) {\n const { isExpanded, isClipped, toggleExpanded } = usePlanContext();\n\n // Nothing to expand: the collapsed card already shows the whole plan.\n if (!isClipped && !isExpanded) return null;\n\n return (\n <Button\n {...props}\n className={cn('shrink-0 whitespace-nowrap', className)}\n type=\"button\"\n variant={variant}\n size=\"sm\"\n aria-label={isExpanded ? 'Collapse plan' : 'Expand plan'}\n onClick={toggleExpanded}\n icon={isExpanded ? <Minimize2 /> : <Maximize2 />}\n >\n {isExpanded ? 'Collapse plan' : 'Expand plan'}\n </Button>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan-CoeSire7.js","sources":["../src/ds/components/ai/plan/plan.tsx"],"sourcesContent":["import { CheckIcon, ClipboardList, CopyIcon, Maximize2, Minimize2 } from 'lucide-react';\nimport { createContext, useContext } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\n\nimport { Badge } from '@/ds/components/Badge';\nimport { Button } from '@/ds/components/Button';\nimport { CollapsibleBox, DEFAULT_COLLAPSED_HEIGHT, useCollapsibleBox } from '@/ds/components/CollapsibleBox';\nimport type { CollapsibleBoxState } from '@/ds/components/CollapsibleBox';\nimport { MarkdownRenderer } from '@/ds/components/MarkdownRenderer';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { useCopyToClipboard } from '@/hooks/use-copy-to-clipboard';\nimport { cn } from '@/lib/utils';\n\nconst PlanContext = createContext<CollapsibleBoxState | null>(null);\n\nconst usePlanContext = () => {\n const context = useContext(PlanContext);\n\n if (!context) {\n throw new Error('Plan compound components must be rendered inside <Plan>.');\n }\n\n return context;\n};\n\nexport interface PlanProps extends ComponentProps<'div'> {\n collapsedHeight?: number;\n}\n\nexport function Plan({ children, collapsedHeight = DEFAULT_COLLAPSED_HEIGHT, className, ...props }: PlanProps) {\n const contextValue = useCollapsibleBox({ collapsedHeight });\n\n return (\n <PlanContext.Provider value={contextValue}>\n <div data-slot=\"plan\" className={cn('w-full overflow-hidden rounded-xl bg-card', className)} {...props}>\n {children}\n </div>\n </PlanContext.Provider>\n );\n}\n\nexport type PlanHeaderProps = ComponentProps<'div'>;\n\nexport function PlanHeader({ children, className, ...props }: PlanHeaderProps) {\n return (\n <div\n data-slot=\"plan-header\"\n className={cn('flex min-h-10 items-center justify-between gap-3 px-4 pt-3', className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport type PlanLabelProps = ComponentProps<'div'>;\n\nexport function PlanLabel({ children = 'Plan', className, ...props }: PlanLabelProps) {\n return (\n <div data-slot=\"plan-label\" className={cn('flex min-w-0 items-center gap-2', className)} {...props}>\n <Icon size=\"xs\" className=\"text-muted-foreground\">\n <ClipboardList />\n </Icon>\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {children}\n </Txt>\n </div>\n );\n}\n\nexport type PlanHeaderActionsProps = ComponentProps<'div'>;\n\nexport function PlanHeaderActions({ children, className, ...props }: PlanHeaderActionsProps) {\n return (\n <div data-slot=\"plan-header-actions\" className={cn('flex shrink-0 items-center gap-1', className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport type PlanStatusProps = Omit<ComponentProps<typeof Badge>, 'icon' | 'indicator' | 'size'>;\n\nexport function PlanStatus({ children, variant = 'neutral', ...props }: PlanStatusProps) {\n return (\n <Badge {...props} variant={variant} size=\"xs\" indicator=\"dot\">\n {children}\n </Badge>\n );\n}\n\nexport interface PlanCopyButtonProps extends Omit<\n ComponentProps<typeof Button>,\n 'aria-label' | 'children' | 'onClick' | 'size' | 'tooltip' | 'type' | 'variant'\n> {\n content: string;\n}\n\nexport function PlanCopyButton({ content, ...props }: PlanCopyButtonProps) {\n const { isCopied, handleCopy } = useCopyToClipboard({\n text: content,\n copiedDuration: 1500,\n showToast: false,\n });\n\n return (\n <Button\n {...props}\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n tooltip=\"Copy plan\"\n aria-label=\"Copy plan\"\n onClick={handleCopy}\n >\n {isCopied ? <CheckIcon /> : <CopyIcon />}\n </Button>\n );\n}\n\nexport type PlanBodyProps = ComponentProps<'div'>;\n\nexport function PlanBody({ children, className, ...props }: PlanBodyProps) {\n return (\n <div data-slot=\"plan-body\" className={cn('px-5 pt-4 pb-5', className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport type PlanIntroProps = ComponentProps<'div'>;\n\nexport function PlanIntro({ children, className, ...props }: PlanIntroProps) {\n return (\n <div data-slot=\"plan-intro\" className={cn('mb-5 space-y-1', className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport interface PlanTitleProps extends Omit<ComponentProps<typeof Txt<'h3'>>, 'as' | 'children' | 'variant'> {\n children: ReactNode;\n}\n\nexport function PlanTitle({ children, className, ...props }: PlanTitleProps) {\n return (\n <Txt {...props} as=\"h3\" variant=\"heading\" tone=\"ink\" className={className}>\n {children}\n </Txt>\n );\n}\n\nexport interface PlanPathProps extends Omit<\n ComponentProps<typeof Txt<'p'>>,\n 'as' | 'children' | 'font' | 'title' | 'variant'\n> {\n children: string;\n}\n\nconst getFileName = (path: string) => {\n const segments = path.split(/[\\\\/]/).filter(Boolean);\n return segments[segments.length - 1] ?? path;\n};\n\nexport function PlanPath({ children, className, ...props }: PlanPathProps) {\n return (\n <Txt\n {...props}\n as=\"p\"\n variant=\"meta\"\n tone=\"muted\"\n font=\"mono\"\n title={children}\n className={cn('max-w-full truncate overflow-hidden', className)}\n >\n {getFileName(children)}\n </Txt>\n );\n}\n\nexport type PlanMainProps = ComponentProps<'div'>;\n\nexport function PlanMain({ children, className, ...props }: PlanMainProps) {\n return (\n <div data-slot=\"plan-main\" className={cn('relative', className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport interface PlanContentProps extends Omit<ComponentProps<'div'>, 'children'> {\n children: string;\n}\n\nexport function PlanContent({ children, ...props }: PlanContentProps) {\n const state = usePlanContext();\n\n return (\n <CollapsibleBox data-slot=\"plan-content\" state={state} {...props}>\n <div className=\"[&_code]:bg-muted [&_h1]:text-title [&_h2]:text-heading [&_h3]:text-subheading [&_p]:text-body\">\n <MarkdownRenderer className=\"text-foreground\">{children}</MarkdownRenderer>\n </div>\n </CollapsibleBox>\n );\n}\n\nexport interface PlanFileProps extends Omit<ComponentProps<'div'>, 'children'> {\n children: string;\n}\n\nexport function PlanFile({ children, className, ...props }: PlanFileProps) {\n return (\n <div data-slot=\"plan-file\" className={className} {...props}>\n <Txt as=\"p\" variant=\"meta\" tone=\"muted\" className=\"mb-2\">\n Plan file\n </Txt>\n <Txt as=\"p\" variant=\"caption\" tone=\"ink\" font=\"mono\" className=\"break-all\">\n {children}\n </Txt>\n </div>\n );\n}\n\nexport type PlanControlsProps = ComponentProps<'div'>;\n\nexport function PlanControls({ children, className, ...props }: PlanControlsProps) {\n const hasActions = Boolean(children);\n\n return (\n <div\n data-slot=\"plan-controls\"\n className={cn('relative z-10 mt-4 flex justify-center empty:hidden', className)}\n {...props}\n >\n {hasActions ? (\n <div className=\"grid w-full max-w-sm grid-cols-[1fr_auto_1fr] items-center gap-2 px-10\">{children}</div>\n ) : (\n <PlanExpandButton />\n )}\n </div>\n );\n}\n\nexport type PlanActionGroupProps = ComponentProps<'div'>;\n\nexport function PlanActionGroup({ children, className, ...props }: PlanActionGroupProps) {\n return (\n <div data-slot=\"plan-action-group\" className={cn('flex justify-start gap-2 empty:hidden', className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport type PlanExpandButtonProps = Omit<\n ComponentProps<typeof Button>,\n 'aria-label' | 'children' | 'onClick' | 'size' | 'type'\n>;\n\nexport function PlanExpandButton({ className, variant = 'default', ...props }: PlanExpandButtonProps) {\n const { isExpanded, isClipped, toggleExpanded } = usePlanContext();\n\n // Nothing to expand: the collapsed card already shows the whole plan.\n if (!isClipped && !isExpanded) return null;\n\n return (\n <Button\n {...props}\n className={cn('shrink-0 whitespace-nowrap', className)}\n type=\"button\"\n variant={variant}\n size=\"sm\"\n aria-label={isExpanded ? 'Collapse plan' : 'Expand plan'}\n onClick={toggleExpanded}\n icon={isExpanded ? <Minimize2 /> : <Maximize2 />}\n >\n {isExpanded ? 'Collapse plan' : 'Expand plan'}\n </Button>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { jsx } from 'react/jsx-runtime';
2
2
  import { Brain } from 'lucide-react';
3
3
  import { g as ActivityItem } from './activity-BsrB5ADa.js';
4
4
  import { h as hasVisibleReasoning } from './reasoning-visibility-B9rA0AIj.js';
5
- import { M as MarkdownRenderer } from './markdown-renderer-WesDzhMr.js';
5
+ import { M as MarkdownRenderer } from './markdown-renderer-B55LVMsv.js';
6
6
 
7
7
  function ReasoningActivity({ defaultOpen = true, ...content }) {
8
8
  if (!hasVisibleReasoning(content)) return null;
@@ -29,4 +29,4 @@ function ReasoningActivity({ defaultOpen = true, ...content }) {
29
29
  }
30
30
 
31
31
  export { ReasoningActivity as R };
32
- //# sourceMappingURL=reasoning-activity-DLrXgE9k.js.map
32
+ //# sourceMappingURL=reasoning-activity-C6KlS9dD.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reasoning-activity-DLrXgE9k.js","sources":["../src/ds/components/ai/activity/presets/reasoning-activity.tsx"],"sourcesContent":["import { Brain } from 'lucide-react';\nimport { ActivityItem } from '../activity';\nimport { hasVisibleReasoning } from './reasoning-visibility';\nimport type { ReasoningContent } from './reasoning-visibility';\nimport { MarkdownRenderer } from '@/ds/components/MarkdownRenderer';\n\nexport interface ReasoningActivityProps extends ReasoningContent {\n defaultOpen?: boolean;\n}\n\nexport function ReasoningActivity({ defaultOpen = true, ...content }: ReasoningActivityProps) {\n if (!hasVisibleReasoning(content)) return null;\n\n const { text, redacted, streaming } = content;\n const body = redacted ? 'Reasoning was redacted by the provider.' : text;\n\n return (\n <ActivityItem\n icon={<Brain aria-hidden />}\n label=\"Reasoning\"\n status={streaming ? 'running' : 'idle'}\n defaultOpen={defaultOpen}\n aria-label=\"Reasoning\"\n >\n {body.trim().length > 0 && (\n <MarkdownRenderer\n className=\"text-caption text-muted-foreground [&_p]:my-0.5\"\n streaming={streaming && !redacted}\n >\n {body}\n </MarkdownRenderer>\n )}\n </ActivityItem>\n );\n}\n"],"names":[],"mappings":";;;;;;AAUO,SAAS,kBAAkB,EAAE,WAAA,GAAc,IAAA,EAAM,GAAG,SAAQ,EAA2B;AAC5F,EAAA,IAAI,CAAC,mBAAA,CAAoB,OAAO,CAAA,EAAG,OAAO,IAAA;AAE1C,EAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAU,SAAA,EAAU,GAAI,OAAA;AACtC,EAAA,MAAM,IAAA,GAAO,WAAW,yCAAA,GAA4C,IAAA;AAEpE,EAAA,uBACE,GAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,IAAA,kBAAM,GAAA,CAAC,KAAA,EAAA,EAAM,aAAA,EAAW,IAAA,EAAC,CAAA;AAAA,MACzB,KAAA,EAAM,WAAA;AAAA,MACN,MAAA,EAAQ,YAAY,SAAA,GAAY,MAAA;AAAA,MAChC,WAAA;AAAA,MACA,YAAA,EAAW,WAAA;AAAA,MAEV,QAAA,EAAA,IAAA,CAAK,IAAA,EAAK,CAAE,MAAA,GAAS,CAAA,oBACpB,GAAA;AAAA,QAAC,gBAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,iDAAA;AAAA,UACV,SAAA,EAAW,aAAa,CAAC,QAAA;AAAA,UAExB,QAAA,EAAA;AAAA;AAAA;AACH;AAAA,GAEJ;AAEJ;;;;"}
1
+ {"version":3,"file":"reasoning-activity-C6KlS9dD.js","sources":["../src/ds/components/ai/activity/presets/reasoning-activity.tsx"],"sourcesContent":["import { Brain } from 'lucide-react';\nimport { ActivityItem } from '../activity';\nimport { hasVisibleReasoning } from './reasoning-visibility';\nimport type { ReasoningContent } from './reasoning-visibility';\nimport { MarkdownRenderer } from '@/ds/components/MarkdownRenderer';\n\nexport interface ReasoningActivityProps extends ReasoningContent {\n defaultOpen?: boolean;\n}\n\nexport function ReasoningActivity({ defaultOpen = true, ...content }: ReasoningActivityProps) {\n if (!hasVisibleReasoning(content)) return null;\n\n const { text, redacted, streaming } = content;\n const body = redacted ? 'Reasoning was redacted by the provider.' : text;\n\n return (\n <ActivityItem\n icon={<Brain aria-hidden />}\n label=\"Reasoning\"\n status={streaming ? 'running' : 'idle'}\n defaultOpen={defaultOpen}\n aria-label=\"Reasoning\"\n >\n {body.trim().length > 0 && (\n <MarkdownRenderer\n className=\"text-caption text-muted-foreground [&_p]:my-0.5\"\n streaming={streaming && !redacted}\n >\n {body}\n </MarkdownRenderer>\n )}\n </ActivityItem>\n );\n}\n"],"names":[],"mappings":";;;;;;AAUO,SAAS,kBAAkB,EAAE,WAAA,GAAc,IAAA,EAAM,GAAG,SAAQ,EAA2B;AAC5F,EAAA,IAAI,CAAC,mBAAA,CAAoB,OAAO,CAAA,EAAG,OAAO,IAAA;AAE1C,EAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAU,SAAA,EAAU,GAAI,OAAA;AACtC,EAAA,MAAM,IAAA,GAAO,WAAW,yCAAA,GAA4C,IAAA;AAEpE,EAAA,uBACE,GAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,IAAA,kBAAM,GAAA,CAAC,KAAA,EAAA,EAAM,aAAA,EAAW,IAAA,EAAC,CAAA;AAAA,MACzB,KAAA,EAAM,WAAA;AAAA,MACN,MAAA,EAAQ,YAAY,SAAA,GAAY,MAAA;AAAA,MAChC,WAAA;AAAA,MACA,YAAA,EAAW,WAAA;AAAA,MAEV,QAAA,EAAA,IAAA,CAAK,IAAA,EAAK,CAAE,MAAA,GAAS,CAAA,oBACpB,GAAA;AAAA,QAAC,gBAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,iDAAA;AAAA,UACV,SAAA,EAAW,aAAa,CAAC,QAAA;AAAA,UAExB,QAAA,EAAA;AAAA;AAAA;AACH;AAAA,GAEJ;AAEJ;;;;"}
@@ -4,7 +4,7 @@ const jsxRuntime = require('react/jsx-runtime');
4
4
  const lucideReact = require('lucide-react');
5
5
  const activity = require('./activity-CaFdLiPz.cjs');
6
6
  const reasoningVisibility = require('./reasoning-visibility-DXho4jGC.cjs');
7
- const markdownRenderer = require('./markdown-renderer-BRu3RpQD.cjs');
7
+ const markdownRenderer = require('./markdown-renderer-B8Zmudqn.cjs');
8
8
 
9
9
  function ReasoningActivity({ defaultOpen = true, ...content }) {
10
10
  if (!reasoningVisibility.hasVisibleReasoning(content)) return null;
@@ -31,4 +31,4 @@ function ReasoningActivity({ defaultOpen = true, ...content }) {
31
31
  }
32
32
 
33
33
  exports.ReasoningActivity = ReasoningActivity;
34
- //# sourceMappingURL=reasoning-activity-B8bR8ib_.cjs.map
34
+ //# sourceMappingURL=reasoning-activity-DwvH_xWp.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"reasoning-activity-B8bR8ib_.cjs","sources":["../src/ds/components/ai/activity/presets/reasoning-activity.tsx"],"sourcesContent":["import { Brain } from 'lucide-react';\nimport { ActivityItem } from '../activity';\nimport { hasVisibleReasoning } from './reasoning-visibility';\nimport type { ReasoningContent } from './reasoning-visibility';\nimport { MarkdownRenderer } from '@/ds/components/MarkdownRenderer';\n\nexport interface ReasoningActivityProps extends ReasoningContent {\n defaultOpen?: boolean;\n}\n\nexport function ReasoningActivity({ defaultOpen = true, ...content }: ReasoningActivityProps) {\n if (!hasVisibleReasoning(content)) return null;\n\n const { text, redacted, streaming } = content;\n const body = redacted ? 'Reasoning was redacted by the provider.' : text;\n\n return (\n <ActivityItem\n icon={<Brain aria-hidden />}\n label=\"Reasoning\"\n status={streaming ? 'running' : 'idle'}\n defaultOpen={defaultOpen}\n aria-label=\"Reasoning\"\n >\n {body.trim().length > 0 && (\n <MarkdownRenderer\n className=\"text-caption text-muted-foreground [&_p]:my-0.5\"\n streaming={streaming && !redacted}\n >\n {body}\n </MarkdownRenderer>\n )}\n </ActivityItem>\n );\n}\n"],"names":["hasVisibleReasoning","jsx","ActivityItem","Brain","MarkdownRenderer"],"mappings":";;;;;;;;AAUO,SAAS,kBAAkB,EAAE,WAAA,GAAc,IAAA,EAAM,GAAG,SAAQ,EAA2B;AAC5F,EAAA,IAAI,CAACA,uCAAA,CAAoB,OAAO,CAAA,EAAG,OAAO,IAAA;AAE1C,EAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAU,SAAA,EAAU,GAAI,OAAA;AACtC,EAAA,MAAM,IAAA,GAAO,WAAW,yCAAA,GAA4C,IAAA;AAEpE,EAAA,uBACEC,cAAA;AAAA,IAACC,qBAAA;AAAA,IAAA;AAAA,MACC,IAAA,kBAAMD,cAAA,CAACE,iBAAA,EAAA,EAAM,aAAA,EAAW,IAAA,EAAC,CAAA;AAAA,MACzB,KAAA,EAAM,WAAA;AAAA,MACN,MAAA,EAAQ,YAAY,SAAA,GAAY,MAAA;AAAA,MAChC,WAAA;AAAA,MACA,YAAA,EAAW,WAAA;AAAA,MAEV,QAAA,EAAA,IAAA,CAAK,IAAA,EAAK,CAAE,MAAA,GAAS,CAAA,oBACpBF,cAAA;AAAA,QAACG,iCAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,iDAAA;AAAA,UACV,SAAA,EAAW,aAAa,CAAC,QAAA;AAAA,UAExB,QAAA,EAAA;AAAA;AAAA;AACH;AAAA,GAEJ;AAEJ;;;;"}
1
+ {"version":3,"file":"reasoning-activity-DwvH_xWp.cjs","sources":["../src/ds/components/ai/activity/presets/reasoning-activity.tsx"],"sourcesContent":["import { Brain } from 'lucide-react';\nimport { ActivityItem } from '../activity';\nimport { hasVisibleReasoning } from './reasoning-visibility';\nimport type { ReasoningContent } from './reasoning-visibility';\nimport { MarkdownRenderer } from '@/ds/components/MarkdownRenderer';\n\nexport interface ReasoningActivityProps extends ReasoningContent {\n defaultOpen?: boolean;\n}\n\nexport function ReasoningActivity({ defaultOpen = true, ...content }: ReasoningActivityProps) {\n if (!hasVisibleReasoning(content)) return null;\n\n const { text, redacted, streaming } = content;\n const body = redacted ? 'Reasoning was redacted by the provider.' : text;\n\n return (\n <ActivityItem\n icon={<Brain aria-hidden />}\n label=\"Reasoning\"\n status={streaming ? 'running' : 'idle'}\n defaultOpen={defaultOpen}\n aria-label=\"Reasoning\"\n >\n {body.trim().length > 0 && (\n <MarkdownRenderer\n className=\"text-caption text-muted-foreground [&_p]:my-0.5\"\n streaming={streaming && !redacted}\n >\n {body}\n </MarkdownRenderer>\n )}\n </ActivityItem>\n );\n}\n"],"names":["hasVisibleReasoning","jsx","ActivityItem","Brain","MarkdownRenderer"],"mappings":";;;;;;;;AAUO,SAAS,kBAAkB,EAAE,WAAA,GAAc,IAAA,EAAM,GAAG,SAAQ,EAA2B;AAC5F,EAAA,IAAI,CAACA,uCAAA,CAAoB,OAAO,CAAA,EAAG,OAAO,IAAA;AAE1C,EAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAU,SAAA,EAAU,GAAI,OAAA;AACtC,EAAA,MAAM,IAAA,GAAO,WAAW,yCAAA,GAA4C,IAAA;AAEpE,EAAA,uBACEC,cAAA;AAAA,IAACC,qBAAA;AAAA,IAAA;AAAA,MACC,IAAA,kBAAMD,cAAA,CAACE,iBAAA,EAAA,EAAM,aAAA,EAAW,IAAA,EAAC,CAAA;AAAA,MACzB,KAAA,EAAM,WAAA;AAAA,MACN,MAAA,EAAQ,YAAY,SAAA,GAAY,MAAA;AAAA,MAChC,WAAA;AAAA,MACA,YAAA,EAAW,WAAA;AAAA,MAEV,QAAA,EAAA,IAAA,CAAK,IAAA,EAAK,CAAE,MAAA,GAAS,CAAA,oBACpBF,cAAA;AAAA,QAACG,iCAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,iDAAA;AAAA,UACV,SAAA,EAAW,aAAa,CAAC,QAAA;AAAA,UAExB,QAAA,EAAA;AAAA;AAAA;AACH;AAAA,GAEJ;AAEJ;;;;"}
@@ -2,7 +2,7 @@ import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { SpanPayloadJson } from './domains/traces/components/span-payload/span-payload-json.es.js';
3
3
  import { C as Collapsible, b as CollapsibleTrigger, a as CollapsibleContent } from './collapsible-DglEffBF.js';
4
4
  import { D as DisclosureChevron } from './disclosure-chevron-BWZ8Alz1.js';
5
- import { M as MarkdownRenderer } from './markdown-renderer-WesDzhMr.js';
5
+ import { M as MarkdownRenderer } from './markdown-renderer-B55LVMsv.js';
6
6
  import { T as Txt } from './Txt-BuzYj7Vy.js';
7
7
  import { BadgeWrapper } from './domains/chat/components/badge-wrapper.es.js';
8
8
  import { e as ActivityHeadline } from './activity-BsrB5ADa.js';
@@ -68,4 +68,4 @@ function SpanPayloadToolCalls({ toolCalls }) {
68
68
  }
69
69
 
70
70
  export { SpanPayloadField as S, SpanPayloadMarkdown as a, SpanPayloadToolCalls as b, SpanPayloadCollapsible as c, SpanPayloadLabel as d, SpanPayloadTool as e };
71
- //# sourceMappingURL=span-payload-primitives-DBNNkmHo.js.map
71
+ //# sourceMappingURL=span-payload-primitives-DPAyz0rW.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"span-payload-primitives-DBNNkmHo.js","sources":["../src/domains/traces/components/span-payload/span-payload-tool.tsx","../src/domains/traces/components/span-payload/span-payload-primitives.tsx"],"sourcesContent":["import { SpanPayloadJson } from './span-payload-json';\nimport { SpanPayloadField, SpanPayloadLabel } from './span-payload-primitives';\nimport { BadgeWrapper } from '@/domains/chat/components/badge-wrapper';\nimport { ActivityHeadline } from '@/ds/components/ai/activity';\nimport { presentTool } from '@/ds/components/ai/tool-call/tool-presentation';\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nexport function SpanPayloadTool({ value, showLabel = true }: { value: unknown; showLabel?: boolean }) {\n if (!isRecord(value)) return <SpanPayloadJson value={value} />;\n const call = value.type === 'tool-invocation' ? value.toolInvocation : value;\n if (!isRecord(call) || typeof call.toolName !== 'string' || !call.toolName) {\n return <SpanPayloadJson value={value} />;\n }\n const input = 'args' in call ? call.args : call.input;\n const output = 'result' in call ? call.result : call.output;\n const error = call.isError === true || call.state === 'output-error';\n const errorText = typeof call.errorText === 'string' ? call.errorText : undefined;\n const { icon: ToolIcon, label, detail, description } = presentTool(call.toolName, input);\n const hasBody = input !== undefined || output !== undefined || errorText !== undefined;\n return (\n <div data-slot=\"span-payload-tool\" className=\"flex flex-col gap-2\">\n {showLabel && <SpanPayloadLabel>{value.type === 'tool-result' ? 'Tool result' : 'Tool call'}</SpanPayloadLabel>}\n <BadgeWrapper\n status={error ? 'error' : 'idle'}\n header={\n <ActivityHeadline icon={<ToolIcon aria-hidden />} label={label} detail={detail} description={description} />\n }\n >\n {hasBody && (\n <div className=\"flex flex-col gap-3\">\n {input !== undefined && (\n <SpanPayloadField label=\"Arguments\">\n <SpanPayloadJson value={input} />\n </SpanPayloadField>\n )}\n {output !== undefined && (\n <SpanPayloadField label=\"Result\">\n <SpanPayloadJson value={output} />\n </SpanPayloadField>\n )}\n {errorText !== undefined && (\n <SpanPayloadField label=\"Error\">\n <SpanPayloadJson value={errorText} />\n </SpanPayloadField>\n )}\n </div>\n )}\n </BadgeWrapper>\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport { SpanPayloadTool } from './span-payload-tool';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/ds/components/Collapsible';\nimport { DisclosureChevron } from '@/ds/components/DisclosureChevron';\nimport { MarkdownRenderer } from '@/ds/components/MarkdownRenderer';\nimport { Txt } from '@/ds/components/Txt';\n\n/** Small-caps label above a field of a rich payload. */\nexport function SpanPayloadLabel({ children }: { children: ReactNode }) {\n return (\n <Txt as=\"span\" variant=\"meta\" tone=\"faint\" className=\"block uppercase\">\n {children}\n </Txt>\n );\n}\n\nexport function SpanPayloadField({ label, children }: { label: ReactNode; children: ReactNode }) {\n return (\n <div data-slot=\"span-payload-field\" className=\"flex flex-col gap-1.5\">\n <SpanPayloadLabel>{label}</SpanPayloadLabel>\n {children}\n </div>\n );\n}\n\nexport function SpanPayloadMarkdown({ children }: { children: string }) {\n return (\n <div data-slot=\"span-payload-markdown\" className=\"text-foreground\">\n <MarkdownRenderer>{children}</MarkdownRenderer>\n </div>\n );\n}\n\n/** A collapsed block for secondary data (reasoning, steps, warnings…). */\nexport function SpanPayloadCollapsible({\n label,\n children,\n defaultOpen = false,\n}: {\n label: ReactNode;\n children: ReactNode;\n defaultOpen?: boolean;\n}) {\n return (\n <Collapsible defaultOpen={defaultOpen}>\n <CollapsibleTrigger className=\"flex items-center gap-1 text-meta text-placeholder uppercase\">\n <DisclosureChevron direction=\"right\" className=\"size-3\" />\n {label}\n </CollapsibleTrigger>\n <CollapsibleContent className=\"pt-1.5\">{children}</CollapsibleContent>\n </Collapsible>\n );\n}\n\n/** Tool calls as core records them: `{ toolName, args | input }` when they have that shape, JSON otherwise. */\nexport function SpanPayloadToolCalls({ toolCalls }: { toolCalls: unknown[] }) {\n return (\n <ul data-slot=\"span-payload-tool-calls\" className=\"flex flex-col gap-2\">\n {toolCalls.map((call, index) => (\n <li key={index}>\n <SpanPayloadTool value={call} showLabel={false} />\n </li>\n ))}\n </ul>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"span-payload-primitives-DPAyz0rW.js","sources":["../src/domains/traces/components/span-payload/span-payload-tool.tsx","../src/domains/traces/components/span-payload/span-payload-primitives.tsx"],"sourcesContent":["import { SpanPayloadJson } from './span-payload-json';\nimport { SpanPayloadField, SpanPayloadLabel } from './span-payload-primitives';\nimport { BadgeWrapper } from '@/domains/chat/components/badge-wrapper';\nimport { ActivityHeadline } from '@/ds/components/ai/activity';\nimport { presentTool } from '@/ds/components/ai/tool-call/tool-presentation';\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nexport function SpanPayloadTool({ value, showLabel = true }: { value: unknown; showLabel?: boolean }) {\n if (!isRecord(value)) return <SpanPayloadJson value={value} />;\n const call = value.type === 'tool-invocation' ? value.toolInvocation : value;\n if (!isRecord(call) || typeof call.toolName !== 'string' || !call.toolName) {\n return <SpanPayloadJson value={value} />;\n }\n const input = 'args' in call ? call.args : call.input;\n const output = 'result' in call ? call.result : call.output;\n const error = call.isError === true || call.state === 'output-error';\n const errorText = typeof call.errorText === 'string' ? call.errorText : undefined;\n const { icon: ToolIcon, label, detail, description } = presentTool(call.toolName, input);\n const hasBody = input !== undefined || output !== undefined || errorText !== undefined;\n return (\n <div data-slot=\"span-payload-tool\" className=\"flex flex-col gap-2\">\n {showLabel && <SpanPayloadLabel>{value.type === 'tool-result' ? 'Tool result' : 'Tool call'}</SpanPayloadLabel>}\n <BadgeWrapper\n status={error ? 'error' : 'idle'}\n header={\n <ActivityHeadline icon={<ToolIcon aria-hidden />} label={label} detail={detail} description={description} />\n }\n >\n {hasBody && (\n <div className=\"flex flex-col gap-3\">\n {input !== undefined && (\n <SpanPayloadField label=\"Arguments\">\n <SpanPayloadJson value={input} />\n </SpanPayloadField>\n )}\n {output !== undefined && (\n <SpanPayloadField label=\"Result\">\n <SpanPayloadJson value={output} />\n </SpanPayloadField>\n )}\n {errorText !== undefined && (\n <SpanPayloadField label=\"Error\">\n <SpanPayloadJson value={errorText} />\n </SpanPayloadField>\n )}\n </div>\n )}\n </BadgeWrapper>\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport { SpanPayloadTool } from './span-payload-tool';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/ds/components/Collapsible';\nimport { DisclosureChevron } from '@/ds/components/DisclosureChevron';\nimport { MarkdownRenderer } from '@/ds/components/MarkdownRenderer';\nimport { Txt } from '@/ds/components/Txt';\n\n/** Small-caps label above a field of a rich payload. */\nexport function SpanPayloadLabel({ children }: { children: ReactNode }) {\n return (\n <Txt as=\"span\" variant=\"meta\" tone=\"faint\" className=\"block uppercase\">\n {children}\n </Txt>\n );\n}\n\nexport function SpanPayloadField({ label, children }: { label: ReactNode; children: ReactNode }) {\n return (\n <div data-slot=\"span-payload-field\" className=\"flex flex-col gap-1.5\">\n <SpanPayloadLabel>{label}</SpanPayloadLabel>\n {children}\n </div>\n );\n}\n\nexport function SpanPayloadMarkdown({ children }: { children: string }) {\n return (\n <div data-slot=\"span-payload-markdown\" className=\"text-foreground\">\n <MarkdownRenderer>{children}</MarkdownRenderer>\n </div>\n );\n}\n\n/** A collapsed block for secondary data (reasoning, steps, warnings…). */\nexport function SpanPayloadCollapsible({\n label,\n children,\n defaultOpen = false,\n}: {\n label: ReactNode;\n children: ReactNode;\n defaultOpen?: boolean;\n}) {\n return (\n <Collapsible defaultOpen={defaultOpen}>\n <CollapsibleTrigger className=\"flex items-center gap-1 text-meta text-placeholder uppercase\">\n <DisclosureChevron direction=\"right\" className=\"size-3\" />\n {label}\n </CollapsibleTrigger>\n <CollapsibleContent className=\"pt-1.5\">{children}</CollapsibleContent>\n </Collapsible>\n );\n}\n\n/** Tool calls as core records them: `{ toolName, args | input }` when they have that shape, JSON otherwise. */\nexport function SpanPayloadToolCalls({ toolCalls }: { toolCalls: unknown[] }) {\n return (\n <ul data-slot=\"span-payload-tool-calls\" className=\"flex flex-col gap-2\">\n {toolCalls.map((call, index) => (\n <li key={index}>\n <SpanPayloadTool value={call} showLabel={false} />\n </li>\n ))}\n </ul>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ const jsxRuntime = require('react/jsx-runtime');
4
4
  const domains_traces_components_spanPayload_spanPayloadJson = require('./domains/traces/components/span-payload/span-payload-json.cjs.js');
5
5
  const collapsible = require('./collapsible-C6BZhVRG.cjs');
6
6
  const disclosureChevron = require('./disclosure-chevron-B_gmYFR5.cjs');
7
- const markdownRenderer = require('./markdown-renderer-BRu3RpQD.cjs');
7
+ const markdownRenderer = require('./markdown-renderer-B8Zmudqn.cjs');
8
8
  const Txt = require('./Txt-DXjXpX9r.cjs');
9
9
  const domains_chat_components_badgeWrapper = require('./domains/chat/components/badge-wrapper.cjs.js');
10
10
  const activity = require('./activity-CaFdLiPz.cjs');
@@ -75,4 +75,4 @@ exports.SpanPayloadLabel = SpanPayloadLabel;
75
75
  exports.SpanPayloadMarkdown = SpanPayloadMarkdown;
76
76
  exports.SpanPayloadTool = SpanPayloadTool;
77
77
  exports.SpanPayloadToolCalls = SpanPayloadToolCalls;
78
- //# sourceMappingURL=span-payload-primitives-BymKsUAo.cjs.map
78
+ //# sourceMappingURL=span-payload-primitives-nXrFCYgn.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"span-payload-primitives-BymKsUAo.cjs","sources":["../src/domains/traces/components/span-payload/span-payload-tool.tsx","../src/domains/traces/components/span-payload/span-payload-primitives.tsx"],"sourcesContent":["import { SpanPayloadJson } from './span-payload-json';\nimport { SpanPayloadField, SpanPayloadLabel } from './span-payload-primitives';\nimport { BadgeWrapper } from '@/domains/chat/components/badge-wrapper';\nimport { ActivityHeadline } from '@/ds/components/ai/activity';\nimport { presentTool } from '@/ds/components/ai/tool-call/tool-presentation';\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nexport function SpanPayloadTool({ value, showLabel = true }: { value: unknown; showLabel?: boolean }) {\n if (!isRecord(value)) return <SpanPayloadJson value={value} />;\n const call = value.type === 'tool-invocation' ? value.toolInvocation : value;\n if (!isRecord(call) || typeof call.toolName !== 'string' || !call.toolName) {\n return <SpanPayloadJson value={value} />;\n }\n const input = 'args' in call ? call.args : call.input;\n const output = 'result' in call ? call.result : call.output;\n const error = call.isError === true || call.state === 'output-error';\n const errorText = typeof call.errorText === 'string' ? call.errorText : undefined;\n const { icon: ToolIcon, label, detail, description } = presentTool(call.toolName, input);\n const hasBody = input !== undefined || output !== undefined || errorText !== undefined;\n return (\n <div data-slot=\"span-payload-tool\" className=\"flex flex-col gap-2\">\n {showLabel && <SpanPayloadLabel>{value.type === 'tool-result' ? 'Tool result' : 'Tool call'}</SpanPayloadLabel>}\n <BadgeWrapper\n status={error ? 'error' : 'idle'}\n header={\n <ActivityHeadline icon={<ToolIcon aria-hidden />} label={label} detail={detail} description={description} />\n }\n >\n {hasBody && (\n <div className=\"flex flex-col gap-3\">\n {input !== undefined && (\n <SpanPayloadField label=\"Arguments\">\n <SpanPayloadJson value={input} />\n </SpanPayloadField>\n )}\n {output !== undefined && (\n <SpanPayloadField label=\"Result\">\n <SpanPayloadJson value={output} />\n </SpanPayloadField>\n )}\n {errorText !== undefined && (\n <SpanPayloadField label=\"Error\">\n <SpanPayloadJson value={errorText} />\n </SpanPayloadField>\n )}\n </div>\n )}\n </BadgeWrapper>\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport { SpanPayloadTool } from './span-payload-tool';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/ds/components/Collapsible';\nimport { DisclosureChevron } from '@/ds/components/DisclosureChevron';\nimport { MarkdownRenderer } from '@/ds/components/MarkdownRenderer';\nimport { Txt } from '@/ds/components/Txt';\n\n/** Small-caps label above a field of a rich payload. */\nexport function SpanPayloadLabel({ children }: { children: ReactNode }) {\n return (\n <Txt as=\"span\" variant=\"meta\" tone=\"faint\" className=\"block uppercase\">\n {children}\n </Txt>\n );\n}\n\nexport function SpanPayloadField({ label, children }: { label: ReactNode; children: ReactNode }) {\n return (\n <div data-slot=\"span-payload-field\" className=\"flex flex-col gap-1.5\">\n <SpanPayloadLabel>{label}</SpanPayloadLabel>\n {children}\n </div>\n );\n}\n\nexport function SpanPayloadMarkdown({ children }: { children: string }) {\n return (\n <div data-slot=\"span-payload-markdown\" className=\"text-foreground\">\n <MarkdownRenderer>{children}</MarkdownRenderer>\n </div>\n );\n}\n\n/** A collapsed block for secondary data (reasoning, steps, warnings…). */\nexport function SpanPayloadCollapsible({\n label,\n children,\n defaultOpen = false,\n}: {\n label: ReactNode;\n children: ReactNode;\n defaultOpen?: boolean;\n}) {\n return (\n <Collapsible defaultOpen={defaultOpen}>\n <CollapsibleTrigger className=\"flex items-center gap-1 text-meta text-placeholder uppercase\">\n <DisclosureChevron direction=\"right\" className=\"size-3\" />\n {label}\n </CollapsibleTrigger>\n <CollapsibleContent className=\"pt-1.5\">{children}</CollapsibleContent>\n </Collapsible>\n );\n}\n\n/** Tool calls as core records them: `{ toolName, args | input }` when they have that shape, JSON otherwise. */\nexport function SpanPayloadToolCalls({ toolCalls }: { toolCalls: unknown[] }) {\n return (\n <ul data-slot=\"span-payload-tool-calls\" className=\"flex flex-col gap-2\">\n {toolCalls.map((call, index) => (\n <li key={index}>\n <SpanPayloadTool value={call} showLabel={false} />\n </li>\n ))}\n </ul>\n );\n}\n"],"names":["jsx","SpanPayloadJson","presentTool","jsxs","BadgeWrapper","ActivityHeadline","Txt","MarkdownRenderer","Collapsible","CollapsibleTrigger","DisclosureChevron","CollapsibleContent"],"mappings":"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"}
1
+ {"version":3,"file":"span-payload-primitives-nXrFCYgn.cjs","sources":["../src/domains/traces/components/span-payload/span-payload-tool.tsx","../src/domains/traces/components/span-payload/span-payload-primitives.tsx"],"sourcesContent":["import { SpanPayloadJson } from './span-payload-json';\nimport { SpanPayloadField, SpanPayloadLabel } from './span-payload-primitives';\nimport { BadgeWrapper } from '@/domains/chat/components/badge-wrapper';\nimport { ActivityHeadline } from '@/ds/components/ai/activity';\nimport { presentTool } from '@/ds/components/ai/tool-call/tool-presentation';\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nexport function SpanPayloadTool({ value, showLabel = true }: { value: unknown; showLabel?: boolean }) {\n if (!isRecord(value)) return <SpanPayloadJson value={value} />;\n const call = value.type === 'tool-invocation' ? value.toolInvocation : value;\n if (!isRecord(call) || typeof call.toolName !== 'string' || !call.toolName) {\n return <SpanPayloadJson value={value} />;\n }\n const input = 'args' in call ? call.args : call.input;\n const output = 'result' in call ? call.result : call.output;\n const error = call.isError === true || call.state === 'output-error';\n const errorText = typeof call.errorText === 'string' ? call.errorText : undefined;\n const { icon: ToolIcon, label, detail, description } = presentTool(call.toolName, input);\n const hasBody = input !== undefined || output !== undefined || errorText !== undefined;\n return (\n <div data-slot=\"span-payload-tool\" className=\"flex flex-col gap-2\">\n {showLabel && <SpanPayloadLabel>{value.type === 'tool-result' ? 'Tool result' : 'Tool call'}</SpanPayloadLabel>}\n <BadgeWrapper\n status={error ? 'error' : 'idle'}\n header={\n <ActivityHeadline icon={<ToolIcon aria-hidden />} label={label} detail={detail} description={description} />\n }\n >\n {hasBody && (\n <div className=\"flex flex-col gap-3\">\n {input !== undefined && (\n <SpanPayloadField label=\"Arguments\">\n <SpanPayloadJson value={input} />\n </SpanPayloadField>\n )}\n {output !== undefined && (\n <SpanPayloadField label=\"Result\">\n <SpanPayloadJson value={output} />\n </SpanPayloadField>\n )}\n {errorText !== undefined && (\n <SpanPayloadField label=\"Error\">\n <SpanPayloadJson value={errorText} />\n </SpanPayloadField>\n )}\n </div>\n )}\n </BadgeWrapper>\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport { SpanPayloadTool } from './span-payload-tool';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/ds/components/Collapsible';\nimport { DisclosureChevron } from '@/ds/components/DisclosureChevron';\nimport { MarkdownRenderer } from '@/ds/components/MarkdownRenderer';\nimport { Txt } from '@/ds/components/Txt';\n\n/** Small-caps label above a field of a rich payload. */\nexport function SpanPayloadLabel({ children }: { children: ReactNode }) {\n return (\n <Txt as=\"span\" variant=\"meta\" tone=\"faint\" className=\"block uppercase\">\n {children}\n </Txt>\n );\n}\n\nexport function SpanPayloadField({ label, children }: { label: ReactNode; children: ReactNode }) {\n return (\n <div data-slot=\"span-payload-field\" className=\"flex flex-col gap-1.5\">\n <SpanPayloadLabel>{label}</SpanPayloadLabel>\n {children}\n </div>\n );\n}\n\nexport function SpanPayloadMarkdown({ children }: { children: string }) {\n return (\n <div data-slot=\"span-payload-markdown\" className=\"text-foreground\">\n <MarkdownRenderer>{children}</MarkdownRenderer>\n </div>\n );\n}\n\n/** A collapsed block for secondary data (reasoning, steps, warnings…). */\nexport function SpanPayloadCollapsible({\n label,\n children,\n defaultOpen = false,\n}: {\n label: ReactNode;\n children: ReactNode;\n defaultOpen?: boolean;\n}) {\n return (\n <Collapsible defaultOpen={defaultOpen}>\n <CollapsibleTrigger className=\"flex items-center gap-1 text-meta text-placeholder uppercase\">\n <DisclosureChevron direction=\"right\" className=\"size-3\" />\n {label}\n </CollapsibleTrigger>\n <CollapsibleContent className=\"pt-1.5\">{children}</CollapsibleContent>\n </Collapsible>\n );\n}\n\n/** Tool calls as core records them: `{ toolName, args | input }` when they have that shape, JSON otherwise. */\nexport function SpanPayloadToolCalls({ toolCalls }: { toolCalls: unknown[] }) {\n return (\n <ul data-slot=\"span-payload-tool-calls\" className=\"flex flex-col gap-2\">\n {toolCalls.map((call, index) => (\n <li key={index}>\n <SpanPayloadTool value={call} showLabel={false} />\n </li>\n ))}\n </ul>\n );\n}\n"],"names":["jsx","SpanPayloadJson","presentTool","jsxs","BadgeWrapper","ActivityHeadline","Txt","MarkdownRenderer","Collapsible","CollapsibleTrigger","DisclosureChevron","CollapsibleContent"],"mappings":";;;;;;;;;;;;AAMA,MAAM,QAAA,GAAW,CAAC,KAAA,KAChB,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,IAAA,IAAQ,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA;AAE9D,SAAS,eAAA,CAAgB,EAAE,KAAA,EAAO,SAAA,GAAY,MAAK,EAA4C;AACpG,EAAA,IAAI,CAAC,QAAA,CAAS,KAAK,GAAG,uBAAOA,cAAA,CAACC,yEAAgB,KAAA,EAAc,CAAA;AAC5D,EAAA,MAAM,IAAA,GAAO,KAAA,CAAM,IAAA,KAAS,iBAAA,GAAoB,MAAM,cAAA,GAAiB,KAAA;AACvE,EAAA,IAAI,CAAC,QAAA,CAAS,IAAI,CAAA,IAAK,OAAO,KAAK,QAAA,KAAa,QAAA,IAAY,CAAC,IAAA,CAAK,QAAA,EAAU;AAC1E,IAAA,uBAAOD,cAAA,CAACC,yEAAgB,KAAA,EAAc,CAAA;AAAA,EACxC;AACA,EAAA,MAAM,KAAA,GAAQ,MAAA,IAAU,IAAA,GAAO,IAAA,CAAK,OAAO,IAAA,CAAK,KAAA;AAChD,EAAA,MAAM,MAAA,GAAS,QAAA,IAAY,IAAA,GAAO,IAAA,CAAK,SAAS,IAAA,CAAK,MAAA;AACrD,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,OAAA,KAAY,IAAA,IAAQ,KAAK,KAAA,KAAU,cAAA;AACtD,EAAA,MAAM,YAAY,OAAO,IAAA,CAAK,SAAA,KAAc,QAAA,GAAW,KAAK,SAAA,GAAY,MAAA;AACxE,EAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,MAAA,EAAQ,aAAY,GAAIC,4BAAA,CAAY,IAAA,CAAK,QAAA,EAAU,KAAK,CAAA;AACvF,EAAA,MAAM,OAAA,GAAU,KAAA,KAAU,MAAA,IAAa,MAAA,KAAW,UAAa,SAAA,KAAc,MAAA;AAC7E,EAAA,uBACEC,eAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,mBAAA,EAAoB,WAAU,qBAAA,EAC1C,QAAA,EAAA;AAAA,IAAA,SAAA,mCAAc,gBAAA,EAAA,EAAkB,QAAA,EAAA,KAAA,CAAM,IAAA,KAAS,aAAA,GAAgB,gBAAgB,WAAA,EAAY,CAAA;AAAA,oBAC5FH,cAAA;AAAA,MAACI,iDAAA;AAAA,MAAA;AAAA,QACC,MAAA,EAAQ,QAAQ,OAAA,GAAU,MAAA;AAAA,QAC1B,MAAA,kBACEJ,cAAA,CAACK,yBAAA,EAAA,EAAiB,IAAA,kBAAML,cAAA,CAAC,QAAA,EAAA,EAAS,aAAA,EAAW,IAAA,EAAC,CAAA,EAAI,KAAA,EAAc,MAAA,EAAgB,WAAA,EAA0B,CAAA;AAAA,QAG3G,QAAA,EAAA,OAAA,oBACCG,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAA,EACZ,QAAA,EAAA;AAAA,UAAA,KAAA,KAAU,MAAA,mCACR,gBAAA,EAAA,EAAiB,KAAA,EAAM,aACtB,QAAA,kBAAAH,cAAA,CAACC,qEAAA,EAAA,EAAgB,KAAA,EAAO,KAAA,EAAO,CAAA,EACjC,CAAA;AAAA,UAED,MAAA,KAAW,MAAA,oBACVD,cAAA,CAAC,gBAAA,EAAA,EAAiB,KAAA,EAAM,UACtB,QAAA,kBAAAA,cAAA,CAACC,qEAAA,EAAA,EAAgB,KAAA,EAAO,MAAA,EAAQ,CAAA,EAClC,CAAA;AAAA,UAED,SAAA,KAAc,MAAA,oBACbD,cAAA,CAAC,gBAAA,EAAA,EAAiB,KAAA,EAAM,SACtB,QAAA,kBAAAA,cAAA,CAACC,qEAAA,EAAA,EAAgB,KAAA,EAAO,SAAA,EAAW,CAAA,EACrC;AAAA,SAAA,EAEJ;AAAA;AAAA;AAEJ,GAAA,EACF,CAAA;AAEJ;;AC5CO,SAAS,gBAAA,CAAiB,EAAE,QAAA,EAAS,EAA4B;AACtE,EAAA,uBACED,cAAA,CAACM,OAAA,EAAA,EAAI,EAAA,EAAG,MAAA,EAAO,OAAA,EAAQ,QAAO,IAAA,EAAK,OAAA,EAAQ,SAAA,EAAU,iBAAA,EAClD,QAAA,EACH,CAAA;AAEJ;AAEO,SAAS,gBAAA,CAAiB,EAAE,KAAA,EAAO,QAAA,EAAS,EAA8C;AAC/F,EAAA,uBACEH,eAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,oBAAA,EAAqB,WAAU,uBAAA,EAC5C,QAAA,EAAA;AAAA,oBAAAH,cAAA,CAAC,oBAAkB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,IACxB;AAAA,GAAA,EACH,CAAA;AAEJ;AAEO,SAAS,mBAAA,CAAoB,EAAE,QAAA,EAAS,EAAyB;AACtE,EAAA,uBACEA,cAAA,CAAC,SAAI,WAAA,EAAU,uBAAA,EAAwB,WAAU,iBAAA,EAC/C,QAAA,kBAAAA,cAAA,CAACO,iCAAA,EAAA,EAAkB,QAAA,EAAS,CAAA,EAC9B,CAAA;AAEJ;AAGO,SAAS,sBAAA,CAAuB;AAAA,EACrC,KAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc;AAChB,CAAA,EAIG;AACD,EAAA,uBACEJ,eAAA,CAACK,2BAAY,WAAA,EACX,QAAA,EAAA;AAAA,oBAAAL,eAAA,CAACM,8BAAA,EAAA,EAAmB,WAAU,8DAAA,EAC5B,QAAA,EAAA;AAAA,sBAAAT,cAAA,CAACU,mCAAA,EAAA,EAAkB,SAAA,EAAU,OAAA,EAAQ,SAAA,EAAU,QAAA,EAAS,CAAA;AAAA,MACvD;AAAA,KAAA,EACH,CAAA;AAAA,oBACAV,cAAA,CAACW,8BAAA,EAAA,EAAmB,SAAA,EAAU,QAAA,EAAU,QAAA,EAAS;AAAA,GAAA,EACnD,CAAA;AAEJ;AAGO,SAAS,oBAAA,CAAqB,EAAE,SAAA,EAAU,EAA6B;AAC5E,EAAA,uBACEX,cAAA,CAAC,QAAG,WAAA,EAAU,yBAAA,EAA0B,WAAU,qBAAA,EAC/C,QAAA,EAAA,SAAA,CAAU,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,oCACnB,IAAA,EAAA,EACC,QAAA,kBAAAA,cAAA,CAAC,mBAAgB,KAAA,EAAO,IAAA,EAAM,WAAW,KAAA,EAAO,CAAA,EAAA,EADzC,KAET,CACD,CAAA,EACH,CAAA;AAEJ;;;;;;;;;"}
@@ -8,7 +8,7 @@ export declare const TRACE_TIME_RANGE_FIELD_ID = "timeRange";
8
8
  */
9
9
  export declare const TRACE_TIME_RANGE_FIELD: FilterBarField;
10
10
  export declare const TRACE_TIME_RANGE_ITEM: FilterBarItem;
11
- export type TraceTimeRangeChipProps = Pick<DateTimeRangePickerProps, 'preset' | 'onPresetChange' | 'dateFrom' | 'dateTo' | 'onDateChange' | 'onDateRangeChange' | 'disabled' | 'presets'>;
11
+ export type TraceTimeRangeChipProps = Pick<DateTimeRangePickerProps, 'preset' | 'onPresetChange' | 'dateFrom' | 'dateTo' | 'onDateChange' | 'onDateRangeChange' | 'disabled' | 'maxRangeMs' | 'presets'>;
12
12
  /**
13
13
  * The trace list's date range rendered as a FilterBar chip: `Time <preset>`. Always
14
14
  * present and non-removable; the value segment opens the regular DateTimeRangePicker
@@ -1,4 +1,8 @@
1
1
  import { TraceQueryArgs, UseTraceQueryArgs } from '@mastra/react/hooks/traces';
2
+ export declare const TRACES_LIST_REFETCH_INTERVAL_MS = 10000;
3
+ /** The server refused the request (e.g. a time range over its cap); retrying cannot change that. */
4
+ export declare function isRejectedTraceListRequest(error: unknown): boolean;
5
+ export declare function fixedWindowRefetchInterval(error: unknown): number | false;
2
6
  export interface UseTracesListSourceArgs {
3
7
  query: (now: Date) => TraceQueryArgs;
4
8
  orderBy?: TraceQueryArgs['orderBy'];
@@ -25,6 +29,8 @@ export declare function useTracesListSource({ query: buildQuery, orderBy, rollin
25
29
  [x: string]: unknown;
26
30
  } | null;
27
31
  inputPreview: string | null;
32
+ outputPreview: string | null;
33
+ errorPreview: string | null;
28
34
  threadId: string | null;
29
35
  resourceId: string | null;
30
36
  startedAt: string;
@@ -35,15 +35,4 @@ export declare function buildTraceQueryRequest({ rootEntityType, status, dateFro
35
35
  excludedFieldIds?: ReadonlySet<string>;
36
36
  now: Date;
37
37
  }): Pick<QueryTracesInput, 'timeRange' | 'where'>;
38
- export declare const TRACE_QUERY_DISCOVERY_MAX_RANGE_MS: number;
39
- /** Discovery endpoints reject ranges wider than 31 days (and `from >= to`); clamp
40
- * the page's selected range so wide custom ranges still get field suggestions
41
- * for the most recent window. */
42
- export declare function clampTraceDiscoveryTimeRange(timeRange: {
43
- from: string;
44
- to: string;
45
- }): {
46
- from: string;
47
- to: string;
48
- };
49
38
  export {};
@@ -1,7 +1,8 @@
1
1
  export interface ContentBlocksProps<T> {
2
2
  children: React.ReactNode;
3
- items: Array<T>;
3
+ items: ReadonlyArray<T>;
4
4
  onChange: (items: Array<T>) => void;
5
5
  className?: string;
6
+ renderDragPreview?: (item: T) => React.ReactNode;
6
7
  }
7
- export declare function ContentBlocks<T>({ children, items, onChange, className }: ContentBlocksProps<T>): import("react").JSX.Element;
8
+ export declare function ContentBlocks<T>({ children, items, onChange, className, renderDragPreview }: ContentBlocksProps<T>): import("react").JSX.Element;
@@ -20,13 +20,13 @@ export declare const dataListRowOuterStyles: readonly ["group/data-list-row data
20
20
  * rung, the same rung a resting control carries, and error sits on the row
21
21
  * element itself so it reads on top of the highlight.
22
22
  */
23
- export declare const dataListRowStateStyles: readonly ["active:bg-fill", "focus-visible:bg-surface-panel has-focus-visible:bg-surface-panel", "data-featured:before:bg-surface-panel has-data-featured:before:bg-surface-panel has-data-selected:before:bg-surface-panel", "data-[variant=error]:bg-destructive-subtle has-data-[variant=error]:bg-destructive-subtle data-[variant=error]:active:bg-destructive-subtle-active has-data-[variant=error]:active:bg-destructive-subtle-active"];
23
+ export declare const dataListRowStateStyles: readonly ["active:bg-fill", "focus-visible:bg-surface-panel has-focus-visible:bg-surface-panel", "data-featured:before:bg-surface-panel has-data-featured:before:bg-surface-panel has-data-selected:before:bg-surface-panel", "data-[variant=error]:bg-destructive-subtle has-data-[variant=error]:bg-destructive-subtle data-[variant=error]:active:bg-destructive-subtle-active has-data-[variant=error]:active:bg-destructive-subtle-active", "data-[variant=info]:bg-info-subtle/50 has-data-[variant=info]:bg-info-subtle/50"];
24
24
  /**
25
25
  * Layout and focus for the interactive element. The background lives on the
26
26
  * outer row element so it sits inside the root surface.
27
27
  */
28
28
  export declare const dataListRowInteractiveStyles: readonly ["grid grid-cols-subgrid gap-4 px-3 cursor-pointer", "focus-visible:outline-1 focus-visible:outline-solid focus-visible:outline-border-focus focus-visible:-outline-offset-1"];
29
- export declare const dataListRowStyles: readonly ["grid grid-cols-subgrid gap-4 px-3 cursor-pointer", "focus-visible:outline-1 focus-visible:outline-solid focus-visible:outline-border-focus focus-visible:-outline-offset-1", "group/data-list-row data-list-row col-span-full relative min-h-9", "before:absolute before:inset-0 before:-z-2 before:rounded-[inherit] before:bg-background before:content-['']", "active:bg-fill", "focus-visible:bg-surface-panel has-focus-visible:bg-surface-panel", "data-featured:before:bg-surface-panel has-data-featured:before:bg-surface-panel has-data-selected:before:bg-surface-panel", "data-[variant=error]:bg-destructive-subtle has-data-[variant=error]:bg-destructive-subtle data-[variant=error]:active:bg-destructive-subtle-active has-data-[variant=error]:active:bg-destructive-subtle-active"];
29
+ export declare const dataListRowStyles: readonly ["grid grid-cols-subgrid gap-4 px-3 cursor-pointer", "focus-visible:outline-1 focus-visible:outline-solid focus-visible:outline-border-focus focus-visible:-outline-offset-1", "group/data-list-row data-list-row col-span-full relative min-h-9", "before:absolute before:inset-0 before:-z-2 before:rounded-[inherit] before:bg-background before:content-['']", "active:bg-fill", "focus-visible:bg-surface-panel has-focus-visible:bg-surface-panel", "data-featured:before:bg-surface-panel has-data-featured:before:bg-surface-panel has-data-selected:before:bg-surface-panel", "data-[variant=error]:bg-destructive-subtle has-data-[variant=error]:bg-destructive-subtle data-[variant=error]:active:bg-destructive-subtle-active has-data-[variant=error]:active:bg-destructive-subtle-active", "data-[variant=info]:bg-info-subtle/50 has-data-[variant=info]:bg-info-subtle/50"];
30
30
  export declare const dataListRowStaticStyles: readonly ["grid grid-cols-subgrid gap-4 px-3", "group/data-list-row data-list-row col-span-full relative min-h-9", "before:absolute before:inset-0 before:-z-2 before:rounded-[inherit] before:bg-background before:content-['']"];
31
31
  /**
32
32
  * Row actions that stay out of the way until the row is hovered or focused.
@@ -37,8 +37,8 @@ export declare const dataListRowStaticStyles: readonly ["grid grid-cols-subgrid
37
37
  export declare const dataListRowActionRevealStyles = "opacity-0 pointer-coarse:opacity-100 group-focus-within/data-list-row:opacity-100 group-hover/data-list-row:opacity-100";
38
38
  export type DataListSticky = 'start';
39
39
  export declare const dataListStickyStartStyles: readonly ["data-list-sticky-start sticky left-0 z-10 isolate self-stretch overflow-visible"];
40
- /** Tone for a single row. Exposed as `data-variant`; `error` tints the row. */
41
- export type DataListRowVariant = 'default' | 'error';
40
+ /** Tone for a single row. Exposed as `data-variant`; `error` tints the row red, `info` tints it blue to set it apart. */
41
+ export type DataListRowVariant = 'default' | 'error' | 'info';
42
42
  /**
43
43
  * Layout/state modifiers shared by interactive row primitives
44
44
  * (`DataList.RowButton`, `DataList.RowLink`).
@@ -2,6 +2,8 @@ export interface CustomRangeEditorProps {
2
2
  dateFrom?: Date;
3
3
  dateTo?: Date;
4
4
  disabled?: boolean;
5
+ /** Widest range that can be applied, in milliseconds. */
6
+ maxRangeMs?: number;
5
7
  onApply: (from: Date | undefined, to: Date | undefined) => void;
6
8
  onShowPresets: () => void;
7
9
  }
@@ -9,4 +11,4 @@ export interface CustomRangeEditorProps {
9
11
  * The custom range popover body. It mounts each time the popover opens, so its drafts
10
12
  * start from the current range without the picker resetting them.
11
13
  */
12
- export declare function CustomRangeEditor({ dateFrom, dateTo, disabled, onApply, onShowPresets }: CustomRangeEditorProps): import("react").JSX.Element;
14
+ export declare function CustomRangeEditor({ dateFrom, dateTo, disabled, maxRangeMs, onApply, onShowPresets, }: CustomRangeEditorProps): import("react").JSX.Element;
@@ -13,6 +13,8 @@ export interface DateTimeRangePickerProps {
13
13
  */
14
14
  onDateRangeChange?: (from: Date | undefined, to: Date | undefined) => void;
15
15
  disabled?: boolean;
16
+ /** Widest custom range that can be applied, in milliseconds. Presets are unaffected. */
17
+ maxRangeMs?: number;
16
18
  /** Subset of presets to show. If omitted, all presets are shown. */
17
19
  presets?: readonly DateRangePreset[];
18
20
  /** Size passed through to the trigger Button. Defaults to 'md'. */
@@ -26,4 +28,4 @@ export interface DateTimeRangePickerProps {
26
28
  disabled?: boolean;
27
29
  }) => ReactElement;
28
30
  }
29
- export declare function DateTimeRangePicker({ preset, onPresetChange, dateFrom, dateTo, onDateChange, onDateRangeChange, disabled, presets, size, renderTrigger, }: DateTimeRangePickerProps): import("react").JSX.Element;
31
+ export declare function DateTimeRangePicker({ preset, onPresetChange, dateFrom, dateTo, onDateChange, onDateRangeChange, disabled, maxRangeMs, presets, size, renderTrigger, }: DateTimeRangePickerProps): import("react").JSX.Element;
@@ -75,6 +75,11 @@ export type FilterBarContextValue = {
75
75
  announce: (message: string) => void;
76
76
  announcement: string;
77
77
  ariaLabel: string;
78
+ /**
79
+ * Text shown when a field's `suggestions` resolver rejects. Return `undefined` to keep the
80
+ * default "Couldn't load values.".
81
+ */
82
+ describeSuggestionsError?: (error: unknown) => string | undefined;
78
83
  };
79
84
  export declare function useFilterBarContext(): FilterBarContextValue;
80
85
  export declare function createFilterId(): string;
@@ -91,6 +96,11 @@ export type FilterBarProviderProps = {
91
96
  /** Deepest allowed group nesting (root-level group = 1). Defaults to 3. */
92
97
  maxDepth?: number;
93
98
  ariaLabel: string;
99
+ /**
100
+ * Text shown when a field's `suggestions` resolver rejects. Return `undefined` to keep the
101
+ * default "Couldn't load values.".
102
+ */
103
+ describeSuggestionsError?: (error: unknown) => string | undefined;
94
104
  children: ReactNode;
95
105
  };
96
- export declare function FilterBarProvider({ fields, operators, value, onValueChange, createItemId, maxDepth, ariaLabel, children, }: FilterBarProviderProps): import("react").JSX.Element;
106
+ export declare function FilterBarProvider({ fields, operators, value, onValueChange, createItemId, maxDepth, ariaLabel, describeSuggestionsError, children, }: FilterBarProviderProps): import("react").JSX.Element;
@@ -27,6 +27,11 @@ export type FilterBarProps = FilterBarValueProps & {
27
27
  /** How deep advanced-filter groups may nest (root-level group = 1). Defaults to 3. */
28
28
  maxDepth?: number;
29
29
  'aria-label'?: string;
30
+ /**
31
+ * Text shown in a value list when the field's `suggestions` resolver rejects, for example
32
+ * to explain a server limit. Return `undefined` to keep the default "Couldn't load values.".
33
+ */
34
+ describeSuggestionsError?: (error: unknown) => string | undefined;
30
35
  /** Accessible label of the trailing "remove every filter" button. */
31
36
  clearLabel?: string;
32
37
  className?: string;
@@ -48,7 +53,7 @@ export type FilterBarProps = FilterBarValueProps & {
48
53
  * <FilterBar.Input />
49
54
  * </FilterBar>
50
55
  */
51
- export declare function FilterBar({ fields, operators, value, onValueChange, createItemId, maxDepth, 'aria-label': ariaLabel, clearLabel, className, children, }: FilterBarProps): import("react").JSX.Element;
56
+ export declare function FilterBar({ fields, operators, value, onValueChange, createItemId, maxDepth, 'aria-label': ariaLabel, describeSuggestionsError, clearLabel, className, children, }: FilterBarProps): import("react").JSX.Element;
52
57
  export declare namespace FilterBar {
53
58
  var Chips: typeof FilterBarChips;
54
59
  var Chip: typeof FilterBarChip;
@@ -8,6 +8,7 @@ export { SidebarMeter, type SidebarMeterProps, type SidebarMeterTone } from './f
8
8
  export { SidebarNav, type SidebarNavProps } from './nav/sidebar-nav';
9
9
  export { SidebarNavHeader, type SidebarNavHeaderProps } from './nav/sidebar-nav-header';
10
10
  export { SidebarNavLink, type SidebarLink, type SidebarNavLinkProps } from './nav/sidebar-nav-link';
11
+ export { SidebarNavShowMore, type SidebarNavShowMoreProps } from './nav/sidebar-nav-show-more';
11
12
  export { navItemClasses, type SidebarNavItemSize } from './nav/sidebar-nav-item-classes';
12
13
  export { getIsLinkActive } from './nav/sidebar-link-active';
13
14
  export { SidebarNavStack, type SidebarNavStackProps, type SidebarNavStackRootViewProps, type SidebarNavStackViewProps, } from './nav-stack/sidebar-nav-stack';
@@ -0,0 +1,9 @@
1
+ import { ComponentPropsWithoutRef } from 'react';
2
+ import { SidebarState } from '../root/sidebar-context';
3
+ export type SidebarNavShowMoreProps = Omit<ComponentPropsWithoutRef<'button'>, 'children' | 'onClick'> & {
4
+ foldedCount: number;
5
+ expanded: boolean;
6
+ onExpandedChange: (expanded: boolean) => void;
7
+ state?: SidebarState;
8
+ };
9
+ export declare function SidebarNavShowMore({ foldedCount, expanded, onExpandedChange, state: stateProp, className, ...props }: SidebarNavShowMoreProps): import("react").JSX.Element | null;
@@ -8,6 +8,7 @@ import { SidebarNavLink } from './nav/sidebar-nav-link';
8
8
  import { SidebarNavList } from './nav/sidebar-nav-list';
9
9
  import { SidebarNavSection } from './nav/sidebar-nav-section';
10
10
  import { SidebarNavSeparator } from './nav/sidebar-nav-separator';
11
+ import { SidebarNavShowMore } from './nav/sidebar-nav-show-more';
11
12
  import { SidebarMobileTrigger } from './root/sidebar-mobile-trigger';
12
13
  import { SidebarProvider } from './root/sidebar-provider';
13
14
  import { SidebarRoot } from './root/sidebar-root';
@@ -30,6 +31,7 @@ export declare const Sidebar: typeof SidebarRoot & {
30
31
  NavList: typeof SidebarNavList;
31
32
  NavSection: typeof SidebarNavSection;
32
33
  NavSeparator: typeof SidebarNavSeparator;
34
+ NavShowMore: typeof SidebarNavShowMore;
33
35
  NavStack: typeof import('./nav-stack/sidebar-nav-stack-root').SidebarNavStackRoot & {
34
36
  Root: typeof import('./nav-stack/sidebar-nav-stack-root-view').SidebarNavStackRootView;
35
37
  View: typeof import('./nav-stack/sidebar-nav-stack-view').SidebarNavStackView;
@@ -0,0 +1,15 @@
1
+ export interface LocalStorageStore<T> {
2
+ read: () => T;
3
+ write: (value: T) => void;
4
+ subscribe: (onStoreChange: () => void) => () => void;
5
+ defaultValue: T;
6
+ }
7
+ interface LocalStorageStoreOptions<T> {
8
+ key: string;
9
+ defaultValue: T;
10
+ parse: (stored: unknown) => T;
11
+ toJSON?: (value: T) => unknown;
12
+ }
13
+ export declare function createLocalStorageStore<T>({ key, defaultValue, parse, toJSON, }: LocalStorageStoreOptions<T>): LocalStorageStore<T>;
14
+ export declare function useLocalStorageStore<T>(store: LocalStorageStore<T>): T;
15
+ export {};
package/dist/style.css CHANGED
@@ -9823,6 +9823,16 @@
9823
9823
  background-color: var(--destructive-subtle-active);
9824
9824
  }
9825
9825
 
9826
+ .has-data-\[variant\=info\]\:bg-info-subtle\/50:has([data-variant="info"]) {
9827
+ background-color: var(--info-subtle);
9828
+ }
9829
+
9830
+ @supports (color: color-mix(in lab, red, red)) {
9831
+ .has-data-\[variant\=info\]\:bg-info-subtle\/50:has([data-variant="info"]) {
9832
+ background-color: color-mix(in oklab, var(--info-subtle) 50%, transparent);
9833
+ }
9834
+ }
9835
+
9826
9836
  .has-\[\:disabled\]\:cursor-not-allowed:has(:disabled) {
9827
9837
  cursor: not-allowed;
9828
9838
  }
@@ -10744,6 +10754,16 @@
10744
10754
  background-color: var(--destructive-subtle-active);
10745
10755
  }
10746
10756
 
10757
+ .data-\[variant\=info\]\:bg-info-subtle\/50[data-variant="info"] {
10758
+ background-color: var(--info-subtle);
10759
+ }
10760
+
10761
+ @supports (color: color-mix(in lab, red, red)) {
10762
+ .data-\[variant\=info\]\:bg-info-subtle\/50[data-variant="info"] {
10763
+ background-color: color-mix(in oklab, var(--info-subtle) 50%, transparent);
10764
+ }
10765
+ }
10766
+
10747
10767
  @media (prefers-reduced-motion: no-preference) {
10748
10768
  .motion-safe\:animate-in {
10749
10769
  animation: enter var(--tw-animation-duration, var(--tw-duration, .15s))var(--tw-ease, ease)var(--tw-animation-delay, 0s)var(--tw-animation-iteration-count, 1)var(--tw-animation-direction, normal)var(--tw-animation-fill-mode, none);
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { Check, X, ShieldCheck } from 'lucide-react';
3
3
  import { A as Activity, m as ActivityTrigger, d as ActivityHeader, f as ActivityIcon, a as ActivityContent } from './activity-BsrB5ADa.js';
4
- import { T as ToolCallArguments } from './tool-call-arguments-BLCAiFYg.js';
4
+ import { T as ToolCallArguments } from './tool-call-arguments-Bk13pV6A.js';
5
5
  import { p as presentTool } from './tool-presentation-BXAo24Ir.js';
6
6
  import { B as Badge } from './Badge-3-G2I_cx.js';
7
7
  import { B as Button } from './Button-60jVnaHt.js';
@@ -68,4 +68,4 @@ function ToolApproval({ toolName, args, status, children, ...actions }) {
68
68
  }
69
69
 
70
70
  export { ToolApproval as T, ToolApprovalActions as a, ToolApprovalStatus as b };
71
- //# sourceMappingURL=tool-approval-BK2j7aj_.js.map
71
+ //# sourceMappingURL=tool-approval-CYmQJ2i4.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-approval-BK2j7aj_.js","sources":["../src/ds/components/ai/tool-approval/tool-approval.tsx"],"sourcesContent":["import { Check, ShieldCheck, X } from 'lucide-react';\nimport type { LucideIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport { Activity, ActivityContent, ActivityHeader, ActivityIcon, ActivityTrigger } from '../activity';\nimport { presentTool, ToolCallArguments } from '../tool-call';\nimport { Badge } from '@/ds/components/Badge';\nimport type { BadgeVariant } from '@/ds/components/Badge';\nimport { Button } from '@/ds/components/Button';\nimport { Txt } from '@/ds/components/Txt';\n\ntype ToolApprovalDecision = 'approved' | 'declined';\n\nconst approvalStates = {\n pending: { label: 'Approval required', variant: 'warning', icon: ShieldCheck },\n approved: { label: 'Approved', variant: 'success', icon: Check },\n declined: { label: 'Declined', variant: 'neutral', icon: X },\n} satisfies Record<'pending' | ToolApprovalDecision, { label: string; variant: BadgeVariant; icon: LucideIcon }>;\n\nexport interface ToolApprovalStatusProps {\n status?: ToolApprovalDecision;\n}\n\nexport function ToolApprovalStatus({ status }: ToolApprovalStatusProps) {\n const { label, variant, icon: StatusIcon } = approvalStates[status ?? 'pending'];\n return (\n <span role=\"status\" className=\"inline-flex shrink-0\">\n <Badge variant={variant} emphasis=\"subtle\" size=\"sm\" icon={<StatusIcon aria-hidden />}>\n {label}\n </Badge>\n </span>\n );\n}\n\nexport interface ToolApprovalActionsProps {\n onApprove: () => void;\n onDecline: () => void;\n disabled?: boolean;\n toolName?: string;\n autoFocus?: boolean;\n}\n\nexport function ToolApprovalActions({\n onApprove,\n onDecline,\n disabled = false,\n toolName,\n autoFocus = false,\n}: ToolApprovalActionsProps) {\n return (\n <div className=\"flex flex-wrap items-center gap-2\">\n <Button\n type=\"button\"\n variant=\"primary\"\n size=\"sm\"\n icon={<Check aria-hidden />}\n aria-label={toolName ? `Approve ${toolName}` : undefined}\n autoFocus={autoFocus}\n disabled={disabled}\n onClick={onApprove}\n >\n Approve\n </Button>\n <Button\n type=\"button\"\n size=\"sm\"\n icon={<X aria-hidden />}\n aria-label={toolName ? `Decline ${toolName}` : undefined}\n disabled={disabled}\n onClick={onDecline}\n >\n Decline\n </Button>\n </div>\n );\n}\n\nexport interface ToolApprovalProps extends ToolApprovalActionsProps, ToolApprovalStatusProps {\n toolName: string;\n args?: unknown;\n /** Custom details replace the default argument renderer. */\n children?: ReactNode;\n}\n\nexport function ToolApproval({ toolName, args, status, children, ...actions }: ToolApprovalProps) {\n const { icon: ToolIcon } = presentTool(toolName, args);\n\n return (\n <Activity open foldable={false} className=\"my-2\" aria-label={`Tool approval for ${toolName}`}>\n <ActivityTrigger>\n <ActivityHeader className=\"flex-wrap\">\n <ActivityIcon>\n <ToolIcon aria-hidden />\n </ActivityIcon>\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\" font=\"mono\" className=\"min-w-0 break-all\">\n {toolName}\n </Txt>\n <ToolApprovalStatus status={status} />\n </ActivityHeader>\n </ActivityTrigger>\n <ActivityContent>\n {children ?? <ToolCallArguments toolName={toolName} args={args} showFullContent />}\n {!status && <ToolApprovalActions toolName={toolName} {...actions} />}\n </ActivityContent>\n </Activity>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-approval-CYmQJ2i4.js","sources":["../src/ds/components/ai/tool-approval/tool-approval.tsx"],"sourcesContent":["import { Check, ShieldCheck, X } from 'lucide-react';\nimport type { LucideIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport { Activity, ActivityContent, ActivityHeader, ActivityIcon, ActivityTrigger } from '../activity';\nimport { presentTool, ToolCallArguments } from '../tool-call';\nimport { Badge } from '@/ds/components/Badge';\nimport type { BadgeVariant } from '@/ds/components/Badge';\nimport { Button } from '@/ds/components/Button';\nimport { Txt } from '@/ds/components/Txt';\n\ntype ToolApprovalDecision = 'approved' | 'declined';\n\nconst approvalStates = {\n pending: { label: 'Approval required', variant: 'warning', icon: ShieldCheck },\n approved: { label: 'Approved', variant: 'success', icon: Check },\n declined: { label: 'Declined', variant: 'neutral', icon: X },\n} satisfies Record<'pending' | ToolApprovalDecision, { label: string; variant: BadgeVariant; icon: LucideIcon }>;\n\nexport interface ToolApprovalStatusProps {\n status?: ToolApprovalDecision;\n}\n\nexport function ToolApprovalStatus({ status }: ToolApprovalStatusProps) {\n const { label, variant, icon: StatusIcon } = approvalStates[status ?? 'pending'];\n return (\n <span role=\"status\" className=\"inline-flex shrink-0\">\n <Badge variant={variant} emphasis=\"subtle\" size=\"sm\" icon={<StatusIcon aria-hidden />}>\n {label}\n </Badge>\n </span>\n );\n}\n\nexport interface ToolApprovalActionsProps {\n onApprove: () => void;\n onDecline: () => void;\n disabled?: boolean;\n toolName?: string;\n autoFocus?: boolean;\n}\n\nexport function ToolApprovalActions({\n onApprove,\n onDecline,\n disabled = false,\n toolName,\n autoFocus = false,\n}: ToolApprovalActionsProps) {\n return (\n <div className=\"flex flex-wrap items-center gap-2\">\n <Button\n type=\"button\"\n variant=\"primary\"\n size=\"sm\"\n icon={<Check aria-hidden />}\n aria-label={toolName ? `Approve ${toolName}` : undefined}\n autoFocus={autoFocus}\n disabled={disabled}\n onClick={onApprove}\n >\n Approve\n </Button>\n <Button\n type=\"button\"\n size=\"sm\"\n icon={<X aria-hidden />}\n aria-label={toolName ? `Decline ${toolName}` : undefined}\n disabled={disabled}\n onClick={onDecline}\n >\n Decline\n </Button>\n </div>\n );\n}\n\nexport interface ToolApprovalProps extends ToolApprovalActionsProps, ToolApprovalStatusProps {\n toolName: string;\n args?: unknown;\n /** Custom details replace the default argument renderer. */\n children?: ReactNode;\n}\n\nexport function ToolApproval({ toolName, args, status, children, ...actions }: ToolApprovalProps) {\n const { icon: ToolIcon } = presentTool(toolName, args);\n\n return (\n <Activity open foldable={false} className=\"my-2\" aria-label={`Tool approval for ${toolName}`}>\n <ActivityTrigger>\n <ActivityHeader className=\"flex-wrap\">\n <ActivityIcon>\n <ToolIcon aria-hidden />\n </ActivityIcon>\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\" font=\"mono\" className=\"min-w-0 break-all\">\n {toolName}\n </Txt>\n <ToolApprovalStatus status={status} />\n </ActivityHeader>\n </ActivityTrigger>\n <ActivityContent>\n {children ?? <ToolCallArguments toolName={toolName} args={args} showFullContent />}\n {!status && <ToolApprovalActions toolName={toolName} {...actions} />}\n </ActivityContent>\n </Activity>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  const jsxRuntime = require('react/jsx-runtime');
4
4
  const lucideReact = require('lucide-react');
5
5
  const activity = require('./activity-CaFdLiPz.cjs');
6
- const toolCallArguments = require('./tool-call-arguments-CK3kQ_FX.cjs');
6
+ const toolCallArguments = require('./tool-call-arguments-DTwVq7AB.cjs');
7
7
  const toolPresentation = require('./tool-presentation-WLS6d1ws.cjs');
8
8
  const Badge = require('./Badge-BF6FbLH_.cjs');
9
9
  const Button = require('./Button-CAVPKK09.cjs');
@@ -72,4 +72,4 @@ function ToolApproval({ toolName, args, status, children, ...actions }) {
72
72
  exports.ToolApproval = ToolApproval;
73
73
  exports.ToolApprovalActions = ToolApprovalActions;
74
74
  exports.ToolApprovalStatus = ToolApprovalStatus;
75
- //# sourceMappingURL=tool-approval-Bza_sgxa.cjs.map
75
+ //# sourceMappingURL=tool-approval-aWNKG9dK.cjs.map