@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
@@ -1,16 +1,139 @@
1
1
  import { t as Txt } from "../../../Txt-BM6TVV_c.js";
2
2
  import { n as EmptyState } from "../../../EmptyState-P-Gy898T.js";
3
3
  import { useIsMobile } from "../../../hooks/use-is-mobile.es.js";
4
+ import { bodyLinkEdges, bodyLinkRefs, knowledgePageRefIndex } from "../lib/pageRefs.es.js";
4
5
  import { KnowledgeNoteItem, KnowledgePageDetail } from "./KnowledgePageDetail.es.js";
6
+ import { isChildPlaceholder, isRestCircle, isScopeGroup, lazyGraph } from "../lib/graphShape.es.js";
5
7
  import { mentionPopupPlacement } from "../lib/popupPlacement.es.js";
8
+ import { useStableWhile } from "../lib/useStableWhile.es.js";
6
9
  import { KnowledgePageGraph } from "./KnowledgePageGraph.es.js";
7
10
  import { KnowledgePageTree } from "./KnowledgePageTree.es.js";
8
- import { useCallback, useEffect, useMemo, useState } from "react";
11
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
9
12
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
10
- import { X } from "lucide-react";
13
+ import { ArrowLeft, Hash, Link2, X } from "lucide-react";
11
14
  // src/domains/knowledge/components/KnowledgePageExplorer.tsx
15
+ /** Page ids are ULIDs; a bare `[[id]]` is askable, a bare `[[Name]]` is not. */
16
+ var PAGE_ID_SHAPE = /^[0-9A-Z]{26}$/;
17
+ var JUST_CREATED_MS = 6e4;
18
+ var isJustCreated = (page) => Date.now() - Date.parse(page.createdAt) < JUST_CREATED_MS;
12
19
  var MIN_SEARCH_LENGTH = 2;
20
+ /** Links of the selected page drawn at most in each direction; the rest are counted. */
21
+ var FOCUS_LINK_CAP = 20;
22
+ /** 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. */
23
+ var FOCUS_LINK_FETCH_CAP = 40;
24
+ function edgeKey(edge) {
25
+ return `${edge.kind}\u0000${edge.source}\u0000${edge.target}`;
26
+ }
27
+ /**
28
+ * The links to draw, and per page how many of its links (into it, out of it) go undrawn. With all links
29
+ * on, every link between drawn pages shows. Otherwise only the selected page's, up to
30
+ * {@link FOCUS_LINK_CAP} each way; with nothing selected, none.
31
+ */
32
+ function visibleLinks(known, drawn, selectedId, all) {
33
+ const unique = /* @__PURE__ */ new Map();
34
+ for (const edge of known) if (edge.source !== edge.target && !unique.has(edgeKey(edge))) unique.set(edgeKey(edge), edge);
35
+ const pairs = /* @__PURE__ */ new Map();
36
+ for (const edge of unique.values()) pairs.set(`${edge.source}\u0000${edge.target}`, edge);
37
+ const shown = /* @__PURE__ */ new Set();
38
+ const more = {
39
+ in: 0,
40
+ out: 0
41
+ };
42
+ if (all) {
43
+ for (const [key, edge] of unique) if (drawn.has(edge.source) && drawn.has(edge.target)) shown.add(key);
44
+ } else if (selectedId) {
45
+ const admitted = /* @__PURE__ */ new Set();
46
+ const over = /* @__PURE__ */ new Set();
47
+ let ins = 0;
48
+ let outs = 0;
49
+ for (const [key, edge] of unique) {
50
+ if (!drawn.has(edge.source) || !drawn.has(edge.target)) continue;
51
+ const side = edge.source === selectedId ? "out" : edge.target === selectedId ? "in" : null;
52
+ if (!side) continue;
53
+ const pair = `${edge.source}\u0000${edge.target}`;
54
+ if (!admitted.has(pair) && !over.has(pair)) {
55
+ if ((side === "out" ? outs : ins) >= 20) {
56
+ over.add(pair);
57
+ more[side]++;
58
+ } else {
59
+ admitted.add(pair);
60
+ if (side === "out") outs++;
61
+ else ins++;
62
+ }
63
+ }
64
+ if (admitted.has(pair)) shown.add(key);
65
+ }
66
+ }
67
+ const drawnPairs = new Set([...shown].map((key) => {
68
+ const edge = unique.get(key);
69
+ return `${edge.source}\u0000${edge.target}`;
70
+ }));
71
+ const hidden = /* @__PURE__ */ new Map();
72
+ const bump = (id, side) => {
73
+ if (!drawn.has(id)) return;
74
+ const counts = hidden.get(id) ?? {
75
+ in: 0,
76
+ out: 0
77
+ };
78
+ counts[side]++;
79
+ hidden.set(id, counts);
80
+ };
81
+ for (const [pair, edge] of pairs) {
82
+ if (drawnPairs.has(pair)) continue;
83
+ bump(edge.source, "out");
84
+ bump(edge.target, "in");
85
+ }
86
+ return {
87
+ edges: [...unique.values()].filter((edge) => shown.has(edgeKey(edge))),
88
+ hidden,
89
+ more
90
+ };
91
+ }
92
+ /** The round buttons floating over the graph: muted when off or idle, a solid fill when pressed. */
93
+ 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";
13
94
  var noTreeLevels = () => [];
95
+ var noKeys = [];
96
+ var noLinkedPages = () => [];
97
+ var noLinkQuery = () => ({
98
+ isPending: false,
99
+ isError: false,
100
+ error: null
101
+ });
102
+ /** Longest a pointer rests on a page before its links are fetched, so sweeping across the graph fetches none. */
103
+ var HOVER_FETCH_DELAY_MS = 150;
104
+ /** Per page, the links into and out of it that none of `shown` draws, given the exact totals. */
105
+ function undrawnLinks(exact, shown) {
106
+ const drawn = /* @__PURE__ */ new Map();
107
+ const pairs = /* @__PURE__ */ new Set();
108
+ for (const edge of shown) {
109
+ if (edge.kind === "parent" || pairs.has(`${edge.source}\u0000${edge.target}`)) continue;
110
+ pairs.add(`${edge.source}\u0000${edge.target}`);
111
+ const out = drawn.get(edge.source) ?? {
112
+ in: 0,
113
+ out: 0
114
+ };
115
+ out.out++;
116
+ drawn.set(edge.source, out);
117
+ const into = drawn.get(edge.target) ?? {
118
+ in: 0,
119
+ out: 0
120
+ };
121
+ into.in++;
122
+ drawn.set(edge.target, into);
123
+ }
124
+ const hidden = /* @__PURE__ */ new Map();
125
+ for (const [id, total] of exact) {
126
+ const seen = drawn.get(id) ?? {
127
+ in: 0,
128
+ out: 0
129
+ };
130
+ hidden.set(id, {
131
+ in: Math.max(0, total.in - seen.in),
132
+ out: Math.max(0, total.out - seen.out)
133
+ });
134
+ }
135
+ return hidden;
136
+ }
14
137
  var noActivity = () => ({
15
138
  isPending: false,
16
139
  isError: false,
@@ -277,11 +400,15 @@ function SearchBox({ source, onSelect }) {
277
400
  }) : null]
278
401
  });
279
402
  }
403
+ function sameLevels(a, b) {
404
+ const sameSet = (x, y) => x.size === y.size && [...x].every((id) => y.has(id));
405
+ 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);
406
+ }
280
407
  /**
281
408
  * The tree loaded a level at a time through `useTreeLevels`: the root scopes, then each level as it is
282
409
  * opened, plus the path to the selected page. Unloaded pages keep a chevron until opened.
283
410
  */
284
- function useLazyTree(source, graph, selected) {
411
+ function useLazyTree(source, graph, selected, graphOpened) {
285
412
  const [expanded, setExpanded] = useState(() => /* @__PURE__ */ new Set());
286
413
  const [more, setMore] = useState(() => /* @__PURE__ */ new Map());
287
414
  const requests = useMemo(() => {
@@ -293,17 +420,25 @@ function useLazyTree(source, graph, selected) {
293
420
  cursor
294
421
  });
295
422
  }
423
+ for (const id of graphOpened) if (!expanded.has(id)) list.push({ parentId: id });
296
424
  return list;
297
- }, [expanded, more]);
425
+ }, [
426
+ expanded,
427
+ more,
428
+ graphOpened
429
+ ]);
298
430
  const levels = (source.useTreeLevels ?? noTreeLevels)(requests);
299
- const { pages, loaded, nextCursor } = useMemo(() => {
431
+ const built = useMemo(() => {
432
+ const failedIds = /* @__PURE__ */ new Set();
300
433
  const byId = /* @__PURE__ */ new Map();
301
434
  const loadedIds = /* @__PURE__ */ new Set();
302
435
  const next = /* @__PURE__ */ new Map();
303
436
  levels.forEach((level, index) => {
304
437
  const request = requests[index];
305
- if (!request || !level.data) return;
438
+ if (!request) return;
306
439
  const key = request.parentId ?? "";
440
+ if (level.isError) failedIds.add(key);
441
+ if (!level.data) return;
307
442
  loadedIds.add(key);
308
443
  for (const page of level.data.pages) byId.set(page.id, page);
309
444
  if (level.data.nextCursor) next.set(key, level.data.nextCursor);
@@ -313,6 +448,7 @@ function useLazyTree(source, graph, selected) {
313
448
  return {
314
449
  pages: [...byId.values()],
315
450
  loaded: loadedIds,
451
+ failed: failedIds,
316
452
  nextCursor: next
317
453
  };
318
454
  }, [
@@ -320,10 +456,13 @@ function useLazyTree(source, graph, selected) {
320
456
  requests,
321
457
  selected
322
458
  ]);
459
+ const { pages, loaded, failed, nextCursor } = useStableWhile(built, sameLevels);
323
460
  const graphParents = useMemo(() => graph.truncated ? null : new Set(graph.pages.map((page) => page.parentId).filter((id) => id !== null)), [graph]);
324
461
  return {
325
462
  pages,
326
- mayHaveChildren: useCallback((page) => !loaded.has(page.id) && (graphParents ? graphParents.has(page.id) : true), [loaded, graphParents]),
463
+ loaded,
464
+ failed,
465
+ mayHaveChildren: 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]),
327
466
  loadMore: useMemo(() => {
328
467
  const map = /* @__PURE__ */ new Map();
329
468
  for (const [parentId, cursor] of nextCursor) map.set(parentId, () => setMore((current) => new Map(current).set(parentId, [...current.get(parentId) ?? [], cursor])));
@@ -341,37 +480,268 @@ function useLazyTree(source, graph, selected) {
341
480
  * page instead.
342
481
  */
343
482
  function KnowledgePageExplorer({ graph, source, selectedPageId, onSelect, view, onViewChange }) {
344
- const pagesById = useMemo(() => new Map(graph.pages.map((page) => [page.id, page])), [graph.pages]);
483
+ const selected = source.usePage(selectedPageId);
484
+ const lazyMode = !!source.useTreeLevels;
485
+ const [graphOpened, setGraphOpened] = useState([]);
486
+ const [previewed, setPreviewed] = useState([]);
487
+ const [openGroups, setOpenGroups] = useState(() => /* @__PURE__ */ new Set());
488
+ const [revealed, setRevealed] = useState(() => /* @__PURE__ */ new Map());
489
+ const [allLinks, setAllLinks] = useState(false);
490
+ const [dotCounts, setDotCounts] = useState(true);
491
+ const lazy = useLazyTree(source, graph, selected.data, graphOpened);
492
+ const drawnGraph = useMemo(() => lazyMode ? lazyGraph({
493
+ pages: [...new Map([...graph.pages, ...lazy.pages].map((page) => [page.id, page])).values()],
494
+ loadedParents: lazy.loaded,
495
+ rootKey: "",
496
+ focusId: selectedPageId,
497
+ openGroups,
498
+ revealed
499
+ }) : {
500
+ pages: graph.pages,
501
+ hiddenChildren: /* @__PURE__ */ new Map(),
502
+ wanted: [],
503
+ hub: null
504
+ }, [
505
+ lazyMode,
506
+ lazy.pages,
507
+ lazy.loaded,
508
+ selectedPageId,
509
+ openGroups,
510
+ revealed,
511
+ graph.pages
512
+ ]);
513
+ const graphSettled = !lazyMode || drawnGraph.wanted.every((id) => lazy.loaded.has(id) || lazy.failed.has(id));
514
+ useEffect(() => {
515
+ if (!lazyMode || view === "page") return;
516
+ const next = [.../* @__PURE__ */ new Set([...drawnGraph.wanted, ...previewed])];
517
+ setGraphOpened((current) => current.length === next.length && current.every((id, index) => id === next[index]) ? current : next);
518
+ }, [
519
+ lazyMode,
520
+ view,
521
+ drawnGraph.wanted,
522
+ previewed
523
+ ]);
524
+ const focusLinkList = (source.usePageLinks ?? noLinkQuery)(view === "graph" ? selectedPageId : null).data;
525
+ const linkEnds = useMemo(() => {
526
+ const detail = selected.data;
527
+ if (!detail || detail.page.id !== selectedPageId) return null;
528
+ const known = new Map([
529
+ ...lazy.pages,
530
+ ...detail.ancestors,
531
+ ...detail.related
532
+ ].map((page) => [page.id, page]));
533
+ const index = knowledgePageRefIndex(known.values());
534
+ const own = detail.page.id;
535
+ const mentions = detail.notes.flatMap((note) => note.mentions).filter((key) => key && key !== own);
536
+ const refs = bodyLinkRefs(detail.page.body ?? "").map((ref) => ref.trim()).filter((key) => key && key !== own);
537
+ const out = [...mentions, ...refs];
538
+ const mentioned = new Set(mentions);
539
+ const unaskable = new Set(refs.filter((ref) => !ref.includes(":") && !PAGE_ID_SHAPE.test(ref) && !mentioned.has(ref)));
540
+ const listed = (focusLinkList?.edges ?? []).filter((edge) => edge.toPageId === own);
541
+ 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);
542
+ const bodyInto = [...new Set(listed.filter((edge) => edge.kind === "body").map((edge) => edge.fromPageId))].filter((id) => id !== own);
543
+ const into = [.../* @__PURE__ */ new Set([...noteInto, ...bodyInto])];
544
+ const lookup = (key) => known.get(key) ?? index.resolve(key);
545
+ const missing = (keys) => [...new Set(keys.filter((key) => !lookup(key) && !unaskable.has(key)))];
546
+ const resolvedCount = (keys) => new Set(keys.flatMap((key) => lookup(key)?.id ?? [])).size;
547
+ const room = (keys) => Math.max(0, FOCUS_LINK_FETCH_CAP - resolvedCount(keys));
548
+ const wantOut = missing(out);
549
+ const wantIn = missing(into);
550
+ return {
551
+ detail,
552
+ known,
553
+ mentions,
554
+ refs,
555
+ into,
556
+ noteInto,
557
+ bodyInto,
558
+ lookup,
559
+ fetchKeys: [...wantOut.slice(0, room(out)), ...wantIn.slice(0, room(into))],
560
+ unfetched: {
561
+ out: Math.max(0, wantOut.length - room(out)),
562
+ in: Math.max(0, wantIn.length - room(into))
563
+ }
564
+ };
565
+ }, [
566
+ selected.data,
567
+ selectedPageId,
568
+ lazy.pages,
569
+ focusLinkList
570
+ ]);
571
+ const fetchKeys = linkEnds?.fetchKeys ?? noKeys;
572
+ const fetchedStates = (source.useLinkedPages ?? noLinkedPages)(fetchKeys);
573
+ const fetchedSignature = fetchKeys.map((key, index) => `${key}=${fetchedStates[index]?.data?.page?.id ?? ""}`).join("|");
574
+ const fetchedPages = useMemo(() => {
575
+ const byKey = /* @__PURE__ */ new Map();
576
+ fetchKeys.forEach((key, index) => {
577
+ const page = fetchedStates[index]?.data?.page;
578
+ if (page) byKey.set(key, page);
579
+ });
580
+ return byKey;
581
+ }, [fetchedSignature]);
582
+ const focusLinks = useMemo(() => {
583
+ if (!linkEnds) return {
584
+ edges: [],
585
+ pages: [],
586
+ unfetched: {
587
+ in: 0,
588
+ out: 0
589
+ }
590
+ };
591
+ const { detail, lookup, mentions, refs, noteInto, bodyInto } = linkEnds;
592
+ const resolve = (key) => lookup(key) ?? fetchedPages.get(key);
593
+ const own = detail.page.id;
594
+ const edges = [];
595
+ const pages = /* @__PURE__ */ new Map();
596
+ const reach = (key, kind, side) => {
597
+ const target = resolve(key);
598
+ if (!target || target.id === own) {
599
+ if (!target && kind === "mention" && side === "out") edges.push({
600
+ source: own,
601
+ target: key,
602
+ kind
603
+ });
604
+ if (!target && side === "in") edges.push({
605
+ source: key,
606
+ target: own,
607
+ kind
608
+ });
609
+ return;
610
+ }
611
+ pages.set(target.id, target);
612
+ edges.push(side === "out" ? {
613
+ source: own,
614
+ target: target.id,
615
+ kind
616
+ } : {
617
+ source: target.id,
618
+ target: own,
619
+ kind
620
+ });
621
+ };
622
+ for (const key of mentions) reach(key, "mention", "out");
623
+ for (const key of refs) reach(key, "link", "out");
624
+ for (const key of noteInto) reach(key, "mention", "in");
625
+ for (const key of bodyInto) reach(key, "link", "in");
626
+ return {
627
+ edges: edges.filter((edge) => edge.source !== edge.target),
628
+ pages: [...pages.values()],
629
+ unfetched: linkEnds.unfetched
630
+ };
631
+ }, [linkEnds, fetchedPages]);
632
+ const focusLinkIds = useMemo(() => new Set(focusLinks.pages.map((page) => page.id)), [focusLinks.pages]);
633
+ const drawn = useMemo(() => {
634
+ const ids = new Set(drawnGraph.pages.map((page) => page.id));
635
+ const extra = focusLinks.pages.filter((page) => !ids.has(page.id));
636
+ return {
637
+ ...drawnGraph,
638
+ pages: extra.length ? [...drawnGraph.pages, ...extra] : drawnGraph.pages
639
+ };
640
+ }, [drawnGraph, focusLinks.pages]);
641
+ const pagesById = useMemo(() => new Map(drawn.pages.map((page) => [page.id, page])), [drawn.pages]);
642
+ const previewParent = (parentId) => setPreviewed((current) => current.includes(parentId) ? current : [...current, parentId].slice(-8));
345
643
  const [focusScopeId, setFocusScopeId] = useState(null);
346
- const mentionEdges = useMemo(() => graph.edges.filter((edge) => edge.kind === "mention"), [graph.edges]);
644
+ const knownLinks = useMemo(() => {
645
+ const seen = /* @__PURE__ */ new Set();
646
+ return [
647
+ ...graph.edges.filter((edge) => edge.kind === "mention"),
648
+ ...bodyLinkEdges(drawn.pages),
649
+ ...focusLinks.edges
650
+ ].filter((edge) => {
651
+ const key = `${edge.kind}:${edge.source}>${edge.target}`;
652
+ return seen.has(key) ? false : (seen.add(key), true);
653
+ });
654
+ }, [
655
+ graph.edges,
656
+ drawn.pages,
657
+ focusLinks.edges
658
+ ]);
659
+ const linkView = useMemo(() => visibleLinks(knownLinks, pagesById, selectedPageId, allLinks), [
660
+ knownLinks,
661
+ pagesById,
662
+ selectedPageId,
663
+ allLinks
664
+ ]);
665
+ const linkEdges = linkView.edges;
666
+ const countIds = useMemo(() => drawn.pages.filter((page) => !isChildPlaceholder(page) && !isRestCircle(page) && !isScopeGroup(page)).map((page) => page.id).sort(), [drawn.pages]);
667
+ const counted = (source.useLinkCounts ?? noLinkQuery)(view === "graph" ? countIds : []);
668
+ const exactCounts = useMemo(() => counted.data ? new Map(Object.entries(counted.data)) : void 0, [counted.data]);
669
+ const hiddenLinks = useMemo(() => exactCounts ? undrawnLinks(exactCounts, linkEdges) : linkView.hidden, [
670
+ exactCounts,
671
+ linkEdges,
672
+ linkView.hidden
673
+ ]);
674
+ const [hoverFetchId, setHoverFetchId] = useState(null);
675
+ const hoverTimer = useRef(void 0);
676
+ const setHoveredId = useCallback((id) => {
677
+ clearTimeout(hoverTimer.current);
678
+ if (id) hoverTimer.current = setTimeout(() => setHoverFetchId(id), HOVER_FETCH_DELAY_MS);
679
+ else setHoverFetchId(null);
680
+ }, []);
681
+ useEffect(() => () => clearTimeout(hoverTimer.current), []);
682
+ const hovered = (source.usePageLinks ?? noLinkQuery)(hoverFetchId);
683
+ const hoverEdges = useMemo(() => hoverFetchId && hovered.data ? hovered.data.edges.map((edge) => ({
684
+ source: edge.fromPageId,
685
+ target: edge.toPageId,
686
+ kind: edge.kind === "body" ? "link" : "mention",
687
+ count: edge.count
688
+ })) : [], [hoverFetchId, hovered.data]);
347
689
  const [mention, setMention] = useState(null);
348
690
  const [marked, setMarked] = useState(null);
349
691
  const closeMention = useCallback(() => setMention(null), []);
350
692
  const graphShown = !useIsMobile(1024) || view === "graph";
351
693
  const highlightMentionOf = marked && marked.source === selectedPageId ? marked.target : void 0;
352
- const selected = source.usePage(selectedPageId);
353
- const lazy = useLazyTree(source, graph, selected.data);
354
694
  const showPage = view === "page" && !!selectedPageId;
695
+ const [history, setHistory] = useState([]);
696
+ const lastSelected = useRef(selectedPageId);
697
+ const goingBackTo = useRef(null);
698
+ useEffect(() => {
699
+ const previous = lastSelected.current;
700
+ lastSelected.current = selectedPageId;
701
+ const backTarget = goingBackTo.current;
702
+ goingBackTo.current = null;
703
+ if (backTarget && backTarget === selectedPageId) return;
704
+ if (!previous || !selectedPageId || previous === selectedPageId) return;
705
+ setHistory((current) => [...current.filter((id) => id !== selectedPageId), previous].slice(-50));
706
+ }, [selectedPageId]);
707
+ const backTo = history.length ? history[history.length - 1] : void 0;
708
+ const goBack = () => {
709
+ if (!backTo) return;
710
+ goingBackTo.current = backTo;
711
+ setHistory((current) => current.slice(0, -1));
712
+ onSelect(backTo);
713
+ };
355
714
  const openPage = (pageId) => {
356
715
  onSelect(pageId);
357
716
  onViewChange("page");
358
717
  };
359
718
  const selectFromTree = (page) => {
360
719
  if (page.isScope) setFocusScopeId(page.id);
361
- if (view === "graph") onSelect(page.id);
720
+ if (view === "graph" && (lazyMode || pagesById.has(page.id)) && page.id !== selectedPageId) onSelect(page.id);
362
721
  else openPage(page.id);
363
722
  };
723
+ const leaveScopeFocusFor = (pageId) => {
724
+ if (focusScopeId && !withinScope([...lazy.pages, ...drawn.pages], focusScopeId).some((page) => page.id === pageId)) setFocusScopeId(null);
725
+ };
364
726
  const openAnywhere = (pageId) => {
365
- if (focusScopeId && !withinScope([...lazy.pages, ...graph.pages], focusScopeId).some((page) => page.id === pageId)) setFocusScopeId(null);
727
+ leaveScopeFocusFor(pageId);
366
728
  openPage(pageId);
367
729
  };
730
+ const selectFromSearch = (pageId) => {
731
+ if (view === "graph" && (lazyMode || pagesById.has(pageId)) && pageId !== selectedPageId) {
732
+ leaveScopeFocusFor(pageId);
733
+ onSelect(pageId);
734
+ } else openAnywhere(pageId);
735
+ };
368
736
  const focusScope = focusScopeId ? lazy.pages.find((page) => page.id === focusScopeId) ?? pagesById.get(focusScopeId) : void 0;
369
737
  const treePages = withinScope(source.useTreeLevels ? lazy.pages : graph.pages, focusScope ? focusScopeId : null);
370
- const graphPages = useMemo(() => withinScope(graph.pages, focusScope ? focusScopeId : null), [
371
- graph.pages,
738
+ const graphPages = useMemo(() => withinScope(drawn.pages, focusScope ? focusScopeId : null), [
739
+ drawn.pages,
372
740
  focusScope,
373
741
  focusScopeId
374
742
  ]);
743
+ const focusedInGraph = view === "graph" ? pagesById.get(selectedPageId ?? drawn.hub ?? "") : void 0;
744
+ focusedInGraph && drawn.hiddenChildren.get(focusedInGraph.id);
375
745
  return /* @__PURE__ */ jsxs("div", {
376
746
  className: "flex min-h-0 flex-1 flex-col gap-3",
377
747
  children: [
@@ -379,11 +749,11 @@ function KnowledgePageExplorer({ graph, source, selectedPageId, onSelect, view,
379
749
  className: "flex flex-wrap items-center gap-2",
380
750
  children: [/* @__PURE__ */ jsx(SearchBox, {
381
751
  source,
382
- onSelect: openAnywhere
752
+ onSelect: selectFromSearch
383
753
  }), /* @__PURE__ */ jsx("div", {
384
754
  role: "group",
385
755
  "aria-label": "View",
386
- className: "flex rounded border border-border",
756
+ className: "flex overflow-hidden rounded border border-border",
387
757
  children: [
388
758
  {
389
759
  value: "tree",
@@ -402,13 +772,13 @@ function KnowledgePageExplorer({ graph, source, selectedPageId, onSelect, view,
402
772
  type: "button",
403
773
  "aria-pressed": option.value === "page" ? showPage : option.value === "graph" ? !showPage && view !== "tree" : view === "tree",
404
774
  disabled: option.value === "page" && !selectedPageId,
405
- className: `text-ui-md px-3 py-1 disabled:opacity-50 aria-pressed:bg-muted ${option.narrowOnly ? "lg:hidden" : ""}`,
775
+ 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" : ""}`,
406
776
  onClick: () => onViewChange(option.value),
407
777
  children: option.label
408
778
  }, option.value))
409
779
  })]
410
780
  }),
411
- graph.truncated && !showPage ? /* @__PURE__ */ jsxs("p", {
781
+ !lazyMode && graph.truncated && !showPage ? /* @__PURE__ */ jsxs("p", {
412
782
  className: "text-ui-sm text-muted-foreground",
413
783
  children: [
414
784
  "The graph shows the first ",
@@ -480,41 +850,108 @@ function KnowledgePageExplorer({ graph, source, selectedPageId, onSelect, view,
480
850
  }) : /* @__PURE__ */ jsxs("div", {
481
851
  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"}`,
482
852
  "data-testid": "knowledge-graph-container",
483
- children: [graphShown ? /* @__PURE__ */ jsx(KnowledgePageGraph, {
484
- pages: graphPages,
485
- edges: mentionEdges,
486
- pinnedIds: graph.pinnedIds,
487
- grants: graph.grants,
488
- selectedPageId,
489
- onSelect: (page) => {
490
- onSelect(page.id);
491
- if (view !== "graph") onViewChange("graph");
492
- },
493
- onOpen: (page) => openPage(page.id),
494
- onClearSelection: () => {
495
- setMention(null);
496
- if (selectedPageId) onSelect(null);
497
- },
498
- onMentionSelect: setMention
499
- }) : null, mention && graphShown ? /* @__PURE__ */ jsx(MentionPopup, {
500
- source,
501
- mention,
502
- pagesById,
503
- onClose: closeMention,
504
- onOpen: (pageId) => {
505
- setMarked(pageId === mention.source.id ? {
506
- source: mention.source.id,
507
- target: mention.target.id
508
- } : null);
509
- setMention(null);
510
- openAnywhere(pageId);
511
- }
512
- }) : null]
853
+ children: [
854
+ graphShown ? /* @__PURE__ */ jsxs("div", {
855
+ className: "absolute top-3 right-3 z-10 flex flex-col gap-2",
856
+ children: [
857
+ /* @__PURE__ */ jsx("button", {
858
+ type: "button",
859
+ "data-testid": "knowledge-graph-back",
860
+ "aria-label": "Back",
861
+ title: backTo ? "Back to the page you focused before this one" : "Back (nothing to go back to yet)",
862
+ disabled: !backTo,
863
+ className: FLOAT_BUTTON,
864
+ onClick: goBack,
865
+ children: /* @__PURE__ */ jsx(ArrowLeft, {
866
+ "aria-hidden": true,
867
+ className: "size-4"
868
+ })
869
+ }),
870
+ /* @__PURE__ */ jsx("button", {
871
+ type: "button",
872
+ "aria-label": "All links",
873
+ "aria-pressed": allLinks,
874
+ "data-testid": "knowledge-graph-all-links",
875
+ title: `All links: ${allLinks ? "on" : "off"}. Draw every link between the pages in the graph, not only the selected page's`,
876
+ className: FLOAT_BUTTON,
877
+ onClick: () => setAllLinks((current) => !current),
878
+ children: /* @__PURE__ */ jsx(Link2, {
879
+ "aria-hidden": true,
880
+ className: "size-4"
881
+ })
882
+ }),
883
+ /* @__PURE__ */ jsx("button", {
884
+ type: "button",
885
+ "aria-label": "Link counts",
886
+ "aria-pressed": dotCounts,
887
+ "data-testid": "knowledge-graph-dot-counts",
888
+ title: `Link counts: ${dotCounts ? "on" : "off"}. Write how many links go in and out of each dot inside it`,
889
+ className: FLOAT_BUTTON,
890
+ onClick: () => setDotCounts((current) => !current),
891
+ children: /* @__PURE__ */ jsx(Hash, {
892
+ "aria-hidden": true,
893
+ className: "size-4"
894
+ })
895
+ })
896
+ ]
897
+ }) : null,
898
+ graphShown ? /* @__PURE__ */ jsx(KnowledgePageGraph, {
899
+ pages: graphPages,
900
+ edges: linkEdges,
901
+ pinnedIds: graph.pinnedIds,
902
+ grants: graph.grants,
903
+ selectedPageId,
904
+ centerId: drawn.hub,
905
+ hiddenLinks,
906
+ knownLinks,
907
+ fetchedLinks: hoverEdges,
908
+ exactLinkCounts: exactCounts,
909
+ onHover: setHoveredId,
910
+ nearIds: focusLinkIds,
911
+ settled: graphSettled,
912
+ showCounts: dotCounts,
913
+ onPreview: (page) => {
914
+ if (isChildPlaceholder(page) && page.parentId) previewParent(page.parentId);
915
+ },
916
+ onSelect: (page) => {
917
+ if (isChildPlaceholder(page)) return page.parentId ? previewParent(page.parentId) : void 0;
918
+ if (isRestCircle(page)) {
919
+ const parentId = page.parentId;
920
+ if (!parentId) return void 0;
921
+ setRevealed((current) => new Map(current).set(parentId, (current.get(parentId) ?? 0) + 12));
922
+ return lazy.loadMore.get(parentId)?.();
923
+ }
924
+ if (isScopeGroup(page)) return setOpenGroups((current) => new Set(current).add(page.id));
925
+ onSelect(page.id);
926
+ if (view !== "graph") onViewChange("graph");
927
+ },
928
+ onOpen: (page) => openPage(page.id),
929
+ onClearSelection: () => {
930
+ setMention(null);
931
+ if (selectedPageId) onSelect(null);
932
+ },
933
+ onMentionSelect: setMention
934
+ }) : null,
935
+ mention && graphShown ? /* @__PURE__ */ jsx(MentionPopup, {
936
+ source,
937
+ mention,
938
+ pagesById,
939
+ onClose: closeMention,
940
+ onOpen: (pageId) => {
941
+ setMarked(pageId === mention.source.id ? {
942
+ source: mention.source.id,
943
+ target: mention.target.id
944
+ } : null);
945
+ setMention(null);
946
+ openAnywhere(pageId);
947
+ }
948
+ }) : null
949
+ ]
513
950
  })]
514
951
  })
515
952
  ]
516
953
  });
517
954
  }
518
- export { KnowledgePageExplorer };
955
+ export { FOCUS_LINK_CAP, KnowledgePageExplorer };
519
956
 
520
957
  //# sourceMappingURL=KnowledgePageExplorer.es.js.map