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