@mastra/playground-ui 68.0.0-alpha.2 → 68.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (479) hide show
  1. package/dist/{FilterBar-CQl04O6t.cjs → FilterBar-BSP2UTjc.cjs} +2 -2
  2. package/dist/{FilterBar-CQl04O6t.cjs.map → FilterBar-BSP2UTjc.cjs.map} +1 -1
  3. package/dist/{FilterBar-BgW2dqRQ.js → FilterBar-PSQ1OwqH.js} +2 -2
  4. package/dist/{FilterBar-BgW2dqRQ.js.map → FilterBar-PSQ1OwqH.js.map} +1 -1
  5. package/dist/KnowledgePageGraph.css +55 -0
  6. package/dist/{MarkdownRenderer-2GOXQJEv.js → MarkdownRenderer-CI30RqdB.js} +19 -6
  7. package/dist/MarkdownRenderer-CI30RqdB.js.map +1 -0
  8. package/dist/{MarkdownRenderer-CB8Z_CHc.cjs → MarkdownRenderer-y65WGBhC.cjs} +19 -6
  9. package/dist/MarkdownRenderer-y65WGBhC.cjs.map +1 -0
  10. package/dist/{MetricsCard-CEB-f2sv.cjs → MetricsCard-BEwiS7Pe.cjs} +8 -8
  11. package/dist/MetricsCard-BEwiS7Pe.cjs.map +1 -0
  12. package/dist/{MetricsCard-M8awJ2B_.js → MetricsCard-ua6C6b8a.js} +10 -10
  13. package/dist/MetricsCard-ua6C6b8a.js.map +1 -0
  14. package/dist/{MetricsLineChart-BhHoduO0.js → MetricsLineChart-4SwxBbQx.js} +14 -3
  15. package/dist/MetricsLineChart-4SwxBbQx.js.map +1 -0
  16. package/dist/{MetricsLineChart-CjBm4IXu.cjs → MetricsLineChart-tZxsauau.cjs} +13 -2
  17. package/dist/MetricsLineChart-tZxsauau.cjs.map +1 -0
  18. package/dist/{MetricsStackedBarChart-BdMlKv6G.cjs → MetricsStackedBarChart-CDLE76IB.cjs} +2 -2
  19. package/dist/{MetricsStackedBarChart-BdMlKv6G.cjs.map → MetricsStackedBarChart-CDLE76IB.cjs.map} +1 -1
  20. package/dist/{MetricsStackedBarChart-BRuA6MTE.js → MetricsStackedBarChart-D2QyS4-z.js} +2 -2
  21. package/dist/{MetricsStackedBarChart-BRuA6MTE.js.map → MetricsStackedBarChart-D2QyS4-z.js.map} +1 -1
  22. package/dist/{activity-rJ1NQl_2.js → activity-C8Ql81WM.js} +2 -2
  23. package/dist/{activity-rJ1NQl_2.js.map → activity-C8Ql81WM.js.map} +1 -1
  24. package/dist/{activity-DyB5H3gF.cjs → activity-CcQZeDYi.cjs} +2 -2
  25. package/dist/{activity-DyB5H3gF.cjs.map → activity-CcQZeDYi.cjs.map} +1 -1
  26. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  27. package/dist/components/DateTimeRangePicker.es.js +1 -1
  28. package/dist/components/FilterBar.cjs.js +2 -2
  29. package/dist/components/FilterBar.es.js +2 -2
  30. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  31. package/dist/components/MarkdownRenderer.es.js +1 -1
  32. package/dist/components/MetricsCard.cjs.js +1 -1
  33. package/dist/components/MetricsCard.es.js +1 -1
  34. package/dist/components/MetricsLineChart.cjs.js +1 -1
  35. package/dist/components/MetricsLineChart.es.js +1 -1
  36. package/dist/components/MetricsStackedBarChart.cjs.js +1 -1
  37. package/dist/components/MetricsStackedBarChart.es.js +1 -1
  38. package/dist/components/SavedViews.cjs.js +1 -1
  39. package/dist/components/SavedViews.es.js +1 -1
  40. package/dist/components/ai/activity.cjs.js +1 -1
  41. package/dist/components/ai/activity.es.js +1 -1
  42. package/dist/components/ai/plan.cjs.js +1 -1
  43. package/dist/components/ai/plan.es.js +1 -1
  44. package/dist/components/ai/tool-approval.cjs.js +1 -1
  45. package/dist/components/ai/tool-approval.es.js +1 -1
  46. package/dist/components/ai/tool-call.cjs.js +2 -2
  47. package/dist/components/ai/tool-call.es.js +2 -2
  48. package/dist/{date-time-range-picker-CTt7Od0P.cjs → date-time-range-picker-CWGjoR3j.cjs} +40 -13
  49. package/dist/date-time-range-picker-CWGjoR3j.cjs.map +1 -0
  50. package/dist/{date-time-range-picker-DKh1K9Iy.js → date-time-range-picker-CdSiXwB4.js} +40 -13
  51. package/dist/date-time-range-picker-CdSiXwB4.js.map +1 -0
  52. package/dist/domains/chat/activity/activity-stretch-line.cjs.js +1 -1
  53. package/dist/domains/chat/activity/activity-stretch-line.es.js +1 -1
  54. package/dist/domains/chat/activity/components/activity-fold.cjs.js +1 -1
  55. package/dist/domains/chat/activity/components/activity-fold.es.js +1 -1
  56. package/dist/domains/chat/activity/components/activity-timed-trigger.cjs.js +1 -1
  57. package/dist/domains/chat/activity/components/activity-timed-trigger.es.js +1 -1
  58. package/dist/domains/chat/activity/components/calls-panel.cjs.js +1 -1
  59. package/dist/domains/chat/activity/components/calls-panel.es.js +1 -1
  60. package/dist/domains/chat/activity/components/stretch-content.cjs.js +1 -1
  61. package/dist/domains/chat/activity/components/stretch-content.es.js +1 -1
  62. package/dist/domains/chat/activity/components/stretch-thought.cjs.js +1 -1
  63. package/dist/domains/chat/activity/components/stretch-thought.es.js +1 -1
  64. package/dist/domains/chat/activity/model/activity-segments.cjs.js +1 -1
  65. package/dist/domains/chat/activity/model/activity-segments.es.js +1 -1
  66. package/dist/domains/chat/activity/model/activity-words.cjs.js +2 -2
  67. package/dist/domains/chat/activity/model/activity-words.es.js +2 -2
  68. package/dist/domains/chat/components/badge-wrapper.cjs.js +1 -1
  69. package/dist/domains/chat/components/badge-wrapper.es.js +1 -1
  70. package/dist/domains/chat/knowledge/knowledge-links.cjs.js +52 -6
  71. package/dist/domains/chat/knowledge/knowledge-links.cjs.js.map +1 -1
  72. package/dist/domains/chat/knowledge/knowledge-links.es.js +53 -9
  73. package/dist/domains/chat/knowledge/knowledge-links.es.js.map +1 -1
  74. package/dist/domains/chat/knowledge/pinned-knowledge-data.cjs.js +10 -3
  75. package/dist/domains/chat/knowledge/pinned-knowledge-data.cjs.js.map +1 -1
  76. package/dist/domains/chat/knowledge/pinned-knowledge-data.es.js +10 -3
  77. package/dist/domains/chat/knowledge/pinned-knowledge-data.es.js.map +1 -1
  78. package/dist/domains/chat/knowledge/pinned-knowledge.cjs.js +8 -3
  79. package/dist/domains/chat/knowledge/pinned-knowledge.cjs.js.map +1 -1
  80. package/dist/domains/chat/knowledge/pinned-knowledge.es.js +8 -3
  81. package/dist/domains/chat/knowledge/pinned-knowledge.es.js.map +1 -1
  82. package/dist/domains/chat/knowledge.cjs.js +2 -0
  83. package/dist/domains/chat/knowledge.es.js +2 -2
  84. package/dist/domains/chat/messages/message-row.cjs.js +3 -3
  85. package/dist/domains/chat/messages/message-row.es.js +3 -3
  86. package/dist/domains/chat/messages/notification-signal-notice.cjs.js +1 -1
  87. package/dist/domains/chat/messages/notification-signal-notice.es.js +1 -1
  88. package/dist/domains/chat/messages/reasoning-content.cjs.js +1 -1
  89. package/dist/domains/chat/messages/reasoning-content.es.js +1 -1
  90. package/dist/domains/chat/messages/renderers/message-text.cjs.js +35 -1
  91. package/dist/domains/chat/messages/renderers/message-text.cjs.js.map +1 -1
  92. package/dist/domains/chat/messages/renderers/message-text.es.js +36 -2
  93. package/dist/domains/chat/messages/renderers/message-text.es.js.map +1 -1
  94. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
  95. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
  96. package/dist/domains/chat/messages/signal-badge.cjs.js +1 -1
  97. package/dist/domains/chat/messages/signal-badge.es.js +1 -1
  98. package/dist/domains/chat/messages/skill-message.cjs.js +2 -2
  99. package/dist/domains/chat/messages/skill-message.es.js +2 -2
  100. package/dist/domains/chat/messages/system-reminder-badge.cjs.js +1 -1
  101. package/dist/domains/chat/messages/system-reminder-badge.es.js +1 -1
  102. package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
  103. package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
  104. package/dist/domains/chat/tools/badges/agent-badge.cjs.js +1 -1
  105. package/dist/domains/chat/tools/badges/agent-badge.es.js +1 -1
  106. package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +2 -2
  107. package/dist/domains/chat/tools/badges/file-tree-badge.es.js +2 -2
  108. package/dist/domains/chat/tools/badges/knowledge-body-range.cjs.js +80 -0
  109. package/dist/domains/chat/tools/badges/knowledge-body-range.cjs.js.map +1 -0
  110. package/dist/domains/chat/tools/badges/knowledge-body-range.d.ts +1 -0
  111. package/dist/domains/chat/tools/badges/knowledge-body-range.es.js +78 -0
  112. package/dist/domains/chat/tools/badges/knowledge-body-range.es.js.map +1 -0
  113. package/dist/domains/chat/tools/badges/knowledge-tool-badge.cjs.js +163 -13
  114. package/dist/domains/chat/tools/badges/knowledge-tool-badge.cjs.js.map +1 -1
  115. package/dist/domains/chat/tools/badges/knowledge-tool-badge.es.js +165 -15
  116. package/dist/domains/chat/tools/badges/knowledge-tool-badge.es.js.map +1 -1
  117. package/dist/domains/chat/tools/badges/mcp-input-request-badge.cjs.js +51 -0
  118. package/dist/domains/chat/tools/badges/mcp-input-request-badge.cjs.js.map +1 -0
  119. package/dist/domains/chat/tools/badges/mcp-input-request-badge.d.ts +1 -0
  120. package/dist/domains/chat/tools/badges/mcp-input-request-badge.es.js +49 -0
  121. package/dist/domains/chat/tools/badges/mcp-input-request-badge.es.js.map +1 -0
  122. package/dist/domains/chat/tools/badges/mcp-task-chip.cjs.js +7 -2
  123. package/dist/domains/chat/tools/badges/mcp-task-chip.cjs.js.map +1 -1
  124. package/dist/domains/chat/tools/badges/mcp-task-chip.es.js +7 -2
  125. package/dist/domains/chat/tools/badges/mcp-task-chip.es.js.map +1 -1
  126. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +2 -2
  127. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +2 -2
  128. package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +2 -2
  129. package/dist/domains/chat/tools/badges/observation-marker-details.es.js +2 -2
  130. package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +1 -1
  131. package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
  132. package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js +2 -2
  133. package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js +2 -2
  134. package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +1 -1
  135. package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
  136. package/dist/domains/chat/tools/badges/tool-badge.cjs.js +9 -4
  137. package/dist/domains/chat/tools/badges/tool-badge.cjs.js.map +1 -1
  138. package/dist/domains/chat/tools/badges/tool-badge.es.js +9 -4
  139. package/dist/domains/chat/tools/badges/tool-badge.es.js.map +1 -1
  140. package/dist/domains/chat/tools/badges/use-deferred-input-request.cjs.js +81 -0
  141. package/dist/domains/chat/tools/badges/use-deferred-input-request.cjs.js.map +1 -0
  142. package/dist/domains/chat/tools/badges/use-deferred-input-request.d.ts +1 -0
  143. package/dist/domains/chat/tools/badges/use-deferred-input-request.es.js +77 -0
  144. package/dist/domains/chat/tools/badges/use-deferred-input-request.es.js.map +1 -0
  145. package/dist/domains/chat/tools/badges/use-mcp-task-progress.cjs.js +11 -2
  146. package/dist/domains/chat/tools/badges/use-mcp-task-progress.cjs.js.map +1 -1
  147. package/dist/domains/chat/tools/badges/use-mcp-task-progress.es.js +11 -2
  148. package/dist/domains/chat/tools/badges/use-mcp-task-progress.es.js.map +1 -1
  149. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +1 -1
  150. package/dist/domains/chat/tools/badges/workflow-badge.es.js +1 -1
  151. package/dist/domains/chat/tools/connect-prompt-tool.cjs.js +79 -4
  152. package/dist/domains/chat/tools/connect-prompt-tool.cjs.js.map +1 -1
  153. package/dist/domains/chat/tools/connect-prompt-tool.es.js +79 -4
  154. package/dist/domains/chat/tools/connect-prompt-tool.es.js.map +1 -1
  155. package/dist/domains/chat/tools/mcp-input-request-tool.cjs.js +238 -0
  156. package/dist/domains/chat/tools/mcp-input-request-tool.cjs.js.map +1 -0
  157. package/dist/domains/chat/tools/mcp-input-request-tool.d.ts +1 -0
  158. package/dist/domains/chat/tools/mcp-input-request-tool.es.js +237 -0
  159. package/dist/domains/chat/tools/mcp-input-request-tool.es.js.map +1 -0
  160. package/dist/domains/chat/tools/mcp-input-request.cjs.js +40 -0
  161. package/dist/domains/chat/tools/mcp-input-request.cjs.js.map +1 -0
  162. package/dist/domains/chat/tools/mcp-input-request.d.ts +1 -0
  163. package/dist/domains/chat/tools/mcp-input-request.es.js +33 -0
  164. package/dist/domains/chat/tools/mcp-input-request.es.js.map +1 -0
  165. package/dist/domains/chat/tools/tool-card-kind.cjs.js +9 -4
  166. package/dist/domains/chat/tools/tool-card-kind.cjs.js.map +1 -1
  167. package/dist/domains/chat/tools/tool-card-kind.es.js +9 -5
  168. package/dist/domains/chat/tools/tool-card-kind.es.js.map +1 -1
  169. package/dist/domains/chat/tools/tool-card.cjs.js +1 -1
  170. package/dist/domains/chat/tools/tool-card.es.js +1 -1
  171. package/dist/domains/chat/tools/tool-groups.cjs.js +1 -1
  172. package/dist/domains/chat/tools/tool-groups.es.js +1 -1
  173. package/dist/domains/chat.cjs.js +5 -3
  174. package/dist/domains/chat.es.js +4 -4
  175. package/dist/domains/connect/types.cjs.js.map +1 -1
  176. package/dist/domains/connect/types.es.js.map +1 -1
  177. package/dist/domains/connect/use-user-connect.cjs.js +19 -2
  178. package/dist/domains/connect/use-user-connect.cjs.js.map +1 -1
  179. package/dist/domains/connect/use-user-connect.es.js +19 -2
  180. package/dist/domains/connect/use-user-connect.es.js.map +1 -1
  181. package/dist/domains/dashboards/components/dashboard-renderer.cjs.js +4 -3
  182. package/dist/domains/dashboards/components/dashboard-renderer.cjs.js.map +1 -1
  183. package/dist/domains/dashboards/components/dashboard-renderer.es.js +4 -3
  184. package/dist/domains/dashboards/components/dashboard-renderer.es.js.map +1 -1
  185. package/dist/domains/dashboards/components/widget-chrome.cjs.js +1 -1
  186. package/dist/domains/dashboards/components/widget-chrome.es.js +1 -1
  187. package/dist/domains/dashboards/components/widget-error.cjs.js +1 -1
  188. package/dist/domains/dashboards/components/widget-error.es.js +1 -1
  189. package/dist/domains/dashboards/hooks/use-widget-views.cjs.js +4 -3
  190. package/dist/domains/dashboards/hooks/use-widget-views.cjs.js.map +1 -1
  191. package/dist/domains/dashboards/hooks/use-widget-views.es.js +4 -3
  192. package/dist/domains/dashboards/hooks/use-widget-views.es.js.map +1 -1
  193. package/dist/domains/dashboards/kinds/scores/scores-widget.cjs.js +9 -6
  194. package/dist/domains/dashboards/kinds/scores/scores-widget.cjs.js.map +1 -1
  195. package/dist/domains/dashboards/kinds/scores/scores-widget.es.js +9 -6
  196. package/dist/domains/dashboards/kinds/scores/scores-widget.es.js.map +1 -1
  197. package/dist/domains/dashboards/kinds/table/table-tabs.cjs.js +2 -2
  198. package/dist/domains/dashboards/kinds/table/table-tabs.es.js +2 -2
  199. package/dist/domains/dashboards/kinds/table/table-widget.cjs.js +1 -1
  200. package/dist/domains/dashboards/kinds/table/table-widget.es.js +1 -1
  201. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.cjs.js +6 -5
  202. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.cjs.js.map +1 -1
  203. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.es.js +6 -5
  204. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.es.js.map +1 -1
  205. package/dist/domains/dashboards/lib/chrome.cjs.js +9 -2
  206. package/dist/domains/dashboards/lib/chrome.cjs.js.map +1 -1
  207. package/dist/domains/dashboards/lib/chrome.es.js +9 -2
  208. package/dist/domains/dashboards/lib/chrome.es.js.map +1 -1
  209. package/dist/domains/dashboards/widget-kind.cjs.js.map +1 -1
  210. package/dist/domains/dashboards/widget-kind.es.js.map +1 -1
  211. package/dist/domains/knowledge/components/KnowledgePageCard.cjs.js +48 -0
  212. package/dist/domains/knowledge/components/KnowledgePageCard.cjs.js.map +1 -0
  213. package/dist/domains/knowledge/components/KnowledgePageCard.d.ts +1 -0
  214. package/dist/domains/knowledge/components/KnowledgePageCard.es.js +47 -0
  215. package/dist/domains/knowledge/components/KnowledgePageCard.es.js.map +1 -0
  216. package/dist/domains/knowledge/components/KnowledgePageDetail.cjs.js +63 -5
  217. package/dist/domains/knowledge/components/KnowledgePageDetail.cjs.js.map +1 -1
  218. package/dist/domains/knowledge/components/KnowledgePageDetail.es.js +64 -6
  219. package/dist/domains/knowledge/components/KnowledgePageDetail.es.js.map +1 -1
  220. package/dist/domains/knowledge/components/KnowledgePageExplorer.cjs.js +485 -47
  221. package/dist/domains/knowledge/components/KnowledgePageExplorer.cjs.js.map +1 -1
  222. package/dist/domains/knowledge/components/KnowledgePageExplorer.es.js +487 -50
  223. package/dist/domains/knowledge/components/KnowledgePageExplorer.es.js.map +1 -1
  224. package/dist/domains/knowledge/components/KnowledgePageGraph.cjs.js +1051 -123
  225. package/dist/domains/knowledge/components/KnowledgePageGraph.cjs.js.map +1 -1
  226. package/dist/domains/knowledge/components/KnowledgePageGraph.es.js +1054 -126
  227. package/dist/domains/knowledge/components/KnowledgePageGraph.es.js.map +1 -1
  228. package/dist/domains/knowledge/components/KnowledgePageTree.cjs.js +75 -3
  229. package/dist/domains/knowledge/components/KnowledgePageTree.cjs.js.map +1 -1
  230. package/dist/domains/knowledge/components/KnowledgePageTree.es.js +76 -4
  231. package/dist/domains/knowledge/components/KnowledgePageTree.es.js.map +1 -1
  232. package/dist/domains/knowledge/lib/circleText.cjs.js +9 -0
  233. package/dist/domains/knowledge/lib/circleText.cjs.js.map +1 -0
  234. package/dist/domains/knowledge/lib/circleText.d.ts +1 -0
  235. package/dist/domains/knowledge/lib/circleText.es.js +8 -0
  236. package/dist/domains/knowledge/lib/circleText.es.js.map +1 -0
  237. package/dist/domains/knowledge/lib/fitViewport.cjs.js +82 -0
  238. package/dist/domains/knowledge/lib/fitViewport.cjs.js.map +1 -0
  239. package/dist/domains/knowledge/lib/fitViewport.d.ts +1 -0
  240. package/dist/domains/knowledge/lib/fitViewport.es.js +73 -0
  241. package/dist/domains/knowledge/lib/fitViewport.es.js.map +1 -0
  242. package/dist/domains/knowledge/lib/graphShape.cjs.js +524 -0
  243. package/dist/domains/knowledge/lib/graphShape.cjs.js.map +1 -0
  244. package/dist/domains/knowledge/lib/graphShape.d.ts +1 -0
  245. package/dist/domains/knowledge/lib/graphShape.es.js +499 -0
  246. package/dist/domains/knowledge/lib/graphShape.es.js.map +1 -0
  247. package/dist/domains/knowledge/lib/linkCountsText.cjs.js +11 -0
  248. package/dist/domains/knowledge/lib/linkCountsText.cjs.js.map +1 -0
  249. package/dist/domains/knowledge/lib/linkCountsText.d.ts +1 -0
  250. package/dist/domains/knowledge/lib/linkCountsText.es.js +10 -0
  251. package/dist/domains/knowledge/lib/linkCountsText.es.js.map +1 -0
  252. package/dist/domains/knowledge/lib/pageAddress.cjs.js +29 -0
  253. package/dist/domains/knowledge/lib/pageAddress.cjs.js.map +1 -0
  254. package/dist/domains/knowledge/lib/pageAddress.d.ts +1 -0
  255. package/dist/domains/knowledge/lib/pageAddress.es.js +27 -0
  256. package/dist/domains/knowledge/lib/pageAddress.es.js.map +1 -0
  257. package/dist/domains/knowledge/lib/pageGraph.cjs.js +11 -11
  258. package/dist/domains/knowledge/lib/pageGraph.cjs.js.map +1 -1
  259. package/dist/domains/knowledge/lib/pageGraph.es.js +11 -11
  260. package/dist/domains/knowledge/lib/pageGraph.es.js.map +1 -1
  261. package/dist/domains/knowledge/lib/pageRefs.cjs.js +69 -0
  262. package/dist/domains/knowledge/lib/pageRefs.cjs.js.map +1 -0
  263. package/dist/domains/knowledge/lib/pageRefs.d.ts +1 -0
  264. package/dist/domains/knowledge/lib/pageRefs.es.js +66 -0
  265. package/dist/domains/knowledge/lib/pageRefs.es.js.map +1 -0
  266. package/dist/domains/knowledge/lib/pageTree.cjs.js +5 -0
  267. package/dist/domains/knowledge/lib/pageTree.cjs.js.map +1 -1
  268. package/dist/domains/knowledge/lib/pageTree.es.js +5 -1
  269. package/dist/domains/knowledge/lib/pageTree.es.js.map +1 -1
  270. package/dist/domains/knowledge/lib/remarkKnowledgeLinks.cjs.js +82 -0
  271. package/dist/domains/knowledge/lib/remarkKnowledgeLinks.cjs.js.map +1 -0
  272. package/dist/domains/knowledge/lib/remarkKnowledgeLinks.d.ts +1 -0
  273. package/dist/domains/knowledge/lib/remarkKnowledgeLinks.es.js +78 -0
  274. package/dist/domains/knowledge/lib/remarkKnowledgeLinks.es.js.map +1 -0
  275. package/dist/domains/knowledge/lib/tooltipSide.cjs.js +77 -0
  276. package/dist/domains/knowledge/lib/tooltipSide.cjs.js.map +1 -0
  277. package/dist/domains/knowledge/lib/tooltipSide.d.ts +1 -0
  278. package/dist/domains/knowledge/lib/tooltipSide.es.js +75 -0
  279. package/dist/domains/knowledge/lib/tooltipSide.es.js.map +1 -0
  280. package/dist/domains/knowledge/lib/useLeavingNodes.cjs.js +65 -0
  281. package/dist/domains/knowledge/lib/useLeavingNodes.cjs.js.map +1 -0
  282. package/dist/domains/knowledge/lib/useLeavingNodes.d.ts +1 -0
  283. package/dist/domains/knowledge/lib/useLeavingNodes.es.js +62 -0
  284. package/dist/domains/knowledge/lib/useLeavingNodes.es.js.map +1 -0
  285. package/dist/domains/knowledge/lib/useStableWhile.cjs.js +15 -0
  286. package/dist/domains/knowledge/lib/useStableWhile.cjs.js.map +1 -0
  287. package/dist/domains/knowledge/lib/useStableWhile.d.ts +1 -0
  288. package/dist/domains/knowledge/lib/useStableWhile.es.js +14 -0
  289. package/dist/domains/knowledge/lib/useStableWhile.es.js.map +1 -0
  290. package/dist/domains/metrics/components/agent-runs-card.cjs.js +3 -3
  291. package/dist/domains/metrics/components/agent-runs-card.es.js +3 -3
  292. package/dist/domains/metrics/components/breakdown/breakdown-tab-body.cjs.js +1 -1
  293. package/dist/domains/metrics/components/breakdown/breakdown-tab-body.es.js +1 -1
  294. package/dist/domains/metrics/components/breakdown-card.cjs.js +1 -1
  295. package/dist/domains/metrics/components/breakdown-card.es.js +1 -1
  296. package/dist/domains/metrics/components/chart-area.cjs.js +1 -1
  297. package/dist/domains/metrics/components/chart-area.es.js +1 -1
  298. package/dist/domains/metrics/components/chart-card-error.cjs.js +1 -1
  299. package/dist/domains/metrics/components/chart-card-error.es.js +1 -1
  300. package/dist/domains/metrics/components/chart-card.cjs.js +1 -1
  301. package/dist/domains/metrics/components/chart-card.es.js +1 -1
  302. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  303. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  304. package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.cjs.js +3 -2
  305. package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.cjs.js.map +1 -1
  306. package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.es.js +3 -2
  307. package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.es.js.map +1 -1
  308. package/dist/domains/metrics/components/failure-rate-card.cjs.js +3 -2
  309. package/dist/domains/metrics/components/failure-rate-card.cjs.js.map +1 -1
  310. package/dist/domains/metrics/components/failure-rate-card.es.js +3 -2
  311. package/dist/domains/metrics/components/failure-rate-card.es.js.map +1 -1
  312. package/dist/domains/metrics/components/latency-card.cjs.js +3 -2
  313. package/dist/domains/metrics/components/latency-card.cjs.js.map +1 -1
  314. package/dist/domains/metrics/components/latency-card.es.js +3 -2
  315. package/dist/domains/metrics/components/latency-card.es.js.map +1 -1
  316. package/dist/domains/metrics/components/metrics-time-range-chip.cjs.js +1 -1
  317. package/dist/domains/metrics/components/metrics-time-range-chip.es.js +1 -1
  318. package/dist/domains/metrics/components/scores-card.cjs.js +2 -1
  319. package/dist/domains/metrics/components/scores-card.cjs.js.map +1 -1
  320. package/dist/domains/metrics/components/scores-card.es.js +2 -1
  321. package/dist/domains/metrics/components/scores-card.es.js.map +1 -1
  322. package/dist/domains/metrics/components/token-usage-card.cjs.js +3 -3
  323. package/dist/domains/metrics/components/token-usage-card.es.js +3 -3
  324. package/dist/domains/metrics/components/trace-aggregate-card.cjs.js +1 -1
  325. package/dist/domains/metrics/components/trace-aggregate-card.es.js +1 -1
  326. package/dist/domains/observability/components/observability-histogram.cjs.js +1 -1
  327. package/dist/domains/observability/components/observability-histogram.es.js +1 -1
  328. package/dist/domains/scores/components/trace-scores-list.cjs.js +2 -2
  329. package/dist/domains/scores/components/trace-scores-list.es.js +2 -2
  330. package/dist/domains/skills/skill-simple-form.cjs.js +1 -1
  331. package/dist/domains/skills/skill-simple-form.es.js +1 -1
  332. package/dist/domains/spans/components/spans-filter-bar.cjs.js +2 -2
  333. package/dist/domains/spans/components/spans-filter-bar.es.js +2 -2
  334. package/dist/domains/spans/hooks/use-spans-filter-bar.cjs.js +1 -1
  335. package/dist/domains/spans/hooks/use-spans-filter-bar.es.js +1 -1
  336. package/dist/domains/threads/components/threads-filter-bar.cjs.js +2 -2
  337. package/dist/domains/threads/components/threads-filter-bar.es.js +2 -2
  338. package/dist/domains/threads/hooks/use-threads-filter-bar.cjs.js +1 -1
  339. package/dist/domains/threads/hooks/use-threads-filter-bar.es.js +1 -1
  340. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +1 -1
  341. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +1 -1
  342. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
  343. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
  344. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +2 -2
  345. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +2 -2
  346. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +2 -2
  347. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +2 -2
  348. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +1 -1
  349. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +1 -1
  350. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
  351. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
  352. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +1 -1
  353. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +1 -1
  354. package/dist/domains/traces/components/span-payload/span-processor-mutations.cjs.js +1 -1
  355. package/dist/domains/traces/components/span-payload/span-processor-mutations.es.js +1 -1
  356. package/dist/domains/traces/components/span-payload/span-tools-section.cjs.js +1 -1
  357. package/dist/domains/traces/components/span-payload/span-tools-section.es.js +1 -1
  358. package/dist/domains/traces/components/span-timeline-row.cjs.js +1 -1
  359. package/dist/domains/traces/components/span-timeline-row.es.js +1 -1
  360. package/dist/domains/traces/components/span-timing-hover-card.cjs.js +1 -1
  361. package/dist/domains/traces/components/span-timing-hover-card.es.js +1 -1
  362. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +8 -2
  363. package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
  364. package/dist/domains/traces/components/trace-data-panel-view.es.js +8 -2
  365. package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
  366. package/dist/domains/traces/components/trace-error-cell.cjs.js +1 -1
  367. package/dist/domains/traces/components/trace-error-cell.es.js +1 -1
  368. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.cjs.js +2 -2
  369. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.es.js +2 -2
  370. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.cjs.js +1 -1
  371. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.es.js +1 -1
  372. package/dist/domains/workflows/runs/workflow-run-list.cjs.js +1 -1
  373. package/dist/domains/workflows/runs/workflow-run-list.es.js +1 -1
  374. package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js +2 -2
  375. package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js +2 -2
  376. package/dist/domains/workflows/workflow/use-workflow-trigger.cjs.js +3 -3
  377. package/dist/domains/workflows/workflow/use-workflow-trigger.es.js +3 -3
  378. package/dist/domains/workflows/workflow/workflow-input-data.cjs.js +1 -1
  379. package/dist/domains/workflows/workflow/workflow-input-data.es.js +1 -1
  380. package/dist/domains/workflows/workflow/workflow-suspended-steps.cjs.js +2 -2
  381. package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +2 -2
  382. package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +2 -2
  383. package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +2 -2
  384. package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +1 -1
  385. package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +1 -1
  386. package/dist/domains/workspace/components/workspace-markdown-preview.cjs.js +1 -1
  387. package/dist/domains/workspace/components/workspace-markdown-preview.es.js +1 -1
  388. package/dist/{filter-bar-time-range-mg9JeYue.js → filter-bar-time-range-qlV8p7hp.js} +2 -2
  389. package/dist/{filter-bar-time-range-mg9JeYue.js.map → filter-bar-time-range-qlV8p7hp.js.map} +1 -1
  390. package/dist/{filter-bar-time-range-BA-pXMlo.cjs → filter-bar-time-range-zdM024JD.cjs} +2 -2
  391. package/dist/{filter-bar-time-range-BA-pXMlo.cjs.map → filter-bar-time-range-zdM024JD.cjs.map} +1 -1
  392. package/dist/lib/form/dynamic-form.cjs.js +2 -2
  393. package/dist/lib/form/dynamic-form.es.js +2 -2
  394. package/dist/lib/form/json-draft.cjs.js +1 -1
  395. package/dist/lib/form/json-draft.es.js +1 -1
  396. package/dist/lib/form/zod-provider.cjs.js +1 -1
  397. package/dist/lib/form/zod-provider.es.js +1 -1
  398. package/dist/{span-payload-primitives-B3RdahsC.js → span-payload-primitives-CKKIAVPJ.js} +4 -4
  399. package/dist/{span-payload-primitives-B3RdahsC.js.map → span-payload-primitives-CKKIAVPJ.js.map} +1 -1
  400. package/dist/{span-payload-primitives-_2d-pAOD.cjs → span-payload-primitives-D4tHWN2W.cjs} +4 -4
  401. package/dist/{span-payload-primitives-_2d-pAOD.cjs.map → span-payload-primitives-D4tHWN2W.cjs.map} +1 -1
  402. package/dist/src/domains/chat/knowledge/knowledge-links.d.ts +32 -4
  403. package/dist/src/domains/chat/knowledge/pinned-knowledge-data.d.ts +2 -0
  404. package/dist/src/domains/chat/tools/badges/knowledge-body-range.d.ts +12 -0
  405. package/dist/src/domains/chat/tools/badges/knowledge-tool-badge.d.ts +5 -2
  406. package/dist/src/domains/chat/tools/badges/mcp-input-request-badge.d.ts +18 -0
  407. package/dist/src/domains/chat/tools/badges/tool-badge.d.ts +4 -1
  408. package/dist/src/domains/chat/tools/badges/use-deferred-input-request.d.ts +44 -0
  409. package/dist/src/domains/chat/tools/badges/use-mcp-task-progress.d.ts +6 -1
  410. package/dist/src/domains/chat/tools/connect-prompt-tool.d.ts +10 -1
  411. package/dist/src/domains/chat/tools/mcp-input-request-tool.d.ts +18 -0
  412. package/dist/src/domains/chat/tools/mcp-input-request.d.ts +40 -0
  413. package/dist/src/domains/chat/tools/tool-card-kind.d.ts +4 -2
  414. package/dist/src/domains/chat/tools/tool-card.d.ts +1 -1
  415. package/dist/src/domains/connect/types.d.ts +16 -0
  416. package/dist/src/domains/dashboards/components/dashboard-renderer.d.ts +4 -2
  417. package/dist/src/domains/dashboards/hooks/use-widget-views.d.ts +4 -3
  418. package/dist/src/domains/dashboards/index.d.ts +1 -1
  419. package/dist/src/domains/dashboards/kinds/scores/scores-widget.d.ts +1 -1
  420. package/dist/src/domains/dashboards/lib/chrome.d.ts +6 -4
  421. package/dist/src/domains/dashboards/widget-kind.d.ts +12 -0
  422. package/dist/src/domains/knowledge/components/KnowledgePageCard.d.ts +23 -0
  423. package/dist/src/domains/knowledge/components/KnowledgePageExplorer.d.ts +29 -0
  424. package/dist/src/domains/knowledge/components/KnowledgePageGraph.d.ts +27 -1
  425. package/dist/src/domains/knowledge/components/KnowledgePageTree.d.ts +2 -1
  426. package/dist/src/domains/knowledge/lib/circleText.d.ts +2 -0
  427. package/dist/src/domains/knowledge/lib/fitViewport.d.ts +67 -0
  428. package/dist/src/domains/knowledge/lib/graphShape.d.ts +131 -0
  429. package/dist/src/domains/knowledge/lib/linkCountsText.d.ts +5 -0
  430. package/dist/src/domains/knowledge/lib/pageAddress.d.ts +5 -0
  431. package/dist/src/domains/knowledge/lib/pageGraph.d.ts +4 -4
  432. package/dist/src/domains/knowledge/lib/pageRefs.d.ts +15 -0
  433. package/dist/src/domains/knowledge/lib/pageTree.d.ts +2 -0
  434. package/dist/src/domains/knowledge/lib/remarkKnowledgeLinks.d.ts +13 -0
  435. package/dist/src/domains/knowledge/lib/tooltipSide.d.ts +40 -0
  436. package/dist/src/domains/knowledge/lib/useLeavingNodes.d.ts +14 -0
  437. package/dist/src/domains/knowledge/lib/useStableWhile.d.ts +5 -0
  438. package/dist/src/domains/knowledge/pageTypes.d.ts +6 -1
  439. package/dist/src/ds/components/DateTimeRangePicker/date-time-range-picker.d.ts +12 -1
  440. package/dist/src/ds/components/MarkdownRenderer/markdown-renderer.d.ts +8 -1
  441. package/dist/src/ds/components/MetricsCard/metrics-card-headline.d.ts +1 -1
  442. package/dist/src/ds/components/MetricsLineChart/metrics-line-chart.d.ts +8 -0
  443. package/dist/src/ds/components/ai/tool-call/tool-phrases.d.ts +6 -0
  444. package/dist/style.css +73 -2
  445. package/dist/{tool-approval-1qiB4hhG.cjs → tool-approval-CJvPDL7D.cjs} +4 -4
  446. package/dist/{tool-approval-1qiB4hhG.cjs.map → tool-approval-CJvPDL7D.cjs.map} +1 -1
  447. package/dist/{tool-approval-B6MFcaKV.js → tool-approval-DyN11vFA.js} +4 -4
  448. package/dist/{tool-approval-B6MFcaKV.js.map → tool-approval-DyN11vFA.js.map} +1 -1
  449. package/dist/{tool-call-Bu66PkD-.cjs → tool-call-DBn14X-3.cjs} +9 -3
  450. package/dist/{tool-call-Bu66PkD-.cjs.map → tool-call-DBn14X-3.cjs.map} +1 -1
  451. package/dist/{tool-call-Ch9-jjXU.js → tool-call-Dsj43lvJ.js} +9 -3
  452. package/dist/{tool-call-Ch9-jjXU.js.map → tool-call-Dsj43lvJ.js.map} +1 -1
  453. package/dist/{tool-card-DrqPZfPQ.cjs → tool-card-BOLXeKIp.cjs} +167 -126
  454. package/dist/tool-card-BOLXeKIp.cjs.map +1 -0
  455. package/dist/{tool-card-sO6P2Qj4.js → tool-card-HZ5bm7ue.js} +168 -127
  456. package/dist/tool-card-HZ5bm7ue.js.map +1 -0
  457. package/dist/{tool-presentation-DvCsb_kz.js → tool-presentation-CvibOP1J.js} +6 -1
  458. package/dist/tool-presentation-CvibOP1J.js.map +1 -0
  459. package/dist/{tool-presentation-CQlDEwgS.cjs → tool-presentation-D6nzVruN.cjs} +6 -1
  460. package/dist/tool-presentation-D6nzVruN.cjs.map +1 -0
  461. package/package.json +11 -11
  462. package/dist/MarkdownRenderer-2GOXQJEv.js.map +0 -1
  463. package/dist/MarkdownRenderer-CB8Z_CHc.cjs.map +0 -1
  464. package/dist/MetricsCard-CEB-f2sv.cjs.map +0 -1
  465. package/dist/MetricsCard-M8awJ2B_.js.map +0 -1
  466. package/dist/MetricsLineChart-BhHoduO0.js.map +0 -1
  467. package/dist/MetricsLineChart-CjBm4IXu.cjs.map +0 -1
  468. package/dist/date-time-range-picker-CTt7Od0P.cjs.map +0 -1
  469. package/dist/date-time-range-picker-DKh1K9Iy.js.map +0 -1
  470. package/dist/domains/knowledge/lib/pageLayout.cjs.js +0 -49
  471. package/dist/domains/knowledge/lib/pageLayout.cjs.js.map +0 -1
  472. package/dist/domains/knowledge/lib/pageLayout.d.ts +0 -1
  473. package/dist/domains/knowledge/lib/pageLayout.es.js +0 -48
  474. package/dist/domains/knowledge/lib/pageLayout.es.js.map +0 -1
  475. package/dist/src/domains/knowledge/lib/pageLayout.d.ts +0 -24
  476. package/dist/tool-card-DrqPZfPQ.cjs.map +0 -1
  477. package/dist/tool-card-sO6P2Qj4.js.map +0 -1
  478. package/dist/tool-presentation-CQlDEwgS.cjs.map +0 -1
  479. package/dist/tool-presentation-DvCsb_kz.js.map +0 -1
@@ -2,16 +2,139 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_Txt = require("../../../Txt-BnoSqxKE.cjs");
3
3
  const require_EmptyState = require("../../../EmptyState-DxDHlYqD.cjs");
4
4
  const require_hooks_use_is_mobile = require("../../../hooks/use-is-mobile.cjs.js");
5
+ const require_domains_knowledge_lib_pageRefs = require("../lib/pageRefs.cjs.js");
5
6
  const require_domains_knowledge_components_KnowledgePageDetail = require("./KnowledgePageDetail.cjs.js");
7
+ const require_domains_knowledge_lib_graphShape = require("../lib/graphShape.cjs.js");
6
8
  const require_domains_knowledge_lib_popupPlacement = require("../lib/popupPlacement.cjs.js");
9
+ const require_domains_knowledge_lib_useStableWhile = require("../lib/useStableWhile.cjs.js");
7
10
  const require_domains_knowledge_components_KnowledgePageGraph = require("./KnowledgePageGraph.cjs.js");
8
11
  const require_domains_knowledge_components_KnowledgePageTree = require("./KnowledgePageTree.cjs.js");
9
12
  let react = require("react");
10
13
  let react_jsx_runtime = require("react/jsx-runtime");
11
14
  let lucide_react = require("lucide-react");
12
15
  // src/domains/knowledge/components/KnowledgePageExplorer.tsx
16
+ /** Page ids are ULIDs; a bare `[[id]]` is askable, a bare `[[Name]]` is not. */
17
+ var PAGE_ID_SHAPE = /^[0-9A-Z]{26}$/;
18
+ var JUST_CREATED_MS = 6e4;
19
+ var isJustCreated = (page) => Date.now() - Date.parse(page.createdAt) < JUST_CREATED_MS;
13
20
  var MIN_SEARCH_LENGTH = 2;
21
+ /** Links of the selected page drawn at most in each direction; the rest are counted. */
22
+ var FOCUS_LINK_CAP = 20;
23
+ /** Keys fetched per direction: a page reached by a note and by the body is two keys but one link, so this is twice the cap. */
24
+ var FOCUS_LINK_FETCH_CAP = 40;
25
+ function edgeKey(edge) {
26
+ return `${edge.kind}\u0000${edge.source}\u0000${edge.target}`;
27
+ }
28
+ /**
29
+ * The links to draw, and per page how many of its links (into it, out of it) go undrawn. With all links
30
+ * on, every link between drawn pages shows. Otherwise only the selected page's, up to
31
+ * {@link FOCUS_LINK_CAP} each way; with nothing selected, none.
32
+ */
33
+ function visibleLinks(known, drawn, selectedId, all) {
34
+ const unique = /* @__PURE__ */ new Map();
35
+ for (const edge of known) if (edge.source !== edge.target && !unique.has(edgeKey(edge))) unique.set(edgeKey(edge), edge);
36
+ const pairs = /* @__PURE__ */ new Map();
37
+ for (const edge of unique.values()) pairs.set(`${edge.source}\u0000${edge.target}`, edge);
38
+ const shown = /* @__PURE__ */ new Set();
39
+ const more = {
40
+ in: 0,
41
+ out: 0
42
+ };
43
+ if (all) {
44
+ for (const [key, edge] of unique) if (drawn.has(edge.source) && drawn.has(edge.target)) shown.add(key);
45
+ } else if (selectedId) {
46
+ const admitted = /* @__PURE__ */ new Set();
47
+ const over = /* @__PURE__ */ new Set();
48
+ let ins = 0;
49
+ let outs = 0;
50
+ for (const [key, edge] of unique) {
51
+ if (!drawn.has(edge.source) || !drawn.has(edge.target)) continue;
52
+ const side = edge.source === selectedId ? "out" : edge.target === selectedId ? "in" : null;
53
+ if (!side) continue;
54
+ const pair = `${edge.source}\u0000${edge.target}`;
55
+ if (!admitted.has(pair) && !over.has(pair)) {
56
+ if ((side === "out" ? outs : ins) >= 20) {
57
+ over.add(pair);
58
+ more[side]++;
59
+ } else {
60
+ admitted.add(pair);
61
+ if (side === "out") outs++;
62
+ else ins++;
63
+ }
64
+ }
65
+ if (admitted.has(pair)) shown.add(key);
66
+ }
67
+ }
68
+ const drawnPairs = new Set([...shown].map((key) => {
69
+ const edge = unique.get(key);
70
+ return `${edge.source}\u0000${edge.target}`;
71
+ }));
72
+ const hidden = /* @__PURE__ */ new Map();
73
+ const bump = (id, side) => {
74
+ if (!drawn.has(id)) return;
75
+ const counts = hidden.get(id) ?? {
76
+ in: 0,
77
+ out: 0
78
+ };
79
+ counts[side]++;
80
+ hidden.set(id, counts);
81
+ };
82
+ for (const [pair, edge] of pairs) {
83
+ if (drawnPairs.has(pair)) continue;
84
+ bump(edge.source, "out");
85
+ bump(edge.target, "in");
86
+ }
87
+ return {
88
+ edges: [...unique.values()].filter((edge) => shown.has(edgeKey(edge))),
89
+ hidden,
90
+ more
91
+ };
92
+ }
93
+ /** The round buttons floating over the graph: muted when off or idle, a solid fill when pressed. */
94
+ var FLOAT_BUTTON = "flex size-9 cursor-pointer items-center justify-center rounded-full border border-border bg-card text-muted-foreground shadow-overlay transition-colors hover:bg-fill-subtle hover:text-foreground aria-pressed:border-transparent aria-pressed:bg-fill-inverse aria-pressed:text-background aria-pressed:hover:bg-fill-inverse disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-card";
14
95
  var noTreeLevels = () => [];
96
+ var noKeys = [];
97
+ var noLinkedPages = () => [];
98
+ var noLinkQuery = () => ({
99
+ isPending: false,
100
+ isError: false,
101
+ error: null
102
+ });
103
+ /** Longest a pointer rests on a page before its links are fetched, so sweeping across the graph fetches none. */
104
+ var HOVER_FETCH_DELAY_MS = 150;
105
+ /** Per page, the links into and out of it that none of `shown` draws, given the exact totals. */
106
+ function undrawnLinks(exact, shown) {
107
+ const drawn = /* @__PURE__ */ new Map();
108
+ const pairs = /* @__PURE__ */ new Set();
109
+ for (const edge of shown) {
110
+ if (edge.kind === "parent" || pairs.has(`${edge.source}\u0000${edge.target}`)) continue;
111
+ pairs.add(`${edge.source}\u0000${edge.target}`);
112
+ const out = drawn.get(edge.source) ?? {
113
+ in: 0,
114
+ out: 0
115
+ };
116
+ out.out++;
117
+ drawn.set(edge.source, out);
118
+ const into = drawn.get(edge.target) ?? {
119
+ in: 0,
120
+ out: 0
121
+ };
122
+ into.in++;
123
+ drawn.set(edge.target, into);
124
+ }
125
+ const hidden = /* @__PURE__ */ new Map();
126
+ for (const [id, total] of exact) {
127
+ const seen = drawn.get(id) ?? {
128
+ in: 0,
129
+ out: 0
130
+ };
131
+ hidden.set(id, {
132
+ in: Math.max(0, total.in - seen.in),
133
+ out: Math.max(0, total.out - seen.out)
134
+ });
135
+ }
136
+ return hidden;
137
+ }
15
138
  var noActivity = () => ({
16
139
  isPending: false,
17
140
  isError: false,
@@ -278,11 +401,15 @@ function SearchBox({ source, onSelect }) {
278
401
  }) : null]
279
402
  });
280
403
  }
404
+ function sameLevels(a, b) {
405
+ const sameSet = (x, y) => x.size === y.size && [...x].every((id) => y.has(id));
406
+ return a.pages.length === b.pages.length && a.pages.every((page, index) => page === b.pages[index]) && sameSet(a.loaded, b.loaded) && sameSet(a.failed, b.failed) && a.nextCursor.size === b.nextCursor.size && [...a.nextCursor].every(([id, cursor]) => b.nextCursor.get(id) === cursor);
407
+ }
281
408
  /**
282
409
  * The tree loaded a level at a time through `useTreeLevels`: the root scopes, then each level as it is
283
410
  * opened, plus the path to the selected page. Unloaded pages keep a chevron until opened.
284
411
  */
285
- function useLazyTree(source, graph, selected) {
412
+ function useLazyTree(source, graph, selected, graphOpened) {
286
413
  const [expanded, setExpanded] = (0, react.useState)(() => /* @__PURE__ */ new Set());
287
414
  const [more, setMore] = (0, react.useState)(() => /* @__PURE__ */ new Map());
288
415
  const requests = (0, react.useMemo)(() => {
@@ -294,17 +421,25 @@ function useLazyTree(source, graph, selected) {
294
421
  cursor
295
422
  });
296
423
  }
424
+ for (const id of graphOpened) if (!expanded.has(id)) list.push({ parentId: id });
297
425
  return list;
298
- }, [expanded, more]);
426
+ }, [
427
+ expanded,
428
+ more,
429
+ graphOpened
430
+ ]);
299
431
  const levels = (source.useTreeLevels ?? noTreeLevels)(requests);
300
- const { pages, loaded, nextCursor } = (0, react.useMemo)(() => {
432
+ const built = (0, react.useMemo)(() => {
433
+ const failedIds = /* @__PURE__ */ new Set();
301
434
  const byId = /* @__PURE__ */ new Map();
302
435
  const loadedIds = /* @__PURE__ */ new Set();
303
436
  const next = /* @__PURE__ */ new Map();
304
437
  levels.forEach((level, index) => {
305
438
  const request = requests[index];
306
- if (!request || !level.data) return;
439
+ if (!request) return;
307
440
  const key = request.parentId ?? "";
441
+ if (level.isError) failedIds.add(key);
442
+ if (!level.data) return;
308
443
  loadedIds.add(key);
309
444
  for (const page of level.data.pages) byId.set(page.id, page);
310
445
  if (level.data.nextCursor) next.set(key, level.data.nextCursor);
@@ -314,6 +449,7 @@ function useLazyTree(source, graph, selected) {
314
449
  return {
315
450
  pages: [...byId.values()],
316
451
  loaded: loadedIds,
452
+ failed: failedIds,
317
453
  nextCursor: next
318
454
  };
319
455
  }, [
@@ -321,10 +457,13 @@ function useLazyTree(source, graph, selected) {
321
457
  requests,
322
458
  selected
323
459
  ]);
460
+ const { pages, loaded, failed, nextCursor } = require_domains_knowledge_lib_useStableWhile.useStableWhile(built, sameLevels);
324
461
  const graphParents = (0, react.useMemo)(() => graph.truncated ? null : new Set(graph.pages.map((page) => page.parentId).filter((id) => id !== null)), [graph]);
325
462
  return {
326
463
  pages,
327
- mayHaveChildren: (0, react.useCallback)((page) => !loaded.has(page.id) && (graphParents ? graphParents.has(page.id) : true), [loaded, graphParents]),
464
+ loaded,
465
+ failed,
466
+ mayHaveChildren: (0, react.useCallback)((page) => !loaded.has(page.id) && (page.childCountCapped || (page.childCount !== void 0 ? page.childCount > 0 : !isJustCreated(page) && (graphParents ? graphParents.has(page.id) : true))), [loaded, graphParents]),
328
467
  loadMore: (0, react.useMemo)(() => {
329
468
  const map = /* @__PURE__ */ new Map();
330
469
  for (const [parentId, cursor] of nextCursor) map.set(parentId, () => setMore((current) => new Map(current).set(parentId, [...current.get(parentId) ?? [], cursor])));
@@ -342,37 +481,268 @@ function useLazyTree(source, graph, selected) {
342
481
  * page instead.
343
482
  */
344
483
  function KnowledgePageExplorer({ graph, source, selectedPageId, onSelect, view, onViewChange }) {
345
- const pagesById = (0, react.useMemo)(() => new Map(graph.pages.map((page) => [page.id, page])), [graph.pages]);
484
+ const selected = source.usePage(selectedPageId);
485
+ const lazyMode = !!source.useTreeLevels;
486
+ const [graphOpened, setGraphOpened] = (0, react.useState)([]);
487
+ const [previewed, setPreviewed] = (0, react.useState)([]);
488
+ const [openGroups, setOpenGroups] = (0, react.useState)(() => /* @__PURE__ */ new Set());
489
+ const [revealed, setRevealed] = (0, react.useState)(() => /* @__PURE__ */ new Map());
490
+ const [allLinks, setAllLinks] = (0, react.useState)(false);
491
+ const [dotCounts, setDotCounts] = (0, react.useState)(true);
492
+ const lazy = useLazyTree(source, graph, selected.data, graphOpened);
493
+ const drawnGraph = (0, react.useMemo)(() => lazyMode ? require_domains_knowledge_lib_graphShape.lazyGraph({
494
+ pages: [...new Map([...graph.pages, ...lazy.pages].map((page) => [page.id, page])).values()],
495
+ loadedParents: lazy.loaded,
496
+ rootKey: "",
497
+ focusId: selectedPageId,
498
+ openGroups,
499
+ revealed
500
+ }) : {
501
+ pages: graph.pages,
502
+ hiddenChildren: /* @__PURE__ */ new Map(),
503
+ wanted: [],
504
+ hub: null
505
+ }, [
506
+ lazyMode,
507
+ lazy.pages,
508
+ lazy.loaded,
509
+ selectedPageId,
510
+ openGroups,
511
+ revealed,
512
+ graph.pages
513
+ ]);
514
+ const graphSettled = !lazyMode || drawnGraph.wanted.every((id) => lazy.loaded.has(id) || lazy.failed.has(id));
515
+ (0, react.useEffect)(() => {
516
+ if (!lazyMode || view === "page") return;
517
+ const next = [.../* @__PURE__ */ new Set([...drawnGraph.wanted, ...previewed])];
518
+ setGraphOpened((current) => current.length === next.length && current.every((id, index) => id === next[index]) ? current : next);
519
+ }, [
520
+ lazyMode,
521
+ view,
522
+ drawnGraph.wanted,
523
+ previewed
524
+ ]);
525
+ const focusLinkList = (source.usePageLinks ?? noLinkQuery)(view === "graph" ? selectedPageId : null).data;
526
+ const linkEnds = (0, react.useMemo)(() => {
527
+ const detail = selected.data;
528
+ if (!detail || detail.page.id !== selectedPageId) return null;
529
+ const known = new Map([
530
+ ...lazy.pages,
531
+ ...detail.ancestors,
532
+ ...detail.related
533
+ ].map((page) => [page.id, page]));
534
+ const index = require_domains_knowledge_lib_pageRefs.knowledgePageRefIndex(known.values());
535
+ const own = detail.page.id;
536
+ const mentions = detail.notes.flatMap((note) => note.mentions).filter((key) => key && key !== own);
537
+ const refs = require_domains_knowledge_lib_pageRefs.bodyLinkRefs(detail.page.body ?? "").map((ref) => ref.trim()).filter((key) => key && key !== own);
538
+ const out = [...mentions, ...refs];
539
+ const mentioned = new Set(mentions);
540
+ const unaskable = new Set(refs.filter((ref) => !ref.includes(":") && !PAGE_ID_SHAPE.test(ref) && !mentioned.has(ref)));
541
+ const listed = (focusLinkList?.edges ?? []).filter((edge) => edge.toPageId === own);
542
+ const noteInto = [.../* @__PURE__ */ new Set([...(detail.mentionedBy ?? []).map((note) => note.pageId), ...listed.filter((edge) => edge.kind === "note").map((edge) => edge.fromPageId)])].filter((id) => id !== own);
543
+ const bodyInto = [...new Set(listed.filter((edge) => edge.kind === "body").map((edge) => edge.fromPageId))].filter((id) => id !== own);
544
+ const into = [.../* @__PURE__ */ new Set([...noteInto, ...bodyInto])];
545
+ const lookup = (key) => known.get(key) ?? index.resolve(key);
546
+ const missing = (keys) => [...new Set(keys.filter((key) => !lookup(key) && !unaskable.has(key)))];
547
+ const resolvedCount = (keys) => new Set(keys.flatMap((key) => lookup(key)?.id ?? [])).size;
548
+ const room = (keys) => Math.max(0, FOCUS_LINK_FETCH_CAP - resolvedCount(keys));
549
+ const wantOut = missing(out);
550
+ const wantIn = missing(into);
551
+ return {
552
+ detail,
553
+ known,
554
+ mentions,
555
+ refs,
556
+ into,
557
+ noteInto,
558
+ bodyInto,
559
+ lookup,
560
+ fetchKeys: [...wantOut.slice(0, room(out)), ...wantIn.slice(0, room(into))],
561
+ unfetched: {
562
+ out: Math.max(0, wantOut.length - room(out)),
563
+ in: Math.max(0, wantIn.length - room(into))
564
+ }
565
+ };
566
+ }, [
567
+ selected.data,
568
+ selectedPageId,
569
+ lazy.pages,
570
+ focusLinkList
571
+ ]);
572
+ const fetchKeys = linkEnds?.fetchKeys ?? noKeys;
573
+ const fetchedStates = (source.useLinkedPages ?? noLinkedPages)(fetchKeys);
574
+ const fetchedSignature = fetchKeys.map((key, index) => `${key}=${fetchedStates[index]?.data?.page?.id ?? ""}`).join("|");
575
+ const fetchedPages = (0, react.useMemo)(() => {
576
+ const byKey = /* @__PURE__ */ new Map();
577
+ fetchKeys.forEach((key, index) => {
578
+ const page = fetchedStates[index]?.data?.page;
579
+ if (page) byKey.set(key, page);
580
+ });
581
+ return byKey;
582
+ }, [fetchedSignature]);
583
+ const focusLinks = (0, react.useMemo)(() => {
584
+ if (!linkEnds) return {
585
+ edges: [],
586
+ pages: [],
587
+ unfetched: {
588
+ in: 0,
589
+ out: 0
590
+ }
591
+ };
592
+ const { detail, lookup, mentions, refs, noteInto, bodyInto } = linkEnds;
593
+ const resolve = (key) => lookup(key) ?? fetchedPages.get(key);
594
+ const own = detail.page.id;
595
+ const edges = [];
596
+ const pages = /* @__PURE__ */ new Map();
597
+ const reach = (key, kind, side) => {
598
+ const target = resolve(key);
599
+ if (!target || target.id === own) {
600
+ if (!target && kind === "mention" && side === "out") edges.push({
601
+ source: own,
602
+ target: key,
603
+ kind
604
+ });
605
+ if (!target && side === "in") edges.push({
606
+ source: key,
607
+ target: own,
608
+ kind
609
+ });
610
+ return;
611
+ }
612
+ pages.set(target.id, target);
613
+ edges.push(side === "out" ? {
614
+ source: own,
615
+ target: target.id,
616
+ kind
617
+ } : {
618
+ source: target.id,
619
+ target: own,
620
+ kind
621
+ });
622
+ };
623
+ for (const key of mentions) reach(key, "mention", "out");
624
+ for (const key of refs) reach(key, "link", "out");
625
+ for (const key of noteInto) reach(key, "mention", "in");
626
+ for (const key of bodyInto) reach(key, "link", "in");
627
+ return {
628
+ edges: edges.filter((edge) => edge.source !== edge.target),
629
+ pages: [...pages.values()],
630
+ unfetched: linkEnds.unfetched
631
+ };
632
+ }, [linkEnds, fetchedPages]);
633
+ const focusLinkIds = (0, react.useMemo)(() => new Set(focusLinks.pages.map((page) => page.id)), [focusLinks.pages]);
634
+ const drawn = (0, react.useMemo)(() => {
635
+ const ids = new Set(drawnGraph.pages.map((page) => page.id));
636
+ const extra = focusLinks.pages.filter((page) => !ids.has(page.id));
637
+ return {
638
+ ...drawnGraph,
639
+ pages: extra.length ? [...drawnGraph.pages, ...extra] : drawnGraph.pages
640
+ };
641
+ }, [drawnGraph, focusLinks.pages]);
642
+ const pagesById = (0, react.useMemo)(() => new Map(drawn.pages.map((page) => [page.id, page])), [drawn.pages]);
643
+ const previewParent = (parentId) => setPreviewed((current) => current.includes(parentId) ? current : [...current, parentId].slice(-8));
346
644
  const [focusScopeId, setFocusScopeId] = (0, react.useState)(null);
347
- const mentionEdges = (0, react.useMemo)(() => graph.edges.filter((edge) => edge.kind === "mention"), [graph.edges]);
645
+ const knownLinks = (0, react.useMemo)(() => {
646
+ const seen = /* @__PURE__ */ new Set();
647
+ return [
648
+ ...graph.edges.filter((edge) => edge.kind === "mention"),
649
+ ...require_domains_knowledge_lib_pageRefs.bodyLinkEdges(drawn.pages),
650
+ ...focusLinks.edges
651
+ ].filter((edge) => {
652
+ const key = `${edge.kind}:${edge.source}>${edge.target}`;
653
+ return seen.has(key) ? false : (seen.add(key), true);
654
+ });
655
+ }, [
656
+ graph.edges,
657
+ drawn.pages,
658
+ focusLinks.edges
659
+ ]);
660
+ const linkView = (0, react.useMemo)(() => visibleLinks(knownLinks, pagesById, selectedPageId, allLinks), [
661
+ knownLinks,
662
+ pagesById,
663
+ selectedPageId,
664
+ allLinks
665
+ ]);
666
+ const linkEdges = linkView.edges;
667
+ const countIds = (0, react.useMemo)(() => drawn.pages.filter((page) => !require_domains_knowledge_lib_graphShape.isChildPlaceholder(page) && !require_domains_knowledge_lib_graphShape.isRestCircle(page) && !require_domains_knowledge_lib_graphShape.isScopeGroup(page)).map((page) => page.id).sort(), [drawn.pages]);
668
+ const counted = (source.useLinkCounts ?? noLinkQuery)(view === "graph" ? countIds : []);
669
+ const exactCounts = (0, react.useMemo)(() => counted.data ? new Map(Object.entries(counted.data)) : void 0, [counted.data]);
670
+ const hiddenLinks = (0, react.useMemo)(() => exactCounts ? undrawnLinks(exactCounts, linkEdges) : linkView.hidden, [
671
+ exactCounts,
672
+ linkEdges,
673
+ linkView.hidden
674
+ ]);
675
+ const [hoverFetchId, setHoverFetchId] = (0, react.useState)(null);
676
+ const hoverTimer = (0, react.useRef)(void 0);
677
+ const setHoveredId = (0, react.useCallback)((id) => {
678
+ clearTimeout(hoverTimer.current);
679
+ if (id) hoverTimer.current = setTimeout(() => setHoverFetchId(id), HOVER_FETCH_DELAY_MS);
680
+ else setHoverFetchId(null);
681
+ }, []);
682
+ (0, react.useEffect)(() => () => clearTimeout(hoverTimer.current), []);
683
+ const hovered = (source.usePageLinks ?? noLinkQuery)(hoverFetchId);
684
+ const hoverEdges = (0, react.useMemo)(() => hoverFetchId && hovered.data ? hovered.data.edges.map((edge) => ({
685
+ source: edge.fromPageId,
686
+ target: edge.toPageId,
687
+ kind: edge.kind === "body" ? "link" : "mention",
688
+ count: edge.count
689
+ })) : [], [hoverFetchId, hovered.data]);
348
690
  const [mention, setMention] = (0, react.useState)(null);
349
691
  const [marked, setMarked] = (0, react.useState)(null);
350
692
  const closeMention = (0, react.useCallback)(() => setMention(null), []);
351
693
  const graphShown = !require_hooks_use_is_mobile.useIsMobile(1024) || view === "graph";
352
694
  const highlightMentionOf = marked && marked.source === selectedPageId ? marked.target : void 0;
353
- const selected = source.usePage(selectedPageId);
354
- const lazy = useLazyTree(source, graph, selected.data);
355
695
  const showPage = view === "page" && !!selectedPageId;
696
+ const [history, setHistory] = (0, react.useState)([]);
697
+ const lastSelected = (0, react.useRef)(selectedPageId);
698
+ const goingBackTo = (0, react.useRef)(null);
699
+ (0, react.useEffect)(() => {
700
+ const previous = lastSelected.current;
701
+ lastSelected.current = selectedPageId;
702
+ const backTarget = goingBackTo.current;
703
+ goingBackTo.current = null;
704
+ if (backTarget && backTarget === selectedPageId) return;
705
+ if (!previous || !selectedPageId || previous === selectedPageId) return;
706
+ setHistory((current) => [...current.filter((id) => id !== selectedPageId), previous].slice(-50));
707
+ }, [selectedPageId]);
708
+ const backTo = history.length ? history[history.length - 1] : void 0;
709
+ const goBack = () => {
710
+ if (!backTo) return;
711
+ goingBackTo.current = backTo;
712
+ setHistory((current) => current.slice(0, -1));
713
+ onSelect(backTo);
714
+ };
356
715
  const openPage = (pageId) => {
357
716
  onSelect(pageId);
358
717
  onViewChange("page");
359
718
  };
360
719
  const selectFromTree = (page) => {
361
720
  if (page.isScope) setFocusScopeId(page.id);
362
- if (view === "graph") onSelect(page.id);
721
+ if (view === "graph" && (lazyMode || pagesById.has(page.id)) && page.id !== selectedPageId) onSelect(page.id);
363
722
  else openPage(page.id);
364
723
  };
724
+ const leaveScopeFocusFor = (pageId) => {
725
+ if (focusScopeId && !withinScope([...lazy.pages, ...drawn.pages], focusScopeId).some((page) => page.id === pageId)) setFocusScopeId(null);
726
+ };
365
727
  const openAnywhere = (pageId) => {
366
- if (focusScopeId && !withinScope([...lazy.pages, ...graph.pages], focusScopeId).some((page) => page.id === pageId)) setFocusScopeId(null);
728
+ leaveScopeFocusFor(pageId);
367
729
  openPage(pageId);
368
730
  };
731
+ const selectFromSearch = (pageId) => {
732
+ if (view === "graph" && (lazyMode || pagesById.has(pageId)) && pageId !== selectedPageId) {
733
+ leaveScopeFocusFor(pageId);
734
+ onSelect(pageId);
735
+ } else openAnywhere(pageId);
736
+ };
369
737
  const focusScope = focusScopeId ? lazy.pages.find((page) => page.id === focusScopeId) ?? pagesById.get(focusScopeId) : void 0;
370
738
  const treePages = withinScope(source.useTreeLevels ? lazy.pages : graph.pages, focusScope ? focusScopeId : null);
371
- const graphPages = (0, react.useMemo)(() => withinScope(graph.pages, focusScope ? focusScopeId : null), [
372
- graph.pages,
739
+ const graphPages = (0, react.useMemo)(() => withinScope(drawn.pages, focusScope ? focusScopeId : null), [
740
+ drawn.pages,
373
741
  focusScope,
374
742
  focusScopeId
375
743
  ]);
744
+ const focusedInGraph = view === "graph" ? pagesById.get(selectedPageId ?? drawn.hub ?? "") : void 0;
745
+ focusedInGraph && drawn.hiddenChildren.get(focusedInGraph.id);
376
746
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
377
747
  className: "flex min-h-0 flex-1 flex-col gap-3",
378
748
  children: [
@@ -380,11 +750,11 @@ function KnowledgePageExplorer({ graph, source, selectedPageId, onSelect, view,
380
750
  className: "flex flex-wrap items-center gap-2",
381
751
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(SearchBox, {
382
752
  source,
383
- onSelect: openAnywhere
753
+ onSelect: selectFromSearch
384
754
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
385
755
  role: "group",
386
756
  "aria-label": "View",
387
- className: "flex rounded border border-border",
757
+ className: "flex overflow-hidden rounded border border-border",
388
758
  children: [
389
759
  {
390
760
  value: "tree",
@@ -403,13 +773,13 @@ function KnowledgePageExplorer({ graph, source, selectedPageId, onSelect, view,
403
773
  type: "button",
404
774
  "aria-pressed": option.value === "page" ? showPage : option.value === "graph" ? !showPage && view !== "tree" : view === "tree",
405
775
  disabled: option.value === "page" && !selectedPageId,
406
- className: `text-ui-md px-3 py-1 disabled:opacity-50 aria-pressed:bg-muted ${option.narrowOnly ? "lg:hidden" : ""}`,
776
+ className: `text-ui-md px-3 py-1 text-muted-foreground disabled:opacity-50 aria-pressed:bg-fill-inverse aria-pressed:text-background ${option.narrowOnly ? "lg:hidden" : ""}`,
407
777
  onClick: () => onViewChange(option.value),
408
778
  children: option.label
409
779
  }, option.value))
410
780
  })]
411
781
  }),
412
- graph.truncated && !showPage ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("p", {
782
+ !lazyMode && graph.truncated && !showPage ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("p", {
413
783
  className: "text-ui-sm text-muted-foreground",
414
784
  children: [
415
785
  "The graph shows the first ",
@@ -481,41 +851,109 @@ function KnowledgePageExplorer({ graph, source, selectedPageId, onSelect, view,
481
851
  }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
482
852
  className: `relative min-h-0 min-w-0 flex-1 overflow-hidden rounded-lg border border-border bg-background lg:block lg:h-full ${view === "graph" ? "block" : "hidden"}`,
483
853
  "data-testid": "knowledge-graph-container",
484
- children: [graphShown ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_domains_knowledge_components_KnowledgePageGraph.KnowledgePageGraph, {
485
- pages: graphPages,
486
- edges: mentionEdges,
487
- pinnedIds: graph.pinnedIds,
488
- grants: graph.grants,
489
- selectedPageId,
490
- onSelect: (page) => {
491
- onSelect(page.id);
492
- if (view !== "graph") onViewChange("graph");
493
- },
494
- onOpen: (page) => openPage(page.id),
495
- onClearSelection: () => {
496
- setMention(null);
497
- if (selectedPageId) onSelect(null);
498
- },
499
- onMentionSelect: setMention
500
- }) : null, mention && graphShown ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MentionPopup, {
501
- source,
502
- mention,
503
- pagesById,
504
- onClose: closeMention,
505
- onOpen: (pageId) => {
506
- setMarked(pageId === mention.source.id ? {
507
- source: mention.source.id,
508
- target: mention.target.id
509
- } : null);
510
- setMention(null);
511
- openAnywhere(pageId);
512
- }
513
- }) : null]
854
+ children: [
855
+ graphShown ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
856
+ className: "absolute top-3 right-3 z-10 flex flex-col gap-2",
857
+ children: [
858
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
859
+ type: "button",
860
+ "data-testid": "knowledge-graph-back",
861
+ "aria-label": "Back",
862
+ title: backTo ? "Back to the page you focused before this one" : "Back (nothing to go back to yet)",
863
+ disabled: !backTo,
864
+ className: FLOAT_BUTTON,
865
+ onClick: goBack,
866
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ArrowLeft, {
867
+ "aria-hidden": true,
868
+ className: "size-4"
869
+ })
870
+ }),
871
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
872
+ type: "button",
873
+ "aria-label": "All links",
874
+ "aria-pressed": allLinks,
875
+ "data-testid": "knowledge-graph-all-links",
876
+ title: `All links: ${allLinks ? "on" : "off"}. Draw every link between the pages in the graph, not only the selected page's`,
877
+ className: FLOAT_BUTTON,
878
+ onClick: () => setAllLinks((current) => !current),
879
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Link2, {
880
+ "aria-hidden": true,
881
+ className: "size-4"
882
+ })
883
+ }),
884
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
885
+ type: "button",
886
+ "aria-label": "Link counts",
887
+ "aria-pressed": dotCounts,
888
+ "data-testid": "knowledge-graph-dot-counts",
889
+ title: `Link counts: ${dotCounts ? "on" : "off"}. Write how many links go in and out of each dot inside it`,
890
+ className: FLOAT_BUTTON,
891
+ onClick: () => setDotCounts((current) => !current),
892
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Hash, {
893
+ "aria-hidden": true,
894
+ className: "size-4"
895
+ })
896
+ })
897
+ ]
898
+ }) : null,
899
+ graphShown ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_domains_knowledge_components_KnowledgePageGraph.KnowledgePageGraph, {
900
+ pages: graphPages,
901
+ edges: linkEdges,
902
+ pinnedIds: graph.pinnedIds,
903
+ grants: graph.grants,
904
+ selectedPageId,
905
+ centerId: drawn.hub,
906
+ hiddenLinks,
907
+ knownLinks,
908
+ fetchedLinks: hoverEdges,
909
+ exactLinkCounts: exactCounts,
910
+ onHover: setHoveredId,
911
+ nearIds: focusLinkIds,
912
+ settled: graphSettled,
913
+ showCounts: dotCounts,
914
+ onPreview: (page) => {
915
+ if (require_domains_knowledge_lib_graphShape.isChildPlaceholder(page) && page.parentId) previewParent(page.parentId);
916
+ },
917
+ onSelect: (page) => {
918
+ if (require_domains_knowledge_lib_graphShape.isChildPlaceholder(page)) return page.parentId ? previewParent(page.parentId) : void 0;
919
+ if (require_domains_knowledge_lib_graphShape.isRestCircle(page)) {
920
+ const parentId = page.parentId;
921
+ if (!parentId) return void 0;
922
+ setRevealed((current) => new Map(current).set(parentId, (current.get(parentId) ?? 0) + 12));
923
+ return lazy.loadMore.get(parentId)?.();
924
+ }
925
+ if (require_domains_knowledge_lib_graphShape.isScopeGroup(page)) return setOpenGroups((current) => new Set(current).add(page.id));
926
+ onSelect(page.id);
927
+ if (view !== "graph") onViewChange("graph");
928
+ },
929
+ onOpen: (page) => openPage(page.id),
930
+ onClearSelection: () => {
931
+ setMention(null);
932
+ if (selectedPageId) onSelect(null);
933
+ },
934
+ onMentionSelect: setMention
935
+ }) : null,
936
+ mention && graphShown ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MentionPopup, {
937
+ source,
938
+ mention,
939
+ pagesById,
940
+ onClose: closeMention,
941
+ onOpen: (pageId) => {
942
+ setMarked(pageId === mention.source.id ? {
943
+ source: mention.source.id,
944
+ target: mention.target.id
945
+ } : null);
946
+ setMention(null);
947
+ openAnywhere(pageId);
948
+ }
949
+ }) : null
950
+ ]
514
951
  })]
515
952
  })
516
953
  ]
517
954
  });
518
955
  }
956
+ exports.FOCUS_LINK_CAP = FOCUS_LINK_CAP;
519
957
  exports.KnowledgePageExplorer = KnowledgePageExplorer;
520
958
 
521
959
  //# sourceMappingURL=KnowledgePageExplorer.cjs.js.map