@touchvue/chat 1.0.0-beta.55 → 1.0.0-beta.56
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/es/package.json.mjs +1 -1
- package/es/packages/components/touchchat/component/UploadView.vue2.mjs +2 -2
- package/es/packages/components/touchchat/component/UploadView.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/Chat/useChat.mjs +0 -37
- package/es/packages/components/touchchat/src/AiChat/Chat/useChat.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/Chat/useSSE.mjs +16 -9
- package/es/packages/components/touchchat/src/AiChat/Chat/useSSE.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs +11 -3
- package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/TouchAgent.vue2.mjs +54 -12
- package/es/packages/components/touchchat/src/AiChat/TouchAgent.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/index.vue2.mjs +6 -1
- package/es/packages/components/touchchat/src/index.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/utils/a2aService.mjs +58 -15
- package/es/packages/components/touchchat/utils/a2aService.mjs.map +1 -1
- package/es/packages/components/touchchat/utils/markdown.mjs +21 -4
- package/es/packages/components/touchchat/utils/markdown.mjs.map +1 -1
- package/es/packages/components/touchchat/utils/tools.mjs +4 -4
- package/es/packages/components/touchchat/utils/tools.mjs.map +1 -1
- package/lib/package.json.js +1 -1
- package/lib/packages/components/touchchat/component/UploadView.vue2.js +2 -2
- package/lib/packages/components/touchchat/component/UploadView.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/Chat/useChat.js +0 -37
- package/lib/packages/components/touchchat/src/AiChat/Chat/useChat.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/Chat/useSSE.js +16 -9
- package/lib/packages/components/touchchat/src/AiChat/Chat/useSSE.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js +10 -2
- package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/TouchAgent.vue2.js +54 -12
- package/lib/packages/components/touchchat/src/AiChat/TouchAgent.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/index.vue2.js +6 -1
- package/lib/packages/components/touchchat/src/index.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/utils/a2aService.js +58 -15
- package/lib/packages/components/touchchat/utils/a2aService.js.map +1 -1
- package/lib/packages/components/touchchat/utils/markdown.js +21 -4
- package/lib/packages/components/touchchat/utils/markdown.js.map +1 -1
- package/lib/packages/components/touchchat/utils/tools.js +4 -4
- package/lib/packages/components/touchchat/utils/tools.js.map +1 -1
- package/package.json +83 -83
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TouchAgent.vue2.mjs","sources":["../../../../../../../packages/components/touchchat/src/AiChat/TouchAgent.vue"],"sourcesContent":["<script lang=\"ts\">\nconst MULTI_AGENT_HOST = '/ar/v1/mas/host_agent'\n</script>\n<template>\n\t<div class=\"touchchat-main\" @dragover.prevent @dragenter.prevent=\"handleDragEnter\" @dragleave=\"handleDragLeave\" @drop.prevent=\"handleDrop\">\n\t\t<div ref=\"chatContainer\" class=\"touchchat-dialog\" @scroll=\"handleScroll\">\n\t\t\t<slot name=\"top\"> </slot>\n\t\t\t<div v-if=\"chatList.length === 0\" class=\"touchchat-welcome\">\n\t\t\t\t<slot name=\"welcome\">\n\t\t\t\t\t<HelloChat @send-message=\"sendMessage\" />\n\t\t\t\t</slot>\n\t\t\t</div>\n\t\t\t<div class=\"touchchat-dialog-content\">\n\t\t\t\t<template v-for=\"(item, index) in chatList\" :key=\"item.chatId\">\n\t\t\t\t\t<UserMessage v-if=\"item.user === 'u'\" :item=\"item\" :index=\"index\" @user-message-file-list=\"itemUploadFile\" @copy=\"handleMessageAction(MessageAction.COPY, index)\" @edit=\"handleMessageAction(MessageAction.EDIT, index)\" @delete=\"handleMessageAction(MessageAction.DELETE, index)\" @save-edit=\"saveEdit\" @cancel-edit=\"cancelEdit(index)\">\n\t\t\t\t\t\t<template #userAvatar>\n\t\t\t\t\t\t\t<slot name=\"userAvatar\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template #fn>\n\t\t\t\t\t\t\t<slot name=\"fn\" :item=\"item\" :index=\"index\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</UserMessage>\n\t\t\t\t\t<AiMessage v-else :item=\"item\" :index=\"index\" :has-retry=\"true\" @copy=\"handleMessageAction(MessageAction.COPY, index)\" @retry=\"handleMessageAction(MessageAction.RETRY, index)\" @like=\"handleMessageAction(MessageAction.LIKE, index)\" @dislike=\"handleMessageAction(MessageAction.DISLIKE, index)\" @content-rendered=\"attachCopyButtons\" @complete-rendered=\"chatId => completeRendered(chatId)\" @toggle-sidebar=\"toggleSidebarClick\">\n\t\t\t\t\t\t<template #aimsg>\n\t\t\t\t\t\t\t<slot name=\"aimsg\" :item=\"item\" :index=\"index\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template #msg>\n\t\t\t\t\t\t\t<slot name=\"msg\" :item=\"item\" :index=\"index\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template #aiAvatar>\n\t\t\t\t\t\t\t<slot name=\"aiAvatar\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template #fn>\n\t\t\t\t\t\t\t<slot name=\"fn\" :item=\"item\" :index=\"index\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template #extendsFn>\n\t\t\t\t\t\t\t<slot name=\"extendsFn\" :item=\"item\" :index=\"index\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</AiMessage>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t</div>\n\t\t<div v-if=\"$slots.shortcut\" class=\"touchchat-edit-shortcut\">\n\t\t\t<slot name=\"shortcut\"></slot>\n\t\t</div>\n\t\t<slot name=\"edit\">\n\t\t\t<ChatInput ref=\"ChatInputRef\" v-model:input-value=\"inputValue\" :is-chating=\"isChating\" @send=\"handleBeforeSend\" @stop=\"handleStop\"> </ChatInput>\n\t\t</slot>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport UserMessage from './UserMessage.vue'\nimport AiMessage from './AiMessage.vue'\nimport ChatInput from './ChatInput.vue'\nimport HelloChat from '../../component/HelloChat.vue'\nimport { ref, onMounted, onBeforeUnmount, nextTick, inject, provide, watch, Ref } from 'vue'\nimport { throttle } from 'throttle-debounce'\nimport { showToast } from '../../utils/tools.ts'\nimport DOMPurify from 'dompurify'\nimport markdown from '../../utils/markdown.ts'\nimport { MessageAction, type ChatMessage, type FileItem, ThinkStatus, type RenderData } from './Chat/types.ts'\nimport type { ModuleItem } from './Chat/types.ts'\n\n// 复用 Chat 目录的 composables\nimport { useMessageRender } from './Chat/useMessageRender'\nimport { useScroll } from './Chat/useScroll'\nimport { useCopy } from './Chat/useCopy'\n\nimport { a2aService } from '../../utils/a2aService'\nimport type { AgentConfig, Message, SubAgent, StreamChunk1_0 } from '../types/a2a'\n\ntype ResultArray = AgentConfig[] | SubAgent[]\n\ninterface MultiAgentInfo {\n\tlist: ResultArray\n\turl?: string\n\theaders?: object\n}\n\n// http://10.21.10.33:32020/Njd8NnwxfDUy\n// Authorization: Bearer a7ef44a7-9e85-4989-a2eb-34ae4dc76b7a\nconst DEFAULT_AGENT: AgentConfig = {\n\tid: 'agent-1',\n\tname: 'A2A Agent',\n\tversion: '1.0',\n\tendpoint: 'http://10.19.93.128:30015/engine/api/v1/a2a/7b8f4d0eeee643859a812a166c606b13/1.0',\n\tauthToken: 'c09f1251-e979-4a1a-ac67-6a11a8ab49f7',\n\t// endpoint: '/agent-api/Njd8NnwxfDUy',\n\t// authToken: 'a7ef44a7-9e85-4989-a2eb-34ae4dc76b7a',\n\tdescription: 'Default A2A agent'\n}\n\nconst selectedAgents = ref<string[]>(['agent-1'])\nconst agentInfo = inject<Ref<MultiAgentInfo>>('agentInfo', ref({ list: [], url: '', headers: {} }))\nconst iMultiAgentInfo = ref(agentInfo.value || { list: [], url: '', headers: {} })\n\nwatch(\n\t() => agentInfo.value,\n\tnewVal => {\n\t\tiMultiAgentInfo.value = newVal || { url: '', token: '' }\n\t},\n\t{ immediate: true, deep: true }\n)\n\nwatch(\n\tiMultiAgentInfo.value.list,\n\tnewVal => {\n\t\tiMultiAgentInfo.value.list = (newVal as ResultArray) || [DEFAULT_AGENT]\n\n\t\t// 重新注册所有 agent 到 a2aService\n\t\tiMultiAgentInfo.value.list.forEach((agent: AgentConfig | SubAgent) => {\n\t\t\ta2aService.registerAgent(agent as AgentConfig)\n\t\t})\n\n\t\t// 如果有新的 agent,更新 selectedAgents\n\t\tif (iMultiAgentInfo.value.list.length > 0) {\n\t\t\tselectedAgents.value = [(iMultiAgentInfo.value.list[0] as AgentConfig).id]\n\t\t}\n\t},\n\t{ immediate: true, deep: true }\n)\n// 组件属性和注入\nconst emit = defineEmits(['sendMessage', 'toggleSidebar', 'beforeSendMessage'])\n\nconst afterSend = inject<(result: object) => void>('afterSend', () => {\n\tconsole.warn('未提供afterSend函数')\n})\nconst sendMessageInject = inject<(value: string, fileList?: any[]) => void>('send', () => {\n\tconsole.warn('未提供handleSend函数')\n})\nconst beforeSend = inject<() => { result: boolean; componentName?: string }>('beforeSend', () => ({\n\tresult: true,\n\tcomponentName: ''\n}))\n\nconst bottom = inject<() => void>('bottom', () => {\n\tconsole.warn('未提供bottom函数')\n})\n\nconst stop = inject<(item: ChatMessage, index: number) => void>('stop', () => {\n\tconsole.warn('未提供stop函数')\n})\n\n// 组件属性\nconst props = defineProps({\n\tvalue: {\n\t\ttype: Array as () => ChatMessage[],\n\t\tdefault: () => []\n\t}\n})\n\n// 组件状态\nconst chatContainer = ref<HTMLElement | null>(null)\nconst isMounted = ref(false)\nconst isChating = ref(false)\nconst inputValue = ref('')\nconst chatList = ref<ChatMessage[]>([])\nconst currIndex = ref(0)\nconst isUnmounting = ref(false)\nconst currentComponentName = ref('')\nconst fileData = ref<FileItem[]>([])\nconst ChatInputRef = ref<InstanceType<typeof ChatInput> | null>(null)\nconst isDragging = ref(false)\nconst typeFlag = ref('')\nconst scrollObserver = ref<MutationObserver | null>(null)\nconst abortController = ref<AbortController | null>(null)\nconst renderQueue = ref<RenderData[]>([])\nconst isRendering = ref(false)\n\n// 消息处理器状态\ninterface MessageProcessor {\n\tmessageQueue: ChatMessage[]\n\tisProcessing: boolean\n\tcurrentMessage: ChatMessage | null\n\tprocessNextMessage: () => void\n\thandleMessageComplete: (chatId: string) => void\n}\nconst currentMessageProcessor = ref<MessageProcessor | null>(null)\n\n// 使用 useMessageRender composable\nconst { htmlContentRef, thinkingContentRef, reasoningContentRef } = useMessageRender({\n\tchatList: chatList as any,\n\tcurrIndex,\n\tisMounted,\n\tisUnmounting\n})\n\n// 使用 useScroll composable\nuseScroll({\n\tchatContainer,\n\tisMounted,\n\tisUnmounting,\n\tbottom: () => {}\n})\n\n// 使用 useCopy composable\nconst { copyToClipboard, copyWithFeedback } = useCopy()\n\n// 消息管理工具函数\nconst messageUtils = {\n\tupdateMessage: (index: number, updates: Partial<ChatMessage>): void => {\n\t\tif (index < 0 || index >= chatList.value.length) return\n\t\tchatList.value.splice(index, 1, { ...chatList.value[index], ...updates })\n\t\tnextTick(() => {\n\t\t\tconst message = chatList.value[index]\n\t\t\tif (message) {\n\t\t\t\trenderContent(message.content, 'main', index)\n\t\t\t\tif (message.thinkContent) {\n\t\t\t\t\trenderContent(message.thinkContent, 'thinking', index)\n\t\t\t\t}\n\t\t\t\tif (message.reasoningContent) {\n\t\t\t\t\trenderContent(message.reasoningContent, 'reasoning', index)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t},\n\n\tdeleteMessageChain: (index: number): void => {\n\t\tif (index < 0 || index >= chatList.value.length) return\n\t\tif (chatList.value[index].user === 'u') {\n\t\t\tlet deleteCount = 1\n\t\t\tfor (let i = index + 1; i < chatList.value.length; i++) {\n\t\t\t\tif (chatList.value[i].user === 'ai') {\n\t\t\t\t\tdeleteCount++\n\t\t\t\t} else {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tchatList.value.splice(index, deleteCount)\n\t\t} else {\n\t\t\tchatList.value.splice(index, 1)\n\t\t}\n\t},\n\n\tcreateStandardMessage: (data: Partial<ChatMessage>): ChatMessage => ({\n\t\t// chatId: data.chatId || 'ai_' + crypto.randomUUID().replace(/-/gi, ''),\n\t\tchatId: data.chatId || 'ai_' + Math.random().toString(36).slice(2).padEnd(10, '0').slice(0, 10),\n\t\tuser: data.user || 'ai',\n\t\ttype: data.type || 'text',\n\t\tcontent: data.content || '',\n\t\tisChating: data.isChating ?? false,\n\t\tthinkContent: data.thinkContent || '',\n\t\treasoningContent: data.reasoningContent || '',\n\t\tisLiked: data.isLiked ?? false,\n\t\tisDisliked: data.isDisliked ?? false,\n\t\tisEditing: data.isEditing ?? false,\n\t\teditContent: data.editContent ?? '',\n\t\tmsgList: []\n\t})\n}\n\nconst update = (index: number, message: object) => {\n\tchatList.value[index] = { ...chatList.value[index], ...message }\n\tconsole.log('update', chatList.value[index])\n}\n\nconst completeRendered = (chatId: string) => {\n\t// 调用消息处理器的handleMessageComplete方法处理下一条消息\n\tif (currentMessageProcessor.value) {\n\t\tcurrentMessageProcessor.value.handleMessageComplete(chatId)\n\t}\n}\n\nconst toggleSidebarClick = (item: ChatMessage, index: number) => {\n\temit('toggleSidebar', item, index)\n}\n// 初始化函数\nconst init = (): void => {\n\ttry {\n\t\tif (Array.isArray(props.value) && props.value.length) {\n\t\t\tchatList.value = props.value.map((item: any) => ({\n\t\t\t\t...item,\n\t\t\t\tcontent: item.thinkContent ? item.content || '' : item.content || '',\n\t\t\t\tthinkContent: item.thinkContent || ''\n\t\t\t}))\n\n\t\t\tnextTick(() => {\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t// index\n\t\t\t\t\tchatList.value.forEach((item: any) => {\n\t\t\t\t\t\tif (item.thinkContent) {\n\t\t\t\t\t\t\trenderContent(item.thinkContent, 'thinking')\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (item.reasoningContent) {\n\t\t\t\t\t\t\trenderContent(item.reasoningContent, 'reasoning')\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (item.content) {\n\t\t\t\t\t\t\trenderContent(item.content, 'main')\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t// 确保初始化渲染完成后滚动到底部\n\t\t\t\t\tnextTick(() => {\n\t\t\t\t\t\tscrollToBottom()\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\t} catch (error) {\n\t\tconsole.error('初始化失败:', error)\n\t}\n}\n\nconst onScrollToBottom = () => {\n\t// console.log('滚动条已触底')\n\tbottom()\n}\n\n// 使用节流包装触底处理函数,这里设置 300ms 内只触发一次 , { noTrailing: true }\nconst throttledScrollToBottom = throttle(300, onScrollToBottom)\n\n// 处理滚动事件\nconst handleScroll = () => {\n\tif (!chatContainer.value) return\n\n\tconst { scrollTop, scrollHeight, clientHeight } = chatContainer.value\n\t// 判断是否滚动到底部\n\tif (scrollTop + clientHeight >= scrollHeight) {\n\t\tthrottledScrollToBottom()\n\t}\n}\n\n// 渲染队列\nconst enqueueRender = (data: RenderData): void => {\n\tif (isUnmounting.value || !isMounted.value) return\n\tif (currIndex.value < 0 || currIndex.value >= chatList.value.length) return\n\trenderQueue.value.push(data)\n\tif (!isRendering.value) {\n\t\tisRendering.value = true\n\t\tprocessRenderQueue()\n\t}\n}\n\nconst processRenderQueue = (): void => {\n\tif (isUnmounting.value || !isMounted.value) {\n\t\trenderQueue.value = []\n\t\tisRendering.value = false\n\t\treturn\n\t}\n\n\tif (renderQueue.value.length === 0) {\n\t\tisRendering.value = false\n\t\treturn\n\t}\n\n\trequestAnimationFrame(() => {\n\t\tconst data = renderQueue.value.shift()\n\t\tif (data) {\n\t\t\tformatMarkdown(data)\n\t\t}\n\t\tprocessRenderQueue()\n\t})\n}\n\n// 格式化Markdown内容\nconst formatMarkdown = (data: RenderData): void => {\n\tif (!isMounted.value) return\n\tif (currIndex.value < 0 || currIndex.value >= chatList.value.length) return\n\n\tconst currentItem = chatList.value[currIndex.value]\n\tcurrentItem.thinkContent = data.thinkContent\n\tcurrentItem.content = data.mainContent\n\tcurrentItem.reasoningContent = data.reasoningContent\n\n\tnextTick(() => {\n\t\tconst thinkingContainer = thinkingContentRef.value[currIndex.value]\n\t\tif (thinkingContainer) {\n\t\t\tif (data.thinkContent) {\n\t\t\t\trenderContent(data.thinkContent, 'thinking')\n\t\t\t\tthinkingContainer.style.display = 'block'\n\t\t\t\tthinkingContainer.style.visibility = 'visible'\n\t\t\t} else {\n\t\t\t\tthinkingContainer.style.display = 'none'\n\t\t\t\tthinkingContainer.style.visibility = 'hidden'\n\t\t\t}\n\t\t}\n\n\t\tconst reasoningContainer = reasoningContentRef.value[currIndex.value]\n\t\tif (reasoningContainer) {\n\t\t\tif (data.reasoningContent) {\n\t\t\t\trenderContent(data.reasoningContent, 'reasoning')\n\t\t\t\treasoningContainer.style.display = 'block'\n\t\t\t\treasoningContainer.style.visibility = 'visible'\n\t\t\t} else {\n\t\t\t\treasoningContainer.style.display = 'none'\n\t\t\t\treasoningContainer.style.visibility = 'hidden'\n\t\t\t}\n\t\t}\n\n\t\trenderContent(data.mainContent, 'main')\n\t})\n}\n\nconst typewriterEffect = (message: Message, newText: string, speed: number = 30, chatId: string, accumulatedText: string = ''): Promise<string> => {\n\treturn new Promise(resolve => {\n\t\t// Get current text from accumulated text (passed from caller)\n\t\tconst currentText = accumulatedText\n\n\t\t// Start from the current text length\n\t\tlet currentIndex = 0\n\t\tconst typingInterval = setInterval(() => {\n\t\t\t// 检查是否已经被终止\n\t\t\tif (abortController.value?.signal.aborted) {\n\t\t\t\tclearInterval(typingInterval)\n\t\t\t\t// 返回到目前为止已经输出的内容\n\t\t\t\tconst textToAdd = newText.substring(0, currentIndex)\n\t\t\t\tconst combinedText = currentText + textToAdd\n\t\t\t\tresolve(combinedText)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (currentIndex < newText.length) {\n\t\t\t\tconst textToAdd = newText.substring(0, currentIndex + 1)\n\t\t\t\tconst combinedText = currentText + textToAdd\n\t\t\t\tmessage.parts = [{ type: 'text', text: combinedText }]\n\t\t\t\tcurrentIndex++\n\t\t\t\tranderAngentMessage(combinedText, chatId)\n\t\t\t} else {\n\t\t\t\tclearInterval(typingInterval)\n\t\t\t\t// Return the final combined text for accumulation\n\t\t\t\tresolve(currentText + newText)\n\t\t\t}\n\t\t}, speed)\n\t})\n}\n\nconst generateMessageId = (): string => {\n\treturn `msg-${Date.now()}-${Math.random().toString(36).slice(2, 11)}`\n}\n\n// Create text message\nconst createTextMessage = (text: string, role: 'user' | 'agent'): Message => ({\n\tmessageId: generateMessageId(),\n\trole,\n\tparts: [{ type: 'text', text }],\n\ttimestamp: new Date().toISOString()\n})\n\nconst randerAngentMessage = (text: string, chatId: string) => {\n\tif (chatList.value.some((ele: any) => ele.chatId === chatId)) {\n\t\tenqueueRender({\n\t\t\tmainContent: text,\n\t\t\tthinkContent: '',\n\t\t\treasoningContent: ''\n\t\t})\n\t}\n}\n\nconst isA2A1_0Chunk = (chunk: any): chunk is StreamChunk1_0 => {\n\treturn chunk && typeof chunk === 'object' && 'taskId' in chunk && 'status' in chunk && chunk.status?.message?.parts\n}\n\nconst extractTextFromA2A1_0Chunk = (chunk: StreamChunk1_0): string => {\n\tif (chunk.status?.message?.parts && chunk.status.message.parts.length > 0) {\n\t\treturn chunk.status.message.parts.map(part => part.text || '').join('')\n\t}\n\treturn ''\n}\n\nconst sendSingleAgentMessage = async (userContent: string, chatId: string) => {\n\t// 创建新的 AbortController\n\tabortController.value = new AbortController()\n\tconst { signal } = abortController.value\n\n\tconst agentMessage = createTextMessage(userContent, 'user')\n\tconst agentId = selectedAgents.value[0]\n\tlet stream\n\ttry {\n\t\tstream = await a2aService.streamMessage(agentId, agentMessage, undefined, signal)\n\t\tconsole.log('stream === TouchAgent.vue === 455', stream)\n\t} catch (error: any) {\n\t\t// 捕获 AbortError,不显示错误信息\n\t\tif (error.name === 'AbortError') {\n\t\t\t// 直接结束处理,保留已经输出的内容\n\t\t\tabortController.value = null\n\t\t\tisChating.value = false\n\t\t\tchatList.value[currIndex.value].isChating = false\n\t\t\tnextTick(() => {\n\t\t\t\temit('sendMessage', [...chatList.value])\n\t\t\t})\n\t\t\treturn\n\t\t}\n\t\t// 其他错误仍然显示错误信息\n\t\tshowErrorMessage(error instanceof Error ? error.message : '请求失败')\n\t\tabortController.value = null\n\t\treturn\n\t}\n\n\tlet fullResponseText = ''\n\tlet accumulatedText = ''\n\n\tconst reader = stream.getReader()\n\ttry {\n\t\tlet isDone = false\n\t\twhile (!isDone) {\n\t\t\tconst { done, value: chunk } = await reader.read()\n\t\t\tconsole.log('done === TouchAgent.vue === 483', done)\n\t\t\tif (done) {\n\t\t\t\tisDone = true\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t// Check for A2A 1.0 format\n\t\t\tif (isA2A1_0Chunk(chunk)) {\n\t\t\t\tconst newText = extractTextFromA2A1_0Chunk(chunk)\n\t\t\t\tif (newText) {\n\t\t\t\t\tfullResponseText += newText\n\t\t\t\t\tconst lastMessage = createTextMessage('', 'agent')\n\t\t\t\t\tif (newText.length > 10) {\n\t\t\t\t\t\taccumulatedText = await typewriterEffect(lastMessage, newText, 30, chatId, accumulatedText)\n\t\t\t\t\t} else {\n\t\t\t\t\t\taccumulatedText += newText\n\t\t\t\t\t\tranderAngentMessage(accumulatedText, chatId)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// Handle result field (backend response structure)\n\t\t\tif (chunk.result) {\n\t\t\t\t// Check for status updates with message\n\t\t\t\tif ('status' in chunk.result) {\n\t\t\t\t\tconst status = chunk.result.status as {\n\t\t\t\t\t\tmessage?: {\n\t\t\t\t\t\t\tparts?: Array<{\n\t\t\t\t\t\t\t\tkind: string\n\t\t\t\t\t\t\t\ttext: string\n\t\t\t\t\t\t\t}>\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (status?.message?.parts) {\n\t\t\t\t\t\tconst textParts = status.message.parts.filter(p => p.kind === 'text')\n\t\t\t\t\t\tconst newText = textParts.map(p => p.text).join('')\n\t\t\t\t\t\tfullResponseText += newText\n\t\t\t\t\t\tconst lastMessage = createTextMessage('', 'agent')\n\t\t\t\t\t\tif (newText.length > 10) {\n\t\t\t\t\t\t\taccumulatedText = await typewriterEffect(lastMessage, newText, 30, chatId, accumulatedText)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\taccumulatedText += newText\n\t\t\t\t\t\t\tranderAngentMessage(accumulatedText, chatId)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Handle status updates\n\t\t\tif (chunk.params?.status) {\n\t\t\t\tconsole.log('Task status:', chunk.params.status)\n\t\t\t}\n\n\t\t\t// Handle artifacts\n\t\t\tif (chunk.params?.artifact) {\n\t\t\t\tconsole.log('Artifact received:', chunk.params.artifact)\n\t\t\t}\n\t\t}\n\t} catch (error: any) {\n\t\t// 捕获 AbortError,不显示错误信息\n\t\tif (error.name !== 'AbortError') {\n\t\t\tshowErrorMessage(error instanceof Error ? error.message : '请求失败')\n\t\t}\n\t} finally {\n\t\treader.releaseLock()\n\t\t// 完成后重置 abortController\n\t\tabortController.value = null\n\t}\n\tnextTick(() => {\n\t\temit('sendMessage', [...chatList.value])\n\t})\n\tisChating.value = false\n\tchatList.value[currIndex.value].isChating = false\n\tif (fullResponseText) {\n\t\tafterSend({ allAiContent: fullResponseText })\n\t}\n}\n\nconst getSubAgents = () => {\n\treturn (iMultiAgentInfo.value.list as SubAgent[]).map(agent => ({\n\t\tagent_name: agent.agent_name,\n\t\tagent_url: agent.agent_url,\n\t\theaders: agent.headers\n\t}))\n}\n\n// Send message to multiple agents with streaming (new implementation)\nconst sendMultiAgentMessage = async (text: string, chatId: string) => {\n\t// 创建新的 AbortController\n\tabortController.value = new AbortController()\n\tconst { signal } = abortController.value\n\n\tlet fullResponseText = ''\n\tlet accumulatedText = ''\n\ttry {\n\t\tconst userMessage = createTextMessage(text, 'user')\n\t\tconst subAgents = getSubAgents()\n\n\t\t// Use multi-agent streaming\n\t\tconst stream = a2aService.streamMultiAgentMessage(iMultiAgentInfo.value.url || MULTI_AGENT_HOST, subAgents, userMessage, iMultiAgentInfo.value.headers || {}, undefined, signal)\n\n\t\tfor await (const chunk of stream) {\n\t\t\t// Check for A2A 1.0 format\n\t\t\tif (isA2A1_0Chunk(chunk)) {\n\t\t\t\tconst newText = extractTextFromA2A1_0Chunk(chunk)\n\t\t\t\tif (newText) {\n\t\t\t\t\tfullResponseText += newText\n\t\t\t\t\tconst lastMessage = createTextMessage('', 'agent')\n\t\t\t\t\tif (newText.length > 10) {\n\t\t\t\t\t\taccumulatedText = await typewriterEffect(lastMessage, newText, 30, chatId, accumulatedText)\n\t\t\t\t\t} else {\n\t\t\t\t\t\taccumulatedText += newText\n\t\t\t\t\t\tranderAngentMessage(accumulatedText, chatId)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// Handle result field (backend response structure)\n\t\t\tif (chunk.result) {\n\t\t\t\t// Check for status updates with message\n\t\t\t\tif ('status' in chunk.result) {\n\t\t\t\t\tconst status = chunk.result.status as {\n\t\t\t\t\t\tmessage?: {\n\t\t\t\t\t\t\tparts?: Array<{\n\t\t\t\t\t\t\t\tkind: string\n\t\t\t\t\t\t\t\ttext: string\n\t\t\t\t\t\t\t}>\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (status?.message?.parts) {\n\t\t\t\t\t\tconst textParts = status.message.parts.filter(p => p.kind === 'text')\n\t\t\t\t\t\tconst newText = textParts.map(p => p.text).join('')\n\t\t\t\t\t\tfullResponseText += newText\n\t\t\t\t\t\tconst lastMessage = createTextMessage('', 'agent')\n\t\t\t\t\t\tif (newText.length > 10) {\n\t\t\t\t\t\t\taccumulatedText = await typewriterEffect(lastMessage, newText, 30, chatId, accumulatedText)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\taccumulatedText += newText\n\t\t\t\t\t\t\tranderAngentMessage(accumulatedText, chatId)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (chunk.error) {\n\t\t\t\tconsole.error('Multi-agent error chunk:', chunk.error)\n\t\t\t\tshowErrorMessage(chunk.error.message ?? '多智能体请求失败')\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\t// Update timestamp on completion\n\t\t// const lastMessage = chatList.value[chatList.value.length - 1]\n\t\t// if (lastMessage && lastMessage.role === 'agent') {\n\t\t// \tlastMessage.timestamp = new Date().toISOString()\n\t\t// }\n\t} catch (err: any) {\n\t\tconsole.error('Error in multi-agent mode:', err)\n\t\t// 捕获 AbortError,不显示错误信息\n\t\tif (err.name !== 'AbortError') {\n\t\t\t// error.value = err instanceof Error ? err.message : '多智能体请求失败'\n\n\t\t\t// Remove placeholder message on error\n\t\t\t// const lastMessage = chatList.value[chatList.value.length - 1]\n\t\t\t// if (lastMessage && lastMessage.role === 'agent') {\n\t\t\t// \tchatList.value.pop()\n\t\t\t// }\n\t\t\tshowErrorMessage(err instanceof Error ? err.message : '多智能体请求失败')\n\t\t}\n\t} finally {\n\t\t// 完成后重置 abortController\n\t\tabortController.value = null\n\t\t// isLoading.value = false\n\t\t// isStreaming.value = false\n\t}\n\tnextTick(() => {\n\t\temit('sendMessage', [...chatList.value])\n\t})\n\tisChating.value = false\n\tchatList.value[currIndex.value].isChating = false\n\tif (fullResponseText) {\n\t\tafterSend({ allAiContent: fullResponseText })\n\t}\n}\n\n// SSE连接\nconst openSSE = async (userContent: string, insertIndex?: number): Promise<void> => {\n\ttry {\n\t\tif (isUnmounting.value) return\n\t\tisChating.value = true\n\n\t\tconst currentAiMessage = chatList.value.find((item: any) => item.isChating)\n\t\tif (currentAiMessage) {\n\t\t\tcurrentAiMessage.isShowLike = true\n\t\t\tcurrentAiMessage.isShowCopy = true\n\t\t\tcurrentAiMessage.componentName = currentComponentName.value\n\t\t}\n\t\tconst chatId = currentAiMessage?.chatId || 'ai_' + Math.random().toString(36).slice(2).padEnd(10, '0').slice(0, 10)\n\t\tif (!currentAiMessage) {\n\t\t\tconst chatItem: ChatMessage = {\n\t\t\t\tchatId: chatId,\n\t\t\t\tuser: 'ai',\n\t\t\t\ttype: 'text',\n\t\t\t\tisChating: true,\n\t\t\t\tcontent: '',\n\t\t\t\tthinkContent: '',\n\t\t\t\treasoningContent: '',\n\t\t\t\tthinkStatus: ThinkStatus.THINKING,\n\t\t\t\tthinkStartTime: Date.now(),\n\t\t\t\tisShowLike: true,\n\t\t\t\tisShowCopy: true,\n\t\t\t\tcomponentName: currentComponentName.value,\n\t\t\t\ttypeFlag: typeFlag.value,\n\t\t\t\tmsgList: []\n\t\t\t}\n\t\t\tif (insertIndex !== undefined && insertIndex <= chatList.value.length) {\n\t\t\t\tchatList.value.splice(insertIndex, 0, chatItem)\n\t\t\t} else {\n\t\t\t\tchatList.value.push(chatItem)\n\t\t\t}\n\t\t}\n\t\tcurrIndex.value = insertIndex ?? chatList.value.length - 1\n\t\tif (iMultiAgentInfo.value.list.length === 1) {\n\t\t\t// 单智能体\n\t\t\tsendSingleAgentMessage(userContent, chatId)\n\t\t} else {\n\t\t\t// 多智能体\n\t\t\tsendMultiAgentMessage(userContent, chatId)\n\t\t}\n\t} catch (error) {\n\t\tconsole.error('OpenSSE错误:', error)\n\t\tshowErrorMessage('请求失败')\n\t}\n}\n\nconst showErrorMessage = (message: string) => {\n\tisChating.value = false\n\tchatList.value[currIndex.value].content = `<div style=\"color: red; display: flex; align-items: center;\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"16\" viewBox=\"0 0 15 16\" fill=\"none\">\n\t\t<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.5 15.5C11.6421 15.5 15 12.1421 15 8C15 3.85786 11.6421 0.5 7.5 0.5C3.35786 0.5 0 3.85786 0 8C0 12.1421 3.35786 15.5 7.5 15.5ZM9.7539 4.9506L10.5494 5.7461L8.2951 8.0001L10.5494 10.2539L9.7539 11.0494L7.5001 8.7951L5.2461 11.0494L4.4506 10.2539L6.7051 8.0001L4.4506 5.7461L5.2461 4.9506L7.5001 7.2051L9.7539 4.9506Z\" fill=\"#F93920\"/>\n\t</svg>${message}</div>`\n\tchatList.value[currIndex.value].isChating = false\n\tchatList.value[currIndex.value].isShowCopy = false\n\tchatList.value[currIndex.value].isShowLike = false\n\tshowToast('请求失败,请重试', 'error', 3000)\n}\n\n// 附加复制按钮\nconst attachCopyButtons = (container: HTMLElement): void => {\n\tconst codeBlocks = container.querySelectorAll('pre code')\n\tcodeBlocks.forEach(codeBlock => {\n\t\tconst pre = codeBlock.parentElement\n\t\tif (pre) {\n\t\t\tconst copyBtn = document.createElement('button')\n\t\t\tcopyBtn.className = 'touchchat-code-copy'\n\t\t\tcopyBtn.addEventListener('click', () => {\n\t\t\t\tconst code = codeBlock.textContent || ''\n\t\t\t\tcopyWithFeedback(code, copyBtn, '', '已复制', 2000)\n\t\t\t})\n\n\t\t\tpre.style.position = 'relative'\n\t\t\tpre.appendChild(copyBtn)\n\t\t}\n\t})\n}\n\n// 渲染内容\nconst renderContent = (content: string, type: 'main' | 'thinking' | 'reasoning', index?: number): void => {\n\tconst renderIndex = index ?? currIndex.value\n\tif (renderIndex < 0 || renderIndex >= chatList.value.length) return\n\n\tconst refArrays = {\n\t\tmain: htmlContentRef,\n\t\tthinking: thinkingContentRef,\n\t\treasoning: reasoningContentRef\n\t}\n\tconst processors = {\n\t\tmain: (content: string) => markdown?.render(content, { isReasoning: false }) || '',\n\t\tthinking: (content: string) => markdown?.render(content, { isReasoning: false }) || '',\n\t\treasoning: (content: string) => markdown?.render(content, { isReasoning: true }) || ''\n\t}\n\n\tconst container = refArrays[type].value[renderIndex]\n\tif (!container) return\n\n\tcontainer.innerHTML = processors[type](content || '')\n\tconst sanitizedContent = DOMPurify.sanitize(processors[type](content || ''))\n\tcontainer.innerHTML = sanitizedContent\n\tattachCopyButtons(container)\n}\n\n// 发送消息\nconst sendMessage = (content?: string, fileList?: any[], auto?: boolean, type?: string): void => {\n\tinputValue.value = content || ''\n\thandleBeforeSend(content, fileList, auto, type)\n}\n\n// 发送前处理\nconst handleBeforeSend = (content?: string, fileList?: any[], auto?: boolean, type?: string): void => {\n\tfileData.value = fileList || []\n\tif (beforeSend) {\n\t\tconst fn = beforeSend()\n\t\tif (fn && typeof (fn as any).then === 'function') {\n\t\t\t;(Promise.resolve(fn) as Promise<{ result: boolean; componentName?: string }>)\n\t\t\t\t.then(res => {\n\t\t\t\t\tif (res.result) {\n\t\t\t\t\t\tcurrentComponentName.value = res.componentName || ''\n\t\t\t\t\t\thandleSend(content, fileList, auto, type)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.log(error)\n\t\t\t\t})\n\t\t} else {\n\t\t\tif (fn.result) {\n\t\t\t\tcurrentComponentName.value = fn.componentName || ''\n\t\t\t\thandleSend(content, fileList, auto, type)\n\t\t\t}\n\t\t}\n\t}\n}\n\n// 处理发送\nconst handleSend = (content?: string, fileList?: any[], auto?: boolean, type?: string): void => {\n\temit('beforeSendMessage')\n\t// sendMessageInject(inputValue.value)\n\tsendMessageInject(inputValue.value, fileData.value)\n\ttypeFlag.value = type || ''\n\tif (content) {\n\t\tinputValue.value = content\n\t}\n\tif ((isChating.value || (!inputValue.value.trim() && !fileList?.length)) && !auto) return\n\t// const userChatId = 'user_' + crypto.randomUUID().replace(/-/gi, '')\n\tconst userChatId = 'user_' + Math.random().toString(36).slice(2).padEnd(10, '0').slice(0, 10)\n\tconst userMessage: ChatMessage = {\n\t\tchatId: userChatId,\n\t\tuser: 'u',\n\t\ttype: 'text',\n\t\tcontent: inputValue.value,\n\t\tfiles: fileList || [],\n\t\tmsgList: []\n\t}\n\tchatList.value.push(userMessage)\n\tconst index = chatList.value.length - 1\n\tnextTick(() => {\n\t\trenderContent(userMessage.content, 'main', index)\n\t\tscrollToBottom()\n\t})\n\topenSSE(inputValue.value, index + 1)\n\tinputValue.value = ''\n}\n\nconst handleStop = (): void => {\n\tif (isChating.value) {\n\t\t// 终止当前的请求\n\t\tabortController.value?.abort()\n\t\t// 更新状态\n\t\tisChating.value = false\n\t\tchatList.value[currIndex.value].isChating = false\n\t\tstop(chatList.value[currIndex.value], currIndex.value)\n\t}\n}\n\n// 滚动到底部 - 优化版,支持实时滚动和内容变化监听\nconst scrollToBottom = () => {\n\tif (!isMounted.value || isUnmounting.value || !chatContainer.value) return\n\n\tnextTick(() => {\n\t\trequestAnimationFrame(() => {\n\t\t\tconst chatContainerEl = chatContainer.value!\n\t\t\tconst lastMessage = chatContainerEl.querySelector('.touchchat-dialog-content > *:last-child') as HTMLElement | null\n\n\t\t\tif (lastMessage) {\n\t\t\t\t// 计算消息元素的完整高度(包含内边距和边框)\n\t\t\t\tconst { height: messageHeight } = lastMessage.getBoundingClientRect()\n\t\t\t\t// 计算容器可视区域高度\n\t\t\t\tconst containerHeight = chatContainerEl.clientHeight\n\t\t\t\t// 计算消息底部到容器顶部的距离\n\t\t\t\tconst messageBottom = lastMessage.offsetTop + lastMessage.offsetHeight\n\n\t\t\t\t// 如果消息高度超过容器高度,滚动到消息顶部;否则滚动到消息底部\n\t\t\t\tif (messageHeight > containerHeight) {\n\t\t\t\t\tchatContainerEl.scrollTop = lastMessage.offsetTop\n\t\t\t\t} else {\n\t\t\t\t\t// 确保消息底部完全可见(处理可能的内边距/边框问题)\n\t\t\t\t\tchatContainerEl.scrollTop = messageBottom - containerHeight\n\t\t\t\t}\n\n\t\t\t\t// 增强内容变化监听(包括文本节点和子元素变化)\n\t\t\t\tif (scrollObserver.value) {\n\t\t\t\t\tscrollObserver.value.disconnect()\n\t\t\t\t}\n\t\t\t\tscrollObserver.value = new MutationObserver(() => {\n\t\t\t\t\t// 内容变化后重新计算并滚动\n\t\t\t\t\tconst updatedMessageBottom = lastMessage.offsetTop + lastMessage.offsetHeight\n\t\t\t\t\tchatContainerEl.scrollTop = Math.max(updatedMessageBottom - containerHeight, chatContainerEl.scrollTop)\n\t\t\t\t})\n\n\t\t\t\tscrollObserver.value.observe(lastMessage, {\n\t\t\t\t\tchildList: true,\n\t\t\t\t\tsubtree: true,\n\t\t\t\t\tcharacterData: true,\n\t\t\t\t\tattributes: true, // 新增监听属性变化(如高度)\n\t\t\t\t\tattributeFilter: ['style', 'class'] // 只监听样式相关属性\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tchatContainerEl.scrollTo({\n\t\t\t\t\ttop: chatContainerEl.scrollHeight,\n\t\t\t\t\tbehavior: 'smooth'\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t})\n}\n\n// 处理消息操作\nconst handleMessageAction = (action: MessageAction, index: number): void => {\n\tconst message = chatList.value[index]\n\tif (!message) return\n\n\tswitch (action) {\n\t\tcase MessageAction.COPY: {\n\t\t\t// 使用复制功能\n\t\t\tcopyToClipboard(message.content, '复制成功', '复制失败')\n\t\t\tbreak\n\t\t}\n\t\tcase MessageAction.EDIT:\n\t\t\tmessage.isEditing = true\n\t\t\tmessage.editContent = message.content\n\t\t\tbreak\n\t\tcase MessageAction.DELETE:\n\t\t\tmessageUtils.deleteMessageChain(index)\n\t\t\temit('sendMessage', chatList.value)\n\t\t\tbreak\n\t\tcase MessageAction.RETRY: {\n\t\t\tconst aiMessage = chatList.value[index]\n\t\t\tconst userMessageIndex = index - 1\n\t\t\tconst userMessage = chatList.value[userMessageIndex]\n\n\t\t\tif (userMessage && userMessage.user === 'u') {\n\t\t\t\tconst updatedAiMessage = {\n\t\t\t\t\t...aiMessage,\n\t\t\t\t\tcontent: '',\n\t\t\t\t\tthinkContent: '',\n\t\t\t\t\treasoningContent: '',\n\t\t\t\t\tisLiked: false,\n\t\t\t\t\tisDisliked: false,\n\t\t\t\t\tisChating: true,\n\t\t\t\t\tchatId: aiMessage.chatId,\n\t\t\t\t\tuser: aiMessage.user,\n\t\t\t\t\ttype: aiMessage.type,\n\t\t\t\t\tthinkStatus: ThinkStatus.COMPLETED,\n\t\t\t\t\tthinkStartTime: 0,\n\t\t\t\t\tthinkEndTime: 0\n\t\t\t\t}\n\t\t\t\tchatList.value.splice(index, 1, updatedAiMessage)\n\n\t\t\t\tnextTick(() => {\n\t\t\t\t\tif (htmlContentRef.value[index]) htmlContentRef.value[index].innerHTML = ''\n\t\t\t\t\tif (thinkingContentRef.value[index]) thinkingContentRef.value[index].innerHTML = ''\n\t\t\t\t\tif (reasoningContentRef.value[index]) reasoningContentRef.value[index].innerHTML = ''\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\topenSSE(userMessage.content || '', index)\n\t\t\t\t\t}, 50)\n\t\t\t\t})\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tcase MessageAction.LIKE:\n\t\t\tmessageUtils.updateMessage(index, {\n\t\t\t\tisLiked: true,\n\t\t\t\tisDisliked: false\n\t\t\t})\n\t\t\tbreak\n\t\tcase MessageAction.DISLIKE:\n\t\t\tmessageUtils.updateMessage(index, {\n\t\t\t\tisLiked: false,\n\t\t\t\tisDisliked: true\n\t\t\t})\n\t\t\tbreak\n\t}\n}\n\n// 保存编辑\nconst saveEdit = (index: number, newContent: string): void => {\n\tconst message = chatList.value[index]\n\tif (!message || !message.editContent) return\n\n\tchatList.value[index] = {\n\t\t...message,\n\t\tcontent: newContent,\n\t\tisEditing: false,\n\t\teditContent: undefined\n\t}\n\tnextTick(() => {\n\t\trenderContent(message.content, 'main', index)\n\t})\n\n\tif (index + 1 < chatList.value.length && chatList.value[index + 1].user === 'ai') {\n\t\tchatList.value.splice(index + 1, 1)\n\t}\n\n\t// openSSE(newContent, index + 1)\n\tnextTick(() => {\n\t\topenSSE(newContent, index + 1)\n\t})\n\temit('sendMessage', chatList.value)\n}\n\n// 取消编辑\nconst cancelEdit = (index: number): void => {\n\tconst message = chatList.value[index]\n\tif (!message) return\n\n\tmessage.isEditing = false\n\tmessage.editContent = ''\n\tnextTick(() => {\n\t\trenderContent(message.content, 'main', index)\n\t})\n}\n\n// 组件生命周期\nonMounted(async () => {\n\tinit()\n\tisMounted.value = true\n\n\t// 注册所有 agent 到 a2aService\n\tiMultiAgentInfo.value.list.forEach((agent: AgentConfig | SubAgent) => {\n\t\ta2aService.registerAgent(agent as AgentConfig)\n\t})\n\n\t// 确保 selectedAgents 有值\n\tif (iMultiAgentInfo.value.list.length > 0) {\n\t\tselectedAgents.value = [(iMultiAgentInfo.value.list[0] as AgentConfig).id]\n\t}\n})\n\nonBeforeUnmount(() => {\n\tif (!isUnmounting.value) {\n\t\tisUnmounting.value = true\n\t\tisMounted.value = false\n\t\thtmlContentRef.value = []\n\t\tthinkingContentRef.value = []\n\t\treasoningContentRef.value = []\n\t}\n\tif (scrollObserver.value) {\n\t\tscrollObserver.value.disconnect()\n\t\tscrollObserver.value = null\n\t}\n})\n\n// 处理拖拽进入事件\nconst handleDragEnter = () => {\n\tif (ChatInputRef.value) {\n\t\tChatInputRef.value.openMarkLayer()\n\t}\n\tisDragging.value = true\n}\n\n// 处理拖拽离开事件\nconst handleDragLeave = (e: DragEvent) => {\n\t// 检查鼠标是否真的离开容器\n\tconst rect = (e.target as HTMLElement).getBoundingClientRect()\n\tif (e.clientX < rect.left || e.clientX > rect.right || e.clientY < rect.top || e.clientY > rect.bottom) {\n\t\tisDragging.value = false\n\t}\n}\n\n// 处理文件放下事件\nconst handleDrop = async (e: DragEvent) => {\n\tisDragging.value = false\n\n\t// 获取拖拽的文件\n\tconst files = e.dataTransfer?.files\n\n\tif (files && files.length > 0) {\n\t\tconst fileList = await Promise.all(\n\t\t\tArray.from(files).map(async file => {\n\t\t\t\tlet base64 = ''\n\t\t\t\tif (file.type.startsWith('image/')) {\n\t\t\t\t\t// 使用 Promise 封装 FileReader 以正确获取 base64\n\t\t\t\t\tbase64 = await new Promise(resolve => {\n\t\t\t\t\t\tconst reader = new FileReader()\n\t\t\t\t\t\treader.onload = e => {\n\t\t\t\t\t\t\tresolve(e.target?.result as string)\n\t\t\t\t\t\t}\n\t\t\t\t\t\treader.readAsDataURL(file)\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t// id: crypto.randomUUID().replace(/-/gi, ''),\n\t\t\t\t\tid: Math.random().toString(36).slice(2).padEnd(10, '0').slice(0, 10),\n\t\t\t\t\tfile: file,\n\t\t\t\t\tname: file.name,\n\t\t\t\t\tfileType: file.type,\n\t\t\t\t\tfileSize: file.size,\n\t\t\t\t\tlastModified: file.lastModified,\n\t\t\t\t\tpreview: URL.createObjectURL(file),\n\t\t\t\t\tbase64\n\t\t\t\t}\n\t\t\t})\n\t\t)\n\t\tif (ChatInputRef.value) {\n\t\t\tChatInputRef.value.handlePaste(fileList, 'drop')\n\t\t}\n\t}\n\n\tif (ChatInputRef.value) {\n\t\tChatInputRef.value.colseMarkLayer()\n\t}\n}\n\nconst itemUploadFile = (item: FileItem, index: number) => {\n\tconsole.log('itemUploadFile', item, index)\n\tif (ChatInputRef.value) {\n\t\tChatInputRef.value.itemUploadFile(index, 'drop')\n\t}\n}\n\nexport type { ChatMessage, ModuleItem }\n\nprovide('touchchat', {\n\tsend: sendMessage,\n\tretry: handleMessageAction\n})\n\ndefineExpose({\n\tsend: (value: string, fileList?: any[], auto?: boolean, type?: string) => {\n\t\thandleSend(value, fileList, auto, type)\n\t},\n\tretry: (index: number) => {\n\t\thandleMessageAction(MessageAction.RETRY, index)\n\t},\n\tupdate\n})\n</script>\n"],"names":["content","DOMPurify","e","_a","_createElementBlock","_createElementVNode","_renderSlot","_createVNode","_openBlock","_Fragment","_renderList","_createBlock","_unref","$slots"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TouchAgent.vue2.mjs","sources":["../../../../../../../packages/components/touchchat/src/AiChat/TouchAgent.vue"],"sourcesContent":["<script lang=\"ts\">\nconst MULTI_AGENT_HOST = '/ar/v1/mas/host_agent'\n</script>\n<template>\n\t<div class=\"touchchat-main\" @dragover.prevent @dragenter.prevent=\"handleDragEnter\" @dragleave=\"handleDragLeave\" @drop.prevent=\"handleDrop\">\n\t\t<div ref=\"chatContainer\" class=\"touchchat-dialog\" @scroll=\"handleScroll\">\n\t\t\t<slot name=\"top\"> </slot>\n\t\t\t<div v-if=\"chatList.length === 0\" class=\"touchchat-welcome\">\n\t\t\t\t<slot name=\"welcome\">\n\t\t\t\t\t<HelloChat @send-message=\"sendMessage\" />\n\t\t\t\t</slot>\n\t\t\t</div>\n\t\t\t<div class=\"touchchat-dialog-content\">\n\t\t\t\t<template v-for=\"(item, index) in chatList\" :key=\"item.chatId\">\n\t\t\t\t\t<UserMessage v-if=\"item.user === 'u'\" :item=\"item\" :index=\"index\" @user-message-file-list=\"itemUploadFile\" @copy=\"handleMessageAction(MessageAction.COPY, index)\" @edit=\"handleMessageAction(MessageAction.EDIT, index)\" @delete=\"handleMessageAction(MessageAction.DELETE, index)\" @save-edit=\"saveEdit\" @cancel-edit=\"cancelEdit(index)\">\n\t\t\t\t\t\t<template #userAvatar>\n\t\t\t\t\t\t\t<slot name=\"userAvatar\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template #fn>\n\t\t\t\t\t\t\t<slot name=\"fn\" :item=\"item\" :index=\"index\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</UserMessage>\n\t\t\t\t\t<AiMessage v-else :item=\"item\" :index=\"index\" :has-retry=\"true\" @copy=\"handleMessageAction(MessageAction.COPY, index)\" @retry=\"handleMessageAction(MessageAction.RETRY, index)\" @like=\"handleMessageAction(MessageAction.LIKE, index)\" @dislike=\"handleMessageAction(MessageAction.DISLIKE, index)\" @content-rendered=\"attachCopyButtons\" @complete-rendered=\"chatId => completeRendered(chatId)\" @toggle-sidebar=\"toggleSidebarClick\">\n\t\t\t\t\t\t<template #aimsg>\n\t\t\t\t\t\t\t<slot name=\"aimsg\" :item=\"item\" :index=\"index\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template #msg>\n\t\t\t\t\t\t\t<slot name=\"msg\" :item=\"item\" :index=\"index\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template #aiAvatar>\n\t\t\t\t\t\t\t<slot name=\"aiAvatar\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template #fn>\n\t\t\t\t\t\t\t<slot name=\"fn\" :item=\"item\" :index=\"index\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template #extendsFn>\n\t\t\t\t\t\t\t<slot name=\"extendsFn\" :item=\"item\" :index=\"index\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</AiMessage>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t</div>\n\t\t<div v-if=\"$slots.shortcut\" class=\"touchchat-edit-shortcut\">\n\t\t\t<slot name=\"shortcut\"></slot>\n\t\t</div>\n\t\t<slot name=\"edit\">\n\t\t\t<ChatInput ref=\"ChatInputRef\" v-model:input-value=\"inputValue\" :is-chating=\"isChating\" @send=\"handleBeforeSend\" @stop=\"handleStop\"> </ChatInput>\n\t\t</slot>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport UserMessage from './UserMessage.vue'\nimport AiMessage from './AiMessage.vue'\nimport ChatInput from './ChatInput.vue'\nimport HelloChat from '../../component/HelloChat.vue'\nimport { ref, onMounted, onBeforeUnmount, nextTick, inject, provide, watch, Ref } from 'vue'\nimport { throttle } from 'throttle-debounce'\nimport { showToast } from '../../utils/tools.ts'\nimport DOMPurify from 'dompurify'\nimport markdown from '../../utils/markdown.ts'\nimport { MessageAction, type ChatMessage, type FileItem, ThinkStatus, type RenderData } from './Chat/types.ts'\nimport type { ModuleItem } from './Chat/types.ts'\n\n// 复用 Chat 目录的 composables\nimport { useMessageRender } from './Chat/useMessageRender'\nimport { useScroll } from './Chat/useScroll'\nimport { useCopy } from './Chat/useCopy'\n\nimport { a2aService } from '../../utils/a2aService'\nimport type { AgentConfig, Message, SubAgent, StreamChunk1_0 } from '../types/a2a'\n\ntype ResultArray = AgentConfig[] | SubAgent[]\n\ninterface MultiAgentInfo {\n\tlist: ResultArray\n\turl?: string\n\theaders?: object\n}\n\n// http://10.21.10.33:32020/Njd8NnwxfDUy\n// Authorization: Bearer a7ef44a7-9e85-4989-a2eb-34ae4dc76b7a\nconst DEFAULT_AGENT: AgentConfig = {\n\tid: 'agent-1',\n\tname: 'A2A Agent',\n\tversion: '1.0',\n\t// 使用代理路径,配合 vite.config.ts 中的 /ai-gateway 代理配置\n\tendpoint: '/ai-gateway/a2a/agents/MjAxOTMwMTI4OjMwMDE1L2VuZ2luZS9hcGkvdjEvYTJhL2JiYmJiYmJiYi8xLjA=',\n\tauthToken: 'c09f1251-e979-4a1a-ac67-6a11a8ab49f7',\n\t// endpoint: '/agent-api/Njd8NnwxfDUy',\n\t// authToken: 'a7ef44a7-9e85-4989-a2eb-34ae4dc76b7a',\n\tdescription: 'Default A2A agent'\n}\n\nconst selectedAgents = ref<string[]>(['agent-1'])\nconst agentInfo = inject<Ref<MultiAgentInfo>>('agentInfo', ref({ list: [], url: '', headers: {} }))\nconst iMultiAgentInfo = ref(agentInfo.value || { list: [], url: '', headers: {} })\nconst iModules = inject<Ref<ModuleItem[]>>('modules', ref([]))\n\nwatch(\n\t() => agentInfo.value,\n\tnewVal => {\n\t\tiMultiAgentInfo.value = newVal || { url: '', token: '' }\n\t},\n\t{ immediate: true, deep: true }\n)\n\nwatch(\n\tiMultiAgentInfo.value.list,\n\tnewVal => {\n\t\tiMultiAgentInfo.value.list = (newVal as ResultArray) || [DEFAULT_AGENT]\n\n\t\t// 重新注册所有 agent 到 a2aService\n\t\tiMultiAgentInfo.value.list.forEach((agent: AgentConfig | SubAgent) => {\n\t\t\ta2aService.registerAgent(agent as AgentConfig)\n\t\t})\n\n\t\t// 如果有新的 agent,更新 selectedAgents\n\t\tif (iMultiAgentInfo.value.list.length > 0) {\n\t\t\tselectedAgents.value = [(iMultiAgentInfo.value.list[0] as AgentConfig).id]\n\t\t}\n\t},\n\t{ immediate: true, deep: true }\n)\n// 组件属性和注入\nconst emit = defineEmits(['sendMessage', 'toggleSidebar', 'beforeSendMessage'])\n\nconst afterSend = inject<(result: object) => void>('afterSend', () => {\n\tconsole.warn('未提供afterSend函数')\n})\nconst sendMessageInject = inject<(value: string, fileList?: any[]) => void>('send', () => {\n\tconsole.warn('未提供handleSend函数')\n})\nconst beforeSend = inject<() => { result: boolean; componentName?: string }>('beforeSend', () => ({\n\tresult: true,\n\tcomponentName: ''\n}))\n\nconst bottom = inject<() => void>('bottom', () => {\n\tconsole.warn('未提供bottom函数')\n})\n\nconst stop = inject<(item: ChatMessage, index: number) => void>('stop', () => {\n\tconsole.warn('未提供stop函数')\n})\n\n// 组件属性\nconst props = defineProps({\n\tvalue: {\n\t\ttype: Array as () => ChatMessage[],\n\t\tdefault: () => []\n\t}\n})\n\n// 组件状态\nconst chatContainer = ref<HTMLElement | null>(null)\nconst isMounted = ref(false)\nconst isChating = ref(false)\nconst inputValue = ref('')\nconst chatList = ref<ChatMessage[]>([])\nconst currIndex = ref(0)\nconst isUnmounting = ref(false)\nconst currentComponentName = ref('')\nconst fileData = ref<FileItem[]>([])\nconst ChatInputRef = ref<InstanceType<typeof ChatInput> | null>(null)\nconst isDragging = ref(false)\nconst typeFlag = ref('')\nconst scrollObserver = ref<MutationObserver | null>(null)\nconst abortController = ref<AbortController | null>(null)\nconst renderQueue = ref<RenderData[]>([])\nconst isRendering = ref(false)\n\n// 消息处理器状态\ninterface MessageProcessor {\n\tmessageQueue: ChatMessage[]\n\tisProcessing: boolean\n\tcurrentMessage: ChatMessage | null\n\tprocessNextMessage: () => void\n\thandleMessageComplete: (chatId: string) => void\n}\nconst currentMessageProcessor = ref<MessageProcessor | null>(null)\n\n// 使用 useMessageRender composable\nconst { htmlContentRef, thinkingContentRef, reasoningContentRef } = useMessageRender({\n\tchatList: chatList as any,\n\tcurrIndex,\n\tisMounted,\n\tisUnmounting\n})\n\n// 使用 useScroll composable\nuseScroll({\n\tchatContainer,\n\tisMounted,\n\tisUnmounting,\n\tbottom: () => {}\n})\n\n// 使用 useCopy composable\nconst { copyToClipboard, copyWithFeedback } = useCopy()\n\n// 消息管理工具函数\nconst messageUtils = {\n\tupdateMessage: (index: number, updates: Partial<ChatMessage>): void => {\n\t\tif (index < 0 || index >= chatList.value.length) return\n\t\tchatList.value.splice(index, 1, { ...chatList.value[index], ...updates })\n\t\tnextTick(() => {\n\t\t\tconst message = chatList.value[index]\n\t\t\tif (message) {\n\t\t\t\trenderContent(message.content, 'main', index)\n\t\t\t\tif (message.thinkContent) {\n\t\t\t\t\trenderContent(message.thinkContent, 'thinking', index)\n\t\t\t\t}\n\t\t\t\tif (message.reasoningContent) {\n\t\t\t\t\trenderContent(message.reasoningContent, 'reasoning', index)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t},\n\n\tdeleteMessageChain: (index: number): void => {\n\t\tif (index < 0 || index >= chatList.value.length) return\n\t\tif (chatList.value[index].user === 'u') {\n\t\t\tlet deleteCount = 1\n\t\t\tfor (let i = index + 1; i < chatList.value.length; i++) {\n\t\t\t\tif (chatList.value[i].user === 'ai') {\n\t\t\t\t\tdeleteCount++\n\t\t\t\t} else {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tchatList.value.splice(index, deleteCount)\n\t\t} else {\n\t\t\tchatList.value.splice(index, 1)\n\t\t}\n\t},\n\n\tcreateStandardMessage: (data: Partial<ChatMessage>): ChatMessage => ({\n\t\t// chatId: data.chatId || 'ai_' + crypto.randomUUID().replace(/-/gi, ''),\n\t\tchatId: data.chatId || 'ai_' + Math.random().toString(36).slice(2).padEnd(10, '0').slice(0, 10),\n\t\tuser: data.user || 'ai',\n\t\ttype: data.type || 'text',\n\t\tcontent: data.content || '',\n\t\tisChating: data.isChating ?? false,\n\t\tthinkContent: data.thinkContent || '',\n\t\treasoningContent: data.reasoningContent || '',\n\t\tisLiked: data.isLiked ?? false,\n\t\tisDisliked: data.isDisliked ?? false,\n\t\tisEditing: data.isEditing ?? false,\n\t\teditContent: data.editContent ?? '',\n\t\tmsgList: []\n\t})\n}\n\nconst update = (index: number, message: object) => {\n\tchatList.value[index] = { ...chatList.value[index], ...message }\n}\n\nconst completeRendered = (chatId: string) => {\n\t// 调用消息处理器的handleMessageComplete方法处理下一条消息\n\tif (currentMessageProcessor.value) {\n\t\tcurrentMessageProcessor.value.handleMessageComplete(chatId)\n\t}\n}\n\nconst toggleSidebarClick = (item: ChatMessage, index: number) => {\n\temit('toggleSidebar', item, index)\n}\n// 初始化函数\nconst init = (): void => {\n\ttry {\n\t\tif (Array.isArray(props.value) && props.value.length) {\n\t\t\tchatList.value = props.value.map((item: any) => ({\n\t\t\t\t...item,\n\t\t\t\tcontent: item.thinkContent ? item.content || '' : item.content || '',\n\t\t\t\tthinkContent: item.thinkContent || ''\n\t\t\t}))\n\n\t\t\tnextTick(() => {\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t// index\n\t\t\t\t\tchatList.value.forEach((item: any) => {\n\t\t\t\t\t\tif (item.thinkContent) {\n\t\t\t\t\t\t\trenderContent(item.thinkContent, 'thinking')\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (item.reasoningContent) {\n\t\t\t\t\t\t\trenderContent(item.reasoningContent, 'reasoning')\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (item.content) {\n\t\t\t\t\t\t\trenderContent(item.content, 'main')\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t// 确保初始化渲染完成后滚动到底部\n\t\t\t\t\tnextTick(() => {\n\t\t\t\t\t\tscrollToBottom()\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\t} catch (error) {\n\t\tconsole.error('初始化失败:', error)\n\t}\n}\n\nconst onScrollToBottom = () => {\n\t// console.log('滚动条已触底')\n\tbottom()\n}\n\n// 使用节流包装触底处理函数,这里设置 300ms 内只触发一次 , { noTrailing: true }\nconst throttledScrollToBottom = throttle(300, onScrollToBottom)\n\n// 处理滚动事件\nconst handleScroll = () => {\n\tif (!chatContainer.value) return\n\n\tconst { scrollTop, scrollHeight, clientHeight } = chatContainer.value\n\t// 判断是否滚动到底部\n\tif (scrollTop + clientHeight >= scrollHeight) {\n\t\tthrottledScrollToBottom()\n\t}\n}\n\n// 渲染队列\nconst enqueueRender = (data: RenderData): void => {\n\tif (isUnmounting.value || !isMounted.value) return\n\tif (currIndex.value < 0 || currIndex.value >= chatList.value.length) return\n\trenderQueue.value.push(data)\n\tif (!isRendering.value) {\n\t\tisRendering.value = true\n\t\tprocessRenderQueue()\n\t}\n}\n\nconst processRenderQueue = (): void => {\n\tif (isUnmounting.value || !isMounted.value) {\n\t\trenderQueue.value = []\n\t\tisRendering.value = false\n\t\treturn\n\t}\n\n\tif (renderQueue.value.length === 0) {\n\t\tisRendering.value = false\n\t\treturn\n\t}\n\n\trequestAnimationFrame(() => {\n\t\tconst data = renderQueue.value.shift()\n\t\tif (data) {\n\t\t\tformatMarkdown(data)\n\t\t}\n\t\tprocessRenderQueue()\n\t})\n}\n\n// 格式化Markdown内容\nconst formatMarkdown = (data: RenderData): void => {\n\tif (!isMounted.value) return\n\tif (currIndex.value < 0 || currIndex.value >= chatList.value.length) return\n\n\tconst currentItem = chatList.value[currIndex.value]\n\tcurrentItem.thinkContent = data.thinkContent\n\tcurrentItem.content = data.mainContent\n\tcurrentItem.reasoningContent = data.reasoningContent\n\n\tnextTick(() => {\n\t\tconst thinkingContainer = thinkingContentRef.value[currIndex.value]\n\t\tif (thinkingContainer) {\n\t\t\tif (data.thinkContent) {\n\t\t\t\trenderContent(data.thinkContent, 'thinking')\n\t\t\t\tthinkingContainer.style.display = 'block'\n\t\t\t\tthinkingContainer.style.visibility = 'visible'\n\t\t\t} else {\n\t\t\t\tthinkingContainer.style.display = 'none'\n\t\t\t\tthinkingContainer.style.visibility = 'hidden'\n\t\t\t}\n\t\t}\n\n\t\tconst reasoningContainer = reasoningContentRef.value[currIndex.value]\n\t\tif (reasoningContainer) {\n\t\t\tif (data.reasoningContent) {\n\t\t\t\trenderContent(data.reasoningContent, 'reasoning')\n\t\t\t\treasoningContainer.style.display = 'block'\n\t\t\t\treasoningContainer.style.visibility = 'visible'\n\t\t\t} else {\n\t\t\t\treasoningContainer.style.display = 'none'\n\t\t\t\treasoningContainer.style.visibility = 'hidden'\n\t\t\t}\n\t\t}\n\n\t\trenderContent(data.mainContent, 'main')\n\t})\n}\n\nconst typewriterEffect = (message: Message, newText: string, speed: number = 30, chatId: string, accumulatedText: string = ''): Promise<string> => {\n\treturn new Promise(resolve => {\n\t\t// Get current text from accumulated text (passed from caller)\n\t\tconst currentText = accumulatedText\n\n\t\t// Start from the current text length\n\t\tlet currentIndex = 0\n\t\tconst typingInterval = setInterval(() => {\n\t\t\t// 检查是否已经被终止\n\t\t\tif (abortController.value?.signal.aborted) {\n\t\t\t\tclearInterval(typingInterval)\n\t\t\t\t// 返回到目前为止已经输出的内容\n\t\t\t\tconst textToAdd = newText.substring(0, currentIndex)\n\t\t\t\tconst combinedText = currentText + textToAdd\n\t\t\t\tresolve(combinedText)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (currentIndex < newText.length) {\n\t\t\t\tconst textToAdd = newText.substring(0, currentIndex + 1)\n\t\t\t\tconst combinedText = currentText + textToAdd\n\t\t\t\tmessage.parts = [{ type: 'text', text: combinedText }]\n\t\t\t\tcurrentIndex++\n\t\t\t\tranderAngentMessage(combinedText, chatId)\n\t\t\t} else {\n\t\t\t\tclearInterval(typingInterval)\n\t\t\t\t// Return the final combined text for accumulation\n\t\t\t\tresolve(currentText + newText)\n\t\t\t}\n\t\t}, speed)\n\t})\n}\n\nconst generateMessageId = (): string => {\n\treturn `msg-${Date.now()}-${Math.random().toString(36).slice(2, 11)}`\n}\n\n// Create text message\nconst createTextMessage = (text: string, role: 'user' | 'agent'): Message => ({\n\tmessageId: generateMessageId(),\n\trole,\n\tparts: [{ type: 'text', text }],\n\ttimestamp: new Date().toISOString()\n})\n\nconst randerAngentMessage = (text: string, chatId: string) => {\n\tif (chatList.value.some((ele: any) => ele.chatId === chatId)) {\n\t\tenqueueRender({\n\t\t\tmainContent: text,\n\t\t\tthinkContent: '',\n\t\t\treasoningContent: ''\n\t\t})\n\t}\n}\n\nconst isA2A1_0Chunk = (chunk: any): chunk is StreamChunk1_0 => {\n\treturn chunk && typeof chunk === 'object' && 'taskId' in chunk && 'status' in chunk && chunk.status?.message?.parts\n}\n\nconst extractTextFromA2A1_0Chunk = (chunk: StreamChunk1_0): string => {\n\tif (chunk.status?.message?.parts && chunk.status.message.parts.length > 0) {\n\t\treturn chunk.status.message.parts.map(part => part.text || '').join('')\n\t}\n\treturn ''\n}\n\nconst sendSingleAgentMessage = async (userContent: string, chatId: string) => {\n\t// 创建新的 AbortController\n\tabortController.value = new AbortController()\n\tconst { signal } = abortController.value\n\n\tconst agentMessage = createTextMessage(userContent, 'user')\n\tconst agentId = selectedAgents.value[0]\n\tlet stream\n\ttry {\n\t\tstream = await a2aService.streamMessage(agentId, agentMessage, undefined, signal, iModules.value)\n\t} catch (error: any) {\n\t\t// 捕获 AbortError,不显示错误信息\n\t\tif (error.name === 'AbortError') {\n\t\t\t// 直接结束处理,保留已经输出的内容\n\t\t\tabortController.value = null\n\t\t\tisChating.value = false\n\t\t\tchatList.value[currIndex.value].isChating = false\n\t\t\tnextTick(() => {\n\t\t\t\temit('sendMessage', [...chatList.value])\n\t\t\t})\n\t\t\treturn\n\t\t}\n\t\t// 其他错误仍然显示错误信息\n\t\tshowErrorMessage(error instanceof Error ? error.message : '请求失败')\n\t\tabortController.value = null\n\t\treturn\n\t}\n\n\tlet fullResponseText = ''\n\tlet accumulatedText = ''\n\n\tconst reader = stream.getReader()\n\ttry {\n\t\tlet isDone = false\n\t\twhile (!isDone) {\n\t\t\tconst { done, value: chunk } = await reader.read()\n\t\t\tif (done) {\n\t\t\t\tisDone = true\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t// Check for A2A 1.0 format\n\t\t\tif (isA2A1_0Chunk(chunk)) {\n\t\t\t\tconst newText = extractTextFromA2A1_0Chunk(chunk)\n\t\t\t\tif (newText) {\n\t\t\t\t\tfullResponseText += newText\n\t\t\t\t\tconst lastMessage = createTextMessage('', 'agent')\n\t\t\t\t\tif (newText.length > 10) {\n\t\t\t\t\t\taccumulatedText = await typewriterEffect(lastMessage, newText, 30, chatId, accumulatedText)\n\t\t\t\t\t} else {\n\t\t\t\t\t\taccumulatedText += newText\n\t\t\t\t\t\tranderAngentMessage(accumulatedText, chatId)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// Handle result field (backend response structure)\n\t\t\tif (chunk.result) {\n\t\t\t\t// Handle artifact-update format (new backend format)\n\t\t\t\tconst result = chunk.result as Record<string, any>\n\t\t\t\tif (result.kind === 'artifact-update' && result.artifact?.parts) {\n\t\t\t\t\tconst contentParts = result.artifact.parts\n\t\t\t\t\tlet newText = ''\n\t\t\t\t\tfor (const part of contentParts) {\n\t\t\t\t\t\tif (part.data && typeof part.data.content === 'string') {\n\t\t\t\t\t\t\tnewText += part.data.content\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (newText) {\n\t\t\t\t\t\tfullResponseText += newText\n\t\t\t\t\t\tconst lastMessage = createTextMessage('', 'agent')\n\t\t\t\t\t\tif (newText.length > 10) {\n\t\t\t\t\t\t\taccumulatedText = await typewriterEffect(lastMessage, newText, 30, chatId, accumulatedText)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\taccumulatedText += newText\n\t\t\t\t\t\t\tranderAngentMessage(accumulatedText, chatId)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Check for status updates with message (legacy format)\n\t\t\t\tif ('status' in chunk.result) {\n\t\t\t\t\tconst status = chunk.result.status as {\n\t\t\t\t\t\tmessage?: {\n\t\t\t\t\t\t\tparts?: Array<{\n\t\t\t\t\t\t\t\tkind: string\n\t\t\t\t\t\t\t\ttext: string\n\t\t\t\t\t\t\t}>\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (status?.message?.parts) {\n\t\t\t\t\t\tconst textParts = status.message.parts.filter(p => p.kind === 'text')\n\t\t\t\t\t\tconst newText = textParts.map(p => p.text).join('')\n\t\t\t\t\t\tfullResponseText += newText\n\t\t\t\t\t\tconst lastMessage = createTextMessage('', 'agent')\n\t\t\t\t\t\tif (newText.length > 10) {\n\t\t\t\t\t\t\taccumulatedText = await typewriterEffect(lastMessage, newText, 30, chatId, accumulatedText)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\taccumulatedText += newText\n\t\t\t\t\t\t\tranderAngentMessage(accumulatedText, chatId)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Handle status updates\n\t\t\tif (chunk.params?.status) {\n\t\t\t\tconsole.log('Task status:', chunk.params.status)\n\t\t\t}\n\n\t\t\t// Handle artifacts\n\t\t\tif (chunk.params?.artifact) {\n\t\t\t\tconsole.log('Artifact received:', chunk.params.artifact)\n\t\t\t}\n\n\t\t\t// Handle error chunks\n\t\t\tif (chunk.error) {\n\t\t\t\t// console.error('Single agent error chunk:', chunk.error)\n\t\t\t\tshowErrorMessage(chunk.error.message ?? '请求失败')\n\t\t\t\t// break\n\t\t\t}\n\t\t}\n\t} catch (error: any) {\n\t\t// 捕获 AbortError,不显示错误信息\n\t\tif (error.name !== 'AbortError') {\n\t\t\tshowErrorMessage(error instanceof Error ? error.message : '请求失败')\n\t\t}\n\t} finally {\n\t\treader.releaseLock()\n\t\t// 完成后重置 abortController\n\t\tabortController.value = null\n\t}\n\tnextTick(() => {\n\t\temit('sendMessage', [...chatList.value])\n\t})\n\tisChating.value = false\n\tchatList.value[currIndex.value].isChating = false\n\tif (fullResponseText) {\n\t\tafterSend({ allAiContent: fullResponseText })\n\t}\n}\n\nconst getSubAgents = () => {\n\treturn (iMultiAgentInfo.value.list as SubAgent[]).map(agent => ({\n\t\tagent_name: agent.agent_name,\n\t\tagent_url: agent.agent_url,\n\t\theaders: agent.headers\n\t}))\n}\n\n// Send message to multiple agents with streaming (new implementation)\nconst sendMultiAgentMessage = async (text: string, chatId: string) => {\n\t// 创建新的 AbortController\n\tabortController.value = new AbortController()\n\tconst { signal } = abortController.value\n\n\tlet fullResponseText = ''\n\tlet accumulatedText = ''\n\ttry {\n\t\tconst userMessage = createTextMessage(text, 'user')\n\t\tconst subAgents = getSubAgents()\n\n\t\t// Use multi-agent streaming\n\t\tconst stream = a2aService.streamMultiAgentMessage(iMultiAgentInfo.value.url || MULTI_AGENT_HOST, subAgents, userMessage, iMultiAgentInfo.value.headers || {}, undefined, signal)\n\n\t\tfor await (const chunk of stream) {\n\t\t\t// Check for A2A 1.0 format\n\t\t\tif (isA2A1_0Chunk(chunk)) {\n\t\t\t\tconst newText = extractTextFromA2A1_0Chunk(chunk)\n\t\t\t\tif (newText) {\n\t\t\t\t\tfullResponseText += newText\n\t\t\t\t\tconst lastMessage = createTextMessage('', 'agent')\n\t\t\t\t\tif (newText.length > 10) {\n\t\t\t\t\t\taccumulatedText = await typewriterEffect(lastMessage, newText, 30, chatId, accumulatedText)\n\t\t\t\t\t} else {\n\t\t\t\t\t\taccumulatedText += newText\n\t\t\t\t\t\tranderAngentMessage(accumulatedText, chatId)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// Handle result field (backend response structure)\n\t\t\tif (chunk.result) {\n\t\t\t\t// Handle artifact-update format (new backend format)\n\t\t\t\tconst result = chunk.result as Record<string, any>\n\t\t\t\tif (result.kind === 'artifact-update' && result.artifact?.parts) {\n\t\t\t\t\tconst contentParts = result.artifact.parts\n\t\t\t\t\tlet newText = ''\n\t\t\t\t\tfor (const part of contentParts) {\n\t\t\t\t\t\tif (part.data && typeof part.data.content === 'string') {\n\t\t\t\t\t\t\tnewText += part.data.content\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (newText) {\n\t\t\t\t\t\tfullResponseText += newText\n\t\t\t\t\t\tconst lastMessage = createTextMessage('', 'agent')\n\t\t\t\t\t\tif (newText.length > 10) {\n\t\t\t\t\t\t\taccumulatedText = await typewriterEffect(lastMessage, newText, 30, chatId, accumulatedText)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\taccumulatedText += newText\n\t\t\t\t\t\t\tranderAngentMessage(accumulatedText, chatId)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Check for status updates with message (legacy format)\n\t\t\t\tif ('status' in chunk.result) {\n\t\t\t\t\tconst status = chunk.result.status as {\n\t\t\t\t\t\tmessage?: {\n\t\t\t\t\t\t\tparts?: Array<{\n\t\t\t\t\t\t\t\tkind: string\n\t\t\t\t\t\t\t\ttext: string\n\t\t\t\t\t\t\t}>\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (status?.message?.parts) {\n\t\t\t\t\t\tconst textParts = status.message.parts.filter(p => p.kind === 'text')\n\t\t\t\t\t\tconst newText = textParts.map(p => p.text).join('')\n\t\t\t\t\t\tfullResponseText += newText\n\t\t\t\t\t\tconst lastMessage = createTextMessage('', 'agent')\n\t\t\t\t\t\tif (newText.length > 10) {\n\t\t\t\t\t\t\taccumulatedText = await typewriterEffect(lastMessage, newText, 30, chatId, accumulatedText)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\taccumulatedText += newText\n\t\t\t\t\t\t\tranderAngentMessage(accumulatedText, chatId)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (chunk.error) {\n\t\t\t\tconsole.error('Multi-agent error chunk:', chunk.error)\n\t\t\t\tshowErrorMessage(chunk.error.message ?? '多智能体请求失败')\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\t// Update timestamp on completion\n\t\t// const lastMessage = chatList.value[chatList.value.length - 1]\n\t\t// if (lastMessage && lastMessage.role === 'agent') {\n\t\t// \tlastMessage.timestamp = new Date().toISOString()\n\t\t// }\n\t} catch (err: any) {\n\t\tconsole.error('Error in multi-agent mode:', err)\n\t\t// 捕获 AbortError,不显示错误信息\n\t\tif (err.name !== 'AbortError') {\n\t\t\t// error.value = err instanceof Error ? err.message : '多智能体请求失败'\n\n\t\t\t// Remove placeholder message on error\n\t\t\t// const lastMessage = chatList.value[chatList.value.length - 1]\n\t\t\t// if (lastMessage && lastMessage.role === 'agent') {\n\t\t\t// \tchatList.value.pop()\n\t\t\t// }\n\t\t\tshowErrorMessage(err instanceof Error ? err.message : '多智能体请求失败')\n\t\t}\n\t} finally {\n\t\t// 完成后重置 abortController\n\t\tabortController.value = null\n\t\t// isLoading.value = false\n\t\t// isStreaming.value = false\n\t}\n\tnextTick(() => {\n\t\temit('sendMessage', [...chatList.value])\n\t})\n\tisChating.value = false\n\tchatList.value[currIndex.value].isChating = false\n\tif (fullResponseText) {\n\t\tafterSend({ allAiContent: fullResponseText })\n\t}\n}\n\n// SSE连接\nconst openSSE = async (userContent: string, insertIndex?: number): Promise<void> => {\n\ttry {\n\t\tif (isUnmounting.value) return\n\t\tisChating.value = true\n\n\t\tconst currentAiMessage = chatList.value.find((item: any) => item.isChating)\n\t\tif (currentAiMessage) {\n\t\t\tcurrentAiMessage.isShowLike = true\n\t\t\tcurrentAiMessage.isShowCopy = true\n\t\t\tcurrentAiMessage.componentName = currentComponentName.value\n\t\t}\n\t\tconst chatId = currentAiMessage?.chatId || 'ai_' + Math.random().toString(36).slice(2).padEnd(10, '0').slice(0, 10)\n\t\tif (!currentAiMessage) {\n\t\t\tconst chatItem: ChatMessage = {\n\t\t\t\tchatId: chatId,\n\t\t\t\tuser: 'ai',\n\t\t\t\ttype: 'text',\n\t\t\t\tisChating: true,\n\t\t\t\tcontent: '',\n\t\t\t\tthinkContent: '',\n\t\t\t\treasoningContent: '',\n\t\t\t\tthinkStatus: ThinkStatus.THINKING,\n\t\t\t\tthinkStartTime: Date.now(),\n\t\t\t\tisShowLike: true,\n\t\t\t\tisShowCopy: true,\n\t\t\t\tcomponentName: currentComponentName.value,\n\t\t\t\ttypeFlag: typeFlag.value,\n\t\t\t\tmsgList: []\n\t\t\t}\n\t\t\tif (insertIndex !== undefined && insertIndex <= chatList.value.length) {\n\t\t\t\tchatList.value.splice(insertIndex, 0, chatItem)\n\t\t\t} else {\n\t\t\t\tchatList.value.push(chatItem)\n\t\t\t}\n\t\t}\n\t\tcurrIndex.value = insertIndex ?? chatList.value.length - 1\n\t\tif (iMultiAgentInfo.value.list.length === 1) {\n\t\t\t// 单智能体\n\t\t\tsendSingleAgentMessage(userContent, chatId)\n\t\t} else {\n\t\t\t// 多智能体\n\t\t\tsendMultiAgentMessage(userContent, chatId)\n\t\t}\n\t} catch (error: any) {\n\t\tconsole.error('OpenSSE错误:', error)\n\t\tshowErrorMessage('请求失败')\n\t}\n}\n\nconst showErrorMessage = (message: string) => {\n\tisChating.value = false\n\tchatList.value[currIndex.value].content = `<div style=\"color: red; display: flex; align-items: center;\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"16\" viewBox=\"0 0 15 16\" fill=\"none\">\n\t\t<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.5 15.5C11.6421 15.5 15 12.1421 15 8C15 3.85786 11.6421 0.5 7.5 0.5C3.35786 0.5 0 3.85786 0 8C0 12.1421 3.35786 15.5 7.5 15.5ZM9.7539 4.9506L10.5494 5.7461L8.2951 8.0001L10.5494 10.2539L9.7539 11.0494L7.5001 8.7951L5.2461 11.0494L4.4506 10.2539L6.7051 8.0001L4.4506 5.7461L5.2461 4.9506L7.5001 7.2051L9.7539 4.9506Z\" fill=\"#F93920\"/>\n\t</svg>${message}</div>`\n\tchatList.value[currIndex.value].isChating = false\n\tchatList.value[currIndex.value].isShowCopy = false\n\tchatList.value[currIndex.value].isShowLike = false\n\tshowToast('请求失败,请重试', 'error', 3000)\n}\n\n// 附加复制按钮\nconst attachCopyButtons = (container: HTMLElement): void => {\n\tconst codeBlocks = container.querySelectorAll('pre code')\n\tcodeBlocks.forEach(codeBlock => {\n\t\tconst pre = codeBlock.parentElement\n\t\tif (pre) {\n\t\t\tconst copyBtn = document.createElement('button')\n\t\t\tcopyBtn.className = 'touchchat-code-copy'\n\t\t\tcopyBtn.addEventListener('click', () => {\n\t\t\t\tconst code = codeBlock.textContent || ''\n\t\t\t\tcopyWithFeedback(code, copyBtn, '', '已复制', 2000)\n\t\t\t})\n\n\t\t\tpre.style.position = 'relative'\n\t\t\tpre.appendChild(copyBtn)\n\t\t}\n\t})\n}\n\n// 渲染内容\nconst renderContent = (content: string, type: 'main' | 'thinking' | 'reasoning', index?: number): void => {\n\tconst renderIndex = index ?? currIndex.value\n\tif (renderIndex < 0 || renderIndex >= chatList.value.length) return\n\n\tconst refArrays = {\n\t\tmain: htmlContentRef,\n\t\tthinking: thinkingContentRef,\n\t\treasoning: reasoningContentRef\n\t}\n\tconst processors = {\n\t\tmain: (content: string) => markdown?.render(content, { isReasoning: false }) || '',\n\t\tthinking: (content: string) => markdown?.render(content, { isReasoning: false }) || '',\n\t\treasoning: (content: string) => markdown?.render(content, { isReasoning: true }) || ''\n\t}\n\n\tconst container = refArrays[type].value[renderIndex]\n\tif (!container) return\n\n\tcontainer.innerHTML = processors[type](content || '')\n\tconst sanitizedContent = DOMPurify.sanitize(processors[type](content || ''))\n\tcontainer.innerHTML = sanitizedContent\n\tattachCopyButtons(container)\n}\n\n// 发送消息\nconst sendMessage = (content?: string, fileList?: any[], auto?: boolean, type?: string): void => {\n\tinputValue.value = content || ''\n\thandleBeforeSend(content, fileList, auto, type)\n}\n\n// 发送前处理\nconst handleBeforeSend = (content?: string, fileList?: any[], auto?: boolean, type?: string): void => {\n\tfileData.value = fileList || []\n\tif (beforeSend) {\n\t\tconst fn = beforeSend()\n\t\tif (fn && typeof (fn as any).then === 'function') {\n\t\t\t;(Promise.resolve(fn) as Promise<{ result: boolean; componentName?: string }>)\n\t\t\t\t.then(res => {\n\t\t\t\t\tif (res.result) {\n\t\t\t\t\t\tcurrentComponentName.value = res.componentName || ''\n\t\t\t\t\t\thandleSend(content, fileList, auto, type)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.log(error)\n\t\t\t\t})\n\t\t} else {\n\t\t\tif (fn.result) {\n\t\t\t\tcurrentComponentName.value = fn.componentName || ''\n\t\t\t\thandleSend(content, fileList, auto, type)\n\t\t\t}\n\t\t}\n\t}\n}\n\n// 处理发送\nconst handleSend = (content?: string, fileList?: any[], auto?: boolean, type?: string): void => {\n\temit('beforeSendMessage')\n\t// sendMessageInject(inputValue.value)\n\tsendMessageInject(inputValue.value, fileData.value)\n\ttypeFlag.value = type || ''\n\tif (content) {\n\t\tinputValue.value = content\n\t}\n\tif ((isChating.value || (!inputValue.value.trim() && !fileList?.length)) && !auto) return\n\t// const userChatId = 'user_' + crypto.randomUUID().replace(/-/gi, '')\n\tconst userChatId = 'user_' + Math.random().toString(36).slice(2).padEnd(10, '0').slice(0, 10)\n\tconst userMessage: ChatMessage = {\n\t\tchatId: userChatId,\n\t\tuser: 'u',\n\t\ttype: 'text',\n\t\tcontent: inputValue.value,\n\t\tfiles: fileList || [],\n\t\tmsgList: []\n\t}\n\tchatList.value.push(userMessage)\n\tconst index = chatList.value.length - 1\n\tnextTick(() => {\n\t\trenderContent(userMessage.content, 'main', index)\n\t\tscrollToBottom()\n\t})\n\topenSSE(inputValue.value, index + 1)\n\tinputValue.value = ''\n}\n\nconst handleStop = (): void => {\n\tif (isChating.value) {\n\t\t// 终止当前的请求\n\t\tabortController.value?.abort()\n\t\t// 更新状态\n\t\tisChating.value = false\n\t\tchatList.value[currIndex.value].isChating = false\n\t\tstop(chatList.value[currIndex.value], currIndex.value)\n\t}\n}\n\n// 滚动到底部 - 优化版,支持实时滚动和内容变化监听\nconst scrollToBottom = () => {\n\tif (!isMounted.value || isUnmounting.value || !chatContainer.value) return\n\n\tnextTick(() => {\n\t\trequestAnimationFrame(() => {\n\t\t\tconst chatContainerEl = chatContainer.value!\n\t\t\tconst lastMessage = chatContainerEl.querySelector('.touchchat-dialog-content > *:last-child') as HTMLElement | null\n\n\t\t\tif (lastMessage) {\n\t\t\t\t// 计算消息元素的完整高度(包含内边距和边框)\n\t\t\t\tconst { height: messageHeight } = lastMessage.getBoundingClientRect()\n\t\t\t\t// 计算容器可视区域高度\n\t\t\t\tconst containerHeight = chatContainerEl.clientHeight\n\t\t\t\t// 计算消息底部到容器顶部的距离\n\t\t\t\tconst messageBottom = lastMessage.offsetTop + lastMessage.offsetHeight\n\n\t\t\t\t// 如果消息高度超过容器高度,滚动到消息顶部;否则滚动到消息底部\n\t\t\t\tif (messageHeight > containerHeight) {\n\t\t\t\t\tchatContainerEl.scrollTop = lastMessage.offsetTop\n\t\t\t\t} else {\n\t\t\t\t\t// 确保消息底部完全可见(处理可能的内边距/边框问题)\n\t\t\t\t\tchatContainerEl.scrollTop = messageBottom - containerHeight\n\t\t\t\t}\n\n\t\t\t\t// 增强内容变化监听(包括文本节点和子元素变化)\n\t\t\t\tif (scrollObserver.value) {\n\t\t\t\t\tscrollObserver.value.disconnect()\n\t\t\t\t}\n\t\t\t\tscrollObserver.value = new MutationObserver(() => {\n\t\t\t\t\t// 内容变化后重新计算并滚动\n\t\t\t\t\tconst updatedMessageBottom = lastMessage.offsetTop + lastMessage.offsetHeight\n\t\t\t\t\tchatContainerEl.scrollTop = Math.max(updatedMessageBottom - containerHeight, chatContainerEl.scrollTop)\n\t\t\t\t})\n\n\t\t\t\tscrollObserver.value.observe(lastMessage, {\n\t\t\t\t\tchildList: true,\n\t\t\t\t\tsubtree: true,\n\t\t\t\t\tcharacterData: true,\n\t\t\t\t\tattributes: true, // 新增监听属性变化(如高度)\n\t\t\t\t\tattributeFilter: ['style', 'class'] // 只监听样式相关属性\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tchatContainerEl.scrollTo({\n\t\t\t\t\ttop: chatContainerEl.scrollHeight,\n\t\t\t\t\tbehavior: 'smooth'\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t})\n}\n\n// 处理消息操作\nconst handleMessageAction = (action: MessageAction, index: number): void => {\n\tconst message = chatList.value[index]\n\tif (!message) return\n\n\tswitch (action) {\n\t\tcase MessageAction.COPY: {\n\t\t\t// 使用复制功能\n\t\t\tcopyToClipboard(message.content, '复制成功', '复制失败')\n\t\t\tbreak\n\t\t}\n\t\tcase MessageAction.EDIT:\n\t\t\tmessage.isEditing = true\n\t\t\tmessage.editContent = message.content\n\t\t\tbreak\n\t\tcase MessageAction.DELETE:\n\t\t\tmessageUtils.deleteMessageChain(index)\n\t\t\temit('sendMessage', chatList.value)\n\t\t\tbreak\n\t\tcase MessageAction.RETRY: {\n\t\t\tconst aiMessage = chatList.value[index]\n\t\t\tconst userMessageIndex = index - 1\n\t\t\tconst userMessage = chatList.value[userMessageIndex]\n\n\t\t\tif (userMessage && userMessage.user === 'u') {\n\t\t\t\tconst updatedAiMessage = {\n\t\t\t\t\t...aiMessage,\n\t\t\t\t\tcontent: '',\n\t\t\t\t\tthinkContent: '',\n\t\t\t\t\treasoningContent: '',\n\t\t\t\t\tisLiked: false,\n\t\t\t\t\tisDisliked: false,\n\t\t\t\t\tisChating: true,\n\t\t\t\t\tchatId: aiMessage.chatId,\n\t\t\t\t\tuser: aiMessage.user,\n\t\t\t\t\ttype: aiMessage.type,\n\t\t\t\t\tthinkStatus: ThinkStatus.COMPLETED,\n\t\t\t\t\tthinkStartTime: 0,\n\t\t\t\t\tthinkEndTime: 0\n\t\t\t\t}\n\t\t\t\tchatList.value.splice(index, 1, updatedAiMessage)\n\n\t\t\t\tnextTick(() => {\n\t\t\t\t\tif (htmlContentRef.value[index]) htmlContentRef.value[index].innerHTML = ''\n\t\t\t\t\tif (thinkingContentRef.value[index]) thinkingContentRef.value[index].innerHTML = ''\n\t\t\t\t\tif (reasoningContentRef.value[index]) reasoningContentRef.value[index].innerHTML = ''\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\topenSSE(userMessage.content || '', index)\n\t\t\t\t\t}, 50)\n\t\t\t\t})\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tcase MessageAction.LIKE:\n\t\t\tmessageUtils.updateMessage(index, {\n\t\t\t\tisLiked: true,\n\t\t\t\tisDisliked: false\n\t\t\t})\n\t\t\tbreak\n\t\tcase MessageAction.DISLIKE:\n\t\t\tmessageUtils.updateMessage(index, {\n\t\t\t\tisLiked: false,\n\t\t\t\tisDisliked: true\n\t\t\t})\n\t\t\tbreak\n\t}\n}\n\n// 保存编辑\nconst saveEdit = (index: number, newContent: string): void => {\n\tconst message = chatList.value[index]\n\tif (!message || !message.editContent) return\n\n\tchatList.value[index] = {\n\t\t...message,\n\t\tcontent: newContent,\n\t\tisEditing: false,\n\t\teditContent: undefined\n\t}\n\tnextTick(() => {\n\t\trenderContent(message.content, 'main', index)\n\t})\n\n\tif (index + 1 < chatList.value.length && chatList.value[index + 1].user === 'ai') {\n\t\tchatList.value.splice(index + 1, 1)\n\t}\n\n\t// openSSE(newContent, index + 1)\n\tnextTick(() => {\n\t\topenSSE(newContent, index + 1)\n\t})\n\temit('sendMessage', chatList.value)\n}\n\n// 取消编辑\nconst cancelEdit = (index: number): void => {\n\tconst message = chatList.value[index]\n\tif (!message) return\n\n\tmessage.isEditing = false\n\tmessage.editContent = ''\n\tnextTick(() => {\n\t\trenderContent(message.content, 'main', index)\n\t})\n}\n\n// 组件生命周期\nonMounted(async () => {\n\tinit()\n\tisMounted.value = true\n\n\t// 注册所有 agent 到 a2aService\n\tiMultiAgentInfo.value.list.forEach((agent: AgentConfig | SubAgent) => {\n\t\ta2aService.registerAgent(agent as AgentConfig)\n\t})\n\n\t// 确保 selectedAgents 有值\n\tif (iMultiAgentInfo.value.list.length > 0) {\n\t\tselectedAgents.value = [(iMultiAgentInfo.value.list[0] as AgentConfig).id]\n\t}\n})\n\nonBeforeUnmount(() => {\n\tif (!isUnmounting.value) {\n\t\tisUnmounting.value = true\n\t\tisMounted.value = false\n\t\thtmlContentRef.value = []\n\t\tthinkingContentRef.value = []\n\t\treasoningContentRef.value = []\n\t}\n\tif (scrollObserver.value) {\n\t\tscrollObserver.value.disconnect()\n\t\tscrollObserver.value = null\n\t}\n})\n\n// 处理拖拽进入事件\nconst handleDragEnter = () => {\n\tif (ChatInputRef.value) {\n\t\tChatInputRef.value.openMarkLayer()\n\t}\n\tisDragging.value = true\n}\n\n// 处理拖拽离开事件\nconst handleDragLeave = (e: DragEvent) => {\n\t// 检查鼠标是否真的离开容器\n\tconst rect = (e.target as HTMLElement).getBoundingClientRect()\n\tif (e.clientX < rect.left || e.clientX > rect.right || e.clientY < rect.top || e.clientY > rect.bottom) {\n\t\tisDragging.value = false\n\t}\n}\n\n// 处理文件放下事件\nconst handleDrop = async (e: DragEvent) => {\n\tisDragging.value = false\n\n\t// 获取拖拽的文件\n\tconst files = e.dataTransfer?.files\n\n\tif (files && files.length > 0) {\n\t\tconst fileList = await Promise.all(\n\t\t\tArray.from(files).map(async file => {\n\t\t\t\tlet base64 = ''\n\t\t\t\tif (file.type.startsWith('image/')) {\n\t\t\t\t\t// 使用 Promise 封装 FileReader 以正确获取 base64\n\t\t\t\t\tbase64 = await new Promise(resolve => {\n\t\t\t\t\t\tconst reader = new FileReader()\n\t\t\t\t\t\treader.onload = e => {\n\t\t\t\t\t\t\tresolve(e.target?.result as string)\n\t\t\t\t\t\t}\n\t\t\t\t\t\treader.readAsDataURL(file)\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t// id: crypto.randomUUID().replace(/-/gi, ''),\n\t\t\t\t\tid: Math.random().toString(36).slice(2).padEnd(10, '0').slice(0, 10),\n\t\t\t\t\tfile: file,\n\t\t\t\t\tname: file.name,\n\t\t\t\t\tfileType: file.type,\n\t\t\t\t\tfileSize: file.size,\n\t\t\t\t\tlastModified: file.lastModified,\n\t\t\t\t\tpreview: URL.createObjectURL(file),\n\t\t\t\t\tbase64\n\t\t\t\t}\n\t\t\t})\n\t\t)\n\t\tif (ChatInputRef.value) {\n\t\t\tChatInputRef.value.handlePaste(fileList, 'drop')\n\t\t}\n\t}\n\n\tif (ChatInputRef.value) {\n\t\tChatInputRef.value.colseMarkLayer()\n\t}\n}\n\nconst itemUploadFile = (item: FileItem, index: number) => {\n\tconsole.log('itemUploadFile', item, index)\n\tif (ChatInputRef.value) {\n\t\tChatInputRef.value.itemUploadFile(index, 'drop')\n\t}\n}\n\nexport type { ChatMessage, ModuleItem }\n\nprovide('touchchat', {\n\tsend: sendMessage,\n\tretry: handleMessageAction\n})\n\ndefineExpose({\n\tsend: (value: string, fileList?: any[], auto?: boolean, type?: string) => {\n\t\thandleSend(value, fileList, auto, type)\n\t},\n\tretry: (index: number) => {\n\t\thandleMessageAction(MessageAction.RETRY, index)\n\t},\n\tupdate\n})\n</script>\n"],"names":["content","DOMPurify","e","_a","_createElementBlock","_createElementVNode","_renderSlot","_createVNode","_openBlock","_Fragment","_renderList","_createBlock","_unref","$slots"],"mappings":"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"}
|
|
@@ -39,7 +39,8 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
39
39
|
} },
|
|
40
40
|
hasRead: { type: Boolean, default: false },
|
|
41
41
|
isSelectMode: { type: Boolean, default: false },
|
|
42
|
-
uploadAction: { type: Function, default: void 0 }
|
|
42
|
+
uploadAction: { type: Function, default: void 0 },
|
|
43
|
+
hasChating: { type: Boolean, default: false }
|
|
43
44
|
},
|
|
44
45
|
emits: ["send", "afterSend", "like", "dislike", "side-bottom", "change", "historyRemove", "remove", "bottom", "stop", "modelChange", "openSideBar", "share", "withDraw", "file-action", "download-action"],
|
|
45
46
|
setup(__props, { expose: __expose, emit: __emit }) {
|
|
@@ -62,6 +63,10 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
62
63
|
provide("hasRead", props.hasRead);
|
|
63
64
|
provide("isSelectMode", selectMode);
|
|
64
65
|
provide("uploadAction", props.uploadAction);
|
|
66
|
+
provide(
|
|
67
|
+
"hasChating",
|
|
68
|
+
computed(() => props.hasChating)
|
|
69
|
+
);
|
|
65
70
|
const historyListComputed = computed(() => props.historyList);
|
|
66
71
|
const providedHistoryList = ref(props.historyList);
|
|
67
72
|
watch(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.vue2.mjs","sources":["../../../../../../packages/components/touchchat/src/index.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({ name: 'Touchchat' });\n</script>\n<template>\r\n\t<!-- <div>1.0.0-beta.2026032301</div> -->\r\n\t<DeepSeek ref=\"deepSeekRef\" :style=\"elementStyle\" :class=\"elementClass\">\r\n\t\t<!-- msg -->\r\n\t\t<template #aimsg=\"{ item, index }\">\r\n\t\t\t<slot name=\"aimsg\" :item=\"item\" :index=\"index\" />\r\n\t\t</template>\r\n\t\t<template #msg=\"{ item, index }\">\r\n\t\t\t<slot name=\"msg\" :item=\"item\" :index=\"index\" />\r\n\t\t</template>\r\n\t\t<template #aiAvatar>\r\n\t\t\t<slot name=\"aiAvatar\" />\r\n\t\t</template>\r\n\t\t<template #userAvatar>\r\n\t\t\t<slot name=\"userAvatar\" />\r\n\t\t</template>\r\n\t\t<template #welcome>\r\n\t\t\t<slot name=\"welcome\" />\r\n\t\t</template>\r\n\t\t<!-- edit -->\r\n\t\t<template #edit>\r\n\t\t\t<slot name=\"edit\" />\r\n\t\t</template>\r\n\t\t<!-- top -->\r\n\t\t<template #top>\r\n\t\t\t<slot name=\"top\" />\r\n\t\t</template>\r\n\t\t<template #shortcut>\r\n\t\t\t<slot name=\"shortcut\" />\r\n\t\t</template>\r\n\t\t<!-- extend -->\r\n\t\t<template #extend=\"{ item, index }\">\r\n\t\t\t<slot name=\"extend\" :item=\"item\" :index=\"index\" />\r\n\t\t</template>\r\n\t\t<!-- fn -->\r\n\t\t<template #fn=\"{ item, index }\">\r\n\t\t\t<slot name=\"fn\" :item=\"item\" :index=\"index\" />\r\n\t\t</template>\r\n\t\t<template #editTop>\r\n\t\t\t<slot name=\"editTop\" />\r\n\t\t</template>\r\n\t\t<template #editFn>\r\n\t\t\t<slot name=\"editFn\" />\r\n\t\t</template>\r\n\t\t<template #editSubmitRight>\r\n\t\t\t<slot name=\"editSubmitRight\"></slot>\r\n\t\t</template>\r\n\t\t<template #editSubmitLeft>\r\n\t\t\t<slot name=\"editSubmitLeft\"></slot>\r\n\t\t</template>\r\n\t\t<template #extendsFn=\"{ item, index }\">\r\n\t\t\t<slot name=\"extendsFn\" :item=\"item\" :index=\"index\" />\r\n\t\t</template>\r\n\t\t<template #mayLike=\"{ item, index }\">\r\n\t\t\t<slot name=\"mayLike\" :item=\"item\" :index=\"index\" />\r\n\t\t</template>\r\n\t</DeepSeek>\r\n</template>\r\n<script setup lang=\"ts\">\r\nimport { ChatMessage, ChatMsgList, MessageActions, ModuleItem } from './AiChat/Chat/types'\r\nimport type { AgentConfig, SubAgent } from './types/a2a'\r\nimport DeepSeek from './AiChat/TouchHistory.vue'\r\nimport { provide, ref, computed, watch } from 'vue'\r\n\r\n\r\n\r\nconst emits = defineEmits<{\r\n\t(e: 'send', value: string, fileList?: any[]): void\r\n\t(e: 'afterSend', result: any): void\r\n\t(e: 'like', index: number, isLike: boolean): void\r\n\t(e: 'dislike', index: number, isDislike: boolean): void\r\n\t(e: 'side-bottom'): void\r\n\t(e: 'change', id: string): void\r\n\t(e: 'historyRemove', id: string): void\r\n\t(e: 'remove', item: ChatMessage, index: number): void\r\n\t(e: 'bottom'): void\r\n\t(e: 'stop', item: ChatMessage, index: number): void\r\n\t(e: 'modelChange', item: ModuleItem, index: number): void\r\n\t(e: 'openSideBar', item: ChatMessage & ChatMsgList, index: number): void\r\n\t(e: 'share', item: ChatMessage & ChatMsgList, index: number): void\r\n\t(e: 'withDraw', item: ChatMessage & ChatMsgList, index: number): void\r\n\t(e: 'file-action', item: ChatMessage & ChatMsgList, index: number): void\r\n\t(e: 'download-action', item: ChatMessage & ChatMsgList, index: number): void\r\n}>()\r\n\r\nconst sendVal = ref('')\r\n\r\ninterface ScriptItem {\r\n\tid?: string\r\n\tname: string\r\n\tsubTitle?: string\r\n\tcontent: Array<{\r\n\t\tuser: string\r\n\t\tdata?: string\r\n\t\talias?: string[]\r\n\t\ttype?: string\r\n\t}>\r\n}\r\n\r\ninterface HistoryItem {\r\n\tid?: string\r\n\ttime?: string\r\n\ttitle?: string\r\n}\r\n\r\ninterface MessageItem {\r\n\tchatId: string\r\n\tuser: string\r\n\ttype: string\r\n\tcontent: string\r\n\t[props: string]: any\r\n}\r\n\r\n// interface ModuleItem {\r\n// \tname: string\r\n// \tconfig: {\r\n// \t\taction: string\r\n// \t\theaders: () => object\r\n// \t\tbody: () => object\r\n// \t\trespoKey: () => object\r\n// \t}\r\n// }\r\ntype Modules = (string | ModuleItem)[]\r\ntype ResultArray = AgentConfig[] | SubAgent[]\r\ninterface MultiAgentInfo {\r\n\tlist: ResultArray\r\n\turl?: string\r\n\t// token?: string\r\n\theaders?: object\r\n}\r\n\r\nconst props = withDefaults(\r\n\tdefineProps<{\r\n\t\tmode?: string\r\n\t\tscripts?: ScriptItem[]\r\n\t\twidth?: number | string\r\n\t\theight?: number | string\r\n\t\tcomponents?: { [key: string]: any } // components\r\n\t\tavatar?: boolean // avatar\r\n\t\tplaceholder?: string\r\n\t\tunmatchText?: string // unmatchText\r\n\t\ttitle?: string\r\n\t\tlayout?: string // layout=\"side, think, upload, chain,realtime\"\r\n\t\tbeforeSend?: () => { result: boolean; componentName?: string }\r\n\t\thistoryList?: HistoryItem[] // historyList\r\n\t\thistoryDetail?: MessageItem[] // historyDetail\r\n\t\tagents?: {\r\n\t\t\tid: string\r\n\t\t\tname: string\r\n\t\t\tintro: string\r\n\t\t}[] // agents\r\n\t\tmodules?: Modules // modules\r\n\t\tspeed?: number // speed\r\n\t\tallowedTypes?: string[] // allowedTypes\r\n\t\t// agentConfigList?: ResultArray // agentConfigList 智能体配置列表\r\n\t\t// multiAgentHost?: string // multiAgentHost 多智能体主机地址\r\n\t\t// multiAgentToken?: string // multiAgentToken 多智能体认证令牌\r\n\t\tagentInfo?: MultiAgentInfo // agentInfo 多智能体信息\r\n\t\ta2uiProps?: {\r\n\t\t\t[key: string]: any\r\n\t\t}\r\n\t\tmessageActions?: MessageActions\r\n\t\thasRead?: boolean\r\n\t\tisSelectMode?: boolean\r\n\t\tuploadAction?: (file: File, onProgress: (percent: number) => void) => Promise<any>\r\n\t}>(),\r\n\t{\r\n\t\tmode: '',\r\n\t\tscripts: () => [],\r\n\t\twidth: '',\r\n\t\theight: '',\r\n\t\tcomponents: () => ({}),\r\n\t\tavatar: true,\r\n\t\tplaceholder: 'hi,我是touchchat,快来和我聊天吧~',\r\n\t\tunmatchText: '您的消息未匹配到任何内容',\r\n\t\ttitle: 'TouchChat',\r\n\t\tlayout: 'side, clear, think, upload, screen, voice,realtime', //chain 思考链\r\n\t\t// side 侧边栏(历史记录),think 深度思考,upload 上传文件,chain 思考链\r\n\t\tbeforeSend: () => ({ result: true, componentName: '' }),\r\n\t\thistoryList: () => [],\r\n\t\thistoryDetail: () => [],\r\n\t\tagents: () => [],\r\n\t\tmodules: () => [],\r\n\t\tspeed: 10,\r\n\t\tallowedTypes: () => [],\r\n\t\tagentInfo: () => ({\r\n\t\t\tlist: [], // list 智能体列表 =1 单智能体 >1 多智能体\r\n\t\t\turl: '', // url 多智能体主机地址 单智能体为空 多智能体必传\r\n\t\t\theaders: {} // 多智能体请求头信息\r\n\t\t}),\r\n\t\ta2uiProps: () => ({}),\r\n\t\tmessageActions: () => {\r\n\t\t\treturn {\r\n\t\t\t\tuser: ['edit', 'delete', 'copy'],\r\n\t\t\t\tai: ['retry', 'like', 'dislike', 'copy']\r\n\t\t\t}\r\n\t\t},\r\n\t\thasRead: false,\r\n\t\tisSelectMode: false,\r\n\t\tuploadAction: undefined\r\n\t}\r\n)\r\nconst selectMode = computed(() => props.isSelectMode)\r\nprovide('components', props.components)\r\nprovide('avatar', props.avatar)\r\nprovide('placeholder', props.placeholder)\r\nprovide('unmatchText', props.unmatchText)\r\nprovide('title', props.title)\r\nprovide('layout', props.layout)\r\nprovide('beforeSend', props.beforeSend)\r\nprovide('scripts', ref(props.scripts || []))\r\nprovide('speed', props.speed)\r\nprovide('allowedTypes', props.allowedTypes)\r\nprovide('a2uiProps', props.a2uiProps)\r\nprovide('messageActions', props.messageActions)\r\nprovide('hasRead', props.hasRead)\r\nprovide('isSelectMode', selectMode)\r\nprovide('uploadAction', props.uploadAction)\r\nconst historyListComputed = computed(() => props.historyList)\r\nconst providedHistoryList = ref(props.historyList)\r\nwatch(\r\n\thistoryListComputed,\r\n\tnewVal => {\r\n\t\tprovidedHistoryList.value = newVal\r\n\t},\r\n\t{ immediate: true }\r\n)\r\nprovide('historyList', providedHistoryList)\r\nconst historyDetailComputed = computed(() => props.historyDetail)\r\nconst providedHistoryDetail = ref(props.historyDetail)\r\nwatch(\r\n\thistoryDetailComputed,\r\n\tnewVal => {\r\n\t\tprovidedHistoryDetail.value = newVal\r\n\t},\r\n\t{ immediate: true }\r\n)\r\nprovide('historyDetail', providedHistoryDetail)\r\nprovide('agents', props.agents)\r\nconst iModules = ref(props.modules)\r\nwatch(\r\n\t() => props.modules,\r\n\tnewVal => {\r\n\t\tiModules.value = newVal\r\n\t\t// console.log('modules === index.vue === 191', newVal)\r\n\t},\r\n\t{ immediate: true }\r\n)\r\nprovide('modules', iModules)\r\n\r\nconst iMultiAgentInfo = ref(props.agentInfo)\r\nwatch(\r\n\t() => props.agentInfo,\r\n\tnewVal => {\r\n\t\tiMultiAgentInfo.value = newVal\r\n\t},\r\n\t{ immediate: true, deep: true }\r\n)\r\nprovide('agentInfo', iMultiAgentInfo)\r\n\r\n// 新增:提供处理点赞事件的函数\r\nprovide('like', (index: number, isLike: boolean) => {\r\n\t// 这里可以实现具体的点赞逻辑\r\n\temits('like', index, isLike) // like\r\n\t// 可以添加实际的业务逻辑,如调用API等\r\n})\r\n\r\n// 新增:提供处理点赞事件的函数 dislike\r\nprovide('dislike', (index: number, isUnlike: boolean) => {\r\n\t// 这里可以实现具体的点赞逻辑\r\n\temits('dislike', index, isUnlike) // dislike\r\n\t// 可以添加实际的业务逻辑,如调用API等\r\n})\r\n\r\nprovide('send', (value: string, fileList?: any[]) => {\r\n\t// send\r\n\t// 这里可以实现具体的点赞逻辑\r\n\tsendVal.value = value\r\n\temits('send', value, fileList)\r\n\t// 可以添加实际的业务逻辑,如调用API等\r\n})\r\n\r\nprovide('sideBottom', () => {\r\n\t// console.log('sideBottom === 触底事件') // bottom\r\n\temits('side-bottom')\r\n})\r\n\r\nprovide('change', (id: string) => {\r\n\t// console.log('change === 激活事件', id) // change\r\n\temits('change', id)\r\n})\r\n\r\nprovide('historyRemove', (id: string) => {\r\n\t//remove\r\n\t// console.log('historyRemove === 删除事件', id)\r\n\temits('historyRemove', id)\r\n})\r\n\r\nprovide('openSideBar', (item: any, index: number) => {\r\n\temits('openSideBar', item, index)\r\n})\r\n\r\nprovide('share', (item: any, index: number) => {\r\n\temits('share', item, index)\r\n})\r\n\r\nprovide('withDraw', (item: any, index: number) => {\r\n\temits('withDraw', item, index)\r\n})\r\n\r\nprovide('afterSend', (content: any) => {\r\n\t// afterSend\r\n\t// console.log('afterSend === 发送消息事件', content)\r\n\temits('afterSend', content)\r\n})\r\n\r\nprovide('remove', (item: ChatMessage, index: number) => {\r\n\t// afterSend\r\n\t// console.log('remove === 详情删除', item, index)\r\n\temits('remove', item, index)\r\n})\r\n\r\nprovide('bottom', () => {\r\n\t// console.log('bottom === 详情触底')\r\n\temits('bottom')\r\n})\r\n\r\nprovide('stop', (item: ChatMessage, index: number) => {\r\n\t// console.log('stop === 用户终止事件')\r\n\temits('stop', item, index)\r\n})\r\n\r\nprovide('modelChange', (item: ModuleItem, index: number) => {\r\n\t// console.log('modelChange === 模型切换事件', item, index)\r\n\temits('modelChange', item, index)\r\n})\r\n\r\n// const rootRef = ref(null)\r\nconst deepSeekRef = ref<InstanceType<typeof DeepSeek> | null>(null)\r\n\r\nconst elementClass = computed(() => {\r\n\tconst classList = []\r\n\tif (props.mode) {\r\n\t\tclassList.push(`touchchat-${props.mode}`)\r\n\t}\r\n\treturn classList.join(' ')\r\n})\r\n\r\n// 修改elementStyle计算属性,移除对scripts.length的检查\r\nconst elementStyle = computed(() => {\r\n\tlet width = ''\r\n\tlet height = ''\r\n\r\n\tif (props.width) {\r\n\t\tif (typeof props.width === 'string') {\r\n\t\t\twidth = props.width ?? '100%'\r\n\t\t} else {\r\n\t\t\twidth = `${props.width}em`\r\n\t\t}\r\n\t}\r\n\r\n\tif (props.height) {\r\n\t\tif (typeof props.height === 'string') {\r\n\t\t\theight = props.height ?? '100%'\r\n\t\t} else {\r\n\t\t\theight = `${props.height}em`\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\t\twidth,\r\n\t\theight\r\n\t}\r\n})\r\nconst updateInputMethod = ref<any>(null)\r\nprovide('setInput', updateInputMethod)\r\nconst setInput = (newValue: string) => {\r\n\tif (updateInputMethod.value) {\r\n\t\tupdateInputMethod.value(newValue)\r\n\t}\r\n}\r\nprovide('fileAction', (item: any, index: number) => {\r\n\temits('file-action', item, index)\r\n})\r\nprovide('downloadAction', (item: any, index: number) => {\r\n\temits('download-action', item, index)\r\n})\r\ndefineExpose({\r\n\tsend: (value: string, fileList?: any[], auto?: boolean, type?: string) => {\r\n\t\tdeepSeekRef.value?.send(value, fileList, auto, type) //send\r\n\t},\r\n\tcloseExtend: () => {\r\n\t\tdeepSeekRef.value?.closeExtend() // closeExtend\r\n\t},\r\n\tcreate: () => {\r\n\t\tdeepSeekRef.value?.create() // reset\r\n\t},\r\n\tretry: (index: number) => {\r\n\t\tdeepSeekRef.value?.retry(index)\r\n\t},\r\n\tupdate: (index: number, message: object) => {\r\n\t\tdeepSeekRef.value?.update(index, message)\r\n\t},\r\n\tchangeChat: (index: number) => {\r\n\t\tdeepSeekRef.value?.changeChat(index)\r\n\t},\r\n\tclearChat: () => {\r\n\t\tdeepSeekRef.value?.clearChat()\r\n\t},\r\n\tsetInput\r\n})\r\n</script>\r\n"],"names":["DO_defineComponent","_createCommentVNode","_createVNode","_withCtx","_renderSlot"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.vue2.mjs","sources":["../../../../../../packages/components/touchchat/src/index.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({ name: 'Touchchat' });\n</script>\n<template>\n\t<!-- <div>1.0.0-beta.2026032301</div> -->\n\t<DeepSeek ref=\"deepSeekRef\" :style=\"elementStyle\" :class=\"elementClass\">\n\t\t<!-- msg -->\n\t\t<template #aimsg=\"{ item, index }\">\n\t\t\t<slot name=\"aimsg\" :item=\"item\" :index=\"index\" />\n\t\t</template>\n\t\t<template #msg=\"{ item, index }\">\n\t\t\t<slot name=\"msg\" :item=\"item\" :index=\"index\" />\n\t\t</template>\n\t\t<template #aiAvatar>\n\t\t\t<slot name=\"aiAvatar\" />\n\t\t</template>\n\t\t<template #userAvatar>\n\t\t\t<slot name=\"userAvatar\" />\n\t\t</template>\n\t\t<template #welcome>\n\t\t\t<slot name=\"welcome\" />\n\t\t</template>\n\t\t<!-- edit -->\n\t\t<template #edit>\n\t\t\t<slot name=\"edit\" />\n\t\t</template>\n\t\t<!-- top -->\n\t\t<template #top>\n\t\t\t<slot name=\"top\" />\n\t\t</template>\n\t\t<template #shortcut>\n\t\t\t<slot name=\"shortcut\" />\n\t\t</template>\n\t\t<!-- extend -->\n\t\t<template #extend=\"{ item, index }\">\n\t\t\t<slot name=\"extend\" :item=\"item\" :index=\"index\" />\n\t\t</template>\n\t\t<!-- fn -->\n\t\t<template #fn=\"{ item, index }\">\n\t\t\t<slot name=\"fn\" :item=\"item\" :index=\"index\" />\n\t\t</template>\n\t\t<template #editTop>\n\t\t\t<slot name=\"editTop\" />\n\t\t</template>\n\t\t<template #editFn>\n\t\t\t<slot name=\"editFn\" />\n\t\t</template>\n\t\t<template #editSubmitRight>\n\t\t\t<slot name=\"editSubmitRight\"></slot>\n\t\t</template>\n\t\t<template #editSubmitLeft>\n\t\t\t<slot name=\"editSubmitLeft\"></slot>\n\t\t</template>\n\t\t<template #extendsFn=\"{ item, index }\">\n\t\t\t<slot name=\"extendsFn\" :item=\"item\" :index=\"index\" />\n\t\t</template>\n\t\t<template #mayLike=\"{ item, index }\">\n\t\t\t<slot name=\"mayLike\" :item=\"item\" :index=\"index\" />\n\t\t</template>\n\t</DeepSeek>\n</template>\n<script setup lang=\"ts\">\nimport { ChatMessage, ChatMsgList, MessageActions, ModuleItem } from './AiChat/Chat/types'\nimport type { AgentConfig, SubAgent } from './types/a2a'\nimport DeepSeek from './AiChat/TouchHistory.vue'\nimport { provide, ref, computed, watch } from 'vue'\n\n\n\nconst emits = defineEmits<{\n\t(e: 'send', value: string, fileList?: any[]): void\n\t(e: 'afterSend', result: any): void\n\t(e: 'like', index: number, isLike: boolean): void\n\t(e: 'dislike', index: number, isDislike: boolean): void\n\t(e: 'side-bottom'): void\n\t(e: 'change', id: string): void\n\t(e: 'historyRemove', id: string): void\n\t(e: 'remove', item: ChatMessage, index: number): void\n\t(e: 'bottom'): void\n\t(e: 'stop', item: ChatMessage, index: number): void\n\t(e: 'modelChange', item: ModuleItem, index: number): void\n\t(e: 'openSideBar', item: ChatMessage & ChatMsgList, index: number): void\n\t(e: 'share', item: ChatMessage & ChatMsgList, index: number): void\n\t(e: 'withDraw', item: ChatMessage & ChatMsgList, index: number): void\n\t(e: 'file-action', item: ChatMessage & ChatMsgList, index: number): void\n\t(e: 'download-action', item: ChatMessage & ChatMsgList, index: number): void\n}>()\n\nconst sendVal = ref('')\n\ninterface ScriptItem {\n\tid?: string\n\tname: string\n\tsubTitle?: string\n\tcontent: Array<{\n\t\tuser: string\n\t\tdata?: string\n\t\talias?: string[]\n\t\ttype?: string\n\t}>\n}\n\ninterface HistoryItem {\n\tid?: string\n\ttime?: string\n\ttitle?: string\n}\n\ninterface MessageItem {\n\tchatId: string\n\tuser: string\n\ttype: string\n\tcontent: string\n\t[props: string]: any\n}\n\n// interface ModuleItem {\n// \tname: string\n// \tconfig: {\n// \t\taction: string\n// \t\theaders: () => object\n// \t\tbody: () => object\n// \t\trespoKey: () => object\n// \t}\n// }\ntype Modules = (string | ModuleItem)[]\ntype ResultArray = AgentConfig[] | SubAgent[]\ninterface MultiAgentInfo {\n\tlist: ResultArray\n\turl?: string\n\t// token?: string\n\theaders?: object\n}\n\nconst props = withDefaults(\n\tdefineProps<{\n\t\tmode?: string\n\t\tscripts?: ScriptItem[]\n\t\twidth?: number | string\n\t\theight?: number | string\n\t\tcomponents?: { [key: string]: any } // components\n\t\tavatar?: boolean // avatar\n\t\tplaceholder?: string\n\t\tunmatchText?: string // unmatchText\n\t\ttitle?: string\n\t\tlayout?: string // layout=\"side, think, upload, chain,realtime\"\n\t\tbeforeSend?: () => { result: boolean; componentName?: string }\n\t\thistoryList?: HistoryItem[] // historyList\n\t\thistoryDetail?: MessageItem[] // historyDetail\n\t\tagents?: {\n\t\t\tid: string\n\t\t\tname: string\n\t\t\tintro: string\n\t\t}[] // agents\n\t\tmodules?: Modules // modules\n\t\tspeed?: number // speed\n\t\tallowedTypes?: string[] // allowedTypes\n\t\t// agentConfigList?: ResultArray // agentConfigList 智能体配置列表\n\t\t// multiAgentHost?: string // multiAgentHost 多智能体主机地址\n\t\t// multiAgentToken?: string // multiAgentToken 多智能体认证令牌\n\t\tagentInfo?: MultiAgentInfo // agentInfo 多智能体信息\n\t\ta2uiProps?: {\n\t\t\t[key: string]: any\n\t\t}\n\t\tmessageActions?: MessageActions\n\t\thasRead?: boolean\n\t\tisSelectMode?: boolean\n\t\tuploadAction?: (file: File, onProgress: (percent: number) => void) => Promise<any>\n\t\thasChating?: boolean\n\t}>(),\n\t{\n\t\tmode: '',\n\t\tscripts: () => [],\n\t\twidth: '',\n\t\theight: '',\n\t\tcomponents: () => ({}),\n\t\tavatar: true,\n\t\tplaceholder: 'hi,我是touchchat,快来和我聊天吧~',\n\t\tunmatchText: '您的消息未匹配到任何内容',\n\t\ttitle: 'TouchChat',\n\t\tlayout: 'side, clear, think, upload, screen, voice,realtime', //chain 思考链\n\t\t// side 侧边栏(历史记录),think 深度思考,upload 上传文件,chain 思考链\n\t\tbeforeSend: () => ({ result: true, componentName: '' }),\n\t\thistoryList: () => [],\n\t\thistoryDetail: () => [],\n\t\tagents: () => [],\n\t\tmodules: () => [],\n\t\tspeed: 10,\n\t\tallowedTypes: () => [],\n\t\tagentInfo: () => ({\n\t\t\tlist: [], // list 智能体列表 =1 单智能体 >1 多智能体\n\t\t\turl: '', // url 多智能体主机地址 单智能体为空 多智能体必传\n\t\t\theaders: {} // 多智能体请求头信息\n\t\t}),\n\t\ta2uiProps: () => ({}),\n\t\tmessageActions: () => {\n\t\t\treturn {\n\t\t\t\tuser: ['edit', 'delete', 'copy'],\n\t\t\t\tai: ['retry', 'like', 'dislike', 'copy']\n\t\t\t}\n\t\t},\n\t\thasRead: false,\n\t\tisSelectMode: false,\n\t\tuploadAction: undefined,\n\t\thasChating: false\n\t}\n)\nconst selectMode = computed(() => props.isSelectMode)\nprovide('components', props.components)\nprovide('avatar', props.avatar)\nprovide('placeholder', props.placeholder)\nprovide('unmatchText', props.unmatchText)\nprovide('title', props.title)\nprovide('layout', props.layout)\nprovide('beforeSend', props.beforeSend)\nprovide('scripts', ref(props.scripts || []))\nprovide('speed', props.speed)\nprovide('allowedTypes', props.allowedTypes)\nprovide('a2uiProps', props.a2uiProps)\nprovide('messageActions', props.messageActions)\nprovide('hasRead', props.hasRead)\nprovide('isSelectMode', selectMode)\nprovide('uploadAction', props.uploadAction)\n\nprovide(\n\t'hasChating',\n\tcomputed(() => props.hasChating)\n)\n\nconst historyListComputed = computed(() => props.historyList)\nconst providedHistoryList = ref(props.historyList)\nwatch(\n\thistoryListComputed,\n\tnewVal => {\n\t\tprovidedHistoryList.value = newVal\n\t},\n\t{ immediate: true }\n)\nprovide('historyList', providedHistoryList)\nconst historyDetailComputed = computed(() => props.historyDetail)\nconst providedHistoryDetail = ref(props.historyDetail)\nwatch(\n\thistoryDetailComputed,\n\tnewVal => {\n\t\tprovidedHistoryDetail.value = newVal\n\t},\n\t{ immediate: true }\n)\nprovide('historyDetail', providedHistoryDetail)\nprovide('agents', props.agents)\nconst iModules = ref(props.modules)\nwatch(\n\t() => props.modules,\n\tnewVal => {\n\t\tiModules.value = newVal\n\t\t// console.log('modules === index.vue === 191', newVal)\n\t},\n\t{ immediate: true }\n)\nprovide('modules', iModules)\n\nconst iMultiAgentInfo = ref(props.agentInfo)\nwatch(\n\t() => props.agentInfo,\n\tnewVal => {\n\t\tiMultiAgentInfo.value = newVal\n\t},\n\t{ immediate: true, deep: true }\n)\nprovide('agentInfo', iMultiAgentInfo)\n\n// 新增:提供处理点赞事件的函数\nprovide('like', (index: number, isLike: boolean) => {\n\t// 这里可以实现具体的点赞逻辑\n\temits('like', index, isLike) // like\n\t// 可以添加实际的业务逻辑,如调用API等\n})\n\n// 新增:提供处理点赞事件的函数 dislike\nprovide('dislike', (index: number, isUnlike: boolean) => {\n\t// 这里可以实现具体的点赞逻辑\n\temits('dislike', index, isUnlike) // dislike\n\t// 可以添加实际的业务逻辑,如调用API等\n})\n\nprovide('send', (value: string, fileList?: any[]) => {\n\t// send\n\t// 这里可以实现具体的点赞逻辑\n\tsendVal.value = value\n\temits('send', value, fileList)\n\t// 可以添加实际的业务逻辑,如调用API等\n})\n\nprovide('sideBottom', () => {\n\t// console.log('sideBottom === 触底事件') // bottom\n\temits('side-bottom')\n})\n\nprovide('change', (id: string) => {\n\t// console.log('change === 激活事件', id) // change\n\temits('change', id)\n})\n\nprovide('historyRemove', (id: string) => {\n\t//remove\n\t// console.log('historyRemove === 删除事件', id)\n\temits('historyRemove', id)\n})\n\nprovide('openSideBar', (item: any, index: number) => {\n\temits('openSideBar', item, index)\n})\n\nprovide('share', (item: any, index: number) => {\n\temits('share', item, index)\n})\n\nprovide('withDraw', (item: any, index: number) => {\n\temits('withDraw', item, index)\n})\n\nprovide('afterSend', (content: any) => {\n\t// afterSend\n\t// console.log('afterSend === 发送消息事件', content)\n\temits('afterSend', content)\n})\n\nprovide('remove', (item: ChatMessage, index: number) => {\n\t// afterSend\n\t// console.log('remove === 详情删除', item, index)\n\temits('remove', item, index)\n})\n\nprovide('bottom', () => {\n\t// console.log('bottom === 详情触底')\n\temits('bottom')\n})\n\nprovide('stop', (item: ChatMessage, index: number) => {\n\t// console.log('stop === 用户终止事件')\n\temits('stop', item, index)\n})\n\nprovide('modelChange', (item: ModuleItem, index: number) => {\n\t// console.log('modelChange === 模型切换事件', item, index)\n\temits('modelChange', item, index)\n})\n\n// const rootRef = ref(null)\nconst deepSeekRef = ref<InstanceType<typeof DeepSeek> | null>(null)\n\nconst elementClass = computed(() => {\n\tconst classList = []\n\tif (props.mode) {\n\t\tclassList.push(`touchchat-${props.mode}`)\n\t}\n\treturn classList.join(' ')\n})\n\n// 修改elementStyle计算属性,移除对scripts.length的检查\nconst elementStyle = computed(() => {\n\tlet width = ''\n\tlet height = ''\n\n\tif (props.width) {\n\t\tif (typeof props.width === 'string') {\n\t\t\twidth = props.width ?? '100%'\n\t\t} else {\n\t\t\twidth = `${props.width}em`\n\t\t}\n\t}\n\n\tif (props.height) {\n\t\tif (typeof props.height === 'string') {\n\t\t\theight = props.height ?? '100%'\n\t\t} else {\n\t\t\theight = `${props.height}em`\n\t\t}\n\t}\n\n\treturn {\n\t\twidth,\n\t\theight\n\t}\n})\nconst updateInputMethod = ref<any>(null)\nprovide('setInput', updateInputMethod)\nconst setInput = (newValue: string) => {\n\tif (updateInputMethod.value) {\n\t\tupdateInputMethod.value(newValue)\n\t}\n}\nprovide('fileAction', (item: any, index: number) => {\n\temits('file-action', item, index)\n})\nprovide('downloadAction', (item: any, index: number) => {\n\temits('download-action', item, index)\n})\ndefineExpose({\n\tsend: (value: string, fileList?: any[], auto?: boolean, type?: string) => {\n\t\tdeepSeekRef.value?.send(value, fileList, auto, type) //send\n\t},\n\tcloseExtend: () => {\n\t\tdeepSeekRef.value?.closeExtend() // closeExtend\n\t},\n\tcreate: () => {\n\t\tdeepSeekRef.value?.create() // reset\n\t},\n\tretry: (index: number) => {\n\t\tdeepSeekRef.value?.retry(index)\n\t},\n\tupdate: (index: number, message: object) => {\n\t\tdeepSeekRef.value?.update(index, message)\n\t},\n\tchangeChat: (index: number) => {\n\t\tdeepSeekRef.value?.changeChat(index)\n\t},\n\tclearChat: () => {\n\t\tdeepSeekRef.value?.clearChat()\n\t},\n\tsetInput\n})\n</script>\n"],"names":["DO_defineComponent","_createCommentVNode","_createVNode","_withCtx","_renderSlot"],"mappings":";;;AAEA,MAAA,WAA6B,GAAAA,eAAA,CAAmB,EAAE,IAAA,EAAM,aAAa,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoErE,IAAA,MAAM,KAAQ,GAAA,MAAA,CAAA;AAmBd,IAAM,MAAA,OAAA,GAAU,IAAI,EAAE,CAAA,CAAA;AA8CtB,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AAyEd,IAAA,MAAM,UAAa,GAAA,QAAA,CAAS,MAAM,KAAA,CAAM,YAAY,CAAA,CAAA;AACpD,IAAQ,OAAA,CAAA,YAAA,EAAc,MAAM,UAAU,CAAA,CAAA;AACtC,IAAQ,OAAA,CAAA,QAAA,EAAU,MAAM,MAAM,CAAA,CAAA;AAC9B,IAAQ,OAAA,CAAA,aAAA,EAAe,MAAM,WAAW,CAAA,CAAA;AACxC,IAAQ,OAAA,CAAA,aAAA,EAAe,MAAM,WAAW,CAAA,CAAA;AACxC,IAAQ,OAAA,CAAA,OAAA,EAAS,MAAM,KAAK,CAAA,CAAA;AAC5B,IAAQ,OAAA,CAAA,QAAA,EAAU,MAAM,MAAM,CAAA,CAAA;AAC9B,IAAQ,OAAA,CAAA,YAAA,EAAc,MAAM,UAAU,CAAA,CAAA;AACtC,IAAA,OAAA,CAAQ,WAAW,GAAI,CAAA,KAAA,CAAM,OAAW,IAAA,EAAE,CAAC,CAAA,CAAA;AAC3C,IAAQ,OAAA,CAAA,OAAA,EAAS,MAAM,KAAK,CAAA,CAAA;AAC5B,IAAQ,OAAA,CAAA,cAAA,EAAgB,MAAM,YAAY,CAAA,CAAA;AAC1C,IAAQ,OAAA,CAAA,WAAA,EAAa,MAAM,SAAS,CAAA,CAAA;AACpC,IAAQ,OAAA,CAAA,gBAAA,EAAkB,MAAM,cAAc,CAAA,CAAA;AAC9C,IAAQ,OAAA,CAAA,SAAA,EAAW,MAAM,OAAO,CAAA,CAAA;AAChC,IAAA,OAAA,CAAQ,gBAAgB,UAAU,CAAA,CAAA;AAClC,IAAQ,OAAA,CAAA,cAAA,EAAgB,MAAM,YAAY,CAAA,CAAA;AAE1C,IAAA,OAAA;AAAA,MACC,YAAA;AAAA,MACA,QAAA,CAAS,MAAM,KAAA,CAAM,UAAU,CAAA;AAAA,KAChC,CAAA;AAEA,IAAA,MAAM,mBAAsB,GAAA,QAAA,CAAS,MAAM,KAAA,CAAM,WAAW,CAAA,CAAA;AAC5D,IAAM,MAAA,mBAAA,GAAsB,GAAI,CAAA,KAAA,CAAM,WAAW,CAAA,CAAA;AACjD,IAAA,KAAA;AAAA,MACC,mBAAA;AAAA,MACA,CAAU,MAAA,KAAA;AACT,QAAA,mBAAA,CAAoB,KAAQ,GAAA,MAAA,CAAA;AAAA,OAC7B;AAAA,MACA,EAAE,WAAW,IAAK,EAAA;AAAA,KACnB,CAAA;AACA,IAAA,OAAA,CAAQ,eAAe,mBAAmB,CAAA,CAAA;AAC1C,IAAA,MAAM,qBAAwB,GAAA,QAAA,CAAS,MAAM,KAAA,CAAM,aAAa,CAAA,CAAA;AAChE,IAAM,MAAA,qBAAA,GAAwB,GAAI,CAAA,KAAA,CAAM,aAAa,CAAA,CAAA;AACrD,IAAA,KAAA;AAAA,MACC,qBAAA;AAAA,MACA,CAAU,MAAA,KAAA;AACT,QAAA,qBAAA,CAAsB,KAAQ,GAAA,MAAA,CAAA;AAAA,OAC/B;AAAA,MACA,EAAE,WAAW,IAAK,EAAA;AAAA,KACnB,CAAA;AACA,IAAA,OAAA,CAAQ,iBAAiB,qBAAqB,CAAA,CAAA;AAC9C,IAAQ,OAAA,CAAA,QAAA,EAAU,MAAM,MAAM,CAAA,CAAA;AAC9B,IAAM,MAAA,QAAA,GAAW,GAAI,CAAA,KAAA,CAAM,OAAO,CAAA,CAAA;AAClC,IAAA,KAAA;AAAA,MACC,MAAM,KAAM,CAAA,OAAA;AAAA,MACZ,CAAU,MAAA,KAAA;AACT,QAAA,QAAA,CAAS,KAAQ,GAAA,MAAA,CAAA;AAAA,OAElB;AAAA,MACA,EAAE,WAAW,IAAK,EAAA;AAAA,KACnB,CAAA;AACA,IAAA,OAAA,CAAQ,WAAW,QAAQ,CAAA,CAAA;AAE3B,IAAM,MAAA,eAAA,GAAkB,GAAI,CAAA,KAAA,CAAM,SAAS,CAAA,CAAA;AAC3C,IAAA,KAAA;AAAA,MACC,MAAM,KAAM,CAAA,SAAA;AAAA,MACZ,CAAU,MAAA,KAAA;AACT,QAAA,eAAA,CAAgB,KAAQ,GAAA,MAAA,CAAA;AAAA,OACzB;AAAA,MACA,EAAE,SAAA,EAAW,IAAM,EAAA,IAAA,EAAM,IAAK,EAAA;AAAA,KAC/B,CAAA;AACA,IAAA,OAAA,CAAQ,aAAa,eAAe,CAAA,CAAA;AAGpC,IAAQ,OAAA,CAAA,MAAA,EAAQ,CAAC,KAAA,EAAe,MAAoB,KAAA;AAEnD,MAAM,KAAA,CAAA,MAAA,EAAQ,OAAO,MAAM,CAAA,CAAA;AAAA,KAE3B,CAAA,CAAA;AAGD,IAAQ,OAAA,CAAA,SAAA,EAAW,CAAC,KAAA,EAAe,QAAsB,KAAA;AAExD,MAAM,KAAA,CAAA,SAAA,EAAW,OAAO,QAAQ,CAAA,CAAA;AAAA,KAEhC,CAAA,CAAA;AAED,IAAQ,OAAA,CAAA,MAAA,EAAQ,CAAC,KAAA,EAAe,QAAqB,KAAA;AAGpD,MAAA,OAAA,CAAQ,KAAQ,GAAA,KAAA,CAAA;AAChB,MAAM,KAAA,CAAA,MAAA,EAAQ,OAAO,QAAQ,CAAA,CAAA;AAAA,KAE7B,CAAA,CAAA;AAED,IAAA,OAAA,CAAQ,cAAc,MAAM;AAE3B,MAAA,KAAA,CAAM,aAAa,CAAA,CAAA;AAAA,KACnB,CAAA,CAAA;AAED,IAAQ,OAAA,CAAA,QAAA,EAAU,CAAC,EAAe,KAAA;AAEjC,MAAA,KAAA,CAAM,UAAU,EAAE,CAAA,CAAA;AAAA,KAClB,CAAA,CAAA;AAED,IAAQ,OAAA,CAAA,eAAA,EAAiB,CAAC,EAAe,KAAA;AAGxC,MAAA,KAAA,CAAM,iBAAiB,EAAE,CAAA,CAAA;AAAA,KACzB,CAAA,CAAA;AAED,IAAQ,OAAA,CAAA,aAAA,EAAe,CAAC,IAAA,EAAW,KAAkB,KAAA;AACpD,MAAM,KAAA,CAAA,aAAA,EAAe,MAAM,KAAK,CAAA,CAAA;AAAA,KAChC,CAAA,CAAA;AAED,IAAQ,OAAA,CAAA,OAAA,EAAS,CAAC,IAAA,EAAW,KAAkB,KAAA;AAC9C,MAAM,KAAA,CAAA,OAAA,EAAS,MAAM,KAAK,CAAA,CAAA;AAAA,KAC1B,CAAA,CAAA;AAED,IAAQ,OAAA,CAAA,UAAA,EAAY,CAAC,IAAA,EAAW,KAAkB,KAAA;AACjD,MAAM,KAAA,CAAA,UAAA,EAAY,MAAM,KAAK,CAAA,CAAA;AAAA,KAC7B,CAAA,CAAA;AAED,IAAQ,OAAA,CAAA,WAAA,EAAa,CAAC,OAAiB,KAAA;AAGtC,MAAA,KAAA,CAAM,aAAa,OAAO,CAAA,CAAA;AAAA,KAC1B,CAAA,CAAA;AAED,IAAQ,OAAA,CAAA,QAAA,EAAU,CAAC,IAAA,EAAmB,KAAkB,KAAA;AAGvD,MAAM,KAAA,CAAA,QAAA,EAAU,MAAM,KAAK,CAAA,CAAA;AAAA,KAC3B,CAAA,CAAA;AAED,IAAA,OAAA,CAAQ,UAAU,MAAM;AAEvB,MAAA,KAAA,CAAM,QAAQ,CAAA,CAAA;AAAA,KACd,CAAA,CAAA;AAED,IAAQ,OAAA,CAAA,MAAA,EAAQ,CAAC,IAAA,EAAmB,KAAkB,KAAA;AAErD,MAAM,KAAA,CAAA,MAAA,EAAQ,MAAM,KAAK,CAAA,CAAA;AAAA,KACzB,CAAA,CAAA;AAED,IAAQ,OAAA,CAAA,aAAA,EAAe,CAAC,IAAA,EAAkB,KAAkB,KAAA;AAE3D,MAAM,KAAA,CAAA,aAAA,EAAe,MAAM,KAAK,CAAA,CAAA;AAAA,KAChC,CAAA,CAAA;AAGD,IAAM,MAAA,WAAA,GAAc,IAA0C,IAAI,CAAA,CAAA;AAElE,IAAM,MAAA,YAAA,GAAe,SAAS,MAAM;AACnC,MAAA,MAAM,YAAY,EAAC,CAAA;AACnB,MAAA,IAAI,MAAM,IAAM,EAAA;AACf,QAAU,SAAA,CAAA,IAAA,CAAK,CAAa,UAAA,EAAA,KAAA,CAAM,IAAM,CAAA,CAAA,CAAA,CAAA;AAAA,OACzC;AACA,MAAO,OAAA,SAAA,CAAU,KAAK,GAAG,CAAA,CAAA;AAAA,KACzB,CAAA,CAAA;AAGD,IAAM,MAAA,YAAA,GAAe,SAAS,MAAM;;AACnC,MAAA,IAAI,KAAQ,GAAA,EAAA,CAAA;AACZ,MAAA,IAAI,MAAS,GAAA,EAAA,CAAA;AAEb,MAAA,IAAI,MAAM,KAAO,EAAA;AAChB,QAAI,IAAA,OAAO,KAAM,CAAA,KAAA,KAAU,QAAU,EAAA;AACpC,UAAQ,KAAA,GAAA,CAAA,EAAA,GAAA,KAAA,CAAM,UAAN,IAAe,GAAA,EAAA,GAAA,MAAA,CAAA;AAAA,SACjB,MAAA;AACN,UAAA,KAAA,GAAQ,GAAG,KAAM,CAAA,KAAA,CAAA,EAAA,CAAA,CAAA;AAAA,SAClB;AAAA,OACD;AAEA,MAAA,IAAI,MAAM,MAAQ,EAAA;AACjB,QAAI,IAAA,OAAO,KAAM,CAAA,MAAA,KAAW,QAAU,EAAA;AACrC,UAAS,MAAA,GAAA,CAAA,EAAA,GAAA,KAAA,CAAM,WAAN,IAAgB,GAAA,EAAA,GAAA,MAAA,CAAA;AAAA,SACnB,MAAA;AACN,UAAA,MAAA,GAAS,GAAG,KAAM,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;AAAA,SACnB;AAAA,OACD;AAEA,MAAO,OAAA;AAAA,QACN,KAAA;AAAA,QACA,MAAA;AAAA,OACD,CAAA;AAAA,KACA,CAAA,CAAA;AACD,IAAM,MAAA,iBAAA,GAAoB,IAAS,IAAI,CAAA,CAAA;AACvC,IAAA,OAAA,CAAQ,YAAY,iBAAiB,CAAA,CAAA;AACrC,IAAM,MAAA,QAAA,GAAW,CAAC,QAAqB,KAAA;AACtC,MAAA,IAAI,kBAAkB,KAAO,EAAA;AAC5B,QAAA,iBAAA,CAAkB,MAAM,QAAQ,CAAA,CAAA;AAAA,OACjC;AAAA,KACD,CAAA;AACA,IAAQ,OAAA,CAAA,YAAA,EAAc,CAAC,IAAA,EAAW,KAAkB,KAAA;AACnD,MAAM,KAAA,CAAA,aAAA,EAAe,MAAM,KAAK,CAAA,CAAA;AAAA,KAChC,CAAA,CAAA;AACD,IAAQ,OAAA,CAAA,gBAAA,EAAkB,CAAC,IAAA,EAAW,KAAkB,KAAA;AACvD,MAAM,KAAA,CAAA,iBAAA,EAAmB,MAAM,KAAK,CAAA,CAAA;AAAA,KACpC,CAAA,CAAA;AACD,IAAa,QAAA,CAAA;AAAA,MACZ,IAAM,EAAA,CAAC,KAAe,EAAA,QAAA,EAAkB,MAAgB,IAAkB,KAAA;;AACzE,QAAA,CAAA,EAAA,GAAA,WAAA,CAAY,KAAZ,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAmB,IAAK,CAAA,KAAA,EAAO,UAAU,IAAM,EAAA,IAAA,CAAA,CAAA;AAAA,OAChD;AAAA,MACA,aAAa,MAAM;;AAClB,QAAA,CAAA,EAAA,GAAA,WAAA,CAAY,UAAZ,IAAmB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAA,EAAA,CAAA;AAAA,OACpB;AAAA,MACA,QAAQ,MAAM;;AACb,QAAA,CAAA,EAAA,GAAA,WAAA,CAAY,UAAZ,IAAmB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,EAAA,CAAA;AAAA,OACpB;AAAA,MACA,KAAA,EAAO,CAAC,KAAkB,KAAA;;AACzB,QAAY,CAAA,EAAA,GAAA,WAAA,CAAA,KAAA,KAAZ,mBAAmB,KAAM,CAAA,KAAA,CAAA,CAAA;AAAA,OAC1B;AAAA,MACA,MAAA,EAAQ,CAAC,KAAA,EAAe,OAAoB,KAAA;;AAC3C,QAAY,CAAA,EAAA,GAAA,WAAA,CAAA,KAAA,KAAZ,IAAmB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,CAAO,KAAO,EAAA,OAAA,CAAA,CAAA;AAAA,OAClC;AAAA,MACA,UAAA,EAAY,CAAC,KAAkB,KAAA;;AAC9B,QAAY,CAAA,EAAA,GAAA,WAAA,CAAA,KAAA,KAAZ,mBAAmB,UAAW,CAAA,KAAA,CAAA,CAAA;AAAA,OAC/B;AAAA,MACA,WAAW,MAAM;;AAChB,QAAA,CAAA,EAAA,GAAA,WAAA,CAAY,UAAZ,IAAmB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAA,EAAA,CAAA;AAAA,OACpB;AAAA,MACA,QAAA;AAAA,KACA,CAAA,CAAA;;;;;;UAjaAC,mBAAyC,oCAAA,CAAA;AAAA,UACzCC,YAsDW,QAAA,EAAA;AAAA,mBAtDG,EAAA,aAAA;AAAA,YAAJ,GAAI,EAAA,WAAA;AAAA,YAAe,KAAA,gBAAO,CAAA,YAAA,CAAY,KAAA,CAAA;AAAA,YAAG,KAAA,gBAAO,CAAA,YAAA,CAAY,KAAA,CAAA;AAAA;YAE1D,OACVC,OAAA,CAAA,CAAiD,EAD9B,IAAA,EAAM,OAAK,KAAA;AAAA,cAC9BC,UAAA,CAAiD,IAAA,CAAA,MAAA,EAAA,OAAA,EAAA;AAAA,gBAA7B,IAAA;AAAA,gBAAa,KAAA;AAAA;;YAEvB,KACVD,OAAA,CAAA,CAA+C,EAD9B,IAAA,EAAM,OAAK,KAAA;AAAA,cAC5BC,UAAA,CAA+C,IAAA,CAAA,MAAA,EAAA,KAAA,EAAA;AAAA,gBAA7B,IAAA;AAAA,gBAAa,KAAA;AAAA;;YAErB,QAAA,UACV,MAAwB;AAAA,cAAxBA,UAAA,CAAwB,IAAA,CAAA,MAAA,EAAA,UAAA,CAAA;AAAA;YAEd,UAAA,UACV,MAA0B;AAAA,cAA1BA,UAAA,CAA0B,IAAA,CAAA,MAAA,EAAA,YAAA,CAAA;AAAA;YAEhB,OAAA,UACV,MAAuB;AAAA,cAAvBA,UAAA,CAAuB,IAAA,CAAA,MAAA,EAAA,SAAA,CAAA;AAAA;YAGb,IAAA,UACV,MAAoB;AAAA,cAApBA,UAAA,CAAoB,IAAA,CAAA,MAAA,EAAA,MAAA,CAAA;AAAA;YAGV,GAAA,UACV,MAAmB;AAAA,cAAnBA,UAAA,CAAmB,IAAA,CAAA,MAAA,EAAA,KAAA,CAAA;AAAA;YAET,QAAA,UACV,MAAwB;AAAA,cAAxBA,UAAA,CAAwB,IAAA,CAAA,MAAA,EAAA,UAAA,CAAA;AAAA;YAGd,QACVD,OAAA,CAAA,CAAkD,EAD9B,IAAA,EAAM,OAAK,KAAA;AAAA,cAC/BC,UAAA,CAAkD,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA;AAAA,gBAA7B,IAAA;AAAA,gBAAa,KAAA;AAAA;;YAGxB,IACVD,OAAA,CAAA,CAA8C,EAD9B,IAAA,EAAM,OAAK,KAAA;AAAA,cAC3BC,UAAA,CAA8C,IAAA,CAAA,MAAA,EAAA,IAAA,EAAA;AAAA,gBAA7B,IAAA;AAAA,gBAAa,KAAA;AAAA;;YAEpB,OAAA,UACV,MAAuB;AAAA,cAAvBA,UAAA,CAAuB,IAAA,CAAA,MAAA,EAAA,SAAA,CAAA;AAAA;YAEb,MAAA,UACV,MAAsB;AAAA,cAAtBA,UAAA,CAAsB,IAAA,CAAA,MAAA,EAAA,QAAA,CAAA;AAAA;YAEZ,eAAA,UACV,MAAoC;AAAA,cAApCA,UAAA,CAAoC,IAAA,CAAA,MAAA,EAAA,iBAAA,CAAA;AAAA;YAE1B,cAAA,UACV,MAAmC;AAAA,cAAnCA,UAAA,CAAmC,IAAA,CAAA,MAAA,EAAA,gBAAA,CAAA;AAAA;YAEzB,WACVD,OAAA,CAAA,CAAqD,EAD9B,IAAA,EAAM,OAAK,KAAA;AAAA,cAClCC,UAAA,CAAqD,IAAA,CAAA,MAAA,EAAA,WAAA,EAAA;AAAA,gBAA7B,IAAA;AAAA,gBAAa,KAAA;AAAA;;YAE3B,SACVD,OAAA,CAAA,CAAmD,EAD9B,IAAA,EAAM,OAAK,KAAA;AAAA,cAChCC,UAAA,CAAmD,IAAA,CAAA,MAAA,EAAA,SAAA,EAAA;AAAA,gBAA7B,IAAA;AAAA,gBAAa,KAAA;AAAA;;;;;;;;;;;;;;;"}
|