@mastra/playground-ui 58.1.0-alpha.0 → 59.0.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 (594) hide show
  1. package/README.md +62 -0
  2. package/dist/{Header-BVnFQlzE.js → Header-hTHhO02b.js} +2 -2
  3. package/dist/{Header-BVnFQlzE.js.map → Header-hTHhO02b.js.map} +1 -1
  4. package/dist/{Header-CGjhJ0nQ.cjs → Header-y51Sfo3G.cjs} +2 -2
  5. package/dist/{Header-CGjhJ0nQ.cjs.map → Header-y51Sfo3G.cjs.map} +1 -1
  6. package/dist/{Txt-DTh3Pa_a.js → Txt-BP1SRHmL.js} +4 -10
  7. package/dist/Txt-BP1SRHmL.js.map +1 -0
  8. package/dist/{Txt-B4-2nLaI.cjs → Txt-DPmEpNbp.cjs} +4 -10
  9. package/dist/Txt-DPmEpNbp.cjs.map +1 -0
  10. package/dist/{ask-user-pPTuoPKI.cjs → ask-user-4pnmHbuC.cjs} +2 -2
  11. package/dist/{ask-user-pPTuoPKI.cjs.map → ask-user-4pnmHbuC.cjs.map} +1 -1
  12. package/dist/{ask-user-DtF4a9Vr.js → ask-user-CFcQN_7m.js} +2 -2
  13. package/dist/{ask-user-DtF4a9Vr.js.map → ask-user-CFcQN_7m.js.map} +1 -1
  14. package/dist/{chat-notification-C4P2InUX.js → chat-notification-BI_WRUvG.js} +2 -2
  15. package/dist/{chat-notification-C4P2InUX.js.map → chat-notification-BI_WRUvG.js.map} +1 -1
  16. package/dist/{chat-notification-HP18KxlS.cjs → chat-notification-Dc7jwULm.cjs} +2 -2
  17. package/dist/{chat-notification-HP18KxlS.cjs.map → chat-notification-Dc7jwULm.cjs.map} +1 -1
  18. package/dist/{chat-signal-BP9RN6Rh.cjs → chat-signal-BodewV33.cjs} +3 -3
  19. package/dist/{chat-signal-BP9RN6Rh.cjs.map → chat-signal-BodewV33.cjs.map} +1 -1
  20. package/dist/{chat-signal-CQnmFp3V.js → chat-signal-D0zw80bU.js} +3 -3
  21. package/dist/{chat-signal-CQnmFp3V.js.map → chat-signal-D0zw80bU.js.map} +1 -1
  22. package/dist/{combobox-BoSB-muq.cjs → combobox-B19HJqE-.cjs} +2 -2
  23. package/dist/{combobox-BoSB-muq.cjs.map → combobox-B19HJqE-.cjs.map} +1 -1
  24. package/dist/{combobox-Cd0JPUQW.js → combobox-D_kmwSKS.js} +2 -2
  25. package/dist/{combobox-Cd0JPUQW.js.map → combobox-D_kmwSKS.js.map} +1 -1
  26. package/dist/components/Avatar.cjs.js +1 -1
  27. package/dist/components/Avatar.es.js +1 -1
  28. package/dist/components/ClampedText.cjs.js +1 -1
  29. package/dist/components/ClampedText.es.js +1 -1
  30. package/dist/components/Combobox.cjs.js +1 -1
  31. package/dist/components/Combobox.es.js +1 -1
  32. package/dist/components/Comment.cjs.js +2 -2
  33. package/dist/components/Comment.es.js +2 -2
  34. package/dist/components/CompactNumber.cjs.js +24 -0
  35. package/dist/components/CompactNumber.cjs.js.map +1 -0
  36. package/dist/components/CompactNumber.d.ts +2 -0
  37. package/dist/components/CompactNumber.es.js +20 -0
  38. package/dist/components/CompactNumber.es.js.map +1 -0
  39. package/dist/components/DataCodeSection.cjs.js +1 -1
  40. package/dist/components/DataCodeSection.es.js +1 -1
  41. package/dist/components/DataList.cjs.js +8 -14
  42. package/dist/components/DataList.cjs.js.map +1 -1
  43. package/dist/components/DataList.es.js +8 -14
  44. package/dist/components/DataList.es.js.map +1 -1
  45. package/dist/components/DataPanel.cjs.js +1 -1
  46. package/dist/components/DataPanel.es.js +1 -1
  47. package/dist/components/DateRangeTimeline.cjs.js +1 -1
  48. package/dist/components/DateRangeTimeline.es.js +1 -1
  49. package/dist/components/DateTimePicker.cjs.js +1 -1
  50. package/dist/components/DateTimePicker.es.js +1 -1
  51. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  52. package/dist/components/DateTimeRangePicker.es.js +1 -1
  53. package/dist/components/Entity.cjs.js +1 -1
  54. package/dist/components/Entity.es.js +1 -1
  55. package/dist/components/EntityHeader.cjs.js +1 -1
  56. package/dist/components/EntityHeader.es.js +1 -1
  57. package/dist/components/Entry.cjs.js +1 -1
  58. package/dist/components/Entry.es.js +1 -1
  59. package/dist/components/EnvironmentVariablesEditor.cjs.js +3 -3
  60. package/dist/components/EnvironmentVariablesEditor.es.js +3 -3
  61. package/dist/components/FilterBar.cjs.js +1 -1
  62. package/dist/components/FilterBar.es.js +1 -1
  63. package/dist/components/FormFieldBlocks.cjs.js +4 -4
  64. package/dist/components/FormFieldBlocks.es.js +4 -4
  65. package/dist/components/Header.cjs.js +1 -1
  66. package/dist/components/Header.es.js +1 -1
  67. package/dist/components/InlineCode.cjs.js +10 -0
  68. package/dist/components/InlineCode.cjs.js.map +1 -0
  69. package/dist/components/InlineCode.d.ts +2 -0
  70. package/dist/components/InlineCode.es.js +2 -0
  71. package/dist/components/InlineCode.es.js.map +1 -0
  72. package/dist/components/ItemList.cjs.js +4 -16
  73. package/dist/components/ItemList.cjs.js.map +1 -1
  74. package/dist/components/ItemList.es.js +4 -16
  75. package/dist/components/ItemList.es.js.map +1 -1
  76. package/dist/components/JSONSchemaForm.cjs.js +2 -2
  77. package/dist/components/JSONSchemaForm.es.js +2 -2
  78. package/dist/components/ListSearch.cjs.js +1 -1
  79. package/dist/components/ListSearch.es.js +1 -1
  80. package/dist/components/LogsDataList.cjs.js +2 -2
  81. package/dist/components/LogsDataList.es.js +2 -2
  82. package/dist/components/Message.cjs.js +4 -5
  83. package/dist/components/Message.cjs.js.map +1 -1
  84. package/dist/components/Message.es.js +4 -5
  85. package/dist/components/Message.es.js.map +1 -1
  86. package/dist/components/PageLayout.cjs.js +1 -1
  87. package/dist/components/PageLayout.es.js +1 -1
  88. package/dist/components/PropertyFilter.cjs.js +1 -1
  89. package/dist/components/PropertyFilter.es.js +1 -1
  90. package/dist/components/RelativeTimestamp.cjs.js +119 -0
  91. package/dist/components/RelativeTimestamp.cjs.js.map +1 -0
  92. package/dist/components/RelativeTimestamp.d.ts +2 -0
  93. package/dist/components/RelativeTimestamp.es.js +115 -0
  94. package/dist/components/RelativeTimestamp.es.js.map +1 -0
  95. package/dist/components/Section.cjs.js +1 -1
  96. package/dist/components/Section.es.js +1 -1
  97. package/dist/components/SettingsRow.cjs.js +1 -1
  98. package/dist/components/SettingsRow.es.js +1 -1
  99. package/dist/components/SideDialog.cjs.js +1 -1
  100. package/dist/components/SideDialog.es.js +1 -1
  101. package/dist/components/StatusIndicators.cjs.js +21 -14
  102. package/dist/components/StatusIndicators.cjs.js.map +1 -1
  103. package/dist/components/StatusIndicators.es.js +21 -15
  104. package/dist/components/StatusIndicators.es.js.map +1 -1
  105. package/dist/components/Table.cjs.js +3 -21
  106. package/dist/components/Table.cjs.js.map +1 -1
  107. package/dist/components/Table.es.js +3 -21
  108. package/dist/components/Table.es.js.map +1 -1
  109. package/dist/components/ThreadList.cjs.js +1 -1
  110. package/dist/components/ThreadList.es.js +1 -1
  111. package/dist/components/Truncate.cjs.js +1 -1
  112. package/dist/components/Truncate.es.js +1 -1
  113. package/dist/components/Txt.cjs.js +1 -1
  114. package/dist/components/Txt.es.js +1 -1
  115. package/dist/components/Workflow.cjs.js +8 -12
  116. package/dist/components/Workflow.cjs.js.map +1 -1
  117. package/dist/components/Workflow.es.js +8 -12
  118. package/dist/components/Workflow.es.js.map +1 -1
  119. package/dist/components/ai/ask-user.cjs.js +1 -1
  120. package/dist/components/ai/ask-user.es.js +1 -1
  121. package/dist/components/ai/chat-event.cjs.js +3 -3
  122. package/dist/components/ai/chat-event.es.js +4 -4
  123. package/dist/components/ai/plan.cjs.js +2 -2
  124. package/dist/components/ai/plan.cjs.js.map +1 -1
  125. package/dist/components/ai/plan.es.js +2 -2
  126. package/dist/components/ai/plan.es.js.map +1 -1
  127. package/dist/components/ai/tool-call.cjs.js +7 -9
  128. package/dist/components/ai/tool-call.cjs.js.map +1 -1
  129. package/dist/components/ai/tool-call.es.js +8 -10
  130. package/dist/components/ai/tool-call.es.js.map +1 -1
  131. package/dist/{data-code-section-Cth9zVkj.js → data-code-section-BKrCkj90.js} +2 -2
  132. package/dist/{data-code-section-Cth9zVkj.js.map → data-code-section-BKrCkj90.js.map} +1 -1
  133. package/dist/{data-code-section-DE4AgaTU.cjs → data-code-section-C9z94ytx.cjs} +2 -2
  134. package/dist/{data-code-section-DE4AgaTU.cjs.map → data-code-section-C9z94ytx.cjs.map} +1 -1
  135. package/dist/{data-list-DisTjDHP.js → data-list-5-nRJbEO.js} +3 -3
  136. package/dist/{data-list-DisTjDHP.js.map → data-list-5-nRJbEO.js.map} +1 -1
  137. package/dist/{data-list-PwFpP_mo.cjs → data-list-RI8c32dk.cjs} +3 -3
  138. package/dist/{data-list-PwFpP_mo.cjs.map → data-list-RI8c32dk.cjs.map} +1 -1
  139. package/dist/{data-list-skeleton-DAfM8AjW.js → data-list-skeleton-BrSh9Y_3.js} +2 -2
  140. package/dist/{data-list-skeleton-DAfM8AjW.js.map → data-list-skeleton-BrSh9Y_3.js.map} +1 -1
  141. package/dist/{data-list-skeleton-CjwR0o3w.cjs → data-list-skeleton-CgbWqYky.cjs} +2 -2
  142. package/dist/{data-list-skeleton-CjwR0o3w.cjs.map → data-list-skeleton-CgbWqYky.cjs.map} +1 -1
  143. package/dist/{data-list-spacer-DEcgVGFM.cjs → data-list-spacer-1OqlC7WX.cjs} +2 -2
  144. package/dist/{data-list-spacer-DEcgVGFM.cjs.map → data-list-spacer-1OqlC7WX.cjs.map} +1 -1
  145. package/dist/{data-list-spacer-BmorAN0V.js → data-list-spacer-D3Rn1evn.js} +2 -2
  146. package/dist/{data-list-spacer-BmorAN0V.js.map → data-list-spacer-D3Rn1evn.js.map} +1 -1
  147. package/dist/{data-list-top-DpbOA3uw.js → data-list-top-B-AopfvE.js} +13 -21
  148. package/dist/data-list-top-B-AopfvE.js.map +1 -0
  149. package/dist/{data-list-top-WGUY167p.cjs → data-list-top-DFnudSA_.cjs} +13 -21
  150. package/dist/data-list-top-DFnudSA_.cjs.map +1 -0
  151. package/dist/{data-panel-BQVTKo86.js → data-panel-BWgExbHs.js} +2 -2
  152. package/dist/{data-panel-BQVTKo86.js.map → data-panel-BWgExbHs.js.map} +1 -1
  153. package/dist/{data-panel-XPXrhYJI.cjs → data-panel-C_BqhzeL.cjs} +2 -2
  154. package/dist/{data-panel-XPXrhYJI.cjs.map → data-panel-C_BqhzeL.cjs.map} +1 -1
  155. package/dist/{date-time-range-picker-C-t3Kdpk.js → date-time-range-picker-Bnviv7s-.js} +2 -2
  156. package/dist/{date-time-range-picker-C-t3Kdpk.js.map → date-time-range-picker-Bnviv7s-.js.map} +1 -1
  157. package/dist/{date-time-range-picker-BCzvSYx3.cjs → date-time-range-picker-sT5qAW-_.cjs} +2 -2
  158. package/dist/{date-time-range-picker-BCzvSYx3.cjs.map → date-time-range-picker-sT5qAW-_.cjs.map} +1 -1
  159. package/dist/domains/capabilities/hooks/use-feedback-available.cjs.js +16 -0
  160. package/dist/domains/capabilities/hooks/use-feedback-available.cjs.js.map +1 -0
  161. package/dist/domains/capabilities/hooks/use-feedback-available.d.ts +2 -0
  162. package/dist/domains/capabilities/hooks/use-feedback-available.es.js +12 -0
  163. package/dist/domains/capabilities/hooks/use-feedback-available.es.js.map +1 -0
  164. package/dist/domains/capabilities/hooks/use-observability-capabilities.cjs.js +20 -0
  165. package/dist/domains/capabilities/hooks/use-observability-capabilities.cjs.js.map +1 -0
  166. package/dist/domains/capabilities/hooks/use-observability-capabilities.d.ts +2 -0
  167. package/dist/domains/capabilities/hooks/use-observability-capabilities.es.js +16 -0
  168. package/dist/domains/capabilities/hooks/use-observability-capabilities.es.js.map +1 -0
  169. package/dist/domains/capabilities/hooks/use-trace-query-available.cjs.js +16 -0
  170. package/dist/domains/capabilities/hooks/use-trace-query-available.cjs.js.map +1 -0
  171. package/dist/domains/capabilities/hooks/use-trace-query-available.d.ts +2 -0
  172. package/dist/domains/capabilities/hooks/use-trace-query-available.es.js +12 -0
  173. package/dist/domains/capabilities/hooks/use-trace-query-available.es.js.map +1 -0
  174. package/dist/domains/capabilities/hooks.cjs.js +14 -0
  175. package/dist/domains/capabilities/hooks.cjs.js.map +1 -0
  176. package/dist/domains/capabilities/hooks.d.ts +2 -0
  177. package/dist/domains/capabilities/hooks.es.js +4 -0
  178. package/dist/domains/capabilities/hooks.es.js.map +1 -0
  179. package/dist/domains/capabilities.cjs.js +14 -0
  180. package/dist/domains/capabilities.cjs.js.map +1 -0
  181. package/dist/domains/capabilities.d.ts +2 -0
  182. package/dist/domains/capabilities.es.js +4 -0
  183. package/dist/domains/capabilities.es.js.map +1 -0
  184. package/dist/domains/chat/attachments/attachment-kind.es.js +1 -1
  185. package/dist/domains/chat/components/badge-wrapper.cjs.js +1 -1
  186. package/dist/domains/chat/components/badge-wrapper.es.js +1 -1
  187. package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +1 -1
  188. package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +1 -1
  189. package/dist/domains/chat/components/section-label.cjs.js +1 -1
  190. package/dist/domains/chat/components/section-label.es.js +1 -1
  191. package/dist/domains/chat/messages/notification-signal-notice.cjs.js +1 -1
  192. package/dist/domains/chat/messages/notification-signal-notice.es.js +1 -1
  193. package/dist/domains/chat/messages/reasoning-streaming-line.cjs.js +1 -1
  194. package/dist/domains/chat/messages/reasoning-streaming-line.es.js +1 -1
  195. package/dist/domains/chat/messages/reasoning.cjs.js +4 -3
  196. package/dist/domains/chat/messages/reasoning.cjs.js.map +1 -1
  197. package/dist/domains/chat/messages/reasoning.es.js +4 -3
  198. package/dist/domains/chat/messages/reasoning.es.js.map +1 -1
  199. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +2 -2
  200. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js.map +1 -1
  201. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +2 -2
  202. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js.map +1 -1
  203. package/dist/domains/chat/messages/renderers/user-file-part-renderer.es.js +1 -1
  204. package/dist/domains/chat/messages/signal-badge.cjs.js +1 -1
  205. package/dist/domains/chat/messages/signal-badge.es.js +1 -1
  206. package/dist/domains/chat/messages/system-reminder-badge.cjs.js +1 -1
  207. package/dist/domains/chat/messages/system-reminder-badge.cjs.js.map +1 -1
  208. package/dist/domains/chat/messages/system-reminder-badge.es.js +1 -1
  209. package/dist/domains/chat/messages/system-reminder-badge.es.js.map +1 -1
  210. package/dist/domains/chat/messages/tripwire-notice.cjs.js +1 -1
  211. package/dist/domains/chat/messages/tripwire-notice.cjs.js.map +1 -1
  212. package/dist/domains/chat/messages/tripwire-notice.es.js +1 -1
  213. package/dist/domains/chat/messages/tripwire-notice.es.js.map +1 -1
  214. package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
  215. package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
  216. package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +3 -3
  217. package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js.map +1 -1
  218. package/dist/domains/chat/tools/badges/code-mode-badge.es.js +3 -3
  219. package/dist/domains/chat/tools/badges/code-mode-badge.es.js.map +1 -1
  220. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +5 -3
  221. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js.map +1 -1
  222. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +5 -3
  223. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js.map +1 -1
  224. package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +11 -8
  225. package/dist/domains/chat/tools/badges/observation-renderer.cjs.js.map +1 -1
  226. package/dist/domains/chat/tools/badges/observation-renderer.es.js +11 -8
  227. package/dist/domains/chat/tools/badges/observation-renderer.es.js.map +1 -1
  228. package/dist/domains/logs/components/log-data-panel.cjs.js +3 -6
  229. package/dist/domains/logs/components/log-data-panel.cjs.js.map +1 -1
  230. package/dist/domains/logs/components/log-data-panel.es.js +3 -6
  231. package/dist/domains/logs/components/log-data-panel.es.js.map +1 -1
  232. package/dist/domains/logs/components/logs-list-view.cjs.js +2 -2
  233. package/dist/domains/logs/components/logs-list-view.es.js +2 -2
  234. package/dist/domains/logs/components/no-logs-info.cjs.js +3 -4
  235. package/dist/domains/logs/components/no-logs-info.cjs.js.map +1 -1
  236. package/dist/domains/logs/components/no-logs-info.es.js +3 -4
  237. package/dist/domains/logs/components/no-logs-info.es.js.map +1 -1
  238. package/dist/domains/memory/components/flame-graph.cjs.js +7 -5
  239. package/dist/domains/memory/components/flame-graph.cjs.js.map +1 -1
  240. package/dist/domains/memory/components/flame-graph.es.js +8 -6
  241. package/dist/domains/memory/components/flame-graph.es.js.map +1 -1
  242. package/dist/domains/memory/components/memory-studio-panel.cjs.js +1 -1
  243. package/dist/domains/memory/components/memory-studio-panel.es.js +1 -1
  244. package/dist/domains/memory/components/observation-detail-view.cjs.js +4 -5
  245. package/dist/domains/memory/components/observation-detail-view.cjs.js.map +1 -1
  246. package/dist/domains/memory/components/observation-detail-view.es.js +4 -5
  247. package/dist/domains/memory/components/observation-detail-view.es.js.map +1 -1
  248. package/dist/domains/memory/components/thread-context-progress.cjs.js +1 -1
  249. package/dist/domains/memory/components/thread-context-progress.cjs.js.map +1 -1
  250. package/dist/domains/memory/components/thread-context-progress.es.js +1 -1
  251. package/dist/domains/memory/components/thread-context-progress.es.js.map +1 -1
  252. package/dist/domains/memory/lib/timeline.cjs.js +0 -9
  253. package/dist/domains/memory/lib/timeline.cjs.js.map +1 -1
  254. package/dist/domains/memory/lib/timeline.es.js +1 -9
  255. package/dist/domains/memory/lib/timeline.es.js.map +1 -1
  256. package/dist/domains/metrics/components/bar-list.cjs.js +4 -4
  257. package/dist/domains/metrics/components/bar-list.cjs.js.map +1 -1
  258. package/dist/domains/metrics/components/bar-list.es.js +4 -4
  259. package/dist/domains/metrics/components/bar-list.es.js.map +1 -1
  260. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  261. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  262. package/dist/domains/metrics/components/kpi-card-view.cjs.js.map +1 -1
  263. package/dist/domains/metrics/components/kpi-card-view.es.js.map +1 -1
  264. package/dist/domains/metrics/components/memory-card-view.cjs.js +6 -5
  265. package/dist/domains/metrics/components/memory-card-view.cjs.js.map +1 -1
  266. package/dist/domains/metrics/components/memory-card-view.es.js +5 -4
  267. package/dist/domains/metrics/components/memory-card-view.es.js.map +1 -1
  268. package/dist/domains/metrics/components/metrics-utils.cjs.js +0 -15
  269. package/dist/domains/metrics/components/metrics-utils.cjs.js.map +1 -1
  270. package/dist/domains/metrics/components/metrics-utils.es.js +1 -14
  271. package/dist/domains/metrics/components/metrics-utils.es.js.map +1 -1
  272. package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js +5 -4
  273. package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js.map +1 -1
  274. package/dist/domains/metrics/components/model-usage-cost-card-view.es.js +3 -2
  275. package/dist/domains/metrics/components/model-usage-cost-card-view.es.js.map +1 -1
  276. package/dist/domains/metrics/components/scores-card-view.cjs.js +1 -1
  277. package/dist/domains/metrics/components/scores-card-view.es.js +1 -1
  278. package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js +4 -3
  279. package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js.map +1 -1
  280. package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js +4 -3
  281. package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js.map +1 -1
  282. package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js +3 -2
  283. package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js.map +1 -1
  284. package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js +3 -2
  285. package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js.map +1 -1
  286. package/dist/domains/metrics/components/traces-volume-card-view.cjs.js +3 -2
  287. package/dist/domains/metrics/components/traces-volume-card-view.cjs.js.map +1 -1
  288. package/dist/domains/metrics/components/traces-volume-card-view.es.js +4 -3
  289. package/dist/domains/metrics/components/traces-volume-card-view.es.js.map +1 -1
  290. package/dist/domains/metrics/components.cjs.js +0 -2
  291. package/dist/domains/metrics/components.cjs.js.map +1 -1
  292. package/dist/domains/metrics/components.es.js +1 -1
  293. package/dist/domains/metrics/hooks/use-metrics.cjs.js +3 -3
  294. package/dist/domains/metrics/hooks/use-metrics.cjs.js.map +1 -1
  295. package/dist/domains/metrics/hooks/use-metrics.es.js +3 -3
  296. package/dist/domains/metrics/hooks/use-metrics.es.js.map +1 -1
  297. package/dist/domains/metrics/hooks/use-model-usage-cost-metrics.cjs.js +5 -5
  298. package/dist/domains/metrics/hooks/use-model-usage-cost-metrics.cjs.js.map +1 -1
  299. package/dist/domains/metrics/hooks/use-model-usage-cost-metrics.es.js +5 -5
  300. package/dist/domains/metrics/hooks/use-model-usage-cost-metrics.es.js.map +1 -1
  301. package/dist/domains/metrics/hooks/use-scores-metrics.cjs.js +6 -7
  302. package/dist/domains/metrics/hooks/use-scores-metrics.cjs.js.map +1 -1
  303. package/dist/domains/metrics/hooks/use-scores-metrics.es.js +6 -7
  304. package/dist/domains/metrics/hooks/use-scores-metrics.es.js.map +1 -1
  305. package/dist/domains/metrics/metrics-interval.cjs.js +4 -2
  306. package/dist/domains/metrics/metrics-interval.cjs.js.map +1 -1
  307. package/dist/domains/metrics/metrics-interval.es.js +4 -2
  308. package/dist/domains/metrics/metrics-interval.es.js.map +1 -1
  309. package/dist/domains/metrics.cjs.js +0 -2
  310. package/dist/domains/metrics.cjs.js.map +1 -1
  311. package/dist/domains/metrics.es.js +1 -1
  312. package/dist/domains/traces/components/no-traces-info.cjs.js +3 -4
  313. package/dist/domains/traces/components/no-traces-info.cjs.js.map +1 -1
  314. package/dist/domains/traces/components/no-traces-info.es.js +3 -4
  315. package/dist/domains/traces/components/no-traces-info.es.js.map +1 -1
  316. package/dist/domains/traces/components/span-data-panel-view.cjs.js +1 -1
  317. package/dist/domains/traces/components/span-data-panel-view.es.js +1 -1
  318. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +1 -1
  319. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +1 -1
  320. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
  321. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
  322. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +3 -2
  323. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js.map +1 -1
  324. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +3 -2
  325. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js.map +1 -1
  326. package/dist/domains/traces/components/span-payload/span-payload-json.cjs.js +1 -1
  327. package/dist/domains/traces/components/span-payload/span-payload-json.cjs.js.map +1 -1
  328. package/dist/domains/traces/components/span-payload/span-payload-json.es.js +1 -1
  329. package/dist/domains/traces/components/span-payload/span-payload-json.es.js.map +1 -1
  330. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +1 -1
  331. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +1 -1
  332. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +1 -1
  333. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +1 -1
  334. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
  335. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
  336. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +2 -2
  337. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +2 -2
  338. package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js +3 -2
  339. package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js.map +1 -1
  340. package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +3 -2
  341. package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js.map +1 -1
  342. package/dist/domains/traces/components/span-summary-description.cjs.js +6 -4
  343. package/dist/domains/traces/components/span-summary-description.cjs.js.map +1 -1
  344. package/dist/domains/traces/components/span-summary-description.es.js +7 -5
  345. package/dist/domains/traces/components/span-summary-description.es.js.map +1 -1
  346. package/dist/domains/traces/components/span-timeline-row.cjs.js +3 -4
  347. package/dist/domains/traces/components/span-timeline-row.cjs.js.map +1 -1
  348. package/dist/domains/traces/components/span-timeline-row.es.js +3 -4
  349. package/dist/domains/traces/components/span-timeline-row.es.js.map +1 -1
  350. package/dist/domains/traces/components/span-timing-hover-card.cjs.js +6 -11
  351. package/dist/domains/traces/components/span-timing-hover-card.cjs.js.map +1 -1
  352. package/dist/domains/traces/components/span-timing-hover-card.es.js +6 -11
  353. package/dist/domains/traces/components/span-timing-hover-card.es.js.map +1 -1
  354. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
  355. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
  356. package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +1 -1
  357. package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +1 -1
  358. package/dist/domains/traces/components/timeline-timing-col.cjs.js +3 -4
  359. package/dist/domains/traces/components/timeline-timing-col.cjs.js.map +1 -1
  360. package/dist/domains/traces/components/timeline-timing-col.es.js +3 -4
  361. package/dist/domains/traces/components/timeline-timing-col.es.js.map +1 -1
  362. package/dist/domains/traces/components/trace-columns-menu.cjs.js +21 -18
  363. package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
  364. package/dist/domains/traces/components/trace-columns-menu.es.js +21 -18
  365. package/dist/domains/traces/components/trace-columns-menu.es.js.map +1 -1
  366. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +2 -2
  367. package/dist/domains/traces/components/trace-data-panel-view.es.js +2 -2
  368. package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
  369. package/dist/domains/traces/components/trace-id-button.es.js +1 -1
  370. package/dist/domains/traces/components/trace-span-timeline.cjs.js +10 -4
  371. package/dist/domains/traces/components/trace-span-timeline.cjs.js.map +1 -1
  372. package/dist/domains/traces/components/trace-span-timeline.es.js +10 -4
  373. package/dist/domains/traces/components/trace-span-timeline.es.js.map +1 -1
  374. package/dist/domains/traces/components/trace-span-tree.cjs.js +3 -4
  375. package/dist/domains/traces/components/trace-span-tree.cjs.js.map +1 -1
  376. package/dist/domains/traces/components/trace-span-tree.es.js +3 -4
  377. package/dist/domains/traces/components/trace-span-tree.es.js.map +1 -1
  378. package/dist/domains/traces/components/trace-summary-description.cjs.js +13 -10
  379. package/dist/domains/traces/components/trace-summary-description.cjs.js.map +1 -1
  380. package/dist/domains/traces/components/trace-summary-description.es.js +13 -10
  381. package/dist/domains/traces/components/trace-summary-description.es.js.map +1 -1
  382. package/dist/domains/traces/components/trace-time-range-chip.cjs.js +1 -1
  383. package/dist/domains/traces/components/trace-time-range-chip.es.js +1 -1
  384. package/dist/domains/traces/components/traces-list-view.cjs.js +12 -10
  385. package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
  386. package/dist/domains/traces/components/traces-list-view.es.js +12 -10
  387. package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
  388. package/dist/domains/traces/components/traces-page-skeleton.cjs.js +1 -1
  389. package/dist/domains/traces/components/traces-page-skeleton.es.js +1 -1
  390. package/dist/domains/traces/hooks/use-branch.cjs.js +0 -1
  391. package/dist/domains/traces/hooks/use-branch.cjs.js.map +1 -1
  392. package/dist/domains/traces/hooks/use-branch.es.js +0 -1
  393. package/dist/domains/traces/hooks/use-branch.es.js.map +1 -1
  394. package/dist/domains/traces/hooks/use-trace-light-spans.cjs.js +0 -1
  395. package/dist/domains/traces/hooks/use-trace-light-spans.cjs.js.map +1 -1
  396. package/dist/domains/traces/hooks/use-trace-light-spans.es.js +0 -1
  397. package/dist/domains/traces/hooks/use-trace-light-spans.es.js.map +1 -1
  398. package/dist/domains/traces/hooks/use-trace-query.cjs.js +63 -3
  399. package/dist/domains/traces/hooks/use-trace-query.cjs.js.map +1 -1
  400. package/dist/domains/traces/hooks/use-trace-query.es.js +61 -4
  401. package/dist/domains/traces/hooks/use-trace-query.es.js.map +1 -1
  402. package/dist/domains/traces/hooks/use-trace-search.cjs.js +0 -1
  403. package/dist/domains/traces/hooks/use-trace-search.cjs.js.map +1 -1
  404. package/dist/domains/traces/hooks/use-trace-search.es.js +0 -1
  405. package/dist/domains/traces/hooks/use-trace-search.es.js.map +1 -1
  406. package/dist/domains/traces/hooks/use-trace-spans.cjs.js +0 -1
  407. package/dist/domains/traces/hooks/use-trace-spans.cjs.js.map +1 -1
  408. package/dist/domains/traces/hooks/use-trace-spans.es.js +0 -1
  409. package/dist/domains/traces/hooks/use-trace-spans.es.js.map +1 -1
  410. package/dist/domains/traces/hooks/use-traces-list-source.cjs.js +42 -0
  411. package/dist/domains/traces/hooks/use-traces-list-source.cjs.js.map +1 -0
  412. package/dist/domains/traces/hooks/use-traces-list-source.d.ts +2 -0
  413. package/dist/domains/traces/hooks/use-traces-list-source.es.js +38 -0
  414. package/dist/domains/traces/hooks/use-traces-list-source.es.js.map +1 -0
  415. package/dist/domains/traces/hooks.cjs.js +2 -0
  416. package/dist/domains/traces/hooks.cjs.js.map +1 -1
  417. package/dist/domains/traces/hooks.es.js +1 -0
  418. package/dist/domains/traces/hooks.es.js.map +1 -1
  419. package/dist/domains/traces/trace-filters.cjs.js +10 -1
  420. package/dist/domains/traces/trace-filters.cjs.js.map +1 -1
  421. package/dist/domains/traces/trace-filters.es.js +10 -1
  422. package/dist/domains/traces/trace-filters.es.js.map +1 -1
  423. package/dist/domains/traces/utils/span-utils.cjs.js +4 -36
  424. package/dist/domains/traces/utils/span-utils.cjs.js.map +1 -1
  425. package/dist/domains/traces/utils/span-utils.es.js +4 -32
  426. package/dist/domains/traces/utils/span-utils.es.js.map +1 -1
  427. package/dist/domains/traces/utils.cjs.js +1 -1
  428. package/dist/domains/traces/utils.es.js +1 -1
  429. package/dist/domains/traces.cjs.js +3 -1
  430. package/dist/domains/traces.cjs.js.map +1 -1
  431. package/dist/domains/traces.es.js +2 -1
  432. package/dist/domains/traces.es.js.map +1 -1
  433. package/dist/ee/signals/components/entity-index-list.cjs.js +1 -1
  434. package/dist/ee/signals/components/entity-index-list.es.js +1 -1
  435. package/dist/ee/signals/components/entity-index-model.cjs.js +3 -2
  436. package/dist/ee/signals/components/entity-index-model.cjs.js.map +1 -1
  437. package/dist/ee/signals/components/entity-index-model.es.js +3 -2
  438. package/dist/ee/signals/components/entity-index-model.es.js.map +1 -1
  439. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +2 -2
  440. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +2 -2
  441. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +2 -2
  442. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +2 -2
  443. package/dist/ee/signals/signal-formatting.cjs.js +6 -34
  444. package/dist/ee/signals/signal-formatting.cjs.js.map +1 -1
  445. package/dist/ee/signals/signal-formatting.es.js +6 -34
  446. package/dist/ee/signals/signal-formatting.es.js.map +1 -1
  447. package/dist/ee/signals/snapshot-timeline-data.cjs.js +1 -1
  448. package/dist/ee/signals/snapshot-timeline-data.cjs.js.map +1 -1
  449. package/dist/ee/signals/snapshot-timeline-data.es.js +1 -1
  450. package/dist/ee/signals/snapshot-timeline-data.es.js.map +1 -1
  451. package/dist/ee/signals/view-mode-tab.cjs.js +1 -1
  452. package/dist/ee/signals/view-mode-tab.es.js +1 -1
  453. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +1 -1
  454. package/dist/ee/topics/components/topic-trace-summary-list.es.js +1 -1
  455. package/dist/field-block-error-msg-Y0fi0HUC.js +22 -0
  456. package/dist/field-block-error-msg-Y0fi0HUC.js.map +1 -0
  457. package/dist/field-block-error-msg-oudJz2Hx.cjs +24 -0
  458. package/dist/field-block-error-msg-oudJz2Hx.cjs.map +1 -0
  459. package/dist/{field-error-id-DyWx33Fu.js → field-error-id-DD7OARLU.js} +2 -13
  460. package/dist/field-error-id-DD7OARLU.js.map +1 -0
  461. package/dist/{field-error-id-6EfqmQ4C.cjs → field-error-id-V_WejsRL.cjs} +4 -15
  462. package/dist/field-error-id-V_WejsRL.cjs.map +1 -0
  463. package/dist/hooks/use-elapsed-time.cjs.js +25 -0
  464. package/dist/hooks/use-elapsed-time.cjs.js.map +1 -0
  465. package/dist/hooks/use-elapsed-time.d.ts +2 -0
  466. package/dist/hooks/use-elapsed-time.es.js +21 -0
  467. package/dist/hooks/use-elapsed-time.es.js.map +1 -0
  468. package/dist/inline-code-BW6W121s.js +13 -0
  469. package/dist/inline-code-BW6W121s.js.map +1 -0
  470. package/dist/inline-code-CSwG-x8D.cjs +15 -0
  471. package/dist/inline-code-CSwG-x8D.cjs.map +1 -0
  472. package/dist/layout/tabbed-container.cjs.js +3 -3
  473. package/dist/layout/tabbed-container.es.js +3 -3
  474. package/dist/{list-search-S1mco9Bl.cjs → list-search-CsYQX8qR.cjs} +2 -2
  475. package/dist/{list-search-S1mco9Bl.cjs.map → list-search-CsYQX8qR.cjs.map} +1 -1
  476. package/dist/{list-search-FJ1O5F3S.js → list-search-D1FD8FCL.js} +2 -2
  477. package/dist/{list-search-FJ1O5F3S.js.map → list-search-D1FD8FCL.js.map} +1 -1
  478. package/dist/{logs-data-list-CgDcNIvS.js → logs-data-list-BKE5vYZR.js} +3 -3
  479. package/dist/{logs-data-list-CgDcNIvS.js.map → logs-data-list-BKE5vYZR.js.map} +1 -1
  480. package/dist/{logs-data-list-BHvJOeec.cjs → logs-data-list-lJK0yGYj.cjs} +3 -3
  481. package/dist/{logs-data-list-BHvJOeec.cjs.map → logs-data-list-lJK0yGYj.cjs.map} +1 -1
  482. package/dist/new/settings.cjs.js +2 -2
  483. package/dist/new/settings.es.js +2 -2
  484. package/dist/{schemes-C9EhSOkB.js → schemes-CGK3gQJ6.js} +2 -2
  485. package/dist/{schemes-C9EhSOkB.js.map → schemes-CGK3gQJ6.js.map} +1 -1
  486. package/dist/{search-field-block-fU3tStmB.js → search-field-block-Dj2KJyjQ.js} +2 -2
  487. package/dist/{search-field-block-fU3tStmB.js.map → search-field-block-Dj2KJyjQ.js.map} +1 -1
  488. package/dist/{search-field-block-7-ufp4uG.cjs → search-field-block-K_e_S9WY.cjs} +2 -2
  489. package/dist/{search-field-block-7-ufp4uG.cjs.map → search-field-block-K_e_S9WY.cjs.map} +1 -1
  490. package/dist/{section-B9OLuEq3.js → section-Bi0g7cn6.js} +2 -2
  491. package/dist/{section-B9OLuEq3.js.map → section-Bi0g7cn6.js.map} +1 -1
  492. package/dist/{section-CTihfzmc.cjs → section-p9vCSmPq.cjs} +2 -2
  493. package/dist/{section-CTihfzmc.cjs.map → section-p9vCSmPq.cjs.map} +1 -1
  494. package/dist/{select-field-block-BfiHq9t6.js → select-field-block-BF8v698d.js} +2 -2
  495. package/dist/{select-field-block-BfiHq9t6.js.map → select-field-block-BF8v698d.js.map} +1 -1
  496. package/dist/{select-field-block-DJo2cX9Y.cjs → select-field-block-CaGjpIKM.cjs} +2 -2
  497. package/dist/{select-field-block-DJo2cX9Y.cjs.map → select-field-block-CaGjpIKM.cjs.map} +1 -1
  498. package/dist/{settings-row-BoAuUUuH.cjs → settings-row-Cr8gaO5a.cjs} +14 -4
  499. package/dist/settings-row-Cr8gaO5a.cjs.map +1 -0
  500. package/dist/{settings-row-B2IekRyH.js → settings-row-Cr9DsBSX.js} +14 -4
  501. package/dist/settings-row-Cr9DsBSX.js.map +1 -0
  502. package/dist/{span-payload-primitives-Buq9V8nK.js → span-payload-primitives-Dmzm3mb2.js} +2 -2
  503. package/dist/{span-payload-primitives-Buq9V8nK.js.map → span-payload-primitives-Dmzm3mb2.js.map} +1 -1
  504. package/dist/{span-payload-primitives-CjlNH9C-.cjs → span-payload-primitives-Dq8WqqNm.cjs} +2 -2
  505. package/dist/{span-payload-primitives-CjlNH9C-.cjs.map → span-payload-primitives-Dq8WqqNm.cjs.map} +1 -1
  506. package/dist/src/domains/capabilities/hooks/index.d.ts +3 -0
  507. package/dist/src/domains/capabilities/hooks/use-feedback-available.d.ts +8 -0
  508. package/dist/src/domains/capabilities/hooks/use-observability-capabilities.d.ts +22 -0
  509. package/dist/src/domains/capabilities/hooks/use-trace-query-available.d.ts +8 -0
  510. package/dist/src/domains/capabilities/index.d.ts +1 -0
  511. package/dist/src/domains/chat/messages/reasoning.d.ts +3 -1
  512. package/dist/src/domains/chat/messages/renderers/reasoning-part-renderer.d.ts +3 -1
  513. package/dist/src/domains/chat/stories/reasoning.stories.d.ts +1 -1
  514. package/dist/src/domains/memory/lib/timeline.d.ts +0 -1
  515. package/dist/src/domains/metrics/components/index.d.ts +1 -1
  516. package/dist/src/domains/metrics/components/kpi-card-view.d.ts +2 -1
  517. package/dist/src/domains/metrics/components/metrics-utils.d.ts +0 -2
  518. package/dist/src/domains/traces/components/trace-columns-menu.d.ts +3 -1
  519. package/dist/src/domains/traces/components/trace-data-panel-view.stories.d.ts +1 -1
  520. package/dist/src/domains/traces/hooks/index.d.ts +1 -0
  521. package/dist/src/domains/traces/hooks/use-trace-query.d.ts +19 -2
  522. package/dist/src/domains/traces/hooks/use-traces-list-source.d.ts +46 -0
  523. package/dist/src/domains/traces/trace-filters.d.ts +6 -1
  524. package/dist/src/domains/traces/utils/index.d.ts +1 -1
  525. package/dist/src/domains/traces/utils/span-utils.d.ts +1 -6
  526. package/dist/src/ds/components/Card/Card.d.ts +2 -2
  527. package/dist/src/ds/components/CompactNumber/compact-number.d.ts +6 -0
  528. package/dist/src/ds/components/CompactNumber/compact-number.stories.d.ts +7 -0
  529. package/dist/src/ds/components/CompactNumber/index.d.ts +1 -0
  530. package/dist/src/ds/components/DataList/data-list-cells.d.ts +4 -3
  531. package/dist/src/ds/components/InlineCode/index.d.ts +1 -0
  532. package/dist/src/ds/components/InlineCode/inline-code.d.ts +3 -0
  533. package/dist/src/ds/components/InlineCode/inline-code.stories.d.ts +13 -0
  534. package/dist/src/ds/components/ItemList/item-list-date-cell.d.ts +3 -2
  535. package/dist/src/ds/components/RelativeTimestamp/index.d.ts +1 -0
  536. package/dist/src/ds/components/RelativeTimestamp/relative-timestamp.d.ts +6 -0
  537. package/dist/src/ds/components/RelativeTimestamp/relative-timestamp.stories.d.ts +7 -0
  538. package/dist/src/ds/components/StatusIndicators/status-dot-styles.d.ts +31 -2
  539. package/dist/src/ds/components/StatusIndicators/status-dot.stories.d.ts +3 -4
  540. package/dist/src/ds/components/StatusIndicators/status.d.ts +2 -3
  541. package/dist/src/ds/components/StatusIndicators/status.stories.d.ts +2 -1
  542. package/dist/src/ds/components/Txt/Txt.d.ts +5 -1
  543. package/dist/src/ds/new/settings/settings-row.d.ts +3 -1
  544. package/dist/src/ds/new/settings/settings.stories.d.ts +1 -0
  545. package/dist/src/hooks/stories/state/use-elapsed-time.stories.d.ts +17 -0
  546. package/dist/src/hooks/use-elapsed-time.d.ts +2 -0
  547. package/dist/src/lib/cost.d.ts +6 -0
  548. package/dist/src/utils/cost.d.ts +1 -0
  549. package/dist/src/utils/date-format.d.ts +28 -0
  550. package/dist/src/utils/duration.d.ts +7 -1
  551. package/dist/src/utils/relative-time.d.ts +7 -0
  552. package/dist/style.css +25 -4
  553. package/dist/{text-field-block-DGIM1i3Z.js → text-field-block-BYPiO9h4.js} +2 -2
  554. package/dist/{text-field-block-DGIM1i3Z.js.map → text-field-block-BYPiO9h4.js.map} +1 -1
  555. package/dist/{text-field-block-DePCgDOh.cjs → text-field-block-CRh8sRXP.cjs} +2 -2
  556. package/dist/{text-field-block-DePCgDOh.cjs.map → text-field-block-CRh8sRXP.cjs.map} +1 -1
  557. package/dist/{tool-call-Bs-9Cah5.js → tool-call-CIeNEYpK.js} +2 -2
  558. package/dist/{tool-call-Bs-9Cah5.js.map → tool-call-CIeNEYpK.js.map} +1 -1
  559. package/dist/{tool-call-C0JeHe8Z.cjs → tool-call-CnEm3eE0.cjs} +2 -2
  560. package/dist/{tool-call-C0JeHe8Z.cjs.map → tool-call-CnEm3eE0.cjs.map} +1 -1
  561. package/dist/{traces-data-list-D3k50j4n.cjs → traces-data-list-C5KZesk6.cjs} +4 -4
  562. package/dist/{traces-data-list-D3k50j4n.cjs.map → traces-data-list-C5KZesk6.cjs.map} +1 -1
  563. package/dist/{traces-data-list-B5MkMMBi.js → traces-data-list-CdWW9J6z.js} +4 -4
  564. package/dist/{traces-data-list-B5MkMMBi.js.map → traces-data-list-CdWW9J6z.js.map} +1 -1
  565. package/dist/utils/cost.cjs.js +40 -0
  566. package/dist/utils/cost.cjs.js.map +1 -0
  567. package/dist/utils/cost.d.ts +2 -0
  568. package/dist/utils/cost.es.js +34 -0
  569. package/dist/utils/cost.es.js.map +1 -0
  570. package/dist/utils/date-format.cjs.js +99 -0
  571. package/dist/utils/date-format.cjs.js.map +1 -0
  572. package/dist/utils/date-format.d.ts +2 -0
  573. package/dist/utils/date-format.es.js +91 -0
  574. package/dist/utils/date-format.es.js.map +1 -0
  575. package/dist/utils/duration.cjs.js +19 -2
  576. package/dist/utils/duration.cjs.js.map +1 -1
  577. package/dist/utils/duration.es.js +18 -3
  578. package/dist/utils/duration.es.js.map +1 -1
  579. package/dist/utils/file.es.js +2 -2
  580. package/dist/utils/relative-time.cjs.js +12 -0
  581. package/dist/utils/relative-time.cjs.js.map +1 -0
  582. package/dist/utils/relative-time.d.ts +2 -0
  583. package/dist/utils/relative-time.es.js +8 -0
  584. package/dist/utils/relative-time.es.js.map +1 -0
  585. package/package.json +8 -8
  586. package/dist/Txt-B4-2nLaI.cjs.map +0 -1
  587. package/dist/Txt-DTh3Pa_a.js.map +0 -1
  588. package/dist/data-list-top-DpbOA3uw.js.map +0 -1
  589. package/dist/data-list-top-WGUY167p.cjs.map +0 -1
  590. package/dist/field-error-id-6EfqmQ4C.cjs.map +0 -1
  591. package/dist/field-error-id-DyWx33Fu.js.map +0 -1
  592. package/dist/settings-row-B2IekRyH.js.map +0 -1
  593. package/dist/settings-row-BoAuUUuH.cjs.map +0 -1
  594. package/dist/src/ds/components/Table/utils.d.ts +0 -4
@@ -1 +1 @@
1
- {"version":3,"file":"observation-marker-badge.cjs.js","sources":["../../../../../src/domains/chat/tools/badges/observation-marker-badge.tsx"],"sourcesContent":["import { Brain, XCircle, Loader2, ChevronDown, ChevronRight, Unplug, Eye } from 'lucide-react';\nimport { useState, useEffect } from 'react';\nimport { ObservationRenderer } from './observation-renderer';\nimport { Badge } from '@/ds/components/Badge';\nimport { MarkdownRenderer } from '@/ds/components/MarkdownRenderer';\nimport { Icon } from '@/ds/icons/Icon';\nimport { cn } from '@/utils/cn';\n\nexport interface OmMarkerData {\n observedAt?: string;\n completedAt?: string;\n failedAt?: string;\n startedAt?: string;\n tokensObserved?: number;\n tokensToObserve?: number;\n observationTokens?: number;\n observations?: string;\n currentTask?: string;\n suggestedResponse?: string;\n extractedValues?: Record<string, unknown>;\n extractionFailures?: Array<{ slug: string; error: string }>;\n durationMs?: number;\n error?: string;\n recordId?: string;\n cycleId?: string;\n threadId?: string;\n threadIds?: string[];\n operationType?: 'observation' | 'reflection';\n _state?: 'loading' | 'complete' | 'failed' | 'buffering' | 'buffering-complete' | 'buffering-failed' | 'activated';\n // Activation-specific fields\n chunksActivated?: number;\n tokensActivated?: number;\n messagesActivated?: number;\n config?: {\n scope?: string;\n messageTokens?: number;\n observationTokens?: number;\n };\n // Buffering-specific fields\n tokensToBuffer?: number;\n tokensBuffered?: number;\n bufferedTokens?: number;\n}\n\nexport interface ObservationMarkerBadgeProps {\n toolName: string;\n args: Record<string, unknown>;\n metadata?: {\n mode?: string;\n omData?: OmMarkerData;\n };\n}\n\n/**\n * Format token count for display (e.g., 7234 -> \"7.2k\", 234 -> \"234\")\n */\nconst formatTokens = (tokens: number): string => {\n if (tokens >= 1000) {\n return `${(tokens / 1000).toFixed(1)}k`;\n }\n return String(Math.round(tokens));\n};\n\nconst hasExtractedValue = (value: unknown) => value !== undefined && value !== null && value !== '';\n\nconst getExtractedValueEntries = (values?: Record<string, unknown>) => {\n return Object.entries(values ?? {}).filter(([, value]) => hasExtractedValue(value));\n};\n\nconst formatExtractedValue = (value: unknown): string => {\n if (typeof value === 'string') return value;\n if (typeof value === 'number' || typeof value === 'boolean') return String(value);\n\n try {\n return JSON.stringify(value, null, 2) ?? String(value);\n } catch {\n return String(value);\n }\n};\n\nconst isStructuredExtractedValue = (value: unknown) => typeof value === 'object' && value !== null;\n\nconst ObservationIcon = ({ className }: { className?: string }) => <Eye className={className} />;\n\nconst MarkerPill = ({\n children,\n icon,\n expanded,\n onClick,\n className,\n}: {\n children: React.ReactNode;\n icon: React.ReactNode;\n expanded?: boolean;\n onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n className?: string;\n}) => {\n const content = (\n <>\n {onClick && (\n <Icon>\n <ChevronDown className={cn('transition-all', expanded ? 'rotate-0' : '-rotate-90')} />\n </Icon>\n )}\n <Badge icon={icon}>{children}</Badge>\n </>\n );\n\n if (!onClick) {\n return <div className={cn('inline-flex items-center gap-2', className)}>{content}</div>;\n }\n\n return (\n <button onClick={onClick} className={cn('inline-flex items-center gap-2', className)} type=\"button\">\n {content}\n </button>\n );\n};\n\nconst ExtractedValuesPanel = ({\n extractedValues,\n extractionFailures,\n isExpanded,\n onToggle,\n}: {\n extractedValues?: Record<string, unknown>;\n extractionFailures?: Array<{ slug: string; error: string }>;\n isExpanded: boolean;\n onToggle: () => void;\n}) => {\n const entries = getExtractedValueEntries(extractedValues);\n const failures = extractionFailures ?? [];\n\n if (entries.length === 0 && failures.length === 0) return null;\n\n return (\n <div className=\"mt-2 border-t border-border pt-2\">\n <button\n onClick={onToggle}\n className=\"flex items-center gap-1 text-meta tracking-wide text-foreground uppercase transition-opacity hover:opacity-80\"\n >\n {isExpanded ? <ChevronDown className=\"size-2.5\" /> : <ChevronRight className=\"size-2.5\" />}\n Extractions ({entries.length}){failures.length > 0 ? ` · ${failures.length} failed` : ''}\n </button>\n {isExpanded && (\n <div className=\"mt-1 space-y-2\">\n {entries.map(([slug, value]) => (\n <div key={slug} className=\"rounded border border-border bg-fill-subtle p-2\">\n <div className=\"text-meta tracking-wide text-foreground/70 uppercase\">{slug}</div>\n {isStructuredExtractedValue(value) ? (\n <pre className=\"mt-1 max-h-40 overflow-auto text-caption break-words whitespace-pre-wrap text-foreground/80\">\n {formatExtractedValue(value)}\n </pre>\n ) : (\n <div className=\"mt-1 [&_code]:rounded [&_code]:bg-fill [&_code]:px-1 [&_code]:py-0.5 [&_code]:text-meta\">\n <MarkdownRenderer className=\"text-caption text-foreground/80\">\n {formatExtractedValue(value)}\n </MarkdownRenderer>\n </div>\n )}\n </div>\n ))}\n {failures.map(failure => (\n <div key={failure.slug} className=\"rounded border border-red-500/20 bg-red-500/5 p-2 text-red-700\">\n <div className=\"text-meta tracking-wide uppercase\">{failure.slug}</div>\n <div className=\"mt-1 text-caption\">{failure.error}</div>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n};\n\n/**\n * Renders an inline badge for OM observation markers.\n * These are converted from data-om-* parts to tool-call format for assistant-ui compatibility.\n *\n * The badge includes a `data-om-badge` attribute with the cycleId so that\n * the BracketOverlay can find it via DOM queries for positioning bracket lines.\n */\nexport const ObservationMarkerBadge = ({ toolName, args, metadata }: ObservationMarkerBadgeProps) => {\n const omData = (metadata?.omData || args) as OmMarkerData;\n const cycleId = omData.cycleId || '';\n\n // Use the _state field set during part merging, or fallback to detecting from data\n const state =\n omData._state ||\n (omData.failedAt\n ? 'failed'\n : omData.completedAt\n ? 'complete'\n : (omData as any).disconnectedAt\n ? 'disconnected'\n : 'loading');\n\n const isStart = state === 'loading';\n const isEnd = state === 'complete';\n const isFailed = state === 'failed';\n const isDisconnected = state === 'disconnected';\n const isBuffering = state === 'buffering';\n const isBufferingComplete = state === 'buffering-complete';\n const isBufferingFailed = state === 'buffering-failed';\n const isActivated = state === 'activated';\n const isReflection = omData.operationType === 'reflection';\n const hasExtractionContent =\n getExtractedValueEntries(omData.extractedValues).length > 0 || (omData.extractionFailures?.length ?? 0) > 0;\n const shouldAutoExpand = (isFailed && isReflection) || hasExtractionContent;\n\n // Failed reflections and extraction-bearing markers should expand by default to draw attention to new details.\n const [isExpanded, setIsExpanded] = useState(shouldAutoExpand);\n\n // Auto-expand when completion details arrive after the marker was mounted during loading.\n useEffect(() => {\n if (shouldAutoExpand) {\n setIsExpanded(true);\n }\n }, [shouldAutoExpand]);\n const [isObservationsExpanded, setIsObservationsExpanded] = useState(true);\n const [isTaskExpanded, setIsTaskExpanded] = useState(false);\n const [isResponseExpanded, setIsResponseExpanded] = useState(false);\n const [isExtractedExpanded, setIsExtractedExpanded] = useState(false);\n\n // Colors - same scheme for both observation and reflection\n const bgColor = 'bg-blue-500/10';\n const textColor = 'text-blue-600';\n const completeBgColor = 'bg-green-500/10';\n const completeTextColor = 'text-green-600';\n const completeHoverBgColor = 'hover:bg-green-500/20';\n // Same colors for expanded state\n const expandedBgColor = 'bg-green-500/5';\n const expandedBorderColor = 'border-green-500/10';\n const labelColor = 'text-green-600';\n const bufferExpandedBgColor = 'bg-background';\n const bufferExpandedBorderColor = 'border-border-1';\n const actionLabel = isReflection ? 'Reflecting' : 'Observing';\n const completedLabel = isReflection ? 'Reflected' : 'Observed';\n\n // Render based on marker type\n if (isStart) {\n const tokensToObserve = omData.tokensToObserve;\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div\n className={`inline-flex items-center gap-1.5 rounded-md px-2 py-1 ${bgColor} ${textColor} my-1 text-column`}\n >\n <Loader2 className=\"size-3 animate-spin\" />\n {isReflection ? <Brain className=\"size-3\" /> : <ObservationIcon className=\"size-3\" />}\n <span>\n {actionLabel}\n {tokensToObserve ? ` ~${formatTokens(tokensToObserve)} tokens` : '...'}\n </span>\n </div>\n </div>\n );\n }\n\n if (isEnd) {\n const tokensObserved = omData.tokensObserved;\n const observationTokens = omData.observationTokens;\n const observations = omData.observations;\n const currentTask = omData.currentTask;\n const suggestedResponse = omData.suggestedResponse;\n const extractedValues = omData.extractedValues;\n const extractionFailures = omData.extractionFailures;\n const durationMs = omData.durationMs;\n const compressionRatio =\n tokensObserved && observationTokens && observationTokens > 0\n ? Math.round(tokensObserved / observationTokens)\n : null;\n\n const handleToggle = (e: React.MouseEvent) => {\n // Prevent scroll jump by preserving scroll position\n const scrollContainer = e.currentTarget.closest('[data-radix-scroll-area-viewport]') || document.documentElement;\n const scrollTop = scrollContainer.scrollTop;\n setIsExpanded(!isExpanded);\n // Restore scroll position after React updates\n requestAnimationFrame(() => {\n scrollContainer.scrollTop = scrollTop;\n });\n };\n\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div className=\"my-1\">\n <button\n onClick={handleToggle}\n className={`inline-flex items-center gap-1.5 rounded-md px-2 py-1 ${completeBgColor} ${completeTextColor} text-column ${completeHoverBgColor} cursor-pointer`}\n >\n {isExpanded ? <ChevronDown className=\"size-3\" /> : <ChevronRight className=\"size-3\" />}\n {isReflection ? <Brain className=\"size-3\" /> : <ObservationIcon className=\"size-3\" />}\n <span>\n {completedLabel} {tokensObserved ? formatTokens(tokensObserved) : '?'}→\n {observationTokens ? formatTokens(observationTokens) : '?'} tokens\n {compressionRatio ? ` (-${compressionRatio}x)` : ''}\n </span>\n </button>\n {isExpanded && (\n <div\n className={`mt-1 ml-6 rounded-md p-2 ${expandedBgColor} space-y-1.5 border text-caption ${expandedBorderColor}`}\n >\n {/* Stats row - all green */}\n <div className={`flex gap-4 text-caption ${labelColor}`}>\n {tokensObserved && <span>Input: {formatTokens(tokensObserved)}</span>}\n {observationTokens && <span>Output: {formatTokens(observationTokens)}</span>}\n {compressionRatio && compressionRatio > 1 && <span>Compression: {compressionRatio}x</span>}\n {durationMs && <span>Duration: {(durationMs / 1000).toFixed(2)}s</span>}\n </div>\n {observations && (\n <div className=\"mt-1 border-t border-border pt-1\">\n {/* If there's no currentTask or suggestedResponse, show observations directly without collapsible wrapper */}\n {!currentTask && !suggestedResponse ? (\n <ObservationRenderer observations={observations} maxHeight=\"500px\" />\n ) : (\n <>\n <button\n onClick={() => setIsObservationsExpanded(!isObservationsExpanded)}\n className=\"flex items-center gap-1 text-meta tracking-wide text-foreground uppercase transition-opacity hover:opacity-80\"\n >\n {isObservationsExpanded ? (\n <ChevronDown className=\"size-2.5\" />\n ) : (\n <ChevronRight className=\"size-2.5\" />\n )}\n {isReflection ? 'Reflections' : 'Observations'}\n </button>\n {isObservationsExpanded && (\n <div className=\"mt-1\">\n <ObservationRenderer observations={observations} maxHeight=\"500px\" />\n </div>\n )}\n </>\n )}\n </div>\n )}\n {currentTask && (\n <div className=\"mt-2 border-t border-border pt-2\">\n <button\n onClick={() => setIsTaskExpanded(!isTaskExpanded)}\n className=\"flex items-center gap-1 text-meta tracking-wide text-foreground uppercase transition-opacity hover:opacity-80\"\n >\n {isTaskExpanded ? <ChevronDown className=\"size-2.5\" /> : <ChevronRight className=\"size-2.5\" />}\n Current Task\n </button>\n {isTaskExpanded && (\n <div className=\"mt-1 [&_code]:rounded [&_code]:bg-fill [&_code]:px-1 [&_code]:py-0.5 [&_code]:text-meta\">\n <MarkdownRenderer className=\"text-caption text-foreground\">{currentTask}</MarkdownRenderer>\n </div>\n )}\n </div>\n )}\n {suggestedResponse && (\n <div className=\"mt-2 border-t border-border pt-2\">\n <button\n onClick={() => setIsResponseExpanded(!isResponseExpanded)}\n className=\"flex items-center gap-1 text-meta tracking-wide text-foreground uppercase transition-opacity hover:opacity-80\"\n >\n {isResponseExpanded ? <ChevronDown className=\"size-2.5\" /> : <ChevronRight className=\"size-2.5\" />}\n Suggested Response\n </button>\n {isResponseExpanded && (\n <div className=\"mt-1 italic [&_code]:rounded [&_code]:bg-fill [&_code]:px-1 [&_code]:py-0.5 [&_code]:text-meta\">\n <MarkdownRenderer className=\"text-caption text-foreground/80\">\n {suggestedResponse}\n </MarkdownRenderer>\n </div>\n )}\n </div>\n )}\n <ExtractedValuesPanel\n extractedValues={extractedValues}\n extractionFailures={extractionFailures}\n isExpanded={isExtractedExpanded}\n onToggle={() => setIsExtractedExpanded(!isExtractedExpanded)}\n />\n </div>\n )}\n </div>\n </div>\n );\n }\n\n if (isDisconnected) {\n const disconnectedLabel = isReflection ? 'Reflection interrupted' : 'Observation interrupted';\n const tokensToObserve = omData.tokensToObserve;\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div className=\"my-1 inline-flex items-center gap-1.5 rounded-md bg-yellow-500/10 px-2 py-1 text-column text-yellow-600\">\n <Unplug className=\"size-3\" />\n <span>\n {disconnectedLabel}\n {tokensToObserve ? ` (~${formatTokens(tokensToObserve)} tokens)` : ''}\n </span>\n </div>\n </div>\n );\n }\n\n if (isFailed) {\n const error = omData.error;\n const failedLabel = isReflection ? 'Reflection failed' : 'Observation failed';\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div className=\"my-1\">\n <button\n onClick={() => setIsExpanded(!isExpanded)}\n className=\"inline-flex cursor-pointer items-center gap-1.5 rounded-md bg-red-500/10 px-2 py-1 text-column text-red-600 hover:bg-red-500/20\"\n >\n {isExpanded ? <ChevronDown className=\"size-3\" /> : <ChevronRight className=\"size-3\" />}\n <XCircle className=\"size-3\" />\n <span>{failedLabel}</span>\n </button>\n\n {isExpanded && error && (\n <div className=\"mt-1 ml-4 rounded-md border border-red-500/10 bg-red-500/5 p-2 text-caption text-red-700\">\n <span className=\"text-column\">Error:</span> {error}\n </div>\n )}\n </div>\n </div>\n );\n }\n\n // Async buffering states - non-blocking background observation/reflection\n if (isBuffering) {\n const tokensToBuffer = omData.tokensToBuffer;\n const bufferingLabel = isReflection ? 'Buffering reflection' : 'Buffering observations';\n return (\n <div\n className=\"mt-2 mb-8\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <MarkerPill icon={<Loader2 className=\"animate-spin text-accent6\" />}>\n {bufferingLabel}\n {tokensToBuffer ? ` ~${formatTokens(tokensToBuffer)} tokens` : '...'}\n </MarkerPill>\n </div>\n );\n }\n\n if (isBufferingComplete) {\n const tokensBuffered = omData.tokensBuffered;\n const bufferedTokens = omData.bufferedTokens;\n const { observations, extractedValues, extractionFailures } = omData;\n const bufferedLabel = isReflection ? 'Buffered reflection' : 'Buffered observations';\n const compressionRatio =\n tokensBuffered && bufferedTokens && bufferedTokens > 0 ? Math.round(tokensBuffered / bufferedTokens) : null;\n\n const handleToggle = (e: React.MouseEvent) => {\n const scrollContainer = e.currentTarget.closest('[data-radix-scroll-area-viewport]') || document.documentElement;\n const scrollTop = scrollContainer.scrollTop;\n setIsExpanded(!isExpanded);\n requestAnimationFrame(() => {\n scrollContainer.scrollTop = scrollTop;\n });\n };\n\n return (\n <div\n className=\"mt-2 mb-8\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div>\n <MarkerPill expanded={isExpanded} onClick={handleToggle} icon={<ObservationIcon className=\"text-accent6\" />}>\n {bufferedLabel} {tokensBuffered ? formatTokens(tokensBuffered) : '?'}→\n {bufferedTokens ? formatTokens(bufferedTokens) : '?'} tokens\n {compressionRatio ? ` (-${compressionRatio}x)` : ''}\n </MarkerPill>\n\n {isExpanded && (\n <div\n className={`mt-2 ml-6 rounded-lg ${bufferExpandedBgColor} space-y-2 border p-4 text-caption ${bufferExpandedBorderColor}`}\n >\n {observations && <ObservationRenderer observations={observations} maxHeight=\"240px\" />}\n <ExtractedValuesPanel\n extractedValues={extractedValues}\n extractionFailures={extractionFailures}\n isExpanded={isExtractedExpanded}\n onToggle={() => setIsExtractedExpanded(!isExtractedExpanded)}\n />\n </div>\n )}\n </div>\n </div>\n );\n }\n\n if (isBufferingFailed) {\n const error = omData.error;\n const failedLabel = isReflection ? 'Buffered reflection failed' : 'Buffered observation failed';\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div className=\"my-1\">\n <button\n onClick={() => setIsExpanded(!isExpanded)}\n className=\"inline-flex cursor-pointer items-center gap-1.5 rounded-md border border-dashed border-red-400/40 bg-red-500/10 px-2 py-1 text-column text-red-600 hover:bg-red-500/20\"\n >\n {isExpanded ? <ChevronDown className=\"size-3\" /> : <ChevronRight className=\"size-3\" />}\n <XCircle className=\"size-3\" />\n <span>{failedLabel}</span>\n </button>\n\n {isExpanded && error && (\n <div className=\"mt-1 ml-4 rounded-md border border-red-500/10 bg-red-500/5 p-2 text-caption text-red-700\">\n <span className=\"text-column\">Error:</span> {error}\n </div>\n )}\n </div>\n </div>\n );\n }\n\n // Activation state - buffered observations have been activated into active observations\n // Styled to match sync observation/reflection markers (green scheme with Brain icon)\n if (isActivated) {\n const tokensActivated = omData.tokensActivated ?? 0;\n const observationTokens = omData.observationTokens ?? 0;\n const { observations } = omData;\n const activatedLabel = isReflection ? 'Reflected' : 'Observed';\n const compressionRatio =\n tokensActivated && observationTokens && observationTokens > 0\n ? Math.round(tokensActivated / observationTokens)\n : null;\n\n const handleToggle = (e: React.MouseEvent) => {\n const scrollContainer = e.currentTarget.closest('[data-radix-scroll-area-viewport]') || document.documentElement;\n const scrollTop = scrollContainer.scrollTop;\n setIsExpanded(!isExpanded);\n requestAnimationFrame(() => {\n scrollContainer.scrollTop = scrollTop;\n });\n };\n\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n data-om-no-highlight=\"true\"\n >\n <div className=\"my-1\">\n <button\n onClick={handleToggle}\n className={`inline-flex items-center gap-1.5 rounded-md px-2 py-1 ${completeBgColor} ${completeTextColor} text-column ${completeHoverBgColor} cursor-pointer`}\n >\n {isExpanded ? <ChevronDown className=\"size-3\" /> : <ChevronRight className=\"size-3\" />}\n {isReflection ? <Brain className=\"size-3\" /> : <ObservationIcon className=\"size-3\" />}\n <span>\n {activatedLabel} {tokensActivated ? formatTokens(tokensActivated) : '?'}→\n {observationTokens ? formatTokens(observationTokens) : '?'} tokens\n {compressionRatio ? ` (-${compressionRatio}x)` : ''}\n </span>\n </button>\n {isExpanded && (\n <div\n className={`mt-1 ml-6 rounded-md p-2 ${expandedBgColor} space-y-1.5 border text-caption ${expandedBorderColor}`}\n >\n {/* Stats row */}\n <div className={`flex gap-4 text-caption ${labelColor}`}>\n {tokensActivated > 0 && <span>Input: {formatTokens(tokensActivated)}</span>}\n {observationTokens > 0 && <span>Output: {formatTokens(observationTokens)}</span>}\n {compressionRatio && compressionRatio > 1 && <span>Compression: {compressionRatio}x</span>}\n </div>\n {observations && (\n <div className=\"mt-1 border-t border-border pt-1\">\n <ObservationRenderer observations={observations} maxHeight=\"500px\" />\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n );\n }\n\n // Unknown marker type - render generic\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div className=\"my-1 inline-flex items-center gap-1.5 rounded-md bg-fill px-2 py-1 text-column text-muted-foreground\">\n <Brain className=\"size-3\" />\n <span>{toolName}</span>\n </div>\n </div>\n );\n};\n"],"names":["jsx","Eye","jsxs","Fragment","Icon","ChevronDown","cn","Badge","ChevronRight","MarkdownRenderer","useState","useEffect","Loader2","Brain","ObservationRenderer","Unplug","XCircle"],"mappings":"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"}
1
+ {"version":3,"file":"observation-marker-badge.cjs.js","sources":["../../../../../src/domains/chat/tools/badges/observation-marker-badge.tsx"],"sourcesContent":["import { Brain, XCircle, Loader2, ChevronDown, ChevronRight, Unplug, Eye } from 'lucide-react';\nimport { useState, useEffect } from 'react';\nimport { ObservationRenderer } from './observation-renderer';\nimport { Badge } from '@/ds/components/Badge';\nimport { MarkdownRenderer } from '@/ds/components/MarkdownRenderer';\nimport { Txt } from '@/ds/components/Txt/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { cn } from '@/utils/cn';\nimport { formatDuration } from '@/utils/duration';\n\nexport interface OmMarkerData {\n observedAt?: string;\n completedAt?: string;\n failedAt?: string;\n startedAt?: string;\n tokensObserved?: number;\n tokensToObserve?: number;\n observationTokens?: number;\n observations?: string;\n currentTask?: string;\n suggestedResponse?: string;\n extractedValues?: Record<string, unknown>;\n extractionFailures?: Array<{ slug: string; error: string }>;\n durationMs?: number;\n error?: string;\n recordId?: string;\n cycleId?: string;\n threadId?: string;\n threadIds?: string[];\n operationType?: 'observation' | 'reflection';\n _state?: 'loading' | 'complete' | 'failed' | 'buffering' | 'buffering-complete' | 'buffering-failed' | 'activated';\n // Activation-specific fields\n chunksActivated?: number;\n tokensActivated?: number;\n messagesActivated?: number;\n config?: {\n scope?: string;\n messageTokens?: number;\n observationTokens?: number;\n };\n // Buffering-specific fields\n tokensToBuffer?: number;\n tokensBuffered?: number;\n bufferedTokens?: number;\n}\n\nexport interface ObservationMarkerBadgeProps {\n toolName: string;\n args: Record<string, unknown>;\n metadata?: {\n mode?: string;\n omData?: OmMarkerData;\n };\n}\n\n/**\n * Format token count for display (e.g., 7234 -> \"7.2k\", 234 -> \"234\")\n */\nconst formatTokens = (tokens: number): string => {\n if (tokens >= 1000) {\n return `${(tokens / 1000).toFixed(1)}k`;\n }\n return String(Math.round(tokens));\n};\n\nconst hasExtractedValue = (value: unknown) => value !== undefined && value !== null && value !== '';\n\nconst getExtractedValueEntries = (values?: Record<string, unknown>) => {\n return Object.entries(values ?? {}).filter(([, value]) => hasExtractedValue(value));\n};\n\nconst formatExtractedValue = (value: unknown): string => {\n if (typeof value === 'string') return value;\n if (typeof value === 'number' || typeof value === 'boolean') return String(value);\n\n try {\n return JSON.stringify(value, null, 2) ?? String(value);\n } catch {\n return String(value);\n }\n};\n\nconst isStructuredExtractedValue = (value: unknown) => typeof value === 'object' && value !== null;\n\nconst ObservationIcon = ({ className }: { className?: string }) => <Eye className={className} />;\n\nconst MarkerPill = ({\n children,\n icon,\n expanded,\n onClick,\n className,\n}: {\n children: React.ReactNode;\n icon: React.ReactNode;\n expanded?: boolean;\n onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n className?: string;\n}) => {\n const content = (\n <>\n {onClick && (\n <Icon>\n <ChevronDown className={cn('transition-all', expanded ? 'rotate-0' : '-rotate-90')} />\n </Icon>\n )}\n <Badge icon={icon}>{children}</Badge>\n </>\n );\n\n if (!onClick) {\n return <div className={cn('inline-flex items-center gap-2', className)}>{content}</div>;\n }\n\n return (\n <button onClick={onClick} className={cn('inline-flex items-center gap-2', className)} type=\"button\">\n {content}\n </button>\n );\n};\n\nconst ExtractedValuesPanel = ({\n extractedValues,\n extractionFailures,\n isExpanded,\n onToggle,\n}: {\n extractedValues?: Record<string, unknown>;\n extractionFailures?: Array<{ slug: string; error: string }>;\n isExpanded: boolean;\n onToggle: () => void;\n}) => {\n const entries = getExtractedValueEntries(extractedValues);\n const failures = extractionFailures ?? [];\n\n if (entries.length === 0 && failures.length === 0) return null;\n\n return (\n <div className=\"mt-2 border-t border-border pt-2\">\n <button\n onClick={onToggle}\n className=\"flex items-center gap-1 text-meta tracking-wide text-foreground uppercase transition-opacity hover:opacity-80\"\n >\n {isExpanded ? <ChevronDown className=\"size-2.5\" /> : <ChevronRight className=\"size-2.5\" />}\n Extractions ({entries.length}){failures.length > 0 ? ` · ${failures.length} failed` : ''}\n </button>\n {isExpanded && (\n <div className=\"mt-1 space-y-2\">\n {entries.map(([slug, value]) => (\n <div key={slug} className=\"rounded border border-border bg-fill-subtle p-2\">\n <div className=\"text-meta tracking-wide text-foreground/70 uppercase\">{slug}</div>\n {isStructuredExtractedValue(value) ? (\n <pre className=\"mt-1 max-h-40 overflow-auto text-caption break-words whitespace-pre-wrap text-foreground/80\">\n {formatExtractedValue(value)}\n </pre>\n ) : (\n <div className=\"mt-1 [&_code]:rounded [&_code]:bg-fill [&_code]:px-1 [&_code]:py-0.5 [&_code]:text-meta\">\n <MarkdownRenderer className=\"text-caption text-foreground/80\">\n {formatExtractedValue(value)}\n </MarkdownRenderer>\n </div>\n )}\n </div>\n ))}\n {failures.map(failure => (\n <div key={failure.slug} className=\"rounded border border-red-500/20 bg-red-500/5 p-2 text-red-700\">\n <div className=\"text-meta tracking-wide uppercase\">{failure.slug}</div>\n <div className=\"mt-1 text-caption\">{failure.error}</div>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n};\n\n/**\n * Renders an inline badge for OM observation markers.\n * These are converted from data-om-* parts to tool-call format for assistant-ui compatibility.\n *\n * The badge includes a `data-om-badge` attribute with the cycleId so that\n * the BracketOverlay can find it via DOM queries for positioning bracket lines.\n */\nexport const ObservationMarkerBadge = ({ toolName, args, metadata }: ObservationMarkerBadgeProps) => {\n const omData = (metadata?.omData || args) as OmMarkerData;\n const cycleId = omData.cycleId || '';\n\n // Use the _state field set during part merging, or fallback to detecting from data\n const state =\n omData._state ||\n (omData.failedAt\n ? 'failed'\n : omData.completedAt\n ? 'complete'\n : (omData as any).disconnectedAt\n ? 'disconnected'\n : 'loading');\n\n const isStart = state === 'loading';\n const isEnd = state === 'complete';\n const isFailed = state === 'failed';\n const isDisconnected = state === 'disconnected';\n const isBuffering = state === 'buffering';\n const isBufferingComplete = state === 'buffering-complete';\n const isBufferingFailed = state === 'buffering-failed';\n const isActivated = state === 'activated';\n const isReflection = omData.operationType === 'reflection';\n const hasExtractionContent =\n getExtractedValueEntries(omData.extractedValues).length > 0 || (omData.extractionFailures?.length ?? 0) > 0;\n const shouldAutoExpand = (isFailed && isReflection) || hasExtractionContent;\n\n // Failed reflections and extraction-bearing markers should expand by default to draw attention to new details.\n const [isExpanded, setIsExpanded] = useState(shouldAutoExpand);\n\n // Auto-expand when completion details arrive after the marker was mounted during loading.\n useEffect(() => {\n if (shouldAutoExpand) {\n setIsExpanded(true);\n }\n }, [shouldAutoExpand]);\n const [isObservationsExpanded, setIsObservationsExpanded] = useState(true);\n const [isTaskExpanded, setIsTaskExpanded] = useState(false);\n const [isResponseExpanded, setIsResponseExpanded] = useState(false);\n const [isExtractedExpanded, setIsExtractedExpanded] = useState(false);\n\n // Colors - same scheme for both observation and reflection\n const bgColor = 'bg-blue-500/10';\n const textColor = 'text-blue-600';\n const completeBgColor = 'bg-green-500/10';\n const completeTextColor = 'text-green-600';\n const completeHoverBgColor = 'hover:bg-green-500/20';\n // Same colors for expanded state\n const expandedBgColor = 'bg-green-500/5';\n const expandedBorderColor = 'border-green-500/10';\n const labelColor = 'text-green-600';\n const bufferExpandedBgColor = 'bg-background';\n const bufferExpandedBorderColor = 'border-border-1';\n const actionLabel = isReflection ? 'Reflecting' : 'Observing';\n const completedLabel = isReflection ? 'Reflected' : 'Observed';\n\n // Render based on marker type\n if (isStart) {\n const tokensToObserve = omData.tokensToObserve;\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div\n className={`inline-flex items-center gap-1.5 rounded-md px-2 py-1 ${bgColor} ${textColor} my-1 text-column`}\n >\n <Loader2 className=\"size-3 animate-spin\" />\n {isReflection ? <Brain className=\"size-3\" /> : <ObservationIcon className=\"size-3\" />}\n <span>\n {actionLabel}\n {tokensToObserve ? ` ~${formatTokens(tokensToObserve)} tokens` : '...'}\n </span>\n </div>\n </div>\n );\n }\n\n if (isEnd) {\n const tokensObserved = omData.tokensObserved;\n const observationTokens = omData.observationTokens;\n const observations = omData.observations;\n const currentTask = omData.currentTask;\n const suggestedResponse = omData.suggestedResponse;\n const extractedValues = omData.extractedValues;\n const extractionFailures = omData.extractionFailures;\n const durationMs = omData.durationMs;\n const compressionRatio =\n tokensObserved && observationTokens && observationTokens > 0\n ? Math.round(tokensObserved / observationTokens)\n : null;\n\n const handleToggle = (e: React.MouseEvent) => {\n // Prevent scroll jump by preserving scroll position\n const scrollContainer = e.currentTarget.closest('[data-radix-scroll-area-viewport]') || document.documentElement;\n const scrollTop = scrollContainer.scrollTop;\n setIsExpanded(!isExpanded);\n // Restore scroll position after React updates\n requestAnimationFrame(() => {\n scrollContainer.scrollTop = scrollTop;\n });\n };\n\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div className=\"my-1\">\n <button\n onClick={handleToggle}\n className={`inline-flex items-center gap-1.5 rounded-md px-2 py-1 ${completeBgColor} ${completeTextColor} text-column ${completeHoverBgColor} cursor-pointer`}\n >\n {isExpanded ? <ChevronDown className=\"size-3\" /> : <ChevronRight className=\"size-3\" />}\n {isReflection ? <Brain className=\"size-3\" /> : <ObservationIcon className=\"size-3\" />}\n <span>\n {completedLabel} {tokensObserved ? formatTokens(tokensObserved) : '?'}→\n {observationTokens ? formatTokens(observationTokens) : '?'} tokens\n {compressionRatio ? ` (-${compressionRatio}x)` : ''}\n </span>\n </button>\n {isExpanded && (\n <div\n className={`mt-1 ml-6 rounded-md p-2 ${expandedBgColor} space-y-1.5 border text-caption ${expandedBorderColor}`}\n >\n {/* Stats row - all green */}\n <div className={`flex gap-4 text-caption ${labelColor}`}>\n {tokensObserved && <span>Input: {formatTokens(tokensObserved)}</span>}\n {observationTokens && <span>Output: {formatTokens(observationTokens)}</span>}\n {compressionRatio && compressionRatio > 1 && <span>Compression: {compressionRatio}x</span>}\n {durationMs && (\n <span>\n Duration:{' '}\n <Txt as=\"span\" variant=\"caption\" font=\"mono\">\n {formatDuration(durationMs)}\n </Txt>\n </span>\n )}\n </div>\n {observations && (\n <div className=\"mt-1 border-t border-border pt-1\">\n {/* If there's no currentTask or suggestedResponse, show observations directly without collapsible wrapper */}\n {!currentTask && !suggestedResponse ? (\n <ObservationRenderer observations={observations} maxHeight=\"500px\" />\n ) : (\n <>\n <button\n onClick={() => setIsObservationsExpanded(!isObservationsExpanded)}\n className=\"flex items-center gap-1 text-meta tracking-wide text-foreground uppercase transition-opacity hover:opacity-80\"\n >\n {isObservationsExpanded ? (\n <ChevronDown className=\"size-2.5\" />\n ) : (\n <ChevronRight className=\"size-2.5\" />\n )}\n {isReflection ? 'Reflections' : 'Observations'}\n </button>\n {isObservationsExpanded && (\n <div className=\"mt-1\">\n <ObservationRenderer observations={observations} maxHeight=\"500px\" />\n </div>\n )}\n </>\n )}\n </div>\n )}\n {currentTask && (\n <div className=\"mt-2 border-t border-border pt-2\">\n <button\n onClick={() => setIsTaskExpanded(!isTaskExpanded)}\n className=\"flex items-center gap-1 text-meta tracking-wide text-foreground uppercase transition-opacity hover:opacity-80\"\n >\n {isTaskExpanded ? <ChevronDown className=\"size-2.5\" /> : <ChevronRight className=\"size-2.5\" />}\n Current Task\n </button>\n {isTaskExpanded && (\n <div className=\"mt-1 [&_code]:rounded [&_code]:bg-fill [&_code]:px-1 [&_code]:py-0.5 [&_code]:text-meta\">\n <MarkdownRenderer className=\"text-caption text-foreground\">{currentTask}</MarkdownRenderer>\n </div>\n )}\n </div>\n )}\n {suggestedResponse && (\n <div className=\"mt-2 border-t border-border pt-2\">\n <button\n onClick={() => setIsResponseExpanded(!isResponseExpanded)}\n className=\"flex items-center gap-1 text-meta tracking-wide text-foreground uppercase transition-opacity hover:opacity-80\"\n >\n {isResponseExpanded ? <ChevronDown className=\"size-2.5\" /> : <ChevronRight className=\"size-2.5\" />}\n Suggested Response\n </button>\n {isResponseExpanded && (\n <div className=\"mt-1 italic [&_code]:rounded [&_code]:bg-fill [&_code]:px-1 [&_code]:py-0.5 [&_code]:text-meta\">\n <MarkdownRenderer className=\"text-caption text-foreground/80\">\n {suggestedResponse}\n </MarkdownRenderer>\n </div>\n )}\n </div>\n )}\n <ExtractedValuesPanel\n extractedValues={extractedValues}\n extractionFailures={extractionFailures}\n isExpanded={isExtractedExpanded}\n onToggle={() => setIsExtractedExpanded(!isExtractedExpanded)}\n />\n </div>\n )}\n </div>\n </div>\n );\n }\n\n if (isDisconnected) {\n const disconnectedLabel = isReflection ? 'Reflection interrupted' : 'Observation interrupted';\n const tokensToObserve = omData.tokensToObserve;\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div className=\"my-1 inline-flex items-center gap-1.5 rounded-md bg-yellow-500/10 px-2 py-1 text-column text-yellow-600\">\n <Unplug className=\"size-3\" />\n <span>\n {disconnectedLabel}\n {tokensToObserve ? ` (~${formatTokens(tokensToObserve)} tokens)` : ''}\n </span>\n </div>\n </div>\n );\n }\n\n if (isFailed) {\n const error = omData.error;\n const failedLabel = isReflection ? 'Reflection failed' : 'Observation failed';\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div className=\"my-1\">\n <button\n onClick={() => setIsExpanded(!isExpanded)}\n className=\"inline-flex cursor-pointer items-center gap-1.5 rounded-md bg-red-500/10 px-2 py-1 text-column text-red-600 hover:bg-red-500/20\"\n >\n {isExpanded ? <ChevronDown className=\"size-3\" /> : <ChevronRight className=\"size-3\" />}\n <XCircle className=\"size-3\" />\n <span>{failedLabel}</span>\n </button>\n\n {isExpanded && error && (\n <div className=\"mt-1 ml-4 rounded-md border border-red-500/10 bg-red-500/5 p-2 text-caption text-red-700\">\n <span className=\"text-column\">Error:</span> {error}\n </div>\n )}\n </div>\n </div>\n );\n }\n\n // Async buffering states - non-blocking background observation/reflection\n if (isBuffering) {\n const tokensToBuffer = omData.tokensToBuffer;\n const bufferingLabel = isReflection ? 'Buffering reflection' : 'Buffering observations';\n return (\n <div\n className=\"mt-2 mb-8\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <MarkerPill icon={<Loader2 className=\"animate-spin text-accent6\" />}>\n {bufferingLabel}\n {tokensToBuffer ? ` ~${formatTokens(tokensToBuffer)} tokens` : '...'}\n </MarkerPill>\n </div>\n );\n }\n\n if (isBufferingComplete) {\n const tokensBuffered = omData.tokensBuffered;\n const bufferedTokens = omData.bufferedTokens;\n const { observations, extractedValues, extractionFailures } = omData;\n const bufferedLabel = isReflection ? 'Buffered reflection' : 'Buffered observations';\n const compressionRatio =\n tokensBuffered && bufferedTokens && bufferedTokens > 0 ? Math.round(tokensBuffered / bufferedTokens) : null;\n\n const handleToggle = (e: React.MouseEvent) => {\n const scrollContainer = e.currentTarget.closest('[data-radix-scroll-area-viewport]') || document.documentElement;\n const scrollTop = scrollContainer.scrollTop;\n setIsExpanded(!isExpanded);\n requestAnimationFrame(() => {\n scrollContainer.scrollTop = scrollTop;\n });\n };\n\n return (\n <div\n className=\"mt-2 mb-8\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div>\n <MarkerPill expanded={isExpanded} onClick={handleToggle} icon={<ObservationIcon className=\"text-accent6\" />}>\n {bufferedLabel} {tokensBuffered ? formatTokens(tokensBuffered) : '?'}→\n {bufferedTokens ? formatTokens(bufferedTokens) : '?'} tokens\n {compressionRatio ? ` (-${compressionRatio}x)` : ''}\n </MarkerPill>\n\n {isExpanded && (\n <div\n className={`mt-2 ml-6 rounded-lg ${bufferExpandedBgColor} space-y-2 border p-4 text-caption ${bufferExpandedBorderColor}`}\n >\n {observations && <ObservationRenderer observations={observations} maxHeight=\"240px\" />}\n <ExtractedValuesPanel\n extractedValues={extractedValues}\n extractionFailures={extractionFailures}\n isExpanded={isExtractedExpanded}\n onToggle={() => setIsExtractedExpanded(!isExtractedExpanded)}\n />\n </div>\n )}\n </div>\n </div>\n );\n }\n\n if (isBufferingFailed) {\n const error = omData.error;\n const failedLabel = isReflection ? 'Buffered reflection failed' : 'Buffered observation failed';\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div className=\"my-1\">\n <button\n onClick={() => setIsExpanded(!isExpanded)}\n className=\"inline-flex cursor-pointer items-center gap-1.5 rounded-md border border-dashed border-red-400/40 bg-red-500/10 px-2 py-1 text-column text-red-600 hover:bg-red-500/20\"\n >\n {isExpanded ? <ChevronDown className=\"size-3\" /> : <ChevronRight className=\"size-3\" />}\n <XCircle className=\"size-3\" />\n <span>{failedLabel}</span>\n </button>\n\n {isExpanded && error && (\n <div className=\"mt-1 ml-4 rounded-md border border-red-500/10 bg-red-500/5 p-2 text-caption text-red-700\">\n <span className=\"text-column\">Error:</span> {error}\n </div>\n )}\n </div>\n </div>\n );\n }\n\n // Activation state - buffered observations have been activated into active observations\n // Styled to match sync observation/reflection markers (green scheme with Brain icon)\n if (isActivated) {\n const tokensActivated = omData.tokensActivated ?? 0;\n const observationTokens = omData.observationTokens ?? 0;\n const { observations } = omData;\n const activatedLabel = isReflection ? 'Reflected' : 'Observed';\n const compressionRatio =\n tokensActivated && observationTokens && observationTokens > 0\n ? Math.round(tokensActivated / observationTokens)\n : null;\n\n const handleToggle = (e: React.MouseEvent) => {\n const scrollContainer = e.currentTarget.closest('[data-radix-scroll-area-viewport]') || document.documentElement;\n const scrollTop = scrollContainer.scrollTop;\n setIsExpanded(!isExpanded);\n requestAnimationFrame(() => {\n scrollContainer.scrollTop = scrollTop;\n });\n };\n\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n data-om-no-highlight=\"true\"\n >\n <div className=\"my-1\">\n <button\n onClick={handleToggle}\n className={`inline-flex items-center gap-1.5 rounded-md px-2 py-1 ${completeBgColor} ${completeTextColor} text-column ${completeHoverBgColor} cursor-pointer`}\n >\n {isExpanded ? <ChevronDown className=\"size-3\" /> : <ChevronRight className=\"size-3\" />}\n {isReflection ? <Brain className=\"size-3\" /> : <ObservationIcon className=\"size-3\" />}\n <span>\n {activatedLabel} {tokensActivated ? formatTokens(tokensActivated) : '?'}→\n {observationTokens ? formatTokens(observationTokens) : '?'} tokens\n {compressionRatio ? ` (-${compressionRatio}x)` : ''}\n </span>\n </button>\n {isExpanded && (\n <div\n className={`mt-1 ml-6 rounded-md p-2 ${expandedBgColor} space-y-1.5 border text-caption ${expandedBorderColor}`}\n >\n {/* Stats row */}\n <div className={`flex gap-4 text-caption ${labelColor}`}>\n {tokensActivated > 0 && <span>Input: {formatTokens(tokensActivated)}</span>}\n {observationTokens > 0 && <span>Output: {formatTokens(observationTokens)}</span>}\n {compressionRatio && compressionRatio > 1 && <span>Compression: {compressionRatio}x</span>}\n </div>\n {observations && (\n <div className=\"mt-1 border-t border-border pt-1\">\n <ObservationRenderer observations={observations} maxHeight=\"500px\" />\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n );\n }\n\n // Unknown marker type - render generic\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div className=\"my-1 inline-flex items-center gap-1.5 rounded-md bg-fill px-2 py-1 text-column text-muted-foreground\">\n <Brain className=\"size-3\" />\n <span>{toolName}</span>\n </div>\n </div>\n );\n};\n"],"names":["jsx","Eye","jsxs","Fragment","Icon","ChevronDown","cn","Badge","ChevronRight","MarkdownRenderer","useState","useEffect","Loader2","Brain","Txt","formatDuration","ObservationRenderer","Unplug","XCircle"],"mappings":"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"}
@@ -4,8 +4,10 @@ import { useState, useEffect } from 'react';
4
4
  import { ObservationRenderer } from './observation-renderer.es.js';
5
5
  import { B as Badge } from '../../../../Badge-Bzn8Z-_I.js';
6
6
  import { M as MarkdownRenderer } from '../../../../markdown-renderer-Ces7VyRK.js';
7
+ import { T as Txt } from '../../../../Txt-BP1SRHmL.js';
7
8
  import { Icon } from '../../../../icons/Icon.es.js';
8
9
  import { c as cn } from '../../../../cn-65Adrsfj.js';
10
+ import { formatDuration } from '../../../../utils/duration.es.js';
9
11
 
10
12
  const formatTokens = (tokens) => {
11
13
  if (tokens >= 1e3) {
@@ -209,9 +211,9 @@ const ObservationMarkerBadge = ({ toolName, args, metadata }) => {
209
211
  "x"
210
212
  ] }),
211
213
  durationMs && /* @__PURE__ */ jsxs("span", { children: [
212
- "Duration: ",
213
- (durationMs / 1e3).toFixed(2),
214
- "s"
214
+ "Duration:",
215
+ " ",
216
+ /* @__PURE__ */ jsx(Txt, { as: "span", variant: "caption", font: "mono", children: formatDuration(durationMs) })
215
217
  ] })
216
218
  ] }),
217
219
  observations && /* @__PURE__ */ jsx("div", { className: "mt-1 border-t border-border pt-1", children: !currentTask && !suggestedResponse ? /* @__PURE__ */ jsx(ObservationRenderer, { observations, maxHeight: "500px" }) : /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -1 +1 @@
1
- {"version":3,"file":"observation-marker-badge.es.js","sources":["../../../../../src/domains/chat/tools/badges/observation-marker-badge.tsx"],"sourcesContent":["import { Brain, XCircle, Loader2, ChevronDown, ChevronRight, Unplug, Eye } from 'lucide-react';\nimport { useState, useEffect } from 'react';\nimport { ObservationRenderer } from './observation-renderer';\nimport { Badge } from '@/ds/components/Badge';\nimport { MarkdownRenderer } from '@/ds/components/MarkdownRenderer';\nimport { Icon } from '@/ds/icons/Icon';\nimport { cn } from '@/utils/cn';\n\nexport interface OmMarkerData {\n observedAt?: string;\n completedAt?: string;\n failedAt?: string;\n startedAt?: string;\n tokensObserved?: number;\n tokensToObserve?: number;\n observationTokens?: number;\n observations?: string;\n currentTask?: string;\n suggestedResponse?: string;\n extractedValues?: Record<string, unknown>;\n extractionFailures?: Array<{ slug: string; error: string }>;\n durationMs?: number;\n error?: string;\n recordId?: string;\n cycleId?: string;\n threadId?: string;\n threadIds?: string[];\n operationType?: 'observation' | 'reflection';\n _state?: 'loading' | 'complete' | 'failed' | 'buffering' | 'buffering-complete' | 'buffering-failed' | 'activated';\n // Activation-specific fields\n chunksActivated?: number;\n tokensActivated?: number;\n messagesActivated?: number;\n config?: {\n scope?: string;\n messageTokens?: number;\n observationTokens?: number;\n };\n // Buffering-specific fields\n tokensToBuffer?: number;\n tokensBuffered?: number;\n bufferedTokens?: number;\n}\n\nexport interface ObservationMarkerBadgeProps {\n toolName: string;\n args: Record<string, unknown>;\n metadata?: {\n mode?: string;\n omData?: OmMarkerData;\n };\n}\n\n/**\n * Format token count for display (e.g., 7234 -> \"7.2k\", 234 -> \"234\")\n */\nconst formatTokens = (tokens: number): string => {\n if (tokens >= 1000) {\n return `${(tokens / 1000).toFixed(1)}k`;\n }\n return String(Math.round(tokens));\n};\n\nconst hasExtractedValue = (value: unknown) => value !== undefined && value !== null && value !== '';\n\nconst getExtractedValueEntries = (values?: Record<string, unknown>) => {\n return Object.entries(values ?? {}).filter(([, value]) => hasExtractedValue(value));\n};\n\nconst formatExtractedValue = (value: unknown): string => {\n if (typeof value === 'string') return value;\n if (typeof value === 'number' || typeof value === 'boolean') return String(value);\n\n try {\n return JSON.stringify(value, null, 2) ?? String(value);\n } catch {\n return String(value);\n }\n};\n\nconst isStructuredExtractedValue = (value: unknown) => typeof value === 'object' && value !== null;\n\nconst ObservationIcon = ({ className }: { className?: string }) => <Eye className={className} />;\n\nconst MarkerPill = ({\n children,\n icon,\n expanded,\n onClick,\n className,\n}: {\n children: React.ReactNode;\n icon: React.ReactNode;\n expanded?: boolean;\n onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n className?: string;\n}) => {\n const content = (\n <>\n {onClick && (\n <Icon>\n <ChevronDown className={cn('transition-all', expanded ? 'rotate-0' : '-rotate-90')} />\n </Icon>\n )}\n <Badge icon={icon}>{children}</Badge>\n </>\n );\n\n if (!onClick) {\n return <div className={cn('inline-flex items-center gap-2', className)}>{content}</div>;\n }\n\n return (\n <button onClick={onClick} className={cn('inline-flex items-center gap-2', className)} type=\"button\">\n {content}\n </button>\n );\n};\n\nconst ExtractedValuesPanel = ({\n extractedValues,\n extractionFailures,\n isExpanded,\n onToggle,\n}: {\n extractedValues?: Record<string, unknown>;\n extractionFailures?: Array<{ slug: string; error: string }>;\n isExpanded: boolean;\n onToggle: () => void;\n}) => {\n const entries = getExtractedValueEntries(extractedValues);\n const failures = extractionFailures ?? [];\n\n if (entries.length === 0 && failures.length === 0) return null;\n\n return (\n <div className=\"mt-2 border-t border-border pt-2\">\n <button\n onClick={onToggle}\n className=\"flex items-center gap-1 text-meta tracking-wide text-foreground uppercase transition-opacity hover:opacity-80\"\n >\n {isExpanded ? <ChevronDown className=\"size-2.5\" /> : <ChevronRight className=\"size-2.5\" />}\n Extractions ({entries.length}){failures.length > 0 ? ` · ${failures.length} failed` : ''}\n </button>\n {isExpanded && (\n <div className=\"mt-1 space-y-2\">\n {entries.map(([slug, value]) => (\n <div key={slug} className=\"rounded border border-border bg-fill-subtle p-2\">\n <div className=\"text-meta tracking-wide text-foreground/70 uppercase\">{slug}</div>\n {isStructuredExtractedValue(value) ? (\n <pre className=\"mt-1 max-h-40 overflow-auto text-caption break-words whitespace-pre-wrap text-foreground/80\">\n {formatExtractedValue(value)}\n </pre>\n ) : (\n <div className=\"mt-1 [&_code]:rounded [&_code]:bg-fill [&_code]:px-1 [&_code]:py-0.5 [&_code]:text-meta\">\n <MarkdownRenderer className=\"text-caption text-foreground/80\">\n {formatExtractedValue(value)}\n </MarkdownRenderer>\n </div>\n )}\n </div>\n ))}\n {failures.map(failure => (\n <div key={failure.slug} className=\"rounded border border-red-500/20 bg-red-500/5 p-2 text-red-700\">\n <div className=\"text-meta tracking-wide uppercase\">{failure.slug}</div>\n <div className=\"mt-1 text-caption\">{failure.error}</div>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n};\n\n/**\n * Renders an inline badge for OM observation markers.\n * These are converted from data-om-* parts to tool-call format for assistant-ui compatibility.\n *\n * The badge includes a `data-om-badge` attribute with the cycleId so that\n * the BracketOverlay can find it via DOM queries for positioning bracket lines.\n */\nexport const ObservationMarkerBadge = ({ toolName, args, metadata }: ObservationMarkerBadgeProps) => {\n const omData = (metadata?.omData || args) as OmMarkerData;\n const cycleId = omData.cycleId || '';\n\n // Use the _state field set during part merging, or fallback to detecting from data\n const state =\n omData._state ||\n (omData.failedAt\n ? 'failed'\n : omData.completedAt\n ? 'complete'\n : (omData as any).disconnectedAt\n ? 'disconnected'\n : 'loading');\n\n const isStart = state === 'loading';\n const isEnd = state === 'complete';\n const isFailed = state === 'failed';\n const isDisconnected = state === 'disconnected';\n const isBuffering = state === 'buffering';\n const isBufferingComplete = state === 'buffering-complete';\n const isBufferingFailed = state === 'buffering-failed';\n const isActivated = state === 'activated';\n const isReflection = omData.operationType === 'reflection';\n const hasExtractionContent =\n getExtractedValueEntries(omData.extractedValues).length > 0 || (omData.extractionFailures?.length ?? 0) > 0;\n const shouldAutoExpand = (isFailed && isReflection) || hasExtractionContent;\n\n // Failed reflections and extraction-bearing markers should expand by default to draw attention to new details.\n const [isExpanded, setIsExpanded] = useState(shouldAutoExpand);\n\n // Auto-expand when completion details arrive after the marker was mounted during loading.\n useEffect(() => {\n if (shouldAutoExpand) {\n setIsExpanded(true);\n }\n }, [shouldAutoExpand]);\n const [isObservationsExpanded, setIsObservationsExpanded] = useState(true);\n const [isTaskExpanded, setIsTaskExpanded] = useState(false);\n const [isResponseExpanded, setIsResponseExpanded] = useState(false);\n const [isExtractedExpanded, setIsExtractedExpanded] = useState(false);\n\n // Colors - same scheme for both observation and reflection\n const bgColor = 'bg-blue-500/10';\n const textColor = 'text-blue-600';\n const completeBgColor = 'bg-green-500/10';\n const completeTextColor = 'text-green-600';\n const completeHoverBgColor = 'hover:bg-green-500/20';\n // Same colors for expanded state\n const expandedBgColor = 'bg-green-500/5';\n const expandedBorderColor = 'border-green-500/10';\n const labelColor = 'text-green-600';\n const bufferExpandedBgColor = 'bg-background';\n const bufferExpandedBorderColor = 'border-border-1';\n const actionLabel = isReflection ? 'Reflecting' : 'Observing';\n const completedLabel = isReflection ? 'Reflected' : 'Observed';\n\n // Render based on marker type\n if (isStart) {\n const tokensToObserve = omData.tokensToObserve;\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div\n className={`inline-flex items-center gap-1.5 rounded-md px-2 py-1 ${bgColor} ${textColor} my-1 text-column`}\n >\n <Loader2 className=\"size-3 animate-spin\" />\n {isReflection ? <Brain className=\"size-3\" /> : <ObservationIcon className=\"size-3\" />}\n <span>\n {actionLabel}\n {tokensToObserve ? ` ~${formatTokens(tokensToObserve)} tokens` : '...'}\n </span>\n </div>\n </div>\n );\n }\n\n if (isEnd) {\n const tokensObserved = omData.tokensObserved;\n const observationTokens = omData.observationTokens;\n const observations = omData.observations;\n const currentTask = omData.currentTask;\n const suggestedResponse = omData.suggestedResponse;\n const extractedValues = omData.extractedValues;\n const extractionFailures = omData.extractionFailures;\n const durationMs = omData.durationMs;\n const compressionRatio =\n tokensObserved && observationTokens && observationTokens > 0\n ? Math.round(tokensObserved / observationTokens)\n : null;\n\n const handleToggle = (e: React.MouseEvent) => {\n // Prevent scroll jump by preserving scroll position\n const scrollContainer = e.currentTarget.closest('[data-radix-scroll-area-viewport]') || document.documentElement;\n const scrollTop = scrollContainer.scrollTop;\n setIsExpanded(!isExpanded);\n // Restore scroll position after React updates\n requestAnimationFrame(() => {\n scrollContainer.scrollTop = scrollTop;\n });\n };\n\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div className=\"my-1\">\n <button\n onClick={handleToggle}\n className={`inline-flex items-center gap-1.5 rounded-md px-2 py-1 ${completeBgColor} ${completeTextColor} text-column ${completeHoverBgColor} cursor-pointer`}\n >\n {isExpanded ? <ChevronDown className=\"size-3\" /> : <ChevronRight className=\"size-3\" />}\n {isReflection ? <Brain className=\"size-3\" /> : <ObservationIcon className=\"size-3\" />}\n <span>\n {completedLabel} {tokensObserved ? formatTokens(tokensObserved) : '?'}→\n {observationTokens ? formatTokens(observationTokens) : '?'} tokens\n {compressionRatio ? ` (-${compressionRatio}x)` : ''}\n </span>\n </button>\n {isExpanded && (\n <div\n className={`mt-1 ml-6 rounded-md p-2 ${expandedBgColor} space-y-1.5 border text-caption ${expandedBorderColor}`}\n >\n {/* Stats row - all green */}\n <div className={`flex gap-4 text-caption ${labelColor}`}>\n {tokensObserved && <span>Input: {formatTokens(tokensObserved)}</span>}\n {observationTokens && <span>Output: {formatTokens(observationTokens)}</span>}\n {compressionRatio && compressionRatio > 1 && <span>Compression: {compressionRatio}x</span>}\n {durationMs && <span>Duration: {(durationMs / 1000).toFixed(2)}s</span>}\n </div>\n {observations && (\n <div className=\"mt-1 border-t border-border pt-1\">\n {/* If there's no currentTask or suggestedResponse, show observations directly without collapsible wrapper */}\n {!currentTask && !suggestedResponse ? (\n <ObservationRenderer observations={observations} maxHeight=\"500px\" />\n ) : (\n <>\n <button\n onClick={() => setIsObservationsExpanded(!isObservationsExpanded)}\n className=\"flex items-center gap-1 text-meta tracking-wide text-foreground uppercase transition-opacity hover:opacity-80\"\n >\n {isObservationsExpanded ? (\n <ChevronDown className=\"size-2.5\" />\n ) : (\n <ChevronRight className=\"size-2.5\" />\n )}\n {isReflection ? 'Reflections' : 'Observations'}\n </button>\n {isObservationsExpanded && (\n <div className=\"mt-1\">\n <ObservationRenderer observations={observations} maxHeight=\"500px\" />\n </div>\n )}\n </>\n )}\n </div>\n )}\n {currentTask && (\n <div className=\"mt-2 border-t border-border pt-2\">\n <button\n onClick={() => setIsTaskExpanded(!isTaskExpanded)}\n className=\"flex items-center gap-1 text-meta tracking-wide text-foreground uppercase transition-opacity hover:opacity-80\"\n >\n {isTaskExpanded ? <ChevronDown className=\"size-2.5\" /> : <ChevronRight className=\"size-2.5\" />}\n Current Task\n </button>\n {isTaskExpanded && (\n <div className=\"mt-1 [&_code]:rounded [&_code]:bg-fill [&_code]:px-1 [&_code]:py-0.5 [&_code]:text-meta\">\n <MarkdownRenderer className=\"text-caption text-foreground\">{currentTask}</MarkdownRenderer>\n </div>\n )}\n </div>\n )}\n {suggestedResponse && (\n <div className=\"mt-2 border-t border-border pt-2\">\n <button\n onClick={() => setIsResponseExpanded(!isResponseExpanded)}\n className=\"flex items-center gap-1 text-meta tracking-wide text-foreground uppercase transition-opacity hover:opacity-80\"\n >\n {isResponseExpanded ? <ChevronDown className=\"size-2.5\" /> : <ChevronRight className=\"size-2.5\" />}\n Suggested Response\n </button>\n {isResponseExpanded && (\n <div className=\"mt-1 italic [&_code]:rounded [&_code]:bg-fill [&_code]:px-1 [&_code]:py-0.5 [&_code]:text-meta\">\n <MarkdownRenderer className=\"text-caption text-foreground/80\">\n {suggestedResponse}\n </MarkdownRenderer>\n </div>\n )}\n </div>\n )}\n <ExtractedValuesPanel\n extractedValues={extractedValues}\n extractionFailures={extractionFailures}\n isExpanded={isExtractedExpanded}\n onToggle={() => setIsExtractedExpanded(!isExtractedExpanded)}\n />\n </div>\n )}\n </div>\n </div>\n );\n }\n\n if (isDisconnected) {\n const disconnectedLabel = isReflection ? 'Reflection interrupted' : 'Observation interrupted';\n const tokensToObserve = omData.tokensToObserve;\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div className=\"my-1 inline-flex items-center gap-1.5 rounded-md bg-yellow-500/10 px-2 py-1 text-column text-yellow-600\">\n <Unplug className=\"size-3\" />\n <span>\n {disconnectedLabel}\n {tokensToObserve ? ` (~${formatTokens(tokensToObserve)} tokens)` : ''}\n </span>\n </div>\n </div>\n );\n }\n\n if (isFailed) {\n const error = omData.error;\n const failedLabel = isReflection ? 'Reflection failed' : 'Observation failed';\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div className=\"my-1\">\n <button\n onClick={() => setIsExpanded(!isExpanded)}\n className=\"inline-flex cursor-pointer items-center gap-1.5 rounded-md bg-red-500/10 px-2 py-1 text-column text-red-600 hover:bg-red-500/20\"\n >\n {isExpanded ? <ChevronDown className=\"size-3\" /> : <ChevronRight className=\"size-3\" />}\n <XCircle className=\"size-3\" />\n <span>{failedLabel}</span>\n </button>\n\n {isExpanded && error && (\n <div className=\"mt-1 ml-4 rounded-md border border-red-500/10 bg-red-500/5 p-2 text-caption text-red-700\">\n <span className=\"text-column\">Error:</span> {error}\n </div>\n )}\n </div>\n </div>\n );\n }\n\n // Async buffering states - non-blocking background observation/reflection\n if (isBuffering) {\n const tokensToBuffer = omData.tokensToBuffer;\n const bufferingLabel = isReflection ? 'Buffering reflection' : 'Buffering observations';\n return (\n <div\n className=\"mt-2 mb-8\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <MarkerPill icon={<Loader2 className=\"animate-spin text-accent6\" />}>\n {bufferingLabel}\n {tokensToBuffer ? ` ~${formatTokens(tokensToBuffer)} tokens` : '...'}\n </MarkerPill>\n </div>\n );\n }\n\n if (isBufferingComplete) {\n const tokensBuffered = omData.tokensBuffered;\n const bufferedTokens = omData.bufferedTokens;\n const { observations, extractedValues, extractionFailures } = omData;\n const bufferedLabel = isReflection ? 'Buffered reflection' : 'Buffered observations';\n const compressionRatio =\n tokensBuffered && bufferedTokens && bufferedTokens > 0 ? Math.round(tokensBuffered / bufferedTokens) : null;\n\n const handleToggle = (e: React.MouseEvent) => {\n const scrollContainer = e.currentTarget.closest('[data-radix-scroll-area-viewport]') || document.documentElement;\n const scrollTop = scrollContainer.scrollTop;\n setIsExpanded(!isExpanded);\n requestAnimationFrame(() => {\n scrollContainer.scrollTop = scrollTop;\n });\n };\n\n return (\n <div\n className=\"mt-2 mb-8\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div>\n <MarkerPill expanded={isExpanded} onClick={handleToggle} icon={<ObservationIcon className=\"text-accent6\" />}>\n {bufferedLabel} {tokensBuffered ? formatTokens(tokensBuffered) : '?'}→\n {bufferedTokens ? formatTokens(bufferedTokens) : '?'} tokens\n {compressionRatio ? ` (-${compressionRatio}x)` : ''}\n </MarkerPill>\n\n {isExpanded && (\n <div\n className={`mt-2 ml-6 rounded-lg ${bufferExpandedBgColor} space-y-2 border p-4 text-caption ${bufferExpandedBorderColor}`}\n >\n {observations && <ObservationRenderer observations={observations} maxHeight=\"240px\" />}\n <ExtractedValuesPanel\n extractedValues={extractedValues}\n extractionFailures={extractionFailures}\n isExpanded={isExtractedExpanded}\n onToggle={() => setIsExtractedExpanded(!isExtractedExpanded)}\n />\n </div>\n )}\n </div>\n </div>\n );\n }\n\n if (isBufferingFailed) {\n const error = omData.error;\n const failedLabel = isReflection ? 'Buffered reflection failed' : 'Buffered observation failed';\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div className=\"my-1\">\n <button\n onClick={() => setIsExpanded(!isExpanded)}\n className=\"inline-flex cursor-pointer items-center gap-1.5 rounded-md border border-dashed border-red-400/40 bg-red-500/10 px-2 py-1 text-column text-red-600 hover:bg-red-500/20\"\n >\n {isExpanded ? <ChevronDown className=\"size-3\" /> : <ChevronRight className=\"size-3\" />}\n <XCircle className=\"size-3\" />\n <span>{failedLabel}</span>\n </button>\n\n {isExpanded && error && (\n <div className=\"mt-1 ml-4 rounded-md border border-red-500/10 bg-red-500/5 p-2 text-caption text-red-700\">\n <span className=\"text-column\">Error:</span> {error}\n </div>\n )}\n </div>\n </div>\n );\n }\n\n // Activation state - buffered observations have been activated into active observations\n // Styled to match sync observation/reflection markers (green scheme with Brain icon)\n if (isActivated) {\n const tokensActivated = omData.tokensActivated ?? 0;\n const observationTokens = omData.observationTokens ?? 0;\n const { observations } = omData;\n const activatedLabel = isReflection ? 'Reflected' : 'Observed';\n const compressionRatio =\n tokensActivated && observationTokens && observationTokens > 0\n ? Math.round(tokensActivated / observationTokens)\n : null;\n\n const handleToggle = (e: React.MouseEvent) => {\n const scrollContainer = e.currentTarget.closest('[data-radix-scroll-area-viewport]') || document.documentElement;\n const scrollTop = scrollContainer.scrollTop;\n setIsExpanded(!isExpanded);\n requestAnimationFrame(() => {\n scrollContainer.scrollTop = scrollTop;\n });\n };\n\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n data-om-no-highlight=\"true\"\n >\n <div className=\"my-1\">\n <button\n onClick={handleToggle}\n className={`inline-flex items-center gap-1.5 rounded-md px-2 py-1 ${completeBgColor} ${completeTextColor} text-column ${completeHoverBgColor} cursor-pointer`}\n >\n {isExpanded ? <ChevronDown className=\"size-3\" /> : <ChevronRight className=\"size-3\" />}\n {isReflection ? <Brain className=\"size-3\" /> : <ObservationIcon className=\"size-3\" />}\n <span>\n {activatedLabel} {tokensActivated ? formatTokens(tokensActivated) : '?'}→\n {observationTokens ? formatTokens(observationTokens) : '?'} tokens\n {compressionRatio ? ` (-${compressionRatio}x)` : ''}\n </span>\n </button>\n {isExpanded && (\n <div\n className={`mt-1 ml-6 rounded-md p-2 ${expandedBgColor} space-y-1.5 border text-caption ${expandedBorderColor}`}\n >\n {/* Stats row */}\n <div className={`flex gap-4 text-caption ${labelColor}`}>\n {tokensActivated > 0 && <span>Input: {formatTokens(tokensActivated)}</span>}\n {observationTokens > 0 && <span>Output: {formatTokens(observationTokens)}</span>}\n {compressionRatio && compressionRatio > 1 && <span>Compression: {compressionRatio}x</span>}\n </div>\n {observations && (\n <div className=\"mt-1 border-t border-border pt-1\">\n <ObservationRenderer observations={observations} maxHeight=\"500px\" />\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n );\n }\n\n // Unknown marker type - render generic\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div className=\"my-1 inline-flex items-center gap-1.5 rounded-md bg-fill px-2 py-1 text-column text-muted-foreground\">\n <Brain className=\"size-3\" />\n <span>{toolName}</span>\n </div>\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"observation-marker-badge.es.js","sources":["../../../../../src/domains/chat/tools/badges/observation-marker-badge.tsx"],"sourcesContent":["import { Brain, XCircle, Loader2, ChevronDown, ChevronRight, Unplug, Eye } from 'lucide-react';\nimport { useState, useEffect } from 'react';\nimport { ObservationRenderer } from './observation-renderer';\nimport { Badge } from '@/ds/components/Badge';\nimport { MarkdownRenderer } from '@/ds/components/MarkdownRenderer';\nimport { Txt } from '@/ds/components/Txt/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { cn } from '@/utils/cn';\nimport { formatDuration } from '@/utils/duration';\n\nexport interface OmMarkerData {\n observedAt?: string;\n completedAt?: string;\n failedAt?: string;\n startedAt?: string;\n tokensObserved?: number;\n tokensToObserve?: number;\n observationTokens?: number;\n observations?: string;\n currentTask?: string;\n suggestedResponse?: string;\n extractedValues?: Record<string, unknown>;\n extractionFailures?: Array<{ slug: string; error: string }>;\n durationMs?: number;\n error?: string;\n recordId?: string;\n cycleId?: string;\n threadId?: string;\n threadIds?: string[];\n operationType?: 'observation' | 'reflection';\n _state?: 'loading' | 'complete' | 'failed' | 'buffering' | 'buffering-complete' | 'buffering-failed' | 'activated';\n // Activation-specific fields\n chunksActivated?: number;\n tokensActivated?: number;\n messagesActivated?: number;\n config?: {\n scope?: string;\n messageTokens?: number;\n observationTokens?: number;\n };\n // Buffering-specific fields\n tokensToBuffer?: number;\n tokensBuffered?: number;\n bufferedTokens?: number;\n}\n\nexport interface ObservationMarkerBadgeProps {\n toolName: string;\n args: Record<string, unknown>;\n metadata?: {\n mode?: string;\n omData?: OmMarkerData;\n };\n}\n\n/**\n * Format token count for display (e.g., 7234 -> \"7.2k\", 234 -> \"234\")\n */\nconst formatTokens = (tokens: number): string => {\n if (tokens >= 1000) {\n return `${(tokens / 1000).toFixed(1)}k`;\n }\n return String(Math.round(tokens));\n};\n\nconst hasExtractedValue = (value: unknown) => value !== undefined && value !== null && value !== '';\n\nconst getExtractedValueEntries = (values?: Record<string, unknown>) => {\n return Object.entries(values ?? {}).filter(([, value]) => hasExtractedValue(value));\n};\n\nconst formatExtractedValue = (value: unknown): string => {\n if (typeof value === 'string') return value;\n if (typeof value === 'number' || typeof value === 'boolean') return String(value);\n\n try {\n return JSON.stringify(value, null, 2) ?? String(value);\n } catch {\n return String(value);\n }\n};\n\nconst isStructuredExtractedValue = (value: unknown) => typeof value === 'object' && value !== null;\n\nconst ObservationIcon = ({ className }: { className?: string }) => <Eye className={className} />;\n\nconst MarkerPill = ({\n children,\n icon,\n expanded,\n onClick,\n className,\n}: {\n children: React.ReactNode;\n icon: React.ReactNode;\n expanded?: boolean;\n onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n className?: string;\n}) => {\n const content = (\n <>\n {onClick && (\n <Icon>\n <ChevronDown className={cn('transition-all', expanded ? 'rotate-0' : '-rotate-90')} />\n </Icon>\n )}\n <Badge icon={icon}>{children}</Badge>\n </>\n );\n\n if (!onClick) {\n return <div className={cn('inline-flex items-center gap-2', className)}>{content}</div>;\n }\n\n return (\n <button onClick={onClick} className={cn('inline-flex items-center gap-2', className)} type=\"button\">\n {content}\n </button>\n );\n};\n\nconst ExtractedValuesPanel = ({\n extractedValues,\n extractionFailures,\n isExpanded,\n onToggle,\n}: {\n extractedValues?: Record<string, unknown>;\n extractionFailures?: Array<{ slug: string; error: string }>;\n isExpanded: boolean;\n onToggle: () => void;\n}) => {\n const entries = getExtractedValueEntries(extractedValues);\n const failures = extractionFailures ?? [];\n\n if (entries.length === 0 && failures.length === 0) return null;\n\n return (\n <div className=\"mt-2 border-t border-border pt-2\">\n <button\n onClick={onToggle}\n className=\"flex items-center gap-1 text-meta tracking-wide text-foreground uppercase transition-opacity hover:opacity-80\"\n >\n {isExpanded ? <ChevronDown className=\"size-2.5\" /> : <ChevronRight className=\"size-2.5\" />}\n Extractions ({entries.length}){failures.length > 0 ? ` · ${failures.length} failed` : ''}\n </button>\n {isExpanded && (\n <div className=\"mt-1 space-y-2\">\n {entries.map(([slug, value]) => (\n <div key={slug} className=\"rounded border border-border bg-fill-subtle p-2\">\n <div className=\"text-meta tracking-wide text-foreground/70 uppercase\">{slug}</div>\n {isStructuredExtractedValue(value) ? (\n <pre className=\"mt-1 max-h-40 overflow-auto text-caption break-words whitespace-pre-wrap text-foreground/80\">\n {formatExtractedValue(value)}\n </pre>\n ) : (\n <div className=\"mt-1 [&_code]:rounded [&_code]:bg-fill [&_code]:px-1 [&_code]:py-0.5 [&_code]:text-meta\">\n <MarkdownRenderer className=\"text-caption text-foreground/80\">\n {formatExtractedValue(value)}\n </MarkdownRenderer>\n </div>\n )}\n </div>\n ))}\n {failures.map(failure => (\n <div key={failure.slug} className=\"rounded border border-red-500/20 bg-red-500/5 p-2 text-red-700\">\n <div className=\"text-meta tracking-wide uppercase\">{failure.slug}</div>\n <div className=\"mt-1 text-caption\">{failure.error}</div>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n};\n\n/**\n * Renders an inline badge for OM observation markers.\n * These are converted from data-om-* parts to tool-call format for assistant-ui compatibility.\n *\n * The badge includes a `data-om-badge` attribute with the cycleId so that\n * the BracketOverlay can find it via DOM queries for positioning bracket lines.\n */\nexport const ObservationMarkerBadge = ({ toolName, args, metadata }: ObservationMarkerBadgeProps) => {\n const omData = (metadata?.omData || args) as OmMarkerData;\n const cycleId = omData.cycleId || '';\n\n // Use the _state field set during part merging, or fallback to detecting from data\n const state =\n omData._state ||\n (omData.failedAt\n ? 'failed'\n : omData.completedAt\n ? 'complete'\n : (omData as any).disconnectedAt\n ? 'disconnected'\n : 'loading');\n\n const isStart = state === 'loading';\n const isEnd = state === 'complete';\n const isFailed = state === 'failed';\n const isDisconnected = state === 'disconnected';\n const isBuffering = state === 'buffering';\n const isBufferingComplete = state === 'buffering-complete';\n const isBufferingFailed = state === 'buffering-failed';\n const isActivated = state === 'activated';\n const isReflection = omData.operationType === 'reflection';\n const hasExtractionContent =\n getExtractedValueEntries(omData.extractedValues).length > 0 || (omData.extractionFailures?.length ?? 0) > 0;\n const shouldAutoExpand = (isFailed && isReflection) || hasExtractionContent;\n\n // Failed reflections and extraction-bearing markers should expand by default to draw attention to new details.\n const [isExpanded, setIsExpanded] = useState(shouldAutoExpand);\n\n // Auto-expand when completion details arrive after the marker was mounted during loading.\n useEffect(() => {\n if (shouldAutoExpand) {\n setIsExpanded(true);\n }\n }, [shouldAutoExpand]);\n const [isObservationsExpanded, setIsObservationsExpanded] = useState(true);\n const [isTaskExpanded, setIsTaskExpanded] = useState(false);\n const [isResponseExpanded, setIsResponseExpanded] = useState(false);\n const [isExtractedExpanded, setIsExtractedExpanded] = useState(false);\n\n // Colors - same scheme for both observation and reflection\n const bgColor = 'bg-blue-500/10';\n const textColor = 'text-blue-600';\n const completeBgColor = 'bg-green-500/10';\n const completeTextColor = 'text-green-600';\n const completeHoverBgColor = 'hover:bg-green-500/20';\n // Same colors for expanded state\n const expandedBgColor = 'bg-green-500/5';\n const expandedBorderColor = 'border-green-500/10';\n const labelColor = 'text-green-600';\n const bufferExpandedBgColor = 'bg-background';\n const bufferExpandedBorderColor = 'border-border-1';\n const actionLabel = isReflection ? 'Reflecting' : 'Observing';\n const completedLabel = isReflection ? 'Reflected' : 'Observed';\n\n // Render based on marker type\n if (isStart) {\n const tokensToObserve = omData.tokensToObserve;\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div\n className={`inline-flex items-center gap-1.5 rounded-md px-2 py-1 ${bgColor} ${textColor} my-1 text-column`}\n >\n <Loader2 className=\"size-3 animate-spin\" />\n {isReflection ? <Brain className=\"size-3\" /> : <ObservationIcon className=\"size-3\" />}\n <span>\n {actionLabel}\n {tokensToObserve ? ` ~${formatTokens(tokensToObserve)} tokens` : '...'}\n </span>\n </div>\n </div>\n );\n }\n\n if (isEnd) {\n const tokensObserved = omData.tokensObserved;\n const observationTokens = omData.observationTokens;\n const observations = omData.observations;\n const currentTask = omData.currentTask;\n const suggestedResponse = omData.suggestedResponse;\n const extractedValues = omData.extractedValues;\n const extractionFailures = omData.extractionFailures;\n const durationMs = omData.durationMs;\n const compressionRatio =\n tokensObserved && observationTokens && observationTokens > 0\n ? Math.round(tokensObserved / observationTokens)\n : null;\n\n const handleToggle = (e: React.MouseEvent) => {\n // Prevent scroll jump by preserving scroll position\n const scrollContainer = e.currentTarget.closest('[data-radix-scroll-area-viewport]') || document.documentElement;\n const scrollTop = scrollContainer.scrollTop;\n setIsExpanded(!isExpanded);\n // Restore scroll position after React updates\n requestAnimationFrame(() => {\n scrollContainer.scrollTop = scrollTop;\n });\n };\n\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div className=\"my-1\">\n <button\n onClick={handleToggle}\n className={`inline-flex items-center gap-1.5 rounded-md px-2 py-1 ${completeBgColor} ${completeTextColor} text-column ${completeHoverBgColor} cursor-pointer`}\n >\n {isExpanded ? <ChevronDown className=\"size-3\" /> : <ChevronRight className=\"size-3\" />}\n {isReflection ? <Brain className=\"size-3\" /> : <ObservationIcon className=\"size-3\" />}\n <span>\n {completedLabel} {tokensObserved ? formatTokens(tokensObserved) : '?'}→\n {observationTokens ? formatTokens(observationTokens) : '?'} tokens\n {compressionRatio ? ` (-${compressionRatio}x)` : ''}\n </span>\n </button>\n {isExpanded && (\n <div\n className={`mt-1 ml-6 rounded-md p-2 ${expandedBgColor} space-y-1.5 border text-caption ${expandedBorderColor}`}\n >\n {/* Stats row - all green */}\n <div className={`flex gap-4 text-caption ${labelColor}`}>\n {tokensObserved && <span>Input: {formatTokens(tokensObserved)}</span>}\n {observationTokens && <span>Output: {formatTokens(observationTokens)}</span>}\n {compressionRatio && compressionRatio > 1 && <span>Compression: {compressionRatio}x</span>}\n {durationMs && (\n <span>\n Duration:{' '}\n <Txt as=\"span\" variant=\"caption\" font=\"mono\">\n {formatDuration(durationMs)}\n </Txt>\n </span>\n )}\n </div>\n {observations && (\n <div className=\"mt-1 border-t border-border pt-1\">\n {/* If there's no currentTask or suggestedResponse, show observations directly without collapsible wrapper */}\n {!currentTask && !suggestedResponse ? (\n <ObservationRenderer observations={observations} maxHeight=\"500px\" />\n ) : (\n <>\n <button\n onClick={() => setIsObservationsExpanded(!isObservationsExpanded)}\n className=\"flex items-center gap-1 text-meta tracking-wide text-foreground uppercase transition-opacity hover:opacity-80\"\n >\n {isObservationsExpanded ? (\n <ChevronDown className=\"size-2.5\" />\n ) : (\n <ChevronRight className=\"size-2.5\" />\n )}\n {isReflection ? 'Reflections' : 'Observations'}\n </button>\n {isObservationsExpanded && (\n <div className=\"mt-1\">\n <ObservationRenderer observations={observations} maxHeight=\"500px\" />\n </div>\n )}\n </>\n )}\n </div>\n )}\n {currentTask && (\n <div className=\"mt-2 border-t border-border pt-2\">\n <button\n onClick={() => setIsTaskExpanded(!isTaskExpanded)}\n className=\"flex items-center gap-1 text-meta tracking-wide text-foreground uppercase transition-opacity hover:opacity-80\"\n >\n {isTaskExpanded ? <ChevronDown className=\"size-2.5\" /> : <ChevronRight className=\"size-2.5\" />}\n Current Task\n </button>\n {isTaskExpanded && (\n <div className=\"mt-1 [&_code]:rounded [&_code]:bg-fill [&_code]:px-1 [&_code]:py-0.5 [&_code]:text-meta\">\n <MarkdownRenderer className=\"text-caption text-foreground\">{currentTask}</MarkdownRenderer>\n </div>\n )}\n </div>\n )}\n {suggestedResponse && (\n <div className=\"mt-2 border-t border-border pt-2\">\n <button\n onClick={() => setIsResponseExpanded(!isResponseExpanded)}\n className=\"flex items-center gap-1 text-meta tracking-wide text-foreground uppercase transition-opacity hover:opacity-80\"\n >\n {isResponseExpanded ? <ChevronDown className=\"size-2.5\" /> : <ChevronRight className=\"size-2.5\" />}\n Suggested Response\n </button>\n {isResponseExpanded && (\n <div className=\"mt-1 italic [&_code]:rounded [&_code]:bg-fill [&_code]:px-1 [&_code]:py-0.5 [&_code]:text-meta\">\n <MarkdownRenderer className=\"text-caption text-foreground/80\">\n {suggestedResponse}\n </MarkdownRenderer>\n </div>\n )}\n </div>\n )}\n <ExtractedValuesPanel\n extractedValues={extractedValues}\n extractionFailures={extractionFailures}\n isExpanded={isExtractedExpanded}\n onToggle={() => setIsExtractedExpanded(!isExtractedExpanded)}\n />\n </div>\n )}\n </div>\n </div>\n );\n }\n\n if (isDisconnected) {\n const disconnectedLabel = isReflection ? 'Reflection interrupted' : 'Observation interrupted';\n const tokensToObserve = omData.tokensToObserve;\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div className=\"my-1 inline-flex items-center gap-1.5 rounded-md bg-yellow-500/10 px-2 py-1 text-column text-yellow-600\">\n <Unplug className=\"size-3\" />\n <span>\n {disconnectedLabel}\n {tokensToObserve ? ` (~${formatTokens(tokensToObserve)} tokens)` : ''}\n </span>\n </div>\n </div>\n );\n }\n\n if (isFailed) {\n const error = omData.error;\n const failedLabel = isReflection ? 'Reflection failed' : 'Observation failed';\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div className=\"my-1\">\n <button\n onClick={() => setIsExpanded(!isExpanded)}\n className=\"inline-flex cursor-pointer items-center gap-1.5 rounded-md bg-red-500/10 px-2 py-1 text-column text-red-600 hover:bg-red-500/20\"\n >\n {isExpanded ? <ChevronDown className=\"size-3\" /> : <ChevronRight className=\"size-3\" />}\n <XCircle className=\"size-3\" />\n <span>{failedLabel}</span>\n </button>\n\n {isExpanded && error && (\n <div className=\"mt-1 ml-4 rounded-md border border-red-500/10 bg-red-500/5 p-2 text-caption text-red-700\">\n <span className=\"text-column\">Error:</span> {error}\n </div>\n )}\n </div>\n </div>\n );\n }\n\n // Async buffering states - non-blocking background observation/reflection\n if (isBuffering) {\n const tokensToBuffer = omData.tokensToBuffer;\n const bufferingLabel = isReflection ? 'Buffering reflection' : 'Buffering observations';\n return (\n <div\n className=\"mt-2 mb-8\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <MarkerPill icon={<Loader2 className=\"animate-spin text-accent6\" />}>\n {bufferingLabel}\n {tokensToBuffer ? ` ~${formatTokens(tokensToBuffer)} tokens` : '...'}\n </MarkerPill>\n </div>\n );\n }\n\n if (isBufferingComplete) {\n const tokensBuffered = omData.tokensBuffered;\n const bufferedTokens = omData.bufferedTokens;\n const { observations, extractedValues, extractionFailures } = omData;\n const bufferedLabel = isReflection ? 'Buffered reflection' : 'Buffered observations';\n const compressionRatio =\n tokensBuffered && bufferedTokens && bufferedTokens > 0 ? Math.round(tokensBuffered / bufferedTokens) : null;\n\n const handleToggle = (e: React.MouseEvent) => {\n const scrollContainer = e.currentTarget.closest('[data-radix-scroll-area-viewport]') || document.documentElement;\n const scrollTop = scrollContainer.scrollTop;\n setIsExpanded(!isExpanded);\n requestAnimationFrame(() => {\n scrollContainer.scrollTop = scrollTop;\n });\n };\n\n return (\n <div\n className=\"mt-2 mb-8\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div>\n <MarkerPill expanded={isExpanded} onClick={handleToggle} icon={<ObservationIcon className=\"text-accent6\" />}>\n {bufferedLabel} {tokensBuffered ? formatTokens(tokensBuffered) : '?'}→\n {bufferedTokens ? formatTokens(bufferedTokens) : '?'} tokens\n {compressionRatio ? ` (-${compressionRatio}x)` : ''}\n </MarkerPill>\n\n {isExpanded && (\n <div\n className={`mt-2 ml-6 rounded-lg ${bufferExpandedBgColor} space-y-2 border p-4 text-caption ${bufferExpandedBorderColor}`}\n >\n {observations && <ObservationRenderer observations={observations} maxHeight=\"240px\" />}\n <ExtractedValuesPanel\n extractedValues={extractedValues}\n extractionFailures={extractionFailures}\n isExpanded={isExtractedExpanded}\n onToggle={() => setIsExtractedExpanded(!isExtractedExpanded)}\n />\n </div>\n )}\n </div>\n </div>\n );\n }\n\n if (isBufferingFailed) {\n const error = omData.error;\n const failedLabel = isReflection ? 'Buffered reflection failed' : 'Buffered observation failed';\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div className=\"my-1\">\n <button\n onClick={() => setIsExpanded(!isExpanded)}\n className=\"inline-flex cursor-pointer items-center gap-1.5 rounded-md border border-dashed border-red-400/40 bg-red-500/10 px-2 py-1 text-column text-red-600 hover:bg-red-500/20\"\n >\n {isExpanded ? <ChevronDown className=\"size-3\" /> : <ChevronRight className=\"size-3\" />}\n <XCircle className=\"size-3\" />\n <span>{failedLabel}</span>\n </button>\n\n {isExpanded && error && (\n <div className=\"mt-1 ml-4 rounded-md border border-red-500/10 bg-red-500/5 p-2 text-caption text-red-700\">\n <span className=\"text-column\">Error:</span> {error}\n </div>\n )}\n </div>\n </div>\n );\n }\n\n // Activation state - buffered observations have been activated into active observations\n // Styled to match sync observation/reflection markers (green scheme with Brain icon)\n if (isActivated) {\n const tokensActivated = omData.tokensActivated ?? 0;\n const observationTokens = omData.observationTokens ?? 0;\n const { observations } = omData;\n const activatedLabel = isReflection ? 'Reflected' : 'Observed';\n const compressionRatio =\n tokensActivated && observationTokens && observationTokens > 0\n ? Math.round(tokensActivated / observationTokens)\n : null;\n\n const handleToggle = (e: React.MouseEvent) => {\n const scrollContainer = e.currentTarget.closest('[data-radix-scroll-area-viewport]') || document.documentElement;\n const scrollTop = scrollContainer.scrollTop;\n setIsExpanded(!isExpanded);\n requestAnimationFrame(() => {\n scrollContainer.scrollTop = scrollTop;\n });\n };\n\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n data-om-no-highlight=\"true\"\n >\n <div className=\"my-1\">\n <button\n onClick={handleToggle}\n className={`inline-flex items-center gap-1.5 rounded-md px-2 py-1 ${completeBgColor} ${completeTextColor} text-column ${completeHoverBgColor} cursor-pointer`}\n >\n {isExpanded ? <ChevronDown className=\"size-3\" /> : <ChevronRight className=\"size-3\" />}\n {isReflection ? <Brain className=\"size-3\" /> : <ObservationIcon className=\"size-3\" />}\n <span>\n {activatedLabel} {tokensActivated ? formatTokens(tokensActivated) : '?'}→\n {observationTokens ? formatTokens(observationTokens) : '?'} tokens\n {compressionRatio ? ` (-${compressionRatio}x)` : ''}\n </span>\n </button>\n {isExpanded && (\n <div\n className={`mt-1 ml-6 rounded-md p-2 ${expandedBgColor} space-y-1.5 border text-caption ${expandedBorderColor}`}\n >\n {/* Stats row */}\n <div className={`flex gap-4 text-caption ${labelColor}`}>\n {tokensActivated > 0 && <span>Input: {formatTokens(tokensActivated)}</span>}\n {observationTokens > 0 && <span>Output: {formatTokens(observationTokens)}</span>}\n {compressionRatio && compressionRatio > 1 && <span>Compression: {compressionRatio}x</span>}\n </div>\n {observations && (\n <div className=\"mt-1 border-t border-border pt-1\">\n <ObservationRenderer observations={observations} maxHeight=\"500px\" />\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n );\n }\n\n // Unknown marker type - render generic\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div className=\"my-1 inline-flex items-center gap-1.5 rounded-md bg-fill px-2 py-1 text-column text-muted-foreground\">\n <Brain className=\"size-3\" />\n <span>{toolName}</span>\n </div>\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
5
5
  const jsxRuntime = require('react/jsx-runtime');
6
6
  const React = require('react');
7
7
  const markdownRenderer = require('../../../../markdown-renderer-DtH58325.cjs');
8
+ const Txt = require('../../../../Txt-DPmEpNbp.cjs');
8
9
  const utils_cn = require('../../../../cn-DG0X1KEP.cjs');
9
10
 
10
11
  const PRIORITY_COLORS = {
@@ -160,12 +161,13 @@ function ObservationItem({
160
161
  observation.isNested && /* @__PURE__ */ jsxRuntime.jsx("span", { className: utils_cn.cn("shrink-0", useInheritedTextColor ? "opacity-60" : "text-muted-foreground"), children: "→" }),
161
162
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-1 [&_code]:rounded [&_code]:bg-black/10 [&_code]:px-1 [&_code]:py-0.5 [&_code]:text-meta", children: /* @__PURE__ */ jsxRuntime.jsx(markdownRenderer.MarkdownRenderer, { className: priorityColor, children: observation.content }) }),
162
163
  observation.time && /* @__PURE__ */ jsxRuntime.jsx(
163
- "span",
164
+ Txt.Txt,
164
165
  {
165
- className: utils_cn.cn(
166
- "ml-2 shrink-0 font-mono text-meta",
167
- useInheritedTextColor ? "opacity-60" : "text-muted-foreground"
168
- ),
166
+ as: "span",
167
+ variant: "meta",
168
+ font: "mono",
169
+ tone: useInheritedTextColor ? void 0 : "muted",
170
+ className: utils_cn.cn("ml-2 shrink-0", useInheritedTextColor && "opacity-60"),
169
171
  children: observation.time
170
172
  }
171
173
  )
@@ -207,12 +209,13 @@ function ThreadSection({
207
209
  "div",
208
210
  {
209
211
  className: utils_cn.cn(
210
- "mb-1 inline-block rounded px-1 py-0.5 font-mono text-meta",
212
+ "mb-1 inline-block rounded px-1 py-0.5 text-meta",
211
213
  useInheritedTextColor ? "bg-current/10 opacity-60" : "bg-muted/50 text-muted-foreground"
212
214
  ),
213
215
  children: [
214
- "Thread ",
215
- thread.threadId
216
+ "Thread",
217
+ " ",
218
+ /* @__PURE__ */ jsxRuntime.jsx(Txt.Txt, { as: "span", variant: "meta", font: "mono", children: thread.threadId })
216
219
  ]
217
220
  }
218
221
  ),