@mastra/playground-ui 67.0.0 → 68.0.0-alpha.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 (244) hide show
  1. package/dist/KnowledgePageGraph.css +11 -0
  2. package/dist/components/ai/tool-approval.cjs.js +1 -1
  3. package/dist/components/ai/tool-approval.es.js +1 -1
  4. package/dist/components/ai/tool-call.cjs.js +2 -2
  5. package/dist/components/ai/tool-call.es.js +2 -2
  6. package/dist/domains/chat/activity/model/activity-segments.cjs.js +1 -1
  7. package/dist/domains/chat/activity/model/activity-segments.es.js +1 -1
  8. package/dist/domains/chat/activity/model/activity-words.cjs.js +2 -2
  9. package/dist/domains/chat/activity/model/activity-words.es.js +2 -2
  10. package/dist/domains/chat/knowledge/knowledge-links.cjs.js +40 -0
  11. package/dist/domains/chat/knowledge/knowledge-links.cjs.js.map +1 -0
  12. package/dist/domains/chat/knowledge/knowledge-links.d.ts +1 -0
  13. package/dist/domains/chat/knowledge/knowledge-links.es.js +38 -0
  14. package/dist/domains/chat/knowledge/knowledge-links.es.js.map +1 -0
  15. package/dist/domains/chat/knowledge/pinned-knowledge-data.cjs.js +79 -0
  16. package/dist/domains/chat/knowledge/pinned-knowledge-data.cjs.js.map +1 -0
  17. package/dist/domains/chat/knowledge/pinned-knowledge-data.d.ts +1 -0
  18. package/dist/domains/chat/knowledge/pinned-knowledge-data.es.js +77 -0
  19. package/dist/domains/chat/knowledge/pinned-knowledge-data.es.js.map +1 -0
  20. package/dist/domains/chat/knowledge/pinned-knowledge.cjs.js +124 -0
  21. package/dist/domains/chat/knowledge/pinned-knowledge.cjs.js.map +1 -0
  22. package/dist/domains/chat/knowledge/pinned-knowledge.d.ts +1 -0
  23. package/dist/domains/chat/knowledge/pinned-knowledge.es.js +123 -0
  24. package/dist/domains/chat/knowledge/pinned-knowledge.es.js.map +1 -0
  25. package/dist/domains/chat/knowledge.cjs.js +12 -0
  26. package/dist/domains/chat/knowledge.d.ts +1 -0
  27. package/dist/domains/chat/knowledge.es.js +5 -0
  28. package/dist/domains/chat/messages/message-row.cjs.js +2 -2
  29. package/dist/domains/chat/messages/message-row.es.js +2 -2
  30. package/dist/domains/chat/messages/signal-badge.cjs.js +7 -0
  31. package/dist/domains/chat/messages/signal-badge.cjs.js.map +1 -1
  32. package/dist/domains/chat/messages/signal-badge.es.js +7 -0
  33. package/dist/domains/chat/messages/signal-badge.es.js.map +1 -1
  34. package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
  35. package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
  36. package/dist/domains/chat/tools/badges/agent-badge.cjs.js +1 -1
  37. package/dist/domains/chat/tools/badges/agent-badge.es.js +1 -1
  38. package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +2 -2
  39. package/dist/domains/chat/tools/badges/file-tree-badge.es.js +2 -2
  40. package/dist/domains/chat/tools/badges/knowledge-tool-badge.cjs.js +273 -0
  41. package/dist/domains/chat/tools/badges/knowledge-tool-badge.cjs.js.map +1 -0
  42. package/dist/domains/chat/tools/badges/knowledge-tool-badge.d.ts +1 -0
  43. package/dist/domains/chat/tools/badges/knowledge-tool-badge.es.js +270 -0
  44. package/dist/domains/chat/tools/badges/knowledge-tool-badge.es.js.map +1 -0
  45. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +1 -1
  46. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +1 -1
  47. package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js +2 -2
  48. package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js +2 -2
  49. package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +1 -1
  50. package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
  51. package/dist/domains/chat/tools/badges/tool-badge.cjs.js +3 -3
  52. package/dist/domains/chat/tools/badges/tool-badge.es.js +3 -3
  53. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +2 -2
  54. package/dist/domains/chat/tools/badges/workflow-badge.es.js +2 -2
  55. package/dist/domains/chat/tools/tool-card-kind.cjs.js +4 -2
  56. package/dist/domains/chat/tools/tool-card-kind.cjs.js.map +1 -1
  57. package/dist/domains/chat/tools/tool-card-kind.es.js +4 -2
  58. package/dist/domains/chat/tools/tool-card-kind.es.js.map +1 -1
  59. package/dist/domains/chat/tools/tool-card.cjs.js +1 -1
  60. package/dist/domains/chat/tools/tool-card.es.js +1 -1
  61. package/dist/domains/chat/tools/tool-groups.cjs.js +3 -2
  62. package/dist/domains/chat/tools/tool-groups.cjs.js.map +1 -1
  63. package/dist/domains/chat/tools/tool-groups.es.js +3 -2
  64. package/dist/domains/chat/tools/tool-groups.es.js.map +1 -1
  65. package/dist/domains/chat.cjs.js +11 -0
  66. package/dist/domains/chat.es.js +5 -1
  67. package/dist/domains/knowledge/components/KnowledgePageDetail.cjs.js +438 -0
  68. package/dist/domains/knowledge/components/KnowledgePageDetail.cjs.js.map +1 -0
  69. package/dist/domains/knowledge/components/KnowledgePageDetail.d.ts +1 -0
  70. package/dist/domains/knowledge/components/KnowledgePageDetail.es.js +436 -0
  71. package/dist/domains/knowledge/components/KnowledgePageDetail.es.js.map +1 -0
  72. package/dist/domains/knowledge/components/KnowledgePageExplorer.cjs.js +521 -0
  73. package/dist/domains/knowledge/components/KnowledgePageExplorer.cjs.js.map +1 -0
  74. package/dist/domains/knowledge/components/KnowledgePageExplorer.d.ts +1 -0
  75. package/dist/domains/knowledge/components/KnowledgePageExplorer.es.js +520 -0
  76. package/dist/domains/knowledge/components/KnowledgePageExplorer.es.js.map +1 -0
  77. package/dist/domains/knowledge/components/KnowledgePageGraph.cjs.js +626 -0
  78. package/dist/domains/knowledge/components/KnowledgePageGraph.cjs.js.map +1 -0
  79. package/dist/domains/knowledge/components/KnowledgePageGraph.d.ts +1 -0
  80. package/dist/domains/knowledge/components/KnowledgePageGraph.es.js +625 -0
  81. package/dist/domains/knowledge/components/KnowledgePageGraph.es.js.map +1 -0
  82. package/dist/domains/knowledge/components/KnowledgePageTree.cjs.js +170 -0
  83. package/dist/domains/knowledge/components/KnowledgePageTree.cjs.js.map +1 -0
  84. package/dist/domains/knowledge/components/KnowledgePageTree.d.ts +1 -0
  85. package/dist/domains/knowledge/components/KnowledgePageTree.es.js +168 -0
  86. package/dist/domains/knowledge/components/KnowledgePageTree.es.js.map +1 -0
  87. package/dist/domains/knowledge/hooks/useInteractionIdle.cjs.js +37 -0
  88. package/dist/domains/knowledge/hooks/useInteractionIdle.cjs.js.map +1 -0
  89. package/dist/domains/knowledge/hooks/useInteractionIdle.d.ts +1 -0
  90. package/dist/domains/knowledge/hooks/useInteractionIdle.es.js +35 -0
  91. package/dist/domains/knowledge/hooks/useInteractionIdle.es.js.map +1 -0
  92. package/dist/domains/knowledge/lib/layout.cjs.js +93 -0
  93. package/dist/domains/knowledge/lib/layout.cjs.js.map +1 -0
  94. package/dist/domains/knowledge/lib/layout.d.ts +1 -0
  95. package/dist/domains/knowledge/lib/layout.es.js +92 -0
  96. package/dist/domains/knowledge/lib/layout.es.js.map +1 -0
  97. package/dist/domains/knowledge/lib/pageGraph.cjs.js +135 -0
  98. package/dist/domains/knowledge/lib/pageGraph.cjs.js.map +1 -0
  99. package/dist/domains/knowledge/lib/pageGraph.d.ts +1 -0
  100. package/dist/domains/knowledge/lib/pageGraph.es.js +128 -0
  101. package/dist/domains/knowledge/lib/pageGraph.es.js.map +1 -0
  102. package/dist/domains/knowledge/lib/pageLayout.cjs.js +49 -0
  103. package/dist/domains/knowledge/lib/pageLayout.cjs.js.map +1 -0
  104. package/dist/domains/knowledge/lib/pageLayout.d.ts +1 -0
  105. package/dist/domains/knowledge/lib/pageLayout.es.js +48 -0
  106. package/dist/domains/knowledge/lib/pageLayout.es.js.map +1 -0
  107. package/dist/domains/knowledge/lib/pageTree.cjs.js +98 -0
  108. package/dist/domains/knowledge/lib/pageTree.cjs.js.map +1 -0
  109. package/dist/domains/knowledge/lib/pageTree.d.ts +1 -0
  110. package/dist/domains/knowledge/lib/pageTree.es.js +94 -0
  111. package/dist/domains/knowledge/lib/pageTree.es.js.map +1 -0
  112. package/dist/domains/knowledge/lib/popupPlacement.cjs.js +22 -0
  113. package/dist/domains/knowledge/lib/popupPlacement.cjs.js.map +1 -0
  114. package/dist/domains/knowledge/lib/popupPlacement.d.ts +1 -0
  115. package/dist/domains/knowledge/lib/popupPlacement.es.js +21 -0
  116. package/dist/domains/knowledge/lib/popupPlacement.es.js.map +1 -0
  117. package/dist/domains/knowledge/lib/recordText.cjs.js +26 -0
  118. package/dist/domains/knowledge/lib/recordText.cjs.js.map +1 -0
  119. package/dist/domains/knowledge/lib/recordText.d.ts +1 -0
  120. package/dist/domains/knowledge/lib/recordText.es.js +25 -0
  121. package/dist/domains/knowledge/lib/recordText.es.js.map +1 -0
  122. package/dist/domains/knowledge/pageTypes.cjs.js +0 -0
  123. package/dist/domains/knowledge/pageTypes.d.ts +1 -0
  124. package/dist/domains/knowledge/pageTypes.es.js +0 -0
  125. package/dist/domains/logs/components/logs-saved-views.cjs.js +1 -1
  126. package/dist/domains/logs/components/logs-saved-views.es.js +1 -1
  127. package/dist/domains/observability/saved-views/observability-saved-views.cjs.js +1 -1
  128. package/dist/domains/observability/saved-views/observability-saved-views.es.js +1 -1
  129. package/dist/domains/observability/saved-views/saved-views-provider.cjs.js +3 -2
  130. package/dist/domains/observability/saved-views/saved-views-provider.cjs.js.map +1 -1
  131. package/dist/domains/observability/saved-views/saved-views-provider.es.js +3 -2
  132. package/dist/domains/observability/saved-views/saved-views-provider.es.js.map +1 -1
  133. package/dist/domains/observability/saved-views/saved-views-source.cjs.js.map +1 -1
  134. package/dist/domains/observability/saved-views/saved-views-source.es.js.map +1 -1
  135. package/dist/domains/observability/saved-views/use-hosted-saved-views.cjs.js +3 -2
  136. package/dist/domains/observability/saved-views/use-hosted-saved-views.cjs.js.map +1 -1
  137. package/dist/domains/observability/saved-views/use-hosted-saved-views.es.js +3 -2
  138. package/dist/domains/observability/saved-views/use-hosted-saved-views.es.js.map +1 -1
  139. package/dist/domains/observability/saved-views.cjs.js +1 -1
  140. package/dist/domains/observability/saved-views.es.js +1 -1
  141. package/dist/domains/observability.cjs.js +1 -1
  142. package/dist/domains/observability.es.js +1 -1
  143. package/dist/domains/skills/skill-simple-form.cjs.js +2 -2
  144. package/dist/domains/skills/skill-simple-form.cjs.js.map +1 -1
  145. package/dist/domains/skills/skill-simple-form.es.js +2 -2
  146. package/dist/domains/skills/skill-simple-form.es.js.map +1 -1
  147. package/dist/domains/spans/components/spans-explorer-body.cjs.js +1 -1
  148. package/dist/domains/spans/components/spans-explorer-body.es.js +1 -1
  149. package/dist/domains/threads/components/threads-explorer-body.cjs.js +1 -1
  150. package/dist/domains/threads/components/threads-explorer-body.es.js +1 -1
  151. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +1 -1
  152. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +1 -1
  153. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
  154. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
  155. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +1 -1
  156. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +1 -1
  157. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +1 -1
  158. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +1 -1
  159. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +1 -1
  160. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +1 -1
  161. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
  162. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
  163. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +1 -1
  164. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +1 -1
  165. package/dist/domains/traces/components/span-payload/span-processor-mutations.cjs.js +1 -1
  166. package/dist/domains/traces/components/span-payload/span-processor-mutations.es.js +1 -1
  167. package/dist/domains/traces/components/span-payload/span-tools-section.cjs.js +1 -1
  168. package/dist/domains/traces/components/span-payload/span-tools-section.es.js +1 -1
  169. package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.cjs.js +1 -1
  170. package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.es.js +1 -1
  171. package/dist/domains/workflows/workflow/use-workflow-trigger.cjs.js +2 -1
  172. package/dist/domains/workflows/workflow/use-workflow-trigger.cjs.js.map +1 -1
  173. package/dist/domains/workflows/workflow/use-workflow-trigger.es.js +2 -1
  174. package/dist/domains/workflows/workflow/use-workflow-trigger.es.js.map +1 -1
  175. package/dist/lib/form/dynamic-form.cjs.js +2 -2
  176. package/dist/lib/form/dynamic-form.cjs.js.map +1 -1
  177. package/dist/lib/form/dynamic-form.es.js +2 -2
  178. package/dist/lib/form/dynamic-form.es.js.map +1 -1
  179. package/dist/lib/form/json-draft.cjs.js +1 -1
  180. package/dist/lib/form/json-draft.es.js +1 -1
  181. package/dist/lib/form/zod-provider/compat.cjs.js +8 -0
  182. package/dist/lib/form/zod-provider/compat.cjs.js.map +1 -1
  183. package/dist/lib/form/zod-provider/compat.es.js +8 -1
  184. package/dist/lib/form/zod-provider/compat.es.js.map +1 -1
  185. package/dist/lib/form/zod-provider.cjs.js +1 -1
  186. package/dist/lib/form/zod-provider.es.js +1 -1
  187. package/dist/{observability-saved-views-CwCii7hh.cjs → observability-saved-views-BNU3GkK6.cjs} +8 -6
  188. package/dist/observability-saved-views-BNU3GkK6.cjs.map +1 -0
  189. package/dist/{observability-saved-views-Bo5kLN20.js → observability-saved-views-Zlz74syw.js} +8 -6
  190. package/dist/observability-saved-views-Zlz74syw.js.map +1 -0
  191. package/dist/{span-payload-primitives-Dyhbqaa7.js → span-payload-primitives-ChvD2RrN.js} +2 -2
  192. package/dist/{span-payload-primitives-Dyhbqaa7.js.map → span-payload-primitives-ChvD2RrN.js.map} +1 -1
  193. package/dist/{span-payload-primitives-B10Xxmx7.cjs → span-payload-primitives-w1vtAXAw.cjs} +2 -2
  194. package/dist/{span-payload-primitives-B10Xxmx7.cjs.map → span-payload-primitives-w1vtAXAw.cjs.map} +1 -1
  195. package/dist/src/domains/chat/index.d.ts +1 -0
  196. package/dist/src/domains/chat/knowledge/index.d.ts +5 -0
  197. package/dist/src/domains/chat/knowledge/knowledge-links.d.ts +21 -0
  198. package/dist/src/domains/chat/knowledge/pinned-knowledge-data.d.ts +22 -0
  199. package/dist/src/domains/chat/knowledge/pinned-knowledge.d.ts +9 -0
  200. package/dist/src/domains/chat/tools/badges/knowledge-tool-badge.d.ts +19 -0
  201. package/dist/src/domains/chat/tools/tool-card-kind.d.ts +2 -2
  202. package/dist/src/domains/knowledge/components/KnowledgePageDetail.d.ts +42 -0
  203. package/dist/src/domains/knowledge/components/KnowledgePageExplorer.d.ts +80 -0
  204. package/dist/src/domains/knowledge/components/KnowledgePageGraph.d.ts +35 -0
  205. package/dist/src/domains/knowledge/components/KnowledgePageTree.d.ts +27 -0
  206. package/dist/src/domains/knowledge/hooks/useInteractionIdle.d.ts +12 -0
  207. package/dist/src/domains/knowledge/lib/layout.d.ts +35 -0
  208. package/dist/src/domains/knowledge/lib/pageGraph.d.ts +45 -0
  209. package/dist/src/domains/knowledge/lib/pageLayout.d.ts +24 -0
  210. package/dist/src/domains/knowledge/lib/pageTree.d.ts +28 -0
  211. package/dist/src/domains/knowledge/lib/popupPlacement.d.ts +12 -0
  212. package/dist/src/domains/knowledge/lib/recordText.d.ts +9 -0
  213. package/dist/src/domains/knowledge/pageTypes.d.ts +96 -0
  214. package/dist/src/domains/observability/saved-views/saved-views-provider.d.ts +6 -1
  215. package/dist/src/domains/observability/saved-views/saved-views-source.d.ts +1 -0
  216. package/dist/src/domains/observability/saved-views/use-hosted-saved-views.d.ts +1 -1
  217. package/dist/src/domains/skills/skill-simple-form.d.ts +3 -1
  218. package/dist/src/ds/components/SavedViews/saved-view-picker.d.ts +3 -1
  219. package/dist/src/ds/components/ai/tool-call/tool-phrases.d.ts +30 -0
  220. package/dist/src/lib/form/zod-provider/compat.d.ts +5 -0
  221. package/dist/style.css +63 -1
  222. package/dist/{tool-approval-FeuyUUcL.js → tool-approval-DHeCkWHT.js} +3 -3
  223. package/dist/{tool-approval-FeuyUUcL.js.map → tool-approval-DHeCkWHT.js.map} +1 -1
  224. package/dist/{tool-approval-BfjoSNOC.cjs → tool-approval-Dfi0uAKU.cjs} +3 -3
  225. package/dist/{tool-approval-BfjoSNOC.cjs.map → tool-approval-Dfi0uAKU.cjs.map} +1 -1
  226. package/dist/{tool-call-CvilN9ti.cjs → tool-call-BCsDhIhs.cjs} +32 -2
  227. package/dist/{tool-call-CvilN9ti.cjs.map → tool-call-BCsDhIhs.cjs.map} +1 -1
  228. package/dist/{tool-call-BxYXs9w0.js → tool-call-CILZa3tn.js} +32 -2
  229. package/dist/{tool-call-BxYXs9w0.js.map → tool-call-CILZa3tn.js.map} +1 -1
  230. package/dist/{tool-card-ELW898uw.js → tool-card-C3sDFUWc.js} +18 -4
  231. package/dist/tool-card-C3sDFUWc.js.map +1 -0
  232. package/dist/{tool-card-B7O8AsRl.cjs → tool-card-CJ7Kxi-U.cjs} +18 -4
  233. package/dist/tool-card-CJ7Kxi-U.cjs.map +1 -0
  234. package/dist/{tool-presentation-BLErsb7c.cjs → tool-presentation-CQlDEwgS.cjs} +26 -1
  235. package/dist/tool-presentation-CQlDEwgS.cjs.map +1 -0
  236. package/dist/{tool-presentation-BSZYIWx2.js → tool-presentation-DvCsb_kz.js} +26 -1
  237. package/dist/tool-presentation-DvCsb_kz.js.map +1 -0
  238. package/package.json +11 -9
  239. package/dist/observability-saved-views-Bo5kLN20.js.map +0 -1
  240. package/dist/observability-saved-views-CwCii7hh.cjs.map +0 -1
  241. package/dist/tool-card-B7O8AsRl.cjs.map +0 -1
  242. package/dist/tool-card-ELW898uw.js.map +0 -1
  243. package/dist/tool-presentation-BLErsb7c.cjs.map +0 -1
  244. package/dist/tool-presentation-BSZYIWx2.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KnowledgePageGraph.cjs.js","names":["MarkerType","Txt","Handle","Position","_Fragment","Fragment","Pin","BaseEdge","memo","ReactFlowProvider","useMemo","grantGraph","pageGraphEdges","useRef","toPageFlow","layoutPageGraph","pageNeighbourIds","useReactFlow","useCallback","getViewportForBounds","ReactFlow","Background","BackgroundVariant","Controls","ControlButton","Maximize"],"sources":["../../../../src/domains/knowledge/components/KnowledgePageGraph.tsx"],"sourcesContent":["import type { Edge, EdgeProps, NodeProps } from '@xyflow/react';\nimport {\n Background,\n BaseEdge,\n BackgroundVariant,\n ControlButton,\n Controls,\n getViewportForBounds,\n Handle,\n MarkerType,\n Position,\n ReactFlow,\n ReactFlowProvider,\n useReactFlow,\n} from '@xyflow/react';\nimport '@xyflow/react/dist/style.css';\nimport { Maximize, Pin } from 'lucide-react';\nimport { Fragment, memo, useCallback, useEffect, useMemo, useRef } from 'react';\nimport type { CSSProperties } from 'react';\n\nimport type { PageFlowEdge, PageFlowNode } from '../lib/pageGraph';\nimport { grantGraph, pageGraphEdges, pageNeighbourIds, toPageFlow } from '../lib/pageGraph';\nimport { layoutPageGraph } from '../lib/pageLayout';\nimport type { PageLayout } from '../lib/pageLayout';\nimport type { KnowledgePageEdge, KnowledgePagePayload, KnowledgeScopeGrantPayload } from '../pageTypes';\n\nimport { Txt } from '@/ds/components/Txt';\n\nimport './knowledge.css';\n\n// knowledge.css draws the border and the selection ring from this colour.\ntype CircleStyle = CSSProperties & { '--knowledge-color': string };\nconst SCOPE_STYLE: CircleStyle = {\n '--knowledge-color': 'var(--chart-blue)',\n background: 'color-mix(in oklab, var(--chart-blue) 16%, var(--card))',\n};\nconst PAGE_STYLE: CircleStyle = { '--knowledge-color': 'var(--border-strong)' };\n\nconst PARENT_EDGE_STYLE = {\n stroke: 'var(--foreground)',\n strokeOpacity: 0.45,\n strokeDasharray: '4 4',\n strokeWidth: 1.25,\n};\nconst MENTION_EDGE_COLOR = 'var(--chart-blue)';\n// An open chevron in the dashed line's muted tone, at the child end: distinct from a mention's filled blue head.\nconst PARENT_ARROW_COLOR = 'var(--muted-foreground)';\nconst PARENT_ARROW = { type: MarkerType.Arrow, color: PARENT_ARROW_COLOR, width: 12, height: 12, strokeWidth: 1.5 };\n// Grants: purple dash-dot from the principal scope to the scope it reaches, so neither colour nor pattern\n// alone tells it apart from a parent or mention line.\nconst GRANT_EDGE_COLOR = 'var(--chart-purple)';\nconst GRANT_EDGE_STYLE = { stroke: GRANT_EDGE_COLOR, strokeWidth: 1.75, strokeDasharray: '8 3 2 3' };\nconst GRANT_ARROW = { type: MarkerType.ArrowClosed, color: GRANT_EDGE_COLOR, width: 13, height: 13 };\n// A declared principal with no scope page yet: same size as a scope, dashed outline, nothing to open.\nconst PLACEHOLDER_STYLE = {\n background: 'var(--card)',\n borderColor: 'var(--chart-purple)',\n borderStyle: 'dashed',\n};\n\n/**\n * The pin badge sits on the circle's rim at its top-right (45°).\n */\nfunction pinBadgeStyle(size: number) {\n const badge = 20;\n const offset = (size / 2) * (1 - Math.SQRT1_2);\n return {\n badge,\n style: { width: badge, height: badge, top: offset, right: offset, transform: 'translate(50%, -50%)' },\n };\n}\n\ntype PageNodeData = PageFlowNode['data'] & { pinned: boolean; dimmed: boolean };\n\n/** A scope or page: its kind on top, its name below, both inside the circle. */\nfunction PageNodeComponent({ data }: NodeProps<PageFlowNode & { data: PageNodeData }>) {\n const { page, size, selected, pinned, dimmed } = data;\n const kind = page.isScope ? (page.displayLabel ?? 'Scope') : 'Page';\n const placeholder = isPlaceholder(page);\n return (\n <div\n data-testid=\"knowledge-page-node\"\n data-page-id={page.id}\n data-page-type={placeholder ? 'placeholder' : page.isScope ? 'scope' : 'page'}\n className={`relative transition-opacity ${placeholder ? 'cursor-default' : 'cursor-pointer'}`}\n style={{ width: size, height: size, opacity: dimmed ? 0.35 : 1 }}\n title={\n placeholder\n ? `${kind} · ${page.address} · nothing written to it yet`\n : page.isScope && page.address\n ? `${kind} · ${page.address}`\n : page.name\n }\n >\n <div\n className=\"knowledge-circle flex size-full flex-col items-center justify-center gap-0.5 overflow-hidden rounded-full border-2 px-3 text-center shadow-raised\"\n data-selected={selected || undefined}\n style={placeholder ? PLACEHOLDER_STYLE : page.isScope ? SCOPE_STYLE : PAGE_STYLE}\n >\n <Txt\n as=\"span\"\n variant=\"meta\"\n tone={page.isScope ? undefined : 'muted'}\n className=\"pointer-events-none line-clamp-2 max-w-full tracking-wide uppercase\"\n style={page.isScope ? { color: 'var(--chart-blue)' } : undefined}\n data-testid={page.isScope ? 'knowledge-scope-caption' : 'knowledge-page-caption'}\n >\n {kind}\n </Txt>\n <Txt as=\"span\" variant=\"label\" tone=\"ink\" className=\"pointer-events-none line-clamp-3 max-w-full break-words\">\n {page.isScope && page.address ? <BreakAtColons text={page.address} /> : page.name}\n </Txt>\n </div>\n {pinned ? <PinBadge size={size} /> : null}\n <Handle type=\"target\" position={Position.Top} className=\"!invisible\" />\n <Handle type=\"source\" position={Position.Bottom} className=\"!invisible\" />\n </div>\n );\n}\n\nfunction isPlaceholder(page: KnowledgePagePayload): boolean {\n return page.id.startsWith('unplaced:');\n}\n\n/** Lets a scope address like `role:acme:admin` wrap after a colon instead of mid-word. */\nfunction BreakAtColons({ text }: { text: string }) {\n const parts = text.split(':');\n return (\n <>\n {parts.map((part, index) => (\n <Fragment key={index}>\n {part}\n {index < parts.length - 1 ? (\n <>\n :<wbr />\n </>\n ) : null}\n </Fragment>\n ))}\n </>\n );\n}\n\nfunction PinBadge({ size }: { size: number }) {\n const { badge, style } = pinBadgeStyle(size);\n return (\n <span\n data-testid=\"knowledge-pin-badge\"\n className=\"absolute flex items-center justify-center rounded-full bg-badge-amber-strong text-badge-amber-foreground shadow-raised\"\n style={style}\n aria-label=\"Pinned\"\n >\n <Pin size={Math.round(badge * 0.6)} aria-hidden />\n </span>\n );\n}\n\ntype RimEdgeData = PageFlowEdge['data'] & { from: Circle; to: Circle; dimmed: boolean };\ninterface Circle {\n x: number;\n y: number;\n r: number;\n}\n\n/** A straight line from one circle's rim to the other's, so lines never loop or hide behind circles. */\nfunction rimToRim(from: Circle, to: Circle, gap = 3) {\n const dx = to.x - from.x;\n const dy = to.y - from.y;\n const length = Math.hypot(dx, dy) || 1;\n const ux = dx / length;\n const uy = dy / length;\n return {\n x1: from.x + ux * (from.r + gap),\n y1: from.y + uy * (from.r + gap),\n x2: to.x - ux * (to.r + gap),\n y2: to.y - uy * (to.r + gap),\n };\n}\n\nfunction RimEdgeComponent({ id, data, style, markerEnd }: EdgeProps<Edge<RimEdgeData>>) {\n if (!data) return null;\n const { x1, y1, x2, y2 } = rimToRim(data.from, data.to);\n const mention = data.kind === 'mention';\n const path = `M ${x1} ${y1} L ${x2} ${y2}`;\n return (\n <>\n <BaseEdge\n id={id}\n path={path}\n style={{ ...style, opacity: data.dimmed ? 0.2 : 1 }}\n markerEnd={markerEnd}\n interactionWidth={mention ? 20 : 0}\n />\n {data.kind === 'grant' && data.role ? (\n // A wide invisible path over the line, so hovering it names the access level.\n <path\n d={path}\n fill=\"none\"\n stroke=\"transparent\"\n strokeWidth={14}\n data-testid=\"knowledge-grant-edge\"\n data-role={data.role}\n aria-label={`Grants ${data.role}`}\n >\n <title>{`Grants ${data.role}`}</title>\n </path>\n ) : null}\n </>\n );\n}\n\nconst edgeTypes = { rim: RimEdgeComponent };\n\nconst nodeTypes = { page: memo(PageNodeComponent) };\n\n/** The box around laid-out circles, in graph coordinates; `null` when there are none. */\nfunction graphBounds(nodes: Array<{ position: { x: number; y: number }; width?: number; height?: number }>) {\n if (nodes.length === 0) return null;\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n for (const node of nodes) {\n minX = Math.min(minX, node.position.x);\n minY = Math.min(minY, node.position.y);\n maxX = Math.max(maxX, node.position.x + (node.width ?? 0));\n maxY = Math.max(maxY, node.position.y + (node.height ?? 0));\n }\n return { x: minX, y: minY, width: maxX - minX, height: maxY - minY };\n}\n\nconst LEGEND_SWATCH = 'knowledge-circle inline-block size-3 shrink-0 rounded-full border-2';\n\n/** What the circles, lines and badge mean. */\nfunction GraphLegend({ grants }: { grants: boolean }) {\n return (\n <ul\n aria-label=\"Legend\"\n className=\"pointer-events-none absolute top-2 left-2 z-10 flex flex-col gap-1 rounded-md border border-border bg-card/90 px-2 py-1.5 shadow-raised\"\n >\n <li className=\"flex items-center gap-2\">\n <span className={LEGEND_SWATCH} style={{ ...SCOPE_STYLE }} aria-hidden />\n <Txt as=\"span\" variant=\"meta\" tone=\"muted\">\n Scope\n </Txt>\n </li>\n <li className=\"flex items-center gap-2\">\n <span className={LEGEND_SWATCH} style={{ ...PAGE_STYLE }} aria-hidden />\n <Txt as=\"span\" variant=\"meta\" tone=\"muted\">\n Page\n </Txt>\n </li>\n <li className=\"flex items-center gap-2\">\n <svg width=\"12\" height=\"4\" aria-hidden className=\"shrink-0\">\n <line x1=\"0\" y1=\"2\" x2=\"12\" y2=\"2\" stroke={MENTION_EDGE_COLOR} strokeWidth=\"2\" />\n </svg>\n <Txt as=\"span\" variant=\"meta\" tone=\"muted\">\n Mentioned in notes\n </Txt>\n </li>\n <li className=\"flex items-center gap-2\">\n <svg width=\"16\" height=\"8\" aria-hidden className=\"shrink-0\" data-testid=\"knowledge-legend-parent-arrow\">\n <line x1=\"0\" y1=\"4\" x2=\"14\" y2=\"4\" {...PARENT_EDGE_STYLE} strokeDasharray=\"3 2\" />\n <polyline\n points=\"10,1 14,4 10,7\"\n fill=\"none\"\n stroke={PARENT_ARROW_COLOR}\n strokeWidth=\"1.25\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n <Txt as=\"span\" variant=\"meta\" tone=\"muted\">\n Parent → child\n </Txt>\n </li>\n {grants ? (\n <li className=\"flex items-center gap-2\">\n <svg width=\"16\" height=\"8\" aria-hidden className=\"shrink-0\" data-testid=\"knowledge-legend-grant\">\n <line x1=\"0\" y1=\"4\" x2=\"12\" y2=\"4\" {...GRANT_EDGE_STYLE} strokeDasharray=\"4 2 1 2\" strokeWidth=\"1.5\" />\n <polygon points=\"11,1 16,4 11,7\" fill={GRANT_EDGE_COLOR} />\n </svg>\n <Txt as=\"span\" variant=\"meta\" tone=\"muted\">\n Grants access (hover for role)\n </Txt>\n </li>\n ) : null}\n <li className=\"flex items-center gap-2\">\n <span\n className=\"flex size-3 shrink-0 items-center justify-center rounded-full bg-badge-amber-strong text-badge-amber-foreground\"\n aria-hidden\n >\n <Pin size={8} />\n </span>\n <Txt as=\"span\" variant=\"meta\" tone=\"muted\">\n Pinned\n </Txt>\n </li>\n </ul>\n );\n}\n\n/** How far the pointer may move between press and release and still count as a click, not a pan. */\nconst CLICK_SLOP_PX = 4;\n\nexport interface KnowledgePageGraphProps {\n pages: KnowledgePagePayload[];\n /** Mention edges between pages; parent edges are derived from `pages`. */\n edges: KnowledgePageEdge[];\n pinnedIds?: readonly string[];\n /** Access grants between scopes, drawn from each principal scope to the scope it reaches. */\n grants?: readonly KnowledgeScopeGrantPayload[];\n selectedPageId?: string | null;\n /** A page that wasn't selected was clicked, tapped, or activated with Enter or Space: select it. */\n onSelect: (page: KnowledgePagePayload) => void;\n /** The already-selected page was clicked, tapped, or activated again: open it. Without it, that only reselects. */\n onOpen?: (page: KnowledgePagePayload) => void;\n /** Empty canvas was clicked without moving the pointer (a pan doesn't count): clear the selection. */\n onClearSelection?: () => void;\n /** A mention line was clicked: notes on `source` mention `target`. `point` is where, in the graph's own box. */\n onMentionSelect?: (mention: {\n source: KnowledgePagePayload;\n target: KnowledgePagePayload;\n point: { x: number; y: number };\n /** The graph's own size, so a popup can open on whichever side of `point` has room. */\n pane: { width: number; height: number };\n }) => void;\n}\n\n/**\n * The schema-4 Knowledge page graph: scopes and pages as circles sized by how often they are mentioned,\n * parent links as faint edges and mentions as solid ones. The first layout is deterministic for the same pages; later updates start from where pages already sit.\n */\nexport function KnowledgePageGraph(props: KnowledgePageGraphProps) {\n return (\n <ReactFlowProvider>\n <KnowledgePageGraphInner {...props} />\n </ReactFlowProvider>\n );\n}\n\nfunction KnowledgePageGraphInner({\n pages,\n edges,\n pinnedIds = [],\n grants,\n selectedPageId,\n onSelect,\n onOpen,\n onClearSelection,\n onMentionSelect,\n}: KnowledgePageGraphProps) {\n // Grants add placeholder circles for declared principals with no scope page yet, and their own lines.\n const { graphPages, allEdges } = useMemo(() => {\n const granted = grantGraph(pages, grants);\n const withPlaceholders = granted.placeholders.length ? [...pages, ...granted.placeholders] : pages;\n return { graphPages: withPlaceholders, allEdges: [...pageGraphEdges(pages, edges), ...granted.edges] };\n }, [pages, edges, grants]);\n // The last layout: a refetch or live update starts from it, so placed pages stay put.\n const lastLayout = useRef<PageLayout | undefined>(undefined);\n const laidOut = useMemo(() => {\n const flow = toPageFlow(graphPages, allEdges);\n const layout = layoutPageGraph(\n lastLayout.current,\n flow.nodes.map(node => ({ id: node.id, size: node.data.size })),\n flow.edges.map(edge => ({ source: edge.source, target: edge.target })),\n );\n lastLayout.current = layout;\n return { nodes: flow.nodes, edges: flow.edges, positions: layout.positions };\n }, [graphPages, allEdges]);\n\n const pinned = useMemo(() => new Set(pinnedIds), [pinnedIds]);\n // With a page selected, everything more than one line away fades so its neighbourhood reads at a glance.\n const neighbours = useMemo(\n () => (selectedPageId && laidOut.positions.has(selectedPageId) ? pageNeighbourIds(selectedPageId, allEdges) : null),\n [selectedPageId, laidOut, allEdges],\n );\n // Each circle's size is known from the layout, so hand it to React Flow as the node's fixed size. Left to\n // React Flow's own DOM measurement, a production Studio sometimes never got one and every node stayed\n // `visibility: hidden`.\n const nodes = useMemo(\n () =>\n laidOut.nodes.map(node => {\n const center = laidOut.positions.get(node.id) ?? { x: 0, y: 0 };\n return {\n ...node,\n width: node.data.size,\n height: node.data.size,\n // Declared handles (where the hidden ones sit in PageNodeComponent) let lines draw without React\n // Flow measuring the node in the DOM, for the same reason as the fixed size above.\n handles: [\n { type: 'target' as const, position: Position.Top, x: node.data.size / 2, y: 0, width: 1, height: 1 },\n {\n type: 'source' as const,\n position: Position.Bottom,\n x: node.data.size / 2,\n y: node.data.size,\n width: 1,\n height: 1,\n },\n ],\n position: { x: center.x - node.data.size / 2, y: center.y - node.data.size / 2 },\n data: {\n ...node.data,\n selected: node.id === selectedPageId,\n pinned: pinned.has(node.id),\n dimmed: !!neighbours && !neighbours.has(node.id),\n },\n };\n }),\n [laidOut, selectedPageId, pinned, neighbours],\n );\n const flowEdges = useMemo(() => {\n const sizes = new Map(laidOut.nodes.map(node => [node.id, node.data.size]));\n const circle = (id: string): Circle => {\n const center = laidOut.positions.get(id) ?? { x: 0, y: 0 };\n return { ...center, r: (sizes.get(id) ?? 0) / 2 };\n };\n return laidOut.edges.map((edge): Edge<RimEdgeData> => {\n const mention = edge.data?.kind === 'mention';\n const grant = edge.data?.kind === 'grant';\n const dimmed = !!neighbours && !(neighbours.has(edge.source) && neighbours.has(edge.target));\n return {\n ...edge,\n type: 'rim',\n data: {\n kind: edge.data?.kind ?? 'parent',\n count: edge.data?.count ?? 1,\n ...(edge.data?.role ? { role: edge.data.role } : {}),\n from: circle(edge.source),\n to: circle(edge.target),\n dimmed,\n },\n ...(mention && onMentionSelect ? { className: 'cursor-pointer' } : {}),\n style: mention\n ? { stroke: MENTION_EDGE_COLOR, strokeWidth: Math.min(1.5 + (edge.data?.count ?? 1) * 0.5, 4) }\n : grant\n ? GRANT_EDGE_STYLE\n : PARENT_EDGE_STYLE,\n markerEnd: mention\n ? { type: MarkerType.ArrowClosed, color: MENTION_EDGE_COLOR, width: 14, height: 14 }\n : grant\n ? GRANT_ARROW\n : PARENT_ARROW,\n };\n });\n }, [laidOut, onMentionSelect, neighbours]);\n const pagesById = useMemo(() => new Map(pages.map(page => [page.id, page])), [pages]);\n const reactFlow = useReactFlow();\n const containerRef = useRef<HTMLDivElement>(null);\n const hasNodes = nodes.length > 0;\n\n // The view frames the selected page and its neighbours, or every page when nothing is selected. It is\n // computed from the layout's own positions and sizes rather than React Flow's `fitView`, which only\n // counts nodes it has measured in the DOM: in a production Studio it measured none, so the view never\n // moved. State is read through a ref so a refetch with the same selection never moves the view.\n const fitState = useRef({ nodes, allEdges, selectedPageId, reactFlow });\n fitState.current = { nodes, allEdges, selectedPageId, reactFlow };\n // Set when a fit found the pane 0×0, so the next non-zero size fits even if it matches the last one seen.\n const fitPending = useRef(false);\n const fit = useCallback((focusSelection: boolean, duration?: number) => {\n const container = containerRef.current;\n const width = container?.clientWidth ?? 0;\n const height = container?.clientHeight ?? 0;\n if (width === 0 || height === 0) {\n fitPending.current = true;\n return;\n }\n fitPending.current = false;\n const { nodes: current, allEdges: edgesNow, selectedPageId: selected, reactFlow: flow } = fitState.current;\n const focus = focusSelection && selected ? pageNeighbourIds(selected, edgesNow) : null;\n const targets = focus ? current.filter(node => focus.has(node.id)) : current;\n const bounds = graphBounds(targets);\n if (!bounds) return;\n const viewport = getViewportForBounds(bounds, width, height, 0.1, focus ? 1.5 : 2, focus ? 0.3 : 0.1);\n void flow.setViewport(viewport, duration ? { duration } : undefined);\n }, []);\n\n // A host that hides the graph behind a Tree/Graph toggle gives it zero size at first, so fit again\n // whenever the container gets a new non-zero size (shown, or the window resized), at most once a frame.\n useEffect(() => {\n const container = containerRef.current;\n if (!container || typeof ResizeObserver === 'undefined') return;\n let last = { width: container.clientWidth, height: container.clientHeight };\n let frame: number | undefined;\n const observer = new ResizeObserver(([entry]) => {\n if (!entry) return;\n const { width, height } = entry.contentRect;\n const changed = width !== last.width || height !== last.height;\n last = { width, height };\n if ((!changed && !fitPending.current) || width === 0 || height === 0) return;\n if (frame !== undefined) cancelAnimationFrame(frame);\n frame = requestAnimationFrame(() => {\n frame = undefined;\n fit(true);\n });\n });\n observer.observe(container);\n return () => {\n observer.disconnect();\n if (frame !== undefined) cancelAnimationFrame(frame);\n };\n }, [hasNodes, fit]);\n\n // A selection made outside the graph (tree, search, a link) brings that page and its neighbours into\n // view. A click on the graph itself leaves the view where the user put it.\n const selectedHere = useRef<string | null>(null);\n const selectedIsLoaded = !!selectedPageId && pagesById.has(selectedPageId);\n const initialized = useRef(false);\n useEffect(() => {\n if (!initialized.current || !selectedIsLoaded || !selectedPageId) return;\n const fromGraph = selectedHere.current === selectedPageId;\n selectedHere.current = null;\n if (fromGraph) return;\n fit(true, 300);\n }, [selectedPageId, selectedIsLoaded, fit]);\n\n // First click selects; a click on the page that is already selected opens it. A double-click is the two.\n const activate = (page: KnowledgePagePayload) => {\n if (page.id === selectedPageId && onOpen) return onOpen(page);\n selectedHere.current = page.id;\n onSelect(page);\n };\n // Where the pointer went down, so a click that ends a pan isn't taken for a click on empty canvas.\n const pressedAt = useRef<{ x: number; y: number } | null>(null);\n const onPaneClick = (event: React.MouseEvent) => {\n const start = pressedAt.current;\n pressedAt.current = null;\n if (start && Math.hypot(event.clientX - start.x, event.clientY - start.y) > CLICK_SLOP_PX) return;\n onClearSelection?.();\n };\n // React Flow focuses nodes but only toggles its own selection on Enter or Space; route them like a click.\n const onKeyDown = (event: React.KeyboardEvent) => {\n if (event.key !== 'Enter' && event.key !== ' ') return;\n const id = (event.target as HTMLElement).closest<HTMLElement>('.react-flow__node')?.dataset.id;\n const page = id ? pagesById.get(id) : undefined;\n if (!page) return;\n event.preventDefault();\n activate(page);\n };\n\n if (!hasNodes) {\n return (\n <div className=\"flex h-full items-center justify-center p-6\">\n <Txt variant=\"body\" tone=\"muted\">\n No pages yet.\n </Txt>\n </div>\n );\n }\n\n return (\n <div\n ref={containerRef}\n className=\"relative size-full\"\n data-testid=\"knowledge-page-graph\"\n onKeyDown={onKeyDown}\n onPointerDownCapture={event => {\n pressedAt.current = { x: event.clientX, y: event.clientY };\n }}\n >\n <GraphLegend grants={allEdges.some(edge => edge.kind === 'grant')} />\n <ReactFlow\n nodes={nodes}\n edges={flowEdges}\n nodeTypes={nodeTypes}\n edgeTypes={edgeTypes}\n onInit={() => {\n initialized.current = true;\n fit(true);\n }}\n minZoom={0.1}\n proOptions={{ hideAttribution: true }}\n nodesConnectable={false}\n nodesDraggable={false}\n onPaneClick={onPaneClick}\n onNodeClick={(_: unknown, node: PageFlowNode) => {\n if (!isPlaceholder(node.data.page)) activate(node.data.page);\n }}\n onEdgeClick={(event: React.MouseEvent, edge: Edge<RimEdgeData>) => {\n if (edge.data?.kind !== 'mention' || !onMentionSelect) return;\n const source = pagesById.get(edge.source);\n const target = pagesById.get(edge.target);\n if (!source || !target) return;\n const box = containerRef.current?.getBoundingClientRect();\n onMentionSelect({\n source,\n target,\n point: { x: event.clientX - (box?.left ?? 0), y: event.clientY - (box?.top ?? 0) },\n pane: { width: box?.width ?? 0, height: box?.height ?? 0 },\n });\n }}\n >\n <Background variant={BackgroundVariant.Dots} gap={26} size={1.4} color=\"var(--border-strong)\" />\n <Controls showInteractive={false} showFitView={false}>\n <ControlButton onClick={() => fit(false, 300)} title=\"Fit view\" aria-label=\"Fit view\">\n <Maximize aria-hidden />\n </ControlButton>\n </Controls>\n </ReactFlow>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from '../../../src/domains/knowledge/components/KnowledgePageGraph';