@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
|
@@ -1,38 +1,82 @@
|
|
|
1
1
|
import { useLinkComponent } from "../../../lib/framework.es.js";
|
|
2
2
|
import { knowledgePageHref } from "./pinned-knowledge-data.es.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { KnowledgePageCard } from "../../knowledge/components/KnowledgePageCard.es.js";
|
|
4
|
+
import { HoverCard, HoverCardContent, HoverCardTrigger } from "../../../components/HoverCard.es.js";
|
|
5
|
+
import { createContext, useContext, useState } from "react";
|
|
6
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
7
|
// src/domains/chat/knowledge/knowledge-links.tsx
|
|
6
|
-
var KnowledgeLinksContext = createContext({
|
|
8
|
+
var KnowledgeLinksContext = createContext({
|
|
9
|
+
pageHref: knowledgePageHref,
|
|
10
|
+
refHref: knowledgePageHref
|
|
11
|
+
});
|
|
7
12
|
/**
|
|
8
13
|
* Where Knowledge page links in chat (tool cards, pinned Knowledge) point. Studio's default opens its own
|
|
9
14
|
* Knowledge page; a host with its own route (Factory's per-project page) or its own router passes both.
|
|
10
15
|
*/
|
|
11
|
-
function KnowledgeLinksProvider({ pageHref, Link, children }) {
|
|
16
|
+
function KnowledgeLinksProvider({ pageHref, refHref, Link, usePagePreview, children }) {
|
|
12
17
|
return /* @__PURE__ */ jsx(KnowledgeLinksContext.Provider, {
|
|
13
18
|
value: {
|
|
14
19
|
pageHref,
|
|
15
|
-
|
|
20
|
+
refHref,
|
|
21
|
+
Link,
|
|
22
|
+
usePagePreview,
|
|
23
|
+
provided: true
|
|
16
24
|
},
|
|
17
25
|
children
|
|
18
26
|
});
|
|
19
27
|
}
|
|
28
|
+
/** What the host gave the provider; for renderers that must decide before drawing a link. */
|
|
29
|
+
function useKnowledgeLinksContext() {
|
|
30
|
+
return useContext(KnowledgeLinksContext);
|
|
31
|
+
}
|
|
32
|
+
/** Whether this host mounted a `KnowledgeLinksProvider`, i.e. has Knowledge pages chat prose can link to. */
|
|
33
|
+
function useHasKnowledgeLinks() {
|
|
34
|
+
return useContext(KnowledgeLinksContext).provided === true;
|
|
35
|
+
}
|
|
36
|
+
var LINK_CLASS = "min-w-0 truncate text-foreground underline-offset-2 hover:underline";
|
|
37
|
+
/** Mounted only while the card is open, so the host's lookup runs on hover. Nothing opens until the page is known. */
|
|
38
|
+
function PagePreviewContent({ target, usePagePreview }) {
|
|
39
|
+
const card = usePagePreview(target);
|
|
40
|
+
if (!card) return null;
|
|
41
|
+
return /* @__PURE__ */ jsx(HoverCardContent, {
|
|
42
|
+
"data-testid": "knowledge-link-card",
|
|
43
|
+
className: "flex w-max max-w-72 flex-col px-2 py-1",
|
|
44
|
+
children: /* @__PURE__ */ jsx(KnowledgePageCard, { ...card })
|
|
45
|
+
});
|
|
46
|
+
}
|
|
20
47
|
/** A link to a Knowledge page, through the host's link component and route. */
|
|
21
|
-
function KnowledgePageLink({ pageId, children, className =
|
|
48
|
+
function KnowledgePageLink({ pageId, pageRef, children, className = LINK_CLASS }) {
|
|
22
49
|
const links = useContext(KnowledgeLinksContext);
|
|
50
|
+
const [open, setOpen] = useState(false);
|
|
23
51
|
const { Link: FrameworkLink } = useLinkComponent();
|
|
24
52
|
const Link = links.Link ?? FrameworkLink;
|
|
25
|
-
const href = links.pageHref(pageId);
|
|
53
|
+
const href = pageId !== void 0 ? links.pageHref(pageId) : links.refHref?.(pageRef);
|
|
26
54
|
if (!href) return /* @__PURE__ */ jsx("span", {
|
|
27
55
|
className,
|
|
28
56
|
children
|
|
29
57
|
});
|
|
30
|
-
|
|
58
|
+
const link = /* @__PURE__ */ jsx(Link, {
|
|
31
59
|
href,
|
|
32
60
|
className,
|
|
33
61
|
children
|
|
34
62
|
});
|
|
63
|
+
const { usePagePreview } = links;
|
|
64
|
+
if (!usePagePreview) return link;
|
|
65
|
+
return /* @__PURE__ */ jsxs(HoverCard, {
|
|
66
|
+
open,
|
|
67
|
+
onOpenChange: setOpen,
|
|
68
|
+
children: [/* @__PURE__ */ jsx(HoverCardTrigger, {
|
|
69
|
+
render: /* @__PURE__ */ jsx(Link, {
|
|
70
|
+
href,
|
|
71
|
+
className
|
|
72
|
+
}),
|
|
73
|
+
children
|
|
74
|
+
}), open ? /* @__PURE__ */ jsx(PagePreviewContent, {
|
|
75
|
+
target: pageId !== void 0 ? { pageId } : { pageRef },
|
|
76
|
+
usePagePreview
|
|
77
|
+
}) : null]
|
|
78
|
+
});
|
|
35
79
|
}
|
|
36
|
-
export { KnowledgeLinksProvider, KnowledgePageLink };
|
|
80
|
+
export { KnowledgeLinksProvider, KnowledgePageLink, useHasKnowledgeLinks, useKnowledgeLinksContext };
|
|
37
81
|
|
|
38
82
|
//# sourceMappingURL=knowledge-links.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge-links.es.js","names":[],"sources":["../../../../src/domains/chat/knowledge/knowledge-links.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { ReactNode } from 'react';\nimport { knowledgePageHref } from './pinned-knowledge-data';\nimport { useLinkComponent } from '@/lib/framework';\nimport type { LinkComponent } from '@/lib/framework';\n\ninterface KnowledgeLinks {\n /** Undefined when this host has no page to open, e.g. a chat outside any project; the name shows as text. */\n pageHref: (pageId: string) => string | undefined;\n Link?: LinkComponent;\n}\n\nconst KnowledgeLinksContext = createContext<KnowledgeLinks>({
|
|
1
|
+
{"version":3,"file":"knowledge-links.es.js","names":[],"sources":["../../../../src/domains/chat/knowledge/knowledge-links.tsx"],"sourcesContent":["import { createContext, useContext, useState } from 'react';\nimport type { ReactNode } from 'react';\nimport { knowledgePageHref } from './pinned-knowledge-data';\nimport { KnowledgePageCard } from '@/domains/knowledge/components/KnowledgePageCard';\nimport type { KnowledgePageCardProps } from '@/domains/knowledge/components/KnowledgePageCard';\nimport { HoverCard, HoverCardContent, HoverCardTrigger } from '@/ds/components/HoverCard';\nimport { useLinkComponent } from '@/lib/framework';\nimport type { LinkComponent } from '@/lib/framework';\n\n/** Names the page a link points at: by id, or by reference the way `refHref` takes it. */\nexport type KnowledgePageTarget = { pageId: string; pageRef?: never } | { pageRef: string; pageId?: never };\n\n/**\n * What a hover card says about a page. Called, as a hook, only while a card is open, so a host fetches\n * the page on hover and not for every link in the transcript. (Chat prose is the exception: a bare address\n * in text calls it on render, since it links only if the page resolves.) `undefined` while loading or unreadable.\n */\nexport type UseKnowledgePagePreview = (target: KnowledgePageTarget) => KnowledgePageCardProps | undefined;\n\ninterface KnowledgeLinks {\n /** Left out where the host cannot look a page up; links then have no hover card. */\n usePagePreview?: UseKnowledgePagePreview;\n /** Undefined when this host has no page to open, e.g. a chat outside any project; the name shows as text. */\n pageHref: (pageId: string) => string | undefined;\n /**\n * Where a page named by reference (a scope address, or `scope#key/path` as `knowledge_list` names\n * entries) opens. Studio's Knowledge page resolves the reference itself, so it uses the page URL. A\n * host that only opens pages by id leaves it out, and those names show as text.\n */\n refHref?: (ref: string) => string | undefined;\n Link?: LinkComponent;\n /** Set by the provider: this host has Knowledge pages, so references in chat prose become links. */\n provided?: boolean;\n}\n\nconst KnowledgeLinksContext = createContext<KnowledgeLinks>({\n pageHref: knowledgePageHref,\n refHref: knowledgePageHref,\n});\n\n/**\n * Where Knowledge page links in chat (tool cards, pinned Knowledge) point. Studio's default opens its own\n * Knowledge page; a host with its own route (Factory's per-project page) or its own router passes both.\n */\nexport function KnowledgeLinksProvider({\n pageHref,\n refHref,\n Link,\n usePagePreview,\n children,\n}: Omit<KnowledgeLinks, 'provided'> & { children: ReactNode }) {\n return (\n <KnowledgeLinksContext.Provider value={{ pageHref, refHref, Link, usePagePreview, provided: true }}>\n {children}\n </KnowledgeLinksContext.Provider>\n );\n}\n\n/** What the host gave the provider; for renderers that must decide before drawing a link. */\nexport function useKnowledgeLinksContext(): KnowledgeLinks {\n return useContext(KnowledgeLinksContext);\n}\n\n/** Whether this host mounted a `KnowledgeLinksProvider`, i.e. has Knowledge pages chat prose can link to. */\nexport function useHasKnowledgeLinks(): boolean {\n return useContext(KnowledgeLinksContext).provided === true;\n}\n\nconst LINK_CLASS = 'min-w-0 truncate text-foreground underline-offset-2 hover:underline';\n\n/** Mounted only while the card is open, so the host's lookup runs on hover. Nothing opens until the page is known. */\nfunction PagePreviewContent({\n target,\n usePagePreview,\n}: {\n target: KnowledgePageTarget;\n usePagePreview: UseKnowledgePagePreview;\n}) {\n const card = usePagePreview(target);\n if (!card) return null;\n return (\n <HoverCardContent data-testid=\"knowledge-link-card\" className=\"flex w-max max-w-72 flex-col px-2 py-1\">\n <KnowledgePageCard {...card} />\n </HoverCardContent>\n );\n}\n\n/** A link to a Knowledge page, through the host's link component and route. */\nexport function KnowledgePageLink({\n pageId,\n pageRef,\n children,\n className = LINK_CLASS,\n}: {\n children: ReactNode;\n className?: string;\n} & KnowledgePageTarget) {\n const links = useContext(KnowledgeLinksContext);\n const [open, setOpen] = useState(false);\n const { Link: FrameworkLink } = useLinkComponent();\n const Link = links.Link ?? FrameworkLink;\n const href = pageId !== undefined ? links.pageHref(pageId) : links.refHref?.(pageRef);\n if (!href) return <span className={className}>{children}</span>;\n const link = (\n <Link href={href} className={className}>\n {children}\n </Link>\n );\n const { usePagePreview } = links;\n if (!usePagePreview) return link;\n const target: KnowledgePageTarget = pageId !== undefined ? { pageId } : { pageRef };\n return (\n <HoverCard open={open} onOpenChange={setOpen}>\n <HoverCardTrigger render={<Link href={href} className={className} />}>{children}</HoverCardTrigger>\n {open ? <PagePreviewContent target={target} usePagePreview={usePagePreview} /> : null}\n </HoverCard>\n );\n}\n"],"mappings":";;;;;;;AAmCA,IAAM,wBAAwB,cAA8B;CAC1D,UAAU;CACV,SAAS;AACX,CAAC;;;;;AAMD,SAAgB,uBAAuB,EACrC,UACA,SACA,MACA,gBACA,YAC6D;CAC7D,OACE,oBAAC,sBAAsB,UAAvB;EAAgC,OAAO;GAAE;GAAU;GAAS;GAAM;GAAgB,UAAU;EAAK;EAC9F;CAC6B,CAAA;AAEpC;;AAGA,SAAgB,2BAA2C;CACzD,OAAO,WAAW,qBAAqB;AACzC;;AAGA,SAAgB,uBAAgC;CAC9C,OAAO,WAAW,qBAAqB,CAAC,CAAC,aAAa;AACxD;AAEA,IAAM,aAAa;;AAGnB,SAAS,mBAAmB,EAC1B,QACA,kBAIC;CACD,MAAM,OAAO,eAAe,MAAM;CAClC,IAAI,CAAC,MAAM,OAAO;CAClB,OACE,oBAAC,kBAAD;EAAkB,eAAY;EAAsB,WAAU;EAC5D,UAAA,oBAAC,mBAAD,EAAmB,GAAI,KAAO,CAAA;CACd,CAAA;AAEtB;;AAGA,SAAgB,kBAAkB,EAChC,QACA,SACA,UACA,YAAY,cAIW;CACvB,MAAM,QAAQ,WAAW,qBAAqB;CAC9C,MAAM,CAAC,MAAM,WAAW,SAAS,KAAK;CACtC,MAAM,EAAE,MAAM,kBAAkB,iBAAiB;CACjD,MAAM,OAAO,MAAM,QAAQ;CAC3B,MAAM,OAAO,WAAW,KAAA,IAAY,MAAM,SAAS,MAAM,IAAI,MAAM,UAAU,OAAO;CACpF,IAAI,CAAC,MAAM,OAAO,oBAAC,QAAD;EAAiB;EAAY;CAAe,CAAA;CAC9D,MAAM,OACJ,oBAAC,MAAD;EAAY;EAAiB;EAC1B;CACG,CAAA;CAER,MAAM,EAAE,mBAAmB;CAC3B,IAAI,CAAC,gBAAgB,OAAO;CAE5B,OACE,qBAAC,WAAD;EAAiB;EAAM,cAAc;EAArC,UAAA,CACE,oBAAC,kBAAD;GAAkB,QAAQ,oBAAC,MAAD;IAAY;IAAiB;GAAY,CAAA;GAAI;EAA2B,CAAA,GACjG,OAAO,oBAAC,oBAAD;GAA4B,QAJJ,WAAW,KAAA,IAAY,EAAE,OAAO,IAAI,EAAE,QAAQ;GAIlB;EAAiB,CAAA,IAAI,IACxE;;AAEf"}
|
|
@@ -8,6 +8,8 @@ var PINNED_STATE_ID = "knowledge";
|
|
|
8
8
|
var PINNED_TAGS = /* @__PURE__ */ new Set(["pinned-knowledge", "pinned-knowledge-update"]);
|
|
9
9
|
/** The entry listing stored pins that didn't fit the budget (`PIN_OVERFLOW_ID`). */
|
|
10
10
|
var OVERFLOW_ID = "overflow";
|
|
11
|
+
/** A pinned listing's entry id is this prefix plus the id of the page it lists (`PIN_LIST_ID_PREFIX`). */
|
|
12
|
+
var LIST_ID_PREFIX = "list:";
|
|
11
13
|
var str = (value) => typeof value === "string" && value ? value : void 0;
|
|
12
14
|
function toPage(value) {
|
|
13
15
|
if (!require_domains_chat_messages_signal_data.isRecord(value)) return void 0;
|
|
@@ -15,15 +17,20 @@ function toPage(value) {
|
|
|
15
17
|
if (!id) return void 0;
|
|
16
18
|
const text = str(value.text);
|
|
17
19
|
let name = str(value.name);
|
|
20
|
+
const listOf = id.startsWith(LIST_ID_PREFIX) && id.length > 5 ? id.slice(5) : void 0;
|
|
18
21
|
if (!name && text) {
|
|
19
|
-
|
|
20
|
-
|
|
22
|
+
if (listOf) name = /^Pages under (.+?) \(/.exec(text)?.[1];
|
|
23
|
+
else {
|
|
24
|
+
const at = text.indexOf(` (${id}): `);
|
|
25
|
+
if (at > 0) name = text.slice(0, at);
|
|
26
|
+
}
|
|
21
27
|
}
|
|
22
28
|
return {
|
|
23
29
|
id,
|
|
24
30
|
name,
|
|
25
31
|
scope: str(value.scope),
|
|
26
|
-
text
|
|
32
|
+
text,
|
|
33
|
+
...listOf ? { listOf } : {}
|
|
27
34
|
};
|
|
28
35
|
}
|
|
29
36
|
/** A signal's pinned Knowledge, or undefined when it is some other signal or a shape we don't know. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pinned-knowledge-data.cjs.js","names":["isRecord"],"sources":["../../../../src/domains/chat/knowledge/pinned-knowledge-data.ts"],"sourcesContent":["import { isRecord } from '../messages/signal-data';\nimport type { SignalData } from '../messages/signal-data';\n\n/** The Studio Knowledge page for a page id, opened in Page view. */\nexport const knowledgePageHref = (pageId: string) => `/knowledge?page=${encodeURIComponent(pageId)}&view=page`;\n\n/** Core's pinned Knowledge state: `PINNED_KNOWLEDGE_STATE_ID` and its snapshot/delta tags in `@mastra/core/knowledge`. */\nconst PINNED_STATE_ID = 'knowledge';\nconst PINNED_TAGS = new Set(['pinned-knowledge', 'pinned-knowledge-update']);\n/** The entry listing stored pins that didn't fit the budget (`PIN_OVERFLOW_ID`). */\nconst OVERFLOW_ID = 'overflow';\n\nexport interface PinnedPage {\n id: string;\n /** From the pin itself on newer cores; read off the delivered text's `<name> (<id>): ` prefix on older ones. */\n name?: string;\n scope?: string;\n /** What the agent was given for this pin, verbatim. */\n text?: string;\n}\n\nexport type PinnedRow = PinnedPage & { change?: 'add' | 'change' | 'remove' };\n\nexport interface PinnedKnowledge {\n mode: 'snapshot' | 'delta';\n rows: PinnedRow[];\n /** The \"Also pinned …\" line when stored pins overflowed the budget. */\n overflow?: string;\n}\n\nconst str = (value: unknown): string | undefined => (typeof value === 'string' && value ? value : undefined);\n\nfunction toPage(value: unknown): PinnedPage | undefined {\n if (!isRecord(value)) return undefined;\n const id = str(value.id);\n if (!id) return undefined;\n const text = str(value.text);\n let name = str(value.name);\n if (!name && text) {\n const at = text.indexOf(` (${id}): `);\n
|
|
1
|
+
{"version":3,"file":"pinned-knowledge-data.cjs.js","names":["isRecord"],"sources":["../../../../src/domains/chat/knowledge/pinned-knowledge-data.ts"],"sourcesContent":["import { isRecord } from '../messages/signal-data';\nimport type { SignalData } from '../messages/signal-data';\n\n/** The Studio Knowledge page for a page id, opened in Page view. */\nexport const knowledgePageHref = (pageId: string) => `/knowledge?page=${encodeURIComponent(pageId)}&view=page`;\n\n/** Core's pinned Knowledge state: `PINNED_KNOWLEDGE_STATE_ID` and its snapshot/delta tags in `@mastra/core/knowledge`. */\nconst PINNED_STATE_ID = 'knowledge';\nconst PINNED_TAGS = new Set(['pinned-knowledge', 'pinned-knowledge-update']);\n/** The entry listing stored pins that didn't fit the budget (`PIN_OVERFLOW_ID`). */\nconst OVERFLOW_ID = 'overflow';\n/** A pinned listing's entry id is this prefix plus the id of the page it lists (`PIN_LIST_ID_PREFIX`). */\nconst LIST_ID_PREFIX = 'list:';\n\nexport interface PinnedPage {\n id: string;\n /** From the pin itself on newer cores; read off the delivered text's `<name> (<id>): ` prefix on older ones. */\n name?: string;\n scope?: string;\n /** For a pinned listing, the id of the page whose subtree it lists; the row links there. */\n listOf?: string;\n /** What the agent was given for this pin, verbatim. */\n text?: string;\n}\n\nexport type PinnedRow = PinnedPage & { change?: 'add' | 'change' | 'remove' };\n\nexport interface PinnedKnowledge {\n mode: 'snapshot' | 'delta';\n rows: PinnedRow[];\n /** The \"Also pinned …\" line when stored pins overflowed the budget. */\n overflow?: string;\n}\n\nconst str = (value: unknown): string | undefined => (typeof value === 'string' && value ? value : undefined);\n\nfunction toPage(value: unknown): PinnedPage | undefined {\n if (!isRecord(value)) return undefined;\n const id = str(value.id);\n if (!id) return undefined;\n const text = str(value.text);\n let name = str(value.name);\n const listOf =\n id.startsWith(LIST_ID_PREFIX) && id.length > LIST_ID_PREFIX.length ? id.slice(LIST_ID_PREFIX.length) : undefined;\n if (!name && text) {\n if (listOf) name = /^Pages under (.+?) \\(/.exec(text)?.[1];\n else {\n const at = text.indexOf(` (${id}): `);\n if (at > 0) name = text.slice(0, at);\n }\n }\n return { id, name, scope: str(value.scope), text, ...(listOf ? { listOf } : {}) };\n}\n\n/** A signal's pinned Knowledge, or undefined when it is some other signal or a shape we don't know. */\nexport function pinnedKnowledgeFromSignal(\n signal: Pick<SignalData, 'tagName' | 'metadata' | 'attributes'>,\n): PinnedKnowledge | undefined {\n const metadata = isRecord(signal.metadata) ? signal.metadata : undefined;\n const state = isRecord(metadata?.state) ? metadata.state : undefined;\n const stateId = state?.id ?? signal.attributes?.id;\n if (stateId !== PINNED_STATE_ID && !(signal.tagName && PINNED_TAGS.has(signal.tagName))) return undefined;\n const delta = isRecord(metadata?.delta) ? metadata.delta : undefined;\n const stateMode = state?.mode ?? signal.attributes?.mode;\n const mode =\n stateMode === 'delta' || (!stateMode && signal.tagName === 'pinned-knowledge-update') ? 'delta' : 'snapshot';\n\n let overflow: string | undefined;\n const rows: PinnedRow[] = [];\n if (mode === 'delta') {\n if (!Array.isArray(delta?.ops)) return undefined;\n for (const op of delta.ops) {\n if (!isRecord(op)) continue;\n if (op.op === 'remove') {\n const removed = toPage(op);\n if (removed && removed.id !== OVERFLOW_ID) rows.push({ ...removed, change: 'remove' });\n continue;\n }\n if (op.op !== 'add' && op.op !== 'change') continue;\n const page = toPage(op.pin);\n if (!page) continue;\n if (page.id === OVERFLOW_ID) overflow = page.text;\n else rows.push({ ...page, change: op.op });\n }\n } else {\n const value = isRecord(metadata?.value) ? metadata.value : undefined;\n if (!Array.isArray(value?.pins)) return undefined;\n for (const pin of value.pins) {\n const page = toPage(pin);\n if (!page) continue;\n if (page.id === OVERFLOW_ID) overflow = page.text;\n else rows.push(page);\n }\n }\n return { mode, rows, overflow };\n}\n"],"mappings":";;;;AAIA,IAAa,qBAAqB,WAAmB,mBAAmB,mBAAmB,MAAM,EAAE;;AAGnG,IAAM,kBAAkB;AACxB,IAAM,8BAAc,IAAI,IAAI,CAAC,oBAAoB,yBAAyB,CAAC;;AAE3E,IAAM,cAAc;;AAEpB,IAAM,iBAAiB;AAsBvB,IAAM,OAAO,UAAwC,OAAO,UAAU,YAAY,QAAQ,QAAQ,KAAA;AAElG,SAAS,OAAO,OAAwC;CACtD,IAAI,CAACA,0CAAAA,SAAS,KAAK,GAAG,OAAO,KAAA;CAC7B,MAAM,KAAK,IAAI,MAAM,EAAE;CACvB,IAAI,CAAC,IAAI,OAAO,KAAA;CAChB,MAAM,OAAO,IAAI,MAAM,IAAI;CAC3B,IAAI,OAAO,IAAI,MAAM,IAAI;CACzB,MAAM,SACJ,GAAG,WAAW,cAAc,KAAK,GAAG,SAAS,IAAwB,GAAG,MAAM,CAAqB,IAAI,KAAA;CACzG,IAAI,CAAC,QAAQ,MAAM;EACjB,IAAI,QAAQ,OAAO,wBAAwB,KAAK,IAAI,CAAC,GAAG;OACnD;GACH,MAAM,KAAK,KAAK,QAAQ,KAAK,GAAG,IAAI;GACpC,IAAI,KAAK,GAAG,OAAO,KAAK,MAAM,GAAG,EAAE;EACrC;CACF;CACA,OAAO;EAAE;EAAI;EAAM,OAAO,IAAI,MAAM,KAAK;EAAG;EAAM,GAAI,SAAS,EAAE,OAAO,IAAI,CAAC;CAAG;AAClF;;AAGA,SAAgB,0BACd,QAC6B;CAC7B,MAAM,WAAWA,0CAAAA,SAAS,OAAO,QAAQ,IAAI,OAAO,WAAW,KAAA;CAC/D,MAAM,QAAQA,0CAAAA,SAAS,UAAU,KAAK,IAAI,SAAS,QAAQ,KAAA;CAE3D,KADgB,OAAO,MAAM,OAAO,YAAY,QAChC,mBAAmB,EAAE,OAAO,WAAW,YAAY,IAAI,OAAO,OAAO,IAAI,OAAO,KAAA;CAChG,MAAM,QAAQA,0CAAAA,SAAS,UAAU,KAAK,IAAI,SAAS,QAAQ,KAAA;CAC3D,MAAM,YAAY,OAAO,QAAQ,OAAO,YAAY;CACpD,MAAM,OACJ,cAAc,WAAY,CAAC,aAAa,OAAO,YAAY,4BAA6B,UAAU;CAEpG,IAAI;CACJ,MAAM,OAAoB,CAAC;CAC3B,IAAI,SAAS,SAAS;EACpB,IAAI,CAAC,MAAM,QAAQ,OAAO,GAAG,GAAG,OAAO,KAAA;EACvC,KAAK,MAAM,MAAM,MAAM,KAAK;GAC1B,IAAI,CAACA,0CAAAA,SAAS,EAAE,GAAG;GACnB,IAAI,GAAG,OAAO,UAAU;IACtB,MAAM,UAAU,OAAO,EAAE;IACzB,IAAI,WAAW,QAAQ,OAAO,aAAa,KAAK,KAAK;KAAE,GAAG;KAAS,QAAQ;IAAS,CAAC;IACrF;GACF;GACA,IAAI,GAAG,OAAO,SAAS,GAAG,OAAO,UAAU;GAC3C,MAAM,OAAO,OAAO,GAAG,GAAG;GAC1B,IAAI,CAAC,MAAM;GACX,IAAI,KAAK,OAAO,aAAa,WAAW,KAAK;QACxC,KAAK,KAAK;IAAE,GAAG;IAAM,QAAQ,GAAG;GAAG,CAAC;EAC3C;CACF,OAAO;EACL,MAAM,QAAQA,0CAAAA,SAAS,UAAU,KAAK,IAAI,SAAS,QAAQ,KAAA;EAC3D,IAAI,CAAC,MAAM,QAAQ,OAAO,IAAI,GAAG,OAAO,KAAA;EACxC,KAAK,MAAM,OAAO,MAAM,MAAM;GAC5B,MAAM,OAAO,OAAO,GAAG;GACvB,IAAI,CAAC,MAAM;GACX,IAAI,KAAK,OAAO,aAAa,WAAW,KAAK;QACxC,KAAK,KAAK,IAAI;EACrB;CACF;CACA,OAAO;EAAE;EAAM;EAAM;CAAS;AAChC"}
|
|
@@ -7,6 +7,8 @@ var PINNED_STATE_ID = "knowledge";
|
|
|
7
7
|
var PINNED_TAGS = /* @__PURE__ */ new Set(["pinned-knowledge", "pinned-knowledge-update"]);
|
|
8
8
|
/** The entry listing stored pins that didn't fit the budget (`PIN_OVERFLOW_ID`). */
|
|
9
9
|
var OVERFLOW_ID = "overflow";
|
|
10
|
+
/** A pinned listing's entry id is this prefix plus the id of the page it lists (`PIN_LIST_ID_PREFIX`). */
|
|
11
|
+
var LIST_ID_PREFIX = "list:";
|
|
10
12
|
var str = (value) => typeof value === "string" && value ? value : void 0;
|
|
11
13
|
function toPage(value) {
|
|
12
14
|
if (!isRecord(value)) return void 0;
|
|
@@ -14,15 +16,20 @@ function toPage(value) {
|
|
|
14
16
|
if (!id) return void 0;
|
|
15
17
|
const text = str(value.text);
|
|
16
18
|
let name = str(value.name);
|
|
19
|
+
const listOf = id.startsWith(LIST_ID_PREFIX) && id.length > 5 ? id.slice(5) : void 0;
|
|
17
20
|
if (!name && text) {
|
|
18
|
-
|
|
19
|
-
|
|
21
|
+
if (listOf) name = /^Pages under (.+?) \(/.exec(text)?.[1];
|
|
22
|
+
else {
|
|
23
|
+
const at = text.indexOf(` (${id}): `);
|
|
24
|
+
if (at > 0) name = text.slice(0, at);
|
|
25
|
+
}
|
|
20
26
|
}
|
|
21
27
|
return {
|
|
22
28
|
id,
|
|
23
29
|
name,
|
|
24
30
|
scope: str(value.scope),
|
|
25
|
-
text
|
|
31
|
+
text,
|
|
32
|
+
...listOf ? { listOf } : {}
|
|
26
33
|
};
|
|
27
34
|
}
|
|
28
35
|
/** A signal's pinned Knowledge, or undefined when it is some other signal or a shape we don't know. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pinned-knowledge-data.es.js","names":[],"sources":["../../../../src/domains/chat/knowledge/pinned-knowledge-data.ts"],"sourcesContent":["import { isRecord } from '../messages/signal-data';\nimport type { SignalData } from '../messages/signal-data';\n\n/** The Studio Knowledge page for a page id, opened in Page view. */\nexport const knowledgePageHref = (pageId: string) => `/knowledge?page=${encodeURIComponent(pageId)}&view=page`;\n\n/** Core's pinned Knowledge state: `PINNED_KNOWLEDGE_STATE_ID` and its snapshot/delta tags in `@mastra/core/knowledge`. */\nconst PINNED_STATE_ID = 'knowledge';\nconst PINNED_TAGS = new Set(['pinned-knowledge', 'pinned-knowledge-update']);\n/** The entry listing stored pins that didn't fit the budget (`PIN_OVERFLOW_ID`). */\nconst OVERFLOW_ID = 'overflow';\n\nexport interface PinnedPage {\n id: string;\n /** From the pin itself on newer cores; read off the delivered text's `<name> (<id>): ` prefix on older ones. */\n name?: string;\n scope?: string;\n /** What the agent was given for this pin, verbatim. */\n text?: string;\n}\n\nexport type PinnedRow = PinnedPage & { change?: 'add' | 'change' | 'remove' };\n\nexport interface PinnedKnowledge {\n mode: 'snapshot' | 'delta';\n rows: PinnedRow[];\n /** The \"Also pinned …\" line when stored pins overflowed the budget. */\n overflow?: string;\n}\n\nconst str = (value: unknown): string | undefined => (typeof value === 'string' && value ? value : undefined);\n\nfunction toPage(value: unknown): PinnedPage | undefined {\n if (!isRecord(value)) return undefined;\n const id = str(value.id);\n if (!id) return undefined;\n const text = str(value.text);\n let name = str(value.name);\n if (!name && text) {\n const at = text.indexOf(` (${id}): `);\n
|
|
1
|
+
{"version":3,"file":"pinned-knowledge-data.es.js","names":[],"sources":["../../../../src/domains/chat/knowledge/pinned-knowledge-data.ts"],"sourcesContent":["import { isRecord } from '../messages/signal-data';\nimport type { SignalData } from '../messages/signal-data';\n\n/** The Studio Knowledge page for a page id, opened in Page view. */\nexport const knowledgePageHref = (pageId: string) => `/knowledge?page=${encodeURIComponent(pageId)}&view=page`;\n\n/** Core's pinned Knowledge state: `PINNED_KNOWLEDGE_STATE_ID` and its snapshot/delta tags in `@mastra/core/knowledge`. */\nconst PINNED_STATE_ID = 'knowledge';\nconst PINNED_TAGS = new Set(['pinned-knowledge', 'pinned-knowledge-update']);\n/** The entry listing stored pins that didn't fit the budget (`PIN_OVERFLOW_ID`). */\nconst OVERFLOW_ID = 'overflow';\n/** A pinned listing's entry id is this prefix plus the id of the page it lists (`PIN_LIST_ID_PREFIX`). */\nconst LIST_ID_PREFIX = 'list:';\n\nexport interface PinnedPage {\n id: string;\n /** From the pin itself on newer cores; read off the delivered text's `<name> (<id>): ` prefix on older ones. */\n name?: string;\n scope?: string;\n /** For a pinned listing, the id of the page whose subtree it lists; the row links there. */\n listOf?: string;\n /** What the agent was given for this pin, verbatim. */\n text?: string;\n}\n\nexport type PinnedRow = PinnedPage & { change?: 'add' | 'change' | 'remove' };\n\nexport interface PinnedKnowledge {\n mode: 'snapshot' | 'delta';\n rows: PinnedRow[];\n /** The \"Also pinned …\" line when stored pins overflowed the budget. */\n overflow?: string;\n}\n\nconst str = (value: unknown): string | undefined => (typeof value === 'string' && value ? value : undefined);\n\nfunction toPage(value: unknown): PinnedPage | undefined {\n if (!isRecord(value)) return undefined;\n const id = str(value.id);\n if (!id) return undefined;\n const text = str(value.text);\n let name = str(value.name);\n const listOf =\n id.startsWith(LIST_ID_PREFIX) && id.length > LIST_ID_PREFIX.length ? id.slice(LIST_ID_PREFIX.length) : undefined;\n if (!name && text) {\n if (listOf) name = /^Pages under (.+?) \\(/.exec(text)?.[1];\n else {\n const at = text.indexOf(` (${id}): `);\n if (at > 0) name = text.slice(0, at);\n }\n }\n return { id, name, scope: str(value.scope), text, ...(listOf ? { listOf } : {}) };\n}\n\n/** A signal's pinned Knowledge, or undefined when it is some other signal or a shape we don't know. */\nexport function pinnedKnowledgeFromSignal(\n signal: Pick<SignalData, 'tagName' | 'metadata' | 'attributes'>,\n): PinnedKnowledge | undefined {\n const metadata = isRecord(signal.metadata) ? signal.metadata : undefined;\n const state = isRecord(metadata?.state) ? metadata.state : undefined;\n const stateId = state?.id ?? signal.attributes?.id;\n if (stateId !== PINNED_STATE_ID && !(signal.tagName && PINNED_TAGS.has(signal.tagName))) return undefined;\n const delta = isRecord(metadata?.delta) ? metadata.delta : undefined;\n const stateMode = state?.mode ?? signal.attributes?.mode;\n const mode =\n stateMode === 'delta' || (!stateMode && signal.tagName === 'pinned-knowledge-update') ? 'delta' : 'snapshot';\n\n let overflow: string | undefined;\n const rows: PinnedRow[] = [];\n if (mode === 'delta') {\n if (!Array.isArray(delta?.ops)) return undefined;\n for (const op of delta.ops) {\n if (!isRecord(op)) continue;\n if (op.op === 'remove') {\n const removed = toPage(op);\n if (removed && removed.id !== OVERFLOW_ID) rows.push({ ...removed, change: 'remove' });\n continue;\n }\n if (op.op !== 'add' && op.op !== 'change') continue;\n const page = toPage(op.pin);\n if (!page) continue;\n if (page.id === OVERFLOW_ID) overflow = page.text;\n else rows.push({ ...page, change: op.op });\n }\n } else {\n const value = isRecord(metadata?.value) ? metadata.value : undefined;\n if (!Array.isArray(value?.pins)) return undefined;\n for (const pin of value.pins) {\n const page = toPage(pin);\n if (!page) continue;\n if (page.id === OVERFLOW_ID) overflow = page.text;\n else rows.push(page);\n }\n }\n return { mode, rows, overflow };\n}\n"],"mappings":";;;AAIA,IAAa,qBAAqB,WAAmB,mBAAmB,mBAAmB,MAAM,EAAE;;AAGnG,IAAM,kBAAkB;AACxB,IAAM,8BAAc,IAAI,IAAI,CAAC,oBAAoB,yBAAyB,CAAC;;AAE3E,IAAM,cAAc;;AAEpB,IAAM,iBAAiB;AAsBvB,IAAM,OAAO,UAAwC,OAAO,UAAU,YAAY,QAAQ,QAAQ,KAAA;AAElG,SAAS,OAAO,OAAwC;CACtD,IAAI,CAAC,SAAS,KAAK,GAAG,OAAO,KAAA;CAC7B,MAAM,KAAK,IAAI,MAAM,EAAE;CACvB,IAAI,CAAC,IAAI,OAAO,KAAA;CAChB,MAAM,OAAO,IAAI,MAAM,IAAI;CAC3B,IAAI,OAAO,IAAI,MAAM,IAAI;CACzB,MAAM,SACJ,GAAG,WAAW,cAAc,KAAK,GAAG,SAAS,IAAwB,GAAG,MAAM,CAAqB,IAAI,KAAA;CACzG,IAAI,CAAC,QAAQ,MAAM;EACjB,IAAI,QAAQ,OAAO,wBAAwB,KAAK,IAAI,CAAC,GAAG;OACnD;GACH,MAAM,KAAK,KAAK,QAAQ,KAAK,GAAG,IAAI;GACpC,IAAI,KAAK,GAAG,OAAO,KAAK,MAAM,GAAG,EAAE;EACrC;CACF;CACA,OAAO;EAAE;EAAI;EAAM,OAAO,IAAI,MAAM,KAAK;EAAG;EAAM,GAAI,SAAS,EAAE,OAAO,IAAI,CAAC;CAAG;AAClF;;AAGA,SAAgB,0BACd,QAC6B;CAC7B,MAAM,WAAW,SAAS,OAAO,QAAQ,IAAI,OAAO,WAAW,KAAA;CAC/D,MAAM,QAAQ,SAAS,UAAU,KAAK,IAAI,SAAS,QAAQ,KAAA;CAE3D,KADgB,OAAO,MAAM,OAAO,YAAY,QAChC,mBAAmB,EAAE,OAAO,WAAW,YAAY,IAAI,OAAO,OAAO,IAAI,OAAO,KAAA;CAChG,MAAM,QAAQ,SAAS,UAAU,KAAK,IAAI,SAAS,QAAQ,KAAA;CAC3D,MAAM,YAAY,OAAO,QAAQ,OAAO,YAAY;CACpD,MAAM,OACJ,cAAc,WAAY,CAAC,aAAa,OAAO,YAAY,4BAA6B,UAAU;CAEpG,IAAI;CACJ,MAAM,OAAoB,CAAC;CAC3B,IAAI,SAAS,SAAS;EACpB,IAAI,CAAC,MAAM,QAAQ,OAAO,GAAG,GAAG,OAAO,KAAA;EACvC,KAAK,MAAM,MAAM,MAAM,KAAK;GAC1B,IAAI,CAAC,SAAS,EAAE,GAAG;GACnB,IAAI,GAAG,OAAO,UAAU;IACtB,MAAM,UAAU,OAAO,EAAE;IACzB,IAAI,WAAW,QAAQ,OAAO,aAAa,KAAK,KAAK;KAAE,GAAG;KAAS,QAAQ;IAAS,CAAC;IACrF;GACF;GACA,IAAI,GAAG,OAAO,SAAS,GAAG,OAAO,UAAU;GAC3C,MAAM,OAAO,OAAO,GAAG,GAAG;GAC1B,IAAI,CAAC,MAAM;GACX,IAAI,KAAK,OAAO,aAAa,WAAW,KAAK;QACxC,KAAK,KAAK;IAAE,GAAG;IAAM,QAAQ,GAAG;GAAG,CAAC;EAC3C;CACF,OAAO;EACL,MAAM,QAAQ,SAAS,UAAU,KAAK,IAAI,SAAS,QAAQ,KAAA;EAC3D,IAAI,CAAC,MAAM,QAAQ,OAAO,IAAI,GAAG,OAAO,KAAA;EACxC,KAAK,MAAM,OAAO,MAAM,MAAM;GAC5B,MAAM,OAAO,OAAO,GAAG;GACvB,IAAI,CAAC,MAAM;GACX,IAAI,KAAK,OAAO,aAAa,WAAW,KAAK;QACxC,KAAK,KAAK,IAAI;EACrB;CACF;CACA,OAAO;EAAE;EAAM;EAAM;CAAS;AAChC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_Txt = require("../../../Txt-BnoSqxKE.cjs");
|
|
3
|
-
const require_activity = require("../../../activity-
|
|
3
|
+
const require_activity = require("../../../activity-CcQZeDYi.cjs");
|
|
4
4
|
const require_Badge = require("../../../Badge-DZ6r6bcw.cjs");
|
|
5
5
|
const require_domains_chat_knowledge_knowledge_links = require("./knowledge-links.cjs.js");
|
|
6
6
|
let react = require("react");
|
|
@@ -50,10 +50,14 @@ function PinnedRowItem({ row }) {
|
|
|
50
50
|
variant: "label",
|
|
51
51
|
className: `min-w-0 truncate ${removed ? "line-through opacity-70" : ""}`,
|
|
52
52
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_domains_chat_knowledge_knowledge_links.KnowledgePageLink, {
|
|
53
|
-
pageId: row.id,
|
|
53
|
+
pageId: row.listOf ?? row.id,
|
|
54
54
|
children: row.name ?? "A pinned page"
|
|
55
55
|
})
|
|
56
56
|
}),
|
|
57
|
+
row.listOf ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Badge.Badge, {
|
|
58
|
+
size: "xs",
|
|
59
|
+
children: "Listing"
|
|
60
|
+
}) : null,
|
|
57
61
|
row.scope ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Txt.Txt, {
|
|
58
62
|
as: "span",
|
|
59
63
|
variant: "meta",
|
|
@@ -69,7 +73,7 @@ function PinnedRowItem({ row }) {
|
|
|
69
73
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Txt.Txt, {
|
|
70
74
|
as: "span",
|
|
71
75
|
variant: "meta",
|
|
72
|
-
children: open ? "Hide text" : "Text"
|
|
76
|
+
children: open ? row.listOf ? "Hide pages" : "Hide text" : row.listOf ? "Pages" : "Text"
|
|
73
77
|
})
|
|
74
78
|
}) : null
|
|
75
79
|
]
|
|
@@ -77,6 +81,7 @@ function PinnedRowItem({ row }) {
|
|
|
77
81
|
variant: "caption",
|
|
78
82
|
tone: "muted",
|
|
79
83
|
className: "ml-5 break-words whitespace-pre-wrap",
|
|
84
|
+
"data-testid": row.listOf ? "pinned-knowledge-listing" : void 0,
|
|
80
85
|
children: row.text
|
|
81
86
|
}) : null]
|
|
82
87
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pinned-knowledge.cjs.js","names":["useState","Txt","KnowledgePageLink","
|
|
1
|
+
{"version":3,"file":"pinned-knowledge.cjs.js","names":["useState","Txt","KnowledgePageLink","Badge","ActivityItem","Pin"],"sources":["../../../../src/domains/chat/knowledge/pinned-knowledge.tsx"],"sourcesContent":["import { Pin } from 'lucide-react';\nimport { useState } from 'react';\nimport { KnowledgePageLink } from './knowledge-links';\nimport type { PinnedKnowledge, PinnedRow } from './pinned-knowledge-data';\nimport { ActivityItem } from '@/ds/components/ai/activity';\nimport { Badge } from '@/ds/components/Badge';\nimport { Txt } from '@/ds/components/Txt';\n\nconst CHANGE_MARK = { add: '+', change: '~', remove: '−' } as const;\nconst CHANGE_LABEL = { add: 'Added', change: 'Changed', remove: 'Removed' } as const;\n\nfunction summary({ mode, rows }: PinnedKnowledge): string {\n if (mode === 'snapshot') return rows.length === 1 ? '1 page' : `${rows.length} pages`;\n const count = (change: PinnedRow['change']) => rows.filter(row => row.change === change).length;\n return (['add', 'change', 'remove'] as const)\n .filter(change => count(change) > 0)\n .map(change => `${CHANGE_MARK[change]}${count(change)}`)\n .join(' ');\n}\n\nfunction PinnedRowItem({ row }: { row: PinnedRow }) {\n const [open, setOpen] = useState(false);\n const removed = row.change === 'remove';\n return (\n <li className=\"flex flex-col gap-1\" data-testid=\"pinned-knowledge-row\" data-change={row.change}>\n <div className=\"flex min-w-0 items-baseline gap-2\">\n {row.change ? (\n <span\n aria-label={CHANGE_LABEL[row.change]}\n className={`w-3 shrink-0 text-center ${removed ? 'text-muted-foreground' : 'text-foreground'}`}\n >\n <Txt as=\"span\" variant=\"label\">\n {CHANGE_MARK[row.change]}\n </Txt>\n </span>\n ) : null}\n <Txt as=\"span\" variant=\"label\" className={`min-w-0 truncate ${removed ? 'line-through opacity-70' : ''}`}>\n <KnowledgePageLink pageId={row.listOf ?? row.id}>{row.name ?? 'A pinned page'}</KnowledgePageLink>\n </Txt>\n {row.listOf ? <Badge size=\"xs\">Listing</Badge> : null}\n {row.scope ? (\n <Txt as=\"span\" variant=\"meta\" tone=\"muted\" className=\"truncate\">\n {row.scope}\n </Txt>\n ) : null}\n {row.text && !removed ? (\n <button\n type=\"button\"\n aria-expanded={open}\n className=\"ml-auto shrink-0 rounded px-1 text-muted-foreground hover:bg-fill hover:text-foreground\"\n onClick={() => setOpen(value => !value)}\n >\n <Txt as=\"span\" variant=\"meta\">\n {open ? (row.listOf ? 'Hide pages' : 'Hide text') : row.listOf ? 'Pages' : 'Text'}\n </Txt>\n </button>\n ) : null}\n </div>\n {open && row.text ? (\n <Txt\n variant=\"caption\"\n tone=\"muted\"\n className=\"ml-5 break-words whitespace-pre-wrap\"\n data-testid={row.listOf ? 'pinned-knowledge-listing' : undefined}\n >\n {row.text}\n </Txt>\n ) : null}\n </li>\n );\n}\n\n/**\n * Pinned Knowledge as the agent received it: a snapshot lists every pinned page, a delta lists the pages\n * added, changed or removed since. Each page links to the Knowledge viewer; its delivered text opens below it.\n */\nexport function PinnedKnowledgeActivity({ pinned, defaultOpen }: { pinned: PinnedKnowledge; defaultOpen?: boolean }) {\n const label = pinned.mode === 'snapshot' ? 'Pinned knowledge' : 'Pinned knowledge updated';\n return (\n <ActivityItem\n icon={<Pin className=\"text-badge-amber-indicator\" aria-hidden />}\n label={label}\n detail={summary(pinned)}\n badges={<Badge size=\"xs\">{pinned.mode}</Badge>}\n defaultOpen={defaultOpen}\n data-signal-kind=\"state\"\n data-testid=\"pinned-knowledge\"\n aria-label={`Signal: ${label}`}\n >\n <div className=\"flex flex-col gap-2\">\n {pinned.rows.length ? (\n <ul className=\"flex flex-col gap-1.5\">\n {pinned.rows.map(row => (\n <PinnedRowItem key={`${row.change ?? 'pin'}-${row.id}`} row={row} />\n ))}\n </ul>\n ) : pinned.overflow ? null : (\n <Txt variant=\"meta\" tone=\"muted\">\n No pinned pages\n </Txt>\n )}\n {pinned.overflow ? (\n <Txt variant=\"meta\" tone=\"muted\">\n {pinned.overflow}\n </Txt>\n ) : null}\n </div>\n </ActivityItem>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as Txt } from "../../../Txt-BM6TVV_c.js";
|
|
2
|
-
import { m as ActivityItem } from "../../../activity-
|
|
2
|
+
import { m as ActivityItem } from "../../../activity-C8Ql81WM.js";
|
|
3
3
|
import { t as Badge } from "../../../Badge-aVu5iGAF.js";
|
|
4
4
|
import { KnowledgePageLink } from "./knowledge-links.es.js";
|
|
5
5
|
import { useState } from "react";
|
|
@@ -49,10 +49,14 @@ function PinnedRowItem({ row }) {
|
|
|
49
49
|
variant: "label",
|
|
50
50
|
className: `min-w-0 truncate ${removed ? "line-through opacity-70" : ""}`,
|
|
51
51
|
children: /* @__PURE__ */ jsx(KnowledgePageLink, {
|
|
52
|
-
pageId: row.id,
|
|
52
|
+
pageId: row.listOf ?? row.id,
|
|
53
53
|
children: row.name ?? "A pinned page"
|
|
54
54
|
})
|
|
55
55
|
}),
|
|
56
|
+
row.listOf ? /* @__PURE__ */ jsx(Badge, {
|
|
57
|
+
size: "xs",
|
|
58
|
+
children: "Listing"
|
|
59
|
+
}) : null,
|
|
56
60
|
row.scope ? /* @__PURE__ */ jsx(Txt, {
|
|
57
61
|
as: "span",
|
|
58
62
|
variant: "meta",
|
|
@@ -68,7 +72,7 @@ function PinnedRowItem({ row }) {
|
|
|
68
72
|
children: /* @__PURE__ */ jsx(Txt, {
|
|
69
73
|
as: "span",
|
|
70
74
|
variant: "meta",
|
|
71
|
-
children: open ? "Hide text" : "Text"
|
|
75
|
+
children: open ? row.listOf ? "Hide pages" : "Hide text" : row.listOf ? "Pages" : "Text"
|
|
72
76
|
})
|
|
73
77
|
}) : null
|
|
74
78
|
]
|
|
@@ -76,6 +80,7 @@ function PinnedRowItem({ row }) {
|
|
|
76
80
|
variant: "caption",
|
|
77
81
|
tone: "muted",
|
|
78
82
|
className: "ml-5 break-words whitespace-pre-wrap",
|
|
83
|
+
"data-testid": row.listOf ? "pinned-knowledge-listing" : void 0,
|
|
79
84
|
children: row.text
|
|
80
85
|
}) : null]
|
|
81
86
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pinned-knowledge.es.js","names":[],"sources":["../../../../src/domains/chat/knowledge/pinned-knowledge.tsx"],"sourcesContent":["import { Pin } from 'lucide-react';\nimport { useState } from 'react';\nimport { KnowledgePageLink } from './knowledge-links';\nimport type { PinnedKnowledge, PinnedRow } from './pinned-knowledge-data';\nimport { ActivityItem } from '@/ds/components/ai/activity';\nimport { Badge } from '@/ds/components/Badge';\nimport { Txt } from '@/ds/components/Txt';\n\nconst CHANGE_MARK = { add: '+', change: '~', remove: '−' } as const;\nconst CHANGE_LABEL = { add: 'Added', change: 'Changed', remove: 'Removed' } as const;\n\nfunction summary({ mode, rows }: PinnedKnowledge): string {\n if (mode === 'snapshot') return rows.length === 1 ? '1 page' : `${rows.length} pages`;\n const count = (change: PinnedRow['change']) => rows.filter(row => row.change === change).length;\n return (['add', 'change', 'remove'] as const)\n .filter(change => count(change) > 0)\n .map(change => `${CHANGE_MARK[change]}${count(change)}`)\n .join(' ');\n}\n\nfunction PinnedRowItem({ row }: { row: PinnedRow }) {\n const [open, setOpen] = useState(false);\n const removed = row.change === 'remove';\n return (\n <li className=\"flex flex-col gap-1\" data-testid=\"pinned-knowledge-row\" data-change={row.change}>\n <div className=\"flex min-w-0 items-baseline gap-2\">\n {row.change ? (\n <span\n aria-label={CHANGE_LABEL[row.change]}\n className={`w-3 shrink-0 text-center ${removed ? 'text-muted-foreground' : 'text-foreground'}`}\n >\n <Txt as=\"span\" variant=\"label\">\n {CHANGE_MARK[row.change]}\n </Txt>\n </span>\n ) : null}\n <Txt as=\"span\" variant=\"label\" className={`min-w-0 truncate ${removed ? 'line-through opacity-70' : ''}`}>\n <KnowledgePageLink pageId={row.id}>{row.name ?? 'A pinned page'}</KnowledgePageLink>\n </Txt>\n {row.scope ? (\n <Txt as=\"span\" variant=\"meta\" tone=\"muted\" className=\"truncate\">\n {row.scope}\n </Txt>\n ) : null}\n {row.text && !removed ? (\n <button\n type=\"button\"\n aria-expanded={open}\n className=\"ml-auto shrink-0 rounded px-1 text-muted-foreground hover:bg-fill hover:text-foreground\"\n onClick={() => setOpen(value => !value)}\n >\n <Txt as=\"span\" variant=\"meta\">\n {open ? 'Hide text' : 'Text'}\n </Txt>\n </button>\n ) : null}\n </div>\n {open && row.text ? (\n <Txt
|
|
1
|
+
{"version":3,"file":"pinned-knowledge.es.js","names":[],"sources":["../../../../src/domains/chat/knowledge/pinned-knowledge.tsx"],"sourcesContent":["import { Pin } from 'lucide-react';\nimport { useState } from 'react';\nimport { KnowledgePageLink } from './knowledge-links';\nimport type { PinnedKnowledge, PinnedRow } from './pinned-knowledge-data';\nimport { ActivityItem } from '@/ds/components/ai/activity';\nimport { Badge } from '@/ds/components/Badge';\nimport { Txt } from '@/ds/components/Txt';\n\nconst CHANGE_MARK = { add: '+', change: '~', remove: '−' } as const;\nconst CHANGE_LABEL = { add: 'Added', change: 'Changed', remove: 'Removed' } as const;\n\nfunction summary({ mode, rows }: PinnedKnowledge): string {\n if (mode === 'snapshot') return rows.length === 1 ? '1 page' : `${rows.length} pages`;\n const count = (change: PinnedRow['change']) => rows.filter(row => row.change === change).length;\n return (['add', 'change', 'remove'] as const)\n .filter(change => count(change) > 0)\n .map(change => `${CHANGE_MARK[change]}${count(change)}`)\n .join(' ');\n}\n\nfunction PinnedRowItem({ row }: { row: PinnedRow }) {\n const [open, setOpen] = useState(false);\n const removed = row.change === 'remove';\n return (\n <li className=\"flex flex-col gap-1\" data-testid=\"pinned-knowledge-row\" data-change={row.change}>\n <div className=\"flex min-w-0 items-baseline gap-2\">\n {row.change ? (\n <span\n aria-label={CHANGE_LABEL[row.change]}\n className={`w-3 shrink-0 text-center ${removed ? 'text-muted-foreground' : 'text-foreground'}`}\n >\n <Txt as=\"span\" variant=\"label\">\n {CHANGE_MARK[row.change]}\n </Txt>\n </span>\n ) : null}\n <Txt as=\"span\" variant=\"label\" className={`min-w-0 truncate ${removed ? 'line-through opacity-70' : ''}`}>\n <KnowledgePageLink pageId={row.listOf ?? row.id}>{row.name ?? 'A pinned page'}</KnowledgePageLink>\n </Txt>\n {row.listOf ? <Badge size=\"xs\">Listing</Badge> : null}\n {row.scope ? (\n <Txt as=\"span\" variant=\"meta\" tone=\"muted\" className=\"truncate\">\n {row.scope}\n </Txt>\n ) : null}\n {row.text && !removed ? (\n <button\n type=\"button\"\n aria-expanded={open}\n className=\"ml-auto shrink-0 rounded px-1 text-muted-foreground hover:bg-fill hover:text-foreground\"\n onClick={() => setOpen(value => !value)}\n >\n <Txt as=\"span\" variant=\"meta\">\n {open ? (row.listOf ? 'Hide pages' : 'Hide text') : row.listOf ? 'Pages' : 'Text'}\n </Txt>\n </button>\n ) : null}\n </div>\n {open && row.text ? (\n <Txt\n variant=\"caption\"\n tone=\"muted\"\n className=\"ml-5 break-words whitespace-pre-wrap\"\n data-testid={row.listOf ? 'pinned-knowledge-listing' : undefined}\n >\n {row.text}\n </Txt>\n ) : null}\n </li>\n );\n}\n\n/**\n * Pinned Knowledge as the agent received it: a snapshot lists every pinned page, a delta lists the pages\n * added, changed or removed since. Each page links to the Knowledge viewer; its delivered text opens below it.\n */\nexport function PinnedKnowledgeActivity({ pinned, defaultOpen }: { pinned: PinnedKnowledge; defaultOpen?: boolean }) {\n const label = pinned.mode === 'snapshot' ? 'Pinned knowledge' : 'Pinned knowledge updated';\n return (\n <ActivityItem\n icon={<Pin className=\"text-badge-amber-indicator\" aria-hidden />}\n label={label}\n detail={summary(pinned)}\n badges={<Badge size=\"xs\">{pinned.mode}</Badge>}\n defaultOpen={defaultOpen}\n data-signal-kind=\"state\"\n data-testid=\"pinned-knowledge\"\n aria-label={`Signal: ${label}`}\n >\n <div className=\"flex flex-col gap-2\">\n {pinned.rows.length ? (\n <ul className=\"flex flex-col gap-1.5\">\n {pinned.rows.map(row => (\n <PinnedRowItem key={`${row.change ?? 'pin'}-${row.id}`} row={row} />\n ))}\n </ul>\n ) : pinned.overflow ? null : (\n <Txt variant=\"meta\" tone=\"muted\">\n No pinned pages\n </Txt>\n )}\n {pinned.overflow ? (\n <Txt variant=\"meta\" tone=\"muted\">\n {pinned.overflow}\n </Txt>\n ) : null}\n </div>\n </ActivityItem>\n );\n}\n"],"mappings":"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"}
|
|
@@ -10,3 +10,5 @@ exports.PinnedKnowledgeActivity = require_domains_chat_knowledge_pinned_knowledg
|
|
|
10
10
|
exports.knowledgeCard = require_domains_chat_tools_badges_knowledge_tool_badge.knowledgeCard;
|
|
11
11
|
exports.knowledgePageHref = require_domains_chat_knowledge_pinned_knowledge_data.knowledgePageHref;
|
|
12
12
|
exports.pinnedKnowledgeFromSignal = require_domains_chat_knowledge_pinned_knowledge_data.pinnedKnowledgeFromSignal;
|
|
13
|
+
exports.useHasKnowledgeLinks = require_domains_chat_knowledge_knowledge_links.useHasKnowledgeLinks;
|
|
14
|
+
exports.useKnowledgeLinksContext = require_domains_chat_knowledge_knowledge_links.useKnowledgeLinksContext;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { knowledgePageHref, pinnedKnowledgeFromSignal } from "./knowledge/pinned-knowledge-data.es.js";
|
|
2
|
-
import { KnowledgeLinksProvider, KnowledgePageLink } from "./knowledge/knowledge-links.es.js";
|
|
2
|
+
import { KnowledgeLinksProvider, KnowledgePageLink, useHasKnowledgeLinks, useKnowledgeLinksContext } from "./knowledge/knowledge-links.es.js";
|
|
3
3
|
import { PinnedKnowledgeActivity } from "./knowledge/pinned-knowledge.es.js";
|
|
4
4
|
import { KNOWLEDGE_TOOLS, knowledgeCard } from "./tools/badges/knowledge-tool-badge.es.js";
|
|
5
|
-
export { KNOWLEDGE_TOOLS, KnowledgeLinksProvider, KnowledgePageLink, PinnedKnowledgeActivity, knowledgeCard, knowledgePageHref, pinnedKnowledgeFromSignal };
|
|
5
|
+
export { KNOWLEDGE_TOOLS, KnowledgeLinksProvider, KnowledgePageLink, PinnedKnowledgeActivity, knowledgeCard, knowledgePageHref, pinnedKnowledgeFromSignal, useHasKnowledgeLinks, useKnowledgeLinksContext };
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_Txt = require("../../../Txt-BnoSqxKE.cjs");
|
|
3
|
-
const require_tool_call = require("../../../tool-call-
|
|
3
|
+
const require_tool_call = require("../../../tool-call-DBn14X-3.cjs");
|
|
4
4
|
const require_Arrival = require("../../../Arrival-Cs1oWjo4.cjs");
|
|
5
5
|
const require_domains_chat_messages_renderers_user_file_part_renderer = require("./renderers/user-file-part-renderer.cjs.js");
|
|
6
6
|
const require_domains_chat_attachments_split_message_attachments = require("../attachments/split-message-attachments.cjs.js");
|
|
7
7
|
const require_domains_chat_messages_skill_activation = require("./skill-activation.cjs.js");
|
|
8
8
|
const require_domains_chat_messages_skill_message = require("./skill-message.cjs.js");
|
|
9
|
+
const require_domains_chat_messages_signal_data = require("./signal-data.cjs.js");
|
|
9
10
|
const require_Notice = require("../../../Notice-JZ7SW7q6.cjs");
|
|
10
11
|
const require_domains_chat_messages_renderers_message_text_kind = require("./renderers/message-text-kind.cjs.js");
|
|
11
12
|
const require_domains_chat_messages_renderers_user_text_part_renderer = require("./renderers/user-text-part-renderer.cjs.js");
|
|
12
13
|
const require_domains_chat_attachments_message_attachments = require("../attachments/message-attachments.cjs.js");
|
|
13
14
|
const require_domains_chat_context_chat_context = require("../context/chat-context.cjs.js");
|
|
14
|
-
const require_domains_chat_messages_signal_data = require("./signal-data.cjs.js");
|
|
15
15
|
const require_domains_chat_messages_renderers_tool_part = require("./renderers/tool-part.cjs.js");
|
|
16
16
|
const require_domains_chat_messages_dataset_save_action = require("./dataset-save-action.cjs.js");
|
|
17
17
|
const require_Message = require("../../../Message-jj56lxNL.cjs");
|
|
@@ -22,7 +22,7 @@ const require_domains_chat_messages_renderers_reasoning_part_renderer = require(
|
|
|
22
22
|
const require_domains_chat_messages_renderers_status_renderers = require("./renderers/status-renderers.cjs.js");
|
|
23
23
|
const require_domains_chat_tools_tool_card_kind = require("../tools/tool-card-kind.cjs.js");
|
|
24
24
|
const require_domains_chat_tools_tool_call_effects = require("../tools/tool-call-effects.cjs.js");
|
|
25
|
-
const require_tool_card = require("../../../tool-card-
|
|
25
|
+
const require_tool_card = require("../../../tool-card-rxhTDpk_.cjs");
|
|
26
26
|
const require_domains_chat_tools_tool_groups = require("../tools/tool-groups.cjs.js");
|
|
27
27
|
const require_components_ai_message_reveal = require("../../../components/ai/message-reveal.cjs.js");
|
|
28
28
|
let react = require("react");
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { t as Txt } from "../../../Txt-BM6TVV_c.js";
|
|
2
|
-
import { i as ToolCallGroup } from "../../../tool-call-
|
|
2
|
+
import { i as ToolCallGroup } from "../../../tool-call-Dsj43lvJ.js";
|
|
3
3
|
import { n as Arriving } from "../../../Arrival-CJFEOXr5.js";
|
|
4
4
|
import { UserFilePartRenderer } from "./renderers/user-file-part-renderer.es.js";
|
|
5
5
|
import { splitMessageAttachments } from "../attachments/split-message-attachments.es.js";
|
|
6
6
|
import { parseSkillActivation } from "./skill-activation.es.js";
|
|
7
7
|
import { SkillMessage } from "./skill-message.es.js";
|
|
8
|
+
import { getSignalType, isRecord, isSignalData, isUserSignalType, toReactiveSignalData } from "./signal-data.es.js";
|
|
8
9
|
import { t as Notice } from "../../../Notice-C-8oOZZF.js";
|
|
9
10
|
import { messageTextKind } from "./renderers/message-text-kind.es.js";
|
|
10
11
|
import { UserTextPartRenderer } from "./renderers/user-text-part-renderer.es.js";
|
|
11
12
|
import { MessageAttachments } from "../attachments/message-attachments.es.js";
|
|
12
13
|
import { ChatRunningContext, useChatRunning } from "../context/chat-context.es.js";
|
|
13
|
-
import { getSignalType, isRecord, isSignalData, isUserSignalType, toReactiveSignalData } from "./signal-data.es.js";
|
|
14
14
|
import { readToolPart } from "./renderers/tool-part.es.js";
|
|
15
15
|
import { DatasetSaveAction } from "./dataset-save-action.es.js";
|
|
16
16
|
import { i as MessageActions, n as MessageCopyButton, r as Message } from "../../../Message-CWzi5F_Q.js";
|
|
@@ -21,7 +21,7 @@ import { ReasoningPartRenderer } from "./renderers/reasoning-part-renderer.es.js
|
|
|
21
21
|
import { messageStatusRenderers } from "./renderers/status-renderers.es.js";
|
|
22
22
|
import { badgeStatus, isSettledState } from "../tools/tool-card-kind.es.js";
|
|
23
23
|
import { ToolCallEffects } from "../tools/tool-call-effects.es.js";
|
|
24
|
-
import { t as ToolCard } from "../../../tool-card-
|
|
24
|
+
import { t as ToolCard } from "../../../tool-card-toDgoZzJ.js";
|
|
25
25
|
import { collectToolGroups } from "../tools/tool-groups.es.js";
|
|
26
26
|
import { useRevealedParts } from "../../../components/ai/message-reveal.es.js";
|
|
27
27
|
import { memo, useMemo } from "react";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_tooltip = require("../../../tooltip-BiRLT3Th.cjs");
|
|
3
|
-
const require_activity = require("../../../activity-
|
|
3
|
+
const require_activity = require("../../../activity-CcQZeDYi.cjs");
|
|
4
4
|
const require_Badge = require("../../../Badge-DZ6r6bcw.cjs");
|
|
5
5
|
const require_domains_chat_messages_signal_data = require("./signal-data.cjs.js");
|
|
6
6
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { i as TooltipTrigger, n as TooltipContent, t as Tooltip } from "../../../tooltip-HzcLyGtV.js";
|
|
2
|
-
import { o as NotificationActivity } from "../../../activity-
|
|
2
|
+
import { o as NotificationActivity } from "../../../activity-C8Ql81WM.js";
|
|
3
3
|
import { t as Badge } from "../../../Badge-aVu5iGAF.js";
|
|
4
4
|
import { formatSignalValue, getMcpEventSignalInfo, getNotificationMetadata, signalContentsToText } from "./signal-data.es.js";
|
|
5
5
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_activity = require("../../../activity-
|
|
2
|
+
const require_activity = require("../../../activity-CcQZeDYi.cjs");
|
|
3
3
|
// src/domains/chat/messages/reasoning-content.ts
|
|
4
4
|
function getReasoningContent(part) {
|
|
5
5
|
const content = {
|
|
@@ -2,14 +2,45 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
2
2
|
const require_icons_Icon = require("../../../../icons/Icon.cjs.js");
|
|
3
3
|
const require_components_DisclosureChevron = require("../../../../components/DisclosureChevron.cjs.js");
|
|
4
4
|
const require_Badge = require("../../../../Badge-DZ6r6bcw.cjs");
|
|
5
|
-
const require_MarkdownRenderer = require("../../../../MarkdownRenderer-
|
|
5
|
+
const require_MarkdownRenderer = require("../../../../MarkdownRenderer-y65WGBhC.cjs");
|
|
6
|
+
const require_domains_chat_knowledge_knowledge_links = require("../../knowledge/knowledge-links.cjs.js");
|
|
6
7
|
const require_Notice = require("../../../../Notice-JZ7SW7q6.cjs");
|
|
7
8
|
const require_domains_chat_messages_tripwire_notice = require("../tripwire-notice.cjs.js");
|
|
8
9
|
const require_domains_chat_messages_renderers_message_text_kind = require("./message-text-kind.cjs.js");
|
|
10
|
+
const require_domains_knowledge_lib_remarkKnowledgeLinks = require("../../../knowledge/lib/remarkKnowledgeLinks.cjs.js");
|
|
9
11
|
let react = require("react");
|
|
10
12
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
11
13
|
let lucide_react = require("lucide-react");
|
|
12
14
|
// src/domains/chat/messages/renderers/message-text.tsx
|
|
15
|
+
var REF_LINK_CLASS = "text-foreground underline underline-offset-2";
|
|
16
|
+
/** Text like `localhost:3000#top` looks like an address; it links only if the host finds the page. */
|
|
17
|
+
function BareKnowledgeRef({ pageRef }) {
|
|
18
|
+
const { usePagePreview } = require_domains_chat_knowledge_knowledge_links.useKnowledgeLinksContext();
|
|
19
|
+
return usePagePreview ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ResolvedBareRef, {
|
|
20
|
+
pageRef,
|
|
21
|
+
usePagePreview
|
|
22
|
+
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_jsx_runtime.Fragment, { children: pageRef });
|
|
23
|
+
}
|
|
24
|
+
function ResolvedBareRef({ pageRef, usePagePreview }) {
|
|
25
|
+
return usePagePreview({ pageRef }) ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_domains_chat_knowledge_knowledge_links.KnowledgePageLink, {
|
|
26
|
+
pageRef,
|
|
27
|
+
className: REF_LINK_CLASS,
|
|
28
|
+
children: pageRef
|
|
29
|
+
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_jsx_runtime.Fragment, { children: pageRef });
|
|
30
|
+
}
|
|
31
|
+
function ChatKnowledgeRef({ node, ...props }) {
|
|
32
|
+
const raw = node?.properties[require_domains_knowledge_lib_remarkKnowledgeLinks.KNOWLEDGE_REF_PROPERTY];
|
|
33
|
+
if (typeof raw !== "string") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { ...props });
|
|
34
|
+
const ref = raw.trim();
|
|
35
|
+
if (node?.properties["dataKnowledgeBare"] === "bare") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(BareKnowledgeRef, { pageRef: ref });
|
|
36
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_domains_chat_knowledge_knowledge_links.KnowledgePageLink, {
|
|
37
|
+
pageRef: ref,
|
|
38
|
+
className: REF_LINK_CLASS,
|
|
39
|
+
children: ref
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
var CHAT_REMARK_PLUGINS = [require_domains_knowledge_lib_remarkKnowledgeLinks.remarkKnowledgeChatLinks];
|
|
43
|
+
var CHAT_COMPONENTS = { span: ChatKnowledgeRef };
|
|
13
44
|
/**
|
|
14
45
|
* Part-level text renderer. Markdown for normal text, plus the legacy
|
|
15
46
|
* error/completion handling previously in `ErrorAwareText` (which read part
|
|
@@ -17,6 +48,7 @@ let lucide_react = require("lucide-react");
|
|
|
17
48
|
*/
|
|
18
49
|
var MessageText = ({ text, metadata, externalLinkTarget, streaming, tableActions }) => {
|
|
19
50
|
const [collapsedCompletionCheck, setCollapsedCompletionCheck] = (0, react.useState)(false);
|
|
51
|
+
const knowledgeLinks = require_domains_chat_knowledge_knowledge_links.useHasKnowledgeLinks();
|
|
20
52
|
switch (require_domains_chat_messages_renderers_message_text_kind.messageTextKind(text, metadata)) {
|
|
21
53
|
case "tripwire": return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_domains_chat_messages_tripwire_notice.TripwireNotice, {
|
|
22
54
|
reason: text,
|
|
@@ -56,6 +88,8 @@ var MessageText = ({ text, metadata, externalLinkTarget, streaming, tableActions
|
|
|
56
88
|
externalLinkTarget,
|
|
57
89
|
streaming: Boolean(streaming),
|
|
58
90
|
tableActions,
|
|
91
|
+
remarkPlugins: knowledgeLinks ? CHAT_REMARK_PLUGINS : void 0,
|
|
92
|
+
components: knowledgeLinks ? CHAT_COMPONENTS : void 0,
|
|
59
93
|
children: text
|
|
60
94
|
});
|
|
61
95
|
}
|