feat(mindspace): 悬浮聊天勾选资料联动、UI 与交互优化
勾选单个文件时 Agent 获知上下文并主动问候;打开悬浮窗使用新会话。 统一弹窗浅色主题、固定高度与输入区布局,支持点击外部收起。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
import { useEffect } from 'react';
|
||||
import { useEffect, useMemo } from 'react';
|
||||
import { useChat } from '../context/ChatProvider';
|
||||
import { INSUFFICIENT_BALANCE_NOTICE } from '../hooks/useTKMindChat';
|
||||
import type { PageEditSubChatBridge } from '../hooks/usePageEditSubChat';
|
||||
import type { MindSpaceChatContext, MindSpaceSaveCategory, PortalUser } from '../types';
|
||||
import type { MindSpaceChatContext, MindSpaceSaveCategory, PortalUser, Message } from '../types';
|
||||
import { formatContextChip } from '../utils/mindspaceChatContext';
|
||||
import { ChatPanel } from './ChatPanel';
|
||||
import { TKMindAvatar } from './TKMindAvatar';
|
||||
@@ -17,6 +17,7 @@ export function SpaceChatPanel({
|
||||
chatBridge,
|
||||
hideOpenFullChat = false,
|
||||
title = 'TKMind',
|
||||
prefillMessages = [],
|
||||
}: {
|
||||
open: boolean;
|
||||
context: MindSpaceChatContext;
|
||||
@@ -31,6 +32,7 @@ export function SpaceChatPanel({
|
||||
chatBridge?: PageEditSubChatBridge;
|
||||
hideOpenFullChat?: boolean;
|
||||
title?: string;
|
||||
prefillMessages?: Message[];
|
||||
}) {
|
||||
const mainChat = useChat();
|
||||
const chat = chatBridge ?? mainChat;
|
||||
@@ -59,6 +61,15 @@ export function SpaceChatPanel({
|
||||
return () => window.removeEventListener('keydown', handleKeyDown);
|
||||
}, [open, onClose]);
|
||||
|
||||
const displayMessages = useMemo(() => {
|
||||
if (!prefillMessages.length) return messages;
|
||||
if (messages.some((message) => message.role === 'user')) return messages;
|
||||
const extras = prefillMessages.filter(
|
||||
(item) => !messages.some((message) => message.id && message.id === item.id),
|
||||
);
|
||||
return extras.length ? [...messages, ...extras] : messages;
|
||||
}, [messages, prefillMessages]);
|
||||
|
||||
if (!open) return null;
|
||||
|
||||
const contextLabel = formatContextChip(context);
|
||||
@@ -119,7 +130,7 @@ export function SpaceChatPanel({
|
||||
<ChatPanel
|
||||
variant="compact"
|
||||
user={user}
|
||||
messages={messages}
|
||||
messages={displayMessages}
|
||||
chatState={chatState}
|
||||
pendingTool={pendingTool}
|
||||
session={session}
|
||||
@@ -132,7 +143,6 @@ export function SpaceChatPanel({
|
||||
onStop={stop}
|
||||
onApproveTool={approveTool}
|
||||
onPageSaved={onPageSaved}
|
||||
onClose={onClose}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user