@mastra/playground-ui 60.1.0 → 60.2.0-alpha.0

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 (729) hide show
  1. package/dist/{ask-user-Dlz2346n.js → ask-user-DE8TaPhb.js} +62 -53
  2. package/dist/ask-user-DE8TaPhb.js.map +1 -0
  3. package/dist/{ask-user-CXu4b7Jw.cjs → ask-user-XYY0fUoI.cjs} +61 -52
  4. package/dist/ask-user-XYY0fUoI.cjs.map +1 -0
  5. package/dist/{checkbox-CI8JtZKS.cjs → checkbox-Bkobte27.cjs} +3 -1
  6. package/dist/checkbox-Bkobte27.cjs.map +1 -0
  7. package/dist/{checkbox-CQedzgsi.js → checkbox-DcNIsz5L.js} +3 -1
  8. package/dist/checkbox-DcNIsz5L.js.map +1 -0
  9. package/dist/{code-block-DY5KsTGY.js → code-block-Bnz7Pq0Q.js} +3 -3
  10. package/dist/code-block-Bnz7Pq0Q.js.map +1 -0
  11. package/dist/{code-block-BzoMjjtf.cjs → code-block-C3DbSINk.cjs} +3 -3
  12. package/dist/code-block-C3DbSINk.cjs.map +1 -0
  13. package/dist/{code-editor-B_wPmKPf.cjs → code-editor-Btr1qm_5.cjs} +26 -6
  14. package/dist/code-editor-Btr1qm_5.cjs.map +1 -0
  15. package/dist/{code-editor-28chVxHw.js → code-editor-DzhYz1fH.js} +26 -6
  16. package/dist/code-editor-DzhYz1fH.js.map +1 -0
  17. package/dist/{combobox-B15qTrWO.js → combobox-DKFPbNMB.js} +13 -11
  18. package/dist/combobox-DKFPbNMB.js.map +1 -0
  19. package/dist/{combobox-DJ0c4o4S.cjs → combobox-RzEkcOuu.cjs} +14 -12
  20. package/dist/combobox-RzEkcOuu.cjs.map +1 -0
  21. package/dist/{combobox-styles-C2MEEpaG.js → combobox-styles-mbcWlNZQ.js} +6 -7
  22. package/dist/combobox-styles-mbcWlNZQ.js.map +1 -0
  23. package/dist/{combobox-styles-DLflBH-G.cjs → combobox-styles-qL3FSgmU.cjs} +5 -6
  24. package/dist/combobox-styles-qL3FSgmU.cjs.map +1 -0
  25. package/dist/components/Checkbox.cjs.js +1 -1
  26. package/dist/components/Checkbox.es.js +1 -1
  27. package/dist/components/CodeBlock.cjs.js +1 -1
  28. package/dist/components/CodeBlock.es.js +1 -1
  29. package/dist/components/CodeEditor.cjs.js +1 -1
  30. package/dist/components/CodeEditor.es.js +1 -1
  31. package/dist/components/Combobox.cjs.js +2 -2
  32. package/dist/components/Combobox.es.js +2 -2
  33. package/dist/components/Comment.cjs.js +7 -9
  34. package/dist/components/Comment.cjs.js.map +1 -1
  35. package/dist/components/Comment.es.js +8 -10
  36. package/dist/components/Comment.es.js.map +1 -1
  37. package/dist/components/DataCodeSection.cjs.js +1 -1
  38. package/dist/components/DataCodeSection.es.js +1 -1
  39. package/dist/components/DataList.cjs.js +5 -5
  40. package/dist/components/DataList.es.js +5 -5
  41. package/dist/components/DataPanel.cjs.js +1 -1
  42. package/dist/components/DataPanel.es.js +1 -1
  43. package/dist/components/DateTimePicker.cjs.js +9 -14
  44. package/dist/components/DateTimePicker.cjs.js.map +1 -1
  45. package/dist/components/DateTimePicker.es.js +9 -14
  46. package/dist/components/DateTimePicker.es.js.map +1 -1
  47. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  48. package/dist/components/DateTimeRangePicker.es.js +1 -1
  49. package/dist/components/EnvironmentVariablesEditor.cjs.js +12 -22
  50. package/dist/components/EnvironmentVariablesEditor.cjs.js.map +1 -1
  51. package/dist/components/EnvironmentVariablesEditor.es.js +12 -22
  52. package/dist/components/EnvironmentVariablesEditor.es.js.map +1 -1
  53. package/dist/components/Field.cjs.js +19 -0
  54. package/dist/components/Field.cjs.js.map +1 -0
  55. package/dist/components/Field.d.ts +2 -0
  56. package/dist/components/Field.es.js +3 -0
  57. package/dist/components/Field.es.js.map +1 -0
  58. package/dist/components/FilterBar.cjs.js +2 -2
  59. package/dist/components/FilterBar.es.js +3 -3
  60. package/dist/components/Form.cjs.js +10 -0
  61. package/dist/components/Form.cjs.js.map +1 -0
  62. package/dist/components/Form.d.ts +2 -0
  63. package/dist/components/Form.es.js +2 -0
  64. package/dist/components/Form.es.js.map +1 -0
  65. package/dist/components/FormFieldBlocks.cjs.js +270 -11
  66. package/dist/components/FormFieldBlocks.cjs.js.map +1 -1
  67. package/dist/components/FormFieldBlocks.es.js +267 -8
  68. package/dist/components/FormFieldBlocks.es.js.map +1 -1
  69. package/dist/components/Input.cjs.js +1 -1
  70. package/dist/components/Input.es.js +1 -1
  71. package/dist/components/InputGroup.cjs.js +1 -1
  72. package/dist/components/InputGroup.es.js +1 -1
  73. package/dist/components/JSONSchemaForm.cjs.js +51 -52
  74. package/dist/components/JSONSchemaForm.cjs.js.map +1 -1
  75. package/dist/components/JSONSchemaForm.es.js +44 -45
  76. package/dist/components/JSONSchemaForm.es.js.map +1 -1
  77. package/dist/components/Label.cjs.js +33 -2
  78. package/dist/components/Label.cjs.js.map +1 -1
  79. package/dist/components/Label.es.js +17 -1
  80. package/dist/components/Label.es.js.map +1 -1
  81. package/dist/components/ListSearch.cjs.js +1 -1
  82. package/dist/components/ListSearch.es.js +1 -1
  83. package/dist/components/LogsDataList.cjs.js +2 -2
  84. package/dist/components/LogsDataList.es.js +2 -2
  85. package/dist/components/MainSidebar.cjs.js +11 -125
  86. package/dist/components/MainSidebar.cjs.js.map +1 -1
  87. package/dist/components/MainSidebar.es.js +1 -120
  88. package/dist/components/MainSidebar.es.js.map +1 -1
  89. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  90. package/dist/components/MarkdownRenderer.es.js +1 -1
  91. package/dist/components/PropertyFilter.cjs.js +24 -21
  92. package/dist/components/PropertyFilter.cjs.js.map +1 -1
  93. package/dist/components/PropertyFilter.es.js +25 -22
  94. package/dist/components/PropertyFilter.es.js.map +1 -1
  95. package/dist/components/RadioGroup.cjs.js +1 -1
  96. package/dist/components/RadioGroup.es.js +1 -1
  97. package/dist/components/RuleBuilder.cjs.js +2 -2
  98. package/dist/components/RuleBuilder.es.js +2 -2
  99. package/dist/components/SearchInput.cjs.js +10 -0
  100. package/dist/components/SearchInput.cjs.js.map +1 -0
  101. package/dist/components/SearchInput.d.ts +2 -0
  102. package/dist/components/SearchInput.es.js +2 -0
  103. package/dist/components/SearchInput.es.js.map +1 -0
  104. package/dist/components/Section.cjs.js +1 -1
  105. package/dist/components/Section.es.js +1 -1
  106. package/dist/components/SegmentedControl.cjs.js +1 -1
  107. package/dist/components/SegmentedControl.es.js +1 -1
  108. package/dist/components/Select.cjs.js +1 -1
  109. package/dist/components/Select.es.js +1 -1
  110. package/dist/components/SideDialog.cjs.js +1 -1
  111. package/dist/components/SideDialog.es.js +1 -1
  112. package/dist/components/Switch.cjs.js +1 -1
  113. package/dist/components/Switch.es.js +1 -1
  114. package/dist/components/Textarea.cjs.js +1 -1
  115. package/dist/components/Textarea.es.js +1 -1
  116. package/dist/components/ThemeToggle.cjs.js +1 -1
  117. package/dist/components/ThemeToggle.es.js +1 -1
  118. package/dist/components/Workflow.cjs.js +3 -3
  119. package/dist/components/Workflow.es.js +3 -3
  120. package/dist/components/ai/activity.cjs.js +1 -1
  121. package/dist/components/ai/activity.es.js +1 -1
  122. package/dist/components/ai/ask-user.cjs.js +1 -1
  123. package/dist/components/ai/ask-user.es.js +1 -1
  124. package/dist/components/ai/plan.cjs.js +1 -1
  125. package/dist/components/ai/plan.es.js +1 -1
  126. package/dist/components/ai/tool-call.cjs.js +1 -1
  127. package/dist/components/ai/tool-call.es.js +1 -1
  128. package/dist/{custom-auto-form-field-yEMBGXu-.js → custom-auto-form-field-BvEhSH73.js} +2 -6
  129. package/dist/custom-auto-form-field-BvEhSH73.js.map +1 -0
  130. package/dist/{custom-auto-form-field-Brfb-0Te.cjs → custom-auto-form-field-DVse5pih.cjs} +2 -6
  131. package/dist/custom-auto-form-field-DVse5pih.cjs.map +1 -0
  132. package/dist/{data-code-section-It6myyvZ.js → data-code-section-DFxE6ckH.js} +22 -19
  133. package/dist/data-code-section-DFxE6ckH.js.map +1 -0
  134. package/dist/{data-code-section-DWBfkrmO.cjs → data-code-section-Ds79F6W-.cjs} +21 -18
  135. package/dist/data-code-section-Ds79F6W-.cjs.map +1 -0
  136. package/dist/{data-list-Y42KyuI1.cjs → data-list-Bqf-fhMx.cjs} +3 -3
  137. package/dist/{data-list-Y42KyuI1.cjs.map → data-list-Bqf-fhMx.cjs.map} +1 -1
  138. package/dist/{data-list-CyeD_u-6.js → data-list-CEIYm7FY.js} +3 -3
  139. package/dist/{data-list-CyeD_u-6.js.map → data-list-CEIYm7FY.js.map} +1 -1
  140. package/dist/{data-list-skeleton-Bk9LI0J0.js → data-list-skeleton-CeyLefM5.js} +2 -2
  141. package/dist/{data-list-skeleton-Bk9LI0J0.js.map → data-list-skeleton-CeyLefM5.js.map} +1 -1
  142. package/dist/{data-list-skeleton-BXPfL0s7.cjs → data-list-skeleton-DuqQkzwC.cjs} +2 -2
  143. package/dist/{data-list-skeleton-BXPfL0s7.cjs.map → data-list-skeleton-DuqQkzwC.cjs.map} +1 -1
  144. package/dist/{data-list-spacer-C8z32twc.js → data-list-spacer-BH2DjRdk.js} +2 -2
  145. package/dist/{data-list-spacer-C8z32twc.js.map → data-list-spacer-BH2DjRdk.js.map} +1 -1
  146. package/dist/{data-list-spacer-BSg2hCx7.cjs → data-list-spacer-DFvaAEqo.cjs} +2 -2
  147. package/dist/{data-list-spacer-BSg2hCx7.cjs.map → data-list-spacer-DFvaAEqo.cjs.map} +1 -1
  148. package/dist/{data-list-top-C-pLBax7.cjs → data-list-top-CvD3KI8R.cjs} +2 -2
  149. package/dist/{data-list-top-C-pLBax7.cjs.map → data-list-top-CvD3KI8R.cjs.map} +1 -1
  150. package/dist/{data-list-top-DheFgb0M.js → data-list-top-CxUWL8gh.js} +2 -2
  151. package/dist/{data-list-top-DheFgb0M.js.map → data-list-top-CxUWL8gh.js.map} +1 -1
  152. package/dist/{data-panel-DuLf5j8S.js → data-panel-CbomKGJt.js} +2 -2
  153. package/dist/{data-panel-DuLf5j8S.js.map → data-panel-CbomKGJt.js.map} +1 -1
  154. package/dist/{data-panel-D7Qk4iwZ.cjs → data-panel-o-QLWuFV.cjs} +2 -2
  155. package/dist/{data-panel-D7Qk4iwZ.cjs.map → data-panel-o-QLWuFV.cjs.map} +1 -1
  156. package/dist/{date-time-range-picker-BDylIIzt.js → date-time-range-picker-B1zYIQTC.js} +56 -55
  157. package/dist/date-time-range-picker-B1zYIQTC.js.map +1 -0
  158. package/dist/{date-time-range-picker-UheN070q.cjs → date-time-range-picker-Bb-CGVEL.cjs} +56 -55
  159. package/dist/date-time-range-picker-Bb-CGVEL.cjs.map +1 -0
  160. package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +1 -1
  161. package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +1 -1
  162. package/dist/domains/chat/messages/dataset-save-action.cjs.js +11 -10
  163. package/dist/domains/chat/messages/dataset-save-action.cjs.js.map +1 -1
  164. package/dist/domains/chat/messages/dataset-save-action.es.js +11 -10
  165. package/dist/domains/chat/messages/dataset-save-action.es.js.map +1 -1
  166. package/dist/domains/chat/messages/message-row.cjs.js +1 -1
  167. package/dist/domains/chat/messages/message-row.es.js +1 -1
  168. package/dist/domains/chat/messages/renderers/message-text.cjs.js +1 -1
  169. package/dist/domains/chat/messages/renderers/message-text.es.js +1 -1
  170. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
  171. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
  172. package/dist/domains/chat/messages/skill-message.cjs.js +1 -1
  173. package/dist/domains/chat/messages/skill-message.es.js +1 -1
  174. package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
  175. package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
  176. package/dist/domains/chat/tools/badges/agent-badge.cjs.js +2 -2
  177. package/dist/domains/chat/tools/badges/agent-badge.es.js +2 -2
  178. package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
  179. package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
  180. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.cjs.js +1 -1
  181. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js +1 -1
  182. package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +2 -2
  183. package/dist/domains/chat/tools/badges/code-mode-badge.es.js +2 -2
  184. package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +1 -1
  185. package/dist/domains/chat/tools/badges/file-tree-badge.es.js +1 -1
  186. package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +1 -1
  187. package/dist/domains/chat/tools/badges/observation-marker-details.es.js +1 -1
  188. package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +1 -1
  189. package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
  190. package/dist/domains/chat/tools/badges/tool-badge.cjs.js +2 -2
  191. package/dist/domains/chat/tools/badges/tool-badge.es.js +2 -2
  192. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +2 -2
  193. package/dist/domains/chat/tools/badges/workflow-badge.es.js +2 -2
  194. package/dist/domains/chat/tools/submit-plan-tool.cjs.js +2 -2
  195. package/dist/domains/chat/tools/submit-plan-tool.es.js +2 -2
  196. package/dist/domains/chat/tools/tool-card.cjs.js +1 -1
  197. package/dist/domains/chat/tools/tool-card.es.js +1 -1
  198. package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js +18 -16
  199. package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js.map +1 -1
  200. package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js +18 -16
  201. package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js.map +1 -1
  202. package/dist/domains/feedback/utils/feedback-refetch-interval.cjs.js +1 -1
  203. package/dist/domains/feedback/utils/feedback-refetch-interval.cjs.js.map +1 -1
  204. package/dist/domains/feedback/utils/feedback-refetch-interval.es.js +1 -1
  205. package/dist/domains/feedback/utils/feedback-refetch-interval.es.js.map +1 -1
  206. package/dist/domains/logs/components/log-data-panel.cjs.js +1 -1
  207. package/dist/domains/logs/components/log-data-panel.es.js +1 -1
  208. package/dist/domains/logs/components/logs-list-view.cjs.js +2 -2
  209. package/dist/domains/logs/components/logs-list-view.es.js +2 -2
  210. package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
  211. package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
  212. package/dist/domains/memory/components/observation-detail-view.cjs.js +5 -3
  213. package/dist/domains/memory/components/observation-detail-view.cjs.js.map +1 -1
  214. package/dist/domains/memory/components/observation-detail-view.es.js +5 -3
  215. package/dist/domains/memory/components/observation-detail-view.es.js.map +1 -1
  216. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  217. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  218. package/dist/domains/metrics/components/memory-card-view.cjs.js +1 -1
  219. package/dist/domains/metrics/components/memory-card-view.es.js +1 -1
  220. package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js +1 -1
  221. package/dist/domains/metrics/components/model-usage-cost-card-view.es.js +1 -1
  222. package/dist/domains/metrics/components/scores-card-view.cjs.js +1 -1
  223. package/dist/domains/metrics/components/scores-card-view.es.js +1 -1
  224. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js +16 -15
  225. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js.map +1 -1
  226. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js +16 -15
  227. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js.map +1 -1
  228. package/dist/domains/request-context/components/request-context-label.cjs.js +4 -3
  229. package/dist/domains/request-context/components/request-context-label.cjs.js.map +1 -1
  230. package/dist/domains/request-context/components/request-context-label.es.js +4 -3
  231. package/dist/domains/request-context/components/request-context-label.es.js.map +1 -1
  232. package/dist/domains/scores/components/score-data-panel.cjs.js +1 -1
  233. package/dist/domains/scores/components/score-data-panel.es.js +1 -1
  234. package/dist/domains/scores/components/span-scoring.cjs.js +1 -1
  235. package/dist/domains/scores/components/span-scoring.es.js +1 -1
  236. package/dist/domains/scores/components/trace-scores-tab.cjs.js +1 -1
  237. package/dist/domains/scores/components/trace-scores-tab.es.js +1 -1
  238. package/dist/domains/scores/hooks/use-scorers.cjs.js +1 -1
  239. package/dist/domains/scores/hooks/use-scorers.cjs.js.map +1 -1
  240. package/dist/domains/scores/hooks/use-scorers.es.js +1 -1
  241. package/dist/domains/scores/hooks/use-scorers.es.js.map +1 -1
  242. package/dist/domains/scores/hooks/use-trace-span-scores.cjs.js +1 -1
  243. package/dist/domains/scores/hooks/use-trace-span-scores.cjs.js.map +1 -1
  244. package/dist/domains/scores/hooks/use-trace-span-scores.es.js +1 -1
  245. package/dist/domains/scores/hooks/use-trace-span-scores.es.js.map +1 -1
  246. package/dist/domains/traces/components/feedback-thread.cjs.js +1 -1
  247. package/dist/domains/traces/components/feedback-thread.es.js +1 -1
  248. package/dist/domains/traces/components/span-data-panel-view.cjs.js +1 -1
  249. package/dist/domains/traces/components/span-data-panel-view.es.js +1 -1
  250. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +1 -1
  251. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +1 -1
  252. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
  253. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
  254. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +2 -2
  255. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +2 -2
  256. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +2 -2
  257. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +2 -2
  258. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +2 -2
  259. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +2 -2
  260. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
  261. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
  262. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +1 -1
  263. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +1 -1
  264. package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js +1 -1
  265. package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +1 -1
  266. package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
  267. package/dist/domains/traces/components/span-summary-description.es.js +1 -1
  268. package/dist/domains/traces/components/thread-trace/thread-trace-context.cjs.js.map +1 -1
  269. package/dist/domains/traces/components/thread-trace/thread-trace-context.es.js.map +1 -1
  270. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
  271. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
  272. package/dist/domains/traces/components/thread-trace/thread-trace-list.cjs.js +7 -8
  273. package/dist/domains/traces/components/thread-trace/thread-trace-list.cjs.js.map +1 -1
  274. package/dist/domains/traces/components/thread-trace/thread-trace-list.es.js +7 -8
  275. package/dist/domains/traces/components/thread-trace/thread-trace-list.es.js.map +1 -1
  276. package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +1 -1
  277. package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +1 -1
  278. package/dist/domains/traces/components/thread-trace/thread-trace-root.cjs.js +23 -16
  279. package/dist/domains/traces/components/thread-trace/thread-trace-root.cjs.js.map +1 -1
  280. package/dist/domains/traces/components/thread-trace/thread-trace-root.es.js +23 -16
  281. package/dist/domains/traces/components/thread-trace/thread-trace-root.es.js.map +1 -1
  282. package/dist/domains/traces/components/thread-trace/thread-trace-row-context.cjs.js.map +1 -1
  283. package/dist/domains/traces/components/thread-trace/thread-trace-row-context.es.js.map +1 -1
  284. package/dist/domains/traces/components/thread-trace/thread-trace-row.cjs.js +3 -9
  285. package/dist/domains/traces/components/thread-trace/thread-trace-row.cjs.js.map +1 -1
  286. package/dist/domains/traces/components/thread-trace/thread-trace-row.es.js +3 -9
  287. package/dist/domains/traces/components/thread-trace/thread-trace-row.es.js.map +1 -1
  288. package/dist/domains/traces/components/thread-trace.cjs.js +0 -2
  289. package/dist/domains/traces/components/thread-trace.cjs.js.map +1 -1
  290. package/dist/domains/traces/components/thread-trace.es.js +0 -2
  291. package/dist/domains/traces/components/thread-trace.es.js.map +1 -1
  292. package/dist/domains/traces/components/thread-view-by-trace.cjs.js +20 -53
  293. package/dist/domains/traces/components/thread-view-by-trace.cjs.js.map +1 -1
  294. package/dist/domains/traces/components/thread-view-by-trace.es.js +21 -54
  295. package/dist/domains/traces/components/thread-view-by-trace.es.js.map +1 -1
  296. package/dist/domains/traces/components/trace-columns-menu.cjs.js +10 -11
  297. package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
  298. package/dist/domains/traces/components/trace-columns-menu.es.js +10 -11
  299. package/dist/domains/traces/components/trace-columns-menu.es.js.map +1 -1
  300. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +5 -9
  301. package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
  302. package/dist/domains/traces/components/trace-data-panel-view.es.js +6 -10
  303. package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
  304. package/dist/domains/traces/components/trace-data-panel.cjs.js +1 -0
  305. package/dist/domains/traces/components/trace-data-panel.cjs.js.map +1 -1
  306. package/dist/domains/traces/components/trace-data-panel.es.js +1 -0
  307. package/dist/domains/traces/components/trace-data-panel.es.js.map +1 -1
  308. package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
  309. package/dist/domains/traces/components/trace-id-button.es.js +1 -1
  310. package/dist/domains/traces/components/trace-span-panel.cjs.js +0 -1
  311. package/dist/domains/traces/components/trace-span-panel.cjs.js.map +1 -1
  312. package/dist/domains/traces/components/trace-span-panel.es.js +0 -1
  313. package/dist/domains/traces/components/trace-span-panel.es.js.map +1 -1
  314. package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
  315. package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
  316. package/dist/domains/traces/components/trace-thread-panel.cjs.js +1 -3
  317. package/dist/domains/traces/components/trace-thread-panel.cjs.js.map +1 -1
  318. package/dist/domains/traces/components/trace-thread-panel.es.js +1 -3
  319. package/dist/domains/traces/components/trace-thread-panel.es.js.map +1 -1
  320. package/dist/domains/traces/components/trace-time-range-chip.cjs.js +2 -2
  321. package/dist/domains/traces/components/trace-time-range-chip.es.js +2 -2
  322. package/dist/domains/traces/components/traces-list-view.cjs.js +3 -3
  323. package/dist/domains/traces/components/traces-list-view.es.js +3 -3
  324. package/dist/domains/traces/components/traces-page-skeleton.cjs.js +1 -1
  325. package/dist/domains/traces/components/traces-page-skeleton.es.js +1 -1
  326. package/dist/domains/traces/hooks/use-traces-list-source.cjs.js +2 -0
  327. package/dist/domains/traces/hooks/use-traces-list-source.cjs.js.map +1 -1
  328. package/dist/domains/traces/hooks/use-traces-list-source.es.js +2 -0
  329. package/dist/domains/traces/hooks/use-traces-list-source.es.js.map +1 -1
  330. package/dist/domains/workflows/components/workflow-combobox.cjs.js +1 -1
  331. package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
  332. package/dist/domains/workflows/components/workflow-step-detail.cjs.js +2 -2
  333. package/dist/domains/workflows/components/workflow-step-detail.es.js +2 -2
  334. package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +2 -2
  335. package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +2 -2
  336. package/dist/domains/workflows/workflow/data/workflow-data-button.cjs.js +1 -1
  337. package/dist/domains/workflows/workflow/data/workflow-data-button.es.js +1 -1
  338. package/dist/domains/workflows/workflow/data/workflow-data-inspector.cjs.js +1 -1
  339. package/dist/domains/workflows/workflow/data/workflow-data-inspector.es.js +1 -1
  340. package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js +7 -14
  341. package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js.map +1 -1
  342. package/dist/domains/workflows/workflow/input/workflow-json-input.es.js +7 -14
  343. package/dist/domains/workflows/workflow/input/workflow-json-input.es.js.map +1 -1
  344. package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js +39 -42
  345. package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js.map +1 -1
  346. package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js +40 -43
  347. package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js.map +1 -1
  348. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.cjs.js +1 -1
  349. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +1 -1
  350. package/dist/domains/workflows/workflow/workflow-body-graph.cjs.js +1 -1
  351. package/dist/domains/workflows/workflow/workflow-body-graph.es.js +1 -1
  352. package/dist/domains/workflows/workflow/workflow-data-edge.cjs.js +1 -1
  353. package/dist/domains/workflows/workflow/workflow-data-edge.es.js +1 -1
  354. package/dist/domains/workflows/workflow/workflow-debug-mode-switch.cjs.js +8 -16
  355. package/dist/domains/workflows/workflow/workflow-debug-mode-switch.cjs.js.map +1 -1
  356. package/dist/domains/workflows/workflow/workflow-debug-mode-switch.es.js +9 -17
  357. package/dist/domains/workflows/workflow/workflow-debug-mode-switch.es.js.map +1 -1
  358. package/dist/domains/workflows/workflow/workflow-graph-inner.cjs.js +1 -1
  359. package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +1 -1
  360. package/dist/domains/workflows/workflow/workflow-graph-node.cjs.js +1 -1
  361. package/dist/domains/workflows/workflow/workflow-graph-node.es.js +1 -1
  362. package/dist/domains/workflows/workflow/workflow-input-data.cjs.js +1 -1
  363. package/dist/domains/workflows/workflow/workflow-input-data.es.js +1 -1
  364. package/dist/domains/workflows/workflow/workflow-map-config-dialog.cjs.js +1 -1
  365. package/dist/domains/workflows/workflow/workflow-map-config-dialog.es.js +1 -1
  366. package/dist/domains/workflows/workflow/workflow-nested-graph.cjs.js +2 -2
  367. package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +2 -2
  368. package/dist/domains/workflows/workflow/workflow-run-data.cjs.js +1 -1
  369. package/dist/domains/workflows/workflow/workflow-run-data.es.js +1 -1
  370. package/dist/domains/workflows/workflow/workflow-status.cjs.js +1 -1
  371. package/dist/domains/workflows/workflow/workflow-status.es.js +1 -1
  372. package/dist/domains/workflows/workflow/workflow-step-action-bar.cjs.js +1 -1
  373. package/dist/domains/workflows/workflow/workflow-step-action-bar.es.js +1 -1
  374. package/dist/domains/workflows/workflow/workflow-suspended-steps.cjs.js +1 -1
  375. package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +1 -1
  376. package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +8 -21
  377. package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js.map +1 -1
  378. package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +9 -22
  379. package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js.map +1 -1
  380. package/dist/ee/signals/components/entity-index-list.cjs.js +1 -1
  381. package/dist/ee/signals/components/entity-index-list.es.js +1 -1
  382. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +3 -3
  383. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +3 -3
  384. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +62 -68
  385. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js.map +1 -1
  386. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +62 -68
  387. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js.map +1 -1
  388. package/dist/ee/signals/settings/trace-signal-settings.cjs.js +1 -1
  389. package/dist/ee/signals/settings/trace-signal-settings.es.js +1 -1
  390. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +13 -16
  391. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js.map +1 -1
  392. package/dist/ee/topics/components/topic-trace-summary-list.es.js +14 -17
  393. package/dist/ee/topics/components/topic-trace-summary-list.es.js.map +1 -1
  394. package/dist/field-BtvEQ68O.js +170 -0
  395. package/dist/field-BtvEQ68O.js.map +1 -0
  396. package/dist/field-control-aria-DB6y41tQ.js +26 -0
  397. package/dist/field-control-aria-DB6y41tQ.js.map +1 -0
  398. package/dist/field-control-aria-WzMGs0A4.cjs +31 -0
  399. package/dist/field-control-aria-WzMGs0A4.cjs.map +1 -0
  400. package/dist/{field-block-DtaPqBa3.cjs → field-error-id-4DYu4KZ2.cjs} +24 -4
  401. package/dist/field-error-id-4DYu4KZ2.cjs.map +1 -0
  402. package/dist/{field-block--PeppIRb.js → field-error-id-BSQLcfHo.js} +22 -3
  403. package/dist/field-error-id-BSQLcfHo.js.map +1 -0
  404. package/dist/field-ip9xiOVa.cjs +198 -0
  405. package/dist/field-ip9xiOVa.cjs.map +1 -0
  406. package/dist/{filter-bar-chip-CBlHsz4A.cjs → filter-bar-chip-BsWm7SQr.cjs} +2 -2
  407. package/dist/{filter-bar-chip-CBlHsz4A.cjs.map → filter-bar-chip-BsWm7SQr.cjs.map} +1 -1
  408. package/dist/{filter-bar-chip-DFOtEvpW.js → filter-bar-chip-Dmboyu1t.js} +2 -2
  409. package/dist/{filter-bar-chip-DFOtEvpW.js.map → filter-bar-chip-Dmboyu1t.js.map} +1 -1
  410. package/dist/form-ChOlos7g.cjs +12 -0
  411. package/dist/form-ChOlos7g.cjs.map +1 -0
  412. package/dist/form-uj2xap-j.js +10 -0
  413. package/dist/form-uj2xap-j.js.map +1 -0
  414. package/dist/{input-bd223EJW.cjs → input-D0UPyj6A.cjs} +16 -45
  415. package/dist/input-D0UPyj6A.cjs.map +1 -0
  416. package/dist/{input-CHghVv3k.js → input-D5_B67_r.js} +17 -27
  417. package/dist/input-D5_B67_r.js.map +1 -0
  418. package/dist/{input-group-BRhBfeHC.cjs → input-group-BgCXLSRV.cjs} +77 -96
  419. package/dist/input-group-BgCXLSRV.cjs.map +1 -0
  420. package/dist/{input-group-0G9ZX_cM.js → input-group-wzirc-1k.js} +78 -97
  421. package/dist/input-group-wzirc-1k.js.map +1 -0
  422. package/dist/keyboard/keyboard-dispatcher.cjs.js +2 -0
  423. package/dist/keyboard/keyboard-dispatcher.cjs.js.map +1 -1
  424. package/dist/keyboard/keyboard-dispatcher.es.js +2 -0
  425. package/dist/keyboard/keyboard-dispatcher.es.js.map +1 -1
  426. package/dist/keyboard/use-keydown.cjs.js +7 -1
  427. package/dist/keyboard/use-keydown.cjs.js.map +1 -1
  428. package/dist/keyboard/use-keydown.es.js +7 -1
  429. package/dist/keyboard/use-keydown.es.js.map +1 -1
  430. package/dist/layout/tabbed-container.cjs.js +3 -3
  431. package/dist/layout/tabbed-container.es.js +3 -3
  432. package/dist/lib/form/components/boolean-field.cjs.js +6 -6
  433. package/dist/lib/form/components/boolean-field.cjs.js.map +1 -1
  434. package/dist/lib/form/components/boolean-field.es.js +5 -5
  435. package/dist/lib/form/components/boolean-field.es.js.map +1 -1
  436. package/dist/lib/form/components/custom-array-field.cjs.js +1 -1
  437. package/dist/lib/form/components/custom-array-field.es.js +1 -1
  438. package/dist/lib/form/components/custom-auto-form-field.cjs.js +1 -2
  439. package/dist/lib/form/components/custom-auto-form-field.cjs.js.map +1 -1
  440. package/dist/lib/form/components/custom-auto-form-field.es.js +1 -2
  441. package/dist/lib/form/components/custom-auto-form-field.es.js.map +1 -1
  442. package/dist/lib/form/components/custom-object-field.cjs.js +1 -1
  443. package/dist/lib/form/components/custom-object-field.es.js +1 -1
  444. package/dist/lib/form/components/date-field.cjs.js +6 -3
  445. package/dist/lib/form/components/date-field.cjs.js.map +1 -1
  446. package/dist/lib/form/components/date-field.es.js +6 -3
  447. package/dist/lib/form/components/date-field.es.js.map +1 -1
  448. package/dist/lib/form/components/discriminated-union-field.cjs.js +1 -1
  449. package/dist/lib/form/components/discriminated-union-field.es.js +1 -1
  450. package/dist/lib/form/components/field-wrapper.cjs.js +30 -9
  451. package/dist/lib/form/components/field-wrapper.cjs.js.map +1 -1
  452. package/dist/lib/form/components/field-wrapper.es.js +30 -9
  453. package/dist/lib/form/components/field-wrapper.es.js.map +1 -1
  454. package/dist/lib/form/components/form.cjs.js +4 -4
  455. package/dist/lib/form/components/form.cjs.js.map +1 -1
  456. package/dist/lib/form/components/form.es.js +4 -4
  457. package/dist/lib/form/components/form.es.js.map +1 -1
  458. package/dist/lib/form/components/number-field.cjs.js +3 -4
  459. package/dist/lib/form/components/number-field.cjs.js.map +1 -1
  460. package/dist/lib/form/components/number-field.es.js +3 -4
  461. package/dist/lib/form/components/number-field.es.js.map +1 -1
  462. package/dist/lib/form/components/record-field.cjs.js +13 -2
  463. package/dist/lib/form/components/record-field.cjs.js.map +1 -1
  464. package/dist/lib/form/components/record-field.es.js +13 -2
  465. package/dist/lib/form/components/record-field.es.js.map +1 -1
  466. package/dist/lib/form/components/select-field.cjs.js +4 -19
  467. package/dist/lib/form/components/select-field.cjs.js.map +1 -1
  468. package/dist/lib/form/components/select-field.es.js +4 -19
  469. package/dist/lib/form/components/select-field.es.js.map +1 -1
  470. package/dist/lib/form/components/string-field.cjs.js +2 -4
  471. package/dist/lib/form/components/string-field.cjs.js.map +1 -1
  472. package/dist/lib/form/components/string-field.es.js +2 -4
  473. package/dist/lib/form/components/string-field.es.js.map +1 -1
  474. package/dist/lib/form/components/union-field.cjs.js +1 -1
  475. package/dist/lib/form/components/union-field.es.js +1 -1
  476. package/dist/lib/form/custom-auto-form.cjs.js +1 -1
  477. package/dist/lib/form/custom-auto-form.es.js +1 -1
  478. package/dist/lib/form/dynamic-form.cjs.js +0 -5
  479. package/dist/lib/form/dynamic-form.cjs.js.map +1 -1
  480. package/dist/lib/form/dynamic-form.es.js +0 -5
  481. package/dist/lib/form/dynamic-form.es.js.map +1 -1
  482. package/dist/{list-search-BzAIj0DB.cjs → list-search-CTGQJCh1.cjs} +14 -21
  483. package/dist/list-search-CTGQJCh1.cjs.map +1 -0
  484. package/dist/{list-search-DI1DH7vU.js → list-search-CmOCmTwL.js} +15 -22
  485. package/dist/list-search-CmOCmTwL.js.map +1 -0
  486. package/dist/{logs-data-list-CtHern11.cjs → logs-data-list-B9CAqAHD.cjs} +3 -3
  487. package/dist/{logs-data-list-CtHern11.cjs.map → logs-data-list-B9CAqAHD.cjs.map} +1 -1
  488. package/dist/{logs-data-list-ButZV-2H.js → logs-data-list-DfzdzgXB.js} +3 -3
  489. package/dist/{logs-data-list-ButZV-2H.js.map → logs-data-list-DfzdzgXB.js.map} +1 -1
  490. package/dist/{main-sidebar-link-active-buZAhlHo.js → main-sidebar-B0ivY7lW.js} +118 -6
  491. package/dist/main-sidebar-B0ivY7lW.js.map +1 -0
  492. package/dist/{main-sidebar-link-active-D8VSuJKx.cjs → main-sidebar-BWKVSRoQ.cjs} +117 -4
  493. package/dist/main-sidebar-BWKVSRoQ.cjs.map +1 -0
  494. package/dist/{markdown-renderer-CZV6neya.cjs → markdown-renderer-DPwN7Vtm.cjs} +2 -2
  495. package/dist/{markdown-renderer-CZV6neya.cjs.map → markdown-renderer-DPwN7Vtm.cjs.map} +1 -1
  496. package/dist/{markdown-renderer-Cy7Iwy1c.js → markdown-renderer-zvB6a8uj.js} +2 -2
  497. package/dist/{markdown-renderer-Cy7Iwy1c.js.map → markdown-renderer-zvB6a8uj.js.map} +1 -1
  498. package/dist/new/settings.cjs.js +2 -1
  499. package/dist/new/settings.cjs.js.map +1 -1
  500. package/dist/new/settings.es.js +1 -1
  501. package/dist/new/sidebar.cjs.js +34 -34
  502. package/dist/new/sidebar.cjs.js.map +1 -1
  503. package/dist/new/sidebar.es.js +2 -2
  504. package/dist/{plan-CvTAGIWv.js → plan-BtOryfz5.js} +2 -2
  505. package/dist/{plan-CvTAGIWv.js.map → plan-BtOryfz5.js.map} +1 -1
  506. package/dist/{plan-DsfNN3a0.cjs → plan-D8rM4i4S.cjs} +2 -2
  507. package/dist/{plan-DsfNN3a0.cjs.map → plan-D8rM4i4S.cjs.map} +1 -1
  508. package/dist/primitives/form-element.cjs.js +9 -1
  509. package/dist/primitives/form-element.cjs.js.map +1 -1
  510. package/dist/primitives/form-element.es.js +7 -2
  511. package/dist/primitives/form-element.es.js.map +1 -1
  512. package/dist/primitives/textarea-control.cjs.js +24 -0
  513. package/dist/primitives/textarea-control.cjs.js.map +1 -0
  514. package/dist/primitives/textarea-control.d.ts +2 -0
  515. package/dist/primitives/textarea-control.es.js +20 -0
  516. package/dist/primitives/textarea-control.es.js.map +1 -0
  517. package/dist/{property-filter-applied-C9verwDR.js → property-filter-applied-B_nfBryj.js} +2 -2
  518. package/dist/{property-filter-applied-C9verwDR.js.map → property-filter-applied-B_nfBryj.js.map} +1 -1
  519. package/dist/{property-filter-applied-Bp2z4KBv.cjs → property-filter-applied-CSLLo3VJ.cjs} +2 -2
  520. package/dist/{property-filter-applied-Bp2z4KBv.cjs.map → property-filter-applied-CSLLo3VJ.cjs.map} +1 -1
  521. package/dist/{radio-group-BdEPWGzi.cjs → radio-group-QV7yVrSX.cjs} +13 -2
  522. package/dist/radio-group-QV7yVrSX.cjs.map +1 -0
  523. package/dist/{radio-group-CFZXUXZ5.js → radio-group-bvm7Sqq_.js} +13 -2
  524. package/dist/radio-group-bvm7Sqq_.js.map +1 -0
  525. package/dist/{reasoning-activity-OM1-hbCV.js → reasoning-activity-6VkIbDT4.js} +2 -2
  526. package/dist/{reasoning-activity-OM1-hbCV.js.map → reasoning-activity-6VkIbDT4.js.map} +1 -1
  527. package/dist/{reasoning-activity-BVviIdMe.cjs → reasoning-activity-DaXMgyr3.cjs} +2 -2
  528. package/dist/{reasoning-activity-BVviIdMe.cjs.map → reasoning-activity-DaXMgyr3.cjs.map} +1 -1
  529. package/dist/search-input-BKXiYeed.js +48 -0
  530. package/dist/search-input-BKXiYeed.js.map +1 -0
  531. package/dist/search-input-T0orZ7Jf.cjs +50 -0
  532. package/dist/search-input-T0orZ7Jf.cjs.map +1 -0
  533. package/dist/{section-dBeXxS69.cjs → section-Byml9qxH.cjs} +2 -2
  534. package/dist/{section-dBeXxS69.cjs.map → section-Byml9qxH.cjs.map} +1 -1
  535. package/dist/{section-BfEsNViI.js → section-DTooysg2.js} +2 -2
  536. package/dist/{section-BfEsNViI.js.map → section-DTooysg2.js.map} +1 -1
  537. package/dist/{segmented-control-BxeiypPR.js → segmented-control-ClbeK8DF.js} +4 -1
  538. package/dist/segmented-control-ClbeK8DF.js.map +1 -0
  539. package/dist/{segmented-control--I3IgW21.cjs → segmented-control-DwLkp3TP.cjs} +4 -1
  540. package/dist/segmented-control-DwLkp3TP.cjs.map +1 -0
  541. package/dist/{select-DZeNf-kI.js → select--ArpXYDc.js} +6 -3
  542. package/dist/select--ArpXYDc.js.map +1 -0
  543. package/dist/{select-DBY9LQFQ.cjs → select-DJQYAVcm.cjs} +5 -2
  544. package/dist/select-DJQYAVcm.cjs.map +1 -0
  545. package/dist/{settings-row-C1JZDdz_.js → settings-row-B0jGFpVw.js} +46 -39
  546. package/dist/settings-row-B0jGFpVw.js.map +1 -0
  547. package/dist/{settings-row-C7YKfUgY.cjs → settings-row-Dt4WnnRf.cjs} +47 -39
  548. package/dist/settings-row-Dt4WnnRf.cjs.map +1 -0
  549. package/dist/{side-dialog-DCzCcZs6.js → side-dialog-DZJc85m3.js} +2 -2
  550. package/dist/{side-dialog-DCzCcZs6.js.map → side-dialog-DZJc85m3.js.map} +1 -1
  551. package/dist/{side-dialog-DFnD1498.cjs → side-dialog-lQUx6B_M.cjs} +2 -2
  552. package/dist/{side-dialog-DFnD1498.cjs.map → side-dialog-lQUx6B_M.cjs.map} +1 -1
  553. package/dist/{span-payload-primitives-DL1Kr0cu.js → span-payload-primitives-CGamdu2t.js} +2 -2
  554. package/dist/{span-payload-primitives-DL1Kr0cu.js.map → span-payload-primitives-CGamdu2t.js.map} +1 -1
  555. package/dist/{span-payload-primitives-D0mhsndj.cjs → span-payload-primitives-SkL3U9hR.cjs} +2 -2
  556. package/dist/{span-payload-primitives-D0mhsndj.cjs.map → span-payload-primitives-SkL3U9hR.cjs.map} +1 -1
  557. package/dist/src/domains/feedback/utils/feedback-refetch-interval.d.ts +2 -2
  558. package/dist/src/domains/request-context/components/request-context-label.d.ts +1 -2
  559. package/dist/src/domains/scores/hooks/use-scorers.d.ts +1 -1
  560. package/dist/src/domains/scores/hooks/use-trace-span-scores.d.ts +1 -1
  561. package/dist/src/domains/traces/components/thread-trace/index.d.ts +1 -5
  562. package/dist/src/domains/traces/components/thread-trace/thread-trace-context.d.ts +0 -2
  563. package/dist/src/domains/traces/components/thread-trace/thread-trace-root.d.ts +3 -6
  564. package/dist/src/domains/traces/components/thread-trace/thread-trace-row-context.d.ts +0 -1
  565. package/dist/src/domains/traces/components/thread-view-by-trace.d.ts +7 -6
  566. package/dist/src/domains/traces/components/trace-thread-panel.d.ts +2 -4
  567. package/dist/src/domains/traces/hooks/use-traces-list-source.d.ts +3 -1
  568. package/dist/src/ds/components/Combobox/combobox-styles.d.ts +3 -4
  569. package/dist/src/ds/components/Combobox/combobox.d.ts +4 -2
  570. package/dist/src/ds/components/Comment/comment-composer.d.ts +2 -2
  571. package/dist/src/ds/components/DateTimePicker/time-picker.d.ts +2 -1
  572. package/dist/src/ds/components/Field/field-control-aria.d.ts +30 -0
  573. package/dist/src/ds/components/Field/field.d.ts +39 -0
  574. package/dist/src/ds/components/Field/field.stories.d.ts +12 -0
  575. package/dist/src/ds/components/Field/index.d.ts +2 -0
  576. package/dist/src/ds/components/Form/form.d.ts +7 -0
  577. package/dist/src/ds/components/Form/form.stories.d.ts +7 -0
  578. package/dist/src/ds/components/Form/index.d.ts +1 -0
  579. package/dist/src/ds/components/FormFieldBlocks/block/field-block.d.ts +1 -0
  580. package/dist/src/ds/components/FormFieldBlocks/block/field-error-id.d.ts +1 -5
  581. package/dist/src/ds/components/FormFieldBlocks/fields/search-field-block.d.ts +1 -0
  582. package/dist/src/ds/components/FormFieldBlocks/fields/select-field-block.d.ts +1 -0
  583. package/dist/src/ds/components/FormFieldBlocks/fields/text-field-block.d.ts +1 -0
  584. package/dist/src/ds/components/FormFieldBlocks/fields/textarea-field-block.d.ts +1 -0
  585. package/dist/src/ds/components/FormFieldBlocks/layout/field-blocks-layout.d.ts +1 -0
  586. package/dist/src/ds/components/Input/input.d.ts +3 -10
  587. package/dist/src/ds/components/InputGroup/input-group.d.ts +15 -25
  588. package/dist/src/ds/components/JSONSchemaForm/json-schema-form-field-description.d.ts +6 -3
  589. package/dist/src/ds/components/JSONSchemaForm/json-schema-form-field-name.d.ts +6 -3
  590. package/dist/src/ds/components/JSONSchemaForm/json-schema-form-field-type.d.ts +10 -3
  591. package/dist/src/ds/components/Label/label.d.ts +1 -0
  592. package/dist/src/ds/components/ListSearch/list-search.d.ts +2 -2
  593. package/dist/src/ds/components/SearchInput/index.d.ts +1 -0
  594. package/dist/src/ds/components/SearchInput/search-input.d.ts +12 -0
  595. package/dist/src/ds/components/SearchInput/search-input.stories.d.ts +8 -0
  596. package/dist/src/ds/components/Textarea/textarea.d.ts +3 -10
  597. package/dist/src/ds/components/ai/ask-user/ask-user.d.ts +2 -1
  598. package/dist/src/ds/new/settings/index.d.ts +1 -1
  599. package/dist/src/ds/new/settings/settings-row.d.ts +11 -3
  600. package/dist/src/ds/new/settings/settings-row.stories.d.ts +321 -0
  601. package/dist/src/ds/primitives/form-element.d.ts +6 -1
  602. package/dist/src/ds/primitives/textarea-control.d.ts +3 -0
  603. package/dist/src/lib/form/components/form.d.ts +1 -1
  604. package/dist/src/lib/keyboard/keyboard-dispatcher.d.ts +2 -0
  605. package/dist/src/lib/keyboard/use-keydown.d.ts +6 -0
  606. package/dist/style.css +50 -16
  607. package/dist/{switch-Swt75_Sb.cjs → switch-BlE5ReVZ.cjs} +3 -2
  608. package/dist/switch-BlE5ReVZ.cjs.map +1 -0
  609. package/dist/{switch-88fWFfVz.js → switch-MZ1oHrmp.js} +4 -3
  610. package/dist/switch-MZ1oHrmp.js.map +1 -0
  611. package/dist/{textarea-B6wvS_CQ.js → textarea-CxPNKg2q.js} +14 -22
  612. package/dist/textarea-CxPNKg2q.js.map +1 -0
  613. package/dist/{textarea-gUBUqpol.cjs → textarea-DNV5Gs9A.cjs} +13 -40
  614. package/dist/textarea-DNV5Gs9A.cjs.map +1 -0
  615. package/dist/{time-picker-BElZALzM.js → time-picker-DRSAkFuj.js} +18 -21
  616. package/dist/time-picker-DRSAkFuj.js.map +1 -0
  617. package/dist/{time-picker-_QJdolkZ.cjs → time-picker-KE48KlpH.cjs} +18 -21
  618. package/dist/time-picker-KE48KlpH.cjs.map +1 -0
  619. package/dist/{tool-call-arguments-CQYR65FB.cjs → tool-call-arguments-BemKsB9v.cjs} +2 -2
  620. package/dist/{tool-call-arguments-CQYR65FB.cjs.map → tool-call-arguments-BemKsB9v.cjs.map} +1 -1
  621. package/dist/{tool-call-arguments-B1MghuMZ.js → tool-call-arguments-CtUKj7IB.js} +2 -2
  622. package/dist/{tool-call-arguments-B1MghuMZ.js.map → tool-call-arguments-CtUKj7IB.js.map} +1 -1
  623. package/dist/{tool-card-rxo27sve.cjs → tool-card-D9nDQgpg.cjs} +2 -2
  624. package/dist/{tool-card-rxo27sve.cjs.map → tool-card-D9nDQgpg.cjs.map} +1 -1
  625. package/dist/{tool-card-C_K5PwrK.js → tool-card-tK9zedNb.js} +2 -2
  626. package/dist/{tool-card-C_K5PwrK.js.map → tool-card-tK9zedNb.js.map} +1 -1
  627. package/dist/{traces-data-list-BsAYYJ9t.cjs → traces-data-list-Dd8vMPQK.cjs} +4 -4
  628. package/dist/{traces-data-list-BsAYYJ9t.cjs.map → traces-data-list-Dd8vMPQK.cjs.map} +1 -1
  629. package/dist/{traces-data-list-CnNpGVRN.js → traces-data-list-Fvl8mlih.js} +4 -4
  630. package/dist/{traces-data-list-CnNpGVRN.js.map → traces-data-list-Fvl8mlih.js.map} +1 -1
  631. package/dist/{use-workflow-graph-runtime-CIs2HzoP.cjs → use-workflow-graph-runtime-BNAtEa06.cjs} +2 -2
  632. package/dist/{use-workflow-graph-runtime-CIs2HzoP.cjs.map → use-workflow-graph-runtime-BNAtEa06.cjs.map} +1 -1
  633. package/dist/{use-workflow-graph-runtime-CexS1ECI.js → use-workflow-graph-runtime-JQwLwNBD.js} +2 -2
  634. package/dist/{use-workflow-graph-runtime-CexS1ECI.js.map → use-workflow-graph-runtime-JQwLwNBD.js.map} +1 -1
  635. package/dist/{workflow-code-dialog-content-BM4ZnrUr.js → workflow-code-dialog-content-3AcgitHa.js} +2 -2
  636. package/dist/{workflow-code-dialog-content-BM4ZnrUr.js.map → workflow-code-dialog-content-3AcgitHa.js.map} +1 -1
  637. package/dist/{workflow-code-dialog-content-BFm2IWDl.cjs → workflow-code-dialog-content-DyoN3850.cjs} +2 -2
  638. package/dist/{workflow-code-dialog-content-BFm2IWDl.cjs.map → workflow-code-dialog-content-DyoN3850.cjs.map} +1 -1
  639. package/dist/{workflow-data-edge-view-BpGLV-at.js → workflow-data-edge-view-C4nbA2Fa.js} +2 -2
  640. package/dist/{workflow-data-edge-view-BpGLV-at.js.map → workflow-data-edge-view-C4nbA2Fa.js.map} +1 -1
  641. package/dist/{workflow-data-edge-view-7f8O6pVW.cjs → workflow-data-edge-view-aHAZkZOH.cjs} +2 -2
  642. package/dist/{workflow-data-edge-view-7f8O6pVW.cjs.map → workflow-data-edge-view-aHAZkZOH.cjs.map} +1 -1
  643. package/dist/{workflow-edge-data-button-C6eyWbcG.js → workflow-edge-data-button-2aIkzgev.js} +2 -2
  644. package/dist/{workflow-edge-data-button-C6eyWbcG.js.map → workflow-edge-data-button-2aIkzgev.js.map} +1 -1
  645. package/dist/{workflow-edge-data-button-BOVRo4xO.cjs → workflow-edge-data-button-BFNO-TRL.cjs} +2 -2
  646. package/dist/{workflow-edge-data-button-BOVRo4xO.cjs.map → workflow-edge-data-button-BFNO-TRL.cjs.map} +1 -1
  647. package/package.json +9 -9
  648. package/dist/ask-user-CXu4b7Jw.cjs.map +0 -1
  649. package/dist/ask-user-Dlz2346n.js.map +0 -1
  650. package/dist/checkbox-CI8JtZKS.cjs.map +0 -1
  651. package/dist/checkbox-CQedzgsi.js.map +0 -1
  652. package/dist/code-block-BzoMjjtf.cjs.map +0 -1
  653. package/dist/code-block-DY5KsTGY.js.map +0 -1
  654. package/dist/code-editor-28chVxHw.js.map +0 -1
  655. package/dist/code-editor-B_wPmKPf.cjs.map +0 -1
  656. package/dist/combobox-B15qTrWO.js.map +0 -1
  657. package/dist/combobox-DJ0c4o4S.cjs.map +0 -1
  658. package/dist/combobox-styles-C2MEEpaG.js.map +0 -1
  659. package/dist/combobox-styles-DLflBH-G.cjs.map +0 -1
  660. package/dist/custom-auto-form-field-Brfb-0Te.cjs.map +0 -1
  661. package/dist/custom-auto-form-field-yEMBGXu-.js.map +0 -1
  662. package/dist/data-code-section-DWBfkrmO.cjs.map +0 -1
  663. package/dist/data-code-section-It6myyvZ.js.map +0 -1
  664. package/dist/date-time-range-picker-BDylIIzt.js.map +0 -1
  665. package/dist/date-time-range-picker-UheN070q.cjs.map +0 -1
  666. package/dist/domains/traces/components/thread-trace/thread-trace-load-more-sentinel.cjs.js +0 -12
  667. package/dist/domains/traces/components/thread-trace/thread-trace-load-more-sentinel.cjs.js.map +0 -1
  668. package/dist/domains/traces/components/thread-trace/thread-trace-load-more-sentinel.d.ts +0 -2
  669. package/dist/domains/traces/components/thread-trace/thread-trace-load-more-sentinel.es.js +0 -8
  670. package/dist/domains/traces/components/thread-trace/thread-trace-load-more-sentinel.es.js.map +0 -1
  671. package/dist/field-block--PeppIRb.js.map +0 -1
  672. package/dist/field-block-DtaPqBa3.cjs.map +0 -1
  673. package/dist/field-block-error-msg-CkhEN6nU.cjs +0 -26
  674. package/dist/field-block-error-msg-CkhEN6nU.cjs.map +0 -1
  675. package/dist/field-block-error-msg-LXwhKzIq.js +0 -24
  676. package/dist/field-block-error-msg-LXwhKzIq.js.map +0 -1
  677. package/dist/field-error-id-B3Z2Zu5y.cjs +0 -6
  678. package/dist/field-error-id-B3Z2Zu5y.cjs.map +0 -1
  679. package/dist/field-error-id-D3yg1nBh.js +0 -4
  680. package/dist/field-error-id-D3yg1nBh.js.map +0 -1
  681. package/dist/input-CHghVv3k.js.map +0 -1
  682. package/dist/input-bd223EJW.cjs.map +0 -1
  683. package/dist/input-group-0G9ZX_cM.js.map +0 -1
  684. package/dist/input-group-BRhBfeHC.cjs.map +0 -1
  685. package/dist/label-DfAhywj_.cjs +0 -39
  686. package/dist/label-DfAhywj_.cjs.map +0 -1
  687. package/dist/label-Dxsz0dFs.js +0 -18
  688. package/dist/label-Dxsz0dFs.js.map +0 -1
  689. package/dist/list-search-BzAIj0DB.cjs.map +0 -1
  690. package/dist/list-search-DI1DH7vU.js.map +0 -1
  691. package/dist/main-sidebar-link-active-D8VSuJKx.cjs.map +0 -1
  692. package/dist/main-sidebar-link-active-buZAhlHo.js.map +0 -1
  693. package/dist/radio-group-BdEPWGzi.cjs.map +0 -1
  694. package/dist/radio-group-CFZXUXZ5.js.map +0 -1
  695. package/dist/search-field-block-BPJh5yuW.js +0 -125
  696. package/dist/search-field-block-BPJh5yuW.js.map +0 -1
  697. package/dist/search-field-block-DRa-ZNQj.cjs +0 -127
  698. package/dist/search-field-block-DRa-ZNQj.cjs.map +0 -1
  699. package/dist/segmented-control--I3IgW21.cjs.map +0 -1
  700. package/dist/segmented-control-BxeiypPR.js.map +0 -1
  701. package/dist/select-DBY9LQFQ.cjs.map +0 -1
  702. package/dist/select-DZeNf-kI.js.map +0 -1
  703. package/dist/select-field-block-C_x9wNpU.js +0 -59
  704. package/dist/select-field-block-C_x9wNpU.js.map +0 -1
  705. package/dist/select-field-block-D8AMzoQT.cjs +0 -61
  706. package/dist/select-field-block-D8AMzoQT.cjs.map +0 -1
  707. package/dist/settings-row-C1JZDdz_.js.map +0 -1
  708. package/dist/settings-row-C7YKfUgY.cjs.map +0 -1
  709. package/dist/src/domains/traces/components/thread-trace/thread-trace-load-more-sentinel.d.ts +0 -8
  710. package/dist/src/ds/components/FormFieldBlocks/block/field-block.stories.d.ts +0 -8
  711. package/dist/src/ds/components/FormFieldBlocks/fields/search-field-block.stories.d.ts +0 -15
  712. package/dist/src/ds/components/FormFieldBlocks/fields/select-field-block.stories.d.ts +0 -15
  713. package/dist/src/ds/components/FormFieldBlocks/fields/text-field-block.stories.d.ts +0 -16
  714. package/dist/src/ds/components/FormFieldBlocks/layout/field-blocks-layout.stories.d.ts +0 -6
  715. package/dist/src/ds/components/Label/label.stories.d.ts +0 -8
  716. package/dist/switch-88fWFfVz.js.map +0 -1
  717. package/dist/switch-Swt75_Sb.cjs.map +0 -1
  718. package/dist/text-field-block-DUntfMPu.cjs +0 -58
  719. package/dist/text-field-block-DUntfMPu.cjs.map +0 -1
  720. package/dist/text-field-block-DZaGiu5D.js +0 -56
  721. package/dist/text-field-block-DZaGiu5D.js.map +0 -1
  722. package/dist/textarea-B6wvS_CQ.js.map +0 -1
  723. package/dist/textarea-field-block-BscOSlvI.js +0 -52
  724. package/dist/textarea-field-block-BscOSlvI.js.map +0 -1
  725. package/dist/textarea-field-block-CKAhmLrz.cjs +0 -54
  726. package/dist/textarea-field-block-CKAhmLrz.cjs.map +0 -1
  727. package/dist/textarea-gUBUqpol.cjs.map +0 -1
  728. package/dist/time-picker-BElZALzM.js.map +0 -1
  729. package/dist/time-picker-_QJdolkZ.cjs.map +0 -1
@@ -6,7 +6,7 @@ const jsxRuntime = require('react/jsx-runtime');
6
6
  const observability = require('@mastra/core/observability');
7
7
  const domains_traces_components_spanPayload_spanPayloadJson = require('./span-payload-json.cjs.js');
8
8
  const domains_traces_components_spanPayload_spanPayloadMessages = require('./span-payload-messages.cjs.js');
9
- const domains_traces_components_spanPayload_spanPayloadTool = require('../../../../span-payload-primitives-D0mhsndj.cjs');
9
+ const domains_traces_components_spanPayload_spanPayloadTool = require('../../../../span-payload-primitives-SkL3U9hR.cjs');
10
10
  const domains_traces_components_spanPayload_spanPayloadRegistry = require('./span-payload-registry.cjs.js');
11
11
  const Card = require('../../../../Card-BQsKHkyB.cjs');
12
12
  const dataKeysAndValues = require('../../../../data-keys-and-values-DnpdW8zx.cjs');
@@ -2,7 +2,7 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { describeProcessorPipeline } from '@mastra/core/observability';
3
3
  import { SpanPayloadJson } from './span-payload-json.es.js';
4
4
  import { SpanPayloadMessages } from './span-payload-messages.es.js';
5
- import { c as SpanPayloadCollapsible, S as SpanPayloadField } from '../../../../span-payload-primitives-DL1Kr0cu.js';
5
+ import { c as SpanPayloadCollapsible, S as SpanPayloadField } from '../../../../span-payload-primitives-CGamdu2t.js';
6
6
  import { asCoreSpan } from './span-payload-registry.es.js';
7
7
  import { C as Card, a as CardContent } from '../../../../Card-DVy0QS4m.js';
8
8
  import { D as DataKeysAndValues } from '../../../../data-keys-and-values-DiRlIt-N.js';
@@ -5,7 +5,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5
5
  const jsxRuntime = require('react/jsx-runtime');
6
6
  const lucideReact = require('lucide-react');
7
7
  const domains_traces_utils_spanUtils = require('../utils/span-utils.cjs.js');
8
- const dataPanel = require('../../../data-panel-D7Qk4iwZ.cjs');
8
+ const dataPanel = require('../../../data-panel-o-QLWuFV.cjs');
9
9
  const utils_truncateString = require('../../../utils/truncate-string.cjs.js');
10
10
  const utils_dateFormat = require('../../../utils/date-format.cjs.js');
11
11
  const utils_duration = require('../../../utils/duration.cjs.js');
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { CalendarClockIcon, TimerIcon, HashIcon } from 'lucide-react';
3
3
  import { getSpanDurationMs } from '../utils/span-utils.es.js';
4
- import { D as DataPanel } from '../../../data-panel-DuLf5j8S.js';
4
+ import { D as DataPanel } from '../../../data-panel-CbomKGJt.js';
5
5
  import { truncateString } from '../../../utils/truncate-string.es.js';
6
6
  import { formatDate, formatTimestampPrecise } from '../../../utils/date-format.es.js';
7
7
  import { formatDurationPrecise } from '../../../utils/duration.es.js';
@@ -1 +1 @@
1
- {"version":3,"file":"thread-trace-context.cjs.js","sources":["../../../../../src/domains/traces/components/thread-trace/thread-trace-context.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { RefObject } from 'react';\n\nexport interface ThreadTraceSelectedSpan {\n traceId: string;\n spanId: string;\n}\n\nexport interface ThreadTraceHighlight {\n traceId: string;\n spanIds: string[];\n}\n\nexport interface ThreadTraceContextValue {\n traceIds: string[];\n /** The row the reader came from (e.g. \"Open full thread\"); starts expanded and scrolls into view on mount. */\n anchorTraceId: string | null;\n selected: ThreadTraceSelectedSpan | null;\n /** Select a span (opens the side panel) or pass `undefined` to close it. */\n selectSpan: (traceId: string, spanId: string | undefined) => void;\n /** Spans behind the message the user asked to highlight; scoped to one trace since each row has its own tree. */\n highlight: ThreadTraceHighlight | null;\n highlightSpans: (traceId: string, spanIds: string[]) => void;\n /** Rows whose timeline is shown in full rather than clamped to the messages column. */\n expandedTraceIds: ReadonlySet<string>;\n setTraceExpanded: (traceId: string, expanded: boolean) => void;\n /** Rows currently on screen inside the list, oldest first. */\n visibleTraceIds: string[];\n /** The topmost visible row. */\n currentTraceId: string | undefined;\n scrollToTrace: (traceId: string) => void;\n listRef: RefObject<HTMLDivElement | null>;\n}\n\nexport const ThreadTraceContext = createContext<ThreadTraceContextValue | null>(null);\n\nexport function useThreadTrace(): ThreadTraceContextValue {\n const context = useContext(ThreadTraceContext);\n if (!context) {\n throw new Error('ThreadTrace compound components must be rendered inside <ThreadTrace>.');\n }\n return context;\n}\n"],"names":["createContext","useContext"],"mappings":";;;;;;AAkCO,MAAM,kBAAA,GAAqBA,oBAA8C,IAAI;AAE7E,SAAS,cAAA,GAA0C;AACxD,EAAA,MAAM,OAAA,GAAUC,iBAAW,kBAAkB,CAAA;AAC7C,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,MAAM,wEAAwE,CAAA;AAAA,EAC1F;AACA,EAAA,OAAO,OAAA;AACT;;;;;"}
1
+ {"version":3,"file":"thread-trace-context.cjs.js","sources":["../../../../../src/domains/traces/components/thread-trace/thread-trace-context.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { RefObject } from 'react';\n\nexport interface ThreadTraceSelectedSpan {\n traceId: string;\n spanId: string;\n}\n\nexport interface ThreadTraceHighlight {\n traceId: string;\n spanIds: string[];\n}\n\nexport interface ThreadTraceContextValue {\n traceIds: string[];\n selected: ThreadTraceSelectedSpan | null;\n /** Select a span (opens the side panel) or pass `undefined` to close it. */\n selectSpan: (traceId: string, spanId: string | undefined) => void;\n /** Spans behind the message the user asked to highlight; scoped to one trace since each row has its own tree. */\n highlight: ThreadTraceHighlight | null;\n highlightSpans: (traceId: string, spanIds: string[]) => void;\n /** Rows whose timeline is shown in full rather than clamped to the messages column. */\n expandedTraceIds: ReadonlySet<string>;\n setTraceExpanded: (traceId: string, expanded: boolean) => void;\n /** Rows currently on screen inside the list, oldest first. */\n visibleTraceIds: string[];\n /** The topmost visible row. */\n currentTraceId: string | undefined;\n scrollToTrace: (traceId: string) => void;\n listRef: RefObject<HTMLDivElement | null>;\n}\n\nexport const ThreadTraceContext = createContext<ThreadTraceContextValue | null>(null);\n\nexport function useThreadTrace(): ThreadTraceContextValue {\n const context = useContext(ThreadTraceContext);\n if (!context) {\n throw new Error('ThreadTrace compound components must be rendered inside <ThreadTrace>.');\n }\n return context;\n}\n"],"names":["createContext","useContext"],"mappings":";;;;;;AAgCO,MAAM,kBAAA,GAAqBA,oBAA8C,IAAI;AAE7E,SAAS,cAAA,GAA0C;AACxD,EAAA,MAAM,OAAA,GAAUC,iBAAW,kBAAkB,CAAA;AAC7C,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,MAAM,wEAAwE,CAAA;AAAA,EAC1F;AACA,EAAA,OAAO,OAAA;AACT;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"thread-trace-context.es.js","sources":["../../../../../src/domains/traces/components/thread-trace/thread-trace-context.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { RefObject } from 'react';\n\nexport interface ThreadTraceSelectedSpan {\n traceId: string;\n spanId: string;\n}\n\nexport interface ThreadTraceHighlight {\n traceId: string;\n spanIds: string[];\n}\n\nexport interface ThreadTraceContextValue {\n traceIds: string[];\n /** The row the reader came from (e.g. \"Open full thread\"); starts expanded and scrolls into view on mount. */\n anchorTraceId: string | null;\n selected: ThreadTraceSelectedSpan | null;\n /** Select a span (opens the side panel) or pass `undefined` to close it. */\n selectSpan: (traceId: string, spanId: string | undefined) => void;\n /** Spans behind the message the user asked to highlight; scoped to one trace since each row has its own tree. */\n highlight: ThreadTraceHighlight | null;\n highlightSpans: (traceId: string, spanIds: string[]) => void;\n /** Rows whose timeline is shown in full rather than clamped to the messages column. */\n expandedTraceIds: ReadonlySet<string>;\n setTraceExpanded: (traceId: string, expanded: boolean) => void;\n /** Rows currently on screen inside the list, oldest first. */\n visibleTraceIds: string[];\n /** The topmost visible row. */\n currentTraceId: string | undefined;\n scrollToTrace: (traceId: string) => void;\n listRef: RefObject<HTMLDivElement | null>;\n}\n\nexport const ThreadTraceContext = createContext<ThreadTraceContextValue | null>(null);\n\nexport function useThreadTrace(): ThreadTraceContextValue {\n const context = useContext(ThreadTraceContext);\n if (!context) {\n throw new Error('ThreadTrace compound components must be rendered inside <ThreadTrace>.');\n }\n return context;\n}\n"],"names":[],"mappings":";;AAkCO,MAAM,kBAAA,GAAqB,cAA8C,IAAI;AAE7E,SAAS,cAAA,GAA0C;AACxD,EAAA,MAAM,OAAA,GAAU,WAAW,kBAAkB,CAAA;AAC7C,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,MAAM,wEAAwE,CAAA;AAAA,EAC1F;AACA,EAAA,OAAO,OAAA;AACT;;;;"}
1
+ {"version":3,"file":"thread-trace-context.es.js","sources":["../../../../../src/domains/traces/components/thread-trace/thread-trace-context.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { RefObject } from 'react';\n\nexport interface ThreadTraceSelectedSpan {\n traceId: string;\n spanId: string;\n}\n\nexport interface ThreadTraceHighlight {\n traceId: string;\n spanIds: string[];\n}\n\nexport interface ThreadTraceContextValue {\n traceIds: string[];\n selected: ThreadTraceSelectedSpan | null;\n /** Select a span (opens the side panel) or pass `undefined` to close it. */\n selectSpan: (traceId: string, spanId: string | undefined) => void;\n /** Spans behind the message the user asked to highlight; scoped to one trace since each row has its own tree. */\n highlight: ThreadTraceHighlight | null;\n highlightSpans: (traceId: string, spanIds: string[]) => void;\n /** Rows whose timeline is shown in full rather than clamped to the messages column. */\n expandedTraceIds: ReadonlySet<string>;\n setTraceExpanded: (traceId: string, expanded: boolean) => void;\n /** Rows currently on screen inside the list, oldest first. */\n visibleTraceIds: string[];\n /** The topmost visible row. */\n currentTraceId: string | undefined;\n scrollToTrace: (traceId: string) => void;\n listRef: RefObject<HTMLDivElement | null>;\n}\n\nexport const ThreadTraceContext = createContext<ThreadTraceContextValue | null>(null);\n\nexport function useThreadTrace(): ThreadTraceContextValue {\n const context = useContext(ThreadTraceContext);\n if (!context) {\n throw new Error('ThreadTrace compound components must be rendered inside <ThreadTrace>.');\n }\n return context;\n}\n"],"names":[],"mappings":";;AAgCO,MAAM,kBAAA,GAAqB,cAA8C,IAAI;AAE7E,SAAS,cAAA,GAA0C;AACxD,EAAA,MAAM,OAAA,GAAU,WAAW,kBAAkB,CAAA;AAC7C,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,MAAM,wEAAwE,CAAA;AAAA,EAC1F;AACA,EAAA,OAAO,OAAA;AACT;;;;"}
@@ -4,7 +4,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
5
  const jsxRuntime = require('react/jsx-runtime');
6
6
  const domains_traces_components_threadTrace_threadTraceRowContext = require('./thread-trace-row-context.cjs.js');
7
- const dataPanel = require('../../../../data-panel-D7Qk4iwZ.cjs');
7
+ const dataPanel = require('../../../../data-panel-o-QLWuFV.cjs');
8
8
  const utils_cn = require('../../../../cn-DG0X1KEP.cjs');
9
9
 
10
10
  function ThreadTraceDetails({ className, children, ...props }) {
@@ -1,6 +1,6 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { useThreadTraceRow } from './thread-trace-row-context.es.js';
3
- import { D as DataPanel } from '../../../../data-panel-DuLf5j8S.js';
3
+ import { D as DataPanel } from '../../../../data-panel-CbomKGJt.js';
4
4
  import { c as cn } from '../../../../cn-65Adrsfj.js';
5
5
 
6
6
  function ThreadTraceDetails({ className, children, ...props }) {
@@ -4,20 +4,19 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
5
  const jsxRuntime = require('react/jsx-runtime');
6
6
  const domains_traces_components_threadTrace_threadTraceContext = require('./thread-trace-context.cjs.js');
7
+ const messageScroller = require('../../../../message-scroller-E05PLPmT.cjs');
7
8
  const utils_cn = require('../../../../cn-DG0X1KEP.cjs');
8
9
 
9
10
  function ThreadTraceList({ className, innerClassName, children, ...props }) {
10
11
  const { listRef } = domains_traces_components_threadTrace_threadTraceContext.useThreadTrace();
11
- return /* @__PURE__ */ jsxRuntime.jsx(
12
- "div",
12
+ return /* @__PURE__ */ jsxRuntime.jsx(messageScroller.MessageScroller, { "data-slot": "thread-trace-list", className: utils_cn.cn("min-h-0", className), ...props, children: /* @__PURE__ */ jsxRuntime.jsx(messageScroller.MessageScrollerViewport, { ref: listRef, className: "overflow-x-hidden", children: /* @__PURE__ */ jsxRuntime.jsx(
13
+ messageScroller.MessageScrollerContent,
13
14
  {
14
- ref: listRef,
15
- "data-slot": "thread-trace-list",
16
- className: utils_cn.cn("min-h-0 overflow-x-hidden overflow-y-auto", className),
17
- ...props,
18
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { "data-slot": "thread-trace-list-inner", className: utils_cn.cn("relative min-h-full", innerClassName), children })
15
+ "data-slot": "thread-trace-list-inner",
16
+ className: utils_cn.cn("relative min-h-full gap-0", innerClassName),
17
+ children
19
18
  }
20
- );
19
+ ) }) });
21
20
  }
22
21
 
23
22
  exports.ThreadTraceList = ThreadTraceList;
@@ -1 +1 @@
1
- {"version":3,"file":"thread-trace-list.cjs.js","sources":["../../../../../src/domains/traces/components/thread-trace/thread-trace-list.tsx"],"sourcesContent":["import type { ComponentProps } from 'react';\n\nimport { useThreadTrace } from './thread-trace-context';\nimport { cn } from '@/lib/utils';\n\nexport interface ThreadTraceListProps extends ComponentProps<'div'> {\n /** Class name of the inner wrapper that establishes the positioning context for the rail. */\n innerClassName?: string;\n}\n\n/** The scroll container holding the rows; visible-row tracking observes `[data-trace-id]` inside it. */\nexport function ThreadTraceList({ className, innerClassName, children, ...props }: ThreadTraceListProps) {\n const { listRef } = useThreadTrace();\n return (\n <div\n ref={listRef}\n data-slot=\"thread-trace-list\"\n className={cn('min-h-0 overflow-x-hidden overflow-y-auto', className)}\n {...props}\n >\n <div data-slot=\"thread-trace-list-inner\" className={cn('relative min-h-full', innerClassName)}>\n {children}\n </div>\n </div>\n );\n}\n"],"names":["useThreadTrace","jsx","cn"],"mappings":";;;;;;;;AAWO,SAAS,gBAAgB,EAAE,SAAA,EAAW,gBAAgB,QAAA,EAAU,GAAG,OAAM,EAAyB;AACvG,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAIA,uEAAA,EAAe;AACnC,EAAA,uBACEC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,OAAA;AAAA,MACL,WAAA,EAAU,mBAAA;AAAA,MACV,SAAA,EAAWC,WAAA,CAAG,2CAAA,EAA6C,SAAS,CAAA;AAAA,MACnE,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAAD,cAAA,CAAC,SAAI,WAAA,EAAU,yBAAA,EAA0B,WAAWC,WAAA,CAAG,qBAAA,EAAuB,cAAc,CAAA,EACzF,QAAA,EACH;AAAA;AAAA,GACF;AAEJ;;;;"}
1
+ {"version":3,"file":"thread-trace-list.cjs.js","sources":["../../../../../src/domains/traces/components/thread-trace/thread-trace-list.tsx"],"sourcesContent":["import type { ComponentProps } from 'react';\n\nimport { useThreadTrace } from './thread-trace-context';\nimport { MessageScroller, MessageScrollerContent, MessageScrollerViewport } from '@/ds/components/MessageScroller';\nimport { cn } from '@/lib/utils';\n\nexport interface ThreadTraceListProps extends ComponentProps<'div'> {\n /** Class name of the inner wrapper that establishes the positioning context for the rail. */\n innerClassName?: string;\n}\n\n/** The scroll container holding the rows; visible-row tracking observes `[data-trace-id]` inside it. */\nexport function ThreadTraceList({ className, innerClassName, children, ...props }: ThreadTraceListProps) {\n const { listRef } = useThreadTrace();\n return (\n <MessageScroller data-slot=\"thread-trace-list\" className={cn('min-h-0', className)} {...props}>\n <MessageScrollerViewport ref={listRef} className=\"overflow-x-hidden\">\n <MessageScrollerContent\n data-slot=\"thread-trace-list-inner\"\n className={cn('relative min-h-full gap-0', innerClassName)}\n >\n {children}\n </MessageScrollerContent>\n </MessageScrollerViewport>\n </MessageScroller>\n );\n}\n"],"names":["useThreadTrace","MessageScroller","cn","jsx","MessageScrollerViewport","MessageScrollerContent"],"mappings":";;;;;;;;;AAYO,SAAS,gBAAgB,EAAE,SAAA,EAAW,gBAAgB,QAAA,EAAU,GAAG,OAAM,EAAyB;AACvG,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAIA,uEAAA,EAAe;AACnC,EAAA,sCACGC,+BAAA,EAAA,EAAgB,WAAA,EAAU,mBAAA,EAAoB,SAAA,EAAWC,YAAG,SAAA,EAAW,SAAS,CAAA,EAAI,GAAG,OACtF,QAAA,kBAAAC,cAAA,CAACC,uCAAA,EAAA,EAAwB,GAAA,EAAK,OAAA,EAAS,WAAU,mBAAA,EAC/C,QAAA,kBAAAD,cAAA;AAAA,IAACE,sCAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,yBAAA;AAAA,MACV,SAAA,EAAWH,WAAA,CAAG,2BAAA,EAA6B,cAAc,CAAA;AAAA,MAExD;AAAA;AAAA,KAEL,CAAA,EACF,CAAA;AAEJ;;;;"}
@@ -1,19 +1,18 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { useThreadTrace } from './thread-trace-context.es.js';
3
+ import { M as MessageScroller, e as MessageScrollerViewport, b as MessageScrollerContent } from '../../../../message-scroller-CiFr8MwT.js';
3
4
  import { c as cn } from '../../../../cn-65Adrsfj.js';
4
5
 
5
6
  function ThreadTraceList({ className, innerClassName, children, ...props }) {
6
7
  const { listRef } = useThreadTrace();
7
- return /* @__PURE__ */ jsx(
8
- "div",
8
+ return /* @__PURE__ */ jsx(MessageScroller, { "data-slot": "thread-trace-list", className: cn("min-h-0", className), ...props, children: /* @__PURE__ */ jsx(MessageScrollerViewport, { ref: listRef, className: "overflow-x-hidden", children: /* @__PURE__ */ jsx(
9
+ MessageScrollerContent,
9
10
  {
10
- ref: listRef,
11
- "data-slot": "thread-trace-list",
12
- className: cn("min-h-0 overflow-x-hidden overflow-y-auto", className),
13
- ...props,
14
- children: /* @__PURE__ */ jsx("div", { "data-slot": "thread-trace-list-inner", className: cn("relative min-h-full", innerClassName), children })
11
+ "data-slot": "thread-trace-list-inner",
12
+ className: cn("relative min-h-full gap-0", innerClassName),
13
+ children
15
14
  }
16
- );
15
+ ) }) });
17
16
  }
18
17
 
19
18
  export { ThreadTraceList };
@@ -1 +1 @@
1
- {"version":3,"file":"thread-trace-list.es.js","sources":["../../../../../src/domains/traces/components/thread-trace/thread-trace-list.tsx"],"sourcesContent":["import type { ComponentProps } from 'react';\n\nimport { useThreadTrace } from './thread-trace-context';\nimport { cn } from '@/lib/utils';\n\nexport interface ThreadTraceListProps extends ComponentProps<'div'> {\n /** Class name of the inner wrapper that establishes the positioning context for the rail. */\n innerClassName?: string;\n}\n\n/** The scroll container holding the rows; visible-row tracking observes `[data-trace-id]` inside it. */\nexport function ThreadTraceList({ className, innerClassName, children, ...props }: ThreadTraceListProps) {\n const { listRef } = useThreadTrace();\n return (\n <div\n ref={listRef}\n data-slot=\"thread-trace-list\"\n className={cn('min-h-0 overflow-x-hidden overflow-y-auto', className)}\n {...props}\n >\n <div data-slot=\"thread-trace-list-inner\" className={cn('relative min-h-full', innerClassName)}>\n {children}\n </div>\n </div>\n );\n}\n"],"names":[],"mappings":";;;;AAWO,SAAS,gBAAgB,EAAE,SAAA,EAAW,gBAAgB,QAAA,EAAU,GAAG,OAAM,EAAyB;AACvG,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,cAAA,EAAe;AACnC,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,OAAA;AAAA,MACL,WAAA,EAAU,mBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,2CAAA,EAA6C,SAAS,CAAA;AAAA,MACnE,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAA,GAAA,CAAC,SAAI,WAAA,EAAU,yBAAA,EAA0B,WAAW,EAAA,CAAG,qBAAA,EAAuB,cAAc,CAAA,EACzF,QAAA,EACH;AAAA;AAAA,GACF;AAEJ;;;;"}
1
+ {"version":3,"file":"thread-trace-list.es.js","sources":["../../../../../src/domains/traces/components/thread-trace/thread-trace-list.tsx"],"sourcesContent":["import type { ComponentProps } from 'react';\n\nimport { useThreadTrace } from './thread-trace-context';\nimport { MessageScroller, MessageScrollerContent, MessageScrollerViewport } from '@/ds/components/MessageScroller';\nimport { cn } from '@/lib/utils';\n\nexport interface ThreadTraceListProps extends ComponentProps<'div'> {\n /** Class name of the inner wrapper that establishes the positioning context for the rail. */\n innerClassName?: string;\n}\n\n/** The scroll container holding the rows; visible-row tracking observes `[data-trace-id]` inside it. */\nexport function ThreadTraceList({ className, innerClassName, children, ...props }: ThreadTraceListProps) {\n const { listRef } = useThreadTrace();\n return (\n <MessageScroller data-slot=\"thread-trace-list\" className={cn('min-h-0', className)} {...props}>\n <MessageScrollerViewport ref={listRef} className=\"overflow-x-hidden\">\n <MessageScrollerContent\n data-slot=\"thread-trace-list-inner\"\n className={cn('relative min-h-full gap-0', innerClassName)}\n >\n {children}\n </MessageScrollerContent>\n </MessageScrollerViewport>\n </MessageScroller>\n );\n}\n"],"names":[],"mappings":";;;;;AAYO,SAAS,gBAAgB,EAAE,SAAA,EAAW,gBAAgB,QAAA,EAAU,GAAG,OAAM,EAAyB;AACvG,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,cAAA,EAAe;AACnC,EAAA,2BACG,eAAA,EAAA,EAAgB,WAAA,EAAU,mBAAA,EAAoB,SAAA,EAAW,GAAG,SAAA,EAAW,SAAS,CAAA,EAAI,GAAG,OACtF,QAAA,kBAAA,GAAA,CAAC,uBAAA,EAAA,EAAwB,GAAA,EAAK,OAAA,EAAS,WAAU,mBAAA,EAC/C,QAAA,kBAAA,GAAA;AAAA,IAAC,sBAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,yBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,2BAAA,EAA6B,cAAc,CAAA;AAAA,MAExD;AAAA;AAAA,KAEL,CAAA,EACF,CAAA;AAEJ;;;;"}
@@ -5,7 +5,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5
5
  const jsxRuntime = require('react/jsx-runtime');
6
6
  const domains_traces_components_threadTrace_threadTraceRow = require('./thread-trace-row.cjs.js');
7
7
  const domains_traces_components_threadTrace_threadTraceRowContext = require('./thread-trace-row-context.cjs.js');
8
- const dataPanel = require('../../../../data-panel-D7Qk4iwZ.cjs');
8
+ const dataPanel = require('../../../../data-panel-o-QLWuFV.cjs');
9
9
  const tabsRoot = require('../../../../tabs-root-C-ePF1y9.cjs');
10
10
  const tabsTab = require('../../../../tabs-tab-BmIBFifi.cjs');
11
11
  const tabsContent = require('../../../../tabs-content-DnscxcLI.cjs');
@@ -1,7 +1,7 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { THREAD_TRACE_MESSAGES_TAB } from './thread-trace-row.es.js';
3
3
  import { useThreadTraceRow } from './thread-trace-row-context.es.js';
4
- import { D as DataPanel } from '../../../../data-panel-DuLf5j8S.js';
4
+ import { D as DataPanel } from '../../../../data-panel-CbomKGJt.js';
5
5
  import { T as TabList, a as Tabs } from '../../../../tabs-root-lrZZ3KwH.js';
6
6
  import { T as Tab } from '../../../../tabs-tab-DoPSW-1s.js';
7
7
  import { T as TabContent } from '../../../../tabs-content-CwbkTutf.js';
@@ -6,11 +6,12 @@ const jsxRuntime = require('react/jsx-runtime');
6
6
  const React = require('react');
7
7
  const domains_traces_hooks_useVisibleTraceRows = require('../../hooks/use-visible-trace-rows.cjs.js');
8
8
  const domains_traces_components_threadTrace_threadTraceContext = require('./thread-trace-context.cjs.js');
9
+ const messageScroller = require('../../../../message-scroller-E05PLPmT.cjs');
9
10
  const utils_cn = require('../../../../cn-DG0X1KEP.cjs');
10
11
 
11
12
  function ThreadTraceRoot({
12
13
  traceIds,
13
- anchorTraceId,
14
+ onLoadOlder,
14
15
  onSelectedSpanChange,
15
16
  className,
16
17
  children,
@@ -20,8 +21,7 @@ function ThreadTraceRoot({
20
21
  const { visibleTraceIds, currentTraceId } = domains_traces_hooks_useVisibleTraceRows.useVisibleTraceRows(listRef, traceIds);
21
22
  const [selected, setSelected] = React.useState(null);
22
23
  const [highlight, setHighlight] = React.useState(null);
23
- const [anchor] = React.useState(() => anchorTraceId ?? null);
24
- const [expandedTraceIds, setExpandedTraceIds] = React.useState(() => new Set(anchor ? [anchor] : []));
24
+ const [expandedTraceIds, setExpandedTraceIds] = React.useState(() => /* @__PURE__ */ new Set());
25
25
  const setTraceExpanded = React.useCallback((traceId, expanded) => {
26
26
  setExpandedTraceIds((current) => {
27
27
  if (current.has(traceId) === expanded) return current;
@@ -64,7 +64,6 @@ function ThreadTraceRoot({
64
64
  const contextValue = React.useMemo(
65
65
  () => ({
66
66
  traceIds,
67
- anchorTraceId: anchor,
68
67
  selected,
69
68
  selectSpan,
70
69
  highlight,
@@ -78,7 +77,6 @@ function ThreadTraceRoot({
78
77
  }),
79
78
  [
80
79
  traceIds,
81
- anchor,
82
80
  selected,
83
81
  selectSpan,
84
82
  highlight,
@@ -91,18 +89,27 @@ function ThreadTraceRoot({
91
89
  ]
92
90
  );
93
91
  return /* @__PURE__ */ jsxRuntime.jsx(domains_traces_components_threadTrace_threadTraceContext.ThreadTraceContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx(
94
- "div",
92
+ messageScroller.MessageScrollerProvider,
95
93
  {
96
- "data-slot": "thread-trace",
97
- className: utils_cn.cn(
98
- // The span cell always exists and collapses to zero so opening/closing it animates
99
- // via `grid-template-columns`, like the trace panel's columns.
100
- "grid h-full min-h-0 transition-[grid-template-columns] duration-300 ease-in-out",
101
- selected ? "grid-cols-[minmax(0,2fr)_minmax(0,1fr)]" : "grid-cols-[minmax(0,2fr)_minmax(0,0fr)]",
102
- className
103
- ),
104
- ...props,
105
- children
94
+ defaultScrollPosition: "end",
95
+ autoScroll: true,
96
+ preserveScrollOnPrepend: true,
97
+ onReachStart: onLoadOlder,
98
+ children: /* @__PURE__ */ jsxRuntime.jsx(
99
+ "div",
100
+ {
101
+ "data-slot": "thread-trace",
102
+ className: utils_cn.cn(
103
+ // The span cell always exists and collapses to zero so opening/closing it animates
104
+ // via `grid-template-columns`, like the trace panel's columns.
105
+ "grid h-full min-h-0 transition-[grid-template-columns] duration-300 ease-in-out",
106
+ selected ? "grid-cols-[minmax(0,2fr)_minmax(0,1fr)]" : "grid-cols-[minmax(0,2fr)_minmax(0,0fr)]",
107
+ className
108
+ ),
109
+ ...props,
110
+ children
111
+ }
112
+ )
106
113
  }
107
114
  ) });
108
115
  }
@@ -1 +1 @@
1
- {"version":3,"file":"thread-trace-root.cjs.js","sources":["../../../../../src/domains/traces/components/thread-trace/thread-trace-root.tsx"],"sourcesContent":["import { useCallback, useMemo, useRef, useState } from 'react';\nimport type { ComponentProps } from 'react';\n\nimport { useVisibleTraceRows } from '../../hooks/use-visible-trace-rows';\nimport { ThreadTraceContext } from './thread-trace-context';\nimport type { ThreadTraceContextValue, ThreadTraceHighlight, ThreadTraceSelectedSpan } from './thread-trace-context';\nimport { cn } from '@/lib/utils';\n\nexport interface ThreadTraceRootProps extends ComponentProps<'div'> {\n /** Trace ids in reading order (oldest first); must match the order of the rendered rows. */\n traceIds: string[];\n /**\n * The row to start from: it mounts expanded and is scrolled into view once. Only read at mount,\n * so a row that arrives on a later page is left alone.\n */\n anchorTraceId?: string | null;\n /** Fires when a span detail opens or closes (`null`). */\n onSelectedSpanChange?: (selected: ThreadTraceSelectedSpan | null) => void;\n}\n\n/**\n * Owns the interaction state of a thread rendered as its traces: the selected span, the\n * highlighted spans, which rows are expanded, and which rows are on screen. Layout parts read it\n * through `useThreadTrace()` / `useThreadTraceRow()`; the root itself is the outer grid that gains a\n * side column while a span is selected.\n */\nexport function ThreadTraceRoot({\n traceIds,\n anchorTraceId,\n onSelectedSpanChange,\n className,\n children,\n ...props\n}: ThreadTraceRootProps) {\n const listRef = useRef<HTMLDivElement>(null);\n const { visibleTraceIds, currentTraceId } = useVisibleTraceRows(listRef, traceIds);\n\n const [selected, setSelected] = useState<ThreadTraceSelectedSpan | null>(null);\n const [highlight, setHighlight] = useState<ThreadTraceHighlight | null>(null);\n const [anchor] = useState(() => anchorTraceId ?? null);\n // Selecting a span expands its row and it stays expanded until the reader collapses it with \"Show less\".\n const [expandedTraceIds, setExpandedTraceIds] = useState<ReadonlySet<string>>(() => new Set(anchor ? [anchor] : []));\n\n const setTraceExpanded = useCallback((traceId: string, expanded: boolean) => {\n setExpandedTraceIds(current => {\n if (current.has(traceId) === expanded) return current;\n const next = new Set(current);\n if (expanded) next.add(traceId);\n else next.delete(traceId);\n return next;\n });\n }, []);\n\n const selectSpan = useCallback(\n (traceId: string, spanId: string | undefined) => {\n const next = spanId ? { traceId, spanId } : null;\n setSelected(next);\n onSelectedSpanChange?.(next);\n if (spanId) setTraceExpanded(traceId, true);\n // Closing the panel also ends the highlight, like clearing the URL param on the traces page.\n if (!spanId) setHighlight(null);\n },\n [setTraceExpanded, onSelectedSpanChange],\n );\n\n // Fades the other spans and brings the last (most specific, deepest) span into view, since it is\n // the one most likely to sit below the fold. Opening a span's detail panel stays a separate,\n // deliberate click so highlighting does not hijack the side panel.\n const highlightSpans = useCallback(\n (traceId: string, spanIds: string[]) => {\n if (spanIds.length === 0) {\n setHighlight(null);\n return;\n }\n setHighlight({ traceId, spanIds });\n setTraceExpanded(traceId, true);\n },\n [setTraceExpanded],\n );\n\n const scrollToTrace = useCallback((traceId: string) => {\n const rows = listRef.current?.querySelectorAll<HTMLElement>('[data-trace-id]') ?? [];\n for (const row of rows) {\n if (row.dataset.traceId === traceId) {\n row.scrollIntoView({ behavior: 'smooth', block: 'start' });\n return;\n }\n }\n }, []);\n\n const contextValue = useMemo<ThreadTraceContextValue>(\n () => ({\n traceIds,\n anchorTraceId: anchor,\n selected,\n selectSpan,\n highlight,\n highlightSpans,\n expandedTraceIds,\n setTraceExpanded,\n visibleTraceIds,\n currentTraceId,\n scrollToTrace,\n listRef,\n }),\n [\n traceIds,\n anchor,\n selected,\n selectSpan,\n highlight,\n highlightSpans,\n expandedTraceIds,\n setTraceExpanded,\n visibleTraceIds,\n currentTraceId,\n scrollToTrace,\n ],\n );\n\n return (\n <ThreadTraceContext.Provider value={contextValue}>\n <div\n data-slot=\"thread-trace\"\n className={cn(\n // The span cell always exists and collapses to zero so opening/closing it animates\n // via `grid-template-columns`, like the trace panel's columns.\n 'grid h-full min-h-0 transition-[grid-template-columns] duration-300 ease-in-out',\n selected ? 'grid-cols-[minmax(0,2fr)_minmax(0,1fr)]' : 'grid-cols-[minmax(0,2fr)_minmax(0,0fr)]',\n className,\n )}\n {...props}\n >\n {children}\n </div>\n </ThreadTraceContext.Provider>\n );\n}\n"],"names":["useRef","useVisibleTraceRows","useState","useCallback","useMemo","jsx","ThreadTraceContext","cn"],"mappings":"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"}
1
+ {"version":3,"file":"thread-trace-root.cjs.js","sources":["../../../../../src/domains/traces/components/thread-trace/thread-trace-root.tsx"],"sourcesContent":["import { useCallback, useMemo, useRef, useState } from 'react';\nimport type { ComponentProps } from 'react';\n\nimport { useVisibleTraceRows } from '../../hooks/use-visible-trace-rows';\nimport { ThreadTraceContext } from './thread-trace-context';\nimport type { ThreadTraceContextValue, ThreadTraceHighlight, ThreadTraceSelectedSpan } from './thread-trace-context';\nimport { MessageScrollerProvider } from '@/ds/components/MessageScroller';\nimport { cn } from '@/lib/utils';\n\nexport interface ThreadTraceRootProps extends ComponentProps<'div'> {\n /** Trace ids in reading order (oldest first); must match the order of the rendered rows. */\n traceIds: string[];\n /** Fires when the reader scrolls up to the oldest loaded row; load the previous page here. */\n onLoadOlder?: () => void;\n /** Fires when a span detail opens or closes (`null`). */\n onSelectedSpanChange?: (selected: ThreadTraceSelectedSpan | null) => void;\n}\n\n/**\n * Owns the interaction state of a thread rendered as its traces: the selected span, the\n * highlighted spans, which rows are expanded, and which rows are on screen. Layout parts read it\n * through `useThreadTrace()` / `useThreadTraceRow()`; the root itself is the outer grid that gains a\n * side column while a span is selected.\n */\nexport function ThreadTraceRoot({\n traceIds,\n onLoadOlder,\n onSelectedSpanChange,\n className,\n children,\n ...props\n}: ThreadTraceRootProps) {\n const listRef = useRef<HTMLDivElement>(null);\n const { visibleTraceIds, currentTraceId } = useVisibleTraceRows(listRef, traceIds);\n\n const [selected, setSelected] = useState<ThreadTraceSelectedSpan | null>(null);\n const [highlight, setHighlight] = useState<ThreadTraceHighlight | null>(null);\n // Selecting a span expands its row and it stays expanded until the reader collapses it with \"Show less\".\n const [expandedTraceIds, setExpandedTraceIds] = useState<ReadonlySet<string>>(() => new Set());\n\n const setTraceExpanded = useCallback((traceId: string, expanded: boolean) => {\n setExpandedTraceIds(current => {\n if (current.has(traceId) === expanded) return current;\n const next = new Set(current);\n if (expanded) next.add(traceId);\n else next.delete(traceId);\n return next;\n });\n }, []);\n\n const selectSpan = useCallback(\n (traceId: string, spanId: string | undefined) => {\n const next = spanId ? { traceId, spanId } : null;\n setSelected(next);\n onSelectedSpanChange?.(next);\n if (spanId) setTraceExpanded(traceId, true);\n // Closing the panel also ends the highlight, like clearing the URL param on the traces page.\n if (!spanId) setHighlight(null);\n },\n [setTraceExpanded, onSelectedSpanChange],\n );\n\n // Fades the other spans and brings the last (most specific, deepest) span into view, since it is\n // the one most likely to sit below the fold. Opening a span's detail panel stays a separate,\n // deliberate click so highlighting does not hijack the side panel.\n const highlightSpans = useCallback(\n (traceId: string, spanIds: string[]) => {\n if (spanIds.length === 0) {\n setHighlight(null);\n return;\n }\n setHighlight({ traceId, spanIds });\n setTraceExpanded(traceId, true);\n },\n [setTraceExpanded],\n );\n\n const scrollToTrace = useCallback((traceId: string) => {\n const rows = listRef.current?.querySelectorAll<HTMLElement>('[data-trace-id]') ?? [];\n for (const row of rows) {\n if (row.dataset.traceId === traceId) {\n row.scrollIntoView({ behavior: 'smooth', block: 'start' });\n return;\n }\n }\n }, []);\n\n const contextValue = useMemo<ThreadTraceContextValue>(\n () => ({\n traceIds,\n selected,\n selectSpan,\n highlight,\n highlightSpans,\n expandedTraceIds,\n setTraceExpanded,\n visibleTraceIds,\n currentTraceId,\n scrollToTrace,\n listRef,\n }),\n [\n traceIds,\n selected,\n selectSpan,\n highlight,\n highlightSpans,\n expandedTraceIds,\n setTraceExpanded,\n visibleTraceIds,\n currentTraceId,\n scrollToTrace,\n ],\n );\n\n return (\n <ThreadTraceContext.Provider value={contextValue}>\n {/* Chat-like: opens on the latest turn, follows it while rows grow until the reader scrolls\n up, and keeps the reading position when older turns are prepended. */}\n <MessageScrollerProvider\n defaultScrollPosition=\"end\"\n autoScroll\n preserveScrollOnPrepend\n onReachStart={onLoadOlder}\n >\n <div\n data-slot=\"thread-trace\"\n className={cn(\n // The span cell always exists and collapses to zero so opening/closing it animates\n // via `grid-template-columns`, like the trace panel's columns.\n 'grid h-full min-h-0 transition-[grid-template-columns] duration-300 ease-in-out',\n selected ? 'grid-cols-[minmax(0,2fr)_minmax(0,1fr)]' : 'grid-cols-[minmax(0,2fr)_minmax(0,0fr)]',\n className,\n )}\n {...props}\n >\n {children}\n </div>\n </MessageScrollerProvider>\n </ThreadTraceContext.Provider>\n );\n}\n"],"names":["useRef","useVisibleTraceRows","useState","useCallback","useMemo","jsx","ThreadTraceContext","MessageScrollerProvider","cn"],"mappings":"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"}
@@ -2,11 +2,12 @@ import { jsx } from 'react/jsx-runtime';
2
2
  import { useRef, useState, useCallback, useMemo } from 'react';
3
3
  import { useVisibleTraceRows } from '../../hooks/use-visible-trace-rows.es.js';
4
4
  import { ThreadTraceContext } from './thread-trace-context.es.js';
5
+ import { d as MessageScrollerProvider } from '../../../../message-scroller-CiFr8MwT.js';
5
6
  import { c as cn } from '../../../../cn-65Adrsfj.js';
6
7
 
7
8
  function ThreadTraceRoot({
8
9
  traceIds,
9
- anchorTraceId,
10
+ onLoadOlder,
10
11
  onSelectedSpanChange,
11
12
  className,
12
13
  children,
@@ -16,8 +17,7 @@ function ThreadTraceRoot({
16
17
  const { visibleTraceIds, currentTraceId } = useVisibleTraceRows(listRef, traceIds);
17
18
  const [selected, setSelected] = useState(null);
18
19
  const [highlight, setHighlight] = useState(null);
19
- const [anchor] = useState(() => anchorTraceId ?? null);
20
- const [expandedTraceIds, setExpandedTraceIds] = useState(() => new Set(anchor ? [anchor] : []));
20
+ const [expandedTraceIds, setExpandedTraceIds] = useState(() => /* @__PURE__ */ new Set());
21
21
  const setTraceExpanded = useCallback((traceId, expanded) => {
22
22
  setExpandedTraceIds((current) => {
23
23
  if (current.has(traceId) === expanded) return current;
@@ -60,7 +60,6 @@ function ThreadTraceRoot({
60
60
  const contextValue = useMemo(
61
61
  () => ({
62
62
  traceIds,
63
- anchorTraceId: anchor,
64
63
  selected,
65
64
  selectSpan,
66
65
  highlight,
@@ -74,7 +73,6 @@ function ThreadTraceRoot({
74
73
  }),
75
74
  [
76
75
  traceIds,
77
- anchor,
78
76
  selected,
79
77
  selectSpan,
80
78
  highlight,
@@ -87,18 +85,27 @@ function ThreadTraceRoot({
87
85
  ]
88
86
  );
89
87
  return /* @__PURE__ */ jsx(ThreadTraceContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
90
- "div",
88
+ MessageScrollerProvider,
91
89
  {
92
- "data-slot": "thread-trace",
93
- className: cn(
94
- // The span cell always exists and collapses to zero so opening/closing it animates
95
- // via `grid-template-columns`, like the trace panel's columns.
96
- "grid h-full min-h-0 transition-[grid-template-columns] duration-300 ease-in-out",
97
- selected ? "grid-cols-[minmax(0,2fr)_minmax(0,1fr)]" : "grid-cols-[minmax(0,2fr)_minmax(0,0fr)]",
98
- className
99
- ),
100
- ...props,
101
- children
90
+ defaultScrollPosition: "end",
91
+ autoScroll: true,
92
+ preserveScrollOnPrepend: true,
93
+ onReachStart: onLoadOlder,
94
+ children: /* @__PURE__ */ jsx(
95
+ "div",
96
+ {
97
+ "data-slot": "thread-trace",
98
+ className: cn(
99
+ // The span cell always exists and collapses to zero so opening/closing it animates
100
+ // via `grid-template-columns`, like the trace panel's columns.
101
+ "grid h-full min-h-0 transition-[grid-template-columns] duration-300 ease-in-out",
102
+ selected ? "grid-cols-[minmax(0,2fr)_minmax(0,1fr)]" : "grid-cols-[minmax(0,2fr)_minmax(0,0fr)]",
103
+ className
104
+ ),
105
+ ...props,
106
+ children
107
+ }
108
+ )
102
109
  }
103
110
  ) });
104
111
  }
@@ -1 +1 @@
1
- {"version":3,"file":"thread-trace-root.es.js","sources":["../../../../../src/domains/traces/components/thread-trace/thread-trace-root.tsx"],"sourcesContent":["import { useCallback, useMemo, useRef, useState } from 'react';\nimport type { ComponentProps } from 'react';\n\nimport { useVisibleTraceRows } from '../../hooks/use-visible-trace-rows';\nimport { ThreadTraceContext } from './thread-trace-context';\nimport type { ThreadTraceContextValue, ThreadTraceHighlight, ThreadTraceSelectedSpan } from './thread-trace-context';\nimport { cn } from '@/lib/utils';\n\nexport interface ThreadTraceRootProps extends ComponentProps<'div'> {\n /** Trace ids in reading order (oldest first); must match the order of the rendered rows. */\n traceIds: string[];\n /**\n * The row to start from: it mounts expanded and is scrolled into view once. Only read at mount,\n * so a row that arrives on a later page is left alone.\n */\n anchorTraceId?: string | null;\n /** Fires when a span detail opens or closes (`null`). */\n onSelectedSpanChange?: (selected: ThreadTraceSelectedSpan | null) => void;\n}\n\n/**\n * Owns the interaction state of a thread rendered as its traces: the selected span, the\n * highlighted spans, which rows are expanded, and which rows are on screen. Layout parts read it\n * through `useThreadTrace()` / `useThreadTraceRow()`; the root itself is the outer grid that gains a\n * side column while a span is selected.\n */\nexport function ThreadTraceRoot({\n traceIds,\n anchorTraceId,\n onSelectedSpanChange,\n className,\n children,\n ...props\n}: ThreadTraceRootProps) {\n const listRef = useRef<HTMLDivElement>(null);\n const { visibleTraceIds, currentTraceId } = useVisibleTraceRows(listRef, traceIds);\n\n const [selected, setSelected] = useState<ThreadTraceSelectedSpan | null>(null);\n const [highlight, setHighlight] = useState<ThreadTraceHighlight | null>(null);\n const [anchor] = useState(() => anchorTraceId ?? null);\n // Selecting a span expands its row and it stays expanded until the reader collapses it with \"Show less\".\n const [expandedTraceIds, setExpandedTraceIds] = useState<ReadonlySet<string>>(() => new Set(anchor ? [anchor] : []));\n\n const setTraceExpanded = useCallback((traceId: string, expanded: boolean) => {\n setExpandedTraceIds(current => {\n if (current.has(traceId) === expanded) return current;\n const next = new Set(current);\n if (expanded) next.add(traceId);\n else next.delete(traceId);\n return next;\n });\n }, []);\n\n const selectSpan = useCallback(\n (traceId: string, spanId: string | undefined) => {\n const next = spanId ? { traceId, spanId } : null;\n setSelected(next);\n onSelectedSpanChange?.(next);\n if (spanId) setTraceExpanded(traceId, true);\n // Closing the panel also ends the highlight, like clearing the URL param on the traces page.\n if (!spanId) setHighlight(null);\n },\n [setTraceExpanded, onSelectedSpanChange],\n );\n\n // Fades the other spans and brings the last (most specific, deepest) span into view, since it is\n // the one most likely to sit below the fold. Opening a span's detail panel stays a separate,\n // deliberate click so highlighting does not hijack the side panel.\n const highlightSpans = useCallback(\n (traceId: string, spanIds: string[]) => {\n if (spanIds.length === 0) {\n setHighlight(null);\n return;\n }\n setHighlight({ traceId, spanIds });\n setTraceExpanded(traceId, true);\n },\n [setTraceExpanded],\n );\n\n const scrollToTrace = useCallback((traceId: string) => {\n const rows = listRef.current?.querySelectorAll<HTMLElement>('[data-trace-id]') ?? [];\n for (const row of rows) {\n if (row.dataset.traceId === traceId) {\n row.scrollIntoView({ behavior: 'smooth', block: 'start' });\n return;\n }\n }\n }, []);\n\n const contextValue = useMemo<ThreadTraceContextValue>(\n () => ({\n traceIds,\n anchorTraceId: anchor,\n selected,\n selectSpan,\n highlight,\n highlightSpans,\n expandedTraceIds,\n setTraceExpanded,\n visibleTraceIds,\n currentTraceId,\n scrollToTrace,\n listRef,\n }),\n [\n traceIds,\n anchor,\n selected,\n selectSpan,\n highlight,\n highlightSpans,\n expandedTraceIds,\n setTraceExpanded,\n visibleTraceIds,\n currentTraceId,\n scrollToTrace,\n ],\n );\n\n return (\n <ThreadTraceContext.Provider value={contextValue}>\n <div\n data-slot=\"thread-trace\"\n className={cn(\n // The span cell always exists and collapses to zero so opening/closing it animates\n // via `grid-template-columns`, like the trace panel's columns.\n 'grid h-full min-h-0 transition-[grid-template-columns] duration-300 ease-in-out',\n selected ? 'grid-cols-[minmax(0,2fr)_minmax(0,1fr)]' : 'grid-cols-[minmax(0,2fr)_minmax(0,0fr)]',\n className,\n )}\n {...props}\n >\n {children}\n </div>\n </ThreadTraceContext.Provider>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"thread-trace-root.es.js","sources":["../../../../../src/domains/traces/components/thread-trace/thread-trace-root.tsx"],"sourcesContent":["import { useCallback, useMemo, useRef, useState } from 'react';\nimport type { ComponentProps } from 'react';\n\nimport { useVisibleTraceRows } from '../../hooks/use-visible-trace-rows';\nimport { ThreadTraceContext } from './thread-trace-context';\nimport type { ThreadTraceContextValue, ThreadTraceHighlight, ThreadTraceSelectedSpan } from './thread-trace-context';\nimport { MessageScrollerProvider } from '@/ds/components/MessageScroller';\nimport { cn } from '@/lib/utils';\n\nexport interface ThreadTraceRootProps extends ComponentProps<'div'> {\n /** Trace ids in reading order (oldest first); must match the order of the rendered rows. */\n traceIds: string[];\n /** Fires when the reader scrolls up to the oldest loaded row; load the previous page here. */\n onLoadOlder?: () => void;\n /** Fires when a span detail opens or closes (`null`). */\n onSelectedSpanChange?: (selected: ThreadTraceSelectedSpan | null) => void;\n}\n\n/**\n * Owns the interaction state of a thread rendered as its traces: the selected span, the\n * highlighted spans, which rows are expanded, and which rows are on screen. Layout parts read it\n * through `useThreadTrace()` / `useThreadTraceRow()`; the root itself is the outer grid that gains a\n * side column while a span is selected.\n */\nexport function ThreadTraceRoot({\n traceIds,\n onLoadOlder,\n onSelectedSpanChange,\n className,\n children,\n ...props\n}: ThreadTraceRootProps) {\n const listRef = useRef<HTMLDivElement>(null);\n const { visibleTraceIds, currentTraceId } = useVisibleTraceRows(listRef, traceIds);\n\n const [selected, setSelected] = useState<ThreadTraceSelectedSpan | null>(null);\n const [highlight, setHighlight] = useState<ThreadTraceHighlight | null>(null);\n // Selecting a span expands its row and it stays expanded until the reader collapses it with \"Show less\".\n const [expandedTraceIds, setExpandedTraceIds] = useState<ReadonlySet<string>>(() => new Set());\n\n const setTraceExpanded = useCallback((traceId: string, expanded: boolean) => {\n setExpandedTraceIds(current => {\n if (current.has(traceId) === expanded) return current;\n const next = new Set(current);\n if (expanded) next.add(traceId);\n else next.delete(traceId);\n return next;\n });\n }, []);\n\n const selectSpan = useCallback(\n (traceId: string, spanId: string | undefined) => {\n const next = spanId ? { traceId, spanId } : null;\n setSelected(next);\n onSelectedSpanChange?.(next);\n if (spanId) setTraceExpanded(traceId, true);\n // Closing the panel also ends the highlight, like clearing the URL param on the traces page.\n if (!spanId) setHighlight(null);\n },\n [setTraceExpanded, onSelectedSpanChange],\n );\n\n // Fades the other spans and brings the last (most specific, deepest) span into view, since it is\n // the one most likely to sit below the fold. Opening a span's detail panel stays a separate,\n // deliberate click so highlighting does not hijack the side panel.\n const highlightSpans = useCallback(\n (traceId: string, spanIds: string[]) => {\n if (spanIds.length === 0) {\n setHighlight(null);\n return;\n }\n setHighlight({ traceId, spanIds });\n setTraceExpanded(traceId, true);\n },\n [setTraceExpanded],\n );\n\n const scrollToTrace = useCallback((traceId: string) => {\n const rows = listRef.current?.querySelectorAll<HTMLElement>('[data-trace-id]') ?? [];\n for (const row of rows) {\n if (row.dataset.traceId === traceId) {\n row.scrollIntoView({ behavior: 'smooth', block: 'start' });\n return;\n }\n }\n }, []);\n\n const contextValue = useMemo<ThreadTraceContextValue>(\n () => ({\n traceIds,\n selected,\n selectSpan,\n highlight,\n highlightSpans,\n expandedTraceIds,\n setTraceExpanded,\n visibleTraceIds,\n currentTraceId,\n scrollToTrace,\n listRef,\n }),\n [\n traceIds,\n selected,\n selectSpan,\n highlight,\n highlightSpans,\n expandedTraceIds,\n setTraceExpanded,\n visibleTraceIds,\n currentTraceId,\n scrollToTrace,\n ],\n );\n\n return (\n <ThreadTraceContext.Provider value={contextValue}>\n {/* Chat-like: opens on the latest turn, follows it while rows grow until the reader scrolls\n up, and keeps the reading position when older turns are prepended. */}\n <MessageScrollerProvider\n defaultScrollPosition=\"end\"\n autoScroll\n preserveScrollOnPrepend\n onReachStart={onLoadOlder}\n >\n <div\n data-slot=\"thread-trace\"\n className={cn(\n // The span cell always exists and collapses to zero so opening/closing it animates\n // via `grid-template-columns`, like the trace panel's columns.\n 'grid h-full min-h-0 transition-[grid-template-columns] duration-300 ease-in-out',\n selected ? 'grid-cols-[minmax(0,2fr)_minmax(0,1fr)]' : 'grid-cols-[minmax(0,2fr)_minmax(0,0fr)]',\n className,\n )}\n {...props}\n >\n {children}\n </div>\n </MessageScrollerProvider>\n </ThreadTraceContext.Provider>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"thread-trace-row-context.cjs.js","sources":["../../../../../src/domains/traces/components/thread-trace/thread-trace-row-context.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { RefCallback } from 'react';\n\nexport interface ThreadTraceRowContextValue {\n traceId: string;\n /** A span of this row is open in the side panel. */\n isActive: boolean;\n /** The first row in view. */\n isCurrent: boolean;\n /** The timeline is shown in full rather than clamped to the messages column. */\n isExpanded: boolean;\n isAnchor: boolean;\n selectedSpanId: string | undefined;\n featuredSpanIds: string[] | undefined;\n revealSpanId: string | undefined;\n /** Highlight spans of this row in its span tree. */\n highlightSpans: (spanIds: string[]) => void;\n setExpanded: (expanded: boolean) => void;\n /** The view shown by the messages column (Messages / Feedback / Scores). */\n tab: string;\n setTab: (tab: string) => void;\n /** Measured heights; the timeline is clamped to the messages column minus the details header. */\n messagesRef: RefCallback<HTMLDivElement>;\n timelineRef: RefCallback<HTMLDivElement>;\n detailsHeaderRef: RefCallback<HTMLDivElement>;\n messagesHeight: number | null;\n timelineHeight: number | null;\n detailsHeaderHeight: number | null;\n}\n\nexport const ThreadTraceRowContext = createContext<ThreadTraceRowContextValue | null>(null);\n\nexport function useThreadTraceRow(): ThreadTraceRowContextValue {\n const context = useContext(ThreadTraceRowContext);\n if (!context) {\n throw new Error('ThreadTrace row parts must be rendered inside <ThreadTrace.Row>.');\n }\n return context;\n}\n"],"names":["createContext","useContext"],"mappings":";;;;;;AA8BO,MAAM,qBAAA,GAAwBA,oBAAiD,IAAI;AAEnF,SAAS,iBAAA,GAAgD;AAC9D,EAAA,MAAM,OAAA,GAAUC,iBAAW,qBAAqB,CAAA;AAChD,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,MAAM,kEAAkE,CAAA;AAAA,EACpF;AACA,EAAA,OAAO,OAAA;AACT;;;;;"}
1
+ {"version":3,"file":"thread-trace-row-context.cjs.js","sources":["../../../../../src/domains/traces/components/thread-trace/thread-trace-row-context.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { RefCallback } from 'react';\n\nexport interface ThreadTraceRowContextValue {\n traceId: string;\n /** A span of this row is open in the side panel. */\n isActive: boolean;\n /** The first row in view. */\n isCurrent: boolean;\n /** The timeline is shown in full rather than clamped to the messages column. */\n isExpanded: boolean;\n selectedSpanId: string | undefined;\n featuredSpanIds: string[] | undefined;\n revealSpanId: string | undefined;\n /** Highlight spans of this row in its span tree. */\n highlightSpans: (spanIds: string[]) => void;\n setExpanded: (expanded: boolean) => void;\n /** The view shown by the messages column (Messages / Feedback / Scores). */\n tab: string;\n setTab: (tab: string) => void;\n /** Measured heights; the timeline is clamped to the messages column minus the details header. */\n messagesRef: RefCallback<HTMLDivElement>;\n timelineRef: RefCallback<HTMLDivElement>;\n detailsHeaderRef: RefCallback<HTMLDivElement>;\n messagesHeight: number | null;\n timelineHeight: number | null;\n detailsHeaderHeight: number | null;\n}\n\nexport const ThreadTraceRowContext = createContext<ThreadTraceRowContextValue | null>(null);\n\nexport function useThreadTraceRow(): ThreadTraceRowContextValue {\n const context = useContext(ThreadTraceRowContext);\n if (!context) {\n throw new Error('ThreadTrace row parts must be rendered inside <ThreadTrace.Row>.');\n }\n return context;\n}\n"],"names":["createContext","useContext"],"mappings":";;;;;;AA6BO,MAAM,qBAAA,GAAwBA,oBAAiD,IAAI;AAEnF,SAAS,iBAAA,GAAgD;AAC9D,EAAA,MAAM,OAAA,GAAUC,iBAAW,qBAAqB,CAAA;AAChD,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,MAAM,kEAAkE,CAAA;AAAA,EACpF;AACA,EAAA,OAAO,OAAA;AACT;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"thread-trace-row-context.es.js","sources":["../../../../../src/domains/traces/components/thread-trace/thread-trace-row-context.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { RefCallback } from 'react';\n\nexport interface ThreadTraceRowContextValue {\n traceId: string;\n /** A span of this row is open in the side panel. */\n isActive: boolean;\n /** The first row in view. */\n isCurrent: boolean;\n /** The timeline is shown in full rather than clamped to the messages column. */\n isExpanded: boolean;\n isAnchor: boolean;\n selectedSpanId: string | undefined;\n featuredSpanIds: string[] | undefined;\n revealSpanId: string | undefined;\n /** Highlight spans of this row in its span tree. */\n highlightSpans: (spanIds: string[]) => void;\n setExpanded: (expanded: boolean) => void;\n /** The view shown by the messages column (Messages / Feedback / Scores). */\n tab: string;\n setTab: (tab: string) => void;\n /** Measured heights; the timeline is clamped to the messages column minus the details header. */\n messagesRef: RefCallback<HTMLDivElement>;\n timelineRef: RefCallback<HTMLDivElement>;\n detailsHeaderRef: RefCallback<HTMLDivElement>;\n messagesHeight: number | null;\n timelineHeight: number | null;\n detailsHeaderHeight: number | null;\n}\n\nexport const ThreadTraceRowContext = createContext<ThreadTraceRowContextValue | null>(null);\n\nexport function useThreadTraceRow(): ThreadTraceRowContextValue {\n const context = useContext(ThreadTraceRowContext);\n if (!context) {\n throw new Error('ThreadTrace row parts must be rendered inside <ThreadTrace.Row>.');\n }\n return context;\n}\n"],"names":[],"mappings":";;AA8BO,MAAM,qBAAA,GAAwB,cAAiD,IAAI;AAEnF,SAAS,iBAAA,GAAgD;AAC9D,EAAA,MAAM,OAAA,GAAU,WAAW,qBAAqB,CAAA;AAChD,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,MAAM,kEAAkE,CAAA;AAAA,EACpF;AACA,EAAA,OAAO,OAAA;AACT;;;;"}
1
+ {"version":3,"file":"thread-trace-row-context.es.js","sources":["../../../../../src/domains/traces/components/thread-trace/thread-trace-row-context.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { RefCallback } from 'react';\n\nexport interface ThreadTraceRowContextValue {\n traceId: string;\n /** A span of this row is open in the side panel. */\n isActive: boolean;\n /** The first row in view. */\n isCurrent: boolean;\n /** The timeline is shown in full rather than clamped to the messages column. */\n isExpanded: boolean;\n selectedSpanId: string | undefined;\n featuredSpanIds: string[] | undefined;\n revealSpanId: string | undefined;\n /** Highlight spans of this row in its span tree. */\n highlightSpans: (spanIds: string[]) => void;\n setExpanded: (expanded: boolean) => void;\n /** The view shown by the messages column (Messages / Feedback / Scores). */\n tab: string;\n setTab: (tab: string) => void;\n /** Measured heights; the timeline is clamped to the messages column minus the details header. */\n messagesRef: RefCallback<HTMLDivElement>;\n timelineRef: RefCallback<HTMLDivElement>;\n detailsHeaderRef: RefCallback<HTMLDivElement>;\n messagesHeight: number | null;\n timelineHeight: number | null;\n detailsHeaderHeight: number | null;\n}\n\nexport const ThreadTraceRowContext = createContext<ThreadTraceRowContextValue | null>(null);\n\nexport function useThreadTraceRow(): ThreadTraceRowContextValue {\n const context = useContext(ThreadTraceRowContext);\n if (!context) {\n throw new Error('ThreadTrace row parts must be rendered inside <ThreadTrace.Row>.');\n }\n return context;\n}\n"],"names":[],"mappings":";;AA6BO,MAAM,qBAAA,GAAwB,cAAiD,IAAI;AAEnF,SAAS,iBAAA,GAAgD;AAC9D,EAAA,MAAM,OAAA,GAAU,WAAW,qBAAqB,CAAA;AAChD,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,MAAM,kEAAkE,CAAA;AAAA,EACpF;AACA,EAAA,OAAO,OAAA;AACT;;;;"}
@@ -6,13 +6,11 @@ const jsxRuntime = require('react/jsx-runtime');
6
6
  const React = require('react');
7
7
  const domains_traces_components_threadTrace_threadTraceContext = require('./thread-trace-context.cjs.js');
8
8
  const domains_traces_components_threadTrace_threadTraceRowContext = require('./thread-trace-row-context.cjs.js');
9
+ const messageScroller = require('../../../../message-scroller-E05PLPmT.cjs');
9
10
  const hooks_useMeasuredAutoHeight = require('../../../../hooks/use-measured-auto-height.cjs.js');
10
11
  const utils_cn = require('../../../../cn-DG0X1KEP.cjs');
11
12
 
12
13
  const THREAD_TRACE_MESSAGES_TAB = "messages";
13
- const scrollIntoViewOnMount = (row) => {
14
- row?.scrollIntoView({ block: "start" });
15
- };
16
14
  function ThreadTraceRow({ traceId, className, children, ...props }) {
17
15
  const root = domains_traces_components_threadTrace_threadTraceContext.useThreadTrace();
18
16
  const selectedSpanId = root.selected?.traceId === traceId ? root.selected.spanId : void 0;
@@ -21,7 +19,6 @@ function ThreadTraceRow({ traceId, className, children, ...props }) {
21
19
  const isActive = selectedSpanId !== void 0;
22
20
  const isCurrent = root.currentTraceId === traceId;
23
21
  const isExpanded = root.expandedTraceIds.has(traceId);
24
- const isAnchor = root.anchorTraceId === traceId;
25
22
  const messages = hooks_useMeasuredAutoHeight.useMeasuredAutoHeight();
26
23
  const timeline = hooks_useMeasuredAutoHeight.useMeasuredAutoHeight();
27
24
  const detailsHeader = hooks_useMeasuredAutoHeight.useMeasuredAutoHeight();
@@ -45,7 +42,6 @@ function ThreadTraceRow({ traceId, className, children, ...props }) {
45
42
  isActive,
46
43
  isCurrent,
47
44
  isExpanded,
48
- isAnchor,
49
45
  selectedSpanId,
50
46
  featuredSpanIds,
51
47
  revealSpanId,
@@ -65,7 +61,6 @@ function ThreadTraceRow({ traceId, className, children, ...props }) {
65
61
  isActive,
66
62
  isCurrent,
67
63
  isExpanded,
68
- isAnchor,
69
64
  selectedSpanId,
70
65
  featuredSpanIds,
71
66
  revealSpanId,
@@ -80,7 +75,7 @@ function ThreadTraceRow({ traceId, className, children, ...props }) {
80
75
  detailsHeader.height
81
76
  ]
82
77
  );
83
- return /* @__PURE__ */ jsxRuntime.jsx(domains_traces_components_threadTrace_threadTraceRowContext.ThreadTraceRowContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx(
78
+ return /* @__PURE__ */ jsxRuntime.jsx(domains_traces_components_threadTrace_threadTraceRowContext.ThreadTraceRowContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx(messageScroller.MessageScrollerItem, { messageId: traceId, className: "[content-visibility:visible]", children: /* @__PURE__ */ jsxRuntime.jsx(
84
79
  "div",
85
80
  {
86
81
  "data-slot": "thread-trace-row",
@@ -92,11 +87,10 @@ function ThreadTraceRow({ traceId, className, children, ...props }) {
92
87
  ),
93
88
  "data-trace-id": traceId,
94
89
  "data-active": isActive || void 0,
95
- ref: isAnchor ? scrollIntoViewOnMount : void 0,
96
90
  ...props,
97
91
  children
98
92
  }
99
- ) });
93
+ ) }) });
100
94
  }
101
95
 
102
96
  exports.THREAD_TRACE_MESSAGES_TAB = THREAD_TRACE_MESSAGES_TAB;
@@ -1 +1 @@
1
- {"version":3,"file":"thread-trace-row.cjs.js","sources":["../../../../../src/domains/traces/components/thread-trace/thread-trace-row.tsx"],"sourcesContent":["import { useCallback, useMemo, useState } from 'react';\nimport type { ComponentProps } from 'react';\n\nimport { useThreadTrace } from './thread-trace-context';\nimport { ThreadTraceRowContext } from './thread-trace-row-context';\nimport type { ThreadTraceRowContextValue } from './thread-trace-row-context';\nimport { useMeasuredAutoHeight } from '@/hooks/use-measured-auto-height';\nimport { cn } from '@/lib/utils';\n\nexport const THREAD_TRACE_MESSAGES_TAB = 'messages';\n\nexport interface ThreadTraceRowProps extends ComponentProps<'div'> {\n traceId: string;\n}\n\n// Module-level so the callback ref keeps its identity and React only invokes it on mount/unmount.\nconst scrollIntoViewOnMount = (row: HTMLDivElement | null) => {\n row?.scrollIntoView({ block: 'start' });\n};\n\n/**\n * One agent turn: the messages column on the left and the details column on the right. The whole\n * row is dimmed unless it is the first one in view, hovered, or its span is open in the side panel,\n * so the reader keeps track of which turn they are on without hovering.\n */\nexport function ThreadTraceRow({ traceId, className, children, ...props }: ThreadTraceRowProps) {\n const root = useThreadTrace();\n\n const selectedSpanId = root.selected?.traceId === traceId ? root.selected.spanId : undefined;\n const featuredSpanIds = root.highlight?.traceId === traceId ? root.highlight.spanIds : undefined;\n const revealSpanId = featuredSpanIds?.at(-1);\n const isActive = selectedSpanId !== undefined;\n const isCurrent = root.currentTraceId === traceId;\n const isExpanded = root.expandedTraceIds.has(traceId);\n const isAnchor = root.anchorTraceId === traceId;\n\n // A long trace is clamped to the real height of its messages column (not a nominal row height),\n // so the timeline never dwarfs the turn it belongs to. The refs live here because the messages\n // and the timeline are sibling parts.\n const messages = useMeasuredAutoHeight<HTMLDivElement>();\n const timeline = useMeasuredAutoHeight<HTMLDivElement>();\n const detailsHeader = useMeasuredAutoHeight<HTMLDivElement>();\n\n // Which view the messages column shows (Messages / Feedback / Scores), one per row.\n const [tab, setTab] = useState<string>(THREAD_TRACE_MESSAGES_TAB);\n // The clamp budget is the height of the *Messages* view: a short Feedback or Scores view\n // must not squash the span tree next to it, so the last Messages height is kept while\n // another view is showing.\n const [messagesViewHeight, setMessagesViewHeight] = useState<number | null>(null);\n if (tab === THREAD_TRACE_MESSAGES_TAB && messages.height !== messagesViewHeight) {\n setMessagesViewHeight(messages.height);\n }\n\n const { highlightSpans: rootHighlightSpans, setTraceExpanded } = root;\n const highlightSpans = useCallback(\n (spanIds: string[]) => rootHighlightSpans(traceId, spanIds),\n [rootHighlightSpans, traceId],\n );\n const setExpanded = useCallback(\n (expanded: boolean) => setTraceExpanded(traceId, expanded),\n [setTraceExpanded, traceId],\n );\n\n const contextValue = useMemo<ThreadTraceRowContextValue>(\n () => ({\n traceId,\n isActive,\n isCurrent,\n isExpanded,\n isAnchor,\n selectedSpanId,\n featuredSpanIds,\n revealSpanId,\n highlightSpans,\n setExpanded,\n tab,\n setTab,\n messagesRef: messages.ref,\n timelineRef: timeline.ref,\n detailsHeaderRef: detailsHeader.ref,\n messagesHeight: messagesViewHeight,\n timelineHeight: timeline.height,\n detailsHeaderHeight: detailsHeader.height,\n }),\n [\n traceId,\n isActive,\n isCurrent,\n isExpanded,\n isAnchor,\n selectedSpanId,\n featuredSpanIds,\n revealSpanId,\n highlightSpans,\n setExpanded,\n tab,\n messages.ref,\n timeline.ref,\n detailsHeader.ref,\n messagesViewHeight,\n timeline.height,\n detailsHeader.height,\n ],\n );\n\n return (\n <ThreadTraceRowContext.Provider value={contextValue}>\n <div\n data-slot=\"thread-trace-row\"\n className={cn(\n // Same fixed messages width as the trace panel; the details column takes the rest.\n 'group grid grid-cols-[minmax(0,1fr)_minmax(0,1fr)] border-b border-border transition-opacity hover:opacity-100',\n isActive || isCurrent ? 'opacity-100' : 'opacity-50',\n className,\n )}\n data-trace-id={traceId}\n data-active={isActive || undefined}\n ref={isAnchor ? scrollIntoViewOnMount : undefined}\n {...props}\n >\n {children}\n </div>\n </ThreadTraceRowContext.Provider>\n );\n}\n"],"names":["useThreadTrace","useMeasuredAutoHeight","useState","useCallback","useMemo","jsx","ThreadTraceRowContext","cn"],"mappings":"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"}
1
+ {"version":3,"file":"thread-trace-row.cjs.js","sources":["../../../../../src/domains/traces/components/thread-trace/thread-trace-row.tsx"],"sourcesContent":["import { useCallback, useMemo, useState } from 'react';\nimport type { ComponentProps } from 'react';\n\nimport { useThreadTrace } from './thread-trace-context';\nimport { ThreadTraceRowContext } from './thread-trace-row-context';\nimport type { ThreadTraceRowContextValue } from './thread-trace-row-context';\nimport { MessageScrollerItem } from '@/ds/components/MessageScroller';\nimport { useMeasuredAutoHeight } from '@/hooks/use-measured-auto-height';\nimport { cn } from '@/lib/utils';\n\nexport const THREAD_TRACE_MESSAGES_TAB = 'messages';\n\nexport interface ThreadTraceRowProps extends ComponentProps<'div'> {\n traceId: string;\n}\n\n/**\n * One agent turn: the messages column on the left and the details column on the right. The whole\n * row is dimmed unless it is the first one in view, hovered, or its span is open in the side panel,\n * so the reader keeps track of which turn they are on without hovering.\n */\nexport function ThreadTraceRow({ traceId, className, children, ...props }: ThreadTraceRowProps) {\n const root = useThreadTrace();\n\n const selectedSpanId = root.selected?.traceId === traceId ? root.selected.spanId : undefined;\n const featuredSpanIds = root.highlight?.traceId === traceId ? root.highlight.spanIds : undefined;\n const revealSpanId = featuredSpanIds?.at(-1);\n const isActive = selectedSpanId !== undefined;\n const isCurrent = root.currentTraceId === traceId;\n const isExpanded = root.expandedTraceIds.has(traceId);\n\n // A long trace is clamped to the real height of its messages column (not a nominal row height),\n // so the timeline never dwarfs the turn it belongs to. The refs live here because the messages\n // and the timeline are sibling parts.\n const messages = useMeasuredAutoHeight<HTMLDivElement>();\n const timeline = useMeasuredAutoHeight<HTMLDivElement>();\n const detailsHeader = useMeasuredAutoHeight<HTMLDivElement>();\n\n // Which view the messages column shows (Messages / Feedback / Scores), one per row.\n const [tab, setTab] = useState<string>(THREAD_TRACE_MESSAGES_TAB);\n // The clamp budget is the height of the *Messages* view: a short Feedback or Scores view\n // must not squash the span tree next to it, so the last Messages height is kept while\n // another view is showing.\n const [messagesViewHeight, setMessagesViewHeight] = useState<number | null>(null);\n if (tab === THREAD_TRACE_MESSAGES_TAB && messages.height !== messagesViewHeight) {\n setMessagesViewHeight(messages.height);\n }\n\n const { highlightSpans: rootHighlightSpans, setTraceExpanded } = root;\n const highlightSpans = useCallback(\n (spanIds: string[]) => rootHighlightSpans(traceId, spanIds),\n [rootHighlightSpans, traceId],\n );\n const setExpanded = useCallback(\n (expanded: boolean) => setTraceExpanded(traceId, expanded),\n [setTraceExpanded, traceId],\n );\n\n const contextValue = useMemo<ThreadTraceRowContextValue>(\n () => ({\n traceId,\n isActive,\n isCurrent,\n isExpanded,\n selectedSpanId,\n featuredSpanIds,\n revealSpanId,\n highlightSpans,\n setExpanded,\n tab,\n setTab,\n messagesRef: messages.ref,\n timelineRef: timeline.ref,\n detailsHeaderRef: detailsHeader.ref,\n messagesHeight: messagesViewHeight,\n timelineHeight: timeline.height,\n detailsHeaderHeight: detailsHeader.height,\n }),\n [\n traceId,\n isActive,\n isCurrent,\n isExpanded,\n selectedSpanId,\n featuredSpanIds,\n revealSpanId,\n highlightSpans,\n setExpanded,\n tab,\n messages.ref,\n timeline.ref,\n detailsHeader.ref,\n messagesViewHeight,\n timeline.height,\n detailsHeader.height,\n ],\n );\n\n return (\n <ThreadTraceRowContext.Provider value={contextValue}>\n {/* Registers the row with the scroller so prepends of older turns keep the reading position.\n Rows measure their own columns, so they stay rendered off screen. */}\n <MessageScrollerItem messageId={traceId} className=\"[content-visibility:visible]\">\n <div\n data-slot=\"thread-trace-row\"\n className={cn(\n // Same fixed messages width as the trace panel; the details column takes the rest.\n 'group grid grid-cols-[minmax(0,1fr)_minmax(0,1fr)] border-b border-border transition-opacity hover:opacity-100',\n isActive || isCurrent ? 'opacity-100' : 'opacity-50',\n className,\n )}\n data-trace-id={traceId}\n data-active={isActive || undefined}\n {...props}\n >\n {children}\n </div>\n </MessageScrollerItem>\n </ThreadTraceRowContext.Provider>\n );\n}\n"],"names":["useThreadTrace","useMeasuredAutoHeight","useState","useCallback","useMemo","jsx","ThreadTraceRowContext","MessageScrollerItem","cn"],"mappings":";;;;;;;;;;;;AAUO,MAAM,yBAAA,GAA4B;AAWlC,SAAS,eAAe,EAAE,OAAA,EAAS,WAAW,QAAA,EAAU,GAAG,OAAM,EAAwB;AAC9F,EAAA,MAAM,OAAOA,uEAAA,EAAe;AAE5B,EAAA,MAAM,iBAAiB,IAAA,CAAK,QAAA,EAAU,YAAY,OAAA,GAAU,IAAA,CAAK,SAAS,MAAA,GAAS,MAAA;AACnF,EAAA,MAAM,kBAAkB,IAAA,CAAK,SAAA,EAAW,YAAY,OAAA,GAAU,IAAA,CAAK,UAAU,OAAA,GAAU,MAAA;AACvF,EAAA,MAAM,YAAA,GAAe,eAAA,EAAiB,EAAA,CAAG,EAAE,CAAA;AAC3C,EAAA,MAAM,WAAW,cAAA,KAAmB,MAAA;AACpC,EAAA,MAAM,SAAA,GAAY,KAAK,cAAA,KAAmB,OAAA;AAC1C,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,gBAAA,CAAiB,GAAA,CAAI,OAAO,CAAA;AAKpD,EAAA,MAAM,WAAWC,iDAAA,EAAsC;AACvD,EAAA,MAAM,WAAWA,iDAAA,EAAsC;AACvD,EAAA,MAAM,gBAAgBA,iDAAA,EAAsC;AAG5D,EAAA,MAAM,CAAC,GAAA,EAAK,MAAM,CAAA,GAAIC,eAAiB,yBAAyB,CAAA;AAIhE,EAAA,MAAM,CAAC,kBAAA,EAAoB,qBAAqB,CAAA,GAAIA,eAAwB,IAAI,CAAA;AAChF,EAAA,IAAI,GAAA,KAAQ,yBAAA,IAA6B,QAAA,CAAS,MAAA,KAAW,kBAAA,EAAoB;AAC/E,IAAA,qBAAA,CAAsB,SAAS,MAAM,CAAA;AAAA,EACvC;AAEA,EAAA,MAAM,EAAE,cAAA,EAAgB,kBAAA,EAAoB,gBAAA,EAAiB,GAAI,IAAA;AACjE,EAAA,MAAM,cAAA,GAAiBC,iBAAA;AAAA,IACrB,CAAC,OAAA,KAAsB,kBAAA,CAAmB,OAAA,EAAS,OAAO,CAAA;AAAA,IAC1D,CAAC,oBAAoB,OAAO;AAAA,GAC9B;AACA,EAAA,MAAM,WAAA,GAAcA,iBAAA;AAAA,IAClB,CAAC,QAAA,KAAsB,gBAAA,CAAiB,OAAA,EAAS,QAAQ,CAAA;AAAA,IACzD,CAAC,kBAAkB,OAAO;AAAA,GAC5B;AAEA,EAAA,MAAM,YAAA,GAAeC,aAAA;AAAA,IACnB,OAAO;AAAA,MACL,OAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA,cAAA;AAAA,MACA,eAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,GAAA;AAAA,MACA,MAAA;AAAA,MACA,aAAa,QAAA,CAAS,GAAA;AAAA,MACtB,aAAa,QAAA,CAAS,GAAA;AAAA,MACtB,kBAAkB,aAAA,CAAc,GAAA;AAAA,MAChC,cAAA,EAAgB,kBAAA;AAAA,MAChB,gBAAgB,QAAA,CAAS,MAAA;AAAA,MACzB,qBAAqB,aAAA,CAAc;AAAA,KACrC,CAAA;AAAA,IACA;AAAA,MACE,OAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA,cAAA;AAAA,MACA,eAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,GAAA;AAAA,MACA,QAAA,CAAS,GAAA;AAAA,MACT,QAAA,CAAS,GAAA;AAAA,MACT,aAAA,CAAc,GAAA;AAAA,MACd,kBAAA;AAAA,MACA,QAAA,CAAS,MAAA;AAAA,MACT,aAAA,CAAc;AAAA;AAChB,GACF;AAEA,EAAA,uBACEC,cAAA,CAACC,iFAAA,CAAsB,QAAA,EAAtB,EAA+B,KAAA,EAAO,YAAA,EAGrC,QAAA,kBAAAD,cAAA,CAACE,mCAAA,EAAA,EAAoB,SAAA,EAAW,OAAA,EAAS,SAAA,EAAU,8BAAA,EACjD,QAAA,kBAAAF,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,kBAAA;AAAA,MACV,SAAA,EAAWG,WAAA;AAAA;AAAA,QAET,gHAAA;AAAA,QACA,QAAA,IAAY,YAAY,aAAA,GAAgB,YAAA;AAAA,QACxC;AAAA,OACF;AAAA,MACA,eAAA,EAAe,OAAA;AAAA,MACf,eAAa,QAAA,IAAY,MAAA;AAAA,MACxB,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,KAEL,CAAA,EACF,CAAA;AAEJ;;;;;"}