@mastra/playground-ui 67.0.0 → 68.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (929) hide show
  1. package/dist/{ActionRow-BfK77pCT.cjs → ActionRow-BlC9GAef.cjs} +4 -4
  2. package/dist/ActionRow-BlC9GAef.cjs.map +1 -0
  3. package/dist/{ActionRow-Cd6tOC2K.js → ActionRow-DCrRCvBq.js} +4 -4
  4. package/dist/ActionRow-DCrRCvBq.js.map +1 -0
  5. package/dist/{Button-Bw1e3ONi.js → Button-CLXTbAY8.js} +42 -13
  6. package/dist/Button-CLXTbAY8.js.map +1 -0
  7. package/dist/{Button-YQRflC47.cjs → Button-DLcMcuUL.cjs} +58 -11
  8. package/dist/Button-DLcMcuUL.cjs.map +1 -0
  9. package/dist/{CodeEditor-CJ9jC9lu.cjs → CodeEditor-CLzs0yVc.cjs} +4 -4
  10. package/dist/{CodeEditor-CJ9jC9lu.cjs.map → CodeEditor-CLzs0yVc.cjs.map} +1 -1
  11. package/dist/{CodeEditor-CPVxj7WS.js → CodeEditor-COnz9c6B.js} +4 -4
  12. package/dist/{CodeEditor-CPVxj7WS.js.map → CodeEditor-COnz9c6B.js.map} +1 -1
  13. package/dist/{Comment-VFJq2wRp.js → Comment-0n98b_f_.js} +3 -3
  14. package/dist/{Comment-VFJq2wRp.js.map → Comment-0n98b_f_.js.map} +1 -1
  15. package/dist/{Comment-KYUQzeSu.cjs → Comment-Cg0f7eLa.cjs} +3 -3
  16. package/dist/{Comment-KYUQzeSu.cjs.map → Comment-Cg0f7eLa.cjs.map} +1 -1
  17. package/dist/{DataCodeSection-CZRPsStI.cjs → DataCodeSection-CcPmJPTp.cjs} +8 -8
  18. package/dist/{DataCodeSection-CZRPsStI.cjs.map → DataCodeSection-CcPmJPTp.cjs.map} +1 -1
  19. package/dist/{DataCodeSection-Ckd47p_S.js → DataCodeSection-KJRyRD1Q.js} +6 -6
  20. package/dist/{DataCodeSection-Ckd47p_S.js.map → DataCodeSection-KJRyRD1Q.js.map} +1 -1
  21. package/dist/{DataDetailsPanel-_CK0Huk6.js → DataDetailsPanel-CohEKPm4.js} +5 -5
  22. package/dist/{DataDetailsPanel-_CK0Huk6.js.map → DataDetailsPanel-CohEKPm4.js.map} +1 -1
  23. package/dist/{DataDetailsPanel-DFhM9H5D.cjs → DataDetailsPanel-DiyjEXqK.cjs} +6 -6
  24. package/dist/{DataDetailsPanel-DFhM9H5D.cjs.map → DataDetailsPanel-DiyjEXqK.cjs.map} +1 -1
  25. package/dist/{DataList-2tIlQsLc.js → DataList-CUhRQAv6.js} +2 -2
  26. package/dist/{DataList-2tIlQsLc.js.map → DataList-CUhRQAv6.js.map} +1 -1
  27. package/dist/{DataList-Czwmwyvp.cjs → DataList-Cj0mfk19.cjs} +2 -2
  28. package/dist/{DataList-Czwmwyvp.cjs.map → DataList-Cj0mfk19.cjs.map} +1 -1
  29. package/dist/{DataPanel-CY1W5LHJ.js → DataPanel-Bv4M17xO.js} +3 -3
  30. package/dist/{DataPanel-CY1W5LHJ.js.map → DataPanel-Bv4M17xO.js.map} +1 -1
  31. package/dist/{DataPanel-C0Ll76Ne.cjs → DataPanel-BwB1Oifd.cjs} +3 -3
  32. package/dist/{DataPanel-C0Ll76Ne.cjs.map → DataPanel-BwB1Oifd.cjs.map} +1 -1
  33. package/dist/{Dialog-CjaiCrkv.cjs → Dialog-BvWF9HE-.cjs} +2 -2
  34. package/dist/{Dialog-CjaiCrkv.cjs.map → Dialog-BvWF9HE-.cjs.map} +1 -1
  35. package/dist/{Dialog-CKtTR8h3.js → Dialog-DaWtxwd9.js} +2 -2
  36. package/dist/{Dialog-CKtTR8h3.js.map → Dialog-DaWtxwd9.js.map} +1 -1
  37. package/dist/{ErrorBoundary-Bm0LL_b7.cjs → ErrorBoundary-B5GjmA6V.cjs} +2 -2
  38. package/dist/{ErrorBoundary-Bm0LL_b7.cjs.map → ErrorBoundary-B5GjmA6V.cjs.map} +1 -1
  39. package/dist/{ErrorBoundary-95_6A77S.js → ErrorBoundary-Cat3KU86.js} +2 -2
  40. package/dist/{ErrorBoundary-95_6A77S.js.map → ErrorBoundary-Cat3KU86.js.map} +1 -1
  41. package/dist/{FilterBar--4oguuVe.js → FilterBar-BO-vvvyq.js} +18 -22
  42. package/dist/FilterBar-BO-vvvyq.js.map +1 -0
  43. package/dist/{FilterBar-BUd4f7oi.cjs → FilterBar-Buw0tv51.cjs} +18 -22
  44. package/dist/FilterBar-Buw0tv51.cjs.map +1 -0
  45. package/dist/KnowledgePageGraph.css +11 -0
  46. package/dist/{LogsDataList-Cslabh8K.js → LogsDataList-BI2C5OJz.js} +2 -2
  47. package/dist/{LogsDataList-Cslabh8K.js.map → LogsDataList-BI2C5OJz.js.map} +1 -1
  48. package/dist/{LogsDataList-DMmxAt_t.cjs → LogsDataList-CCIfUPGo.cjs} +2 -2
  49. package/dist/{LogsDataList-DMmxAt_t.cjs.map → LogsDataList-CCIfUPGo.cjs.map} +1 -1
  50. package/dist/{MarkdownRenderer-DME2xKTk.js → MarkdownRenderer-2GOXQJEv.js} +3 -3
  51. package/dist/{MarkdownRenderer-DME2xKTk.js.map → MarkdownRenderer-2GOXQJEv.js.map} +1 -1
  52. package/dist/{MarkdownRenderer-CS6u5drO.cjs → MarkdownRenderer-CB8Z_CHc.cjs} +4 -4
  53. package/dist/{MarkdownRenderer-CS6u5drO.cjs.map → MarkdownRenderer-CB8Z_CHc.cjs.map} +1 -1
  54. package/dist/{Message-nVI6tMS3.js → Message-CWzi5F_Q.js} +2 -2
  55. package/dist/{Message-nVI6tMS3.js.map → Message-CWzi5F_Q.js.map} +1 -1
  56. package/dist/{Message-DsCNQpou.cjs → Message-jj56lxNL.cjs} +2 -2
  57. package/dist/{Message-DsCNQpou.cjs.map → Message-jj56lxNL.cjs.map} +1 -1
  58. package/dist/{Notice-CyKngbbv.js → Notice-C-8oOZZF.js} +2 -2
  59. package/dist/{Notice-CyKngbbv.js.map → Notice-C-8oOZZF.js.map} +1 -1
  60. package/dist/{Notice-DWNeCe-t.cjs → Notice-JZ7SW7q6.cjs} +2 -2
  61. package/dist/{Notice-DWNeCe-t.cjs.map → Notice-JZ7SW7q6.cjs.map} +1 -1
  62. package/dist/{Workflow-BVWvgDmI.js → Workflow-C3SlEdP-.js} +5 -5
  63. package/dist/{Workflow-BVWvgDmI.js.map → Workflow-C3SlEdP-.js.map} +1 -1
  64. package/dist/{Workflow-BeF6pIO9.cjs → Workflow-DSWQ-ROz.cjs} +5 -5
  65. package/dist/{Workflow-BeF6pIO9.cjs.map → Workflow-DSWQ-ROz.cjs.map} +1 -1
  66. package/dist/{activity-DAK8tj7r.cjs → activity-DyB5H3gF.cjs} +2 -2
  67. package/dist/{activity-DAK8tj7r.cjs.map → activity-DyB5H3gF.cjs.map} +1 -1
  68. package/dist/{activity-CM34JyW-.js → activity-rJ1NQl_2.js} +2 -2
  69. package/dist/{activity-CM34JyW-.js.map → activity-rJ1NQl_2.js.map} +1 -1
  70. package/dist/{ask-user-BdjH9F7G.js → ask-user-B225wzWc.js} +2 -2
  71. package/dist/{ask-user-BdjH9F7G.js.map → ask-user-B225wzWc.js.map} +1 -1
  72. package/dist/{ask-user-C82m_G9W.cjs → ask-user-DdYz56qH.cjs} +2 -2
  73. package/dist/{ask-user-C82m_G9W.cjs.map → ask-user-DdYz56qH.cjs.map} +1 -1
  74. package/dist/buttons-group-Dc6R7YSs.cjs +48 -0
  75. package/dist/buttons-group-Dc6R7YSs.cjs.map +1 -0
  76. package/dist/buttons-group-DkFlnMiL.js +35 -0
  77. package/dist/buttons-group-DkFlnMiL.js.map +1 -0
  78. package/dist/{ButtonsGroup.css → buttons-group.css} +2 -0
  79. package/dist/clear-filters-button-Buc973vw.cjs +27 -0
  80. package/dist/clear-filters-button-Buc973vw.cjs.map +1 -0
  81. package/dist/clear-filters-button-CNrRuHOY.js +22 -0
  82. package/dist/clear-filters-button-CNrRuHOY.js.map +1 -0
  83. package/dist/{combobox-8kNAJFlj.cjs → combobox-CMx2ayFN.cjs} +3 -3
  84. package/dist/{combobox-8kNAJFlj.cjs.map → combobox-CMx2ayFN.cjs.map} +1 -1
  85. package/dist/{combobox-wFudhN8F.js → combobox-CtCK0mNx.js} +3 -3
  86. package/dist/{combobox-wFudhN8F.js.map → combobox-CtCK0mNx.js.map} +1 -1
  87. package/dist/{combobox-parts-W7KRQUsV.js → combobox-parts-C1CugUAU.js} +11 -19
  88. package/dist/combobox-parts-C1CugUAU.js.map +1 -0
  89. package/dist/{combobox-parts-BZVXwbG7.cjs → combobox-parts-ScKcYjMR.cjs} +10 -18
  90. package/dist/combobox-parts-ScKcYjMR.cjs.map +1 -0
  91. package/dist/components/ActionRow.cjs.js +1 -1
  92. package/dist/components/ActionRow.es.js +1 -1
  93. package/dist/components/AlertDialog.cjs.js +2 -2
  94. package/dist/components/AlertDialog.es.js +2 -2
  95. package/dist/components/Button.cjs.js +4 -1
  96. package/dist/components/Button.es.js +2 -2
  97. package/dist/components/ButtonsGroup.cjs.js +3 -38
  98. package/dist/components/ButtonsGroup.es.js +1 -35
  99. package/dist/components/ClampedText.cjs.js +1 -1
  100. package/dist/components/ClampedText.es.js +1 -1
  101. package/dist/components/ClearFiltersButton.cjs.js +3 -0
  102. package/dist/components/ClearFiltersButton.d.ts +1 -0
  103. package/dist/components/ClearFiltersButton.es.js +1 -0
  104. package/dist/components/CodeBlock.cjs.js +3 -3
  105. package/dist/components/CodeBlock.es.js +3 -3
  106. package/dist/components/CodeEditor.cjs.js +1 -1
  107. package/dist/components/CodeEditor.es.js +1 -1
  108. package/dist/components/CollapsibleBox.cjs.js +1 -1
  109. package/dist/components/CollapsibleBox.es.js +1 -1
  110. package/dist/components/Combobox.cjs.js +2 -2
  111. package/dist/components/Combobox.es.js +2 -2
  112. package/dist/components/Command.cjs.js +3 -2
  113. package/dist/components/Command.cjs.js.map +1 -1
  114. package/dist/components/Command.es.js +3 -2
  115. package/dist/components/Command.es.js.map +1 -1
  116. package/dist/components/Comment.cjs.js +1 -1
  117. package/dist/components/Comment.es.js +1 -1
  118. package/dist/components/CopyButton.cjs.js +1 -1
  119. package/dist/components/CopyButton.es.js +1 -1
  120. package/dist/components/DataCodeSection.cjs.js +1 -1
  121. package/dist/components/DataCodeSection.es.js +1 -1
  122. package/dist/components/DataDetailsPanel.cjs.js +1 -1
  123. package/dist/components/DataDetailsPanel.es.js +1 -1
  124. package/dist/components/DataList.cjs.js +3 -3
  125. package/dist/components/DataList.es.js +3 -3
  126. package/dist/components/DataPanel.cjs.js +1 -1
  127. package/dist/components/DataPanel.es.js +1 -1
  128. package/dist/components/DateRangeTimeline.cjs.js +1 -1
  129. package/dist/components/DateRangeTimeline.es.js +1 -1
  130. package/dist/components/DateTimePicker.cjs.js +2 -2
  131. package/dist/components/DateTimePicker.es.js +2 -2
  132. package/dist/components/DateTimeRangePicker.cjs.js +2 -2
  133. package/dist/components/DateTimeRangePicker.es.js +1 -1
  134. package/dist/components/Dialog.cjs.js +1 -1
  135. package/dist/components/Dialog.es.js +1 -1
  136. package/dist/components/DisabledFeatureButton.cjs.js +1 -1
  137. package/dist/components/DisabledFeatureButton.es.js +1 -1
  138. package/dist/components/Drawer.cjs.js +1 -1
  139. package/dist/components/Drawer.es.js +1 -1
  140. package/dist/components/EnvironmentVariablesEditor.cjs.js +4 -4
  141. package/dist/components/EnvironmentVariablesEditor.es.js +4 -4
  142. package/dist/components/ErrorBoundary.cjs.js +1 -1
  143. package/dist/components/ErrorBoundary.es.js +1 -1
  144. package/dist/components/FilterBar.cjs.js +7 -2
  145. package/dist/components/FilterBar.es.js +4 -3
  146. package/dist/components/FormFieldBlocks.cjs.js +2 -2
  147. package/dist/components/FormFieldBlocks.es.js +2 -2
  148. package/dist/components/InputGroup.cjs.js +1 -1
  149. package/dist/components/InputGroup.es.js +1 -1
  150. package/dist/components/InputNumber.cjs.js +2 -2
  151. package/dist/components/InputNumber.es.js +2 -2
  152. package/dist/components/JSONSchemaForm.cjs.js +2 -2
  153. package/dist/components/JSONSchemaForm.es.js +2 -2
  154. package/dist/components/ListSearch.cjs.js +1 -1
  155. package/dist/components/ListSearch.es.js +1 -1
  156. package/dist/components/LogsDataList.cjs.js +2 -2
  157. package/dist/components/LogsDataList.es.js +2 -2
  158. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  159. package/dist/components/MarkdownRenderer.es.js +1 -1
  160. package/dist/components/Message.cjs.js +1 -1
  161. package/dist/components/Message.es.js +1 -1
  162. package/dist/components/Notice.cjs.js +1 -1
  163. package/dist/components/Notice.es.js +1 -1
  164. package/dist/components/PrevNextNav.cjs.js +1 -1
  165. package/dist/components/PrevNextNav.es.js +1 -1
  166. package/dist/components/PropertyFilter.cjs.js +3 -3
  167. package/dist/components/PropertyFilter.es.js +3 -3
  168. package/dist/components/RuleBuilder.cjs.js +2 -2
  169. package/dist/components/RuleBuilder.es.js +2 -2
  170. package/dist/components/SavedViews.cjs.js +4 -3
  171. package/dist/components/SavedViews.cjs.js.map +1 -1
  172. package/dist/components/SavedViews.es.js +4 -3
  173. package/dist/components/SavedViews.es.js.map +1 -1
  174. package/dist/components/SearchInput.cjs.js +5 -2
  175. package/dist/components/SearchInput.cjs.js.map +1 -1
  176. package/dist/components/SearchInput.es.js +5 -2
  177. package/dist/components/SearchInput.es.js.map +1 -1
  178. package/dist/components/Select.cjs.js +1 -1
  179. package/dist/components/Select.es.js +1 -1
  180. package/dist/components/SideDialog.cjs.js +5 -5
  181. package/dist/components/SideDialog.cjs.js.map +1 -1
  182. package/dist/components/SideDialog.es.js +4 -4
  183. package/dist/components/Sidebar.cjs.js +3 -3
  184. package/dist/components/Sidebar.es.js +3 -3
  185. package/dist/components/Tabs.cjs.js +2 -2
  186. package/dist/components/Tabs.es.js +2 -2
  187. package/dist/components/ThreadList.cjs.js +1 -1
  188. package/dist/components/ThreadList.es.js +1 -1
  189. package/dist/components/Toaster.cjs.js +2 -2
  190. package/dist/components/Toaster.es.js +2 -2
  191. package/dist/components/Truncate.cjs.js +1 -1
  192. package/dist/components/Truncate.es.js +1 -1
  193. package/dist/components/Workflow.cjs.js +1 -1
  194. package/dist/components/Workflow.es.js +1 -1
  195. package/dist/components/ai/activity.cjs.js +1 -1
  196. package/dist/components/ai/activity.es.js +1 -1
  197. package/dist/components/ai/ask-user.cjs.js +1 -1
  198. package/dist/components/ai/ask-user.es.js +1 -1
  199. package/dist/components/ai/plan.cjs.js +2 -2
  200. package/dist/components/ai/plan.es.js +2 -2
  201. package/dist/components/ai/tool-approval.cjs.js +1 -1
  202. package/dist/components/ai/tool-approval.es.js +1 -1
  203. package/dist/components/ai/tool-call.cjs.js +2 -2
  204. package/dist/components/ai/tool-call.es.js +2 -2
  205. package/dist/{copy-button-CF-X4iDj.js → copy-button-BXrbevLn.js} +2 -2
  206. package/dist/{copy-button-CF-X4iDj.js.map → copy-button-BXrbevLn.js.map} +1 -1
  207. package/dist/{copy-button-BYEFKNpo.cjs → copy-button-DJAQ6_3o.cjs} +2 -2
  208. package/dist/{copy-button-BYEFKNpo.cjs.map → copy-button-DJAQ6_3o.cjs.map} +1 -1
  209. package/dist/{data-list-BkimqE_P.cjs → data-list-C4Vmq5HA.cjs} +2 -2
  210. package/dist/{data-list-BkimqE_P.cjs.map → data-list-C4Vmq5HA.cjs.map} +1 -1
  211. package/dist/{data-list-evmf5xWI.js → data-list-DHCOoLmj.js} +2 -2
  212. package/dist/{data-list-evmf5xWI.js.map → data-list-DHCOoLmj.js.map} +1 -1
  213. package/dist/{DateTimeRangePicker-HmPOHwAQ.cjs → date-time-range-picker-CTt7Od0P.cjs} +71 -57
  214. package/dist/date-time-range-picker-CTt7Od0P.cjs.map +1 -0
  215. package/dist/{DateTimeRangePicker-C_Lie_2P.js → date-time-range-picker-DKh1K9Iy.js} +72 -58
  216. package/dist/date-time-range-picker-DKh1K9Iy.js.map +1 -0
  217. package/dist/domains/auth/components/session-expired.cjs.js +2 -2
  218. package/dist/domains/auth/components/session-expired.es.js +2 -2
  219. package/dist/domains/chat/activity/activity-stretch-line.cjs.js +1 -1
  220. package/dist/domains/chat/activity/activity-stretch-line.es.js +1 -1
  221. package/dist/domains/chat/activity/components/activity-fold.cjs.js +1 -1
  222. package/dist/domains/chat/activity/components/activity-fold.es.js +1 -1
  223. package/dist/domains/chat/activity/components/activity-timed-trigger.cjs.js +1 -1
  224. package/dist/domains/chat/activity/components/activity-timed-trigger.es.js +1 -1
  225. package/dist/domains/chat/activity/components/calls-panel.cjs.js +1 -1
  226. package/dist/domains/chat/activity/components/calls-panel.es.js +1 -1
  227. package/dist/domains/chat/activity/components/stretch-content.cjs.js +1 -1
  228. package/dist/domains/chat/activity/components/stretch-content.es.js +1 -1
  229. package/dist/domains/chat/activity/components/stretch-thought.cjs.js +1 -1
  230. package/dist/domains/chat/activity/components/stretch-thought.es.js +1 -1
  231. package/dist/domains/chat/activity/model/activity-segments.cjs.js +1 -1
  232. package/dist/domains/chat/activity/model/activity-segments.es.js +1 -1
  233. package/dist/domains/chat/activity/model/activity-words.cjs.js +2 -2
  234. package/dist/domains/chat/activity/model/activity-words.es.js +2 -2
  235. package/dist/domains/chat/attachments/attachment-preview-dialog.cjs.js +2 -2
  236. package/dist/domains/chat/attachments/attachment-preview-dialog.es.js +2 -2
  237. package/dist/domains/chat/attachments/composer-attachment.cjs.js +1 -1
  238. package/dist/domains/chat/attachments/composer-attachment.es.js +1 -1
  239. package/dist/domains/chat/components/badge-wrapper.cjs.js +1 -1
  240. package/dist/domains/chat/components/badge-wrapper.es.js +1 -1
  241. package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +3 -3
  242. package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +3 -3
  243. package/dist/domains/chat/knowledge/knowledge-links.cjs.js +40 -0
  244. package/dist/domains/chat/knowledge/knowledge-links.cjs.js.map +1 -0
  245. package/dist/domains/chat/knowledge/knowledge-links.d.ts +1 -0
  246. package/dist/domains/chat/knowledge/knowledge-links.es.js +38 -0
  247. package/dist/domains/chat/knowledge/knowledge-links.es.js.map +1 -0
  248. package/dist/domains/chat/knowledge/pinned-knowledge-data.cjs.js +79 -0
  249. package/dist/domains/chat/knowledge/pinned-knowledge-data.cjs.js.map +1 -0
  250. package/dist/domains/chat/knowledge/pinned-knowledge-data.d.ts +1 -0
  251. package/dist/domains/chat/knowledge/pinned-knowledge-data.es.js +77 -0
  252. package/dist/domains/chat/knowledge/pinned-knowledge-data.es.js.map +1 -0
  253. package/dist/domains/chat/knowledge/pinned-knowledge.cjs.js +124 -0
  254. package/dist/domains/chat/knowledge/pinned-knowledge.cjs.js.map +1 -0
  255. package/dist/domains/chat/knowledge/pinned-knowledge.d.ts +1 -0
  256. package/dist/domains/chat/knowledge/pinned-knowledge.es.js +123 -0
  257. package/dist/domains/chat/knowledge/pinned-knowledge.es.js.map +1 -0
  258. package/dist/domains/chat/knowledge.cjs.js +12 -0
  259. package/dist/domains/chat/knowledge.d.ts +1 -0
  260. package/dist/domains/chat/knowledge.es.js +5 -0
  261. package/dist/domains/chat/messages/assistant-message-actions.cjs.js +2 -2
  262. package/dist/domains/chat/messages/assistant-message-actions.es.js +2 -2
  263. package/dist/domains/chat/messages/dataset-save-action.cjs.js +5 -5
  264. package/dist/domains/chat/messages/dataset-save-action.es.js +5 -5
  265. package/dist/domains/chat/messages/message-row.cjs.js +4 -4
  266. package/dist/domains/chat/messages/message-row.es.js +4 -4
  267. package/dist/domains/chat/messages/notification-signal-notice.cjs.js +1 -1
  268. package/dist/domains/chat/messages/notification-signal-notice.es.js +1 -1
  269. package/dist/domains/chat/messages/reasoning-content.cjs.js +1 -1
  270. package/dist/domains/chat/messages/reasoning-content.es.js +1 -1
  271. package/dist/domains/chat/messages/renderers/message-text.cjs.js +2 -2
  272. package/dist/domains/chat/messages/renderers/message-text.es.js +2 -2
  273. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
  274. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
  275. package/dist/domains/chat/messages/renderers/status-renderers.cjs.js +1 -1
  276. package/dist/domains/chat/messages/renderers/status-renderers.es.js +1 -1
  277. package/dist/domains/chat/messages/signal-badge.cjs.js +8 -1
  278. package/dist/domains/chat/messages/signal-badge.cjs.js.map +1 -1
  279. package/dist/domains/chat/messages/signal-badge.es.js +8 -1
  280. package/dist/domains/chat/messages/signal-badge.es.js.map +1 -1
  281. package/dist/domains/chat/messages/skill-message.cjs.js +2 -2
  282. package/dist/domains/chat/messages/skill-message.es.js +2 -2
  283. package/dist/domains/chat/messages/system-reminder-badge.cjs.js +1 -1
  284. package/dist/domains/chat/messages/system-reminder-badge.es.js +1 -1
  285. package/dist/domains/chat/messages/tripwire-notice.cjs.js +2 -2
  286. package/dist/domains/chat/messages/tripwire-notice.es.js +2 -2
  287. package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
  288. package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
  289. package/dist/domains/chat/tools/badges/agent-badge.cjs.js +1 -1
  290. package/dist/domains/chat/tools/badges/agent-badge.es.js +1 -1
  291. package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
  292. package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
  293. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.cjs.js +3 -3
  294. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js +3 -3
  295. package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +1 -1
  296. package/dist/domains/chat/tools/badges/code-mode-badge.es.js +1 -1
  297. package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +2 -2
  298. package/dist/domains/chat/tools/badges/file-tree-badge.es.js +2 -2
  299. package/dist/domains/chat/tools/badges/knowledge-tool-badge.cjs.js +273 -0
  300. package/dist/domains/chat/tools/badges/knowledge-tool-badge.cjs.js.map +1 -0
  301. package/dist/domains/chat/tools/badges/knowledge-tool-badge.d.ts +1 -0
  302. package/dist/domains/chat/tools/badges/knowledge-tool-badge.es.js +270 -0
  303. package/dist/domains/chat/tools/badges/knowledge-tool-badge.es.js.map +1 -0
  304. package/dist/domains/chat/tools/badges/mcp-task-chip.cjs.js +1 -1
  305. package/dist/domains/chat/tools/badges/mcp-task-chip.es.js +1 -1
  306. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +2 -2
  307. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +2 -2
  308. package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +2 -2
  309. package/dist/domains/chat/tools/badges/observation-marker-details.es.js +2 -2
  310. package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +1 -1
  311. package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
  312. package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js +2 -2
  313. package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js +2 -2
  314. package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +1 -1
  315. package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
  316. package/dist/domains/chat/tools/badges/tool-badge.cjs.js +4 -4
  317. package/dist/domains/chat/tools/badges/tool-badge.es.js +4 -4
  318. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +4 -4
  319. package/dist/domains/chat/tools/badges/workflow-badge.es.js +4 -4
  320. package/dist/domains/chat/tools/connect-prompt-tool.cjs.js +3 -3
  321. package/dist/domains/chat/tools/connect-prompt-tool.es.js +3 -3
  322. package/dist/domains/chat/tools/submit-plan-tool.cjs.js +1 -1
  323. package/dist/domains/chat/tools/submit-plan-tool.es.js +1 -1
  324. package/dist/domains/chat/tools/tool-card-kind.cjs.js +4 -2
  325. package/dist/domains/chat/tools/tool-card-kind.cjs.js.map +1 -1
  326. package/dist/domains/chat/tools/tool-card-kind.es.js +4 -2
  327. package/dist/domains/chat/tools/tool-card-kind.es.js.map +1 -1
  328. package/dist/domains/chat/tools/tool-card.cjs.js +1 -1
  329. package/dist/domains/chat/tools/tool-card.es.js +1 -1
  330. package/dist/domains/chat/tools/tool-groups.cjs.js +3 -2
  331. package/dist/domains/chat/tools/tool-groups.cjs.js.map +1 -1
  332. package/dist/domains/chat/tools/tool-groups.es.js +3 -2
  333. package/dist/domains/chat/tools/tool-groups.es.js.map +1 -1
  334. package/dist/domains/chat.cjs.js +11 -0
  335. package/dist/domains/chat.es.js +5 -1
  336. package/dist/domains/dashboards/components/dashboard-renderer.cjs.js +1 -1
  337. package/dist/domains/dashboards/components/dashboard-renderer.es.js +1 -1
  338. package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.cjs.js +4 -4
  339. package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.es.js +4 -4
  340. package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-picker.cjs.js +1 -1
  341. package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-picker.es.js +1 -1
  342. package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.cjs.js +3 -3
  343. package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.es.js +3 -3
  344. package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js +5 -5
  345. package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js +5 -5
  346. package/dist/domains/knowledge/components/KnowledgePageDetail.cjs.js +438 -0
  347. package/dist/domains/knowledge/components/KnowledgePageDetail.cjs.js.map +1 -0
  348. package/dist/domains/knowledge/components/KnowledgePageDetail.d.ts +1 -0
  349. package/dist/domains/knowledge/components/KnowledgePageDetail.es.js +436 -0
  350. package/dist/domains/knowledge/components/KnowledgePageDetail.es.js.map +1 -0
  351. package/dist/domains/knowledge/components/KnowledgePageExplorer.cjs.js +521 -0
  352. package/dist/domains/knowledge/components/KnowledgePageExplorer.cjs.js.map +1 -0
  353. package/dist/domains/knowledge/components/KnowledgePageExplorer.d.ts +1 -0
  354. package/dist/domains/knowledge/components/KnowledgePageExplorer.es.js +520 -0
  355. package/dist/domains/knowledge/components/KnowledgePageExplorer.es.js.map +1 -0
  356. package/dist/domains/knowledge/components/KnowledgePageGraph.cjs.js +626 -0
  357. package/dist/domains/knowledge/components/KnowledgePageGraph.cjs.js.map +1 -0
  358. package/dist/domains/knowledge/components/KnowledgePageGraph.d.ts +1 -0
  359. package/dist/domains/knowledge/components/KnowledgePageGraph.es.js +625 -0
  360. package/dist/domains/knowledge/components/KnowledgePageGraph.es.js.map +1 -0
  361. package/dist/domains/knowledge/components/KnowledgePageTree.cjs.js +170 -0
  362. package/dist/domains/knowledge/components/KnowledgePageTree.cjs.js.map +1 -0
  363. package/dist/domains/knowledge/components/KnowledgePageTree.d.ts +1 -0
  364. package/dist/domains/knowledge/components/KnowledgePageTree.es.js +168 -0
  365. package/dist/domains/knowledge/components/KnowledgePageTree.es.js.map +1 -0
  366. package/dist/domains/knowledge/hooks/useInteractionIdle.cjs.js +37 -0
  367. package/dist/domains/knowledge/hooks/useInteractionIdle.cjs.js.map +1 -0
  368. package/dist/domains/knowledge/hooks/useInteractionIdle.d.ts +1 -0
  369. package/dist/domains/knowledge/hooks/useInteractionIdle.es.js +35 -0
  370. package/dist/domains/knowledge/hooks/useInteractionIdle.es.js.map +1 -0
  371. package/dist/domains/knowledge/lib/layout.cjs.js +93 -0
  372. package/dist/domains/knowledge/lib/layout.cjs.js.map +1 -0
  373. package/dist/domains/knowledge/lib/layout.d.ts +1 -0
  374. package/dist/domains/knowledge/lib/layout.es.js +92 -0
  375. package/dist/domains/knowledge/lib/layout.es.js.map +1 -0
  376. package/dist/domains/knowledge/lib/pageGraph.cjs.js +135 -0
  377. package/dist/domains/knowledge/lib/pageGraph.cjs.js.map +1 -0
  378. package/dist/domains/knowledge/lib/pageGraph.d.ts +1 -0
  379. package/dist/domains/knowledge/lib/pageGraph.es.js +128 -0
  380. package/dist/domains/knowledge/lib/pageGraph.es.js.map +1 -0
  381. package/dist/domains/knowledge/lib/pageLayout.cjs.js +49 -0
  382. package/dist/domains/knowledge/lib/pageLayout.cjs.js.map +1 -0
  383. package/dist/domains/knowledge/lib/pageLayout.d.ts +1 -0
  384. package/dist/domains/knowledge/lib/pageLayout.es.js +48 -0
  385. package/dist/domains/knowledge/lib/pageLayout.es.js.map +1 -0
  386. package/dist/domains/knowledge/lib/pageTree.cjs.js +98 -0
  387. package/dist/domains/knowledge/lib/pageTree.cjs.js.map +1 -0
  388. package/dist/domains/knowledge/lib/pageTree.d.ts +1 -0
  389. package/dist/domains/knowledge/lib/pageTree.es.js +94 -0
  390. package/dist/domains/knowledge/lib/pageTree.es.js.map +1 -0
  391. package/dist/domains/knowledge/lib/popupPlacement.cjs.js +22 -0
  392. package/dist/domains/knowledge/lib/popupPlacement.cjs.js.map +1 -0
  393. package/dist/domains/knowledge/lib/popupPlacement.d.ts +1 -0
  394. package/dist/domains/knowledge/lib/popupPlacement.es.js +21 -0
  395. package/dist/domains/knowledge/lib/popupPlacement.es.js.map +1 -0
  396. package/dist/domains/knowledge/lib/recordText.cjs.js +26 -0
  397. package/dist/domains/knowledge/lib/recordText.cjs.js.map +1 -0
  398. package/dist/domains/knowledge/lib/recordText.d.ts +1 -0
  399. package/dist/domains/knowledge/lib/recordText.es.js +25 -0
  400. package/dist/domains/knowledge/lib/recordText.es.js.map +1 -0
  401. package/dist/domains/knowledge/pageTypes.cjs.js +0 -0
  402. package/dist/domains/knowledge/pageTypes.d.ts +1 -0
  403. package/dist/domains/knowledge/pageTypes.es.js +0 -0
  404. package/dist/domains/logs/components/log-data-panel.cjs.js +6 -6
  405. package/dist/domains/logs/components/log-data-panel.cjs.js.map +1 -1
  406. package/dist/domains/logs/components/log-data-panel.es.js +4 -4
  407. package/dist/domains/logs/components/logs-list-view.cjs.js +2 -2
  408. package/dist/domains/logs/components/logs-list-view.es.js +2 -2
  409. package/dist/domains/logs/components/logs-saved-views.cjs.js +1 -1
  410. package/dist/domains/logs/components/logs-saved-views.es.js +1 -1
  411. package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
  412. package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
  413. package/dist/domains/logs/components/no-logs-info.cjs.js +1 -1
  414. package/dist/domains/logs/components/no-logs-info.es.js +1 -1
  415. package/dist/domains/logs/hooks/use-logs-filter-persistence.cjs.js +1 -1
  416. package/dist/domains/logs/hooks/use-logs-filter-persistence.es.js +1 -1
  417. package/dist/domains/memory/components/flame-graph.cjs.js +1 -1
  418. package/dist/domains/memory/components/flame-graph.es.js +1 -1
  419. package/dist/domains/memory/components/memory-studio-panel.cjs.js +1 -1
  420. package/dist/domains/memory/components/memory-studio-panel.es.js +1 -1
  421. package/dist/domains/metrics/components/card-action-buttons.cjs.js +1 -1
  422. package/dist/domains/metrics/components/card-action-buttons.es.js +1 -1
  423. package/dist/domains/metrics/components/chart-card-error.cjs.js +1 -1
  424. package/dist/domains/metrics/components/chart-card-error.es.js +1 -1
  425. package/dist/domains/metrics/components/date-range-selector.cjs.js +2 -2
  426. package/dist/domains/metrics/components/date-range-selector.cjs.js.map +1 -1
  427. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  428. package/dist/domains/metrics/components/metrics-time-range-chip.cjs.js +4 -4
  429. package/dist/domains/metrics/components/metrics-time-range-chip.cjs.js.map +1 -1
  430. package/dist/domains/metrics/components/metrics-time-range-chip.es.js +4 -4
  431. package/dist/domains/metrics/components/metrics-time-range-chip.es.js.map +1 -1
  432. package/dist/domains/metrics/drilldown.cjs.js +1 -1
  433. package/dist/domains/metrics/drilldown.es.js +1 -1
  434. package/dist/domains/metrics/metrics-filters.cjs.js +1 -1
  435. package/dist/domains/metrics/metrics-filters.es.js +1 -1
  436. package/dist/domains/observability/hooks/use-observability-list-filters.cjs.js +1 -1
  437. package/dist/domains/observability/hooks/use-observability-list-filters.es.js +1 -1
  438. package/dist/domains/observability/observability-list-url-state.cjs.js +1 -1
  439. package/dist/domains/observability/observability-list-url-state.es.js +1 -1
  440. package/dist/domains/observability/saved-view-state.cjs.js +1 -1
  441. package/dist/domains/observability/saved-view-state.es.js +1 -1
  442. package/dist/domains/observability/saved-views/observability-saved-views.cjs.js +1 -1
  443. package/dist/domains/observability/saved-views/observability-saved-views.es.js +1 -1
  444. package/dist/domains/observability/saved-views/saved-views-provider.cjs.js +3 -2
  445. package/dist/domains/observability/saved-views/saved-views-provider.cjs.js.map +1 -1
  446. package/dist/domains/observability/saved-views/saved-views-provider.es.js +3 -2
  447. package/dist/domains/observability/saved-views/saved-views-provider.es.js.map +1 -1
  448. package/dist/domains/observability/saved-views/saved-views-source.cjs.js.map +1 -1
  449. package/dist/domains/observability/saved-views/saved-views-source.es.js.map +1 -1
  450. package/dist/domains/observability/saved-views/use-hosted-saved-views.cjs.js +3 -2
  451. package/dist/domains/observability/saved-views/use-hosted-saved-views.cjs.js.map +1 -1
  452. package/dist/domains/observability/saved-views/use-hosted-saved-views.es.js +3 -2
  453. package/dist/domains/observability/saved-views/use-hosted-saved-views.es.js.map +1 -1
  454. package/dist/domains/observability/saved-views.cjs.js +1 -1
  455. package/dist/domains/observability/saved-views.es.js +1 -1
  456. package/dist/domains/observability.cjs.js +1 -1
  457. package/dist/domains/observability.es.js +1 -1
  458. package/dist/domains/scores/components/score-data-panel.cjs.js +2 -2
  459. package/dist/domains/scores/components/score-data-panel.es.js +2 -2
  460. package/dist/domains/scores/components/span-scoring.cjs.js +4 -4
  461. package/dist/domains/scores/components/span-scoring.es.js +4 -4
  462. package/dist/domains/scores/components/trace-scores-list.cjs.js +2 -2
  463. package/dist/domains/scores/components/trace-scores-list.es.js +2 -2
  464. package/dist/domains/scores/components/trace-scores-tab.cjs.js +1 -1
  465. package/dist/domains/scores/components/trace-scores-tab.es.js +1 -1
  466. package/dist/domains/skills/skill-simple-form.cjs.js +4 -4
  467. package/dist/domains/skills/skill-simple-form.cjs.js.map +1 -1
  468. package/dist/domains/skills/skill-simple-form.es.js +4 -4
  469. package/dist/domains/skills/skill-simple-form.es.js.map +1 -1
  470. package/dist/domains/spans/components/spans-explorer-body.cjs.js +8 -8
  471. package/dist/domains/spans/components/spans-explorer-body.cjs.js.map +1 -1
  472. package/dist/domains/spans/components/spans-explorer-body.es.js +8 -8
  473. package/dist/domains/spans/components/spans-explorer-body.es.js.map +1 -1
  474. package/dist/domains/spans/components/spans-filter-bar.cjs.js +5 -5
  475. package/dist/domains/spans/components/spans-filter-bar.cjs.js.map +1 -1
  476. package/dist/domains/spans/components/spans-filter-bar.es.js +5 -5
  477. package/dist/domains/spans/components/spans-filter-bar.es.js.map +1 -1
  478. package/dist/domains/spans/hooks/use-spans-filter-bar.cjs.js +5 -5
  479. package/dist/domains/spans/hooks/use-spans-filter-bar.cjs.js.map +1 -1
  480. package/dist/domains/spans/hooks/use-spans-filter-bar.es.js +5 -5
  481. package/dist/domains/spans/hooks/use-spans-filter-bar.es.js.map +1 -1
  482. package/dist/domains/spans/span-filters.cjs.js +2 -2
  483. package/dist/domains/spans/span-filters.cjs.js.map +1 -1
  484. package/dist/domains/spans/span-filters.es.js +2 -2
  485. package/dist/domains/spans/span-filters.es.js.map +1 -1
  486. package/dist/domains/threads/components/threads-explorer-body.cjs.js +8 -8
  487. package/dist/domains/threads/components/threads-explorer-body.cjs.js.map +1 -1
  488. package/dist/domains/threads/components/threads-explorer-body.es.js +8 -8
  489. package/dist/domains/threads/components/threads-explorer-body.es.js.map +1 -1
  490. package/dist/domains/threads/components/threads-filter-bar.cjs.js +5 -5
  491. package/dist/domains/threads/components/threads-filter-bar.cjs.js.map +1 -1
  492. package/dist/domains/threads/components/threads-filter-bar.es.js +5 -5
  493. package/dist/domains/threads/components/threads-filter-bar.es.js.map +1 -1
  494. package/dist/domains/threads/hooks/use-threads-filter-bar.cjs.js +5 -5
  495. package/dist/domains/threads/hooks/use-threads-filter-bar.cjs.js.map +1 -1
  496. package/dist/domains/threads/hooks/use-threads-filter-bar.es.js +5 -5
  497. package/dist/domains/threads/hooks/use-threads-filter-bar.es.js.map +1 -1
  498. package/dist/domains/threads/thread-filters.cjs.js +2 -2
  499. package/dist/domains/threads/thread-filters.cjs.js.map +1 -1
  500. package/dist/domains/threads/thread-filters.es.js +2 -2
  501. package/dist/domains/threads/thread-filters.es.js.map +1 -1
  502. package/dist/domains/traces/components/columns-menu/columns-menu.cjs.js +1 -1
  503. package/dist/domains/traces/components/columns-menu/columns-menu.es.js +1 -1
  504. package/dist/domains/traces/components/feedback-thread.cjs.js +3 -3
  505. package/dist/domains/traces/components/feedback-thread.es.js +3 -3
  506. package/dist/domains/traces/components/span-data-panel-view.cjs.js +5 -5
  507. package/dist/domains/traces/components/span-data-panel-view.es.js +5 -5
  508. package/dist/domains/traces/components/span-details-view.cjs.js +1 -1
  509. package/dist/domains/traces/components/span-details-view.es.js +1 -1
  510. package/dist/domains/traces/components/span-outcome.cjs.js +1 -1
  511. package/dist/domains/traces/components/span-outcome.es.js +1 -1
  512. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +2 -2
  513. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +2 -2
  514. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
  515. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
  516. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +3 -3
  517. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +3 -3
  518. package/dist/domains/traces/components/span-payload/span-payload-json.cjs.js +1 -1
  519. package/dist/domains/traces/components/span-payload/span-payload-json.es.js +1 -1
  520. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +3 -3
  521. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +3 -3
  522. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +1 -1
  523. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +1 -1
  524. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
  525. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
  526. package/dist/domains/traces/components/span-payload/span-payload-section.cjs.js +2 -2
  527. package/dist/domains/traces/components/span-payload/span-payload-section.es.js +2 -2
  528. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +1 -1
  529. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +1 -1
  530. package/dist/domains/traces/components/span-payload/span-processor-mutations.cjs.js +1 -1
  531. package/dist/domains/traces/components/span-payload/span-processor-mutations.es.js +1 -1
  532. package/dist/domains/traces/components/span-payload/span-tools-section.cjs.js +1 -1
  533. package/dist/domains/traces/components/span-payload/span-tools-section.es.js +1 -1
  534. package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
  535. package/dist/domains/traces/components/span-summary-description.es.js +1 -1
  536. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
  537. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
  538. package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +2 -2
  539. package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +2 -2
  540. package/dist/domains/traces/components/thread-trace/thread-trace-row.cjs.js +1 -1
  541. package/dist/domains/traces/components/thread-trace/thread-trace-row.es.js +1 -1
  542. package/dist/domains/traces/components/thread-trace/thread-trace-spans.cjs.js +1 -1
  543. package/dist/domains/traces/components/thread-trace/thread-trace-spans.es.js +1 -1
  544. package/dist/domains/traces/components/thread-view-by-trace.cjs.js +1 -1
  545. package/dist/domains/traces/components/thread-view-by-trace.es.js +1 -1
  546. package/dist/domains/traces/components/trace-columns-menu.cjs.js +3 -4
  547. package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
  548. package/dist/domains/traces/components/trace-columns-menu.es.js +3 -4
  549. package/dist/domains/traces/components/trace-columns-menu.es.js.map +1 -1
  550. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +4 -4
  551. package/dist/domains/traces/components/trace-data-panel-view.es.js +4 -4
  552. package/dist/domains/traces/components/trace-data-panel.cjs.js +1 -1
  553. package/dist/domains/traces/components/trace-data-panel.es.js +1 -1
  554. package/dist/domains/traces/components/trace-details-view.cjs.js +1 -1
  555. package/dist/domains/traces/components/trace-details-view.es.js +1 -1
  556. package/dist/domains/traces/components/trace-error-cell.cjs.js +1 -1
  557. package/dist/domains/traces/components/trace-error-cell.es.js +1 -1
  558. package/dist/domains/traces/components/trace-error-summary.cjs.js +1 -1
  559. package/dist/domains/traces/components/trace-error-summary.es.js +1 -1
  560. package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
  561. package/dist/domains/traces/components/trace-id-button.es.js +1 -1
  562. package/dist/domains/traces/components/trace-span-panel.cjs.js +1 -1
  563. package/dist/domains/traces/components/trace-span-panel.es.js +1 -1
  564. package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
  565. package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
  566. package/dist/domains/traces/components/trace-thread-item-view.cjs.js +1 -1
  567. package/dist/domains/traces/components/trace-thread-item-view.es.js +1 -1
  568. package/dist/domains/traces/components/trace-thread-panel.cjs.js +1 -1
  569. package/dist/domains/traces/components/trace-thread-panel.es.js +1 -1
  570. package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.cjs.js +1 -1
  571. package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.es.js +1 -1
  572. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.cjs.js +5 -5
  573. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.cjs.js.map +1 -1
  574. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.es.js +5 -5
  575. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.es.js.map +1 -1
  576. package/dist/domains/traces/components/traces-explorer/traces-explorer-root.cjs.js +1 -1
  577. package/dist/domains/traces/components/traces-explorer/traces-explorer-root.es.js +1 -1
  578. package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.cjs.js +1 -1
  579. package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.es.js +1 -1
  580. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.cjs.js +5 -5
  581. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.cjs.js.map +1 -1
  582. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.es.js +5 -5
  583. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.es.js.map +1 -1
  584. package/dist/domains/traces/components/traces-list-mode-toggle.cjs.js +1 -1
  585. package/dist/domains/traces/components/traces-list-mode-toggle.es.js +1 -1
  586. package/dist/domains/traces/components/traces-list-view.cjs.js +2 -2
  587. package/dist/domains/traces/components/traces-list-view.es.js +2 -2
  588. package/dist/domains/traces/components/traces-page-skeleton.cjs.js +2 -2
  589. package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
  590. package/dist/domains/traces/components/traces-page-skeleton.es.js +2 -2
  591. package/dist/domains/traces/components/traces-page-skeleton.es.js.map +1 -1
  592. package/dist/domains/traces/components/traces-spans-switch.cjs.js +1 -1
  593. package/dist/domains/traces/components/traces-spans-switch.es.js +1 -1
  594. package/dist/domains/traces/hooks/use-download-trace-json.cjs.js +1 -1
  595. package/dist/domains/traces/hooks/use-download-trace-json.es.js +1 -1
  596. package/dist/domains/traces/trace-filters.cjs.js +1 -1
  597. package/dist/domains/traces/trace-filters.es.js +1 -1
  598. package/dist/domains/traces/trace-query-filters.cjs.js +1 -1
  599. package/dist/domains/traces/trace-query-filters.es.js +1 -1
  600. package/dist/domains/traces.cjs.js +1 -1
  601. package/dist/domains/traces.es.js +1 -1
  602. package/dist/domains/workflows/components/workflow-combobox.cjs.js +2 -2
  603. package/dist/domains/workflows/components/workflow-combobox.es.js +2 -2
  604. package/dist/domains/workflows/components/workflow-information.cjs.js +2 -2
  605. package/dist/domains/workflows/components/workflow-information.es.js +2 -2
  606. package/dist/domains/workflows/components/workflow-layout.cjs.js +1 -1
  607. package/dist/domains/workflows/components/workflow-layout.es.js +1 -1
  608. package/dist/domains/workflows/components/workflow-step-detail.cjs.js +2 -2
  609. package/dist/domains/workflows/components/workflow-step-detail.es.js +2 -2
  610. package/dist/domains/workflows/components/workflows-list/no-workflows-info.cjs.js +1 -1
  611. package/dist/domains/workflows/components/workflows-list/no-workflows-info.es.js +1 -1
  612. package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +2 -2
  613. package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +2 -2
  614. package/dist/domains/workflows/context/use-stream-for-run.cjs.js +1 -1
  615. package/dist/domains/workflows/context/use-stream-for-run.es.js +1 -1
  616. package/dist/domains/workflows/runs/workflow-run-list.cjs.js +1 -1
  617. package/dist/domains/workflows/runs/workflow-run-list.es.js +1 -1
  618. package/dist/domains/workflows/workflow/data/workflow-data-button.cjs.js +1 -1
  619. package/dist/domains/workflows/workflow/data/workflow-data-button.es.js +1 -1
  620. package/dist/domains/workflows/workflow/data/workflow-data-inspector.cjs.js +2 -2
  621. package/dist/domains/workflows/workflow/data/workflow-data-inspector.es.js +2 -2
  622. package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js +1 -1
  623. package/dist/domains/workflows/workflow/input/workflow-json-input.es.js +1 -1
  624. package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js +1 -1
  625. package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js +1 -1
  626. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.cjs.js +1 -1
  627. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +1 -1
  628. package/dist/domains/workflows/workflow/use-workflow-trigger.cjs.js +2 -1
  629. package/dist/domains/workflows/workflow/use-workflow-trigger.cjs.js.map +1 -1
  630. package/dist/domains/workflows/workflow/use-workflow-trigger.es.js +2 -1
  631. package/dist/domains/workflows/workflow/use-workflow-trigger.es.js.map +1 -1
  632. package/dist/domains/workflows/workflow/utils.cjs.js +1 -1
  633. package/dist/domains/workflows/workflow/utils.es.js +1 -1
  634. package/dist/domains/workflows/workflow/workflow-body-graph.cjs.js +1 -1
  635. package/dist/domains/workflows/workflow/workflow-body-graph.es.js +1 -1
  636. package/dist/domains/workflows/workflow/workflow-cancel-button.cjs.js +1 -1
  637. package/dist/domains/workflows/workflow/workflow-cancel-button.es.js +1 -1
  638. package/dist/domains/workflows/workflow/workflow-data-edge.cjs.js +1 -1
  639. package/dist/domains/workflows/workflow/workflow-data-edge.es.js +1 -1
  640. package/dist/domains/workflows/workflow/workflow-debug-step-controls.cjs.js +1 -1
  641. package/dist/domains/workflows/workflow/workflow-debug-step-controls.es.js +1 -1
  642. package/dist/domains/workflows/workflow/workflow-graph-boundary.cjs.js +3 -3
  643. package/dist/domains/workflows/workflow/workflow-graph-boundary.es.js +3 -3
  644. package/dist/domains/workflows/workflow/workflow-graph-inner.cjs.js +2 -2
  645. package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +2 -2
  646. package/dist/domains/workflows/workflow/workflow-graph-layout.cjs.js +1 -1
  647. package/dist/domains/workflows/workflow/workflow-graph-layout.es.js +1 -1
  648. package/dist/domains/workflows/workflow/workflow-graph-node.cjs.js +1 -1
  649. package/dist/domains/workflows/workflow/workflow-graph-node.es.js +1 -1
  650. package/dist/domains/workflows/workflow/workflow-graph.cjs.js +1 -1
  651. package/dist/domains/workflows/workflow/workflow-graph.es.js +1 -1
  652. package/dist/domains/workflows/workflow/workflow-map-config-dialog.cjs.js +3 -3
  653. package/dist/domains/workflows/workflow/workflow-map-config-dialog.es.js +3 -3
  654. package/dist/domains/workflows/workflow/workflow-nested-graph.cjs.js +1 -1
  655. package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +1 -1
  656. package/dist/domains/workflows/workflow/workflow-run-data.cjs.js +3 -3
  657. package/dist/domains/workflows/workflow/workflow-run-data.es.js +3 -3
  658. package/dist/domains/workflows/workflow/workflow-run-error.cjs.js +1 -1
  659. package/dist/domains/workflows/workflow/workflow-run-error.es.js +1 -1
  660. package/dist/domains/workflows/workflow/workflow-run-header.cjs.js +1 -1
  661. package/dist/domains/workflows/workflow/workflow-run-header.es.js +1 -1
  662. package/dist/domains/workflows/workflow/workflow-status.cjs.js +1 -1
  663. package/dist/domains/workflows/workflow/workflow-status.es.js +1 -1
  664. package/dist/domains/workflows/workflow/workflow-step-action-bar.cjs.js +2 -2
  665. package/dist/domains/workflows/workflow/workflow-step-action-bar.es.js +2 -2
  666. package/dist/domains/workflows/workflow/workflow-step-node-utils.cjs.js +1 -1
  667. package/dist/domains/workflows/workflow/workflow-step-node-utils.es.js +1 -1
  668. package/dist/domains/workflows/workflow/workflow-suspended-steps.cjs.js +2 -2
  669. package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +2 -2
  670. package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +2 -2
  671. package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +2 -2
  672. package/dist/domains/workflows/workflow/workflow-timeline-row.cjs.js +1 -1
  673. package/dist/domains/workflows/workflow/workflow-timeline-row.es.js +1 -1
  674. package/dist/domains/workflows/workflow/workflow-timeline.cjs.js +1 -1
  675. package/dist/domains/workflows/workflow/workflow-timeline.es.js +1 -1
  676. package/dist/domains/workflows/workflow/workflow-trigger-form.cjs.js +1 -1
  677. package/dist/domains/workflows/workflow/workflow-trigger-form.es.js +1 -1
  678. package/dist/domains/workflows/workflow/workflow-trigger-header.cjs.js +1 -1
  679. package/dist/domains/workflows/workflow/workflow-trigger-header.es.js +1 -1
  680. package/dist/domains/workflows/workflow/workflow-trigger.cjs.js +1 -1
  681. package/dist/domains/workflows/workflow/workflow-trigger.es.js +1 -1
  682. package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +3 -3
  683. package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +3 -3
  684. package/dist/domains/workspace/components/workspace-add-skill.cjs.js +1 -1
  685. package/dist/domains/workspace/components/workspace-add-skill.es.js +1 -1
  686. package/dist/domains/workspace/components/workspace-create-directory.cjs.js +2 -2
  687. package/dist/domains/workspace/components/workspace-create-directory.es.js +2 -2
  688. package/dist/domains/workspace/components/workspace-error.cjs.js +1 -1
  689. package/dist/domains/workspace/components/workspace-error.es.js +1 -1
  690. package/dist/domains/workspace/components/workspace-markdown-preview.cjs.js +1 -1
  691. package/dist/domains/workspace/components/workspace-markdown-preview.es.js +1 -1
  692. package/dist/domains/workspace/components/workspace-search.cjs.js +1 -1
  693. package/dist/domains/workspace/components/workspace-search.es.js +1 -1
  694. package/dist/domains/workspace/components/workspace-tree.cjs.js +1 -1
  695. package/dist/domains/workspace/components/workspace-tree.es.js +1 -1
  696. package/dist/ee/signals/components/entity-index-list.cjs.js +1 -1
  697. package/dist/ee/signals/components/entity-index-list.es.js +1 -1
  698. package/dist/ee/signals/components/signals-empty-state.cjs.js +1 -1
  699. package/dist/ee/signals/components/signals-empty-state.es.js +1 -1
  700. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +6 -6
  701. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js.map +1 -1
  702. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +5 -5
  703. package/dist/ee/signals/examples-pager.cjs.js +1 -1
  704. package/dist/ee/signals/examples-pager.es.js +1 -1
  705. package/dist/ee/signals/sankey-signals.cjs.js +1 -1
  706. package/dist/ee/signals/sankey-signals.es.js +1 -1
  707. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +2 -2
  708. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +2 -2
  709. package/dist/ee/signals/settings/trace-signal-settings.cjs.js +3 -3
  710. package/dist/ee/signals/settings/trace-signal-settings.es.js +3 -3
  711. package/dist/ee/signals/signals-error-state.cjs.js +1 -1
  712. package/dist/ee/signals/signals-error-state.es.js +1 -1
  713. package/dist/ee/signals/snapshot-timeline.cjs.js +1 -1
  714. package/dist/ee/signals/snapshot-timeline.es.js +1 -1
  715. package/dist/ee/signals/theme-filter-banner.cjs.js +1 -1
  716. package/dist/ee/signals/theme-filter-banner.es.js +1 -1
  717. package/dist/ee/signals/trace-insight-view.cjs.js +1 -1
  718. package/dist/ee/signals/trace-insight-view.es.js +1 -1
  719. package/dist/ee/signals/view-mode-tab.cjs.js +1 -1
  720. package/dist/ee/signals/view-mode-tab.es.js +1 -1
  721. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +2 -2
  722. package/dist/ee/topics/components/topic-trace-summary-list.es.js +2 -2
  723. package/dist/{filter-bar-chip-7O02P9Vk.js → filter-bar-chip-B4sV4gDm.js} +86 -71
  724. package/dist/filter-bar-chip-B4sV4gDm.js.map +1 -0
  725. package/dist/{filter-bar-chip-BUyMf8XQ.cjs → filter-bar-chip-CIEsWcEw.cjs} +88 -79
  726. package/dist/filter-bar-chip-CIEsWcEw.cjs.map +1 -0
  727. package/dist/filter-bar-chip.css +22 -0
  728. package/dist/filter-bar-time-range-CXQMBgpz.js +60 -0
  729. package/dist/filter-bar-time-range-CXQMBgpz.js.map +1 -0
  730. package/dist/filter-bar-time-range-DvuaFnkI.cjs +83 -0
  731. package/dist/filter-bar-time-range-DvuaFnkI.cjs.map +1 -0
  732. package/dist/hooks/use-copy-to-clipboard.cjs.js +1 -1
  733. package/dist/hooks/use-copy-to-clipboard.es.js +1 -1
  734. package/dist/{input-group-uDpFNnSW.cjs → input-group-DVJLZDBL.cjs} +6 -4
  735. package/dist/input-group-DVJLZDBL.cjs.map +1 -0
  736. package/dist/{input-group-g85FYfze.js → input-group-QKKV_ouF.js} +7 -5
  737. package/dist/input-group-QKKV_ouF.js.map +1 -0
  738. package/dist/layout/tabbed-container.cjs.js +1 -1
  739. package/dist/layout/tabbed-container.es.js +1 -1
  740. package/dist/lib/form/components/array-element-wrapper.cjs.js +1 -1
  741. package/dist/lib/form/components/array-element-wrapper.es.js +1 -1
  742. package/dist/lib/form/components/array-wrapper.cjs.js +1 -1
  743. package/dist/lib/form/components/array-wrapper.es.js +1 -1
  744. package/dist/lib/form/components/date-field.cjs.js +1 -1
  745. package/dist/lib/form/components/date-field.es.js +1 -1
  746. package/dist/lib/form/components/error-message.cjs.js +1 -1
  747. package/dist/lib/form/components/error-message.es.js +1 -1
  748. package/dist/lib/form/components/form-submit-row.cjs.js +1 -1
  749. package/dist/lib/form/components/form-submit-row.es.js +1 -1
  750. package/dist/lib/form/components/record-field.cjs.js +1 -1
  751. package/dist/lib/form/components/record-field.es.js +1 -1
  752. package/dist/lib/form/components/select-field.cjs.js +1 -1
  753. package/dist/lib/form/components/select-field.es.js +1 -1
  754. package/dist/lib/form/components/submit-button.cjs.js +1 -1
  755. package/dist/lib/form/components/submit-button.es.js +1 -1
  756. package/dist/lib/form/dynamic-form.cjs.js +2 -2
  757. package/dist/lib/form/dynamic-form.cjs.js.map +1 -1
  758. package/dist/lib/form/dynamic-form.es.js +2 -2
  759. package/dist/lib/form/dynamic-form.es.js.map +1 -1
  760. package/dist/lib/form/json-draft.cjs.js +1 -1
  761. package/dist/lib/form/json-draft.es.js +1 -1
  762. package/dist/lib/form/zod-provider/compat.cjs.js +8 -0
  763. package/dist/lib/form/zod-provider/compat.cjs.js.map +1 -1
  764. package/dist/lib/form/zod-provider/compat.es.js +8 -1
  765. package/dist/lib/form/zod-provider/compat.es.js.map +1 -1
  766. package/dist/lib/form/zod-provider.cjs.js +1 -1
  767. package/dist/lib/form/zod-provider.es.js +1 -1
  768. package/dist/{list-search-BEJmYa9a.cjs → list-search-BtRno5As.cjs} +2 -2
  769. package/dist/list-search-BtRno5As.cjs.map +1 -0
  770. package/dist/{list-search-bg7WzULj.js → list-search-CkhsTFdG.js} +2 -2
  771. package/dist/list-search-CkhsTFdG.js.map +1 -0
  772. package/dist/{observability-saved-views-CwCii7hh.cjs → observability-saved-views-BAzxxoAr.cjs} +10 -8
  773. package/dist/observability-saved-views-BAzxxoAr.cjs.map +1 -0
  774. package/dist/{observability-saved-views-Bo5kLN20.js → observability-saved-views-BBam8Fr5.js} +10 -8
  775. package/dist/observability-saved-views-BBam8Fr5.js.map +1 -0
  776. package/dist/primitives/control-icon.cjs.js +9 -0
  777. package/dist/primitives/control-icon.cjs.js.map +1 -0
  778. package/dist/primitives/control-icon.d.ts +1 -0
  779. package/dist/primitives/control-icon.es.js +8 -0
  780. package/dist/primitives/control-icon.es.js.map +1 -0
  781. package/dist/primitives/control-size.cjs.js +6 -0
  782. package/dist/primitives/control-size.cjs.js.map +1 -1
  783. package/dist/primitives/control-size.es.js +6 -1
  784. package/dist/primitives/control-size.es.js.map +1 -1
  785. package/dist/primitives/menu-item.cjs.js +3 -3
  786. package/dist/primitives/menu-item.cjs.js.map +1 -1
  787. package/dist/primitives/menu-item.es.js +3 -3
  788. package/dist/primitives/menu-item.es.js.map +1 -1
  789. package/dist/primitives/trigger-button.cjs.js +1 -1
  790. package/dist/primitives/trigger-button.es.js +1 -1
  791. package/dist/{property-filter-applied-DqsPFbYM.cjs → property-filter-applied-BCeRLcXb.cjs} +18 -18
  792. package/dist/{property-filter-applied-DqsPFbYM.cjs.map → property-filter-applied-BCeRLcXb.cjs.map} +1 -1
  793. package/dist/{property-filter-applied-DRglaEj-.js → property-filter-applied-p3dTTDdb.js} +3 -3
  794. package/dist/{property-filter-applied-DRglaEj-.js.map → property-filter-applied-p3dTTDdb.js.map} +1 -1
  795. package/dist/{select-BbFpEBAY.js → select-BdIZEdcy.js} +4 -8
  796. package/dist/select-BdIZEdcy.js.map +1 -0
  797. package/dist/{select-NySY9Men.cjs → select-Dg8L5ROX.cjs} +3 -7
  798. package/dist/select-Dg8L5ROX.cjs.map +1 -0
  799. package/dist/{span-payload-primitives-Dyhbqaa7.js → span-payload-primitives-B3RdahsC.js} +4 -4
  800. package/dist/{span-payload-primitives-Dyhbqaa7.js.map → span-payload-primitives-B3RdahsC.js.map} +1 -1
  801. package/dist/{span-payload-primitives-B10Xxmx7.cjs → span-payload-primitives-_2d-pAOD.cjs} +4 -4
  802. package/dist/{span-payload-primitives-B10Xxmx7.cjs.map → span-payload-primitives-_2d-pAOD.cjs.map} +1 -1
  803. package/dist/src/domains/chat/index.d.ts +1 -0
  804. package/dist/src/domains/chat/knowledge/index.d.ts +5 -0
  805. package/dist/src/domains/chat/knowledge/knowledge-links.d.ts +21 -0
  806. package/dist/src/domains/chat/knowledge/pinned-knowledge-data.d.ts +22 -0
  807. package/dist/src/domains/chat/knowledge/pinned-knowledge.d.ts +9 -0
  808. package/dist/src/domains/chat/tools/badges/knowledge-tool-badge.d.ts +19 -0
  809. package/dist/src/domains/chat/tools/tool-card-kind.d.ts +2 -2
  810. package/dist/src/domains/knowledge/components/KnowledgePageDetail.d.ts +42 -0
  811. package/dist/src/domains/knowledge/components/KnowledgePageExplorer.d.ts +80 -0
  812. package/dist/src/domains/knowledge/components/KnowledgePageGraph.d.ts +35 -0
  813. package/dist/src/domains/knowledge/components/KnowledgePageTree.d.ts +27 -0
  814. package/dist/src/domains/knowledge/hooks/useInteractionIdle.d.ts +12 -0
  815. package/dist/src/domains/knowledge/lib/layout.d.ts +35 -0
  816. package/dist/src/domains/knowledge/lib/pageGraph.d.ts +45 -0
  817. package/dist/src/domains/knowledge/lib/pageLayout.d.ts +24 -0
  818. package/dist/src/domains/knowledge/lib/pageTree.d.ts +28 -0
  819. package/dist/src/domains/knowledge/lib/popupPlacement.d.ts +12 -0
  820. package/dist/src/domains/knowledge/lib/recordText.d.ts +9 -0
  821. package/dist/src/domains/knowledge/pageTypes.d.ts +96 -0
  822. package/dist/src/domains/metrics/components/metrics-time-range-chip.d.ts +2 -2
  823. package/dist/src/domains/observability/saved-views/saved-views-provider.d.ts +6 -1
  824. package/dist/src/domains/observability/saved-views/saved-views-source.d.ts +1 -0
  825. package/dist/src/domains/observability/saved-views/use-hosted-saved-views.d.ts +1 -1
  826. package/dist/src/domains/skills/skill-simple-form.d.ts +3 -1
  827. package/dist/src/domains/spans/components/spans-filter-bar.d.ts +1 -1
  828. package/dist/src/domains/spans/hooks/use-spans-filter-bar.d.ts +1 -1
  829. package/dist/src/domains/spans/span-filters.d.ts +1 -1
  830. package/dist/src/domains/threads/components/threads-filter-bar.d.ts +1 -1
  831. package/dist/src/domains/threads/hooks/use-threads-filter-bar.d.ts +1 -1
  832. package/dist/src/domains/threads/thread-filters.d.ts +1 -1
  833. package/dist/src/domains/traces/components/traces-explorer/traces-explorer-filter-bar.d.ts +3 -3
  834. package/dist/src/domains/traces/components/traces-page-skeleton.d.ts +1 -1
  835. package/dist/src/ds/components/Button/Button.d.ts +15 -0
  836. package/dist/src/ds/components/ClearFiltersButton/clear-filters-button.d.ts +12 -0
  837. package/dist/src/ds/components/ClearFiltersButton/index.d.ts +1 -0
  838. package/dist/src/ds/components/Combobox/combobox-styles.d.ts +0 -1
  839. package/dist/src/ds/components/DateTimeRangePicker/date-time-range-picker.d.ts +12 -11
  840. package/dist/src/ds/components/FilterBar/filter-bar-chip.d.ts +10 -7
  841. package/dist/src/ds/components/FilterBar/filter-bar-time-range.d.ts +19 -0
  842. package/dist/src/ds/components/FilterBar/filter-bar.d.ts +2 -0
  843. package/dist/src/ds/components/FilterBar/index.d.ts +2 -0
  844. package/dist/src/ds/components/FilterBar/use-filter-bar-item-keys.d.ts +23 -0
  845. package/dist/src/ds/components/ListSearch/list-search.d.ts +1 -0
  846. package/dist/src/ds/components/SavedViews/saved-view-picker.d.ts +3 -1
  847. package/dist/src/ds/components/ai/tool-call/tool-phrases.d.ts +30 -0
  848. package/dist/src/ds/primitives/control-icon.d.ts +3 -0
  849. package/dist/src/ds/primitives/control-size.d.ts +1 -0
  850. package/dist/src/lib/form/zod-provider/compat.d.ts +5 -0
  851. package/dist/style.css +181 -66
  852. package/dist/{tabbed-container-BKUqfEKy.js → tabbed-container-5j6dhoRX.js} +6 -6
  853. package/dist/{tabbed-container-BKUqfEKy.js.map → tabbed-container-5j6dhoRX.js.map} +1 -1
  854. package/dist/{tabbed-container-CFEImJOK.cjs → tabbed-container-DQU7pVio.cjs} +6 -6
  855. package/dist/{tabbed-container-CFEImJOK.cjs.map → tabbed-container-DQU7pVio.cjs.map} +1 -1
  856. package/dist/{tabs-content-DgR3Hik1.cjs → tabs-content-CmXe5ML0.cjs} +2 -2
  857. package/dist/{tabs-content-DgR3Hik1.cjs.map → tabs-content-CmXe5ML0.cjs.map} +1 -1
  858. package/dist/{tabs-content-cpV6A9c3.js → tabs-content-D__B9hd-.js} +2 -2
  859. package/dist/{tabs-content-cpV6A9c3.js.map → tabs-content-D__B9hd-.js.map} +1 -1
  860. package/dist/{tabs-tab-UT1JliwK.js → tabs-tab-CYTZevdV.js} +2 -2
  861. package/dist/{tabs-tab-UT1JliwK.js.map → tabs-tab-CYTZevdV.js.map} +1 -1
  862. package/dist/{tabs-tab-Qp3RJ17z.cjs → tabs-tab-DGwfHVDr.cjs} +2 -2
  863. package/dist/{tabs-tab-Qp3RJ17z.cjs.map → tabs-tab-DGwfHVDr.cjs.map} +1 -1
  864. package/dist/{toast-api-WhxnAT9F.js → toast-api-D_rrRhNG.js} +2 -2
  865. package/dist/{toast-api-WhxnAT9F.js.map → toast-api-D_rrRhNG.js.map} +1 -1
  866. package/dist/{toast-api-Bv87KHu_.cjs → toast-api-qtkOucy2.cjs} +2 -2
  867. package/dist/{toast-api-Bv87KHu_.cjs.map → toast-api-qtkOucy2.cjs.map} +1 -1
  868. package/dist/{tool-approval-BfjoSNOC.cjs → tool-approval-1qiB4hhG.cjs} +5 -5
  869. package/dist/{tool-approval-BfjoSNOC.cjs.map → tool-approval-1qiB4hhG.cjs.map} +1 -1
  870. package/dist/{tool-approval-FeuyUUcL.js → tool-approval-B6MFcaKV.js} +5 -5
  871. package/dist/{tool-approval-FeuyUUcL.js.map → tool-approval-B6MFcaKV.js.map} +1 -1
  872. package/dist/{tool-call-CvilN9ti.cjs → tool-call-Bu66PkD-.cjs} +34 -4
  873. package/dist/{tool-call-CvilN9ti.cjs.map → tool-call-Bu66PkD-.cjs.map} +1 -1
  874. package/dist/{tool-call-BxYXs9w0.js → tool-call-Ch9-jjXU.js} +34 -4
  875. package/dist/{tool-call-BxYXs9w0.js.map → tool-call-Ch9-jjXU.js.map} +1 -1
  876. package/dist/{tool-card-B7O8AsRl.cjs → tool-card-DrqPZfPQ.cjs} +20 -6
  877. package/dist/tool-card-DrqPZfPQ.cjs.map +1 -0
  878. package/dist/{tool-card-ELW898uw.js → tool-card-sO6P2Qj4.js} +20 -6
  879. package/dist/tool-card-sO6P2Qj4.js.map +1 -0
  880. package/dist/{tool-presentation-BLErsb7c.cjs → tool-presentation-CQlDEwgS.cjs} +26 -1
  881. package/dist/tool-presentation-CQlDEwgS.cjs.map +1 -0
  882. package/dist/{tool-presentation-BSZYIWx2.js → tool-presentation-DvCsb_kz.js} +26 -1
  883. package/dist/tool-presentation-DvCsb_kz.js.map +1 -0
  884. package/dist/{trace-filters-BJaebsxJ.js → trace-filters-CaWkw779.js} +2 -3
  885. package/dist/trace-filters-CaWkw779.js.map +1 -0
  886. package/dist/{trace-filters-BNEZ31HX.cjs → trace-filters-a0N9bf52.cjs} +1 -2
  887. package/dist/trace-filters-a0N9bf52.cjs.map +1 -0
  888. package/dist/{use-workflow-graph-runtime-deTN_q_G.js → use-workflow-graph-runtime-BKNhOKsH.js} +3 -3
  889. package/dist/{use-workflow-graph-runtime-deTN_q_G.js.map → use-workflow-graph-runtime-BKNhOKsH.js.map} +1 -1
  890. package/dist/{use-workflow-graph-runtime-DkwQjMEV.cjs → use-workflow-graph-runtime-DYao-08R.cjs} +3 -3
  891. package/dist/{use-workflow-graph-runtime-DkwQjMEV.cjs.map → use-workflow-graph-runtime-DYao-08R.cjs.map} +1 -1
  892. package/dist/utils/toast.cjs.js +1 -1
  893. package/dist/utils/toast.es.js +1 -1
  894. package/package.json +12 -10
  895. package/theme.css +4 -0
  896. package/dist/ActionRow-BfK77pCT.cjs.map +0 -1
  897. package/dist/ActionRow-Cd6tOC2K.js.map +0 -1
  898. package/dist/Button-Bw1e3ONi.js.map +0 -1
  899. package/dist/Button-YQRflC47.cjs.map +0 -1
  900. package/dist/DateTimeRangePicker-C_Lie_2P.js.map +0 -1
  901. package/dist/DateTimeRangePicker-HmPOHwAQ.cjs.map +0 -1
  902. package/dist/FilterBar--4oguuVe.js.map +0 -1
  903. package/dist/FilterBar-BUd4f7oi.cjs.map +0 -1
  904. package/dist/combobox-parts-BZVXwbG7.cjs.map +0 -1
  905. package/dist/combobox-parts-W7KRQUsV.js.map +0 -1
  906. package/dist/components/ButtonsGroup.cjs.js.map +0 -1
  907. package/dist/components/ButtonsGroup.es.js.map +0 -1
  908. package/dist/domains/traces/components/trace-time-range-chip.cjs.js +0 -90
  909. package/dist/domains/traces/components/trace-time-range-chip.cjs.js.map +0 -1
  910. package/dist/domains/traces/components/trace-time-range-chip.d.ts +0 -1
  911. package/dist/domains/traces/components/trace-time-range-chip.es.js +0 -86
  912. package/dist/domains/traces/components/trace-time-range-chip.es.js.map +0 -1
  913. package/dist/filter-bar-chip-7O02P9Vk.js.map +0 -1
  914. package/dist/filter-bar-chip-BUyMf8XQ.cjs.map +0 -1
  915. package/dist/input-group-g85FYfze.js.map +0 -1
  916. package/dist/input-group-uDpFNnSW.cjs.map +0 -1
  917. package/dist/list-search-BEJmYa9a.cjs.map +0 -1
  918. package/dist/list-search-bg7WzULj.js.map +0 -1
  919. package/dist/observability-saved-views-Bo5kLN20.js.map +0 -1
  920. package/dist/observability-saved-views-CwCii7hh.cjs.map +0 -1
  921. package/dist/select-BbFpEBAY.js.map +0 -1
  922. package/dist/select-NySY9Men.cjs.map +0 -1
  923. package/dist/src/domains/traces/components/trace-time-range-chip.d.ts +0 -22
  924. package/dist/tool-card-B7O8AsRl.cjs.map +0 -1
  925. package/dist/tool-card-ELW898uw.js.map +0 -1
  926. package/dist/tool-presentation-BLErsb7c.cjs.map +0 -1
  927. package/dist/tool-presentation-BSZYIWx2.js.map +0 -1
  928. package/dist/trace-filters-BJaebsxJ.js.map +0 -1
  929. package/dist/trace-filters-BNEZ31HX.cjs.map +0 -1
@@ -3,12 +3,12 @@ const require_utils_date_format = require("./utils/date-format.cjs.js");
3
3
  const require_scroll_area = require("./scroll-area-BP4gPZ4G.cjs");
4
4
  const require_Txt = require("./Txt-BnoSqxKE.cjs");
5
5
  const require_truncate_string = require("./truncate-string-lrAb2Nd_.cjs");
6
- const require_copy_button = require("./copy-button-BYEFKNpo.cjs");
6
+ const require_copy_button = require("./copy-button-DJAQ6_3o.cjs");
7
7
  const require_highlight = require("./highlight-D0VoR2qO.cjs");
8
8
  const require_code = require("./code-CqgfD-cP.cjs");
9
9
  const require_components_CodeBlock = require("./components/CodeBlock.cjs.js");
10
- const require_tool_presentation = require("./tool-presentation-BLErsb7c.cjs");
11
- const require_activity = require("./activity-DAK8tj7r.cjs");
10
+ const require_tool_presentation = require("./tool-presentation-CQlDEwgS.cjs");
11
+ const require_activity = require("./activity-DyB5H3gF.cjs");
12
12
  let react_jsx_runtime = require("react/jsx-runtime");
13
13
  let lucide_react = require("lucide-react");
14
14
  // src/ds/components/ai/tool-call/ansi.ts
@@ -360,6 +360,36 @@ var KIND_PHRASES = {
360
360
  done: "Read skill file",
361
361
  one: "read a skill file",
362
362
  many: "read skill files"
363
+ },
364
+ "Search knowledge": {
365
+ live: "Searching knowledge",
366
+ done: "Searched knowledge",
367
+ one: "searched knowledge",
368
+ many: "searched knowledge"
369
+ },
370
+ "Read page": {
371
+ live: "Reading page",
372
+ done: "Read page",
373
+ one: "read a page",
374
+ many: "read pages"
375
+ },
376
+ "Edit page": {
377
+ live: "Editing page",
378
+ done: "Edited page",
379
+ one: "edited a page",
380
+ many: "edited pages"
381
+ },
382
+ "Edit note": {
383
+ live: "Editing note",
384
+ done: "Edited note",
385
+ one: "edited a note",
386
+ many: "edited notes"
387
+ },
388
+ "Update pin": {
389
+ live: "Updating pin",
390
+ done: "Updated pin",
391
+ one: "updated a pin",
392
+ many: "updated pins"
363
393
  }
364
394
  };
365
395
  function isToolKind(label) {
@@ -458,4 +488,4 @@ Object.defineProperty(exports, "toolPhrases", {
458
488
  }
459
489
  });
460
490
 
461
- //# sourceMappingURL=tool-call-CvilN9ti.cjs.map
491
+ //# sourceMappingURL=tool-call-Bu66PkD-.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-call-CvilN9ti.cjs","names":["cn","CopyButton","useHighlight","_Fragment","cn","languageForPath","CodeBlock","truncateString","toolEdit","visibleToolArgumentsText","presentTool","Activity","ActivityTrigger","ActivityHeader","ActivityLeading","ActivityIcon","FoldVertical","ActivityLabel","ActivityDetail","ActivitySpacer","ActivityTrailing","ActivityDisclosure","ActivityContent","ScrollArea","Txt","X","_Fragment","ActivitySummary","toDate","formatDate"],"sources":["../src/ds/components/ai/tool-call/ansi.ts","../src/ds/components/ai/tool-call/group-consecutive.ts","../src/ds/components/ai/tool-call/tool-call-mono.tsx","../src/ds/components/ai/tool-call/tool-call-edit.tsx","../src/ds/components/ai/tool-call/tool-call-arguments.tsx","../src/ds/components/ai/tool-call/tool-call-group.tsx","../src/ds/components/ai/tool-call/tool-call-output.tsx","../src/ds/components/ai/tool-call/tool-phrases.ts","../src/ds/components/ai/tool-call/tool-call-time.tsx"],"sourcesContent":["// Sandbox commands run in a PTY, so CLIs emit color escapes even under NO_COLOR.\n// eslint-disable-next-line no-control-regex\nconst ANSI_RE =\n /[\\u001b\\u009b][[\\]()#;?]*(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d/#&.:=?%@~_]*)*)?\\u0007|(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~])/g;\n\n// The same sequences once JSON.stringify escaped the bytes; an even backslash run before the `u` is source text spelling the escape, kept.\nconst ESCAPED_ANSI_RE = /(?<!\\\\)((?:\\\\\\\\)*)\\\\u001[bB](?:\\[[0-9;?<=>]*[a-zA-Z]|\\][\\s\\S]*?(?:\\\\u0007|\\\\u001[bB]\\\\\\\\))/g;\n\nexport function stripAnsi(text: string): string {\n return text.replace(ANSI_RE, '');\n}\n\nexport function stripSerializedAnsi(text: string): string {\n return stripAnsi(text).replace(ESCAPED_ANSI_RE, '$1');\n}\n","export interface ConsecutiveGroups<T> {\n /** Each run, keyed by its first member. */\n byFirstKey: Map<string, T[]>;\n /** The members after the first, which draw nothing of their own. */\n memberKeys: Set<string>;\n}\n\nexport interface ConsecutiveRules<T, U extends T> {\n key: (item: U) => string;\n /** Whether an item extends the run; anything else ends it. */\n joins: (item: T) => item is U;\n /** Runs shorter than this stay individual rows. */\n min?: number;\n}\n\n/** Consecutive tool calls this long fold into one group row. */\nexport const TOOL_GROUP_MIN = 3;\n\n/** Cuts a list into runs of joining items, keeping only the runs long enough to fold. */\nexport function groupConsecutive<T, U extends T>(\n items: readonly T[],\n { key, joins, min = TOOL_GROUP_MIN }: ConsecutiveRules<T, U>,\n): ConsecutiveGroups<U> {\n const byFirstKey = new Map<string, U[]>();\n const memberKeys = new Set<string>();\n let run: U[] = [];\n\n const flush = () => {\n if (run.length >= min) {\n for (const [index, item] of run.entries()) {\n if (index === 0) byFirstKey.set(key(item), run);\n else memberKeys.add(key(item));\n }\n }\n run = [];\n };\n\n for (const item of items) {\n if (joins(item)) run.push(item);\n else flush();\n }\n flush();\n\n return { byFirstKey, memberKeys };\n}\n","import type { ComponentProps } from 'react';\nimport { CopyButton } from '@/ds/components/CopyButton';\nimport { cn } from '@/lib/utils';\n\nexport interface ToolCallMonoProps extends ComponentProps<'pre'> {\n copyText: string;\n}\n\n/** Monospace body block of an expanded call — arguments, command, output — with a hover copy. */\nexport const ToolCallMono = ({ copyText, className, children, ...props }: ToolCallMonoProps) => (\n <div className=\"group/block relative max-w-full min-w-0\">\n <pre\n className={cn(\n 'm-0 max-h-60 max-w-full overflow-auto rounded-md bg-fill px-3 py-2 font-mono text-caption break-words whitespace-pre-wrap',\n className,\n )}\n {...props}\n >\n {children}\n </pre>\n <CopyButton\n content={copyText}\n variant=\"ghost\"\n className=\"absolute top-1 right-1 opacity-0 transition-opacity group-hover/block:opacity-100 focus-visible:opacity-100\"\n />\n </div>\n);\n\n/** A shell command as the body shows it: `$` in the margin, the copy takes the command alone. */\nexport const ToolCallCommand = ({ command }: { command: string }) => (\n <ToolCallMono copyText={command} className=\"text-foreground\">\n <span className=\"text-muted-foreground select-none\">$ </span>\n {command}\n </ToolCallMono>\n);\n","import type { ToolEdit } from './tool-presentation';\nimport { useHighlight } from '@/ds/components/Code';\nimport { CodeBlock } from '@/ds/components/CodeBlock';\nimport { languageForPath } from '@/ds/components/CodeEditor/highlight';\nimport { truncateString } from '@/lib/truncate-string';\nimport { cn } from '@/lib/utils';\n\nconst DIFF_MAX_LINES = 200;\nconst WRITTEN_FILE_MAX_CHARS = 2000;\n\nconst DIFF_SIDES = {\n removed: { sign: '-', row: 'bg-destructive-subtle', gutter: 'text-destructive-subtle-foreground' },\n added: { sign: '+', row: 'bg-success-subtle', gutter: 'text-success-subtle-foreground' },\n} as const;\n\nfunction boundedLines(text: string, showFullContent: boolean): { lines: string[]; hidden: number } {\n const lines = text.split('\\n');\n if (showFullContent) return { lines, hidden: 0 };\n return { lines: lines.slice(0, DIFF_MAX_LINES), hidden: Math.max(0, lines.length - DIFF_MAX_LINES) };\n}\n\nfunction DiffSide({ lines, side, lang }: { lines: string[]; side: keyof typeof DIFF_SIDES; lang: string | undefined }) {\n const { sign, row, gutter } = DIFF_SIDES[side];\n const code = lines.join('\\n');\n const highlighted = useHighlight(code, lang);\n const tokens = highlighted?.code === code ? highlighted.tokens : undefined;\n\n return (\n <>\n {lines.map((line, index) => (\n <div key={index} className={cn('flex whitespace-pre', row)}>\n <span className={cn('w-5 shrink-0 text-center opacity-70 select-none', gutter)}>{sign}</span>\n <span className=\"flex-1 pr-2.5 text-foreground\">\n {tokens?.[index]?.map((token, tokenIndex) => (\n <span key={tokenIndex} className={token.className}>\n {token.content}\n </span>\n )) ?? line}\n </span>\n </div>\n ))}\n </>\n );\n}\n\nexport function ToolCallEdit({ edit, showFullContent = false }: { edit: ToolEdit; showFullContent?: boolean }) {\n const lang = languageForPath(edit.path);\n\n if ('content' in edit) {\n return (\n <CodeBlock\n code={showFullContent ? edit.content : truncateString(edit.content, WRITTEN_FILE_MAX_CHARS)}\n lang={lang}\n fileName={edit.path ?? 'Change'}\n overflow=\"scroll\"\n />\n );\n }\n\n const removed = boundedLines(edit.oldText, showFullContent);\n const added = boundedLines(edit.newText, showFullContent);\n const hidden = removed.hidden + added.hidden;\n\n return (\n <div\n className={cn(\n 'max-w-full min-w-0 overflow-x-auto rounded-md border border-border bg-fill font-mono text-caption',\n showFullContent && 'max-h-60 overflow-y-auto',\n )}\n role=\"group\"\n aria-label=\"File change\"\n >\n <DiffSide lines={removed.lines} side=\"removed\" lang={lang} />\n <DiffSide lines={added.lines} side=\"added\" lang={lang} />\n {hidden > 0 && <div className=\"px-2.5 py-1 text-muted-foreground select-none\">… {hidden} more lines</div>}\n </div>\n );\n}\n","import { ToolCallEdit } from './tool-call-edit';\nimport { ToolCallMono } from './tool-call-mono';\nimport { toolEdit, visibleToolArgumentsText } from './tool-presentation';\nimport type { ToolArgumentsInput } from './tool-presentation';\n\nexport interface ToolCallArgumentsProps extends ToolArgumentsInput {\n 'data-testid'?: string;\n showFullContent?: boolean;\n}\n\nexport function ToolCallArguments({ 'data-testid': testId, showFullContent, ...input }: ToolCallArgumentsProps) {\n const edit = toolEdit(input.toolName, input.args);\n if (edit) return <ToolCallEdit edit={edit} showFullContent={showFullContent} />;\n\n const text = visibleToolArgumentsText(input);\n if (!text) return null;\n\n return (\n <ToolCallMono copyText={text} data-testid={testId} className=\"text-foreground\">\n {text}\n </ToolCallMono>\n );\n}\n","import { FoldVertical, X } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport { presentTool } from './tool-presentation';\nimport {\n Activity,\n ActivityContent,\n ActivityDetail,\n ActivityDisclosure,\n ActivityHeader,\n ActivityIcon,\n ActivityLabel,\n ActivityLeading,\n ActivitySpacer,\n ActivitySummary,\n ActivityTrailing,\n ActivityTrigger,\n} from '@/ds/components/ai/activity';\nimport type { ActivityStatus } from '@/ds/components/ai/activity';\nimport { ScrollArea } from '@/ds/components/ScrollArea';\nimport { Txt } from '@/ds/components/Txt';\n\nexport interface ToolCallGroupStep {\n toolName: string;\n args: unknown;\n status: ActivityStatus;\n /** A successful tool result was recorded. Supply for every step to enable outcome counts; omit to keep legacy summaries. */\n hasResult?: boolean;\n}\n\nexport interface ToolCallGroupProps {\n steps: ToolCallGroupStep[];\n /** Rendered ahead of the icon, e.g. the time the first step began. */\n leading?: ReactNode;\n children: ReactNode;\n}\n\nconst MAX_KIND_GLYPHS = 4;\n\nexport function ToolCallGroup({ steps, leading, children }: ToolCallGroupProps) {\n const running = steps.find(step => step.status === 'running');\n const live = running && presentTool(running.toolName, running.args);\n\n return (\n <Activity status={running ? 'running' : 'idle'} aria-label={`Tool group: ${steps.length} steps`}>\n <ActivityTrigger>\n <ActivityHeader>\n <ActivityLeading>{leading}</ActivityLeading>\n <ActivityIcon>\n <FoldVertical size={14} aria-hidden className=\"text-placeholder\" />\n </ActivityIcon>\n <ActivityLabel>{steps.length} steps</ActivityLabel>\n {live && live.description ? (\n <ActivityLabel className=\"max-w-none min-w-0 shrink\">{live.description}</ActivityLabel>\n ) : (\n live && live.detail && <ActivityDetail>{live.detail}</ActivityDetail>\n )}\n <GroupKinds steps={steps} />\n <ActivitySpacer rule />\n <ActivityTrailing>\n <GroupProgress steps={steps} />\n </ActivityTrailing>\n <ActivityDisclosure />\n </ActivityHeader>\n </ActivityTrigger>\n <ActivityContent className=\"py-0.5 pr-0 pl-2.5\">\n <ScrollArea maxHeight=\"18rem\" autoScroll={Boolean(running)} revealScrollbarOnHover={false}>\n {children}\n </ScrollArea>\n </ActivityContent>\n </Activity>\n );\n}\n\nfunction GroupProgress({ steps }: { steps: ToolCallGroupStep[] }) {\n const done = steps.filter(step => step.status !== 'running').length;\n if (done < steps.length) {\n return (\n <Txt as=\"span\" variant=\"meta\" tone=\"muted\" className=\"shrink-0 tabular-nums\">\n {done}/{steps.length}\n </Txt>\n );\n }\n const failed = steps.filter(step => step.status === 'error').length;\n const errorIndicator =\n failed > 0 ? <X size={13} role=\"img\" aria-label=\"Failed\" className=\"shrink-0 text-destructive-foreground\" /> : null;\n // Older consumers only supply visual status, which cannot distinguish completed from interrupted calls.\n if (steps.some(step => step.hasResult === undefined)) return errorIndicator;\n\n const succeeded = steps.filter(step => step.status === 'idle' && step.hasResult).length;\n const incomplete = steps.length - succeeded - failed;\n const summary = [\n succeeded > 0 && `${succeeded} OK`,\n failed > 0 && `${failed} failed`,\n incomplete > 0 && `${incomplete} incomplete`,\n ]\n .filter(Boolean)\n .join(' · ');\n\n return (\n <>\n {errorIndicator}\n <Txt as=\"span\" variant=\"meta\" tone=\"muted\" className=\"shrink-0 tabular-nums\">\n {summary}\n </Txt>\n </>\n );\n}\n\nfunction GroupKinds({ steps }: { steps: ToolCallGroupStep[] }) {\n const presented = steps.map(step => presentTool(step.toolName, step.args));\n const labels = new Set(presented.map(({ label }) => label));\n const glyphs = [...new Map(presented.map(({ pose, icon }) => [pose, icon]))].slice(0, MAX_KIND_GLYPHS);\n\n return (\n <ActivitySummary role=\"img\" aria-label={[...labels].join(', ')} className=\"shrink-0 gap-1.5\">\n {glyphs.map(([pose, Kind]) => (\n <Kind key={pose} size={12} className=\"text-placeholder\" />\n ))}\n </ActivitySummary>\n );\n}\n","import { ToolCallMono } from './tool-call-mono';\n\nexport interface ToolCallOutputProps {\n text: string;\n error?: boolean;\n maxLength?: number;\n 'data-testid'?: string;\n}\n\nexport function ToolCallOutput({ text, error, maxLength, 'data-testid': testId }: ToolCallOutputProps) {\n const preview = maxLength !== undefined && text.length > maxLength ? `${text.slice(0, maxLength)}…` : text;\n\n return (\n <ToolCallMono\n copyText={text}\n data-testid={testId}\n className={error ? 'text-destructive-foreground' : 'text-muted-foreground'}\n >\n {preview}\n </ToolCallMono>\n );\n}\n","/** How a line words one kind of tool: while it runs, done alone, and once or many times in a summary. */\nexport interface ToolPhrases {\n live: string;\n done: string;\n one: string;\n many: string;\n}\n\nconst KIND_PHRASES = {\n Read: { live: 'Reading', done: 'Read', one: 'read a file', many: 'read files' },\n Write: { live: 'Writing', done: 'Wrote', one: 'wrote a file', many: 'wrote files' },\n Edit: { live: 'Editing', done: 'Edited', one: 'edited a file', many: 'edited files' },\n Run: { live: 'Running', done: 'Ran', one: 'ran a command', many: 'ran commands' },\n 'Process output': {\n live: 'Reading output',\n done: 'Read output',\n one: 'read process output',\n many: 'read process output',\n },\n 'Stop process': {\n live: 'Stopping process',\n done: 'Stopped process',\n one: 'stopped a process',\n many: 'stopped processes',\n },\n 'Find files': { live: 'Finding files', done: 'Found files', one: 'found files', many: 'found files' },\n 'List files': { live: 'Listing files', done: 'Listed files', one: 'listed files', many: 'listed files' },\n Search: { live: 'Searching', done: 'Searched', one: 'searched code', many: 'searched code' },\n 'Search the web': {\n live: 'Searching the web',\n done: 'Searched the web',\n one: 'searched the web',\n many: 'searched the web',\n },\n 'Inspect code': { live: 'Inspecting', done: 'Inspected', one: 'inspected code', many: 'inspected code' },\n 'File info': { live: 'Checking', done: 'Checked', one: 'checked a file', many: 'checked files' },\n Delete: { live: 'Deleting', done: 'Deleted', one: 'deleted a file', many: 'deleted files' },\n 'New folder': { live: 'Creating folder', done: 'Created folder', one: 'created a folder', many: 'created folders' },\n Skill: { live: 'Using skill', done: 'Used skill', one: 'used a skill', many: 'used skills' },\n 'Search skills': {\n live: 'Searching skills',\n done: 'Searched skills',\n one: 'searched skills',\n many: 'searched skills',\n },\n 'Skill file': {\n live: 'Reading skill file',\n done: 'Read skill file',\n one: 'read a skill file',\n many: 'read skill files',\n },\n} satisfies Record<string, ToolPhrases>;\n\n/** The kinds `presentTool` labels a call with; each one has its phrases. */\nexport type ToolKind = keyof typeof KIND_PHRASES;\n\nfunction isToolKind(label: string): label is ToolKind {\n return Object.hasOwn(KIND_PHRASES, label);\n}\n\nexport function toolPhrases(label: string): ToolPhrases {\n if (isToolKind(label)) return KIND_PHRASES[label];\n return { live: `Using ${label}`, done: `Used ${label}`, one: `used ${label}`, many: `used ${label}` };\n}\n","import { formatDate, toDate } from '@/utils/date-format';\n\nexport function ToolCallTime({ at }: { at?: number }) {\n const time = toDate(at);\n if (!time) return null;\n\n return (\n <time\n className=\"shrink-0 text-meta text-muted-foreground tabular-nums\"\n dateTime={time.toISOString()}\n title={formatDate(time, 'date-time-seconds')}\n >\n {formatDate(time, 'time-seconds')}\n </time>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"tool-call-Bu66PkD-.cjs","names":["cn","CopyButton","useHighlight","_Fragment","cn","languageForPath","CodeBlock","truncateString","toolEdit","visibleToolArgumentsText","presentTool","Activity","ActivityTrigger","ActivityHeader","ActivityLeading","ActivityIcon","FoldVertical","ActivityLabel","ActivityDetail","ActivitySpacer","ActivityTrailing","ActivityDisclosure","ActivityContent","ScrollArea","Txt","X","_Fragment","ActivitySummary","toDate","formatDate"],"sources":["../src/ds/components/ai/tool-call/ansi.ts","../src/ds/components/ai/tool-call/group-consecutive.ts","../src/ds/components/ai/tool-call/tool-call-mono.tsx","../src/ds/components/ai/tool-call/tool-call-edit.tsx","../src/ds/components/ai/tool-call/tool-call-arguments.tsx","../src/ds/components/ai/tool-call/tool-call-group.tsx","../src/ds/components/ai/tool-call/tool-call-output.tsx","../src/ds/components/ai/tool-call/tool-phrases.ts","../src/ds/components/ai/tool-call/tool-call-time.tsx"],"sourcesContent":["// Sandbox commands run in a PTY, so CLIs emit color escapes even under NO_COLOR.\n// eslint-disable-next-line no-control-regex\nconst ANSI_RE =\n /[\\u001b\\u009b][[\\]()#;?]*(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d/#&.:=?%@~_]*)*)?\\u0007|(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~])/g;\n\n// The same sequences once JSON.stringify escaped the bytes; an even backslash run before the `u` is source text spelling the escape, kept.\nconst ESCAPED_ANSI_RE = /(?<!\\\\)((?:\\\\\\\\)*)\\\\u001[bB](?:\\[[0-9;?<=>]*[a-zA-Z]|\\][\\s\\S]*?(?:\\\\u0007|\\\\u001[bB]\\\\\\\\))/g;\n\nexport function stripAnsi(text: string): string {\n return text.replace(ANSI_RE, '');\n}\n\nexport function stripSerializedAnsi(text: string): string {\n return stripAnsi(text).replace(ESCAPED_ANSI_RE, '$1');\n}\n","export interface ConsecutiveGroups<T> {\n /** Each run, keyed by its first member. */\n byFirstKey: Map<string, T[]>;\n /** The members after the first, which draw nothing of their own. */\n memberKeys: Set<string>;\n}\n\nexport interface ConsecutiveRules<T, U extends T> {\n key: (item: U) => string;\n /** Whether an item extends the run; anything else ends it. */\n joins: (item: T) => item is U;\n /** Runs shorter than this stay individual rows. */\n min?: number;\n}\n\n/** Consecutive tool calls this long fold into one group row. */\nexport const TOOL_GROUP_MIN = 3;\n\n/** Cuts a list into runs of joining items, keeping only the runs long enough to fold. */\nexport function groupConsecutive<T, U extends T>(\n items: readonly T[],\n { key, joins, min = TOOL_GROUP_MIN }: ConsecutiveRules<T, U>,\n): ConsecutiveGroups<U> {\n const byFirstKey = new Map<string, U[]>();\n const memberKeys = new Set<string>();\n let run: U[] = [];\n\n const flush = () => {\n if (run.length >= min) {\n for (const [index, item] of run.entries()) {\n if (index === 0) byFirstKey.set(key(item), run);\n else memberKeys.add(key(item));\n }\n }\n run = [];\n };\n\n for (const item of items) {\n if (joins(item)) run.push(item);\n else flush();\n }\n flush();\n\n return { byFirstKey, memberKeys };\n}\n","import type { ComponentProps } from 'react';\nimport { CopyButton } from '@/ds/components/CopyButton';\nimport { cn } from '@/lib/utils';\n\nexport interface ToolCallMonoProps extends ComponentProps<'pre'> {\n copyText: string;\n}\n\n/** Monospace body block of an expanded call — arguments, command, output — with a hover copy. */\nexport const ToolCallMono = ({ copyText, className, children, ...props }: ToolCallMonoProps) => (\n <div className=\"group/block relative max-w-full min-w-0\">\n <pre\n className={cn(\n 'm-0 max-h-60 max-w-full overflow-auto rounded-md bg-fill px-3 py-2 font-mono text-caption break-words whitespace-pre-wrap',\n className,\n )}\n {...props}\n >\n {children}\n </pre>\n <CopyButton\n content={copyText}\n variant=\"ghost\"\n className=\"absolute top-1 right-1 opacity-0 transition-opacity group-hover/block:opacity-100 focus-visible:opacity-100\"\n />\n </div>\n);\n\n/** A shell command as the body shows it: `$` in the margin, the copy takes the command alone. */\nexport const ToolCallCommand = ({ command }: { command: string }) => (\n <ToolCallMono copyText={command} className=\"text-foreground\">\n <span className=\"text-muted-foreground select-none\">$ </span>\n {command}\n </ToolCallMono>\n);\n","import type { ToolEdit } from './tool-presentation';\nimport { useHighlight } from '@/ds/components/Code';\nimport { CodeBlock } from '@/ds/components/CodeBlock';\nimport { languageForPath } from '@/ds/components/CodeEditor/highlight';\nimport { truncateString } from '@/lib/truncate-string';\nimport { cn } from '@/lib/utils';\n\nconst DIFF_MAX_LINES = 200;\nconst WRITTEN_FILE_MAX_CHARS = 2000;\n\nconst DIFF_SIDES = {\n removed: { sign: '-', row: 'bg-destructive-subtle', gutter: 'text-destructive-subtle-foreground' },\n added: { sign: '+', row: 'bg-success-subtle', gutter: 'text-success-subtle-foreground' },\n} as const;\n\nfunction boundedLines(text: string, showFullContent: boolean): { lines: string[]; hidden: number } {\n const lines = text.split('\\n');\n if (showFullContent) return { lines, hidden: 0 };\n return { lines: lines.slice(0, DIFF_MAX_LINES), hidden: Math.max(0, lines.length - DIFF_MAX_LINES) };\n}\n\nfunction DiffSide({ lines, side, lang }: { lines: string[]; side: keyof typeof DIFF_SIDES; lang: string | undefined }) {\n const { sign, row, gutter } = DIFF_SIDES[side];\n const code = lines.join('\\n');\n const highlighted = useHighlight(code, lang);\n const tokens = highlighted?.code === code ? highlighted.tokens : undefined;\n\n return (\n <>\n {lines.map((line, index) => (\n <div key={index} className={cn('flex whitespace-pre', row)}>\n <span className={cn('w-5 shrink-0 text-center opacity-70 select-none', gutter)}>{sign}</span>\n <span className=\"flex-1 pr-2.5 text-foreground\">\n {tokens?.[index]?.map((token, tokenIndex) => (\n <span key={tokenIndex} className={token.className}>\n {token.content}\n </span>\n )) ?? line}\n </span>\n </div>\n ))}\n </>\n );\n}\n\nexport function ToolCallEdit({ edit, showFullContent = false }: { edit: ToolEdit; showFullContent?: boolean }) {\n const lang = languageForPath(edit.path);\n\n if ('content' in edit) {\n return (\n <CodeBlock\n code={showFullContent ? edit.content : truncateString(edit.content, WRITTEN_FILE_MAX_CHARS)}\n lang={lang}\n fileName={edit.path ?? 'Change'}\n overflow=\"scroll\"\n />\n );\n }\n\n const removed = boundedLines(edit.oldText, showFullContent);\n const added = boundedLines(edit.newText, showFullContent);\n const hidden = removed.hidden + added.hidden;\n\n return (\n <div\n className={cn(\n 'max-w-full min-w-0 overflow-x-auto rounded-md border border-border bg-fill font-mono text-caption',\n showFullContent && 'max-h-60 overflow-y-auto',\n )}\n role=\"group\"\n aria-label=\"File change\"\n >\n <DiffSide lines={removed.lines} side=\"removed\" lang={lang} />\n <DiffSide lines={added.lines} side=\"added\" lang={lang} />\n {hidden > 0 && <div className=\"px-2.5 py-1 text-muted-foreground select-none\">… {hidden} more lines</div>}\n </div>\n );\n}\n","import { ToolCallEdit } from './tool-call-edit';\nimport { ToolCallMono } from './tool-call-mono';\nimport { toolEdit, visibleToolArgumentsText } from './tool-presentation';\nimport type { ToolArgumentsInput } from './tool-presentation';\n\nexport interface ToolCallArgumentsProps extends ToolArgumentsInput {\n 'data-testid'?: string;\n showFullContent?: boolean;\n}\n\nexport function ToolCallArguments({ 'data-testid': testId, showFullContent, ...input }: ToolCallArgumentsProps) {\n const edit = toolEdit(input.toolName, input.args);\n if (edit) return <ToolCallEdit edit={edit} showFullContent={showFullContent} />;\n\n const text = visibleToolArgumentsText(input);\n if (!text) return null;\n\n return (\n <ToolCallMono copyText={text} data-testid={testId} className=\"text-foreground\">\n {text}\n </ToolCallMono>\n );\n}\n","import { FoldVertical, X } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport { presentTool } from './tool-presentation';\nimport {\n Activity,\n ActivityContent,\n ActivityDetail,\n ActivityDisclosure,\n ActivityHeader,\n ActivityIcon,\n ActivityLabel,\n ActivityLeading,\n ActivitySpacer,\n ActivitySummary,\n ActivityTrailing,\n ActivityTrigger,\n} from '@/ds/components/ai/activity';\nimport type { ActivityStatus } from '@/ds/components/ai/activity';\nimport { ScrollArea } from '@/ds/components/ScrollArea';\nimport { Txt } from '@/ds/components/Txt';\n\nexport interface ToolCallGroupStep {\n toolName: string;\n args: unknown;\n status: ActivityStatus;\n /** A successful tool result was recorded. Supply for every step to enable outcome counts; omit to keep legacy summaries. */\n hasResult?: boolean;\n}\n\nexport interface ToolCallGroupProps {\n steps: ToolCallGroupStep[];\n /** Rendered ahead of the icon, e.g. the time the first step began. */\n leading?: ReactNode;\n children: ReactNode;\n}\n\nconst MAX_KIND_GLYPHS = 4;\n\nexport function ToolCallGroup({ steps, leading, children }: ToolCallGroupProps) {\n const running = steps.find(step => step.status === 'running');\n const live = running && presentTool(running.toolName, running.args);\n\n return (\n <Activity status={running ? 'running' : 'idle'} aria-label={`Tool group: ${steps.length} steps`}>\n <ActivityTrigger>\n <ActivityHeader>\n <ActivityLeading>{leading}</ActivityLeading>\n <ActivityIcon>\n <FoldVertical size={14} aria-hidden className=\"text-placeholder\" />\n </ActivityIcon>\n <ActivityLabel>{steps.length} steps</ActivityLabel>\n {live && live.description ? (\n <ActivityLabel className=\"max-w-none min-w-0 shrink\">{live.description}</ActivityLabel>\n ) : (\n live && live.detail && <ActivityDetail>{live.detail}</ActivityDetail>\n )}\n <GroupKinds steps={steps} />\n <ActivitySpacer rule />\n <ActivityTrailing>\n <GroupProgress steps={steps} />\n </ActivityTrailing>\n <ActivityDisclosure />\n </ActivityHeader>\n </ActivityTrigger>\n <ActivityContent className=\"py-0.5 pr-0 pl-2.5\">\n <ScrollArea maxHeight=\"18rem\" autoScroll={Boolean(running)} revealScrollbarOnHover={false}>\n {children}\n </ScrollArea>\n </ActivityContent>\n </Activity>\n );\n}\n\nfunction GroupProgress({ steps }: { steps: ToolCallGroupStep[] }) {\n const done = steps.filter(step => step.status !== 'running').length;\n if (done < steps.length) {\n return (\n <Txt as=\"span\" variant=\"meta\" tone=\"muted\" className=\"shrink-0 tabular-nums\">\n {done}/{steps.length}\n </Txt>\n );\n }\n const failed = steps.filter(step => step.status === 'error').length;\n const errorIndicator =\n failed > 0 ? <X size={13} role=\"img\" aria-label=\"Failed\" className=\"shrink-0 text-destructive-foreground\" /> : null;\n // Older consumers only supply visual status, which cannot distinguish completed from interrupted calls.\n if (steps.some(step => step.hasResult === undefined)) return errorIndicator;\n\n const succeeded = steps.filter(step => step.status === 'idle' && step.hasResult).length;\n const incomplete = steps.length - succeeded - failed;\n const summary = [\n succeeded > 0 && `${succeeded} OK`,\n failed > 0 && `${failed} failed`,\n incomplete > 0 && `${incomplete} incomplete`,\n ]\n .filter(Boolean)\n .join(' · ');\n\n return (\n <>\n {errorIndicator}\n <Txt as=\"span\" variant=\"meta\" tone=\"muted\" className=\"shrink-0 tabular-nums\">\n {summary}\n </Txt>\n </>\n );\n}\n\nfunction GroupKinds({ steps }: { steps: ToolCallGroupStep[] }) {\n const presented = steps.map(step => presentTool(step.toolName, step.args));\n const labels = new Set(presented.map(({ label }) => label));\n const glyphs = [...new Map(presented.map(({ pose, icon }) => [pose, icon]))].slice(0, MAX_KIND_GLYPHS);\n\n return (\n <ActivitySummary role=\"img\" aria-label={[...labels].join(', ')} className=\"shrink-0 gap-1.5\">\n {glyphs.map(([pose, Kind]) => (\n <Kind key={pose} size={12} className=\"text-placeholder\" />\n ))}\n </ActivitySummary>\n );\n}\n","import { ToolCallMono } from './tool-call-mono';\n\nexport interface ToolCallOutputProps {\n text: string;\n error?: boolean;\n maxLength?: number;\n 'data-testid'?: string;\n}\n\nexport function ToolCallOutput({ text, error, maxLength, 'data-testid': testId }: ToolCallOutputProps) {\n const preview = maxLength !== undefined && text.length > maxLength ? `${text.slice(0, maxLength)}…` : text;\n\n return (\n <ToolCallMono\n copyText={text}\n data-testid={testId}\n className={error ? 'text-destructive-foreground' : 'text-muted-foreground'}\n >\n {preview}\n </ToolCallMono>\n );\n}\n","/** How a line words one kind of tool: while it runs, done alone, and once or many times in a summary. */\nexport interface ToolPhrases {\n live: string;\n done: string;\n one: string;\n many: string;\n}\n\nconst KIND_PHRASES = {\n Read: { live: 'Reading', done: 'Read', one: 'read a file', many: 'read files' },\n Write: { live: 'Writing', done: 'Wrote', one: 'wrote a file', many: 'wrote files' },\n Edit: { live: 'Editing', done: 'Edited', one: 'edited a file', many: 'edited files' },\n Run: { live: 'Running', done: 'Ran', one: 'ran a command', many: 'ran commands' },\n 'Process output': {\n live: 'Reading output',\n done: 'Read output',\n one: 'read process output',\n many: 'read process output',\n },\n 'Stop process': {\n live: 'Stopping process',\n done: 'Stopped process',\n one: 'stopped a process',\n many: 'stopped processes',\n },\n 'Find files': { live: 'Finding files', done: 'Found files', one: 'found files', many: 'found files' },\n 'List files': { live: 'Listing files', done: 'Listed files', one: 'listed files', many: 'listed files' },\n Search: { live: 'Searching', done: 'Searched', one: 'searched code', many: 'searched code' },\n 'Search the web': {\n live: 'Searching the web',\n done: 'Searched the web',\n one: 'searched the web',\n many: 'searched the web',\n },\n 'Inspect code': { live: 'Inspecting', done: 'Inspected', one: 'inspected code', many: 'inspected code' },\n 'File info': { live: 'Checking', done: 'Checked', one: 'checked a file', many: 'checked files' },\n Delete: { live: 'Deleting', done: 'Deleted', one: 'deleted a file', many: 'deleted files' },\n 'New folder': { live: 'Creating folder', done: 'Created folder', one: 'created a folder', many: 'created folders' },\n Skill: { live: 'Using skill', done: 'Used skill', one: 'used a skill', many: 'used skills' },\n 'Search skills': {\n live: 'Searching skills',\n done: 'Searched skills',\n one: 'searched skills',\n many: 'searched skills',\n },\n 'Skill file': {\n live: 'Reading skill file',\n done: 'Read skill file',\n one: 'read a skill file',\n many: 'read skill files',\n },\n 'Search knowledge': {\n live: 'Searching knowledge',\n done: 'Searched knowledge',\n one: 'searched knowledge',\n many: 'searched knowledge',\n },\n 'Read page': { live: 'Reading page', done: 'Read page', one: 'read a page', many: 'read pages' },\n // knowledge_page/note/pin also move, merge, delete, remove and unpin, so these name no one operation.\n 'Edit page': { live: 'Editing page', done: 'Edited page', one: 'edited a page', many: 'edited pages' },\n 'Edit note': { live: 'Editing note', done: 'Edited note', one: 'edited a note', many: 'edited notes' },\n 'Update pin': { live: 'Updating pin', done: 'Updated pin', one: 'updated a pin', many: 'updated pins' },\n} satisfies Record<string, ToolPhrases>;\n\n/** The kinds `presentTool` labels a call with; each one has its phrases. */\nexport type ToolKind = keyof typeof KIND_PHRASES;\n\nfunction isToolKind(label: string): label is ToolKind {\n return Object.hasOwn(KIND_PHRASES, label);\n}\n\nexport function toolPhrases(label: string): ToolPhrases {\n if (isToolKind(label)) return KIND_PHRASES[label];\n return { live: `Using ${label}`, done: `Used ${label}`, one: `used ${label}`, many: `used ${label}` };\n}\n","import { formatDate, toDate } from '@/utils/date-format';\n\nexport function ToolCallTime({ at }: { at?: number }) {\n const time = toDate(at);\n if (!time) return null;\n\n return (\n <time\n className=\"shrink-0 text-meta text-muted-foreground tabular-nums\"\n dateTime={time.toISOString()}\n title={formatDate(time, 'date-time-seconds')}\n >\n {formatDate(time, 'time-seconds')}\n </time>\n );\n}\n"],"mappings":"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"}
@@ -3,12 +3,12 @@ import { formatDate, toDate } from "./utils/date-format.es.js";
3
3
  import { t as ScrollArea } from "./scroll-area-C226l0v0.js";
4
4
  import { t as Txt } from "./Txt-BM6TVV_c.js";
5
5
  import { t as truncateString } from "./truncate-string-B8cByQzA.js";
6
- import { t as CopyButton } from "./copy-button-CF-X4iDj.js";
6
+ import { t as CopyButton } from "./copy-button-BXrbevLn.js";
7
7
  import { n as languageForPath } from "./highlight-DF-vd68d.js";
8
8
  import { n as useHighlight } from "./code-B7cFirk4.js";
9
9
  import { CodeBlock } from "./components/CodeBlock.es.js";
10
- import { a as toolEdit, o as visibleToolArgumentsText, r as presentTool } from "./tool-presentation-BSZYIWx2.js";
11
- import { _ as ActivitySpacer, b as ActivityTrigger, c as ActivityContent, d as ActivityHeader, g as ActivityLeading, h as ActivityLabel, l as ActivityDetail, p as ActivityIcon$1, s as Activity, u as ActivityDisclosure, v as ActivitySummary, y as ActivityTrailing } from "./activity-CM34JyW-.js";
10
+ import { a as toolEdit, o as visibleToolArgumentsText, r as presentTool } from "./tool-presentation-DvCsb_kz.js";
11
+ import { _ as ActivitySpacer, b as ActivityTrigger, c as ActivityContent, d as ActivityHeader, g as ActivityLeading, h as ActivityLabel, l as ActivityDetail, p as ActivityIcon$1, s as Activity, u as ActivityDisclosure, v as ActivitySummary, y as ActivityTrailing } from "./activity-rJ1NQl_2.js";
12
12
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
13
13
  import { FoldVertical, X } from "lucide-react";
14
14
  // src/ds/components/ai/tool-call/ansi.ts
@@ -360,6 +360,36 @@ var KIND_PHRASES = {
360
360
  done: "Read skill file",
361
361
  one: "read a skill file",
362
362
  many: "read skill files"
363
+ },
364
+ "Search knowledge": {
365
+ live: "Searching knowledge",
366
+ done: "Searched knowledge",
367
+ one: "searched knowledge",
368
+ many: "searched knowledge"
369
+ },
370
+ "Read page": {
371
+ live: "Reading page",
372
+ done: "Read page",
373
+ one: "read a page",
374
+ many: "read pages"
375
+ },
376
+ "Edit page": {
377
+ live: "Editing page",
378
+ done: "Edited page",
379
+ one: "edited a page",
380
+ many: "edited pages"
381
+ },
382
+ "Edit note": {
383
+ live: "Editing note",
384
+ done: "Edited note",
385
+ one: "edited a note",
386
+ many: "edited notes"
387
+ },
388
+ "Update pin": {
389
+ live: "Updating pin",
390
+ done: "Updated pin",
391
+ one: "updated a pin",
392
+ many: "updated pins"
363
393
  }
364
394
  };
365
395
  function isToolKind(label) {
@@ -387,4 +417,4 @@ function ToolCallTime({ at }) {
387
417
  }
388
418
  export { ToolCallArguments as a, ToolCallMono as c, stripAnsi as d, stripSerializedAnsi as f, ToolCallGroup as i, TOOL_GROUP_MIN as l, toolPhrases as n, ToolCallEdit as o, ToolCallOutput as r, ToolCallCommand as s, ToolCallTime as t, groupConsecutive as u };
389
419
 
390
- //# sourceMappingURL=tool-call-BxYXs9w0.js.map
420
+ //# sourceMappingURL=tool-call-Ch9-jjXU.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-call-BxYXs9w0.js","names":["_Fragment","ActivityIcon","_Fragment"],"sources":["../src/ds/components/ai/tool-call/ansi.ts","../src/ds/components/ai/tool-call/group-consecutive.ts","../src/ds/components/ai/tool-call/tool-call-mono.tsx","../src/ds/components/ai/tool-call/tool-call-edit.tsx","../src/ds/components/ai/tool-call/tool-call-arguments.tsx","../src/ds/components/ai/tool-call/tool-call-group.tsx","../src/ds/components/ai/tool-call/tool-call-output.tsx","../src/ds/components/ai/tool-call/tool-phrases.ts","../src/ds/components/ai/tool-call/tool-call-time.tsx"],"sourcesContent":["// Sandbox commands run in a PTY, so CLIs emit color escapes even under NO_COLOR.\n// eslint-disable-next-line no-control-regex\nconst ANSI_RE =\n /[\\u001b\\u009b][[\\]()#;?]*(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d/#&.:=?%@~_]*)*)?\\u0007|(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~])/g;\n\n// The same sequences once JSON.stringify escaped the bytes; an even backslash run before the `u` is source text spelling the escape, kept.\nconst ESCAPED_ANSI_RE = /(?<!\\\\)((?:\\\\\\\\)*)\\\\u001[bB](?:\\[[0-9;?<=>]*[a-zA-Z]|\\][\\s\\S]*?(?:\\\\u0007|\\\\u001[bB]\\\\\\\\))/g;\n\nexport function stripAnsi(text: string): string {\n return text.replace(ANSI_RE, '');\n}\n\nexport function stripSerializedAnsi(text: string): string {\n return stripAnsi(text).replace(ESCAPED_ANSI_RE, '$1');\n}\n","export interface ConsecutiveGroups<T> {\n /** Each run, keyed by its first member. */\n byFirstKey: Map<string, T[]>;\n /** The members after the first, which draw nothing of their own. */\n memberKeys: Set<string>;\n}\n\nexport interface ConsecutiveRules<T, U extends T> {\n key: (item: U) => string;\n /** Whether an item extends the run; anything else ends it. */\n joins: (item: T) => item is U;\n /** Runs shorter than this stay individual rows. */\n min?: number;\n}\n\n/** Consecutive tool calls this long fold into one group row. */\nexport const TOOL_GROUP_MIN = 3;\n\n/** Cuts a list into runs of joining items, keeping only the runs long enough to fold. */\nexport function groupConsecutive<T, U extends T>(\n items: readonly T[],\n { key, joins, min = TOOL_GROUP_MIN }: ConsecutiveRules<T, U>,\n): ConsecutiveGroups<U> {\n const byFirstKey = new Map<string, U[]>();\n const memberKeys = new Set<string>();\n let run: U[] = [];\n\n const flush = () => {\n if (run.length >= min) {\n for (const [index, item] of run.entries()) {\n if (index === 0) byFirstKey.set(key(item), run);\n else memberKeys.add(key(item));\n }\n }\n run = [];\n };\n\n for (const item of items) {\n if (joins(item)) run.push(item);\n else flush();\n }\n flush();\n\n return { byFirstKey, memberKeys };\n}\n","import type { ComponentProps } from 'react';\nimport { CopyButton } from '@/ds/components/CopyButton';\nimport { cn } from '@/lib/utils';\n\nexport interface ToolCallMonoProps extends ComponentProps<'pre'> {\n copyText: string;\n}\n\n/** Monospace body block of an expanded call — arguments, command, output — with a hover copy. */\nexport const ToolCallMono = ({ copyText, className, children, ...props }: ToolCallMonoProps) => (\n <div className=\"group/block relative max-w-full min-w-0\">\n <pre\n className={cn(\n 'm-0 max-h-60 max-w-full overflow-auto rounded-md bg-fill px-3 py-2 font-mono text-caption break-words whitespace-pre-wrap',\n className,\n )}\n {...props}\n >\n {children}\n </pre>\n <CopyButton\n content={copyText}\n variant=\"ghost\"\n className=\"absolute top-1 right-1 opacity-0 transition-opacity group-hover/block:opacity-100 focus-visible:opacity-100\"\n />\n </div>\n);\n\n/** A shell command as the body shows it: `$` in the margin, the copy takes the command alone. */\nexport const ToolCallCommand = ({ command }: { command: string }) => (\n <ToolCallMono copyText={command} className=\"text-foreground\">\n <span className=\"text-muted-foreground select-none\">$ </span>\n {command}\n </ToolCallMono>\n);\n","import type { ToolEdit } from './tool-presentation';\nimport { useHighlight } from '@/ds/components/Code';\nimport { CodeBlock } from '@/ds/components/CodeBlock';\nimport { languageForPath } from '@/ds/components/CodeEditor/highlight';\nimport { truncateString } from '@/lib/truncate-string';\nimport { cn } from '@/lib/utils';\n\nconst DIFF_MAX_LINES = 200;\nconst WRITTEN_FILE_MAX_CHARS = 2000;\n\nconst DIFF_SIDES = {\n removed: { sign: '-', row: 'bg-destructive-subtle', gutter: 'text-destructive-subtle-foreground' },\n added: { sign: '+', row: 'bg-success-subtle', gutter: 'text-success-subtle-foreground' },\n} as const;\n\nfunction boundedLines(text: string, showFullContent: boolean): { lines: string[]; hidden: number } {\n const lines = text.split('\\n');\n if (showFullContent) return { lines, hidden: 0 };\n return { lines: lines.slice(0, DIFF_MAX_LINES), hidden: Math.max(0, lines.length - DIFF_MAX_LINES) };\n}\n\nfunction DiffSide({ lines, side, lang }: { lines: string[]; side: keyof typeof DIFF_SIDES; lang: string | undefined }) {\n const { sign, row, gutter } = DIFF_SIDES[side];\n const code = lines.join('\\n');\n const highlighted = useHighlight(code, lang);\n const tokens = highlighted?.code === code ? highlighted.tokens : undefined;\n\n return (\n <>\n {lines.map((line, index) => (\n <div key={index} className={cn('flex whitespace-pre', row)}>\n <span className={cn('w-5 shrink-0 text-center opacity-70 select-none', gutter)}>{sign}</span>\n <span className=\"flex-1 pr-2.5 text-foreground\">\n {tokens?.[index]?.map((token, tokenIndex) => (\n <span key={tokenIndex} className={token.className}>\n {token.content}\n </span>\n )) ?? line}\n </span>\n </div>\n ))}\n </>\n );\n}\n\nexport function ToolCallEdit({ edit, showFullContent = false }: { edit: ToolEdit; showFullContent?: boolean }) {\n const lang = languageForPath(edit.path);\n\n if ('content' in edit) {\n return (\n <CodeBlock\n code={showFullContent ? edit.content : truncateString(edit.content, WRITTEN_FILE_MAX_CHARS)}\n lang={lang}\n fileName={edit.path ?? 'Change'}\n overflow=\"scroll\"\n />\n );\n }\n\n const removed = boundedLines(edit.oldText, showFullContent);\n const added = boundedLines(edit.newText, showFullContent);\n const hidden = removed.hidden + added.hidden;\n\n return (\n <div\n className={cn(\n 'max-w-full min-w-0 overflow-x-auto rounded-md border border-border bg-fill font-mono text-caption',\n showFullContent && 'max-h-60 overflow-y-auto',\n )}\n role=\"group\"\n aria-label=\"File change\"\n >\n <DiffSide lines={removed.lines} side=\"removed\" lang={lang} />\n <DiffSide lines={added.lines} side=\"added\" lang={lang} />\n {hidden > 0 && <div className=\"px-2.5 py-1 text-muted-foreground select-none\">… {hidden} more lines</div>}\n </div>\n );\n}\n","import { ToolCallEdit } from './tool-call-edit';\nimport { ToolCallMono } from './tool-call-mono';\nimport { toolEdit, visibleToolArgumentsText } from './tool-presentation';\nimport type { ToolArgumentsInput } from './tool-presentation';\n\nexport interface ToolCallArgumentsProps extends ToolArgumentsInput {\n 'data-testid'?: string;\n showFullContent?: boolean;\n}\n\nexport function ToolCallArguments({ 'data-testid': testId, showFullContent, ...input }: ToolCallArgumentsProps) {\n const edit = toolEdit(input.toolName, input.args);\n if (edit) return <ToolCallEdit edit={edit} showFullContent={showFullContent} />;\n\n const text = visibleToolArgumentsText(input);\n if (!text) return null;\n\n return (\n <ToolCallMono copyText={text} data-testid={testId} className=\"text-foreground\">\n {text}\n </ToolCallMono>\n );\n}\n","import { FoldVertical, X } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport { presentTool } from './tool-presentation';\nimport {\n Activity,\n ActivityContent,\n ActivityDetail,\n ActivityDisclosure,\n ActivityHeader,\n ActivityIcon,\n ActivityLabel,\n ActivityLeading,\n ActivitySpacer,\n ActivitySummary,\n ActivityTrailing,\n ActivityTrigger,\n} from '@/ds/components/ai/activity';\nimport type { ActivityStatus } from '@/ds/components/ai/activity';\nimport { ScrollArea } from '@/ds/components/ScrollArea';\nimport { Txt } from '@/ds/components/Txt';\n\nexport interface ToolCallGroupStep {\n toolName: string;\n args: unknown;\n status: ActivityStatus;\n /** A successful tool result was recorded. Supply for every step to enable outcome counts; omit to keep legacy summaries. */\n hasResult?: boolean;\n}\n\nexport interface ToolCallGroupProps {\n steps: ToolCallGroupStep[];\n /** Rendered ahead of the icon, e.g. the time the first step began. */\n leading?: ReactNode;\n children: ReactNode;\n}\n\nconst MAX_KIND_GLYPHS = 4;\n\nexport function ToolCallGroup({ steps, leading, children }: ToolCallGroupProps) {\n const running = steps.find(step => step.status === 'running');\n const live = running && presentTool(running.toolName, running.args);\n\n return (\n <Activity status={running ? 'running' : 'idle'} aria-label={`Tool group: ${steps.length} steps`}>\n <ActivityTrigger>\n <ActivityHeader>\n <ActivityLeading>{leading}</ActivityLeading>\n <ActivityIcon>\n <FoldVertical size={14} aria-hidden className=\"text-placeholder\" />\n </ActivityIcon>\n <ActivityLabel>{steps.length} steps</ActivityLabel>\n {live && live.description ? (\n <ActivityLabel className=\"max-w-none min-w-0 shrink\">{live.description}</ActivityLabel>\n ) : (\n live && live.detail && <ActivityDetail>{live.detail}</ActivityDetail>\n )}\n <GroupKinds steps={steps} />\n <ActivitySpacer rule />\n <ActivityTrailing>\n <GroupProgress steps={steps} />\n </ActivityTrailing>\n <ActivityDisclosure />\n </ActivityHeader>\n </ActivityTrigger>\n <ActivityContent className=\"py-0.5 pr-0 pl-2.5\">\n <ScrollArea maxHeight=\"18rem\" autoScroll={Boolean(running)} revealScrollbarOnHover={false}>\n {children}\n </ScrollArea>\n </ActivityContent>\n </Activity>\n );\n}\n\nfunction GroupProgress({ steps }: { steps: ToolCallGroupStep[] }) {\n const done = steps.filter(step => step.status !== 'running').length;\n if (done < steps.length) {\n return (\n <Txt as=\"span\" variant=\"meta\" tone=\"muted\" className=\"shrink-0 tabular-nums\">\n {done}/{steps.length}\n </Txt>\n );\n }\n const failed = steps.filter(step => step.status === 'error').length;\n const errorIndicator =\n failed > 0 ? <X size={13} role=\"img\" aria-label=\"Failed\" className=\"shrink-0 text-destructive-foreground\" /> : null;\n // Older consumers only supply visual status, which cannot distinguish completed from interrupted calls.\n if (steps.some(step => step.hasResult === undefined)) return errorIndicator;\n\n const succeeded = steps.filter(step => step.status === 'idle' && step.hasResult).length;\n const incomplete = steps.length - succeeded - failed;\n const summary = [\n succeeded > 0 && `${succeeded} OK`,\n failed > 0 && `${failed} failed`,\n incomplete > 0 && `${incomplete} incomplete`,\n ]\n .filter(Boolean)\n .join(' · ');\n\n return (\n <>\n {errorIndicator}\n <Txt as=\"span\" variant=\"meta\" tone=\"muted\" className=\"shrink-0 tabular-nums\">\n {summary}\n </Txt>\n </>\n );\n}\n\nfunction GroupKinds({ steps }: { steps: ToolCallGroupStep[] }) {\n const presented = steps.map(step => presentTool(step.toolName, step.args));\n const labels = new Set(presented.map(({ label }) => label));\n const glyphs = [...new Map(presented.map(({ pose, icon }) => [pose, icon]))].slice(0, MAX_KIND_GLYPHS);\n\n return (\n <ActivitySummary role=\"img\" aria-label={[...labels].join(', ')} className=\"shrink-0 gap-1.5\">\n {glyphs.map(([pose, Kind]) => (\n <Kind key={pose} size={12} className=\"text-placeholder\" />\n ))}\n </ActivitySummary>\n );\n}\n","import { ToolCallMono } from './tool-call-mono';\n\nexport interface ToolCallOutputProps {\n text: string;\n error?: boolean;\n maxLength?: number;\n 'data-testid'?: string;\n}\n\nexport function ToolCallOutput({ text, error, maxLength, 'data-testid': testId }: ToolCallOutputProps) {\n const preview = maxLength !== undefined && text.length > maxLength ? `${text.slice(0, maxLength)}…` : text;\n\n return (\n <ToolCallMono\n copyText={text}\n data-testid={testId}\n className={error ? 'text-destructive-foreground' : 'text-muted-foreground'}\n >\n {preview}\n </ToolCallMono>\n );\n}\n","/** How a line words one kind of tool: while it runs, done alone, and once or many times in a summary. */\nexport interface ToolPhrases {\n live: string;\n done: string;\n one: string;\n many: string;\n}\n\nconst KIND_PHRASES = {\n Read: { live: 'Reading', done: 'Read', one: 'read a file', many: 'read files' },\n Write: { live: 'Writing', done: 'Wrote', one: 'wrote a file', many: 'wrote files' },\n Edit: { live: 'Editing', done: 'Edited', one: 'edited a file', many: 'edited files' },\n Run: { live: 'Running', done: 'Ran', one: 'ran a command', many: 'ran commands' },\n 'Process output': {\n live: 'Reading output',\n done: 'Read output',\n one: 'read process output',\n many: 'read process output',\n },\n 'Stop process': {\n live: 'Stopping process',\n done: 'Stopped process',\n one: 'stopped a process',\n many: 'stopped processes',\n },\n 'Find files': { live: 'Finding files', done: 'Found files', one: 'found files', many: 'found files' },\n 'List files': { live: 'Listing files', done: 'Listed files', one: 'listed files', many: 'listed files' },\n Search: { live: 'Searching', done: 'Searched', one: 'searched code', many: 'searched code' },\n 'Search the web': {\n live: 'Searching the web',\n done: 'Searched the web',\n one: 'searched the web',\n many: 'searched the web',\n },\n 'Inspect code': { live: 'Inspecting', done: 'Inspected', one: 'inspected code', many: 'inspected code' },\n 'File info': { live: 'Checking', done: 'Checked', one: 'checked a file', many: 'checked files' },\n Delete: { live: 'Deleting', done: 'Deleted', one: 'deleted a file', many: 'deleted files' },\n 'New folder': { live: 'Creating folder', done: 'Created folder', one: 'created a folder', many: 'created folders' },\n Skill: { live: 'Using skill', done: 'Used skill', one: 'used a skill', many: 'used skills' },\n 'Search skills': {\n live: 'Searching skills',\n done: 'Searched skills',\n one: 'searched skills',\n many: 'searched skills',\n },\n 'Skill file': {\n live: 'Reading skill file',\n done: 'Read skill file',\n one: 'read a skill file',\n many: 'read skill files',\n },\n} satisfies Record<string, ToolPhrases>;\n\n/** The kinds `presentTool` labels a call with; each one has its phrases. */\nexport type ToolKind = keyof typeof KIND_PHRASES;\n\nfunction isToolKind(label: string): label is ToolKind {\n return Object.hasOwn(KIND_PHRASES, label);\n}\n\nexport function toolPhrases(label: string): ToolPhrases {\n if (isToolKind(label)) return KIND_PHRASES[label];\n return { live: `Using ${label}`, done: `Used ${label}`, one: `used ${label}`, many: `used ${label}` };\n}\n","import { formatDate, toDate } from '@/utils/date-format';\n\nexport function ToolCallTime({ at }: { at?: number }) {\n const time = toDate(at);\n if (!time) return null;\n\n return (\n <time\n className=\"shrink-0 text-meta text-muted-foreground tabular-nums\"\n dateTime={time.toISOString()}\n title={formatDate(time, 'date-time-seconds')}\n >\n {formatDate(time, 'time-seconds')}\n </time>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"tool-call-Ch9-jjXU.js","names":["_Fragment","ActivityIcon","_Fragment"],"sources":["../src/ds/components/ai/tool-call/ansi.ts","../src/ds/components/ai/tool-call/group-consecutive.ts","../src/ds/components/ai/tool-call/tool-call-mono.tsx","../src/ds/components/ai/tool-call/tool-call-edit.tsx","../src/ds/components/ai/tool-call/tool-call-arguments.tsx","../src/ds/components/ai/tool-call/tool-call-group.tsx","../src/ds/components/ai/tool-call/tool-call-output.tsx","../src/ds/components/ai/tool-call/tool-phrases.ts","../src/ds/components/ai/tool-call/tool-call-time.tsx"],"sourcesContent":["// Sandbox commands run in a PTY, so CLIs emit color escapes even under NO_COLOR.\n// eslint-disable-next-line no-control-regex\nconst ANSI_RE =\n /[\\u001b\\u009b][[\\]()#;?]*(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d/#&.:=?%@~_]*)*)?\\u0007|(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~])/g;\n\n// The same sequences once JSON.stringify escaped the bytes; an even backslash run before the `u` is source text spelling the escape, kept.\nconst ESCAPED_ANSI_RE = /(?<!\\\\)((?:\\\\\\\\)*)\\\\u001[bB](?:\\[[0-9;?<=>]*[a-zA-Z]|\\][\\s\\S]*?(?:\\\\u0007|\\\\u001[bB]\\\\\\\\))/g;\n\nexport function stripAnsi(text: string): string {\n return text.replace(ANSI_RE, '');\n}\n\nexport function stripSerializedAnsi(text: string): string {\n return stripAnsi(text).replace(ESCAPED_ANSI_RE, '$1');\n}\n","export interface ConsecutiveGroups<T> {\n /** Each run, keyed by its first member. */\n byFirstKey: Map<string, T[]>;\n /** The members after the first, which draw nothing of their own. */\n memberKeys: Set<string>;\n}\n\nexport interface ConsecutiveRules<T, U extends T> {\n key: (item: U) => string;\n /** Whether an item extends the run; anything else ends it. */\n joins: (item: T) => item is U;\n /** Runs shorter than this stay individual rows. */\n min?: number;\n}\n\n/** Consecutive tool calls this long fold into one group row. */\nexport const TOOL_GROUP_MIN = 3;\n\n/** Cuts a list into runs of joining items, keeping only the runs long enough to fold. */\nexport function groupConsecutive<T, U extends T>(\n items: readonly T[],\n { key, joins, min = TOOL_GROUP_MIN }: ConsecutiveRules<T, U>,\n): ConsecutiveGroups<U> {\n const byFirstKey = new Map<string, U[]>();\n const memberKeys = new Set<string>();\n let run: U[] = [];\n\n const flush = () => {\n if (run.length >= min) {\n for (const [index, item] of run.entries()) {\n if (index === 0) byFirstKey.set(key(item), run);\n else memberKeys.add(key(item));\n }\n }\n run = [];\n };\n\n for (const item of items) {\n if (joins(item)) run.push(item);\n else flush();\n }\n flush();\n\n return { byFirstKey, memberKeys };\n}\n","import type { ComponentProps } from 'react';\nimport { CopyButton } from '@/ds/components/CopyButton';\nimport { cn } from '@/lib/utils';\n\nexport interface ToolCallMonoProps extends ComponentProps<'pre'> {\n copyText: string;\n}\n\n/** Monospace body block of an expanded call — arguments, command, output — with a hover copy. */\nexport const ToolCallMono = ({ copyText, className, children, ...props }: ToolCallMonoProps) => (\n <div className=\"group/block relative max-w-full min-w-0\">\n <pre\n className={cn(\n 'm-0 max-h-60 max-w-full overflow-auto rounded-md bg-fill px-3 py-2 font-mono text-caption break-words whitespace-pre-wrap',\n className,\n )}\n {...props}\n >\n {children}\n </pre>\n <CopyButton\n content={copyText}\n variant=\"ghost\"\n className=\"absolute top-1 right-1 opacity-0 transition-opacity group-hover/block:opacity-100 focus-visible:opacity-100\"\n />\n </div>\n);\n\n/** A shell command as the body shows it: `$` in the margin, the copy takes the command alone. */\nexport const ToolCallCommand = ({ command }: { command: string }) => (\n <ToolCallMono copyText={command} className=\"text-foreground\">\n <span className=\"text-muted-foreground select-none\">$ </span>\n {command}\n </ToolCallMono>\n);\n","import type { ToolEdit } from './tool-presentation';\nimport { useHighlight } from '@/ds/components/Code';\nimport { CodeBlock } from '@/ds/components/CodeBlock';\nimport { languageForPath } from '@/ds/components/CodeEditor/highlight';\nimport { truncateString } from '@/lib/truncate-string';\nimport { cn } from '@/lib/utils';\n\nconst DIFF_MAX_LINES = 200;\nconst WRITTEN_FILE_MAX_CHARS = 2000;\n\nconst DIFF_SIDES = {\n removed: { sign: '-', row: 'bg-destructive-subtle', gutter: 'text-destructive-subtle-foreground' },\n added: { sign: '+', row: 'bg-success-subtle', gutter: 'text-success-subtle-foreground' },\n} as const;\n\nfunction boundedLines(text: string, showFullContent: boolean): { lines: string[]; hidden: number } {\n const lines = text.split('\\n');\n if (showFullContent) return { lines, hidden: 0 };\n return { lines: lines.slice(0, DIFF_MAX_LINES), hidden: Math.max(0, lines.length - DIFF_MAX_LINES) };\n}\n\nfunction DiffSide({ lines, side, lang }: { lines: string[]; side: keyof typeof DIFF_SIDES; lang: string | undefined }) {\n const { sign, row, gutter } = DIFF_SIDES[side];\n const code = lines.join('\\n');\n const highlighted = useHighlight(code, lang);\n const tokens = highlighted?.code === code ? highlighted.tokens : undefined;\n\n return (\n <>\n {lines.map((line, index) => (\n <div key={index} className={cn('flex whitespace-pre', row)}>\n <span className={cn('w-5 shrink-0 text-center opacity-70 select-none', gutter)}>{sign}</span>\n <span className=\"flex-1 pr-2.5 text-foreground\">\n {tokens?.[index]?.map((token, tokenIndex) => (\n <span key={tokenIndex} className={token.className}>\n {token.content}\n </span>\n )) ?? line}\n </span>\n </div>\n ))}\n </>\n );\n}\n\nexport function ToolCallEdit({ edit, showFullContent = false }: { edit: ToolEdit; showFullContent?: boolean }) {\n const lang = languageForPath(edit.path);\n\n if ('content' in edit) {\n return (\n <CodeBlock\n code={showFullContent ? edit.content : truncateString(edit.content, WRITTEN_FILE_MAX_CHARS)}\n lang={lang}\n fileName={edit.path ?? 'Change'}\n overflow=\"scroll\"\n />\n );\n }\n\n const removed = boundedLines(edit.oldText, showFullContent);\n const added = boundedLines(edit.newText, showFullContent);\n const hidden = removed.hidden + added.hidden;\n\n return (\n <div\n className={cn(\n 'max-w-full min-w-0 overflow-x-auto rounded-md border border-border bg-fill font-mono text-caption',\n showFullContent && 'max-h-60 overflow-y-auto',\n )}\n role=\"group\"\n aria-label=\"File change\"\n >\n <DiffSide lines={removed.lines} side=\"removed\" lang={lang} />\n <DiffSide lines={added.lines} side=\"added\" lang={lang} />\n {hidden > 0 && <div className=\"px-2.5 py-1 text-muted-foreground select-none\">… {hidden} more lines</div>}\n </div>\n );\n}\n","import { ToolCallEdit } from './tool-call-edit';\nimport { ToolCallMono } from './tool-call-mono';\nimport { toolEdit, visibleToolArgumentsText } from './tool-presentation';\nimport type { ToolArgumentsInput } from './tool-presentation';\n\nexport interface ToolCallArgumentsProps extends ToolArgumentsInput {\n 'data-testid'?: string;\n showFullContent?: boolean;\n}\n\nexport function ToolCallArguments({ 'data-testid': testId, showFullContent, ...input }: ToolCallArgumentsProps) {\n const edit = toolEdit(input.toolName, input.args);\n if (edit) return <ToolCallEdit edit={edit} showFullContent={showFullContent} />;\n\n const text = visibleToolArgumentsText(input);\n if (!text) return null;\n\n return (\n <ToolCallMono copyText={text} data-testid={testId} className=\"text-foreground\">\n {text}\n </ToolCallMono>\n );\n}\n","import { FoldVertical, X } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport { presentTool } from './tool-presentation';\nimport {\n Activity,\n ActivityContent,\n ActivityDetail,\n ActivityDisclosure,\n ActivityHeader,\n ActivityIcon,\n ActivityLabel,\n ActivityLeading,\n ActivitySpacer,\n ActivitySummary,\n ActivityTrailing,\n ActivityTrigger,\n} from '@/ds/components/ai/activity';\nimport type { ActivityStatus } from '@/ds/components/ai/activity';\nimport { ScrollArea } from '@/ds/components/ScrollArea';\nimport { Txt } from '@/ds/components/Txt';\n\nexport interface ToolCallGroupStep {\n toolName: string;\n args: unknown;\n status: ActivityStatus;\n /** A successful tool result was recorded. Supply for every step to enable outcome counts; omit to keep legacy summaries. */\n hasResult?: boolean;\n}\n\nexport interface ToolCallGroupProps {\n steps: ToolCallGroupStep[];\n /** Rendered ahead of the icon, e.g. the time the first step began. */\n leading?: ReactNode;\n children: ReactNode;\n}\n\nconst MAX_KIND_GLYPHS = 4;\n\nexport function ToolCallGroup({ steps, leading, children }: ToolCallGroupProps) {\n const running = steps.find(step => step.status === 'running');\n const live = running && presentTool(running.toolName, running.args);\n\n return (\n <Activity status={running ? 'running' : 'idle'} aria-label={`Tool group: ${steps.length} steps`}>\n <ActivityTrigger>\n <ActivityHeader>\n <ActivityLeading>{leading}</ActivityLeading>\n <ActivityIcon>\n <FoldVertical size={14} aria-hidden className=\"text-placeholder\" />\n </ActivityIcon>\n <ActivityLabel>{steps.length} steps</ActivityLabel>\n {live && live.description ? (\n <ActivityLabel className=\"max-w-none min-w-0 shrink\">{live.description}</ActivityLabel>\n ) : (\n live && live.detail && <ActivityDetail>{live.detail}</ActivityDetail>\n )}\n <GroupKinds steps={steps} />\n <ActivitySpacer rule />\n <ActivityTrailing>\n <GroupProgress steps={steps} />\n </ActivityTrailing>\n <ActivityDisclosure />\n </ActivityHeader>\n </ActivityTrigger>\n <ActivityContent className=\"py-0.5 pr-0 pl-2.5\">\n <ScrollArea maxHeight=\"18rem\" autoScroll={Boolean(running)} revealScrollbarOnHover={false}>\n {children}\n </ScrollArea>\n </ActivityContent>\n </Activity>\n );\n}\n\nfunction GroupProgress({ steps }: { steps: ToolCallGroupStep[] }) {\n const done = steps.filter(step => step.status !== 'running').length;\n if (done < steps.length) {\n return (\n <Txt as=\"span\" variant=\"meta\" tone=\"muted\" className=\"shrink-0 tabular-nums\">\n {done}/{steps.length}\n </Txt>\n );\n }\n const failed = steps.filter(step => step.status === 'error').length;\n const errorIndicator =\n failed > 0 ? <X size={13} role=\"img\" aria-label=\"Failed\" className=\"shrink-0 text-destructive-foreground\" /> : null;\n // Older consumers only supply visual status, which cannot distinguish completed from interrupted calls.\n if (steps.some(step => step.hasResult === undefined)) return errorIndicator;\n\n const succeeded = steps.filter(step => step.status === 'idle' && step.hasResult).length;\n const incomplete = steps.length - succeeded - failed;\n const summary = [\n succeeded > 0 && `${succeeded} OK`,\n failed > 0 && `${failed} failed`,\n incomplete > 0 && `${incomplete} incomplete`,\n ]\n .filter(Boolean)\n .join(' · ');\n\n return (\n <>\n {errorIndicator}\n <Txt as=\"span\" variant=\"meta\" tone=\"muted\" className=\"shrink-0 tabular-nums\">\n {summary}\n </Txt>\n </>\n );\n}\n\nfunction GroupKinds({ steps }: { steps: ToolCallGroupStep[] }) {\n const presented = steps.map(step => presentTool(step.toolName, step.args));\n const labels = new Set(presented.map(({ label }) => label));\n const glyphs = [...new Map(presented.map(({ pose, icon }) => [pose, icon]))].slice(0, MAX_KIND_GLYPHS);\n\n return (\n <ActivitySummary role=\"img\" aria-label={[...labels].join(', ')} className=\"shrink-0 gap-1.5\">\n {glyphs.map(([pose, Kind]) => (\n <Kind key={pose} size={12} className=\"text-placeholder\" />\n ))}\n </ActivitySummary>\n );\n}\n","import { ToolCallMono } from './tool-call-mono';\n\nexport interface ToolCallOutputProps {\n text: string;\n error?: boolean;\n maxLength?: number;\n 'data-testid'?: string;\n}\n\nexport function ToolCallOutput({ text, error, maxLength, 'data-testid': testId }: ToolCallOutputProps) {\n const preview = maxLength !== undefined && text.length > maxLength ? `${text.slice(0, maxLength)}…` : text;\n\n return (\n <ToolCallMono\n copyText={text}\n data-testid={testId}\n className={error ? 'text-destructive-foreground' : 'text-muted-foreground'}\n >\n {preview}\n </ToolCallMono>\n );\n}\n","/** How a line words one kind of tool: while it runs, done alone, and once or many times in a summary. */\nexport interface ToolPhrases {\n live: string;\n done: string;\n one: string;\n many: string;\n}\n\nconst KIND_PHRASES = {\n Read: { live: 'Reading', done: 'Read', one: 'read a file', many: 'read files' },\n Write: { live: 'Writing', done: 'Wrote', one: 'wrote a file', many: 'wrote files' },\n Edit: { live: 'Editing', done: 'Edited', one: 'edited a file', many: 'edited files' },\n Run: { live: 'Running', done: 'Ran', one: 'ran a command', many: 'ran commands' },\n 'Process output': {\n live: 'Reading output',\n done: 'Read output',\n one: 'read process output',\n many: 'read process output',\n },\n 'Stop process': {\n live: 'Stopping process',\n done: 'Stopped process',\n one: 'stopped a process',\n many: 'stopped processes',\n },\n 'Find files': { live: 'Finding files', done: 'Found files', one: 'found files', many: 'found files' },\n 'List files': { live: 'Listing files', done: 'Listed files', one: 'listed files', many: 'listed files' },\n Search: { live: 'Searching', done: 'Searched', one: 'searched code', many: 'searched code' },\n 'Search the web': {\n live: 'Searching the web',\n done: 'Searched the web',\n one: 'searched the web',\n many: 'searched the web',\n },\n 'Inspect code': { live: 'Inspecting', done: 'Inspected', one: 'inspected code', many: 'inspected code' },\n 'File info': { live: 'Checking', done: 'Checked', one: 'checked a file', many: 'checked files' },\n Delete: { live: 'Deleting', done: 'Deleted', one: 'deleted a file', many: 'deleted files' },\n 'New folder': { live: 'Creating folder', done: 'Created folder', one: 'created a folder', many: 'created folders' },\n Skill: { live: 'Using skill', done: 'Used skill', one: 'used a skill', many: 'used skills' },\n 'Search skills': {\n live: 'Searching skills',\n done: 'Searched skills',\n one: 'searched skills',\n many: 'searched skills',\n },\n 'Skill file': {\n live: 'Reading skill file',\n done: 'Read skill file',\n one: 'read a skill file',\n many: 'read skill files',\n },\n 'Search knowledge': {\n live: 'Searching knowledge',\n done: 'Searched knowledge',\n one: 'searched knowledge',\n many: 'searched knowledge',\n },\n 'Read page': { live: 'Reading page', done: 'Read page', one: 'read a page', many: 'read pages' },\n // knowledge_page/note/pin also move, merge, delete, remove and unpin, so these name no one operation.\n 'Edit page': { live: 'Editing page', done: 'Edited page', one: 'edited a page', many: 'edited pages' },\n 'Edit note': { live: 'Editing note', done: 'Edited note', one: 'edited a note', many: 'edited notes' },\n 'Update pin': { live: 'Updating pin', done: 'Updated pin', one: 'updated a pin', many: 'updated pins' },\n} satisfies Record<string, ToolPhrases>;\n\n/** The kinds `presentTool` labels a call with; each one has its phrases. */\nexport type ToolKind = keyof typeof KIND_PHRASES;\n\nfunction isToolKind(label: string): label is ToolKind {\n return Object.hasOwn(KIND_PHRASES, label);\n}\n\nexport function toolPhrases(label: string): ToolPhrases {\n if (isToolKind(label)) return KIND_PHRASES[label];\n return { live: `Using ${label}`, done: `Used ${label}`, one: `used ${label}`, many: `used ${label}` };\n}\n","import { formatDate, toDate } from '@/utils/date-format';\n\nexport function ToolCallTime({ at }: { at?: number }) {\n const time = toDate(at);\n if (!time) return null;\n\n return (\n <time\n className=\"shrink-0 text-meta text-muted-foreground tabular-nums\"\n dateTime={time.toISOString()}\n title={formatDate(time, 'date-time-seconds')}\n >\n {formatDate(time, 'time-seconds')}\n </time>\n );\n}\n"],"mappings":"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"}
@@ -1,16 +1,17 @@
1
1
  const require_rolldown_runtime = require("./rolldown-runtime-CmQyd0Gu.cjs");
2
- const require_Button = require("./Button-YQRflC47.cjs");
2
+ const require_Button = require("./Button-DLcMcuUL.cjs");
3
3
  const require_icons_AgentIcon = require("./icons/AgentIcon.cjs.js");
4
- const require_tool_call = require("./tool-call-CvilN9ti.cjs");
5
- const require_CodeEditor = require("./CodeEditor-CJ9jC9lu.cjs");
4
+ const require_tool_call = require("./tool-call-Bu66PkD-.cjs");
5
+ const require_CodeEditor = require("./CodeEditor-CLzs0yVc.cjs");
6
6
  const require_domains_chat_context_chat_context = require("./domains/chat/context/chat-context.cjs.js");
7
7
  const require_domains_chat_components_loading_badge = require("./domains/chat/components/loading-badge.cjs.js");
8
8
  const require_domains_chat_components_network_choice_metadata_dialog = require("./domains/chat/components/network-choice-metadata-dialog.cjs.js");
9
9
  const require_domains_chat_components_section_label = require("./domains/chat/components/section-label.cjs.js");
10
- const require_domains_chat_tools_tool_card_kind = require("./domains/chat/tools/tool-card-kind.cjs.js");
11
- const require_domains_chat_tools_badges_background_task_metadata_dialog = require("./domains/chat/tools/badges/background-task-metadata-dialog.cjs.js");
12
10
  const require_domains_chat_tools_badges_awaits_tool_approval = require("./domains/chat/tools/badges/awaits-tool-approval.cjs.js");
13
11
  const require_domains_chat_tools_badges_tool_approval_badge = require("./domains/chat/tools/badges/tool-approval-badge.cjs.js");
12
+ const require_domains_chat_tools_badges_knowledge_tool_badge = require("./domains/chat/tools/badges/knowledge-tool-badge.cjs.js");
13
+ const require_domains_chat_tools_tool_card_kind = require("./domains/chat/tools/tool-card-kind.cjs.js");
14
+ const require_domains_chat_tools_badges_background_task_metadata_dialog = require("./domains/chat/tools/badges/background-task-metadata-dialog.cjs.js");
14
15
  const require_domains_chat_tools_badges_resolve_child_messages = require("./domains/chat/tools/badges/resolve-child-messages.cjs.js");
15
16
  const require_domains_chat_tools_badges_file_tree_badge = require("./domains/chat/tools/badges/file-tree-badge.cjs.js");
16
17
  const require_domains_chat_tools_badges_sandbox_execution_badge = require("./domains/chat/tools/badges/sandbox-execution-badge.cjs.js");
@@ -317,6 +318,19 @@ var ToolCardInner = ({ toolName, input, output, modelOutput, backgroundTaskId, b
317
318
  });
318
319
  break;
319
320
  }
321
+ case "knowledge": {
322
+ const card = require_domains_chat_tools_badges_knowledge_tool_badge.knowledgeCard(toolName, input, output);
323
+ if (card) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_domains_chat_tools_badges_knowledge_tool_badge.KnowledgeToolBadge, {
324
+ card,
325
+ toolName,
326
+ metadata,
327
+ toolCallId,
328
+ toolApprovalMetadata,
329
+ isNetwork,
330
+ status
331
+ });
332
+ break;
333
+ }
320
334
  }
321
335
  const mcpAppInfo = mcpAppTools?.[toolName];
322
336
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
@@ -370,4 +384,4 @@ Object.defineProperty(exports, "ToolCardInner", {
370
384
  }
371
385
  });
372
386
 
373
- //# sourceMappingURL=tool-card-B7O8AsRl.cjs.map
387
+ //# sourceMappingURL=tool-card-DrqPZfPQ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-card-DrqPZfPQ.cjs","names":["awaitsToolApproval","ToolCallMono","CodeEditor","ToolApprovalBadge","AgentIcon","NetworkChoiceMetadataDialogTrigger","BackgroundTaskMetadataDialogTrigger","_Fragment","Button","Markdown","React","SectionLabel","useAgentMessages","LoadingBadge","toAISdkV5Messages","resolveToChildMessages","PlaygroundWorkflowRunProvider","useMcpAppTools","useChatSend","useContext","ChatAgentContext","useChatRunning","useCallback","toolCardKind","toolInteraction","badgeStatus","ObservationMarkerBadge","AskUserTool","ConnectPromptTool","SubmitPlanTool","isAgentCall","isWorkflowCall","ToolBadge","isSettledState","WorkflowBadge","FileTreeBadge","SandboxExecutionBadge","codeModeCall","CodeModeBadge","knowledgeCard","KnowledgeToolBadge","_Fragment","ToolResultMedia","McpAppToolResult"],"sources":["../src/domains/chat/tools/badges/agent-badge.tsx","../src/domains/chat/tools/badges/agent-badge-wrapper.tsx","../src/domains/chat/tools/tool-card.tsx"],"sourcesContent":["import React from 'react';\nimport Markdown from 'react-markdown';\nimport { ToolCard } from '../tool-card';\nimport { BackgroundTaskMetadataDialogTrigger } from './background-task-metadata-dialog';\nimport type { MessageMetadata } from '@/domains/chat';\nimport { NetworkChoiceMetadataDialogTrigger } from '@/domains/chat/components/network-choice-metadata-dialog';\nimport { SectionLabel } from '@/domains/chat/components/section-label';\nimport { awaitsToolApproval } from '@/domains/chat/tools/badges/awaits-tool-approval';\nimport type { ToolApprovalRequest } from '@/domains/chat/tools/badges/tool-approval-badge';\nimport { ToolApprovalBadge } from '@/domains/chat/tools/badges/tool-approval-badge';\nimport type { ActivityStatus } from '@/ds/components/ai/activity';\nimport { ToolCallMono } from '@/ds/components/ai/tool-call';\nimport { Button } from '@/ds/components/Button';\nimport { CodeEditor } from '@/ds/components/CodeEditor';\nimport { AgentIcon } from '@/ds/icons/AgentIcon';\n\ntype TextMessage = {\n type: 'text';\n content: string;\n};\n\ntype ToolMessage = {\n type: 'tool';\n toolName: string;\n toolOutput?: any;\n args?: any;\n toolCallId: string;\n result?: any;\n};\n\nexport type AgentMessage = TextMessage | ToolMessage;\n\nexport interface AgentBadgeProps extends Omit<ToolApprovalRequest, 'toolCalled'> {\n agentId: string;\n messages: AgentMessage[];\n metadata?: MessageMetadata;\n suspendPayload?: any;\n toolCalled?: boolean;\n isComplete?: boolean;\n keepOpenForStreamingChildMessages?: boolean;\n status?: ActivityStatus;\n errorText?: string;\n onLoadPrevious?: () => void;\n isLoadingPrevious?: boolean;\n}\n\nexport const AgentBadge = ({\n agentId,\n messages = [],\n metadata,\n toolCallId,\n toolApprovalMetadata,\n toolName,\n isNetwork,\n suspendPayload,\n toolCalled: toolCalledProp,\n isComplete = false,\n keepOpenForStreamingChildMessages = false,\n status = 'idle',\n errorText,\n onLoadPrevious,\n isLoadingPrevious = false,\n}: AgentBadgeProps) => {\n const routingDecision = metadata?.mode === 'network' ? metadata.routingDecision : undefined;\n const selectionReason =\n metadata?.mode === 'network' ? (routingDecision?.selectionReason ?? metadata.selectionReason) : undefined;\n const agentNetworkInput = metadata?.mode === 'network' ? (routingDecision ?? metadata.agentInput) : undefined;\n\n const parentSuspendedTools =\n metadata?.mode === 'stream' || metadata?.mode === 'network' || metadata?.mode === 'generate'\n ? metadata?.suspendedTools\n : undefined;\n\n const bgEntry =\n (metadata?.mode === 'stream' || metadata?.mode === 'generate') && metadata?.backgroundTasks\n ? metadata.backgroundTasks[toolCallId]\n : undefined;\n\n const allChildToolsComplete =\n messages.length > 0 &&\n messages.every(message => {\n if (message.type === 'text') {\n return true;\n }\n return message.toolOutput !== undefined;\n });\n\n let toolCalled = isComplete && allChildToolsComplete;\n\n if (isNetwork) {\n toolCalled = toolCalledProp ?? allChildToolsComplete;\n }\n\n const isError = status === 'error';\n const shouldCollapseContent = isComplete && !isError && !toolApprovalMetadata && !keepOpenForStreamingChildMessages;\n const shownError = isError ? errorText : undefined;\n const hasBody =\n Boolean(onLoadPrevious) ||\n messages.length > 0 ||\n Boolean(shownError) ||\n Boolean(suspendPayload) ||\n awaitsToolApproval({ toolApprovalMetadata, toolCalled });\n\n let suspendPayloadSlot =\n typeof suspendPayload === 'string' ? (\n <ToolCallMono copyText={suspendPayload} className=\"text-muted-foreground\">\n {suspendPayload}\n </ToolCallMono>\n ) : (\n <CodeEditor data={suspendPayload} data-testid=\"tool-suspend-payload\" />\n );\n\n return (\n <ToolApprovalBadge\n approval={{\n toolCalled,\n toolCallId,\n toolApprovalMetadata,\n toolName,\n isNetwork,\n isGenerateMode: metadata?.mode === 'generate',\n }}\n data-testid=\"agent-badge\"\n icon={<AgentIcon className=\"text-span-agent\" />}\n title={agentId}\n status={status}\n initialCollapsed={shouldCollapseContent}\n extraInfo={\n metadata?.mode === 'network' ? (\n <NetworkChoiceMetadataDialogTrigger\n selectionReason={selectionReason ?? ''}\n input={agentNetworkInput as string | Record<string, unknown> | undefined}\n />\n ) : bgEntry?.taskId && bgEntry?.startedAt ? (\n <BackgroundTaskMetadataDialogTrigger backgroundTask={bgEntry} />\n ) : null\n }\n >\n {hasBody && (\n <>\n {onLoadPrevious && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={onLoadPrevious}\n disabled={isLoadingPrevious}\n data-testid=\"agent-badge-load-previous\"\n >\n {isLoadingPrevious ? 'Loading earlier messages…' : 'Load earlier messages'}\n </Button>\n )}\n\n {messages.map((message, index) => {\n if (message.type === 'text') {\n return <Markdown key={index}>{message.content}</Markdown>;\n }\n\n let result;\n\n try {\n result = typeof message.toolOutput === 'string' ? JSON.parse(message.toolOutput) : message.toolOutput;\n } catch {\n result = message.toolOutput;\n }\n\n return (\n <React.Fragment key={index}>\n <ToolCard\n toolName={message.toolName}\n input={message.args}\n output={result}\n state=\"output-available\"\n toolCallId={message.toolCallId}\n metadata={{\n mode: 'stream',\n requireApprovalMetadata: isNetwork ? metadata?.requireApprovalMetadata : undefined,\n suspendedTools: parentSuspendedTools,\n }}\n />\n </React.Fragment>\n );\n })}\n\n {shownError && (\n <ToolCallMono copyText={shownError} data-testid=\"agent-error\" className=\"text-destructive-foreground\">\n {shownError}\n </ToolCallMono>\n )}\n\n {suspendPayloadSlot !== undefined && suspendPayload && (\n <div>\n <SectionLabel>Agent suspend payload</SectionLabel>\n {suspendPayloadSlot}\n </div>\n )}\n </>\n )}\n </ToolApprovalBadge>\n );\n};\n","import { toAISdkV5Messages } from '@mastra/ai-sdk/ui';\nimport { useAgentMessages } from '@mastra/react/hooks/agents';\nimport type { AgentMessage } from './agent-badge';\nimport { AgentBadge } from './agent-badge';\nimport { resolveToChildMessages } from './resolve-child-messages';\nimport type { MessageMetadata } from '@/domains/chat';\nimport { LoadingBadge } from '@/domains/chat/components/loading-badge';\nimport type { ToolApprovalRequest } from '@/domains/chat/tools/badges/tool-approval-badge';\nimport type { ActivityStatus } from '@/ds/components/ai/activity';\n\ninterface SubAgentToolResult {\n toolName: string;\n toolCallId: string;\n result: any;\n args: any;\n}\n\ninterface AgentBadgeWrapperProps extends Omit<ToolApprovalRequest, 'toolCalled'> {\n agentId: string;\n result?: {\n childMessages?: AgentMessage[];\n subAgentResourceId?: string;\n subAgentThreadId?: string;\n subAgentToolResults?: SubAgentToolResult[];\n text?: string;\n };\n metadata?: MessageMetadata;\n suspendPayload?: any;\n toolCalled?: boolean;\n isComplete?: boolean;\n status?: ActivityStatus;\n errorText?: string;\n}\n\nexport const AgentBadgeWrapper = ({\n agentId,\n result,\n metadata,\n toolCallId,\n toolApprovalMetadata,\n toolName,\n isNetwork,\n suspendPayload,\n toolCalled,\n isComplete,\n status,\n errorText,\n}: AgentBadgeWrapperProps) => {\n const shouldFetchAgentMessages = Boolean(\n result?.subAgentThreadId && !result.text && !result.subAgentToolResults?.length,\n );\n const { data, isLoading, fetchNextPage, hasNextPage, isFetchingNextPage } = useAgentMessages({\n threadId: shouldFetchAgentMessages ? result?.subAgentThreadId : undefined,\n agentId,\n memory: true,\n });\n\n if (isLoading) {\n return <LoadingBadge />;\n }\n\n const convertedMessages = data?.messages ? toAISdkV5Messages(data.messages) : [];\n\n let childMessages = result?.childMessages?.length ? result.childMessages : undefined;\n\n if (!childMessages && result?.subAgentToolResults?.length) {\n const toolMessages: AgentMessage[] = result.subAgentToolResults.map(tr => ({\n type: 'tool' as const,\n toolName: tr.toolName,\n toolCallId: tr.toolCallId,\n args: tr.args,\n toolOutput: tr.result,\n }));\n if (result.text) {\n toolMessages.push({ type: 'text' as const, content: result.text });\n }\n childMessages = toolMessages;\n }\n\n if (!childMessages && result?.text) {\n childMessages = [{ type: 'text' as const, content: result.text }];\n }\n\n let onLoadPrevious: (() => void) | undefined;\n if (!childMessages) {\n childMessages = resolveToChildMessages(convertedMessages) as AgentMessage[];\n onLoadPrevious = hasNextPage ? fetchNextPage : undefined;\n }\n\n const hasStreamingChildMessages = Boolean(result && Object.prototype.hasOwnProperty.call(result, 'childMessages'));\n\n return (\n <AgentBadge\n agentId={agentId}\n messages={childMessages ?? []}\n keepOpenForStreamingChildMessages={hasStreamingChildMessages}\n metadata={metadata}\n toolCallId={toolCallId}\n toolApprovalMetadata={toolApprovalMetadata}\n toolName={toolName}\n isNetwork={isNetwork}\n suspendPayload={suspendPayload}\n toolCalled={toolCalled}\n isComplete={isComplete}\n status={status}\n errorText={errorText}\n onLoadPrevious={onLoadPrevious}\n isLoadingPrevious={isFetchingNextPage}\n />\n );\n};\n","import { useMcpAppTools } from '@mastra/react/hooks/mcps';\nimport { useCallback, useContext } from 'react';\nimport { AgentBadgeWrapper } from './badges/agent-badge-wrapper';\nimport { FileTreeBadge } from './badges/file-tree-badge';\nimport { KnowledgeToolBadge, knowledgeCard } from './badges/knowledge-tool-badge';\nimport { SandboxExecutionBadge } from './badges/sandbox-execution-badge';\nimport { ToolBadge } from './badges/tool-badge';\nimport { useWorkflowStream, WorkflowBadge } from './badges/workflow-badge';\nimport { SubmitPlanTool } from './submit-plan-tool';\nimport { ToolResultMedia } from './tool-result-media';\nimport type { MessageMetadata } from '@/domains/chat';\nimport { ChatAgentContext, useChatRunning, useChatSend } from '@/domains/chat/context/chat-context';\nimport { AskUserTool } from '@/domains/chat/tools/ask-user-tool';\nimport { CodeModeBadge } from '@/domains/chat/tools/badges/code-mode-badge';\nimport { ObservationMarkerBadge } from '@/domains/chat/tools/badges/observation-marker-badge';\nimport { ConnectPromptTool } from '@/domains/chat/tools/connect-prompt-tool';\nimport {\n badgeStatus,\n codeModeCall,\n isAgentCall,\n isSettledState,\n isWorkflowCall,\n toolCardKind,\n toolInteraction,\n} from '@/domains/chat/tools/tool-card-kind';\nimport { McpAppToolResult } from '@/domains/mcps/components/mcp-app-tool-result';\nimport { PlaygroundWorkflowRunProvider } from '@/domains/workflows/context/playground-workflow-run-provider';\n\n/** A `data`-typed part the agent wrote via `writer.custom`, scoped to a call by `data.toolCallId`. */\nexport interface DataMessagePart {\n type: string;\n name?: string;\n data?: any;\n}\n\nexport interface ToolCardProps {\n toolName: string;\n input: any;\n output: any;\n modelOutput?: unknown;\n /** The Mastra background task running the call, when it was deferred. */\n backgroundTaskId?: string;\n /** The background task's status in the part's metadata: `running` until the part holds its result. */\n backgroundTaskStatus?: string;\n toolCallId: string;\n /** Part state: v5 `output-available`/`output-error`/`input-available`, or v4 `result`/`call`. */\n state?: string;\n /** Error message when `state` is `output-error`. */\n errorText?: string;\n metadata?: MessageMetadata;\n /** `data`-typed parts from the parent message, for badges that read live streaming metadata. */\n dataParts?: ReadonlyArray<DataMessagePart>;\n /** Historical rendering mode: preserve presentation while suppressing executable actions and side effects. */\n readOnly?: boolean;\n}\n\nconst stripPrefix = (toolName: string, prefix: string): string =>\n toolName.startsWith(prefix) ? toolName.slice(prefix.length) : toolName;\n\n/** Its own workflow run scope, so a streaming workflow result can drive a live graph inside the card. */\nexport const ToolCard = (props: ToolCardProps) => {\n return (\n <PlaygroundWorkflowRunProvider workflowId=\"\" withoutTimeTravel>\n <ToolCardInner {...props} />\n </PlaygroundWorkflowRunProvider>\n );\n};\n\nexport const ToolCardInner = ({\n toolName,\n input,\n output,\n modelOutput,\n backgroundTaskId,\n backgroundTaskStatus,\n toolCallId,\n state,\n errorText,\n metadata,\n dataParts,\n readOnly = false,\n}: ToolCardProps) => {\n const { data: mcpAppTools } = useMcpAppTools();\n const send = useChatSend();\n const chatAgent = useContext(ChatAgentContext);\n const { isRunning } = useChatRunning();\n const handleMcpAppSendMessage = useCallback(\n (content: string) => {\n void send({ message: content });\n },\n [send],\n );\n useWorkflowStream(output);\n\n const kind = toolCardKind({ toolName, toolCallId, input, output, state }, { metadata, mcpAppTools });\n const { approval: toolApprovalMetadata, suspended: suspendedToolMetadata } = toolInteraction(\n metadata,\n toolName,\n toolCallId,\n );\n const status = badgeStatus(state, isRunning);\n const isNetwork = metadata?.mode === 'network';\n const toolCalled = isNetwork && metadata?.hasMoreMessages ? true : undefined;\n const agentToolName = stripPrefix(toolName, 'agent-');\n const workflowToolName = stripPrefix(toolName, 'workflow-');\n\n switch (kind) {\n case 'hidden':\n return null;\n case 'observation':\n return <ObservationMarkerBadge toolName={toolName} omData={output?.omData ?? input} />;\n case 'ask_user':\n if (!readOnly) {\n return <AskUserTool toolName={toolName} toolCallId={toolCallId} output={output} metadata={metadata} />;\n }\n break;\n case 'connect_prompt':\n return <ConnectPromptTool output={output} readOnly={readOnly} />;\n case 'submit_plan':\n return (\n <SubmitPlanTool\n agentId={chatAgent?.agentId}\n agentVersionId={chatAgent?.agentVersionId}\n requestContext={chatAgent?.requestContext}\n toolName={toolName}\n toolCallId={toolCallId}\n output={output}\n metadata={metadata}\n />\n );\n case 'background': {\n const isAgent = isAgentCall(metadata, toolName);\n const isWorkflow = isWorkflowCall(metadata, toolName);\n return (\n <ToolBadge\n toolName={isAgent ? agentToolName : isWorkflow ? workflowToolName : toolName}\n args={input}\n result={output}\n toolOutput={[]}\n metadata={metadata}\n toolCallId={toolCallId}\n toolApprovalMetadata={toolApprovalMetadata}\n suspendPayload={suspendedToolMetadata?.suspendPayload}\n isNetwork={isNetwork}\n toolCalled={toolCalled}\n withoutArgs={isAgent || isWorkflow}\n status={status}\n backgroundTaskId={backgroundTaskId}\n backgroundTaskStatus={backgroundTaskStatus}\n />\n );\n }\n case 'agent':\n return (\n <AgentBadgeWrapper\n agentId={agentToolName}\n result={output}\n metadata={metadata}\n toolCallId={toolCallId}\n toolApprovalMetadata={toolApprovalMetadata}\n toolName={toolName}\n isNetwork={isNetwork}\n suspendPayload={suspendedToolMetadata?.suspendPayload}\n toolCalled={toolCalled}\n isComplete={isSettledState(state)}\n status={status}\n errorText={errorText}\n />\n );\n case 'workflow':\n return (\n <WorkflowBadge\n workflowId={workflowToolName}\n isStreaming={metadata?.mode === 'stream' || isNetwork}\n result={output}\n metadata={metadata}\n toolCallId={toolCallId}\n toolApprovalMetadata={toolApprovalMetadata}\n suspendPayload={suspendedToolMetadata?.suspendPayload}\n toolName={toolName}\n isNetwork={isNetwork}\n toolCalled={toolCalled}\n />\n );\n case 'file_tree':\n return (\n <FileTreeBadge\n toolName={toolName}\n args={input}\n result={output}\n metadata={metadata}\n toolCallId={toolCallId}\n toolApprovalMetadata={toolApprovalMetadata}\n isNetwork={isNetwork}\n toolCalled={toolCalled}\n dataParts={dataParts}\n status={status}\n />\n );\n case 'sandbox':\n return (\n <SandboxExecutionBadge\n toolName={toolName}\n args={input}\n result={output}\n metadata={metadata}\n toolCallId={toolCallId}\n toolApprovalMetadata={toolApprovalMetadata}\n isNetwork={isNetwork}\n toolCalled={toolCalled}\n dataParts={dataParts}\n status={status}\n />\n );\n case 'code_mode': {\n const call = codeModeCall(input, output);\n if (call) {\n return (\n <CodeModeBadge\n toolName={toolName}\n code={call.code}\n result={call.result}\n metadata={metadata}\n toolCallId={toolCallId}\n toolApprovalMetadata={toolApprovalMetadata}\n isNetwork={isNetwork}\n toolCalled={toolCalled}\n />\n );\n }\n break;\n }\n case 'knowledge': {\n const card = knowledgeCard(toolName, input, output);\n if (card) {\n return (\n <KnowledgeToolBadge\n card={card}\n toolName={toolName}\n metadata={metadata}\n toolCallId={toolCallId}\n toolApprovalMetadata={toolApprovalMetadata}\n isNetwork={isNetwork}\n status={status}\n />\n );\n }\n break;\n }\n case 'mcp_app':\n case 'plain':\n break;\n }\n\n const mcpAppInfo = mcpAppTools?.[toolName];\n\n return (\n <>\n <ToolBadge\n toolName={toolName}\n args={input}\n result={output ?? errorText}\n toolOutput={output?.toolOutput || []}\n metadata={metadata}\n toolCallId={toolCallId}\n toolApprovalMetadata={toolApprovalMetadata}\n suspendPayload={suspendedToolMetadata?.suspendPayload}\n isNetwork={isNetwork}\n toolCalled={toolCalled}\n status={status}\n backgroundTaskId={backgroundTaskId}\n backgroundTaskStatus={backgroundTaskStatus}\n />\n <ToolResultMedia modelOutput={modelOutput} />\n {mcpAppInfo && output !== undefined && (\n <McpAppToolResult\n appInfo={mcpAppInfo}\n toolArgs={input}\n toolResult={output}\n onSendMessage={handleMcpAppSendMessage}\n readOnly={readOnly}\n />\n )}\n </>\n );\n};\n"],"mappings":"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"}
@@ -1,15 +1,16 @@
1
- import { t as Button } from "./Button-Bw1e3ONi.js";
1
+ import { t as Button } from "./Button-CLXTbAY8.js";
2
2
  import { AgentIcon } from "./icons/AgentIcon.es.js";
3
- import { c as ToolCallMono } from "./tool-call-BxYXs9w0.js";
4
- import { t as CodeEditor } from "./CodeEditor-CPVxj7WS.js";
3
+ import { c as ToolCallMono } from "./tool-call-Ch9-jjXU.js";
4
+ import { t as CodeEditor } from "./CodeEditor-COnz9c6B.js";
5
5
  import { ChatAgentContext, useChatRunning, useChatSend } from "./domains/chat/context/chat-context.es.js";
6
6
  import { LoadingBadge } from "./domains/chat/components/loading-badge.es.js";
7
7
  import { NetworkChoiceMetadataDialogTrigger } from "./domains/chat/components/network-choice-metadata-dialog.es.js";
8
8
  import { SectionLabel } from "./domains/chat/components/section-label.es.js";
9
- import { badgeStatus, codeModeCall, isAgentCall, isSettledState, isWorkflowCall, toolCardKind, toolInteraction } from "./domains/chat/tools/tool-card-kind.es.js";
10
- import { BackgroundTaskMetadataDialogTrigger } from "./domains/chat/tools/badges/background-task-metadata-dialog.es.js";
11
9
  import { awaitsToolApproval } from "./domains/chat/tools/badges/awaits-tool-approval.es.js";
12
10
  import { ToolApprovalBadge } from "./domains/chat/tools/badges/tool-approval-badge.es.js";
11
+ import { KnowledgeToolBadge, knowledgeCard } from "./domains/chat/tools/badges/knowledge-tool-badge.es.js";
12
+ import { badgeStatus, codeModeCall, isAgentCall, isSettledState, isWorkflowCall, toolCardKind, toolInteraction } from "./domains/chat/tools/tool-card-kind.es.js";
13
+ import { BackgroundTaskMetadataDialogTrigger } from "./domains/chat/tools/badges/background-task-metadata-dialog.es.js";
13
14
  import { resolveToChildMessages } from "./domains/chat/tools/badges/resolve-child-messages.es.js";
14
15
  import { FileTreeBadge } from "./domains/chat/tools/badges/file-tree-badge.es.js";
15
16
  import { SandboxExecutionBadge } from "./domains/chat/tools/badges/sandbox-execution-badge.es.js";
@@ -314,6 +315,19 @@ var ToolCardInner = ({ toolName, input, output, modelOutput, backgroundTaskId, b
314
315
  });
315
316
  break;
316
317
  }
318
+ case "knowledge": {
319
+ const card = knowledgeCard(toolName, input, output);
320
+ if (card) return /* @__PURE__ */ jsx(KnowledgeToolBadge, {
321
+ card,
322
+ toolName,
323
+ metadata,
324
+ toolCallId,
325
+ toolApprovalMetadata,
326
+ isNetwork,
327
+ status
328
+ });
329
+ break;
330
+ }
317
331
  }
318
332
  const mcpAppInfo = mcpAppTools?.[toolName];
319
333
  return /* @__PURE__ */ jsxs(Fragment$1, { children: [
@@ -344,4 +358,4 @@ var ToolCardInner = ({ toolName, input, output, modelOutput, backgroundTaskId, b
344
358
  };
345
359
  export { AgentBadge as i, ToolCardInner as n, AgentBadgeWrapper as r, ToolCard as t };
346
360
 
347
- //# sourceMappingURL=tool-card-ELW898uw.js.map
361
+ //# sourceMappingURL=tool-card-sO6P2Qj4.js.map