@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
@@ -0,0 +1,93 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ let d3_force = require("d3-force");
3
+ // src/domains/knowledge/lib/layout.ts
4
+ /**
5
+ * Synchronous d3-force layout for the knowledge graph. The simulation is run
6
+ * to a fixed tick count with deterministic initial positions (a phyllotaxis
7
+ * spiral over the SORTED node ids), so the same input always yields the same
8
+ * settled layout — that is what makes the layout unit-testable.
9
+ */
10
+ var DEFAULT_PADDING = 28;
11
+ var DEFAULT_TICKS = 300;
12
+ function runLayout(nodes, edges, options = {}) {
13
+ const ticks = options.ticks ?? DEFAULT_TICKS;
14
+ const simNodes = [...nodes].sort((a, b) => a.id.localeCompare(b.id)).map((node, index) => {
15
+ const radius = 18 * Math.sqrt(.5 + index);
16
+ const angle = index * 2.399963229728653;
17
+ const seeded = node.initial ?? {
18
+ x: radius * Math.cos(angle),
19
+ y: radius * Math.sin(angle)
20
+ };
21
+ return {
22
+ id: node.id,
23
+ size: node.size,
24
+ padding: node.padding ?? DEFAULT_PADDING,
25
+ x: node.fixed?.x ?? seeded.x,
26
+ y: node.fixed?.y ?? seeded.y,
27
+ fx: node.fixed?.x ?? null,
28
+ fy: node.fixed?.y ?? null
29
+ };
30
+ });
31
+ const ids = new Set(simNodes.map((node) => node.id));
32
+ const hugs = new Set(edges.filter((edge) => edge.hug).map((edge) => `${edge.source}\u0000${edge.target}`));
33
+ const simEdges = edges.filter((edge) => ids.has(edge.source) && ids.has(edge.target)).map((edge) => ({
34
+ source: edge.source,
35
+ target: edge.target
36
+ }));
37
+ (0, d3_force.forceSimulation)(simNodes).force("link", (0, d3_force.forceLink)(simEdges).id((node) => node.id).distance((link) => {
38
+ const source = link.source;
39
+ const target = link.target;
40
+ return (hugs.has(`${source.id}\u0000${target.id}`) ? 8 : 40) + (source.size + target.size) / 2;
41
+ })).force("charge", (0, d3_force.forceManyBody)().strength((node) => node.size <= 24 ? -60 : -700)).force("collide", (0, d3_force.forceCollide)().radius((node) => node.size / 2 + node.padding).strength(1).iterations(3)).force("center", (0, d3_force.forceCenter)(0, 0)).force("x", (0, d3_force.forceX)(0).strength(.06)).force("y", (0, d3_force.forceY)(0).strength(.08)).stop().tick(ticks);
42
+ resolveOverlaps(simNodes);
43
+ const positions = /* @__PURE__ */ new Map();
44
+ for (const node of simNodes) positions.set(node.id, {
45
+ x: node.x ?? 0,
46
+ y: node.y ?? 0
47
+ });
48
+ return positions;
49
+ }
50
+ /**
51
+ * Hard guarantee that no two nodes overlap: the force simulation can leave
52
+ * residual overlaps once alpha decays, so after settling we sweep node pairs
53
+ * and push them apart deterministically until every pair clears its combined
54
+ * radius plus padding. Fixed (user-dragged) nodes never move.
55
+ */
56
+ function resolveOverlaps(nodes) {
57
+ const order = [...nodes].sort((a, b) => b.size - a.size);
58
+ for (let sweep = 0; sweep < 600; sweep++) {
59
+ let moved = false;
60
+ for (let i = 0; i < order.length; i++) for (let j = i + 1; j < order.length; j++) {
61
+ const a = order[i];
62
+ const b = order[j];
63
+ if (!a || !b) continue;
64
+ const minDistance = a.size / 2 + b.size / 2 + Math.min(a.padding, b.padding);
65
+ let dx = (b.x ?? 0) - (a.x ?? 0);
66
+ let dy = (b.y ?? 0) - (a.y ?? 0);
67
+ let distance = Math.hypot(dx, dy);
68
+ if (distance >= minDistance) continue;
69
+ if (distance === 0) {
70
+ dx = 1;
71
+ dy = 0;
72
+ distance = 1;
73
+ }
74
+ const overlap = minDistance - distance + .5;
75
+ const ux = dx / distance;
76
+ const uy = dy / distance;
77
+ const aFixed = a.fx != null;
78
+ const bFixed = b.fx != null;
79
+ if (aFixed && bFixed) continue;
80
+ const aShare = aFixed ? 0 : bFixed ? 1 : .5;
81
+ const bShare = 1 - aShare;
82
+ a.x = (a.x ?? 0) - ux * overlap * aShare;
83
+ a.y = (a.y ?? 0) - uy * overlap * aShare;
84
+ b.x = (b.x ?? 0) + ux * overlap * bShare;
85
+ b.y = (b.y ?? 0) + uy * overlap * bShare;
86
+ moved = true;
87
+ }
88
+ if (!moved) break;
89
+ }
90
+ }
91
+ exports.runLayout = runLayout;
92
+
93
+ //# sourceMappingURL=layout.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.cjs.js","names":["forceSimulation","forceLink","forceManyBody","forceCollide","forceCenter","forceX","forceY"],"sources":["../../../../src/domains/knowledge/lib/layout.ts"],"sourcesContent":["/**\n * Synchronous d3-force layout for the knowledge graph. The simulation is run\n * to a fixed tick count with deterministic initial positions (a phyllotaxis\n * spiral over the SORTED node ids), so the same input always yields the same\n * settled layout — that is what makes the layout unit-testable.\n */\n\nimport { forceCenter, forceCollide, forceLink, forceManyBody, forceSimulation, forceX, forceY } from 'd3-force';\nimport type { SimulationLinkDatum, SimulationNodeDatum } from 'd3-force';\n\nexport interface LayoutNodeInput {\n id: string;\n /** Node diameter in px (drives collision radius and link distance). */\n size: number;\n /** Pinned position from a user drag — the simulation must not move it. */\n fixed?: { x: number; y: number };\n /** Warm-start position (e.g. spawn a new node near its first neighbor). */\n initial?: { x: number; y: number };\n /** Collision breathing room around the node (default 28; tiny record dots use less). */\n padding?: number;\n}\n\nexport interface LayoutEdgeInput {\n source: string;\n target: string;\n /** A11: hug links (record dot stubs / junction spokes) stay short so record markers cluster tight. */\n hug?: boolean;\n}\n\nconst DEFAULT_PADDING = 28;\n\ninterface SimNode extends SimulationNodeDatum {\n id: string;\n size: number;\n padding: number;\n}\n\ntype SimLink = SimulationLinkDatum<SimNode>;\n\nconst DEFAULT_TICKS = 300;\n\nexport function runLayout(\n nodes: LayoutNodeInput[],\n edges: LayoutEdgeInput[],\n options: { ticks?: number } = {},\n): Map<string, { x: number; y: number }> {\n const ticks = options.ticks ?? DEFAULT_TICKS;\n const order = [...nodes].sort((a, b) => a.id.localeCompare(b.id));\n const simNodes: SimNode[] = order.map((node, index) => {\n // Deterministic phyllotaxis seed (same shape d3 uses internally, but keyed\n // to the sorted index so insertion order never changes the layout).\n const radius = 18 * Math.sqrt(0.5 + index);\n const angle = index * 2.399963229728653;\n const seeded = node.initial ?? { x: radius * Math.cos(angle), y: radius * Math.sin(angle) };\n return {\n id: node.id,\n size: node.size,\n padding: node.padding ?? DEFAULT_PADDING,\n x: node.fixed?.x ?? seeded.x,\n y: node.fixed?.y ?? seeded.y,\n fx: node.fixed?.x ?? null,\n fy: node.fixed?.y ?? null,\n };\n });\n const ids = new Set(simNodes.map(node => node.id));\n const hugs = new Set(edges.filter(edge => edge.hug).map(edge => `${edge.source}\\u0000${edge.target}`));\n const simEdges: SimLink[] = edges\n .filter(edge => ids.has(edge.source) && ids.has(edge.target))\n .map(edge => ({ source: edge.source, target: edge.target }));\n\n const simulation = forceSimulation(simNodes)\n .force(\n 'link',\n forceLink<SimNode, SimLink>(simEdges)\n .id(node => node.id)\n .distance(link => {\n const source = link.source as SimNode;\n const target = link.target as SimNode;\n // Hug links (record stubs/spokes) keep markers tight to their cluster.\n const hug = hugs.has(`${source.id}\\u0000${target.id}`);\n return (hug ? 8 : 40) + (source.size + target.size) / 2;\n }),\n )\n // Tiny record markers repel gently; knowledge nodes keep the strong spread.\n .force(\n 'charge',\n forceManyBody<SimNode>().strength(node => (node.size <= 24 ? -60 : -700)),\n )\n .force(\n 'collide',\n forceCollide<SimNode>()\n .radius(node => node.size / 2 + node.padding)\n .strength(1)\n .iterations(3),\n )\n .force('center', forceCenter(0, 0))\n // Weak gravity keeps disconnected satellites in frame instead of flinging\n // them to the edges of the canvas.\n .force('x', forceX(0).strength(0.06))\n .force('y', forceY(0).strength(0.08))\n .stop();\n\n simulation.tick(ticks);\n resolveOverlaps(simNodes);\n\n const positions = new Map<string, { x: number; y: number }>();\n for (const node of simNodes) {\n // No rounding: a 1px round-off can re-introduce a just-resolved overlap.\n positions.set(node.id, { x: node.x ?? 0, y: node.y ?? 0 });\n }\n return positions;\n}\n\n/**\n * Hard guarantee that no two nodes overlap: the force simulation can leave\n * residual overlaps once alpha decays, so after settling we sweep node pairs\n * and push them apart deterministically until every pair clears its combined\n * radius plus padding. Fixed (user-dragged) nodes never move.\n */\nfunction resolveOverlaps(nodes: SimNode[]): void {\n // Sorted big-first: settling the large nodes before the dots converges much\n // faster and avoids ping-pong between hub pairs.\n const order = [...nodes].sort((a, b) => b.size - a.size);\n for (let sweep = 0; sweep < 600; sweep++) {\n let moved = false;\n for (let i = 0; i < order.length; i++) {\n for (let j = i + 1; j < order.length; j++) {\n const a = order[i];\n const b = order[j];\n if (!a || !b) continue;\n // Pair breathing room = the smaller of the two paddings, so tiny\n // record markers can nestle close without knowledge nodes colliding.\n const minDistance = a.size / 2 + b.size / 2 + Math.min(a.padding, b.padding);\n let dx = (b.x ?? 0) - (a.x ?? 0);\n let dy = (b.y ?? 0) - (a.y ?? 0);\n let distance = Math.hypot(dx, dy);\n if (distance >= minDistance) continue;\n if (distance === 0) {\n // Perfectly stacked: separate along a deterministic axis.\n dx = 1;\n dy = 0;\n distance = 1;\n }\n // Over-separate slightly so float noise can't re-trigger the pair.\n const overlap = minDistance - distance + 0.5;\n const ux = dx / distance;\n const uy = dy / distance;\n const aFixed = a.fx != null;\n const bFixed = b.fx != null;\n if (aFixed && bFixed) continue;\n const aShare = aFixed ? 0 : bFixed ? 1 : 0.5;\n const bShare = 1 - aShare;\n a.x = (a.x ?? 0) - ux * overlap * aShare;\n a.y = (a.y ?? 0) - uy * overlap * aShare;\n b.x = (b.x ?? 0) + ux * overlap * bShare;\n b.y = (b.y ?? 0) + uy * overlap * bShare;\n moved = true;\n }\n }\n if (!moved) break;\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from '../../../src/domains/knowledge/lib/layout';
@@ -0,0 +1,92 @@
1
+ import { forceCenter, forceCollide, forceLink, forceManyBody, forceSimulation, forceX, forceY } from "d3-force";
2
+ // src/domains/knowledge/lib/layout.ts
3
+ /**
4
+ * Synchronous d3-force layout for the knowledge graph. The simulation is run
5
+ * to a fixed tick count with deterministic initial positions (a phyllotaxis
6
+ * spiral over the SORTED node ids), so the same input always yields the same
7
+ * settled layout — that is what makes the layout unit-testable.
8
+ */
9
+ var DEFAULT_PADDING = 28;
10
+ var DEFAULT_TICKS = 300;
11
+ function runLayout(nodes, edges, options = {}) {
12
+ const ticks = options.ticks ?? DEFAULT_TICKS;
13
+ const simNodes = [...nodes].sort((a, b) => a.id.localeCompare(b.id)).map((node, index) => {
14
+ const radius = 18 * Math.sqrt(.5 + index);
15
+ const angle = index * 2.399963229728653;
16
+ const seeded = node.initial ?? {
17
+ x: radius * Math.cos(angle),
18
+ y: radius * Math.sin(angle)
19
+ };
20
+ return {
21
+ id: node.id,
22
+ size: node.size,
23
+ padding: node.padding ?? DEFAULT_PADDING,
24
+ x: node.fixed?.x ?? seeded.x,
25
+ y: node.fixed?.y ?? seeded.y,
26
+ fx: node.fixed?.x ?? null,
27
+ fy: node.fixed?.y ?? null
28
+ };
29
+ });
30
+ const ids = new Set(simNodes.map((node) => node.id));
31
+ const hugs = new Set(edges.filter((edge) => edge.hug).map((edge) => `${edge.source}\u0000${edge.target}`));
32
+ const simEdges = edges.filter((edge) => ids.has(edge.source) && ids.has(edge.target)).map((edge) => ({
33
+ source: edge.source,
34
+ target: edge.target
35
+ }));
36
+ forceSimulation(simNodes).force("link", forceLink(simEdges).id((node) => node.id).distance((link) => {
37
+ const source = link.source;
38
+ const target = link.target;
39
+ return (hugs.has(`${source.id}\u0000${target.id}`) ? 8 : 40) + (source.size + target.size) / 2;
40
+ })).force("charge", forceManyBody().strength((node) => node.size <= 24 ? -60 : -700)).force("collide", forceCollide().radius((node) => node.size / 2 + node.padding).strength(1).iterations(3)).force("center", forceCenter(0, 0)).force("x", forceX(0).strength(.06)).force("y", forceY(0).strength(.08)).stop().tick(ticks);
41
+ resolveOverlaps(simNodes);
42
+ const positions = /* @__PURE__ */ new Map();
43
+ for (const node of simNodes) positions.set(node.id, {
44
+ x: node.x ?? 0,
45
+ y: node.y ?? 0
46
+ });
47
+ return positions;
48
+ }
49
+ /**
50
+ * Hard guarantee that no two nodes overlap: the force simulation can leave
51
+ * residual overlaps once alpha decays, so after settling we sweep node pairs
52
+ * and push them apart deterministically until every pair clears its combined
53
+ * radius plus padding. Fixed (user-dragged) nodes never move.
54
+ */
55
+ function resolveOverlaps(nodes) {
56
+ const order = [...nodes].sort((a, b) => b.size - a.size);
57
+ for (let sweep = 0; sweep < 600; sweep++) {
58
+ let moved = false;
59
+ for (let i = 0; i < order.length; i++) for (let j = i + 1; j < order.length; j++) {
60
+ const a = order[i];
61
+ const b = order[j];
62
+ if (!a || !b) continue;
63
+ const minDistance = a.size / 2 + b.size / 2 + Math.min(a.padding, b.padding);
64
+ let dx = (b.x ?? 0) - (a.x ?? 0);
65
+ let dy = (b.y ?? 0) - (a.y ?? 0);
66
+ let distance = Math.hypot(dx, dy);
67
+ if (distance >= minDistance) continue;
68
+ if (distance === 0) {
69
+ dx = 1;
70
+ dy = 0;
71
+ distance = 1;
72
+ }
73
+ const overlap = minDistance - distance + .5;
74
+ const ux = dx / distance;
75
+ const uy = dy / distance;
76
+ const aFixed = a.fx != null;
77
+ const bFixed = b.fx != null;
78
+ if (aFixed && bFixed) continue;
79
+ const aShare = aFixed ? 0 : bFixed ? 1 : .5;
80
+ const bShare = 1 - aShare;
81
+ a.x = (a.x ?? 0) - ux * overlap * aShare;
82
+ a.y = (a.y ?? 0) - uy * overlap * aShare;
83
+ b.x = (b.x ?? 0) + ux * overlap * bShare;
84
+ b.y = (b.y ?? 0) + uy * overlap * bShare;
85
+ moved = true;
86
+ }
87
+ if (!moved) break;
88
+ }
89
+ }
90
+ export { runLayout };
91
+
92
+ //# sourceMappingURL=layout.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.es.js","names":[],"sources":["../../../../src/domains/knowledge/lib/layout.ts"],"sourcesContent":["/**\n * Synchronous d3-force layout for the knowledge graph. The simulation is run\n * to a fixed tick count with deterministic initial positions (a phyllotaxis\n * spiral over the SORTED node ids), so the same input always yields the same\n * settled layout — that is what makes the layout unit-testable.\n */\n\nimport { forceCenter, forceCollide, forceLink, forceManyBody, forceSimulation, forceX, forceY } from 'd3-force';\nimport type { SimulationLinkDatum, SimulationNodeDatum } from 'd3-force';\n\nexport interface LayoutNodeInput {\n id: string;\n /** Node diameter in px (drives collision radius and link distance). */\n size: number;\n /** Pinned position from a user drag — the simulation must not move it. */\n fixed?: { x: number; y: number };\n /** Warm-start position (e.g. spawn a new node near its first neighbor). */\n initial?: { x: number; y: number };\n /** Collision breathing room around the node (default 28; tiny record dots use less). */\n padding?: number;\n}\n\nexport interface LayoutEdgeInput {\n source: string;\n target: string;\n /** A11: hug links (record dot stubs / junction spokes) stay short so record markers cluster tight. */\n hug?: boolean;\n}\n\nconst DEFAULT_PADDING = 28;\n\ninterface SimNode extends SimulationNodeDatum {\n id: string;\n size: number;\n padding: number;\n}\n\ntype SimLink = SimulationLinkDatum<SimNode>;\n\nconst DEFAULT_TICKS = 300;\n\nexport function runLayout(\n nodes: LayoutNodeInput[],\n edges: LayoutEdgeInput[],\n options: { ticks?: number } = {},\n): Map<string, { x: number; y: number }> {\n const ticks = options.ticks ?? DEFAULT_TICKS;\n const order = [...nodes].sort((a, b) => a.id.localeCompare(b.id));\n const simNodes: SimNode[] = order.map((node, index) => {\n // Deterministic phyllotaxis seed (same shape d3 uses internally, but keyed\n // to the sorted index so insertion order never changes the layout).\n const radius = 18 * Math.sqrt(0.5 + index);\n const angle = index * 2.399963229728653;\n const seeded = node.initial ?? { x: radius * Math.cos(angle), y: radius * Math.sin(angle) };\n return {\n id: node.id,\n size: node.size,\n padding: node.padding ?? DEFAULT_PADDING,\n x: node.fixed?.x ?? seeded.x,\n y: node.fixed?.y ?? seeded.y,\n fx: node.fixed?.x ?? null,\n fy: node.fixed?.y ?? null,\n };\n });\n const ids = new Set(simNodes.map(node => node.id));\n const hugs = new Set(edges.filter(edge => edge.hug).map(edge => `${edge.source}\\u0000${edge.target}`));\n const simEdges: SimLink[] = edges\n .filter(edge => ids.has(edge.source) && ids.has(edge.target))\n .map(edge => ({ source: edge.source, target: edge.target }));\n\n const simulation = forceSimulation(simNodes)\n .force(\n 'link',\n forceLink<SimNode, SimLink>(simEdges)\n .id(node => node.id)\n .distance(link => {\n const source = link.source as SimNode;\n const target = link.target as SimNode;\n // Hug links (record stubs/spokes) keep markers tight to their cluster.\n const hug = hugs.has(`${source.id}\\u0000${target.id}`);\n return (hug ? 8 : 40) + (source.size + target.size) / 2;\n }),\n )\n // Tiny record markers repel gently; knowledge nodes keep the strong spread.\n .force(\n 'charge',\n forceManyBody<SimNode>().strength(node => (node.size <= 24 ? -60 : -700)),\n )\n .force(\n 'collide',\n forceCollide<SimNode>()\n .radius(node => node.size / 2 + node.padding)\n .strength(1)\n .iterations(3),\n )\n .force('center', forceCenter(0, 0))\n // Weak gravity keeps disconnected satellites in frame instead of flinging\n // them to the edges of the canvas.\n .force('x', forceX(0).strength(0.06))\n .force('y', forceY(0).strength(0.08))\n .stop();\n\n simulation.tick(ticks);\n resolveOverlaps(simNodes);\n\n const positions = new Map<string, { x: number; y: number }>();\n for (const node of simNodes) {\n // No rounding: a 1px round-off can re-introduce a just-resolved overlap.\n positions.set(node.id, { x: node.x ?? 0, y: node.y ?? 0 });\n }\n return positions;\n}\n\n/**\n * Hard guarantee that no two nodes overlap: the force simulation can leave\n * residual overlaps once alpha decays, so after settling we sweep node pairs\n * and push them apart deterministically until every pair clears its combined\n * radius plus padding. Fixed (user-dragged) nodes never move.\n */\nfunction resolveOverlaps(nodes: SimNode[]): void {\n // Sorted big-first: settling the large nodes before the dots converges much\n // faster and avoids ping-pong between hub pairs.\n const order = [...nodes].sort((a, b) => b.size - a.size);\n for (let sweep = 0; sweep < 600; sweep++) {\n let moved = false;\n for (let i = 0; i < order.length; i++) {\n for (let j = i + 1; j < order.length; j++) {\n const a = order[i];\n const b = order[j];\n if (!a || !b) continue;\n // Pair breathing room = the smaller of the two paddings, so tiny\n // record markers can nestle close without knowledge nodes colliding.\n const minDistance = a.size / 2 + b.size / 2 + Math.min(a.padding, b.padding);\n let dx = (b.x ?? 0) - (a.x ?? 0);\n let dy = (b.y ?? 0) - (a.y ?? 0);\n let distance = Math.hypot(dx, dy);\n if (distance >= minDistance) continue;\n if (distance === 0) {\n // Perfectly stacked: separate along a deterministic axis.\n dx = 1;\n dy = 0;\n distance = 1;\n }\n // Over-separate slightly so float noise can't re-trigger the pair.\n const overlap = minDistance - distance + 0.5;\n const ux = dx / distance;\n const uy = dy / distance;\n const aFixed = a.fx != null;\n const bFixed = b.fx != null;\n if (aFixed && bFixed) continue;\n const aShare = aFixed ? 0 : bFixed ? 1 : 0.5;\n const bShare = 1 - aShare;\n a.x = (a.x ?? 0) - ux * overlap * aShare;\n a.y = (a.y ?? 0) - uy * overlap * aShare;\n b.x = (b.x ?? 0) + ux * overlap * bShare;\n b.y = (b.y ?? 0) + uy * overlap * bShare;\n moved = true;\n }\n }\n if (!moved) break;\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,135 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ // src/domains/knowledge/lib/pageGraph.ts
3
+ /**
4
+ * Edges among loaded, live pages: a parent edge for every loaded parent, and
5
+ * the given mention edges merged per source → target (counts summed). Self
6
+ * mentions and edges to unloaded pages are dropped.
7
+ */
8
+ function pageGraphEdges(pages, mentionEdges = []) {
9
+ const live = new Set(pages.filter((page) => !page.deletedAt && !page.mergedInto).map((page) => page.id));
10
+ const edges = [];
11
+ for (const page of pages) if (live.has(page.id) && page.parentId && page.parentId !== page.id && live.has(page.parentId)) edges.push({
12
+ source: page.parentId,
13
+ target: page.id,
14
+ kind: "parent"
15
+ });
16
+ const mentions = /* @__PURE__ */ new Map();
17
+ for (const edge of mentionEdges) {
18
+ if (edge.kind !== "mention" || edge.source === edge.target) continue;
19
+ if (!live.has(edge.source) || !live.has(edge.target)) continue;
20
+ const key = `${edge.source}\u0000${edge.target}`;
21
+ const existing = mentions.get(key);
22
+ const count = edge.count ?? 1;
23
+ if (existing) existing.count = (existing.count ?? 1) + count;
24
+ else mentions.set(key, {
25
+ source: edge.source,
26
+ target: edge.target,
27
+ kind: "mention",
28
+ count
29
+ });
30
+ }
31
+ return [...edges, ...mentions.values()];
32
+ }
33
+ /** Id of the placeholder circle for a declared principal that has no scope page yet. */
34
+ function unplacedScopeId(address) {
35
+ return `unplaced:${address}`;
36
+ }
37
+ /**
38
+ * Grants as graph pages and edges. A grant from a principal with a loaded scope page draws from that
39
+ * page; one whose principal has no scope page yet draws from a placeholder scope (one per address), so
40
+ * a role nobody has written to still shows what it can reach. Grants to unloaded targets are dropped.
41
+ */
42
+ function grantGraph(pages, grants = []) {
43
+ const live = new Set(pages.filter((page) => !page.deletedAt && !page.mergedInto).map((page) => page.id));
44
+ const placeholders = /* @__PURE__ */ new Map();
45
+ const edges = /* @__PURE__ */ new Map();
46
+ for (const grant of grants) {
47
+ if (!live.has(grant.target)) continue;
48
+ let source = grant.principalId && live.has(grant.principalId) ? grant.principalId : null;
49
+ if (!source) {
50
+ if (grant.principalId) continue;
51
+ source = unplacedScopeId(grant.principal);
52
+ if (!placeholders.has(source)) placeholders.set(source, placeholderScope(source, grant));
53
+ }
54
+ if (source === grant.target) continue;
55
+ edges.set(`${source}\u0000${grant.target}`, {
56
+ source,
57
+ target: grant.target,
58
+ kind: "grant",
59
+ role: grant.role
60
+ });
61
+ }
62
+ return {
63
+ placeholders: [...placeholders.values()],
64
+ edges: [...edges.values()]
65
+ };
66
+ }
67
+ function placeholderScope(id, grant) {
68
+ const nobody = { author: "" };
69
+ return {
70
+ id,
71
+ scopeId: id,
72
+ parentId: null,
73
+ isScope: true,
74
+ address: grant.principal,
75
+ displayLabel: grant.principalLabel,
76
+ position: "",
77
+ name: grant.principal,
78
+ version: 0,
79
+ createdBy: nobody,
80
+ updatedBy: nobody,
81
+ createdAt: "",
82
+ updatedAt: ""
83
+ };
84
+ }
85
+ /** The page plus every page one edge away from it, either direction. */
86
+ function pageNeighbourIds(pageId, edges) {
87
+ const ids = /* @__PURE__ */ new Set([pageId]);
88
+ for (const edge of edges) {
89
+ if (edge.source === pageId) ids.add(edge.target);
90
+ if (edge.target === pageId) ids.add(edge.source);
91
+ }
92
+ return ids;
93
+ }
94
+ /** Circle diameters: big enough for a kind label and three lines of name. */
95
+ var KNOWLEDGE_SCOPE_SIZE = 124;
96
+ var KNOWLEDGE_PAGE_SIZE = 108;
97
+ /** Converts pages and their edges to React Flow elements; positions are left to the layout. */
98
+ function toPageFlow(pages, edges, selectedId) {
99
+ return {
100
+ nodes: pages.filter((page) => !page.deletedAt && !page.mergedInto).map((page) => {
101
+ return {
102
+ id: page.id,
103
+ type: "page",
104
+ position: {
105
+ x: 0,
106
+ y: 0
107
+ },
108
+ data: {
109
+ page,
110
+ size: page.isScope ? 124 : 108,
111
+ selected: page.id === selectedId
112
+ }
113
+ };
114
+ }),
115
+ edges: edges.map((edge) => ({
116
+ id: `${edge.kind}:${edge.source}->${edge.target}`,
117
+ source: edge.source,
118
+ target: edge.target,
119
+ data: {
120
+ kind: edge.kind,
121
+ count: edge.count ?? 1,
122
+ ...edge.role ? { role: edge.role } : {}
123
+ }
124
+ }))
125
+ };
126
+ }
127
+ exports.KNOWLEDGE_PAGE_SIZE = KNOWLEDGE_PAGE_SIZE;
128
+ exports.KNOWLEDGE_SCOPE_SIZE = KNOWLEDGE_SCOPE_SIZE;
129
+ exports.grantGraph = grantGraph;
130
+ exports.pageGraphEdges = pageGraphEdges;
131
+ exports.pageNeighbourIds = pageNeighbourIds;
132
+ exports.toPageFlow = toPageFlow;
133
+ exports.unplacedScopeId = unplacedScopeId;
134
+
135
+ //# sourceMappingURL=pageGraph.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageGraph.cjs.js","names":[],"sources":["../../../../src/domains/knowledge/lib/pageGraph.ts"],"sourcesContent":["/**\n * Pure page-graph logic for the schema-4 explorer: parent links plus resolved\n * mentions between loaded pages → React Flow nodes and edges. Every scope is\n * one size and every page another, so a circle's size says what it is and its\n * name always fits inside.\n */\n\nimport type { Edge, Node } from '@xyflow/react';\n\nimport type { KnowledgePageEdge, KnowledgePagePayload, KnowledgeScopeGrantPayload } from '../pageTypes';\n\n/**\n * Edges among loaded, live pages: a parent edge for every loaded parent, and\n * the given mention edges merged per source → target (counts summed). Self\n * mentions and edges to unloaded pages are dropped.\n */\nexport function pageGraphEdges(\n pages: KnowledgePagePayload[],\n mentionEdges: KnowledgePageEdge[] = [],\n): KnowledgePageEdge[] {\n const live = new Set(pages.filter(page => !page.deletedAt && !page.mergedInto).map(page => page.id));\n const edges: KnowledgePageEdge[] = [];\n for (const page of pages) {\n if (live.has(page.id) && page.parentId && page.parentId !== page.id && live.has(page.parentId)) {\n edges.push({ source: page.parentId, target: page.id, kind: 'parent' });\n }\n }\n const mentions = new Map<string, KnowledgePageEdge>();\n for (const edge of mentionEdges) {\n if (edge.kind !== 'mention' || edge.source === edge.target) continue;\n if (!live.has(edge.source) || !live.has(edge.target)) continue;\n const key = `${edge.source}\\u0000${edge.target}`;\n const existing = mentions.get(key);\n const count = edge.count ?? 1;\n if (existing) existing.count = (existing.count ?? 1) + count;\n else mentions.set(key, { source: edge.source, target: edge.target, kind: 'mention', count });\n }\n return [...edges, ...mentions.values()];\n}\n\n/** Id of the placeholder circle for a declared principal that has no scope page yet. */\nexport function unplacedScopeId(address: string): string {\n return `unplaced:${address}`;\n}\n\n/**\n * Grants as graph pages and edges. A grant from a principal with a loaded scope page draws from that\n * page; one whose principal has no scope page yet draws from a placeholder scope (one per address), so\n * a role nobody has written to still shows what it can reach. Grants to unloaded targets are dropped.\n */\nexport function grantGraph(\n pages: KnowledgePagePayload[],\n grants: readonly KnowledgeScopeGrantPayload[] = [],\n): { placeholders: KnowledgePagePayload[]; edges: KnowledgePageEdge[] } {\n const live = new Set(pages.filter(page => !page.deletedAt && !page.mergedInto).map(page => page.id));\n const placeholders = new Map<string, KnowledgePagePayload>();\n const edges = new Map<string, KnowledgePageEdge>();\n for (const grant of grants) {\n if (!live.has(grant.target)) continue;\n let source = grant.principalId && live.has(grant.principalId) ? grant.principalId : null;\n if (!source) {\n if (grant.principalId) continue;\n source = unplacedScopeId(grant.principal);\n if (!placeholders.has(source)) placeholders.set(source, placeholderScope(source, grant));\n }\n if (source === grant.target) continue;\n edges.set(`${source}\\u0000${grant.target}`, { source, target: grant.target, kind: 'grant', role: grant.role });\n }\n return { placeholders: [...placeholders.values()], edges: [...edges.values()] };\n}\n\nfunction placeholderScope(id: string, grant: KnowledgeScopeGrantPayload): KnowledgePagePayload {\n const nobody = { author: '' };\n return {\n id,\n scopeId: id,\n parentId: null,\n isScope: true,\n address: grant.principal,\n displayLabel: grant.principalLabel,\n position: '',\n name: grant.principal,\n version: 0,\n createdBy: nobody,\n updatedBy: nobody,\n createdAt: '',\n updatedAt: '',\n };\n}\n\n/** The page plus every page one edge away from it, either direction. */\nexport function pageNeighbourIds(pageId: string, edges: KnowledgePageEdge[]): Set<string> {\n const ids = new Set([pageId]);\n for (const edge of edges) {\n if (edge.source === pageId) ids.add(edge.target);\n if (edge.target === pageId) ids.add(edge.source);\n }\n return ids;\n}\n\n/** Circle diameters: big enough for a kind label and three lines of name. */\nexport const KNOWLEDGE_SCOPE_SIZE = 124;\nexport const KNOWLEDGE_PAGE_SIZE = 108;\n\nexport type PageFlowNode = Node<{\n page: KnowledgePagePayload;\n size: number;\n selected: boolean;\n}>;\n\nexport type PageFlowEdge = Edge<{ kind: KnowledgePageEdge['kind']; count: number; role?: KnowledgePageEdge['role'] }>;\n\n/** Converts pages and their edges to React Flow elements; positions are left to the layout. */\nexport function toPageFlow(\n pages: KnowledgePagePayload[],\n edges: KnowledgePageEdge[],\n selectedId?: string | null,\n): { nodes: PageFlowNode[]; edges: PageFlowEdge[] } {\n const nodes = pages\n .filter(page => !page.deletedAt && !page.mergedInto)\n .map((page): PageFlowNode => {\n return {\n id: page.id,\n type: 'page',\n position: { x: 0, y: 0 },\n data: {\n page,\n size: page.isScope ? KNOWLEDGE_SCOPE_SIZE : KNOWLEDGE_PAGE_SIZE,\n selected: page.id === selectedId,\n },\n };\n });\n return {\n nodes,\n edges: edges.map(\n (edge): PageFlowEdge => ({\n id: `${edge.kind}:${edge.source}->${edge.target}`,\n source: edge.source,\n target: edge.target,\n data: { kind: edge.kind, count: edge.count ?? 1, ...(edge.role ? { role: edge.role } : {}) },\n }),\n ),\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from '../../../src/domains/knowledge/lib/pageGraph';
@@ -0,0 +1,128 @@
1
+ // src/domains/knowledge/lib/pageGraph.ts
2
+ /**
3
+ * Edges among loaded, live pages: a parent edge for every loaded parent, and
4
+ * the given mention edges merged per source → target (counts summed). Self
5
+ * mentions and edges to unloaded pages are dropped.
6
+ */
7
+ function pageGraphEdges(pages, mentionEdges = []) {
8
+ const live = new Set(pages.filter((page) => !page.deletedAt && !page.mergedInto).map((page) => page.id));
9
+ const edges = [];
10
+ for (const page of pages) if (live.has(page.id) && page.parentId && page.parentId !== page.id && live.has(page.parentId)) edges.push({
11
+ source: page.parentId,
12
+ target: page.id,
13
+ kind: "parent"
14
+ });
15
+ const mentions = /* @__PURE__ */ new Map();
16
+ for (const edge of mentionEdges) {
17
+ if (edge.kind !== "mention" || edge.source === edge.target) continue;
18
+ if (!live.has(edge.source) || !live.has(edge.target)) continue;
19
+ const key = `${edge.source}\u0000${edge.target}`;
20
+ const existing = mentions.get(key);
21
+ const count = edge.count ?? 1;
22
+ if (existing) existing.count = (existing.count ?? 1) + count;
23
+ else mentions.set(key, {
24
+ source: edge.source,
25
+ target: edge.target,
26
+ kind: "mention",
27
+ count
28
+ });
29
+ }
30
+ return [...edges, ...mentions.values()];
31
+ }
32
+ /** Id of the placeholder circle for a declared principal that has no scope page yet. */
33
+ function unplacedScopeId(address) {
34
+ return `unplaced:${address}`;
35
+ }
36
+ /**
37
+ * Grants as graph pages and edges. A grant from a principal with a loaded scope page draws from that
38
+ * page; one whose principal has no scope page yet draws from a placeholder scope (one per address), so
39
+ * a role nobody has written to still shows what it can reach. Grants to unloaded targets are dropped.
40
+ */
41
+ function grantGraph(pages, grants = []) {
42
+ const live = new Set(pages.filter((page) => !page.deletedAt && !page.mergedInto).map((page) => page.id));
43
+ const placeholders = /* @__PURE__ */ new Map();
44
+ const edges = /* @__PURE__ */ new Map();
45
+ for (const grant of grants) {
46
+ if (!live.has(grant.target)) continue;
47
+ let source = grant.principalId && live.has(grant.principalId) ? grant.principalId : null;
48
+ if (!source) {
49
+ if (grant.principalId) continue;
50
+ source = unplacedScopeId(grant.principal);
51
+ if (!placeholders.has(source)) placeholders.set(source, placeholderScope(source, grant));
52
+ }
53
+ if (source === grant.target) continue;
54
+ edges.set(`${source}\u0000${grant.target}`, {
55
+ source,
56
+ target: grant.target,
57
+ kind: "grant",
58
+ role: grant.role
59
+ });
60
+ }
61
+ return {
62
+ placeholders: [...placeholders.values()],
63
+ edges: [...edges.values()]
64
+ };
65
+ }
66
+ function placeholderScope(id, grant) {
67
+ const nobody = { author: "" };
68
+ return {
69
+ id,
70
+ scopeId: id,
71
+ parentId: null,
72
+ isScope: true,
73
+ address: grant.principal,
74
+ displayLabel: grant.principalLabel,
75
+ position: "",
76
+ name: grant.principal,
77
+ version: 0,
78
+ createdBy: nobody,
79
+ updatedBy: nobody,
80
+ createdAt: "",
81
+ updatedAt: ""
82
+ };
83
+ }
84
+ /** The page plus every page one edge away from it, either direction. */
85
+ function pageNeighbourIds(pageId, edges) {
86
+ const ids = /* @__PURE__ */ new Set([pageId]);
87
+ for (const edge of edges) {
88
+ if (edge.source === pageId) ids.add(edge.target);
89
+ if (edge.target === pageId) ids.add(edge.source);
90
+ }
91
+ return ids;
92
+ }
93
+ /** Circle diameters: big enough for a kind label and three lines of name. */
94
+ var KNOWLEDGE_SCOPE_SIZE = 124;
95
+ var KNOWLEDGE_PAGE_SIZE = 108;
96
+ /** Converts pages and their edges to React Flow elements; positions are left to the layout. */
97
+ function toPageFlow(pages, edges, selectedId) {
98
+ return {
99
+ nodes: pages.filter((page) => !page.deletedAt && !page.mergedInto).map((page) => {
100
+ return {
101
+ id: page.id,
102
+ type: "page",
103
+ position: {
104
+ x: 0,
105
+ y: 0
106
+ },
107
+ data: {
108
+ page,
109
+ size: page.isScope ? 124 : 108,
110
+ selected: page.id === selectedId
111
+ }
112
+ };
113
+ }),
114
+ edges: edges.map((edge) => ({
115
+ id: `${edge.kind}:${edge.source}->${edge.target}`,
116
+ source: edge.source,
117
+ target: edge.target,
118
+ data: {
119
+ kind: edge.kind,
120
+ count: edge.count ?? 1,
121
+ ...edge.role ? { role: edge.role } : {}
122
+ }
123
+ }))
124
+ };
125
+ }
126
+ export { KNOWLEDGE_PAGE_SIZE, KNOWLEDGE_SCOPE_SIZE, grantGraph, pageGraphEdges, pageNeighbourIds, toPageFlow, unplacedScopeId };
127
+
128
+ //# sourceMappingURL=pageGraph.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageGraph.es.js","names":[],"sources":["../../../../src/domains/knowledge/lib/pageGraph.ts"],"sourcesContent":["/**\n * Pure page-graph logic for the schema-4 explorer: parent links plus resolved\n * mentions between loaded pages → React Flow nodes and edges. Every scope is\n * one size and every page another, so a circle's size says what it is and its\n * name always fits inside.\n */\n\nimport type { Edge, Node } from '@xyflow/react';\n\nimport type { KnowledgePageEdge, KnowledgePagePayload, KnowledgeScopeGrantPayload } from '../pageTypes';\n\n/**\n * Edges among loaded, live pages: a parent edge for every loaded parent, and\n * the given mention edges merged per source → target (counts summed). Self\n * mentions and edges to unloaded pages are dropped.\n */\nexport function pageGraphEdges(\n pages: KnowledgePagePayload[],\n mentionEdges: KnowledgePageEdge[] = [],\n): KnowledgePageEdge[] {\n const live = new Set(pages.filter(page => !page.deletedAt && !page.mergedInto).map(page => page.id));\n const edges: KnowledgePageEdge[] = [];\n for (const page of pages) {\n if (live.has(page.id) && page.parentId && page.parentId !== page.id && live.has(page.parentId)) {\n edges.push({ source: page.parentId, target: page.id, kind: 'parent' });\n }\n }\n const mentions = new Map<string, KnowledgePageEdge>();\n for (const edge of mentionEdges) {\n if (edge.kind !== 'mention' || edge.source === edge.target) continue;\n if (!live.has(edge.source) || !live.has(edge.target)) continue;\n const key = `${edge.source}\\u0000${edge.target}`;\n const existing = mentions.get(key);\n const count = edge.count ?? 1;\n if (existing) existing.count = (existing.count ?? 1) + count;\n else mentions.set(key, { source: edge.source, target: edge.target, kind: 'mention', count });\n }\n return [...edges, ...mentions.values()];\n}\n\n/** Id of the placeholder circle for a declared principal that has no scope page yet. */\nexport function unplacedScopeId(address: string): string {\n return `unplaced:${address}`;\n}\n\n/**\n * Grants as graph pages and edges. A grant from a principal with a loaded scope page draws from that\n * page; one whose principal has no scope page yet draws from a placeholder scope (one per address), so\n * a role nobody has written to still shows what it can reach. Grants to unloaded targets are dropped.\n */\nexport function grantGraph(\n pages: KnowledgePagePayload[],\n grants: readonly KnowledgeScopeGrantPayload[] = [],\n): { placeholders: KnowledgePagePayload[]; edges: KnowledgePageEdge[] } {\n const live = new Set(pages.filter(page => !page.deletedAt && !page.mergedInto).map(page => page.id));\n const placeholders = new Map<string, KnowledgePagePayload>();\n const edges = new Map<string, KnowledgePageEdge>();\n for (const grant of grants) {\n if (!live.has(grant.target)) continue;\n let source = grant.principalId && live.has(grant.principalId) ? grant.principalId : null;\n if (!source) {\n if (grant.principalId) continue;\n source = unplacedScopeId(grant.principal);\n if (!placeholders.has(source)) placeholders.set(source, placeholderScope(source, grant));\n }\n if (source === grant.target) continue;\n edges.set(`${source}\\u0000${grant.target}`, { source, target: grant.target, kind: 'grant', role: grant.role });\n }\n return { placeholders: [...placeholders.values()], edges: [...edges.values()] };\n}\n\nfunction placeholderScope(id: string, grant: KnowledgeScopeGrantPayload): KnowledgePagePayload {\n const nobody = { author: '' };\n return {\n id,\n scopeId: id,\n parentId: null,\n isScope: true,\n address: grant.principal,\n displayLabel: grant.principalLabel,\n position: '',\n name: grant.principal,\n version: 0,\n createdBy: nobody,\n updatedBy: nobody,\n createdAt: '',\n updatedAt: '',\n };\n}\n\n/** The page plus every page one edge away from it, either direction. */\nexport function pageNeighbourIds(pageId: string, edges: KnowledgePageEdge[]): Set<string> {\n const ids = new Set([pageId]);\n for (const edge of edges) {\n if (edge.source === pageId) ids.add(edge.target);\n if (edge.target === pageId) ids.add(edge.source);\n }\n return ids;\n}\n\n/** Circle diameters: big enough for a kind label and three lines of name. */\nexport const KNOWLEDGE_SCOPE_SIZE = 124;\nexport const KNOWLEDGE_PAGE_SIZE = 108;\n\nexport type PageFlowNode = Node<{\n page: KnowledgePagePayload;\n size: number;\n selected: boolean;\n}>;\n\nexport type PageFlowEdge = Edge<{ kind: KnowledgePageEdge['kind']; count: number; role?: KnowledgePageEdge['role'] }>;\n\n/** Converts pages and their edges to React Flow elements; positions are left to the layout. */\nexport function toPageFlow(\n pages: KnowledgePagePayload[],\n edges: KnowledgePageEdge[],\n selectedId?: string | null,\n): { nodes: PageFlowNode[]; edges: PageFlowEdge[] } {\n const nodes = pages\n .filter(page => !page.deletedAt && !page.mergedInto)\n .map((page): PageFlowNode => {\n return {\n id: page.id,\n type: 'page',\n position: { x: 0, y: 0 },\n data: {\n page,\n size: page.isScope ? KNOWLEDGE_SCOPE_SIZE : KNOWLEDGE_PAGE_SIZE,\n selected: page.id === selectedId,\n },\n };\n });\n return {\n nodes,\n edges: edges.map(\n (edge): PageFlowEdge => ({\n id: `${edge.kind}:${edge.source}->${edge.target}`,\n source: edge.source,\n target: edge.target,\n data: { kind: edge.kind, count: edge.count ?? 1, ...(edge.role ? { role: edge.role } : {}) },\n }),\n ),\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_domains_knowledge_lib_layout = require("./layout.cjs.js");
3
+ // src/domains/knowledge/lib/pageLayout.ts
4
+ /** Below this share of already-placed nodes the graph is laid out from scratch. */
5
+ var WARM_SHARE = .5;
6
+ function layoutKey(nodes, edges) {
7
+ const nodePart = nodes.map((node) => `${node.id}:${node.size}`).sort();
8
+ const edgePart = edges.map((edge) => `${edge.source}>${edge.target}`).sort();
9
+ return `${nodePart.join(",")}|${edgePart.join(",")}`;
10
+ }
11
+ /**
12
+ * Lays out the page graph, reusing the previous layout. The same nodes and
13
+ * edges return the previous positions as they are, so a refetch or live update
14
+ * that changes nothing in the graph never moves a node or re-runs the solve.
15
+ * When most nodes were already placed, they start where they sat, new pages
16
+ * start beside a placed neighbour, and a short run only pushes apart pages that
17
+ * overlap, so the rest stay put.
18
+ * Otherwise the layout is solved from the deterministic cold start.
19
+ */
20
+ function layoutPageGraph(previous, nodes, edges) {
21
+ const key = layoutKey(nodes, edges);
22
+ if (previous?.key === key) return previous;
23
+ const last = previous?.positions;
24
+ const known = last ? nodes.filter((node) => last.has(node.id)).length : 0;
25
+ if (!last || nodes.length === 0 || known / nodes.length < WARM_SHARE) return {
26
+ key,
27
+ positions: require_domains_knowledge_lib_layout.runLayout(nodes, edges)
28
+ };
29
+ const besideNeighbour = (id) => {
30
+ for (const edge of edges) {
31
+ const other = edge.source === id ? edge.target : edge.target === id ? edge.source : void 0;
32
+ const at = other ? last.get(other) : void 0;
33
+ if (at) return {
34
+ x: at.x + 40,
35
+ y: at.y + 40
36
+ };
37
+ }
38
+ };
39
+ return {
40
+ key,
41
+ positions: require_domains_knowledge_lib_layout.runLayout(nodes.map((node) => ({
42
+ ...node,
43
+ initial: last.get(node.id) ?? besideNeighbour(node.id)
44
+ })), edges, { ticks: 0 })
45
+ };
46
+ }
47
+ exports.layoutPageGraph = layoutPageGraph;
48
+
49
+ //# sourceMappingURL=pageLayout.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageLayout.cjs.js","names":["runLayout"],"sources":["../../../../src/domains/knowledge/lib/pageLayout.ts"],"sourcesContent":["import { runLayout } from './layout';\nimport type { LayoutEdgeInput } from './layout';\n\ntype Point = { x: number; y: number };\n\nexport interface PageLayout {\n /** Node ids, sizes and edges the positions were solved for. */\n key: string;\n positions: Map<string, Point>;\n}\n\n/** Below this share of already-placed nodes the graph is laid out from scratch. */\nconst WARM_SHARE = 0.5;\n\nfunction layoutKey(nodes: { id: string; size: number }[], edges: LayoutEdgeInput[]): string {\n const nodePart = nodes.map(node => `${node.id}:${node.size}`).sort();\n const edgePart = edges.map(edge => `${edge.source}>${edge.target}`).sort();\n return `${nodePart.join(',')}|${edgePart.join(',')}`;\n}\n\n/**\n * Lays out the page graph, reusing the previous layout. The same nodes and\n * edges return the previous positions as they are, so a refetch or live update\n * that changes nothing in the graph never moves a node or re-runs the solve.\n * When most nodes were already placed, they start where they sat, new pages\n * start beside a placed neighbour, and a short run only pushes apart pages that\n * overlap, so the rest stay put.\n * Otherwise the layout is solved from the deterministic cold start.\n */\nexport function layoutPageGraph(\n previous: PageLayout | undefined,\n nodes: { id: string; size: number }[],\n edges: LayoutEdgeInput[],\n): PageLayout {\n const key = layoutKey(nodes, edges);\n if (previous?.key === key) return previous;\n\n const last = previous?.positions;\n const known = last ? nodes.filter(node => last.has(node.id)).length : 0;\n if (!last || nodes.length === 0 || known / nodes.length < WARM_SHARE) {\n return { key, positions: runLayout(nodes, edges) };\n }\n\n const besideNeighbour = (id: string): Point | undefined => {\n for (const edge of edges) {\n const other = edge.source === id ? edge.target : edge.target === id ? edge.source : undefined;\n const at = other ? last.get(other) : undefined;\n if (at) return { x: at.x + 40, y: at.y + 40 };\n }\n return undefined;\n };\n // No force ticks: any force run drifts a settled layout. Only the overlap\n // pass runs, pushing apart the pages a new page landed on.\n const positions = runLayout(\n nodes.map(node => ({ ...node, initial: last.get(node.id) ?? besideNeighbour(node.id) })),\n edges,\n { ticks: 0 },\n );\n return { key, positions };\n}\n"],"mappings":";;;;AAYA,IAAM,aAAa;AAEnB,SAAS,UAAU,OAAuC,OAAkC;CAC1F,MAAM,WAAW,MAAM,KAAI,SAAQ,GAAG,KAAK,GAAG,GAAG,KAAK,MAAM,CAAC,CAAC,KAAK;CACnE,MAAM,WAAW,MAAM,KAAI,SAAQ,GAAG,KAAK,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,KAAK;CACzE,OAAO,GAAG,SAAS,KAAK,GAAG,EAAE,GAAG,SAAS,KAAK,GAAG;AACnD;;;;;;;;;;AAWA,SAAgB,gBACd,UACA,OACA,OACY;CACZ,MAAM,MAAM,UAAU,OAAO,KAAK;CAClC,IAAI,UAAU,QAAQ,KAAK,OAAO;CAElC,MAAM,OAAO,UAAU;CACvB,MAAM,QAAQ,OAAO,MAAM,QAAO,SAAQ,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS;CACtE,IAAI,CAAC,QAAQ,MAAM,WAAW,KAAK,QAAQ,MAAM,SAAS,YACxD,OAAO;EAAE;EAAK,WAAWA,qCAAAA,UAAU,OAAO,KAAK;CAAE;CAGnD,MAAM,mBAAmB,OAAkC;EACzD,KAAK,MAAM,QAAQ,OAAO;GACxB,MAAM,QAAQ,KAAK,WAAW,KAAK,KAAK,SAAS,KAAK,WAAW,KAAK,KAAK,SAAS,KAAA;GACpF,MAAM,KAAK,QAAQ,KAAK,IAAI,KAAK,IAAI,KAAA;GACrC,IAAI,IAAI,OAAO;IAAE,GAAG,GAAG,IAAI;IAAI,GAAG,GAAG,IAAI;GAAG;EAC9C;CAEF;CAQA,OAAO;EAAE;EAAK,WALIA,qCAAAA,UAChB,MAAM,KAAI,UAAS;GAAE,GAAG;GAAM,SAAS,KAAK,IAAI,KAAK,EAAE,KAAK,gBAAgB,KAAK,EAAE;EAAE,EAAE,GACvF,OACA,EAAE,OAAO,EAAE,CAEC;CAAU;AAC1B"}
@@ -0,0 +1 @@
1
+ export * from '../../../src/domains/knowledge/lib/pageLayout';
@@ -0,0 +1,48 @@
1
+ import { runLayout } from "./layout.es.js";
2
+ // src/domains/knowledge/lib/pageLayout.ts
3
+ /** Below this share of already-placed nodes the graph is laid out from scratch. */
4
+ var WARM_SHARE = .5;
5
+ function layoutKey(nodes, edges) {
6
+ const nodePart = nodes.map((node) => `${node.id}:${node.size}`).sort();
7
+ const edgePart = edges.map((edge) => `${edge.source}>${edge.target}`).sort();
8
+ return `${nodePart.join(",")}|${edgePart.join(",")}`;
9
+ }
10
+ /**
11
+ * Lays out the page graph, reusing the previous layout. The same nodes and
12
+ * edges return the previous positions as they are, so a refetch or live update
13
+ * that changes nothing in the graph never moves a node or re-runs the solve.
14
+ * When most nodes were already placed, they start where they sat, new pages
15
+ * start beside a placed neighbour, and a short run only pushes apart pages that
16
+ * overlap, so the rest stay put.
17
+ * Otherwise the layout is solved from the deterministic cold start.
18
+ */
19
+ function layoutPageGraph(previous, nodes, edges) {
20
+ const key = layoutKey(nodes, edges);
21
+ if (previous?.key === key) return previous;
22
+ const last = previous?.positions;
23
+ const known = last ? nodes.filter((node) => last.has(node.id)).length : 0;
24
+ if (!last || nodes.length === 0 || known / nodes.length < WARM_SHARE) return {
25
+ key,
26
+ positions: runLayout(nodes, edges)
27
+ };
28
+ const besideNeighbour = (id) => {
29
+ for (const edge of edges) {
30
+ const other = edge.source === id ? edge.target : edge.target === id ? edge.source : void 0;
31
+ const at = other ? last.get(other) : void 0;
32
+ if (at) return {
33
+ x: at.x + 40,
34
+ y: at.y + 40
35
+ };
36
+ }
37
+ };
38
+ return {
39
+ key,
40
+ positions: runLayout(nodes.map((node) => ({
41
+ ...node,
42
+ initial: last.get(node.id) ?? besideNeighbour(node.id)
43
+ })), edges, { ticks: 0 })
44
+ };
45
+ }
46
+ export { layoutPageGraph };
47
+
48
+ //# sourceMappingURL=pageLayout.es.js.map