@touchvue/chat 1.0.0-beta.41 → 1.0.0-beta.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/es/package.json.css +1 -1
  2. package/es/package.json.mjs +1 -1
  3. package/es/packages/components/touchchat/component/AiRobot/HelloChat.vue2.mjs.map +1 -1
  4. package/es/packages/components/touchchat/component/AiRobot/letter.vue.mjs +1 -1
  5. package/es/packages/components/touchchat/component/AiRobot/letter.vue2.mjs +15 -3
  6. package/es/packages/components/touchchat/component/AiRobot/letter.vue2.mjs.map +1 -1
  7. package/es/packages/components/touchchat/component/FileContent.vue2.mjs +3 -3
  8. package/es/packages/components/touchchat/component/FileContent.vue2.mjs.map +1 -1
  9. package/es/packages/components/touchchat/component/FileView.vue2.mjs +2 -2
  10. package/es/packages/components/touchchat/component/FileView.vue2.mjs.map +1 -1
  11. package/es/packages/components/touchchat/component/HelloChat.vue2.mjs.map +1 -1
  12. package/es/packages/components/touchchat/component/ImageFile.vue2.mjs +6 -6
  13. package/es/packages/components/touchchat/component/ImageFile.vue2.mjs.map +1 -1
  14. package/es/packages/components/touchchat/component/ImageView.vue2.mjs +1 -1
  15. package/es/packages/components/touchchat/component/ImageView.vue2.mjs.map +1 -1
  16. package/es/packages/components/touchchat/component/LinkView.vue2.mjs +4 -4
  17. package/es/packages/components/touchchat/component/LinkView.vue2.mjs.map +1 -1
  18. package/es/packages/components/touchchat/component/MarkLayer.vue2.mjs +1 -1
  19. package/es/packages/components/touchchat/component/MarkLayer.vue2.mjs.map +1 -1
  20. package/es/packages/components/touchchat/component/ModuleSelect.vue2.mjs +2 -2
  21. package/es/packages/components/touchchat/component/ModuleSelect.vue2.mjs.map +1 -1
  22. package/es/packages/components/touchchat/component/PDFFile.vue2.mjs +8 -8
  23. package/es/packages/components/touchchat/component/PDFFile.vue2.mjs.map +1 -1
  24. package/es/packages/components/touchchat/component/RealtimeVoice.vue2.mjs +1 -1
  25. package/es/packages/components/touchchat/component/RealtimeVoice.vue2.mjs.map +1 -1
  26. package/es/packages/components/touchchat/component/Screenshot.vue2.mjs +11 -2
  27. package/es/packages/components/touchchat/component/Screenshot.vue2.mjs.map +1 -1
  28. package/es/packages/components/touchchat/component/UploadView.vue2.mjs +10 -7
  29. package/es/packages/components/touchchat/component/UploadView.vue2.mjs.map +1 -1
  30. package/es/packages/components/touchchat/component/VoiceView.vue2.mjs +1 -1
  31. package/es/packages/components/touchchat/component/VoiceView.vue2.mjs.map +1 -1
  32. package/es/packages/components/touchchat/src/AiChat/AgentsView.vue2.mjs +1 -1
  33. package/es/packages/components/touchchat/src/AiChat/AgentsView.vue2.mjs.map +1 -1
  34. package/es/packages/components/touchchat/src/AiChat/AiMessage.vue2.mjs +22 -22
  35. package/es/packages/components/touchchat/src/AiChat/AiMessage.vue2.mjs.map +1 -1
  36. package/es/packages/components/touchchat/src/AiChat/Chat/scriptMatcher.mjs +145 -0
  37. package/es/packages/components/touchchat/src/AiChat/Chat/scriptMatcher.mjs.map +1 -0
  38. package/es/packages/components/touchchat/src/AiChat/Chat/types.mjs +18 -0
  39. package/es/packages/components/touchchat/src/AiChat/Chat/types.mjs.map +1 -0
  40. package/es/packages/components/touchchat/src/AiChat/Chat/useChat.mjs +672 -0
  41. package/es/packages/components/touchchat/src/AiChat/Chat/useChat.mjs.map +1 -0
  42. package/es/packages/components/touchchat/src/AiChat/Chat/useCopy.mjs +55 -0
  43. package/es/packages/components/touchchat/src/AiChat/Chat/useCopy.mjs.map +1 -0
  44. package/es/packages/components/touchchat/src/AiChat/Chat/useMessageRender.mjs +155 -0
  45. package/es/packages/components/touchchat/src/AiChat/Chat/useMessageRender.mjs.map +1 -0
  46. package/es/packages/components/touchchat/src/AiChat/Chat/useSSE.mjs +352 -0
  47. package/es/packages/components/touchchat/src/AiChat/Chat/useSSE.mjs.map +1 -0
  48. package/es/packages/components/touchchat/src/AiChat/Chat/useScroll.mjs +74 -0
  49. package/es/packages/components/touchchat/src/AiChat/Chat/useScroll.mjs.map +1 -0
  50. package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs +8 -7
  51. package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs.map +1 -1
  52. package/es/packages/components/touchchat/src/AiChat/HistoryList.vue2.mjs +1 -1
  53. package/es/packages/components/touchchat/src/AiChat/HistoryList.vue2.mjs.map +1 -1
  54. package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.mjs +3 -3
  55. package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.mjs.map +1 -1
  56. package/es/packages/components/touchchat/src/AiChat/MessageActions.vue2.mjs +11 -11
  57. package/es/packages/components/touchchat/src/AiChat/MessageActions.vue2.mjs.map +1 -1
  58. package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue2.mjs +3 -3
  59. package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue2.mjs.map +1 -1
  60. package/es/packages/components/touchchat/src/AiChat/TouchAgent.vue2.mjs +33 -29
  61. package/es/packages/components/touchchat/src/AiChat/TouchAgent.vue2.mjs.map +1 -1
  62. package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs +179 -1332
  63. package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs.map +1 -1
  64. package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue2.mjs +19 -6
  65. package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue2.mjs.map +1 -1
  66. package/es/packages/components/touchchat/src/AiChat/UserMessage.vue2.mjs +14 -14
  67. package/es/packages/components/touchchat/src/AiChat/UserMessage.vue2.mjs.map +1 -1
  68. package/es/packages/components/touchchat/src/index.vue2.mjs +3 -3
  69. package/es/packages/components/touchchat/src/index.vue2.mjs.map +1 -1
  70. package/es/packages/components/touchchat/utils/a2aService.mjs +3 -2
  71. package/es/packages/components/touchchat/utils/a2aService.mjs.map +1 -1
  72. package/es/packages/components/touchchat/utils/fetchStream.mjs +2 -1
  73. package/es/packages/components/touchchat/utils/fetchStream.mjs.map +1 -1
  74. package/es/packages/components/touchchat/utils/markdown.mjs +30 -12
  75. package/es/packages/components/touchchat/utils/markdown.mjs.map +1 -1
  76. package/lib/package.json.css +1 -1
  77. package/lib/package.json.js +1 -1
  78. package/lib/packages/components/touchchat/component/AiRobot/HelloChat.vue2.js.map +1 -1
  79. package/lib/packages/components/touchchat/component/AiRobot/letter.vue.js +1 -1
  80. package/lib/packages/components/touchchat/component/AiRobot/letter.vue2.js +15 -3
  81. package/lib/packages/components/touchchat/component/AiRobot/letter.vue2.js.map +1 -1
  82. package/lib/packages/components/touchchat/component/FileContent.vue2.js +3 -3
  83. package/lib/packages/components/touchchat/component/FileContent.vue2.js.map +1 -1
  84. package/lib/packages/components/touchchat/component/FileView.vue2.js +2 -2
  85. package/lib/packages/components/touchchat/component/FileView.vue2.js.map +1 -1
  86. package/lib/packages/components/touchchat/component/HelloChat.vue2.js.map +1 -1
  87. package/lib/packages/components/touchchat/component/ImageFile.vue2.js +6 -6
  88. package/lib/packages/components/touchchat/component/ImageFile.vue2.js.map +1 -1
  89. package/lib/packages/components/touchchat/component/ImageView.vue2.js +1 -1
  90. package/lib/packages/components/touchchat/component/ImageView.vue2.js.map +1 -1
  91. package/lib/packages/components/touchchat/component/LinkView.vue2.js +4 -4
  92. package/lib/packages/components/touchchat/component/LinkView.vue2.js.map +1 -1
  93. package/lib/packages/components/touchchat/component/MarkLayer.vue2.js +1 -1
  94. package/lib/packages/components/touchchat/component/MarkLayer.vue2.js.map +1 -1
  95. package/lib/packages/components/touchchat/component/ModuleSelect.vue2.js +2 -2
  96. package/lib/packages/components/touchchat/component/ModuleSelect.vue2.js.map +1 -1
  97. package/lib/packages/components/touchchat/component/PDFFile.vue2.js +8 -8
  98. package/lib/packages/components/touchchat/component/PDFFile.vue2.js.map +1 -1
  99. package/lib/packages/components/touchchat/component/RealtimeVoice.vue2.js +1 -1
  100. package/lib/packages/components/touchchat/component/RealtimeVoice.vue2.js.map +1 -1
  101. package/lib/packages/components/touchchat/component/Screenshot.vue2.js +11 -2
  102. package/lib/packages/components/touchchat/component/Screenshot.vue2.js.map +1 -1
  103. package/lib/packages/components/touchchat/component/UploadView.vue2.js +10 -7
  104. package/lib/packages/components/touchchat/component/UploadView.vue2.js.map +1 -1
  105. package/lib/packages/components/touchchat/component/VoiceView.vue2.js +1 -1
  106. package/lib/packages/components/touchchat/component/VoiceView.vue2.js.map +1 -1
  107. package/lib/packages/components/touchchat/src/AiChat/AgentsView.vue2.js +1 -1
  108. package/lib/packages/components/touchchat/src/AiChat/AgentsView.vue2.js.map +1 -1
  109. package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js +22 -22
  110. package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js.map +1 -1
  111. package/lib/packages/components/touchchat/src/AiChat/Chat/scriptMatcher.js +147 -0
  112. package/lib/packages/components/touchchat/src/AiChat/Chat/scriptMatcher.js.map +1 -0
  113. package/lib/packages/components/touchchat/src/AiChat/Chat/types.js +21 -0
  114. package/lib/packages/components/touchchat/src/AiChat/Chat/types.js.map +1 -0
  115. package/lib/packages/components/touchchat/src/AiChat/Chat/useChat.js +674 -0
  116. package/lib/packages/components/touchchat/src/AiChat/Chat/useChat.js.map +1 -0
  117. package/lib/packages/components/touchchat/src/AiChat/Chat/useCopy.js +57 -0
  118. package/lib/packages/components/touchchat/src/AiChat/Chat/useCopy.js.map +1 -0
  119. package/lib/packages/components/touchchat/src/AiChat/Chat/useMessageRender.js +157 -0
  120. package/lib/packages/components/touchchat/src/AiChat/Chat/useMessageRender.js.map +1 -0
  121. package/lib/packages/components/touchchat/src/AiChat/Chat/useSSE.js +354 -0
  122. package/lib/packages/components/touchchat/src/AiChat/Chat/useSSE.js.map +1 -0
  123. package/lib/packages/components/touchchat/src/AiChat/Chat/useScroll.js +76 -0
  124. package/lib/packages/components/touchchat/src/AiChat/Chat/useScroll.js.map +1 -0
  125. package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js +8 -7
  126. package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js.map +1 -1
  127. package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue2.js +1 -1
  128. package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue2.js.map +1 -1
  129. package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.js +3 -3
  130. package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.js.map +1 -1
  131. package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue2.js +11 -11
  132. package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue2.js.map +1 -1
  133. package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue2.js +3 -3
  134. package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue2.js.map +1 -1
  135. package/lib/packages/components/touchchat/src/AiChat/TouchAgent.vue2.js +49 -45
  136. package/lib/packages/components/touchchat/src/AiChat/TouchAgent.vue2.js.map +1 -1
  137. package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js +179 -1332
  138. package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js.map +1 -1
  139. package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue2.js +19 -6
  140. package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue2.js.map +1 -1
  141. package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue2.js +14 -14
  142. package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue2.js.map +1 -1
  143. package/lib/packages/components/touchchat/src/index.vue2.js +3 -3
  144. package/lib/packages/components/touchchat/src/index.vue2.js.map +1 -1
  145. package/lib/packages/components/touchchat/utils/a2aService.js +3 -2
  146. package/lib/packages/components/touchchat/utils/a2aService.js.map +1 -1
  147. package/lib/packages/components/touchchat/utils/fetchStream.js +2 -1
  148. package/lib/packages/components/touchchat/utils/fetchStream.js.map +1 -1
  149. package/lib/packages/components/touchchat/utils/markdown.js +30 -12
  150. package/lib/packages/components/touchchat/utils/markdown.js.map +1 -1
  151. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"TouchChat.vue2.js","sources":["../../../../../../../packages/components/touchchat/src/AiChat/TouchChat.vue"],"sourcesContent":["<template>\r\n\t<div class=\"touchchat-main\" @dragover.prevent @dragenter.prevent=\"handleDragEnter\" @dragleave=\"handleDragLeave\" @drop.prevent=\"handleDrop\">\r\n\t\t<div ref=\"chatContainer\" class=\"touchchat-dialog\" @scroll=\"handleScroll\">\r\n\t\t\t<slot name=\"top\"> </slot>\r\n\t\t\t<div v-if=\"chatList.length === 0\" class=\"touchchat-welcome\">\r\n\t\t\t\t<slot name=\"welcome\">\r\n\t\t\t\t\t<HelloChat @send-message=\"sendMessage\" />\r\n\t\t\t\t</slot>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"touchchat-dialog-content\">\r\n\t\t\t\t<template v-for=\"(item, index) in chatList\" :key=\"item.chatId\">\r\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)\">\r\n\t\t\t\t\t\t<template #userAvatar>\r\n\t\t\t\t\t\t\t<slot name=\"userAvatar\" />\r\n\t\t\t\t\t\t</template>\r\n\t\t\t\t\t\t<template #fn>\r\n\t\t\t\t\t\t\t<slot name=\"fn\" :item=\"item\" :index=\"index\" />\r\n\t\t\t\t\t\t</template>\r\n\t\t\t\t\t</UserMessage>\r\n\t\t\t\t\t<AiMessage v-else :item=\"item\" :index=\"index\" :enable-deep-thinking=\"enableDeepThinking\" :has-retry=\"activeAgentsName || scripts.length > 0 ? false : 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\">\r\n\t\t\t\t\t\t<template #aimsg>\r\n\t\t\t\t\t\t\t<slot name=\"aimsg\" :item=\"item\" :index=\"index\" />\r\n\t\t\t\t\t\t</template>\r\n\t\t\t\t\t\t<template #msg>\r\n\t\t\t\t\t\t\t<slot name=\"msg\" :item=\"item\" :index=\"index\" />\r\n\t\t\t\t\t\t</template>\r\n\t\t\t\t\t\t<template #aiAvatar>\r\n\t\t\t\t\t\t\t<slot name=\"aiAvatar\" />\r\n\t\t\t\t\t\t</template>\r\n\t\t\t\t\t\t<template #fn>\r\n\t\t\t\t\t\t\t<slot name=\"fn\" :item=\"item\" :index=\"index\" />\r\n\t\t\t\t\t\t</template>\r\n\t\t\t\t\t\t<template #extendsFn>\r\n\t\t\t\t\t\t\t<slot name=\"extendsFn\" :item=\"item\" :index=\"index\" />\r\n\t\t\t\t\t\t</template>\r\n\t\t\t\t\t</AiMessage>\r\n\t\t\t\t</template>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div v-if=\"$slots.shortcut\" class=\"touchchat-edit-shortcut\">\r\n\t\t\t<slot name=\"shortcut\"></slot>\r\n\t\t</div>\r\n\t\t<slot name=\"edit\">\r\n\t\t\t<ChatInput ref=\"ChatInputRef\" v-model:input-value=\"inputValue\" v-model:enable-deep-thinking=\"enableDeepThinking\" :is-chating=\"isChating\" @send=\"handleBeforeSend\" @stop=\"handleStop\" @toggle-deep-thinking=\"(val: boolean) => (enableDeepThinking = val)\" @module-info=\"updateModule\">\r\n\t\t\t\t<template #editTop>\r\n\t\t\t\t\t<slot name=\"editTop\"></slot>\r\n\t\t\t\t</template>\r\n\t\t\t\t<template #editFn>\r\n\t\t\t\t\t<slot name=\"editFn\"></slot>\r\n\t\t\t\t</template>\r\n\t\t\t</ChatInput>\r\n\t\t</slot>\r\n\t</div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport UserMessage from './UserMessage.vue'\r\nimport AiMessage from './AiMessage.vue'\r\nimport ChatInput from './ChatInput.vue'\r\nimport HelloChat from '../../component/HelloChat.vue'\r\nimport { ref, onMounted, onBeforeUnmount, nextTick, inject, watch, provide } from 'vue'\r\nimport { throttle } from 'throttle-debounce'\r\nimport { FetchStream } from '../../utils/fetchStream.ts'\r\nimport { ChatRobot } from '../../utils/chatRobot.ts'\r\nimport markdown from '../../utils/markdown.ts'\r\nimport { showToast } from '../../utils/tools.ts'\r\nimport { MessageAction, type ChatMessage, type AgentsItem, type Script, type ModuleItem, type FileItem, type RenderData, ThinkStatus } from './Chat/TouchChat.ts'\r\n\r\n// 组件属性和注入\r\nconst emit = defineEmits(['sendMessage', 'toggleSidebar', 'beforeSendMessage'])\r\nconst scripts = inject<any[]>('scripts', [])\r\nconst activeScript = ref<Script | null>(null)\r\n\r\ninterface ResultItem {\r\n\tallAiContent?: string\r\n\t[key: string]: any\r\n}\r\nconst resultItem = ref<ResultItem | null>(null)\r\nconst unmatchText = inject<string>('unmatchText', '您的消息未匹配到任何内容')\r\nconst modules = inject<(string | ModuleItem)[]>('modules', [])\r\nconst afterSend = inject<(result: object) => void>('afterSend', () => {\r\n\tconsole.warn('未提供afterSend函数')\r\n})\r\nconst sendMessageInject = inject<(value: string, fileList?: any[]) => void>('send', () => {\r\n\tconsole.warn('未提供handleSend函数')\r\n})\r\nconst beforeSend = inject<() => { result: boolean; componentName?: string }>('beforeSend', () => ({\r\n\tresult: true,\r\n\tcomponentName: ''\r\n}))\r\n\r\nconst bottom = inject<() => void>('bottom', () => {\r\n\tconsole.warn('未提供bottom函数')\r\n})\r\n\r\nconst stop = inject<(item: ChatMessage, index: number) => void>('stop', () => {\r\n\tconsole.warn('未提供stop函数')\r\n})\r\n\r\n// 组件属性\r\nconst props = defineProps({\r\n\tvalue: {\r\n\t\ttype: Array as () => ChatMessage[],\r\n\t\tdefault: () => []\r\n\t}\r\n})\r\n\r\n// 组件状态\r\nconst chatContainer = ref<HTMLElement | null>(null)\r\nconst htmlContentRef = ref<(HTMLElement | null)[]>([])\r\nconst thinkingContentRef = ref<(HTMLElement | null)[]>([])\r\nconst reasoningContentRef = ref<(HTMLElement | null)[]>([])\r\nconst isMounted = ref(false)\r\nconst isChating = ref(false)\r\nconst inputValue = ref('')\r\nconst enableDeepThinking = ref(false)\r\nconst chatList = ref<ChatMessage[]>([])\r\nconst renderQueue = ref<RenderData[]>([])\r\nconst isRendering = ref(false)\r\nconst currIndex = ref(0)\r\nconst fetchStream = ref<InstanceType<typeof FetchStream> | null>(null)\r\nconst TouchChatRobot = ref<ChatRobot>()\r\nconst isUnmounting = ref(false)\r\nconst currentComponentName = ref('')\r\nconst fileData = ref<FileItem[]>([])\r\nconst activeAgentsName = ref<string>('')\r\nconst moduleInfo = ref<ModuleItem>(modules[0] as ModuleItem)\r\nconst ChatInputRef = ref<InstanceType<typeof ChatInput> | null>(null)\r\nconst isDragging = ref(false)\r\nconst typeFlag = ref('')\r\n\r\n// 消息处理器状态\r\ninterface MessageProcessor {\r\n\tmessageQueue: ChatMessage[]\r\n\tisProcessing: boolean\r\n\tcurrentMessage: ChatMessage | null\r\n\tprocessNextMessage: () => void\r\n\thandleMessageComplete: (chatId: string) => void\r\n}\r\nconst currentMessageProcessor = ref<MessageProcessor | null>(null)\r\n\r\nwatch(\r\n\t() => activeAgentsName,\r\n\t(val: any) => {\r\n\t\tif (!val) {\r\n\t\t\tactiveAgentsName.value = localStorage.getItem('activeAgentsName') as string\r\n\t\t}\r\n\t},\r\n\t{ immediate: true }\r\n)\r\n\r\n// 消息管理工具函数\r\nconst messageUtils = {\r\n\tupdateMessage: (index: number, updates: Partial<ChatMessage>): void => {\r\n\t\tif (index < 0 || index >= chatList.value.length) return\r\n\t\tchatList.value.splice(index, 1, { ...chatList.value[index], ...updates })\r\n\t\tnextTick(() => {\r\n\t\t\tconst message = chatList.value[index]\r\n\t\t\tif (message) {\r\n\t\t\t\trenderContent(message.content, 'main', index)\r\n\t\t\t\tif (message.thinkContent) {\r\n\t\t\t\t\trenderContent(message.thinkContent, 'thinking', index)\r\n\t\t\t\t}\r\n\t\t\t\tif (message.reasoningContent) {\r\n\t\t\t\t\trenderContent(message.reasoningContent, 'reasoning', index)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t},\r\n\r\n\tdeleteMessageChain: (index: number): void => {\r\n\t\tif (index < 0 || index >= chatList.value.length) return\r\n\t\tif (chatList.value[index].user === 'u') {\r\n\t\t\tlet deleteCount = 1\r\n\t\t\tfor (let i = index + 1; i < chatList.value.length; i++) {\r\n\t\t\t\tif (chatList.value[i].user === 'ai') {\r\n\t\t\t\t\tdeleteCount++\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbreak\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tchatList.value.splice(index, deleteCount)\r\n\t\t} else {\r\n\t\t\tchatList.value.splice(index, 1)\r\n\t\t}\r\n\t},\r\n\r\n\tcreateStandardMessage: (data: Partial<ChatMessage>): ChatMessage => ({\r\n\t\t// chatId: data.chatId || 'ai_' + crypto.randomUUID().replace(/-/gi, ''),\r\n\t\tchatId: data.chatId || 'ai_' + Math.random().toString(36).slice(2).padEnd(10, '0').slice(0, 10),\r\n\t\tuser: data.user || 'ai',\r\n\t\ttype: data.type || 'text',\r\n\t\tcontent: data.content || '',\r\n\t\tisChating: data.isChating ?? false,\r\n\t\tthinkContent: data.thinkContent || '',\r\n\t\treasoningContent: data.reasoningContent || '',\r\n\t\tisLiked: data.isLiked ?? false,\r\n\t\tisDisliked: data.isDisliked ?? false,\r\n\t\tisEditing: data.isEditing ?? false,\r\n\t\teditContent: data.editContent ?? ''\r\n\t})\r\n}\r\n\r\nconst update = (index: number, message: object) => {\r\n\tchatList.value[index] = { ...chatList.value[index], ...message }\r\n\tconsole.log('update', chatList.value[index])\r\n}\r\n\r\nconst markdownToHtml = (markdownContent: string): string => {\r\n\t// 使用现有的 markdown 渲染器\r\n\treturn markdown?.render(markdownContent, { isReasoning: false }) || ''\r\n}\r\n\r\nconst updateModule = (info: ModuleItem) => {\r\n\tmoduleInfo.value = info\r\n}\r\n\r\nconst handleAgentSelect = (item: AgentsItem) => {\r\n\tlocalStorage.setItem('activeAgentsName', item.name)\r\n\tconst aiMessage = item.intro\r\n\tmessageUtils.updateMessage(0, {\r\n\t\tcontent: '',\r\n\t\tisChating: false\r\n\t})\r\n\tsimulateStreamOutput(0, aiMessage)\r\n}\r\n\r\nconst completeRendered = (chatId: string) => {\r\n\tconsole.log('completeRendered', '渲染完成', chatId)\r\n\t// 调用消息处理器的handleMessageComplete方法处理下一条消息\r\n\tif (currentMessageProcessor.value) {\r\n\t\tcurrentMessageProcessor.value.handleMessageComplete(chatId)\r\n\t}\r\n}\r\n\r\nconst toggleSidebarClick = (item: ChatMessage, index: number) => {\r\n\temit('toggleSidebar', item, index)\r\n}\r\n// 初始化函数\r\nconst init = (): void => {\r\n\ttry {\r\n\t\tif (Array.isArray(props.value) && props.value.length && !scripts.length) {\r\n\t\t\tchatList.value = props.value.map((item: any) => ({\r\n\t\t\t\t...item,\r\n\t\t\t\tcontent: item.thinkContent ? item.content || '' : item.content || '',\r\n\t\t\t\tthinkContent: item.thinkContent || ''\r\n\t\t\t}))\r\n\r\n\t\t\tnextTick(() => {\r\n\t\t\t\trequestAnimationFrame(() => {\r\n\t\t\t\t\tif (activeAgentsName.value && chatList.value.length > 0 && chatList.value[0].user === 'ai') {\r\n\t\t\t\t\t\tconst aiMessage = chatList.value[0]\r\n\t\t\t\t\t\tmessageUtils.updateMessage(0, {\r\n\t\t\t\t\t\t\tcontent: '',\r\n\t\t\t\t\t\t\tisChating: true\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\tsimulateStreamOutput(0, aiMessage.content)\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// index\r\n\t\t\t\t\t\tchatList.value.forEach((item: any) => {\r\n\t\t\t\t\t\t\tif (item.thinkContent) {\r\n\t\t\t\t\t\t\t\trenderContent(item.thinkContent, 'thinking')\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (item.reasoningContent) {\r\n\t\t\t\t\t\t\t\trenderContent(item.reasoningContent, 'reasoning')\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (item.content) {\r\n\t\t\t\t\t\t\t\trenderContent(item.content, 'main')\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t// 确保初始化渲染完成后滚动到底部\r\n\t\t\t\t\t\tnextTick(() => {\r\n\t\t\t\t\t\t\tscrollToBottom()\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t}\r\n\t} catch (error) {\r\n\t\tconsole.error('初始化失败:', error)\r\n\t}\r\n}\r\n\r\nconst onScrollToBottom = () => {\r\n\t// console.log('滚动条已触底')\r\n\tbottom()\r\n}\r\n\r\n// 使用节流包装触底处理函数,这里设置 300ms 内只触发一次 , { noTrailing: true }\r\nconst throttledScrollToBottom = throttle(300, onScrollToBottom)\r\n\r\n// 处理滚动事件\r\nconst handleScroll = () => {\r\n\tif (!chatContainer.value) return\r\n\r\n\tconst { scrollTop, scrollHeight, clientHeight } = chatContainer.value\r\n\t// 判断是否滚动到底部\r\n\tif (scrollTop + clientHeight >= scrollHeight) {\r\n\t\tthrottledScrollToBottom()\r\n\t}\r\n}\r\n\r\nconst simulateStreamOutput = (aiIndex: number, msg: string | ChatMessage, callback?: () => void) => {\r\n\tconst message: string = typeof msg === 'string' ? msg : msg.content\r\n\tconst componentName = typeof msg === 'string' ? '' : msg.needSequenceProcessing ? msg.needSequenceType : ''\r\n\tconst isNeedSequenceProcessing = typeof msg === 'string' ? false : msg.needSequenceProcessing\r\n\tconst fn = () => {\r\n\t\tclearInterval(interval)\r\n\t\temit('sendMessage', [...chatList.value])\r\n\t\tif (componentName) {\r\n\t\t\tchatList.value[aiIndex].componentName = componentName\r\n\t\t}\r\n\t\tmessageUtils.updateMessage(aiIndex, {\r\n\t\t\tisChating: false\r\n\t\t})\r\n\t\t// 确保最终渲染完成后滚动到底部\r\n\t\tnextTick(() => {\r\n\t\t\trenderContent(message, 'main', aiIndex)\r\n\t\t\tnextTick(() => {\r\n\t\t\t\tscrollToBottom()\r\n\t\t\t\t// 对于需要序列处理的消息,流式输出完成后不自动处理下一条\r\n\t\t\t\t// 而是等待组件渲染完成后通过completeRendered触发\r\n\t\t\t\tif (!isNeedSequenceProcessing && callback) {\r\n\t\t\t\t\tcallback()\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t})\r\n\t}\r\n\tlet index = 0\r\n\tconst interval = setInterval(() => {\r\n\t\tif (index < message.length) {\r\n\t\t\t// 流式更新时也需要正确渲染和滚动\r\n\t\t\tconst newContent = message\r\n\t\t\tmessageUtils.updateMessage(aiIndex, {\r\n\t\t\t\tcontent: newContent\r\n\t\t\t})\r\n\t\t\t// 确保DOM更新后渲染内容并滚动\r\n\t\t\tnextTick(() => {\r\n\t\t\t\trenderContent(newContent, 'main', aiIndex)\r\n\t\t\t\tnextTick(() => {\r\n\t\t\t\t\tscrollToBottom()\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t\tindex++\r\n\t\t} else {\r\n\t\t\tfn()\r\n\t\t}\r\n\t}, 50)\r\n}\r\n\r\nconst findMatchingScriptContent = (userInput: string) => {\r\n\tif (!scripts || scripts.length === 0) return null\r\n\r\n\tconst agentName = activeAgentsName.value ? activeAgentsName.value : localStorage.getItem('activeAgentsName') || ''\r\n\tif (agentName) {\r\n\t\tconst agentMatchedScripts = scripts.filter((script: any) => {\r\n\t\t\treturn script.content.some((item: any) => item.agents === agentName)\r\n\t\t})\r\n\t\tif (agentMatchedScripts.length > 0) {\r\n\t\t\tconst fileTypeItems = agentMatchedScripts.flatMap((script: any) => script.content.filter((item: any) => item.file))\r\n\t\t\tconst fileTypes = fileTypeItems.map((item: any) => item.file)\r\n\t\t\tconst isFileTypeMatched = fileData.value.some((file: any) => {\r\n\t\t\t\tconst nameArr = file.name.split('.')\r\n\t\t\t\tconst name = nameArr[nameArr.length - 1]\r\n\t\t\t\tconst isMatched = fileTypes.includes(name)\r\n\t\t\t\treturn isMatched\r\n\t\t\t})\r\n\t\t\t// 存储匹配的脚本内容下标\r\n\t\t\tlet matchedScriptContentIndex = -1\r\n\t\t\tif (!activeScript.value && isFileTypeMatched) {\r\n\t\t\t\tactiveScript.value = agentMatchedScripts[0]\r\n\t\t\t}\r\n\t\t\t// 智能体匹配成功,检查用户消息中是否有 file 字段\r\n\t\t\tif (isFileTypeMatched) {\r\n\t\t\t\t// 遍历所有匹配的脚本\r\n\t\t\t\tfor (const script of agentMatchedScripts) {\r\n\t\t\t\t\tfor (let i = 0; i < script.content.length; i++) {\r\n\t\t\t\t\t\tconst item = script.content[i]\r\n\t\t\t\t\t\tif (item.file) {\r\n\t\t\t\t\t\t\tconst nameArr = fileData.value.map((file: any) => {\r\n\t\t\t\t\t\t\t\tconst fileExtArr = file.name.split('.')\r\n\t\t\t\t\t\t\t\treturn fileExtArr[fileExtArr.length - 1]\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\tif (nameArr.includes(item.file)) {\r\n\t\t\t\t\t\t\t\tmatchedScriptContentIndex = i\r\n\t\t\t\t\t\t\t\tbreak\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (matchedScriptContentIndex !== -1) {\r\n\t\t\t\t\t\tbreak\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tconst responses: any[] = []\r\n\t\t\t\tconst matchContent = agentMatchedScripts[0].content\r\n\t\t\t\tfor (let j = matchedScriptContentIndex + 1; j < matchContent.length; j++) {\r\n\t\t\t\t\tconst nextItem = matchContent[j]\r\n\t\t\t\t\tif (nextItem.user === 'i') {\r\n\t\t\t\t\t\tbreak // 遇到下一个用户消息,停止收集\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (nextItem.user === 'ai') {\r\n\t\t\t\t\t\tif (nextItem.data && nextItem.type) {\r\n\t\t\t\t\t\t\t// 合并 data 和 type 到一条响应中\r\n\t\t\t\t\t\t\tresponses.push({\r\n\t\t\t\t\t\t\t\t...nextItem,\r\n\t\t\t\t\t\t\t\t// 标记需要先流式输出文字,再调用组件\r\n\t\t\t\t\t\t\t\tneedSequenceProcessing: true\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tresponses.push(nextItem)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tconst nextIndex = matchContent.findIndex((contentItem: any, index: number) => index > matchedScriptContentIndex && contentItem.user === 'i')\r\n\t\t\t\treturn {\r\n\t\t\t\t\tresponses,\r\n\t\t\t\t\tnextIndex: nextIndex === -1 ? matchContent.length : nextIndex\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// 智能体未匹配,返回未匹配默认内容\r\n\t\t\treturn {\r\n\t\t\t\tresponses: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tuser: 'ai',\r\n\t\t\t\t\t\tdata: unmatchText\r\n\t\t\t\t\t}\r\n\t\t\t\t],\r\n\t\t\t\tnextIndex: -1\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// 先尝试从当前激活的脚本中查找\r\n\tif (activeScript.value) {\r\n\t\tconst result = searchInScript(activeScript.value, userInput)\r\n\t\tif (result) {\r\n\t\t\treturn result\r\n\t\t}\r\n\t}\r\n\r\n\t// 若当前激活脚本未匹配,遍历所有脚本查找\r\n\tfor (const script of scripts) {\r\n\t\tconst result = searchInScript(script, userInput)\r\n\t\tif (result) {\r\n\t\t\tactiveScript.value = script\r\n\t\t\treturn result\r\n\t\t}\r\n\t}\r\n\r\n\treturn null\r\n}\r\n\r\nconst searchInScript = (script: Script, userInput: string) => {\r\n\tfor (let i = 0; i < script.content.length; i++) {\r\n\t\tconst item = script.content[i]\r\n\t\tif (item.user === 'i') {\r\n\t\t\t// 检查 data 是否匹配\r\n\t\t\tconst isDataMatch = item.data && userInput.includes(item.data)\r\n\t\t\t// 检查 alias 是否匹配\r\n\t\t\tlet isSubDataMatch = false\r\n\t\t\t// let isFileMatch = false\r\n\t\t\t// const isAgentsMatch = findMatchingAgents()\r\n\t\t\tif (item.alias) {\r\n\t\t\t\tif (Array.isArray(item.alias)) {\r\n\t\t\t\t\t// isSubDataMatch = item.alias.some((subItem: string) => userInput.includes(subItem))\r\n\t\t\t\t\tisSubDataMatch = item.alias.some((subItem: string) => subItem === userInput)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// if (item.file && (isAgentsMatch && findMatchingFile())) {\r\n\t\t\t// \tisFileMatch = true\r\n\t\t\t// }\r\n\r\n\t\t\tif (isDataMatch || isSubDataMatch) {\r\n\t\t\t\t// 收集 AI 回复\r\n\t\t\t\tconst responses: any[] = []\r\n\t\t\t\t// 从匹配位置的下一个元素开始遍历\r\n\t\t\t\tfor (let j = i + 1; j < script.content.length; j++) {\r\n\t\t\t\t\tconst nextItem = script.content[j]\r\n\t\t\t\t\tif (nextItem.user === 'i') {\r\n\t\t\t\t\t\tbreak // 遇到下一个用户消息,停止收集\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (nextItem.user === 'ai') {\r\n\t\t\t\t\t\tif (nextItem.data && nextItem.type) {\r\n\t\t\t\t\t\t\t// 合并 data 和 type 到一条响应中\r\n\t\t\t\t\t\t\tresponses.push({\r\n\t\t\t\t\t\t\t\t...nextItem,\r\n\t\t\t\t\t\t\t\t// 标记需要先流式输出文字,再调用组件\r\n\t\t\t\t\t\t\t\tneedSequenceProcessing: true\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tresponses.push(nextItem)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// 查找下一个用户消息的索引\r\n\t\t\t\tconst nextIndex = script.content.findIndex((contentItem: any, index: number) => index > i && contentItem.user === 'i')\r\n\t\t\t\treturn { responses, nextIndex: nextIndex === -1 ? script.content.length : nextIndex }\r\n\t\t\t}\r\n\t\t} else if (item.user === 'ai') {\r\n\t\t\t// let agentName = ''\r\n\t\t\tscripts.forEach((script: any) => {\r\n\t\t\t\tif (script.content.length) {\r\n\t\t\t\t\tconst contents = script.content\r\n\t\t\t\t\tcontents.forEach((item: any) => {\r\n\t\t\t\t\t\tif (item.agents) {\r\n\t\t\t\t\t\t\tif (item.agents === activeAgentsName.value) {\r\n\t\t\t\t\t\t\t\tactiveScript.value = script\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\treturn null\r\n}\r\n\r\n// 监听props.value变化\r\nwatch(\r\n\t() => props.value,\r\n\t(newVal: any, oldVal: any) => {\r\n\t\tif (!Array.isArray(newVal)) return\r\n\t\tif (newVal.length && JSON.stringify(newVal) !== JSON.stringify(oldVal)) {\r\n\t\t\tchatList.value = newVal.map(item => ({\r\n\t\t\t\t...item,\r\n\t\t\t\tcontent: item.thinkContent ? item.content || '' : item.content || '',\r\n\t\t\t\tthinkContent: item.thinkContent || ''\r\n\t\t\t}))\r\n\r\n\t\t\tnextTick(() => {\r\n\t\t\t\trequestAnimationFrame(() => {\r\n\t\t\t\t\t// index\r\n\t\t\t\t\tchatList.value.forEach((item: any) => {\r\n\t\t\t\t\t\t// currIndex.value = index\r\n\t\t\t\t\t\tif (item.thinkContent) {\r\n\t\t\t\t\t\t\trenderContent(item.thinkContent, 'thinking')\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (item.reasoningContent) {\r\n\t\t\t\t\t\t\trenderContent(item.reasoningContent, 'reasoning')\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (item.content) {\r\n\t\t\t\t\t\t\trenderContent(item.content, 'main')\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t\t// 确保props.value变化时渲染完成后滚动到底部\r\n\t\t\t\t\tnextTick(() => {\r\n\t\t\t\t\t\tscrollToBottom()\r\n\t\t\t\t\t})\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t}\r\n\t},\r\n\t{ deep: true, immediate: true }\r\n)\r\n\r\n// SSE连接\r\nconst openSSE = (userContent: string, insertIndex?: number, type?: number): void => {\r\n\ttry {\r\n\t\tif (isUnmounting.value) return\r\n\t\tisChating.value = true\r\n\r\n\t\tconst currentAiMessage = chatList.value.find((item: any) => item.isChating)\r\n\t\tif (currentAiMessage) {\r\n\t\t\tcurrentAiMessage.isShowLike = true\r\n\t\t\tcurrentAiMessage.isShowCopy = true\r\n\t\t\tcurrentAiMessage.componentName = currentComponentName.value\r\n\t\t}\r\n\t\t// const chatId = currentAiMessage?.chatId || 'ai_' + crypto.randomUUID().replace(/-/gi, '')\r\n\t\tconst chatId = currentAiMessage?.chatId || 'ai_' + Math.random().toString(36).slice(2).padEnd(10, '0').slice(0, 10)\r\n\t\tlet aiContent = currentAiMessage?.content || ''\r\n\t\tlet reasoningContent = currentAiMessage?.reasoningContent || ''\r\n\t\tlet allAiContent = ''\r\n\t\tif (!currentAiMessage) {\r\n\t\t\tconst chatItem: ChatMessage = {\r\n\t\t\t\tchatId: chatId,\r\n\t\t\t\tuser: 'ai',\r\n\t\t\t\ttype: 'text',\r\n\t\t\t\tisChating: true,\r\n\t\t\t\tcontent: '',\r\n\t\t\t\tthinkContent: '',\r\n\t\t\t\treasoningContent: '',\r\n\t\t\t\tthinkStatus: ThinkStatus.THINKING,\r\n\t\t\t\tthinkStartTime: Date.now(),\r\n\t\t\t\tisShowLike: true,\r\n\t\t\t\tisShowCopy: true,\r\n\t\t\t\tcomponentName: currentComponentName.value,\r\n\t\t\t\ttypeFlag: typeFlag.value\r\n\t\t\t}\r\n\t\t\tif (insertIndex !== undefined && insertIndex <= chatList.value.length) {\r\n\t\t\t\tchatList.value.splice(insertIndex, 0, chatItem)\r\n\t\t\t} else {\r\n\t\t\t\tchatList.value.push(chatItem)\r\n\t\t\t}\r\n\t\t}\r\n\t\tcurrIndex.value = insertIndex ?? chatList.value.length - 1\r\n\t\t// currIndex.value = chatList.value.findIndex(ele => ele.chatId === chatId)\r\n\t\t// const config = moduleInfo.value && moduleInfo.value.config ? moduleInfo.value.config : {}\r\n\t\tconst BodyConfig = moduleInfo.value?.config?.body()\r\n\t\tif (!inputValue.value && BodyConfig?.messages?.length) {\r\n\t\t\tBodyConfig.messages[0].content = userContent\r\n\t\t\tBodyConfig.model = enableDeepThinking.value ? 'deepseek-reasoner' : 'deepseek-v3'\r\n\t\t}\r\n\t\tfetchStream.value = new FetchStream({\r\n\t\t\turl: moduleInfo.value?.config?.action ? moduleInfo.value.config.action : 'https://api.apiyi.com/v1/chat/completions',\r\n\t\t\trequestInit: {\r\n\t\t\t\theaders: moduleInfo.value?.config?.headers\r\n\t\t\t\t\t? new Headers(moduleInfo.value.config.headers() as Record<string, string>)\r\n\t\t\t\t\t: new Headers({\r\n\t\t\t\t\t\t\t'Content-Type': 'application/json',\r\n\t\t\t\t\t\t\tAuthorization: 'Bearer sk-fe9MtODvds8wpzz05f3417Fe3e9641C1926e6fC588425dEd'\r\n\t\t\t\t\t\t} as Record<string, string>),\r\n\t\t\t\t// body: moduleInfo.value?.config?.body\r\n\t\t\t\t// \t? JSON.stringify(BodyConfig as Record<string, any>)\r\n\t\t\t\t// \t: JSON.stringify({\r\n\t\t\t\t// \t\t\tmodel: enableDeepThinking.value ? 'deepseek-reasoner' : 'deepseek-v3',\r\n\t\t\t\t// \t\t\tmessages: [\r\n\t\t\t\t// \t\t\t\t{\r\n\t\t\t\t// \t\t\t\t\trole: 'user',\r\n\t\t\t\t// \t\t\t\t\tcontent: userContent\r\n\t\t\t\t// \t\t\t\t}\r\n\t\t\t\t// \t\t\t],\r\n\t\t\t\t// \t\t\tstream: true\r\n\t\t\t\t// \t\t})\r\n\t\t\t\tbody: JSON.stringify(BodyConfig as Record<string, any>)\r\n\t\t\t},\r\n\t\t\tonmessage: (line: string) => {\r\n\t\t\t\tif (isUnmounting.value) return\r\n\t\t\t\tlet dataString = ''\r\n\t\t\t\tif (line.length) {\r\n\t\t\t\t\tif (line.includes('data:')) {\r\n\t\t\t\t\t\t// dataString = line.split('data:')[1]\r\n\t\t\t\t\t\tconst match = line.match(/\\{[\\s\\S]*\\}/)\r\n\t\t\t\t\t\t// 如果匹配到结果,就赋值给 dataString,否则为空字符串\r\n\t\t\t\t\t\tdataString = match ? match[0] : ''\r\n\t\t\t\t\t} else if (line.startsWith('{') && line.endsWith('}')) {\r\n\t\t\t\t\t\tdataString = line\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdataString = dataString.trim()\r\n\r\n\t\t\t\tconst respoKey = moduleInfo.value?.config?.respoKey()\r\n\r\n\t\t\t\tif (dataString && ((dataString.startsWith('{') && dataString.endsWith('}')) || !respoKey?.content)) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tconst result = !respoKey?.content && moduleInfo.value ? dataString : JSON.parse(dataString)\r\n\t\t\t\t\t\tconst newAiMessage = chatList.value[currIndex.value]\r\n\r\n\t\t\t\t\t\tconst deepseekFlag = moduleInfo.value?.name === 'deepseek-v3'\r\n\t\t\t\t\t\t// deepseek\r\n\t\t\t\t\t\tif (deepseekFlag || !moduleInfo.value) {\r\n\t\t\t\t\t\t\tif (result?.choices?.[0]?.delta?.content) {\r\n\t\t\t\t\t\t\t\taiContent += result.choices[0].delta.content\r\n\t\t\t\t\t\t\t\tif (newAiMessage?.thinkStatus === ThinkStatus.THINKING) {\r\n\t\t\t\t\t\t\t\t\tnewAiMessage.thinkStatus = ThinkStatus.COMPLETED\r\n\t\t\t\t\t\t\t\t\tnewAiMessage.thinkTime = Date.now() - (newAiMessage.thinkStartTime || Date.now())\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (result?.choices?.[0]?.delta?.reasoning_content) {\r\n\t\t\t\t\t\t\t\treasoningContent += result.choices[0].delta.reasoning_content\r\n\t\t\t\t\t\t\t\tif (!newAiMessage?.thinkStatus) {\r\n\t\t\t\t\t\t\t\t\tnewAiMessage.thinkStatus = ThinkStatus.THINKING\r\n\t\t\t\t\t\t\t\t\tnewAiMessage.thinkStartTime = Date.now()\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tallAiContent = reasoningContent + aiContent\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tif (respoKey && result && result[respoKey.content] && (result[respoKey.category] === respoKey.contentCategory || !result[respoKey.category])) {\r\n\t\t\t\t\t\t\t\taiContent += result[respoKey.content]\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t// 匹配不规则的结束\r\n\t\t\t\t\t\t\tif (result && result[respoKey.category] === 'done') {\r\n\t\t\t\t\t\t\t\tresultItem.value = result\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t// 匹配不规则的错误提示\r\n\t\t\t\t\t\t\tif (result && result[respoKey.category] === 'error') {\r\n\t\t\t\t\t\t\t\tconst errorMessage = result[respoKey.all] ?? '当前网络异常'\r\n\t\t\t\t\t\t\t\tconst currentAiMessage = chatList.value[currIndex.value]\r\n\t\t\t\t\t\t\t\tif (currentAiMessage.chatId) {\r\n\t\t\t\t\t\t\t\t\tcurrentAiMessage.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\">\r\n\t\t\t\t\t\t\t\t\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\"/>\r\n\t\t\t\t\t\t\t\t\t\t</svg>${errorMessage}</div>`\r\n\t\t\t\t\t\t\t\t\t// currentAiMessage.content = errorMessage\r\n\t\t\t\t\t\t\t\t\tcurrentAiMessage.isChating = false\r\n\t\t\t\t\t\t\t\t\tcurrentAiMessage.componentName = ''\r\n\t\t\t\t\t\t\t\t\tcurrentAiMessage.isShowLike = false\r\n\t\t\t\t\t\t\t\t\tcurrentAiMessage.isShowCopy = false\r\n\t\t\t\t\t\t\t\t\tcurrentAiMessage.isError = true\r\n\r\n\t\t\t\t\t\t\t\t\tnextTick(() => {\r\n\t\t\t\t\t\t\t\t\t\t// 直接更新 chatList 并触发重新渲染\r\n\t\t\t\t\t\t\t\t\t\temit('sendMessage', [...chatList.value])\r\n\t\t\t\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\t\t\t\t\tafterSend(result)\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t// 后端无allAiContent完整信息 前端手动拼接\r\n\t\t\t\t\t\t\tif (aiContent || reasoningContent) {\r\n\t\t\t\t\t\t\t\tallAiContent = aiContent + reasoningContent\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (respoKey && result && result[respoKey.all] && result[respoKey.category] === respoKey.allCategory) {\r\n\t\t\t\t\t\t\t\tallAiContent = result[respoKey.all]\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t// 后端返回匹配不规则的流式输出 如 data:啦啦啦\r\n\t\t\t\t\t\t\tif (respoKey && result && typeof result === 'string' && result !== '[DONE]') {\r\n\t\t\t\t\t\t\t\taiContent += result\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t// 后端返回匹配不规则的流式输出 如 data:[DONE] 结束\r\n\t\t\t\t\t\t\tif (respoKey && result && typeof result === 'string' && result === '[DONE]') {\r\n\t\t\t\t\t\t\t\tconst index = chatList.value.findIndex((ele: any) => ele.chatId === chatId)\r\n\t\t\t\t\t\t\t\tif (index !== -1 && chatList.value[index]) {\r\n\t\t\t\t\t\t\t\t\tisChating.value = false\r\n\t\t\t\t\t\t\t\t\tchatList.value[index].isChating = false\r\n\t\t\t\t\t\t\t\t\temit('sendMessage', JSON.parse(JSON.stringify(chatList.value)))\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (chatList.value.some((ele: any) => ele.chatId === chatId)) {\r\n\t\t\t\t\t\t\tenqueueRender({\r\n\t\t\t\t\t\t\t\tmainContent: aiContent,\r\n\t\t\t\t\t\t\t\tthinkContent: '',\r\n\t\t\t\t\t\t\t\treasoningContent: reasoningContent\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (type === 1) {\r\n\t\t\t\t\t\t\tnextTick(() => {\r\n\t\t\t\t\t\t\t\trenderContent(aiContent, 'main')\r\n\t\t\t\t\t\t\t\trenderContent(reasoningContent, 'reasoning')\r\n\t\t\t\t\t\t\t\tnextTick(() => {\r\n\t\t\t\t\t\t\t\t\tscrollToBottom()\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} catch (error) {\r\n\t\t\t\t\t\tconsole.error('解析SSE消息失败:', error)\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tondone: () => {\r\n\t\t\t\tnextTick(() => {\r\n\t\t\t\t\tisChating.value = false\r\n\t\t\t\t\tif (isUnmounting.value || !isMounted.value) return\r\n\t\t\t\t\tconst index = chatList.value.findIndex((ele: any) => ele.chatId === chatId)\r\n\t\t\t\t\tif (index !== -1 && chatList.value[index]) {\r\n\t\t\t\t\t\tchatList.value[index].isChating = false\r\n\t\t\t\t\t\tchatList.value[index].componentName = currentComponentName.value\r\n\t\t\t\t\t\tchatList.value[index].html = markdownToHtml(allAiContent)\r\n\t\t\t\t\t\tif (allAiContent) {\r\n\t\t\t\t\t\t\tif (resultItem.value) {\r\n\t\t\t\t\t\t\t\tresultItem.value.allAiContent = allAiContent\r\n\t\t\t\t\t\t\t\tafterSend(resultItem.value)\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tafterSend({ allAiContent })\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tconst waitForRenderComplete = () => {\r\n\t\t\t\t\t\t\tif (renderQueue.value.length === 0 && !isRendering.value) {\r\n\t\t\t\t\t\t\t\tif (chatList.value.length > 0) {\r\n\t\t\t\t\t\t\t\t\temit('sendMessage', JSON.parse(JSON.stringify(chatList.value)))\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\trequestAnimationFrame(waitForRenderComplete)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\twaitForRenderComplete()\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t},\r\n\t\t\tonabort: () => {\r\n\t\t\t\thandleAbort()\r\n\t\t\t},\r\n\t\t\tonerror: (response: Error | Response) => {\r\n\t\t\t\thandleError(response)\r\n\t\t\t}\r\n\t\t})\r\n\t} catch (error) {\r\n\t\tconsole.error('OpenSSE错误:', error)\r\n\t\tisChating.value = false\r\n\t\t// chatList.value[currIndex.value].content = `请求失败`\r\n\t\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\">\r\n\t\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\"/>\r\n\t\t</svg>${'请求失败'}</div>`\r\n\t\tchatList.value[currIndex.value].isChating = false\r\n\t\tchatList.value[currIndex.value].isShowCopy = false\r\n\t\tchatList.value[currIndex.value].isShowLike = false\r\n\t\tshowToast('请求失败,请重试', 'error', 3000)\r\n\t\t// handleError(error)\r\n\t}\r\n}\r\n\r\n// 处理请求中止\r\nconst handleAbort = (): void => {\r\n\tisChating.value = false\r\n\tif (isUnmounting.value) return\r\n\r\n\tconst currentAiMessage = chatList.value[currIndex.value]\r\n\tstop(chatList.value[currIndex.value], currIndex.value)\r\n\tconst hasContent = currentAiMessage && (currentAiMessage.content || currentAiMessage.thinkContent || currentAiMessage.reasoningContent)\r\n\r\n\tif (currentAiMessage) {\r\n\t\tif (currentAiMessage.thinkStatus === ThinkStatus.THINKING) {\r\n\t\t\tcurrentAiMessage.thinkStatus = ThinkStatus.STOPPED\r\n\t\t\tcurrentAiMessage.thinkTime = Date.now() - (currentAiMessage.thinkStartTime || Date.now())\r\n\t\t}\r\n\t\tif (!hasContent) {\r\n\t\t\tconst userMessageIndex = currIndex.value - 1\r\n\t\t\tif (userMessageIndex >= 0 && chatList.value[userMessageIndex].user === 'u') {\r\n\t\t\t\tchatList.value.splice(currIndex.value, 1)\r\n\t\t\t\tchatList.value.splice(userMessageIndex, 1)\r\n\t\t\t} else {\r\n\t\t\t\tchatList.value.splice(currIndex.value, 1)\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tconst updatedAiMessage = {\r\n\t\t\t\t...currentAiMessage,\r\n\t\t\t\tisChating: false,\r\n\t\t\t\tcontent: currentAiMessage.content ? currentAiMessage.content + '...' : '',\r\n\t\t\t\tthinkContent: currentAiMessage.thinkContent ? currentAiMessage.thinkContent + '...' : undefined,\r\n\t\t\t\treasoningContent: currentAiMessage.reasoningContent ? currentAiMessage.reasoningContent + '...' : undefined,\r\n\t\t\t\tthinkStatus: currentAiMessage.thinkStatus as ThinkStatus,\r\n\t\t\t\tstop: true\r\n\t\t\t}\r\n\r\n\t\t\tchatList.value.splice(currIndex.value, 1, updatedAiMessage)\r\n\r\n\t\t\tnextTick(() => {\r\n\t\t\t\trenderContent(updatedAiMessage.thinkContent || '', 'thinking')\r\n\t\t\t\trenderContent(updatedAiMessage.reasoningContent || '', 'reasoning')\r\n\t\t\t\trenderContent(updatedAiMessage.content || '', 'main')\r\n\t\t\t\temit('sendMessage', [...chatList.value])\r\n\t\t\t})\r\n\t\t\treturn\r\n\t\t}\r\n\t}\r\n\r\n\tif (chatList.value.length > 0) {\r\n\t\temit('sendMessage', [...chatList.value])\r\n\t}\r\n}\r\n\r\n// 处理请求错误\r\nconst handleError = (response: Error | Response): void => {\r\n\tif (isUnmounting.value) return\r\n\tisChating.value = false\r\n\r\n\tlet errorMessage = '未知错误'\r\n\tif (response instanceof Error) {\r\n\t\tconsole.error('API请求错误:', response)\r\n\t\terrorMessage = response.message\r\n\t} else if (response instanceof Response) {\r\n\t\tconsole.error('API请求错误, 响应状态:', response.status, response.statusText)\r\n\t\terrorMessage = `请求失败: ${response.status} ${response.statusText}`\r\n\t}\r\n\r\n\tconst currentAiMessage = chatList.value[currIndex.value]\r\n\tif (currentAiMessage) {\r\n\t\tcurrentAiMessage.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\">\r\n <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\"/>\r\n</svg>${errorMessage}</div>`\r\n\t\t// currentAiMessage.content = errorMessage\r\n\t\tcurrentAiMessage.isChating = false\r\n\t\tcurrentAiMessage.componentName = ''\r\n\t\tcurrentAiMessage.isShowLike = false\r\n\t\tcurrentAiMessage.isShowCopy = false\r\n\t\tcurrentAiMessage.isError = true\r\n\r\n\t\tnextTick(() => {\r\n\t\t\trenderContent(currentAiMessage.content || '', 'main')\r\n\t\t\temit('sendMessage', [...chatList.value])\r\n\t\t})\r\n\t} else {\r\n\t\tshowToast(errorMessage, 'error', 3000)\r\n\t\temit('sendMessage', [...chatList.value])\r\n\t}\r\n}\r\n\r\n// 渲染队列\r\nconst enqueueRender = (data: RenderData): void => {\r\n\tif (isUnmounting.value || !isMounted.value) return\r\n\tif (currIndex.value < 0 || currIndex.value >= chatList.value.length) return\r\n\trenderQueue.value.push(data)\r\n\tif (!isRendering.value) {\r\n\t\tisRendering.value = true\r\n\t\tprocessRenderQueue()\r\n\t}\r\n}\r\n\r\nconst processRenderQueue = (): void => {\r\n\tif (isUnmounting.value || !isMounted.value) {\r\n\t\trenderQueue.value = []\r\n\t\tisRendering.value = false\r\n\t\treturn\r\n\t}\r\n\r\n\tif (renderQueue.value.length === 0) {\r\n\t\tisRendering.value = false\r\n\t\treturn\r\n\t}\r\n\r\n\trequestAnimationFrame(() => {\r\n\t\tconst data = renderQueue.value.shift()\r\n\t\tif (data) {\r\n\t\t\tformatMarkdown(data)\r\n\t\t}\r\n\t\tprocessRenderQueue()\r\n\t})\r\n}\r\n\r\n// 格式化Markdown内容\r\nconst formatMarkdown = (data: RenderData): void => {\r\n\tif (!isMounted.value) return\r\n\tif (currIndex.value < 0 || currIndex.value >= chatList.value.length) return\r\n\r\n\tconst currentItem = chatList.value[currIndex.value]\r\n\t// 如果是错误消息,不更新content\r\n\tif (!currentItem.isError) {\r\n\t\tcurrentItem.thinkContent = data.thinkContent\r\n\t\tcurrentItem.content = data.mainContent\r\n\t\tcurrentItem.reasoningContent = data.reasoningContent\r\n\t}\r\n\r\n\tnextTick(() => {\r\n\t\tconst thinkingContainer = thinkingContentRef.value[currIndex.value]\r\n\t\tif (thinkingContainer) {\r\n\t\t\tif (data.thinkContent && !currentItem.isError) {\r\n\t\t\t\trenderContent(data.thinkContent, 'thinking')\r\n\t\t\t\tthinkingContainer.style.display = 'block'\r\n\t\t\t\tthinkingContainer.style.visibility = 'visible'\r\n\t\t\t} else {\r\n\t\t\t\tthinkingContainer.style.display = 'none'\r\n\t\t\t\tthinkingContainer.style.visibility = 'hidden'\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst reasoningContainer = reasoningContentRef.value[currIndex.value]\r\n\t\tif (reasoningContainer) {\r\n\t\t\tif (data.reasoningContent && !currentItem.isError) {\r\n\t\t\t\trenderContent(data.reasoningContent, 'reasoning')\r\n\t\t\t\treasoningContainer.style.display = 'block'\r\n\t\t\t\treasoningContainer.style.visibility = 'visible'\r\n\t\t\t} else {\r\n\t\t\t\treasoningContainer.style.display = 'none'\r\n\t\t\t\treasoningContainer.style.visibility = 'hidden'\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// 如果是错误消息,使用currentItem.content,否则使用data.mainContent\r\n\t\trenderContent(currentItem.isError ? currentItem.content : data.mainContent, 'main')\r\n\t})\r\n}\r\n\r\n// 附加复制按钮\r\nconst attachCopyButtons = (container: HTMLElement): void => {\r\n\tconst codeBlocks = container.querySelectorAll('pre code')\r\n\tcodeBlocks.forEach(codeBlock => {\r\n\t\tconst pre = codeBlock.parentElement\r\n\t\tif (pre) {\r\n\t\t\tconst copyBtn = document.createElement('button')\r\n\t\t\tcopyBtn.className = 'touchchat-code-copy'\r\n\t\t\tcopyBtn.addEventListener('click', () => {\r\n\t\t\t\tconst code = codeBlock.textContent || ''\r\n\t\t\t\tnavigator.clipboard\r\n\t\t\t\t\t.writeText(code)\r\n\t\t\t\t\t.then(() => {\r\n\t\t\t\t\t\tshowToast('复制成功', 'info', 2000)\r\n\t\t\t\t\t\tcopyBtn.textContent = '已复制'\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tcopyBtn.textContent = ''\r\n\t\t\t\t\t\t}, 2000)\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch(err => {\r\n\t\t\t\t\t\tconsole.error('复制失败:', err)\r\n\t\t\t\t\t\tshowToast('复制失败', 'error', 2000)\r\n\t\t\t\t\t})\r\n\t\t\t})\r\n\r\n\t\t\tpre.style.position = 'relative'\r\n\t\t\tpre.appendChild(copyBtn)\r\n\t\t}\r\n\t})\r\n}\r\n\r\n// 渲染内容\r\nconst renderContent = (content: string, type: 'main' | 'thinking' | 'reasoning', index?: number): void => {\r\n\tconst renderIndex = index ?? currIndex.value\r\n\tif (renderIndex < 0 || renderIndex >= chatList.value.length) return\r\n\r\n\tconst refArrays = {\r\n\t\tmain: htmlContentRef,\r\n\t\tthinking: thinkingContentRef,\r\n\t\treasoning: reasoningContentRef\r\n\t}\r\n\tconst processors = {\r\n\t\tmain: (content: string) => markdown?.render(content, { isReasoning: false }) || '',\r\n\t\tthinking: (content: string) => markdown?.render(content, { isReasoning: false }) || '',\r\n\t\treasoning: (content: string) => markdown?.render(content, { isReasoning: false }) || ''\r\n\t}\r\n\r\n\tconst container = refArrays[type].value[renderIndex]\r\n\tif (!container) return\r\n\r\n\tcontainer.innerHTML = processors[type](content || '')\r\n\tattachCopyButtons(container)\r\n}\r\n\r\n// 发送消息\r\nconst sendMessage = (content?: string, fileList?: any[], auto?: boolean, type?: string): void => {\r\n\tinputValue.value = content || ''\r\n\thandleBeforeSend(content, fileList, auto, type)\r\n}\r\n\r\n// 发送前处理\r\nconst handleBeforeSend = (content?: string, fileList?: any[], auto?: boolean, type?: string): void => {\r\n\tfileData.value = fileList || []\r\n\tif (beforeSend) {\r\n\t\tconst fn = beforeSend()\r\n\t\tif (fn && typeof (fn as any).then === 'function') {\r\n\t\t\t;(Promise.resolve(fn) as Promise<{ result: boolean; componentName?: string }>)\r\n\t\t\t\t.then(res => {\r\n\t\t\t\t\tif (res.result) {\r\n\t\t\t\t\t\tcurrentComponentName.value = res.componentName || ''\r\n\t\t\t\t\t\thandleSend(content, fileList, auto, type)\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.catch(error => {\r\n\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t})\r\n\t\t} else {\r\n\t\t\tif (fn.result) {\r\n\t\t\t\tcurrentComponentName.value = fn.componentName || ''\r\n\t\t\t\thandleSend(content, fileList, auto, type)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n// 处理发送\r\nconst handleSend = (content?: string, fileList?: any[], auto?: boolean, type?: string): void => {\r\n\temit('beforeSendMessage')\r\n\t// sendMessageInject(inputValue.value)\r\n\tsendMessageInject(inputValue.value, fileData.value)\r\n\ttypeFlag.value = type || ''\r\n\tif (scripts && Array.isArray(scripts) && scripts.length > 0) {\r\n\t\tconst userInput = content ? content.replace(/\\n/g, '') : inputValue.value.replace(/\\n/g, '').trim()\r\n\t\tif (!userInput && !fileList?.length && auto) return\r\n\r\n\t\t// 添加用户消息\r\n\t\tconst userChatId = `user_${Date.now()}`\r\n\t\tconst userMessage: ChatMessage = {\r\n\t\t\tchatId: userChatId,\r\n\t\t\tuser: 'u',\r\n\t\t\ttype: 'text',\r\n\t\t\tcontent: userInput,\r\n\t\t\tisShowLike: false,\r\n\t\t\tisShowCopy: true,\r\n\t\t\tfiles: fileList || [],\r\n\t\t\ttypeFlag: type,\r\n\t\t\tauto: auto || false\r\n\t\t}\r\n\t\tchatList.value.push(userMessage)\r\n\t\temit('sendMessage', [...chatList.value])\r\n\r\n\t\t// 滚动到底部 - 先渲染内容再滚动,确保准确性\r\n\t\tnextTick(() => {\r\n\t\t\t// 立即渲染用户消息\r\n\t\t\trenderContent(userMessage.content, 'main', chatList.value.length - 1)\r\n\t\t\t// 渲染完成后再滚动到底部\r\n\t\t\tnextTick(() => {\r\n\t\t\t\tscrollToBottom()\r\n\t\t\t})\r\n\t\t})\r\n\r\n\t\t// 查找匹配的脚本内容\r\n\t\tconst result = findMatchingScriptContent(userInput)\r\n\r\n\t\tif (result && result.responses.length > 0) {\r\n\t\t\t// 存储新AI消息的数组\r\n\t\t\tconst newAiMessages: ChatMessage[] = []\r\n\r\n\t\t\tresult.responses.forEach((response: any, idx: number) => {\r\n\t\t\t\tconst pauseMarker = Array.isArray(response.data) ? '\\u200B'.repeat(20) : ''\r\n\t\t\t\tconst content = Array.isArray(response.data) ? response.data.join(pauseMarker) : response.data\r\n\r\n\t\t\t\tconst aiChatId = `ai_${Date.now()}_${idx}`\r\n\t\t\t\tconst aiMessage: ChatMessage = {\r\n\t\t\t\t\tchatId: aiChatId,\r\n\t\t\t\t\tuser: 'ai',\r\n\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\tcontent: content || '',\r\n\t\t\t\t\t// componentName: response.needSequenceProcessing ? '' : response.type || '',\r\n\t\t\t\t\tcomponentName: response.type || '',\r\n\t\t\t\t\tisShowLike: true,\r\n\t\t\t\t\tisShowCopy: true,\r\n\t\t\t\t\tneedSequenceType: response.type || '',\r\n\t\t\t\t\tneedSequenceProcessing: response.needSequenceProcessing || false,\r\n\t\t\t\t\ttypeFlag: type\r\n\t\t\t\t}\r\n\t\t\t\tnewAiMessages.push(aiMessage)\r\n\t\t\t})\r\n\r\n\t\t\t// 创建消息处理器相关变量\r\n\t\t\tlet messageQueue = [...newAiMessages]\r\n\t\t\tlet isProcessing = false\r\n\t\t\tlet currentMessage: ChatMessage | null = null\r\n\r\n\t\t\t// 处理下一条消息\r\n\t\t\tconst processNextMessage = () => {\r\n\t\t\t\tif (messageQueue.length > 0 && !isProcessing) {\r\n\t\t\t\t\tisProcessing = true\r\n\t\t\t\t\tconst nextMessage = messageQueue.shift()\r\n\t\t\t\t\tif (nextMessage) {\r\n\t\t\t\t\t\tcurrentMessage = nextMessage\r\n\t\t\t\t\t\tconsole.log('开始处理消息:', currentMessage.chatId)\r\n\t\t\t\t\t\tchatList.value.push(currentMessage)\r\n\t\t\t\t\t\temit('sendMessage', [...chatList.value])\r\n\t\t\t\t\t\tconst msgIndex = chatList.value.length - 1\r\n\t\t\t\t\t\tnextTick(() => {\r\n\t\t\t\t\t\t\t// 先渲染内容再滚动到底部\r\n\t\t\t\t\t\t\trenderContent(currentMessage?.content || '', 'main', msgIndex)\r\n\t\t\t\t\t\t\tnextTick(() => {\r\n\t\t\t\t\t\t\t\tscrollToBottom()\r\n\t\t\t\t\t\t\t\t// 内容渲染完成后再开始流式输出\r\n\t\t\t\t\t\t\t\tif (currentMessage) {\r\n\t\t\t\t\t\t\t\t\t// 无论是否需要序列处理,都等待渲染完成后再处理下一条消息\r\n\t\t\t\t\t\t\t\t\t// 标记当前消息需要序列处理,确保等待渲染完成\r\n\t\t\t\t\t\t\t\t\tconst messageToProcess = {\r\n\t\t\t\t\t\t\t\t\t\t...currentMessage,\r\n\t\t\t\t\t\t\t\t\t\tneedSequenceProcessing: true\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t// 开始流式输出\r\n\t\t\t\t\t\t\t\t\tsimulateStreamOutput(msgIndex, messageToProcess)\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// 处理消息完成事件\r\n\t\t\tconst handleMessageComplete = (chatId: string) => {\r\n\t\t\t\tif (currentMessage && currentMessage.chatId === chatId) {\r\n\t\t\t\t\tconsole.log('序列消息处理完成,处理下一条:', chatId)\r\n\t\t\t\t\tcurrentMessage = null\r\n\t\t\t\t\tisProcessing = false\r\n\t\t\t\t\tprocessNextMessage()\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// 保存消息处理器到响应式变量,供completeRendered使用\r\n\t\t\tconst processorObj = {\r\n\t\t\t\tmessageQueue,\r\n\t\t\t\tisProcessing,\r\n\t\t\t\tcurrentMessage,\r\n\t\t\t\tprocessNextMessage,\r\n\t\t\t\thandleMessageComplete\r\n\t\t\t}\r\n\t\t\tcurrentMessageProcessor.value = processorObj\r\n\r\n\t\t\t// 开始处理消息队列\r\n\t\t\tprocessNextMessage()\r\n\t\t} else {\r\n\t\t\t// 插入默认AI回复\r\n\t\t\tconst defaultAiChatId = `ai_${Date.now()}`\r\n\t\t\tconst defaultAiMessage: ChatMessage = {\r\n\t\t\t\tchatId: defaultAiChatId,\r\n\t\t\t\tuser: 'ai',\r\n\t\t\t\ttype: 'text',\r\n\t\t\t\tcontent: unmatchText,\r\n\t\t\t\tisShowLike: true,\r\n\t\t\t\tisShowCopy: true\r\n\t\t\t}\r\n\t\t\tchatList.value.push(defaultAiMessage)\r\n\t\t\temit('sendMessage', [...chatList.value])\r\n\t\t\t// 滚动到底部并渲染默认回复\r\n\t\t\tnextTick(() => {\r\n\t\t\t\tconst msgIndex = chatList.value.findIndex((item: any) => item.chatId === defaultAiChatId)\r\n\t\t\t\tif (msgIndex !== -1) {\r\n\t\t\t\t\t// 先渲染内容再滚动到底部\r\n\t\t\t\t\trenderContent(defaultAiMessage.content, 'main', msgIndex)\r\n\t\t\t\t\tnextTick(() => {\r\n\t\t\t\t\t\tscrollToBottom()\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tinputValue.value = ''\r\n\t\t// emit('sendMessage', JSON.parse(JSON.stringify(chatList.value)))\r\n\t} else {\r\n\t\tif (content) {\r\n\t\t\tinputValue.value = content\r\n\t\t}\r\n\t\tif ((isChating.value || (!inputValue.value.trim() && !fileList?.length)) && !auto) return\r\n\t\t// const userChatId = 'user_' + crypto.randomUUID().replace(/-/gi, '')\r\n\t\tconst userChatId = 'user_' + Math.random().toString(36).slice(2).padEnd(10, '0').slice(0, 10)\r\n\t\tconst userMessage: ChatMessage = {\r\n\t\t\tchatId: userChatId,\r\n\t\t\tuser: 'u',\r\n\t\t\ttype: 'text',\r\n\t\t\tcontent: inputValue.value,\r\n\t\t\tfiles: fileList || []\r\n\t\t}\r\n\t\tchatList.value.push(userMessage)\r\n\t\tconst index = chatList.value.length - 1\r\n\t\tnextTick(() => {\r\n\t\t\trenderContent(userMessage.content, 'main', index)\r\n\t\t\tscrollToBottom()\r\n\t\t})\r\n\t\topenSSE(inputValue.value, index + 1, 1)\r\n\t\tinputValue.value = ''\r\n\t}\r\n}\r\n\r\n// 停止生成\r\nconst handleStop = (): void => {\r\n\tfetchStream.value?.abort()\r\n\r\n\tconst aiIndex = chatList.value.findIndex((item: any) => item.isChating)\r\n\tif (aiIndex !== -1) {\r\n\t\tconst currentAiMessage = chatList.value[aiIndex]\r\n\r\n\t\tif (currentAiMessage.content?.trim()) {\r\n\t\t\tnextTick(() => {\r\n\t\t\t\tchatList.value[aiIndex] = {\r\n\t\t\t\t\t...currentAiMessage,\r\n\t\t\t\t\tcontent: currentAiMessage.content + '...',\r\n\t\t\t\t\tisChating: false\r\n\t\t\t\t}\r\n\t\t\t\trenderContent(chatList.value[aiIndex].content, 'main', aiIndex)\r\n\t\t\t\temit('sendMessage', chatList.value)\r\n\t\t\t})\r\n\t\t} else {\r\n\t\t\tif (aiIndex > 0) {\r\n\t\t\t\tconst userMessageIndex = aiIndex - 1\r\n\t\t\t\tif (chatList.value[userMessageIndex].user === 'u') {\r\n\t\t\t\t\tchatList.value.splice(userMessageIndex, 2)\r\n\t\t\t\t} else {\r\n\t\t\t\t\tchatList.value.splice(aiIndex, 1)\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tchatList.value.splice(aiIndex, 1)\r\n\t\t\t}\r\n\t\t}\r\n\t} else {\r\n\t\tconst lastIndex = chatList.value.length - 1\r\n\t\tif (lastIndex >= 0 && chatList.value[lastIndex].user === 'u') {\r\n\t\t\tchatList.value.pop()\r\n\t\t}\r\n\t}\r\n\r\n\tisChating.value = false\r\n}\r\n\r\n// 新增:滚动观察者实例\r\nconst scrollObserver = ref<MutationObserver | null>(null)\r\n\r\n// 滚动到底部 - 优化版,支持实时滚动和内容变化监听\r\nconst scrollToBottom = () => {\r\n\tif (!isMounted.value || isUnmounting.value || !chatContainer.value) return\r\n\r\n\tnextTick(() => {\r\n\t\trequestAnimationFrame(() => {\r\n\t\t\tconst chatContainerEl = chatContainer.value!\r\n\t\t\tconst lastMessage = chatContainerEl.querySelector('.touchchat-dialog-content > *:last-child') as HTMLElement | null\r\n\r\n\t\t\tif (lastMessage) {\r\n\t\t\t\t// 计算消息元素的完整高度(包含内边距和边框)\r\n\t\t\t\tconst { height: messageHeight } = lastMessage.getBoundingClientRect()\r\n\t\t\t\t// 计算容器可视区域高度\r\n\t\t\t\tconst containerHeight = chatContainerEl.clientHeight\r\n\t\t\t\t// 计算消息底部到容器顶部的距离\r\n\t\t\t\tconst messageBottom = lastMessage.offsetTop + lastMessage.offsetHeight\r\n\r\n\t\t\t\t// 如果消息高度超过容器高度,滚动到消息顶部;否则滚动到消息底部\r\n\t\t\t\tif (messageHeight > containerHeight) {\r\n\t\t\t\t\tchatContainerEl.scrollTop = lastMessage.offsetTop\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// 确保消息底部完全可见(处理可能的内边距/边框问题)\r\n\t\t\t\t\tchatContainerEl.scrollTop = messageBottom - containerHeight\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// 增强内容变化监听(包括文本节点和子元素变化)\r\n\t\t\t\tif (scrollObserver.value) {\r\n\t\t\t\t\tscrollObserver.value.disconnect()\r\n\t\t\t\t}\r\n\t\t\t\tscrollObserver.value = new MutationObserver(() => {\r\n\t\t\t\t\t// 内容变化后重新计算并滚动\r\n\t\t\t\t\tconst updatedMessageBottom = lastMessage.offsetTop + lastMessage.offsetHeight\r\n\t\t\t\t\tchatContainerEl.scrollTop = Math.max(updatedMessageBottom - containerHeight, chatContainerEl.scrollTop)\r\n\t\t\t\t})\r\n\r\n\t\t\t\tscrollObserver.value.observe(lastMessage, {\r\n\t\t\t\t\tchildList: true,\r\n\t\t\t\t\tsubtree: true,\r\n\t\t\t\t\tcharacterData: true,\r\n\t\t\t\t\tattributes: true, // 新增监听属性变化(如高度)\r\n\t\t\t\t\tattributeFilter: ['style', 'class'] // 只监听样式相关属性\r\n\t\t\t\t})\r\n\t\t\t} else {\r\n\t\t\t\tchatContainerEl.scrollTo({\r\n\t\t\t\t\ttop: chatContainerEl.scrollHeight,\r\n\t\t\t\t\tbehavior: 'smooth'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t})\r\n\t})\r\n}\r\n\r\n// 处理消息操作\r\nconst handleMessageAction = (action: MessageAction, index: number): void => {\r\n\tconst message = chatList.value[index]\r\n\tif (!message) return\r\n\r\n\tswitch (action) {\r\n\t\tcase MessageAction.COPY: {\r\n\t\t\t// 提取文本内容\r\n\t\t\tconst textContent = message.content\r\n\t\t\t// const imgContent = message.files\r\n\r\n\t\t\t// if (imgContent && imgContent.length > 0) {\r\n\t\t\t// \tinputValue.value = textContent\r\n\t\t\t// \tshowToast('复制成功', 'info')\r\n\t\t\t// \tif (ChatInputRef.value) {\r\n\t\t\t// \t\tChatInputRef.value.handlePaste(JSON.parse(JSON.stringify(imgContent)), 'copy')\r\n\t\t\t// \t}\r\n\t\t\t// } else {\r\n\t\t\t// \tinputValue.value = textContent\r\n\t\t\t// \tif (ChatInputRef.value) {\r\n\t\t\t// \t\tChatInputRef.value.handlePaste([], 'copy')\r\n\t\t\t// \t}\r\n\t\t\t// 只有文本的情况,保持原逻辑\r\n\t\t\tnavigator.clipboard\r\n\t\t\t\t.writeText(textContent)\r\n\t\t\t\t.then(() => {\r\n\t\t\t\t\tshowToast('复制成功', 'info')\r\n\t\t\t\t})\r\n\t\t\t\t.catch(err => {\r\n\t\t\t\t\tconsole.error('复制失败:', err)\r\n\t\t\t\t\tshowToast('复制失败', 'error')\r\n\t\t\t\t})\r\n\t\t\t// }\r\n\t\t\tbreak\r\n\t\t}\r\n\t\tcase MessageAction.EDIT:\r\n\t\t\tmessage.isEditing = true\r\n\t\t\tmessage.editContent = message.content\r\n\t\t\tbreak\r\n\t\tcase MessageAction.DELETE:\r\n\t\t\tmessageUtils.deleteMessageChain(index)\r\n\t\t\temit('sendMessage', chatList.value)\r\n\t\t\tbreak\r\n\t\tcase MessageAction.RETRY: {\r\n\t\t\tconst aiMessage = chatList.value[index]\r\n\t\t\tconst userMessageIndex = index - 1\r\n\t\t\tconst userMessage = chatList.value[userMessageIndex]\r\n\r\n\t\t\tif (userMessage && userMessage.user === 'u') {\r\n\t\t\t\tconst updatedAiMessage = {\r\n\t\t\t\t\t...aiMessage,\r\n\t\t\t\t\tcontent: '',\r\n\t\t\t\t\tthinkContent: '',\r\n\t\t\t\t\treasoningContent: '',\r\n\t\t\t\t\tisLiked: false,\r\n\t\t\t\t\tisDisliked: false,\r\n\t\t\t\t\tisChating: true,\r\n\t\t\t\t\tchatId: aiMessage.chatId,\r\n\t\t\t\t\tuser: aiMessage.user,\r\n\t\t\t\t\ttype: aiMessage.type,\r\n\t\t\t\t\tthinkStatus: ThinkStatus.COMPLETED,\r\n\t\t\t\t\tthinkStartTime: 0,\r\n\t\t\t\t\tthinkEndTime: 0\r\n\t\t\t\t}\r\n\t\t\t\tchatList.value.splice(index, 1, updatedAiMessage)\r\n\r\n\t\t\t\tnextTick(() => {\r\n\t\t\t\t\tif (htmlContentRef.value[index]) htmlContentRef.value[index].innerHTML = ''\r\n\t\t\t\t\tif (thinkingContentRef.value[index]) thinkingContentRef.value[index].innerHTML = ''\r\n\t\t\t\t\tif (reasoningContentRef.value[index]) reasoningContentRef.value[index].innerHTML = ''\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\topenSSE(userMessage.content || '', index, 2)\r\n\t\t\t\t\t}, 50)\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t\tbreak\r\n\t\t}\r\n\t\tcase MessageAction.LIKE:\r\n\t\t\tmessageUtils.updateMessage(index, {\r\n\t\t\t\tisLiked: true,\r\n\t\t\t\tisDisliked: false\r\n\t\t\t})\r\n\t\t\tbreak\r\n\t\tcase MessageAction.DISLIKE:\r\n\t\t\tmessageUtils.updateMessage(index, {\r\n\t\t\t\tisLiked: false,\r\n\t\t\t\tisDisliked: true\r\n\t\t\t})\r\n\t\t\tbreak\r\n\t}\r\n}\r\n\r\n// 保存编辑\r\nconst saveEdit = (index: number, newContent: string): void => {\r\n\tconst message = chatList.value[index]\r\n\tif (!message || !message.editContent) return\r\n\r\n\tchatList.value[index] = {\r\n\t\t...message,\r\n\t\tcontent: newContent,\r\n\t\tisEditing: false,\r\n\t\teditContent: undefined\r\n\t}\r\n\tnextTick(() => {\r\n\t\trenderContent(message.content, 'main', index)\r\n\t})\r\n\r\n\tif (index + 1 < chatList.value.length && chatList.value[index + 1].user === 'ai') {\r\n\t\tchatList.value.splice(index + 1, 1)\r\n\t}\r\n\r\n\topenSSE(newContent, index + 1)\r\n\temit('sendMessage', chatList.value)\r\n}\r\n\r\n// 取消编辑\r\nconst cancelEdit = (index: number): void => {\r\n\tconst message = chatList.value[index]\r\n\tif (!message) return\r\n\r\n\tmessage.isEditing = false\r\n\tmessage.editContent = ''\r\n\tnextTick(() => {\r\n\t\trenderContent(message.content, 'main', index)\r\n\t})\r\n}\r\n\r\n// 组件生命周期\r\nonMounted(async () => {\r\n\tif (isMounted.value) {\r\n\t\tinit()\r\n\t}\r\n\tisMounted.value = true\r\n\t// 监听scripts变化\r\n\twatch(\r\n\t\t() => scripts,\r\n\t\t() => {\r\n\t\t\tinit()\r\n\t\t},\r\n\t\t{ deep: true, immediate: false }\r\n\t)\r\n})\r\n\r\nonBeforeUnmount(() => {\r\n\tif (!isUnmounting.value) {\r\n\t\tisUnmounting.value = true\r\n\t\tif (fetchStream.value) {\r\n\t\t\tfetchStream.value.abort()\r\n\t\t\tfetchStream.value = null\r\n\t\t}\r\n\t\tif (TouchChatRobot.value) {\r\n\t\t\tTouchChatRobot.value.close()\r\n\t\t\tTouchChatRobot.value = undefined\r\n\t\t}\r\n\t\tisMounted.value = false\r\n\t\trenderQueue.value = []\r\n\t\thtmlContentRef.value = []\r\n\t\tthinkingContentRef.value = []\r\n\t\treasoningContentRef.value = []\r\n\t}\r\n\tif (scrollObserver.value) {\r\n\t\tscrollObserver.value.disconnect()\r\n\t\tscrollObserver.value = null\r\n\t}\r\n})\r\n\r\n// 处理拖拽进入事件\r\nconst handleDragEnter = () => {\r\n\tif (ChatInputRef.value) {\r\n\t\tChatInputRef.value.openMarkLayer()\r\n\t}\r\n\tisDragging.value = true\r\n}\r\n\r\n// 处理拖拽离开事件\r\nconst handleDragLeave = (e: DragEvent) => {\r\n\t// 检查鼠标是否真的离开容器\r\n\tconst rect = (e.target as HTMLElement).getBoundingClientRect()\r\n\tif (e.clientX < rect.left || e.clientX > rect.right || e.clientY < rect.top || e.clientY > rect.bottom) {\r\n\t\tisDragging.value = false\r\n\t}\r\n}\r\n\r\n// 处理文件放下事件\r\nconst handleDrop = async (e: DragEvent) => {\r\n\tisDragging.value = false\r\n\r\n\t// 获取拖拽的文件\r\n\tconst files = e.dataTransfer?.files\r\n\r\n\tif (files && files.length > 0) {\r\n\t\tconst fileList = await Promise.all(\r\n\t\t\tArray.from(files).map(async file => {\r\n\t\t\t\tlet base64 = ''\r\n\t\t\t\tif (file.type.startsWith('image/')) {\r\n\t\t\t\t\t// 使用 Promise 封装 FileReader 以正确获取 base64\r\n\t\t\t\t\tbase64 = await new Promise(resolve => {\r\n\t\t\t\t\t\tconst reader = new FileReader()\r\n\t\t\t\t\t\treader.onload = e => {\r\n\t\t\t\t\t\t\tresolve(e.target?.result as string)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treader.readAsDataURL(file)\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t\treturn {\r\n\t\t\t\t\t// id: crypto.randomUUID().replace(/-/gi, ''),\r\n\t\t\t\t\tid: Math.random().toString(36).slice(2).padEnd(10, '0').slice(0, 10),\r\n\t\t\t\t\tfile: file,\r\n\t\t\t\t\tname: file.name,\r\n\t\t\t\t\tfileType: file.type,\r\n\t\t\t\t\tfileSize: file.size,\r\n\t\t\t\t\tlastModified: file.lastModified,\r\n\t\t\t\t\tpreview: URL.createObjectURL(file),\r\n\t\t\t\t\tbase64\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t)\r\n\t\tif (ChatInputRef.value) {\r\n\t\t\tChatInputRef.value.handlePaste(fileList, 'drop')\r\n\t\t}\r\n\t}\r\n\r\n\tif (ChatInputRef.value) {\r\n\t\tChatInputRef.value.colseMarkLayer()\r\n\t}\r\n}\r\n\r\nconst itemUploadFile = (item: FileItem, index: number) => {\r\n\tconsole.log('itemUploadFile', item, index)\r\n\tif (ChatInputRef.value) {\r\n\t\tChatInputRef.value.itemUploadFile(index, 'drop')\r\n\t}\r\n}\r\n\r\nexport type { ChatMessage, ModuleItem }\r\n\r\nprovide('touchchat', {\r\n\tsend: sendMessage,\r\n\tretry: handleMessageAction\r\n})\r\n\r\ndefineExpose({\r\n\tsend: (value: string, fileList?: any[], auto?: boolean, type?: string) => {\r\n\t\thandleSend(value, fileList, auto, type)\r\n\t},\r\n\thandleAgentSelect,\r\n\tretry: (index: number) => {\r\n\t\thandleMessageAction(MessageAction.RETRY, index)\r\n\t},\r\n\tupdate\r\n})\r\n</script>\r\n"],"names":["inject","ref","fetchStream","watch","nextTick","throttle","script","item","ThinkStatus","FetchStream","_b","_a","_c","_f","_e","_d","_g","currentAiMessage","showToast","content","markdown","MessageAction","onMounted","onBeforeUnmount","e","provide","_createElementBlock","_createElementVNode","_renderSlot","_createVNode","HelloChat","_openBlock","_Fragment","_renderList","_createBlock","UserMessage","_unref","AiMessage","$slots","ChatInput"],"mappings":"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"}
1
+ {"version":3,"file":"TouchChat.vue2.js","sources":["../../../../../../../packages/components/touchchat/src/AiChat/TouchChat.vue"],"sourcesContent":["<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\" :enable-deep-thinking=\"enableDeepThinking\" :has-retry=\"activeAgentsName || scriptsLength > 0 ? false : 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=\"completeRendered\" @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\" v-model:enable-deep-thinking=\"enableDeepThinking\" :is-chating=\"isChating\" @send=\"handleBeforeSend\" @stop=\"handleStop\" @toggle-deep-thinking=\"(val: boolean) => (enableDeepThinking = val)\" @module-info=\"(_info: any) => {}\">\n\t\t\t\t<template #editTop>\n\t\t\t\t\t<slot name=\"editTop\"></slot>\n\t\t\t\t</template>\n\t\t\t\t<template #editFn>\n\t\t\t\t\t<slot name=\"editFn\"></slot>\n\t\t\t\t</template>\n\t\t\t</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, computed, onMounted, onBeforeUnmount, inject, watch, provide, type Ref } from 'vue'\nimport { MessageAction, type ChatMessage, type ModuleItem } from './Chat/types'\nimport { useChat } from './Chat/useChat'\nimport { useCopy } from './Chat/useCopy'\n\n// 组件属性和注入\nconst emit = defineEmits(['sendMessage', 'toggleSidebar', 'beforeSendMessage'])\nconst scripts = inject<Ref<any[]>>('scripts', ref([]))\nconst unmatchText = inject<string>('unmatchText', '您的消息未匹配到任何内容')\nconst modules = inject<Ref<(string | ModuleItem)[]>>('modules', ref([]))\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 scriptsLength = computed(() => scripts.value?.length || 0)\n\n// 组件属性\nconst props = defineProps({\n\tvalue: {\n\t\ttype: Array as () => ChatMessage[],\n\t\tdefault: () => []\n\t}\n})\n\n// DOM 引用\nconst chatContainer = ref<HTMLElement | null>(null)\nconst ChatInputRef = ref<InstanceType<typeof ChatInput> | null>(null)\n\n// 初始化 useChat\nconst {\n\tchatList,\n\tisChating,\n\tinputValue,\n\tenableDeepThinking,\n\tactiveAgentsName,\n\tinit,\n\tsendMessage,\n\thandleBeforeSend,\n\thandleSend,\n\thandleStop,\n\thandleMessageAction,\n\tsaveEdit,\n\tcancelEdit,\n\tcompleteRendered,\n\thandleAgentSelect,\n\tupdate,\n\tupdateModule,\n\thandleDragEnter,\n\thandleDragLeave,\n\thandleDrop,\n\thandleScroll,\n\tonMounted: chatOnMounted,\n\tonBeforeUnmount: chatOnBeforeUnmount\n} = useChat({\n\tprops,\n\temit: emit as any,\n\tscripts: scripts.value,\n\tunmatchText,\n\tmodules: modules.value,\n\tafterSend,\n\tsendMessageInject,\n\tbeforeSend,\n\tbottom,\n\tstop,\n\tchatContainer,\n\tchatInputRef: ChatInputRef\n})\n\n// 使用 useCopy composable\nconst { copyWithFeedback } = useCopy()\n\n// 注入外部的 modelChange 并覆盖,调用内部 updateModule 更新 moduleInfo\nconst modelChangeExternal = inject<(item: ModuleItem, index: number) => void>('modelChange', () => {})\nprovide('modelChange', (item: ModuleItem, index: number) => {\n\tmodelChangeExternal(item, index)\n\tupdateModule(item)\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\t\t\tpre.style.position = 'relative'\n\t\t\tpre.appendChild(copyBtn)\n\t\t}\n\t})\n}\n\n// 侧边栏切换\nconst toggleSidebarClick = (item: ChatMessage, index: number) => {\n\temit('toggleSidebar', item, index)\n}\n\n// 文件上传\nconst itemUploadFile = (_item: any, index: number) => {\n\tif (ChatInputRef.value) {\n\t\tChatInputRef.value.itemUploadFile(index, 'drop')\n\t}\n}\n\n// 组件生命周期\nonMounted(() => {\n\tchatOnMounted()\n\twatch(\n\t\t() => scripts,\n\t\t() => {\n\t\t\tinit()\n\t\t},\n\t\t{ deep: true, immediate: false }\n\t)\n})\n\nonBeforeUnmount(() => {\n\tchatOnBeforeUnmount()\n})\n\n// 提供给子组件\nprovide('touchchat', {\n\tsend: sendMessage,\n\tretry: handleMessageAction\n})\n\n// 暴露方法\ndefineExpose({\n\tsend: (value: string, fileList?: any[], auto?: boolean, type?: string) => {\n\t\thandleSend(value, fileList, auto, type)\n\t},\n\thandleAgentSelect,\n\tretry: (index: number) => {\n\t\thandleMessageAction(MessageAction.RETRY, index)\n\t},\n\tupdate\n})\n</script>\n"],"names":["inject","ref","computed","useChat","useCopy","provide","onMounted","watch","onBeforeUnmount","MessageAction","_createElementBlock","_unref","_createElementVNode","_renderSlot","_createVNode","HelloChat","_openBlock","_Fragment","_renderList","_createBlock","UserMessage","AiMessage","$slots","ChatInput"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAkEA,IAAA,MAAM,IAAO,GAAA,MAAA,CAAA;AACb,IAAA,MAAM,UAAUA,UAAmB,CAAA,SAAA,EAAWC,OAAI,CAAA,EAAE,CAAC,CAAA,CAAA;AACrD,IAAM,MAAA,WAAA,GAAcD,UAAe,CAAA,aAAA,EAAe,0EAAc,CAAA,CAAA;AAChE,IAAA,MAAM,UAAUA,UAAqC,CAAA,SAAA,EAAWC,OAAI,CAAA,EAAE,CAAC,CAAA,CAAA;AACvE,IAAM,MAAA,SAAA,GAAYD,UAAiC,CAAA,WAAA,EAAa,MAAM;AACrE,MAAA,OAAA,CAAQ,KAAK,yCAAgB,CAAA,CAAA;AAAA,KAC7B,CAAA,CAAA;AACD,IAAM,MAAA,iBAAA,GAAoBA,UAAkD,CAAA,MAAA,EAAQ,MAAM;AACzF,MAAA,OAAA,CAAQ,KAAK,0CAAiB,CAAA,CAAA;AAAA,KAC9B,CAAA,CAAA;AACD,IAAM,MAAA,UAAA,GAAaA,UAA0D,CAAA,YAAA,EAAc,OAAO;AAAA,MACjG,MAAQ,EAAA,IAAA;AAAA,MACR,aAAe,EAAA,EAAA;AAAA,KACd,CAAA,CAAA,CAAA;AAEF,IAAM,MAAA,MAAA,GAASA,UAAmB,CAAA,QAAA,EAAU,MAAM;AACjD,MAAA,OAAA,CAAQ,KAAK,sCAAa,CAAA,CAAA;AAAA,KAC1B,CAAA,CAAA;AAED,IAAM,MAAA,IAAA,GAAOA,UAAmD,CAAA,MAAA,EAAQ,MAAM;AAC7E,MAAA,OAAA,CAAQ,KAAK,oCAAW,CAAA,CAAA;AAAA,KACxB,CAAA,CAAA;AAGD,IAAM,MAAA,aAAA,GAAgBE,aAAS,MAAG;;AAAG,MAAQ,OAAA,CAAA,CAAA,EAAA,GAAA,OAAA,CAAA,KAAA,KAAR,mBAAe,MAAU,KAAA,CAAA,CAAA;AAAA,KAAC,CAAA,CAAA;AAG/D,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AAQd,IAAM,MAAA,aAAA,GAAgBD,QAAwB,IAAI,CAAA,CAAA;AAClD,IAAM,MAAA,YAAA,GAAeA,QAA2C,IAAI,CAAA,CAAA;AAGpE,IAAM,MAAA;AAAA,MACL,QAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA,kBAAA;AAAA,MACA,gBAAA;AAAA,MACA,IAAA;AAAA,MACA,WAAA;AAAA,MACA,gBAAA;AAAA,MACA,UAAA;AAAA,MACA,UAAA;AAAA,MACA,mBAAA;AAAA,MACA,QAAA;AAAA,MACA,UAAA;AAAA,MACA,gBAAA;AAAA,MACA,iBAAA;AAAA,MACA,MAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,eAAA;AAAA,MACA,UAAA;AAAA,MACA,YAAA;AAAA,MACA,SAAW,EAAA,aAAA;AAAA,MACX,eAAiB,EAAA,mBAAA;AAAA,QACdE,eAAQ,CAAA;AAAA,MACX,KAAA;AAAA,MACA,IAAA;AAAA,MACA,SAAS,OAAQ,CAAA,KAAA;AAAA,MACjB,WAAA;AAAA,MACA,SAAS,OAAQ,CAAA,KAAA;AAAA,MACjB,SAAA;AAAA,MACA,iBAAA;AAAA,MACA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,IAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAc,EAAA,YAAA;AAAA,KACd,CAAA,CAAA;AAGD,IAAM,MAAA,EAAE,gBAAiB,EAAA,GAAIC,eAAQ,EAAA,CAAA;AAGrC,IAAM,MAAA,mBAAA,GAAsBJ,UAAkD,CAAA,aAAA,EAAe,MAAM;AAAA,KAAE,CAAA,CAAA;AACrG,IAAQK,WAAA,CAAA,aAAA,EAAe,CAAC,IAAA,EAAkB,KAAkB,KAAA;AAC3D,MAAA,mBAAA,CAAoB,MAAM,KAAK,CAAA,CAAA;AAC/B,MAAA,YAAA,CAAa,IAAI,CAAA,CAAA;AAAA,KACjB,CAAA,CAAA;AAGD,IAAM,MAAA,iBAAA,GAAoB,CAAC,SAAiC,KAAA;AAC3D,MAAM,MAAA,UAAA,GAAa,SAAU,CAAA,gBAAA,CAAiB,UAAU,CAAA,CAAA;AACxD,MAAA,UAAA,CAAW,QAAQ,CAAa,SAAA,KAAA;AAC/B,QAAA,MAAM,MAAM,SAAU,CAAA,aAAA,CAAA;AACtB,QAAA,IAAI,GAAK,EAAA;AACR,UAAM,MAAA,OAAA,GAAU,QAAS,CAAA,aAAA,CAAc,QAAQ,CAAA,CAAA;AAC/C,UAAA,OAAA,CAAQ,SAAY,GAAA,qBAAA,CAAA;AACpB,UAAQ,OAAA,CAAA,gBAAA,CAAiB,SAAS,MAAM;AACvC,YAAM,MAAA,IAAA,GAAO,UAAU,WAAe,IAAA,EAAA,CAAA;AACtC,YAAA,gBAAA,CAAiB,IAAM,EAAA,OAAA,EAAS,EAAI,EAAA,oBAAA,EAAO,GAAI,CAAA,CAAA;AAAA,WAC/C,CAAA,CAAA;AACD,UAAA,GAAA,CAAI,MAAM,QAAW,GAAA,UAAA,CAAA;AACrB,UAAA,GAAA,CAAI,YAAY,OAAO,CAAA,CAAA;AAAA,SACxB;AAAA,OACA,CAAA,CAAA;AAAA,KACF,CAAA;AAGA,IAAM,MAAA,kBAAA,GAAqB,CAAC,IAAA,EAAmB,KAAkB,KAAA;AAChE,MAAK,IAAA,CAAA,eAAA,EAAiB,MAAM,KAAK,CAAA,CAAA;AAAA,KAClC,CAAA;AAGA,IAAM,MAAA,cAAA,GAAiB,CAAC,KAAA,EAAY,KAAkB,KAAA;AACrD,MAAA,IAAI,aAAa,KAAO,EAAA;AACvB,QAAa,YAAA,CAAA,KAAA,CAAM,cAAe,CAAA,KAAA,EAAO,MAAM,CAAA,CAAA;AAAA,OAChD;AAAA,KACD,CAAA;AAGA,IAAAC,aAAA,CAAU,MAAM;AACf,MAAc,aAAA,EAAA,CAAA;AACd,MAAAC,SAAA;AAAA,QACC,MAAM,OAAA;AAAA,QACN,MAAM;AACL,UAAK,IAAA,EAAA,CAAA;AAAA,SACN;AAAA,QACA,EAAE,IAAA,EAAM,IAAM,EAAA,SAAA,EAAW,KAAM,EAAA;AAAA,OAChC,CAAA;AAAA,KACA,CAAA,CAAA;AAED,IAAAC,mBAAA,CAAgB,MAAM;AACrB,MAAoB,mBAAA,EAAA,CAAA;AAAA,KACpB,CAAA,CAAA;AAGD,IAAAH,WAAA,CAAQ,WAAa,EAAA;AAAA,MACpB,IAAM,EAAA,WAAA;AAAA,MACN,KAAO,EAAA,mBAAA;AAAA,KACP,CAAA,CAAA;AAGD,IAAa,QAAA,CAAA;AAAA,MACZ,IAAM,EAAA,CAAC,KAAe,EAAA,QAAA,EAAkB,MAAgB,IAAkB,KAAA;AACzE,QAAW,UAAA,CAAA,KAAA,EAAO,QAAU,EAAA,IAAA,EAAM,IAAI,CAAA,CAAA;AAAA,OACvC;AAAA,MACA,iBAAA;AAAA,MACA,KAAA,EAAO,CAAC,KAAkB,KAAA;AACzB,QAAoB,mBAAA,CAAAI,mBAAA,CAAc,OAAO,KAAK,CAAA,CAAA;AAAA,OAC/C;AAAA,MACA,MAAA;AAAA,KACA,CAAA,CAAA;;4BAvNA,EAAAC,sBAAA,CAmDM,KAAA,EAAA;AAAA,QAnDD,KAAM,EAAA,gBAAA;AAAA,QAAkB,UAAA,oBAAD,MAAiB;AAAA,SAAA,EAAA,CAAA,SAAA,CAAA,CAAA;AAAA,QAAE,8BAAmB,CAAAC,SAAA,CAAe,eAAA,CAAA,EAAA,CAAA,SAAA,CAAA,CAAA;AAAA,QAAG,WAAA,EAAWA,UAAe,eAAA,CAAA;AAAA,QAAG,yBAAc,CAAAA,SAAA,CAAU,UAAA,CAAA,EAAA,CAAA,SAAA,CAAA,CAAA;AAAA;QACxIC,uBAoCM,KAAA,EAAA;AAAA,iBApCG,EAAA,eAAA;AAAA,UAAJ,GAAI,EAAA,aAAA;AAAA,UAAgB,KAAM,EAAA,kBAAA;AAAA,UAAoB,QAAA,EAAQD,UAAY,YAAA,CAAA;AAAA;UACtEE,cAAA,CAAyB,IAAA,CAAA,MAAA,EAAA,KAAA,CAAA;AAAA,UACdF,SAAA,CAAA,QAAA,CAAS,CAAA,MAAA,KAAM,sBAA1BD,uBAIM,KAAA,EAAA;AAAA;YAJ4B,KAAM,EAAA,mBAAA;AAAA;YACvCG,eAEO,4BAFP,MAEO;AAAA,cADNC,eAAyC,CAAAC,iBAAA,EAAA,EAA7B,aAAA,EAAcJ,SAAW,CAAA,WAAA,CAAA,EAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,eAAA,CAAA,CAAA;AAAA;;UAGvCC,sBA4BM,CAAA,KAAA,EAAA,EA5BD,KAAA,EAAM,4BAA0B,EAAA;AAAA,aACpCI,aAAA,CAAA,IAAA,CAAA,EAAAN,sBAAA;AAAA,cA0BWO,YAAA;AAAA,cA1BuB,IAAA;AAAA,cAAAC,eAAAP,SAAA,CAAA,QAAA,CAAhB,EAAA,CAAA,MAAM,KAAK,KAAA;;;;oBAAqB,KAAA,IAAK,CAAA,MAAA;AAAA;;oBACnC,KAAK,IAAI,KAAA,GAAA,qBAA5BQ,gBAOcC,mBAAA,EAAA;AAAA;sBAPyB,IAAA;AAAA,sBAAa,KAAA;AAAA,sBAAe,qBAAwB,EAAA,cAAA;AAAA,sBAAiB,MAAA,cAAMT,SAAmB,CAAA,mBAAA,EAACA,8BAAc,CAAA,IAAA,EAAM,KAAK,CAAA;AAAA,sBAAI,MAAA,cAAMA,SAAmB,CAAA,mBAAA,EAACA,8BAAc,CAAA,IAAA,EAAM,KAAK,CAAA;AAAA,sBAAI,QAAA,cAAQA,SAAmB,CAAA,mBAAA,EAACA,8BAAc,CAAA,MAAA,EAAQ,KAAK,CAAA;AAAA,sBAAI,UAAA,EAAWA,UAAQ,QAAA,CAAA;AAAA,sBAAG,cAAW,CAAA,MAAA,KAAEA,SAAU,CAAA,UAAA,EAAC,KAAK,CAAA;AAAA;sBAC5T,UAAA,cACV,MAA0B;AAAA,wBAA1BE,cAAA,CAA0B,IAAA,CAAA,MAAA,EAAA,YAAA,CAAA;AAAA;sBAEhB,EAAA,cACV,MAA8C;AAAA,wBAA9CA,cAAA,CAA8C,IAAA,CAAA,MAAA,EAAA,IAAA,EAAA;AAAA,0BAA7B,IAAA;AAAA,0BAAa,KAAA;AAAA;;;;mIAGhCM,gBAgBYE,iBAAA,EAAA;AAAA;sBAhBO,IAAA;AAAA,sBAAa,KAAA;AAAA,sBAAe,sBAAA,EAAsBV,UAAkB,kBAAA,CAAA;AAAA,sBAAG,aAAWA,SAAgB,CAAA,gBAAA,KAAI,aAAa,CAAA,KAAA,GAAA,IAAA,KAAA,GAAA,IAAA;AAAA,sBAAsB,MAAA,cAAMA,SAAmB,CAAA,mBAAA,EAACA,8BAAc,CAAA,IAAA,EAAM,KAAK,CAAA;AAAA,sBAAI,OAAA,cAAOA,SAAmB,CAAA,mBAAA,EAACA,8BAAc,CAAA,KAAA,EAAO,KAAK,CAAA;AAAA,sBAAI,MAAA,cAAMA,SAAmB,CAAA,mBAAA,EAACA,8BAAc,CAAA,IAAA,EAAM,KAAK,CAAA;AAAA,sBAAI,SAAA,cAASA,SAAmB,CAAA,mBAAA,EAACA,8BAAc,CAAA,OAAA,EAAS,KAAK,CAAA;AAAA,sBAAI,iBAAkB,EAAA,iBAAA;AAAA,sBAAoB,kBAAA,EAAmBA,UAAgB,gBAAA,CAAA;AAAA,sBAAG,eAAgB,EAAA,kBAAA;AAAA;sBAChd,KAAA,cACV,MAAiD;AAAA,wBAAjDE,cAAA,CAAiD,IAAA,CAAA,MAAA,EAAA,OAAA,EAAA;AAAA,0BAA7B,IAAA;AAAA,0BAAa,KAAA;AAAA;;sBAEvB,GAAA,cACV,MAA+C;AAAA,wBAA/CA,cAAA,CAA+C,IAAA,CAAA,MAAA,EAAA,KAAA,EAAA;AAAA,0BAA7B,IAAA;AAAA,0BAAa,KAAA;AAAA;;sBAErB,QAAA,cACV,MAAwB;AAAA,wBAAxBA,cAAA,CAAwB,IAAA,CAAA,MAAA,EAAA,UAAA,CAAA;AAAA;sBAEd,EAAA,cACV,MAA8C;AAAA,wBAA9CA,cAAA,CAA8C,IAAA,CAAA,MAAA,EAAA,IAAA,EAAA;AAAA,0BAA7B,IAAA;AAAA,0BAAa,KAAA;AAAA;;sBAEpB,SAAA,cACV,MAAqD;AAAA,wBAArDA,cAAA,CAAqD,IAAA,CAAA,MAAA,EAAA,WAAA,EAAA;AAAA,0BAA7B,IAAA;AAAA,0BAAa,KAAA;AAAA;;;;;;;;;;;;;;;QAM/BS,KAAAA,MAAO,CAAA,QAAA,qBAAlBZ,uBAEM,KAAA,EAAA;AAAA;UAFsB,KAAM,EAAA,yBAAA;AAAA;UACjCG,cAAA,CAA6B,IAAA,CAAA,MAAA,EAAA,UAAA,CAAA;AAAA;QAE9BA,eASO,yBATP,MASO;AAAA,UARNC,gBAOYS,iBAAA,EAAA;AAAA,mBAPG,EAAA,cAAA;AAAA,YAAJ,GAAI,EAAA,YAAA;AAAA,YAAuB,aAAA,EAAaZ,UAAU,UAAA,CAAA;AAAA,oEAAV,GAAA,UAAA,CAAU,QAAA,MAAA,GAAA,IAAA;AAAA,YAAU,sBAAA,EAAsBA,UAAkB,kBAAA,CAAA;AAAA,oFAAlB,GAAA,kBAAA,CAAkB,QAAA,MAAA,GAAA,IAAA;AAAA,YAAG,YAAA,EAAYA,UAAS,SAAA,CAAA;AAAA,YAAG,MAAA,EAAMA,UAAgB,gBAAA,CAAA;AAAA,YAAG,MAAA,EAAMA,UAAU,UAAA,CAAA;AAAA,YAAG,oBAAuB,EAAA,CAAA,GAAkB,KAAA,kBAAA,CAAA,KAAqB,GAAA,GAAA;AAAA,YAAO,YAAA,GAAc,KAAU,KAAA;AAAA,aAAA;AAAA;YACvQ,OAAA,cACV,MAA4B;AAAA,cAA5BE,cAAA,CAA4B,IAAA,CAAA,MAAA,EAAA,SAAA,CAAA;AAAA;YAElB,MAAA,cACV,MAA2B;AAAA,cAA3BA,cAAA,CAA2B,IAAA,CAAA,MAAA,EAAA,QAAA,CAAA;AAAA;;;;;;;;;;;;"}
@@ -26,10 +26,10 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
26
26
  const chatComponent = vue.ref();
27
27
  const layout = vue.inject("layout", "side, think, upload, chain");
28
28
  const isNotHeader = !layout.includes("side");
29
- const scripts = vue.inject("scripts", []);
29
+ const scripts = vue.inject("scripts", vue.ref([]));
30
30
  const agents = vue.inject("agents", []);
31
31
  const agentsInfo = vue.ref();
32
- const agentInfo = vue.inject("agentInfo", vue.ref({ list: [], url: "", token: "" }));
32
+ const agentInfo = vue.inject("agentInfo", vue.ref({ list: [], url: "", headers: {} }));
33
33
  const iIsAgent = vue.ref(false);
34
34
  vue.watch(
35
35
  agentInfo,
@@ -47,7 +47,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
47
47
  };
48
48
  vue.provide("updateSharedData", updateSharedData);
49
49
  const STORAGE_KEYS = {
50
- CHAT_HISTORY: scripts.length === 0 ? "chatHistory" : "robotHistory",
50
+ CHAT_HISTORY: scripts.value.length === 0 ? "chatHistory" : "robotHistory",
51
51
  SIDEBAR_STATE: "sidebarCollapsed"
52
52
  };
53
53
  const saveToLocalStorage = () => {
@@ -73,11 +73,12 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
73
73
  return newChat;
74
74
  };
75
75
  const loadFromLocalStorage = () => {
76
+ var _a, _b;
76
77
  const savedCollapseState = localStorage.getItem(STORAGE_KEYS.SIDEBAR_STATE);
77
78
  if (savedCollapseState) {
78
79
  state.isSidebarCollapsed = JSON.parse(savedCollapseState);
79
80
  }
80
- if (scripts.length > 0) {
81
+ if (scripts.value.length > 0) {
81
82
  localStorage.setItem(STORAGE_KEYS.CHAT_HISTORY, "[]");
82
83
  localStorage.setItem("activeAgentsName", "");
83
84
  }
@@ -102,6 +103,18 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
102
103
  } else if (historyData.length > 0) {
103
104
  state.chatHistory = historyData;
104
105
  }
106
+ if (!state.activeChat && state.chatHistory.length > 0) {
107
+ if (agents.length > 0) {
108
+ const firstId = agents[0].id;
109
+ state.activeChat = (_b = (_a = state.chatHistory.find((h) => h.id === firstId)) == null ? void 0 : _a.id) != null ? _b : state.chatHistory[state.chatHistory.length - 1].id;
110
+ } else {
111
+ state.activeChat = state.chatHistory[0].id;
112
+ }
113
+ }
114
+ if (scripts.value.length > 0 && agents.length === 0 && state.chatHistory.length === 0) {
115
+ const seeded = createNewChat("\u5BF9\u8BDD");
116
+ state.activeChat = seeded.id;
117
+ }
105
118
  };
106
119
  const historyList = vue.inject("historyList", []);
107
120
  const setHistoryData = vue.ref(Array.isArray(historyList) ? historyList : typeof historyList === "object" && historyList ? historyList : []);
@@ -135,7 +148,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
135
148
  },
136
149
  { immediate: true }
137
150
  );
138
- const messageItem = vue.ref({ user: "", type: "", content: "" });
151
+ const messageItem = vue.ref({ user: "u", type: "", content: "" });
139
152
  const messageIndex = vue.ref(0);
140
153
  const currentChatMessages = vue.computed(() => {
141
154
  if (watchHistoryDetail.value.length) {
@@ -160,7 +173,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
160
173
  (newVal) => {
161
174
  if (newVal && Array.isArray(newVal) && newVal.length) {
162
175
  watchHistoryData.value = newVal;
163
- if (!scripts.length) {
176
+ if (!scripts.value.length) {
164
177
  state.chatHistory = newVal;
165
178
  if (state.chatHistory.length > 0 && !state.activeChat) {
166
179
  state.activeChat = state.chatHistory[0].id;
@@ -1 +1 @@
1
- {"version":3,"file":"TouchHistory.vue2.js","sources":["../../../../../../../packages/components/touchchat/src/AiChat/TouchHistory.vue"],"sourcesContent":["<template>\n\t<div class=\"touchchat\">\n\t\t<div v-if=\"state.isSidebarCollapsed && !isNotHeader\" class=\"touchchat-header\">\n\t\t\t<div class=\"touchchat-showmenu\" @click.stop=\"toggleSidebar\">\n\t\t\t\t<div class=\"touchchat-showmenu-icon\"></div>\n\t\t\t</div>\n\t\t\t<div class=\"touchchat-add-lite\" @click.stop=\"startNewChat\">\n\t\t\t\t<div class=\"touchchat-add-lite-icon\"></div>\n\t\t\t\t<span>新对话</span>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"touchchat-content\">\n\t\t\t<HistorySidebar v-if=\"!isNotHeader && !state.isSidebarCollapsed\" :is-sidebar-collapsed=\"state.isSidebarCollapsed\" :active-chat=\"state.activeChat\" :chat-history=\"state.chatHistory\" @toggle-sidebar=\"toggleSidebar\" @start-new-chat=\"startNewChat\" @select-chat=\"selectChat\" @rename-chat=\"handleRenameChat\" @delete-chat=\"deleteChat\"> </HistorySidebar>\n\t\t\t<TouchChat v-if=\"!iIsAgent\" ref=\"chatComponent\" :key=\"state.activeChat + '-chat'\" :value=\"currentChatMessages\" @send-message=\"sendMessage\" @toggle-sidebar=\"toggleSidebarOut\" @before-send-message=\"beforeSendMessage\">\n\t\t\t\t<template #aimsg=\"{ item, index }\">\n\t\t\t\t\t<slot name=\"aimsg\" :item=\"item\" :index=\"index\" />\n\t\t\t\t</template>\n\t\t\t\t<template #msg=\"{ item, index }\">\n\t\t\t\t\t<slot name=\"msg\" :item=\"item\" :index=\"index\" />\n\t\t\t\t</template>\n\t\t\t\t<template #aiAvatar>\n\t\t\t\t\t<slot name=\"aiAvatar\" />\n\t\t\t\t</template>\n\t\t\t\t<template #userAvatar>\n\t\t\t\t\t<slot name=\"userAvatar\" />\n\t\t\t\t</template>\n\t\t\t\t<template #welcome>\n\t\t\t\t\t<slot name=\"welcome\" />\n\t\t\t\t</template>\n\t\t\t\t<template #edit>\n\t\t\t\t\t<slot name=\"edit\" />\n\t\t\t\t</template>\n\t\t\t\t<template #shortcut>\n\t\t\t\t\t<slot name=\"shortcut\" />\n\t\t\t\t</template>\n\t\t\t\t<template #top>\n\t\t\t\t\t<slot name=\"top\" />\n\t\t\t\t</template>\n\t\t\t\t<template #fn=\"{ item, index }\">\n\t\t\t\t\t<slot name=\"fn\" :item=\"item\" :index=\"index\" />\n\t\t\t\t</template>\n\t\t\t\t<template #extendsFn=\"{ item, index }\">\n\t\t\t\t\t<slot name=\"extendsFn\" :item=\"item\" :index=\"index\" />\n\t\t\t\t</template>\n\t\t\t\t<template #editTop>\n\t\t\t\t\t<slot name=\"editTop\" />\n\t\t\t\t</template>\n\t\t\t\t<template #editFn>\n\t\t\t\t\t<slot name=\"editFn\"></slot>\n\t\t\t\t</template>\n\t\t\t</TouchChat>\n\t\t\t<!-- :key=\"state.activeChat\" -->\n\t\t\t<TouchAgent v-else ref=\"chatComponent\" :key=\"state.activeChat + '-agent'\" :value=\"currentChatMessages\" @send-message=\"sendMessage\" @toggle-sidebar=\"toggleSidebarOut\" @before-send-message=\"beforeSendMessage\">\n\t\t\t\t<template #aimsg=\"{ item, index }\">\n\t\t\t\t\t<slot name=\"aimsg\" :item=\"item\" :index=\"index\" />\n\t\t\t\t</template>\n\t\t\t\t<template #msg=\"{ item, index }\">\n\t\t\t\t\t<slot name=\"msg\" :item=\"item\" :index=\"index\" />\n\t\t\t\t</template>\n\t\t\t\t<template #aiAvatar>\n\t\t\t\t\t<slot name=\"aiAvatar\" />\n\t\t\t\t</template>\n\t\t\t\t<template #userAvatar>\n\t\t\t\t\t<slot name=\"userAvatar\" />\n\t\t\t\t</template>\n\t\t\t\t<template #welcome>\n\t\t\t\t\t<slot name=\"welcome\" />\n\t\t\t\t</template>\n\t\t\t\t<template #edit>\n\t\t\t\t\t<slot name=\"edit\" />\n\t\t\t\t</template>\n\t\t\t\t<template #shortcut>\n\t\t\t\t\t<slot name=\"shortcut\" />\n\t\t\t\t</template>\n\t\t\t\t<template #top>\n\t\t\t\t\t<slot name=\"top\" />\n\t\t\t\t</template>\n\t\t\t\t<template #fn=\"{ item, index }\">\n\t\t\t\t\t<slot name=\"fn\" :item=\"item\" :index=\"index\" />\n\t\t\t\t</template>\n\t\t\t\t<template #extendsFn=\"{ item, index }\">\n\t\t\t\t\t<slot name=\"extendsFn\" :item=\"item\" :index=\"index\" />\n\t\t\t\t</template>\n\t\t\t</TouchAgent>\n\t\t\t<SiderBarView v-show=\"state.toggleSidebarFlag\" :flag=\"state.isSidebarCollapsed\" :item=\"messageItem\" :index=\"messageIndex\">\n\t\t\t\t<template #extend=\"{ item: slotMessageItem, index: slotMessageIndex }\">\n\t\t\t\t\t<slot name=\"extend\" :item=\"slotMessageItem\" :index=\"slotMessageIndex\" />\n\t\t\t\t</template>\n\t\t\t</SiderBarView>\n\t\t</div>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { onMounted, computed, watch, reactive, inject, ref, provide, Ref } from 'vue'\nimport TouchChat from './TouchChat.vue'\nimport TouchAgent from './TouchAgent.vue'\nimport HistorySidebar from './HistorySidebar.vue'\nimport SiderBarView from './SiderBarView.vue'\nimport type { ChatMessage } from './SiderBarView.vue'\nimport type { AgentConfig, SubAgent } from '../types/a2a'\n\ninterface HistoryItem {\n\tid: string\n\ttitle: string\n\ttime: Date\n\ttype: string // 用于区分不同类型的对话\n\tmessages?: ChatMessage[]\n}\n\ninterface Agent {\n\tid: string\n\tname: string\n\tintro: string\n}\n\ntype ResultArray = AgentConfig[] | SubAgent[]\n\ninterface MultiAgentInfo {\n\tlist: ResultArray\n\turl?: string\n\ttoken?: string\n}\n\n// 状态管理\nconst state = reactive({\n\tactiveChat: '',\n\tchatHistory: [] as HistoryItem[],\n\tisSidebarCollapsed: false,\n\tactionMenuVisible: {} as Record<string, boolean>,\n\tmockMessages: [] as ChatMessage[],\n\ttoggleSidebarFlag: false,\n\tagentsType: '',\n\tclickCreateNum: 0\n})\n\nconst watchHistoryData = ref<HistoryItem[]>([])\nconst watchHistoryDetail = ref<ChatMessage[]>([])\nconst chatComponent = ref<InstanceType<typeof TouchChat>>()\n\nconst layout = inject<string>('layout', 'side, think, upload, chain')\nconst isNotHeader = !layout.includes('side')\nconst scripts = inject<any[]>('scripts', [])\nconst agents = inject<Agent[]>('agents', [])\nconst agentsInfo = ref<Agent>()\nconst agentInfo = inject<Ref<MultiAgentInfo>>('agentInfo', ref({ list: [], url: '', token: '' }))\nconst iIsAgent = ref(false)\nwatch(\n\tagentInfo,\n\tnewVal => {\n\t\tiIsAgent.value = newVal.list.length > 0\n\t},\n\t{ immediate: true, deep: true }\n)\n// 提供更新函数给后代组件\nconst updateSharedData = (item: Agent) => {\n\tagentsInfo.value = item\n\tif (chatComponent.value) {\n\t\tchatComponent.value?.handleAgentSelect?.(item)\n\t}\n}\nprovide('updateSharedData', updateSharedData)\n\n// 本地存储相关\nconst STORAGE_KEYS = {\n\tCHAT_HISTORY: scripts.length === 0 ? 'chatHistory' : 'robotHistory',\n\tSIDEBAR_STATE: 'sidebarCollapsed'\n}\nconst saveToLocalStorage = () => {\n\tlocalStorage.setItem(STORAGE_KEYS.CHAT_HISTORY, JSON.stringify(state.chatHistory))\n\tlocalStorage.setItem(STORAGE_KEYS.SIDEBAR_STATE, JSON.stringify(state.isSidebarCollapsed))\n}\n// 聊天管理\nconst createNewChat = (title: string = '新对话', messageList: ChatMessage[] = [], type?: string) => {\n\tlet agentsId = ''\n\tif (agents.length > 0) {\n\t\tagentsId = agents.find(item => item.name === title)?.id || ''\n\t}\n\tconst newChat: HistoryItem = {\n\t\t// id: Date.now().toString(),\n\t\tid: agentsId ? agentsId : (Math.floor(Math.random() * 89999999) + 10000000).toString(),\n\t\ttitle,\n\t\ttime: new Date(),\n\t\tmessages: messageList,\n\t\ttype: type ? type : ''\n\t}\n\n\tstate.chatHistory.unshift(newChat)\n\tsaveToLocalStorage()\n\treturn newChat\n}\n\nconst loadFromLocalStorage = () => {\n\t// 加载折叠状态\n\tconst savedCollapseState = localStorage.getItem(STORAGE_KEYS.SIDEBAR_STATE)\n\tif (savedCollapseState) {\n\t\tstate.isSidebarCollapsed = JSON.parse(savedCollapseState)\n\t}\n\n\tif (scripts.length > 0) {\n\t\tlocalStorage.setItem(STORAGE_KEYS.CHAT_HISTORY, '[]')\n\t\tlocalStorage.setItem('activeAgentsName', '')\n\t}\n\n\t// 加载聊天历史\n\tconst savedHistory = localStorage.getItem(STORAGE_KEYS.CHAT_HISTORY)\n\tconst historyData = JSON.parse(savedHistory || '[]')\n\tif (agents.length > 0 && !historyData.length) {\n\t\tagents.forEach(item => {\n\t\t\tconst agentsList = [\n\t\t\t\t{\n\t\t\t\t\tchatId: item.id,\n\t\t\t\t\tuser: 'ai',\n\t\t\t\t\ttype: 'text',\n\t\t\t\t\tisShowLike: true,\n\t\t\t\t\tcontent: item?.intro || '我是AI助手,我可以回答你的问题,你可以和我聊天,也可以问我问题。'\n\t\t\t\t}\n\t\t\t]\n\t\t\tcreateNewChat(item.name, agentsList, item.name)\n\t\t})\n\t}\n\tif (watchHistoryData.value.length > 0) {\n\t\tstate.chatHistory = watchHistoryData.value\n\t\t// if (state.chatHistory.length > 0) {\n\t\t// \tstate.activeChat = state.chatHistory[0].id\n\t\t// }\n\t} else if (historyData.length > 0) {\n\t\tstate.chatHistory = historyData\n\t\t// if (state.chatHistory.length > 0) {\n\t\t// \tstate.activeChat = state.chatHistory[0].id\n\t\t// }\n\t}\n\t// else {\n\t// \t// 初始化默认对话\n\t// \tconst newChat = createNewChat('AI基础问答')\n\t// \tstate.activeChat = newChat.id\n\t// }\n}\n\nconst historyList = inject<any>('historyList', [])\nconst setHistoryData = ref(Array.isArray(historyList) ? historyList : typeof historyList === 'object' && historyList ? historyList : [])\nconst computedHistoryData = computed(() => {\n\tif (setHistoryData.value.length) {\n\t\treturn setHistoryData.value\n\t}\n\treturn []\n})\nwatch(\n\tcomputedHistoryData,\n\tnewVal => {\n\t\twatchHistoryData.value = newVal\n\t\tstate.chatHistory = newVal\n\t\tloadFromLocalStorage()\n\t},\n\t{ immediate: true }\n)\nconst historyDetail = inject<ChatMessage[]>('historyDetail', [])\nconst setMessageDetail = ref(Array.isArray(historyDetail) ? historyDetail : typeof historyDetail === 'object' && historyDetail ? historyDetail : [])\nconst computedHistoryDetail = computed(() => {\n\tif (setMessageDetail.value.length) {\n\t\treturn setMessageDetail.value\n\t}\n\treturn []\n})\nwatch(\n\tcomputedHistoryDetail,\n\tnewVal => {\n\t\twatchHistoryDetail.value = newVal\n\t},\n\t{ immediate: true }\n)\nconst messageItem = ref<ChatMessage>({ user: '', type: '', content: '' })\nconst messageIndex = ref<number>(0)\n\n// 修改currentChatMessages计算属性\nconst currentChatMessages = computed(() => {\n\tif (watchHistoryDetail.value.length) {\n\t\treturn watchHistoryDetail.value\n\t}\n\tif (!state.activeChat) return []\n\tif ((!watchHistoryDetail.value.length && !watchHistoryData.value.length) || watchHistoryData.value.length) {\n\t\tconst currentChat = state.chatHistory.find(item => item.id === state.activeChat)\n\t\treturn currentChat?.messages || []\n\t} else {\n\t\treturn watchHistoryDetail.value\n\t}\n})\n\nwatch(\n\t() => {\n\t\tif (typeof historyList === 'object' && historyList !== undefined) {\n\t\t\treturn historyList\n\t\t}\n\t\treturn historyList\n\t},\n\tnewVal => {\n\t\tif (newVal && Array.isArray(newVal) && newVal.length) {\n\t\t\twatchHistoryData.value = newVal\n\t\t\t// loadFromLocalStorage()\n\t\t\tif (!scripts.length) {\n\t\t\t\tstate.chatHistory = newVal\n\t\t\t\tif (state.chatHistory.length > 0 && !state.activeChat) {\n\t\t\t\t\tstate.activeChat = state.chatHistory[0].id\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t{ deep: true }\n)\n\nwatch(\n\t() => {\n\t\tif (typeof historyDetail === 'object' && historyDetail !== undefined) {\n\t\t\treturn historyDetail\n\t\t}\n\t\treturn historyDetail\n\t},\n\tnewVal => {\n\t\tif (newVal && Array.isArray(newVal)) {\n\t\t\twatchHistoryDetail.value = JSON.parse(JSON.stringify(newVal))\n\t\t\tif (chatComponent.value) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tchatComponent.value?.$forceUpdate?.()\n\t\t\t\t}, 0)\n\t\t\t}\n\t\t}\n\t},\n\t{ deep: true, immediate: true }\n)\n\n// 生命周期\nonMounted(() => {\n\tloadFromLocalStorage()\n\t// 初始化事件监听\n\t// initEventListeners()\n})\n\n// 事件监听\n// function initEventListeners() {\n// \tdocument.addEventListener('click', () => {\n// \t\t// 点击空白处关闭所有菜单\n// \t\tObject.keys(state.actionMenuVisible).forEach(key => {\n// \t\t\tstate.actionMenuVisible[key] = false\n// \t\t})\n// \t})\n// }\n\nconst toggleSidebarOut = (item: ChatMessage, index: number) => {\n\tmessageItem.value = item\n\tmessageIndex.value = index\n\tif (state.toggleSidebarFlag) {\n\t\treturn\n\t}\n\tstate.toggleSidebarFlag = true\n\tstate.isSidebarCollapsed = false\n\ttoggleSidebar()\n}\n\n// 侧边栏控制\nconst toggleSidebar = () => {\n\tstate.isSidebarCollapsed = !state.isSidebarCollapsed\n\tsaveToLocalStorage()\n}\n\nconst startNewChat = () => {\n\tlocalStorage.setItem('activeAgentsName', '')\n\tconst robotHistory = localStorage.getItem(STORAGE_KEYS.CHAT_HISTORY) || '[]'\n\tconst robotHistoryData = JSON.parse(robotHistory)\n\tlet messageList: ChatMessage[] = []\n\tlet messageItem: HistoryItem = {} as HistoryItem\n\tlet firstMessageList: ChatMessage[] = []\n\tif (robotHistoryData.length) {\n\t\tmessageItem = robotHistoryData.find((item: HistoryItem) => item.id === state.activeChat) || ({} as HistoryItem)\n\t\tmessageList = messageItem?.messages || []\n\t\tfirstMessageList = robotHistoryData?.[0]?.messages || ([] as ChatMessage[])\n\t}\n\tstate.toggleSidebarFlag = false\n\tif ((watchHistoryData.value.length > 0 && firstMessageList.length > 0 && (watchHistoryDetail.value.length > 0 || currentChatMessages.value.length > 0 || messageList.length > 0)) || (!messageItem?.messages && firstMessageList.length > 0) || !state.clickCreateNum) {\n\t\tconst newChat = createNewChat('新对话' + (state.chatHistory.length + 1))\n\t\tstate.activeChat = newChat.id\n\t\tchange('')\n\t\tstate.clickCreateNum++\n\t\treturn\n\t}\n\tif (state.chatHistory.length > 0 && !state.chatHistory?.[0]?.messages?.length) {\n\t\tstate.activeChat = state.chatHistory[0].id\n\t\tchange('')\n\t\treturn\n\t}\n\tif (!currentChatMessages.value.length && state.chatHistory.length > 0) {\n\t\tstate.activeChat = state.chatHistory?.[0]?.id ?? ''\n\t\tchange('')\n\t\treturn\n\t}\n\tconst newChat = createNewChat('新对话' + (state.chatHistory.length + 1))\n\tstate.activeChat = newChat.id\n\tchange('')\n}\n\nconst change = inject<(id: string) => void>('change', () => {\n\tconsole.warn('未提供change函数')\n})\n\nconst changeChatHistory = (index: number) => {\n\tstate.activeChat = state.chatHistory[index].id\n\tchange(state.chatHistory[index].id)\n}\n\nconst clearChatHistory = () => {\n\tstate.chatHistory = []\n\tstate.activeChat = ''\n\tlocalStorage.setItem(STORAGE_KEYS.CHAT_HISTORY, JSON.stringify([]))\n}\n\nconst selectChat = (id: string, type?: string) => {\n\tstate.activeChat = id\n\tstate.toggleSidebarFlag = false\n\tstate.agentsType = type as string\n\tif (!type) {\n\t\tlocalStorage.setItem('activeAgentsName', '')\n\t}\n\tchange(id)\n\tresetAllMenus()\n}\n\nconst historyRemove = inject<(id: string) => void>('historyRemove', () => {\n\tconsole.warn('未提供remove函数')\n})\n\nconst deleteChat = (id: string) => {\n\tconst index = state.chatHistory.findIndex(item => item.id === id)\n\tif (index === -1) return\n\n\tstate.chatHistory.splice(index, 1)\n\n\tif (state.chatHistory.length > 0) {\n\t\tselectChat(state.chatHistory[0].id)\n\t} else {\n\t\tstate.activeChat = ''\n\t\tstate.mockMessages = []\n\t}\n\thistoryRemove(id)\n\tsaveToLocalStorage()\n}\n\nconst beforeSendMessage = () => {\n\tstate.toggleSidebarFlag = false\n}\n\nconst sendMessage = (messageList: ChatMessage[], type?: string) => {\n\tstate.mockMessages = messageList\n\n\tif (type) {\n\t\treturn\n\t}\n\n\tif (!state.activeChat) {\n\t\tconst newChat = createNewChat('AI基础问答', messageList)\n\t\tnewChat.messages = messageList\n\t\tstate.activeChat = newChat.id\n\t} else {\n\t\tconst currentChat = state.chatHistory.find(item => item.id === state.activeChat)\n\t\tif (currentChat) {\n\t\t\tcurrentChat.messages = messageList\n\t\t\tcurrentChat.time = new Date()\n\t\t}\n\t\tsaveToLocalStorage()\n\t}\n}\n\n// 菜单控制\nconst resetAllMenus = () => {\n\tObject.keys(state.actionMenuVisible).forEach(key => {\n\t\tstate.actionMenuVisible[key] = false\n\t})\n}\n\nconst handleRenameChat = (id: string, newTitle: string) => {\n\tconst item = state.chatHistory.find(item => item.id === id)\n\tif (item) {\n\t\titem.title = newTitle\n\t\titem.time = new Date()\n\t\tsaveToLocalStorage()\n\t}\n}\n\n// 监听聊天历史变化,自动保存\nwatch(\n\t() => state.chatHistory,\n\t() => {\n\t\tsaveToLocalStorage()\n\t},\n\t{ deep: true }\n)\ndefineExpose({\n\tsend: (value: string, fileList?: any[], auto?: boolean, type?: string) => {\n\t\tchatComponent.value?.send(value, fileList, auto, type)\n\t},\n\tcloseExtend: () => {\n\t\tstate.toggleSidebarFlag = false\n\t},\n\tcreate: () => {\n\t\t// startNewChat()\n\t\tconst newChat = createNewChat('新对话' + (state.chatHistory.length + 1))\n\t\tstate.activeChat = newChat.id\n\t\tchange('')\n\t},\n\tretry: (index: number) => {\n\t\tchatComponent.value?.retry(index)\n\t},\n\tupdate: (index: number, message: object) => {\n\t\tchatComponent.value?.update(index, message)\n\t},\n\tchangeChat: (index: number) => {\n\t\tchangeChatHistory(index)\n\t},\n\tclearChat: () => {\n\t\tclearChatHistory()\n\t}\n})\n</script>\n"],"names":["reactive","ref","inject","watch","provide","computed","onMounted","messageItem","newChat","item","_createElementBlock","_createElementVNode","_createBlock","HistorySidebar","TouchChat","_withCtx","_renderSlot","_Fragment","_createCommentVNode","TouchAgent","_createVNode","SiderBarView","_vShow"],"mappings":"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"}
1
+ {"version":3,"file":"TouchHistory.vue2.js","sources":["../../../../../../../packages/components/touchchat/src/AiChat/TouchHistory.vue"],"sourcesContent":["<template>\n\t<div class=\"touchchat\">\n\t\t<div v-if=\"state.isSidebarCollapsed && !isNotHeader\" class=\"touchchat-header\">\n\t\t\t<div class=\"touchchat-showmenu\" @click.stop=\"toggleSidebar\">\n\t\t\t\t<div class=\"touchchat-showmenu-icon\"></div>\n\t\t\t</div>\n\t\t\t<div class=\"touchchat-add-lite\" @click.stop=\"startNewChat\">\n\t\t\t\t<div class=\"touchchat-add-lite-icon\"></div>\n\t\t\t\t<span>新对话</span>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"touchchat-content\">\n\t\t\t<HistorySidebar v-if=\"!isNotHeader && !state.isSidebarCollapsed\" :is-sidebar-collapsed=\"state.isSidebarCollapsed\" :active-chat=\"state.activeChat\" :chat-history=\"state.chatHistory\" @toggle-sidebar=\"toggleSidebar\" @start-new-chat=\"startNewChat\" @select-chat=\"selectChat\" @rename-chat=\"handleRenameChat\" @delete-chat=\"deleteChat\"> </HistorySidebar>\n\t\t\t<TouchChat v-if=\"!iIsAgent\" ref=\"chatComponent\" :key=\"state.activeChat + '-chat'\" :value=\"currentChatMessages\" @send-message=\"sendMessage\" @toggle-sidebar=\"toggleSidebarOut\" @before-send-message=\"beforeSendMessage\">\n\t\t\t\t<template #aimsg=\"{ item, index }\">\n\t\t\t\t\t<slot name=\"aimsg\" :item=\"item\" :index=\"index\" />\n\t\t\t\t</template>\n\t\t\t\t<template #msg=\"{ item, index }\">\n\t\t\t\t\t<slot name=\"msg\" :item=\"item\" :index=\"index\" />\n\t\t\t\t</template>\n\t\t\t\t<template #aiAvatar>\n\t\t\t\t\t<slot name=\"aiAvatar\" />\n\t\t\t\t</template>\n\t\t\t\t<template #userAvatar>\n\t\t\t\t\t<slot name=\"userAvatar\" />\n\t\t\t\t</template>\n\t\t\t\t<template #welcome>\n\t\t\t\t\t<slot name=\"welcome\" />\n\t\t\t\t</template>\n\t\t\t\t<template #edit>\n\t\t\t\t\t<slot name=\"edit\" />\n\t\t\t\t</template>\n\t\t\t\t<template #shortcut>\n\t\t\t\t\t<slot name=\"shortcut\" />\n\t\t\t\t</template>\n\t\t\t\t<template #top>\n\t\t\t\t\t<slot name=\"top\" />\n\t\t\t\t</template>\n\t\t\t\t<template #fn=\"{ item, index }\">\n\t\t\t\t\t<slot name=\"fn\" :item=\"item\" :index=\"index\" />\n\t\t\t\t</template>\n\t\t\t\t<template #extendsFn=\"{ item, index }\">\n\t\t\t\t\t<slot name=\"extendsFn\" :item=\"item\" :index=\"index\" />\n\t\t\t\t</template>\n\t\t\t\t<template #editTop>\n\t\t\t\t\t<slot name=\"editTop\" />\n\t\t\t\t</template>\n\t\t\t\t<template #editFn>\n\t\t\t\t\t<slot name=\"editFn\"></slot>\n\t\t\t\t</template>\n\t\t\t</TouchChat>\n\t\t\t<!-- :key=\"state.activeChat\" -->\n\t\t\t<TouchAgent v-else ref=\"chatComponent\" :key=\"state.activeChat + '-agent'\" :value=\"currentChatMessages\" @send-message=\"sendMessage\" @toggle-sidebar=\"toggleSidebarOut\" @before-send-message=\"beforeSendMessage\">\n\t\t\t\t<template #aimsg=\"{ item, index }\">\n\t\t\t\t\t<slot name=\"aimsg\" :item=\"item\" :index=\"index\" />\n\t\t\t\t</template>\n\t\t\t\t<template #msg=\"{ item, index }\">\n\t\t\t\t\t<slot name=\"msg\" :item=\"item\" :index=\"index\" />\n\t\t\t\t</template>\n\t\t\t\t<template #aiAvatar>\n\t\t\t\t\t<slot name=\"aiAvatar\" />\n\t\t\t\t</template>\n\t\t\t\t<template #userAvatar>\n\t\t\t\t\t<slot name=\"userAvatar\" />\n\t\t\t\t</template>\n\t\t\t\t<template #welcome>\n\t\t\t\t\t<slot name=\"welcome\" />\n\t\t\t\t</template>\n\t\t\t\t<template #edit>\n\t\t\t\t\t<slot name=\"edit\" />\n\t\t\t\t</template>\n\t\t\t\t<template #shortcut>\n\t\t\t\t\t<slot name=\"shortcut\" />\n\t\t\t\t</template>\n\t\t\t\t<template #top>\n\t\t\t\t\t<slot name=\"top\" />\n\t\t\t\t</template>\n\t\t\t\t<template #fn=\"{ item, index }\">\n\t\t\t\t\t<slot name=\"fn\" :item=\"item\" :index=\"index\" />\n\t\t\t\t</template>\n\t\t\t\t<template #extendsFn=\"{ item, index }\">\n\t\t\t\t\t<slot name=\"extendsFn\" :item=\"item\" :index=\"index\" />\n\t\t\t\t</template>\n\t\t\t</TouchAgent>\n\t\t\t<SiderBarView v-show=\"state.toggleSidebarFlag\" :flag=\"state.isSidebarCollapsed\" :item=\"messageItem\" :index=\"messageIndex\">\n\t\t\t\t<template #extend=\"{ item: slotMessageItem, index: slotMessageIndex }\">\n\t\t\t\t\t<slot name=\"extend\" :item=\"slotMessageItem\" :index=\"slotMessageIndex\" />\n\t\t\t\t</template>\n\t\t\t</SiderBarView>\n\t\t</div>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { onMounted, computed, watch, reactive, inject, ref, provide, Ref } from 'vue'\nimport TouchChat from './TouchChat.vue'\nimport TouchAgent from './TouchAgent.vue'\nimport HistorySidebar from './HistorySidebar.vue'\nimport SiderBarView from './SiderBarView.vue'\nimport type { ChatMessage } from './Chat/types'\nimport type { AgentConfig, SubAgent } from '../types/a2a'\n\ninterface HistoryItem {\n\tid: string\n\ttitle: string\n\ttime: Date\n\ttype: string // 用于区分不同类型的对话\n\tmessages?: ChatMessage[]\n}\n\ninterface Agent {\n\tid: string\n\tname: string\n\tintro: string\n}\n\ntype ResultArray = AgentConfig[] | SubAgent[]\n\ninterface MultiAgentInfo {\n\tlist: ResultArray\n\turl?: string\n\theaders?: object\n}\n\n// 状态管理\nconst state = reactive({\n\tactiveChat: '',\n\tchatHistory: [] as HistoryItem[],\n\tisSidebarCollapsed: false,\n\tactionMenuVisible: {} as Record<string, boolean>,\n\tmockMessages: [] as ChatMessage[],\n\ttoggleSidebarFlag: false,\n\tagentsType: '',\n\tclickCreateNum: 0\n})\n\nconst watchHistoryData = ref<HistoryItem[]>([])\nconst watchHistoryDetail = ref<ChatMessage[]>([])\nconst chatComponent = ref<InstanceType<typeof TouchChat>>()\n\nconst layout = inject<string>('layout', 'side, think, upload, chain')\nconst isNotHeader = !layout.includes('side')\nconst scripts = inject<Ref<any[]>>('scripts', ref([]))\nconst agents = inject<Agent[]>('agents', [])\nconst agentsInfo = ref<Agent>()\nconst agentInfo = inject<Ref<MultiAgentInfo>>('agentInfo', ref({ list: [], url: '', headers: {} }))\nconst iIsAgent = ref(false)\nwatch(\n\tagentInfo,\n\tnewVal => {\n\t\tiIsAgent.value = newVal.list.length > 0\n\t},\n\t{ immediate: true, deep: true }\n)\n// 提供更新函数给后代组件\nconst updateSharedData = (item: Agent) => {\n\tagentsInfo.value = item\n\tif (chatComponent.value) {\n\t\tchatComponent.value?.handleAgentSelect?.(item)\n\t}\n}\nprovide('updateSharedData', updateSharedData)\n\n// 本地存储相关\nconst STORAGE_KEYS = {\n\tCHAT_HISTORY: scripts.value.length === 0 ? 'chatHistory' : 'robotHistory',\n\tSIDEBAR_STATE: 'sidebarCollapsed'\n}\nconst saveToLocalStorage = () => {\n\tlocalStorage.setItem(STORAGE_KEYS.CHAT_HISTORY, JSON.stringify(state.chatHistory))\n\tlocalStorage.setItem(STORAGE_KEYS.SIDEBAR_STATE, JSON.stringify(state.isSidebarCollapsed))\n}\n// 聊天管理\nconst createNewChat = (title: string = '新对话', messageList: ChatMessage[] = [], type?: string) => {\n\tlet agentsId = ''\n\tif (agents.length > 0) {\n\t\tagentsId = agents.find(item => item.name === title)?.id || ''\n\t}\n\tconst newChat: HistoryItem = {\n\t\t// id: Date.now().toString(),\n\t\tid: agentsId ? agentsId : (Math.floor(Math.random() * 89999999) + 10000000).toString(),\n\t\ttitle,\n\t\ttime: new Date(),\n\t\tmessages: messageList,\n\t\ttype: type ? type : ''\n\t}\n\n\tstate.chatHistory.unshift(newChat)\n\tsaveToLocalStorage()\n\treturn newChat\n}\n\nconst loadFromLocalStorage = () => {\n\t// 加载折叠状态\n\tconst savedCollapseState = localStorage.getItem(STORAGE_KEYS.SIDEBAR_STATE)\n\tif (savedCollapseState) {\n\t\tstate.isSidebarCollapsed = JSON.parse(savedCollapseState)\n\t}\n\n\tif (scripts.value.length > 0) {\n\t\tlocalStorage.setItem(STORAGE_KEYS.CHAT_HISTORY, '[]')\n\t\tlocalStorage.setItem('activeAgentsName', '')\n\t}\n\n\t// 加载聊天历史\n\tconst savedHistory = localStorage.getItem(STORAGE_KEYS.CHAT_HISTORY)\n\tconst historyData = JSON.parse(savedHistory || '[]')\n\tif (agents.length > 0 && !historyData.length) {\n\t\tagents.forEach(item => {\n\t\t\tconst agentsList = [\n\t\t\t\t{\n\t\t\t\t\tchatId: item.id,\n\t\t\t\t\tuser: 'ai',\n\t\t\t\t\ttype: 'text',\n\t\t\t\t\tisShowLike: true,\n\t\t\t\t\tcontent: item?.intro || '我是AI助手,我可以回答你的问题,你可以和我聊天,也可以问我问题。'\n\t\t\t\t}\n\t\t\t]\n\t\t\tcreateNewChat(item.name, agentsList, item.name)\n\t\t})\n\t}\n\tif (watchHistoryData.value.length > 0) {\n\t\tstate.chatHistory = watchHistoryData.value\n\t\t// if (state.chatHistory.length > 0) {\n\t\t// \tstate.activeChat = state.chatHistory[0].id\n\t\t// }\n\t} else if (historyData.length > 0) {\n\t\tstate.chatHistory = historyData\n\t\t// if (state.chatHistory.length > 0) {\n\t\t// \tstate.activeChat = state.chatHistory[0].id\n\t\t// }\n\t}\n\t// else {\n\t// \t// 初始化默认对话\n\t// \tconst newChat = createNewChat('AI基础问答')\n\t// \tstate.activeChat = newChat.id\n\t// }\n\t// 首次进入时若已有会话但未选中,需选中一个会话,避免首条消息发送时 activeChat 从空变为有值\n\t// 触发 TouchChat 的 :key 变化导致整组件重建,剧本里连续多条 AI 回复(如 222→333)被中断。\n\t// createNewChat 使用 unshift,数组顺序与 agents 遍历顺序相反,故有多智能体时默认选 agents[0] 对应会话,而不是 chatHistory[0]。\n\tif (!state.activeChat && state.chatHistory.length > 0) {\n\t\tif (agents.length > 0) {\n\t\t\tconst firstId = agents[0].id\n\t\t\tstate.activeChat = state.chatHistory.find(h => h.id === firstId)?.id ?? state.chatHistory[state.chatHistory.length - 1].id\n\t\t} else {\n\t\t\tstate.activeChat = state.chatHistory[0].id\n\t\t}\n\t}\n\t// 仅有剧本、未传 agents、且没有任何会话:先建一条空会话并选中。\n\t// 否则首条消息会在 sendMessage 里首次给 activeChat 赋值,TouchChat 的 :key 变化导致整组件重建,连续多条 AI 剧本会丢后半段。\n\tif (scripts.value.length > 0 && agents.length === 0 && state.chatHistory.length === 0) {\n\t\tconst seeded = createNewChat('对话')\n\t\tstate.activeChat = seeded.id\n\t}\n}\n\nconst historyList = inject<any>('historyList', [])\nconst setHistoryData = ref(Array.isArray(historyList) ? historyList : typeof historyList === 'object' && historyList ? historyList : [])\nconst computedHistoryData = computed(() => {\n\tif (setHistoryData.value.length) {\n\t\treturn setHistoryData.value\n\t}\n\treturn []\n})\nwatch(\n\tcomputedHistoryData,\n\tnewVal => {\n\t\twatchHistoryData.value = newVal\n\t\tstate.chatHistory = newVal\n\t\tloadFromLocalStorage()\n\t},\n\t{ immediate: true }\n)\nconst historyDetail = inject<ChatMessage[]>('historyDetail', [])\nconst setMessageDetail = ref(Array.isArray(historyDetail) ? historyDetail : typeof historyDetail === 'object' && historyDetail ? historyDetail : [])\nconst computedHistoryDetail = computed(() => {\n\tif (setMessageDetail.value.length) {\n\t\treturn setMessageDetail.value\n\t}\n\treturn []\n})\nwatch(\n\tcomputedHistoryDetail,\n\tnewVal => {\n\t\twatchHistoryDetail.value = newVal\n\t},\n\t{ immediate: true }\n)\nconst messageItem = ref<ChatMessage>({ user: 'u', type: '', content: '' })\nconst messageIndex = ref<number>(0)\n\n// 修改currentChatMessages计算属性\nconst currentChatMessages = computed(() => {\n\tif (watchHistoryDetail.value.length) {\n\t\treturn watchHistoryDetail.value\n\t}\n\tif (!state.activeChat) return []\n\tif ((!watchHistoryDetail.value.length && !watchHistoryData.value.length) || watchHistoryData.value.length) {\n\t\tconst currentChat = state.chatHistory.find(item => item.id === state.activeChat)\n\t\treturn currentChat?.messages || []\n\t} else {\n\t\treturn watchHistoryDetail.value\n\t}\n})\n\nwatch(\n\t() => {\n\t\tif (typeof historyList === 'object' && historyList !== undefined) {\n\t\t\treturn historyList\n\t\t}\n\t\treturn historyList\n\t},\n\tnewVal => {\n\t\tif (newVal && Array.isArray(newVal) && newVal.length) {\n\t\t\twatchHistoryData.value = newVal\n\t\t\t// loadFromLocalStorage()\n\t\t\tif (!scripts.value.length) {\n\t\t\t\tstate.chatHistory = newVal\n\t\t\t\tif (state.chatHistory.length > 0 && !state.activeChat) {\n\t\t\t\t\tstate.activeChat = state.chatHistory[0].id\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t{ deep: true }\n)\n\nwatch(\n\t() => {\n\t\tif (typeof historyDetail === 'object' && historyDetail !== undefined) {\n\t\t\treturn historyDetail\n\t\t}\n\t\treturn historyDetail\n\t},\n\tnewVal => {\n\t\tif (newVal && Array.isArray(newVal)) {\n\t\t\twatchHistoryDetail.value = JSON.parse(JSON.stringify(newVal))\n\t\t\tif (chatComponent.value) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tchatComponent.value?.$forceUpdate?.()\n\t\t\t\t}, 0)\n\t\t\t}\n\t\t}\n\t},\n\t{ deep: true, immediate: true }\n)\n\n// 生命周期\nonMounted(() => {\n\tloadFromLocalStorage()\n\t// 初始化事件监听\n\t// initEventListeners()\n})\n\n// 事件监听\n// function initEventListeners() {\n// \tdocument.addEventListener('click', () => {\n// \t\t// 点击空白处关闭所有菜单\n// \t\tObject.keys(state.actionMenuVisible).forEach(key => {\n// \t\t\tstate.actionMenuVisible[key] = false\n// \t\t})\n// \t})\n// }\n\nconst toggleSidebarOut = (item: ChatMessage, index: number) => {\n\tmessageItem.value = item\n\tmessageIndex.value = index\n\tif (state.toggleSidebarFlag) {\n\t\treturn\n\t}\n\tstate.toggleSidebarFlag = true\n\tstate.isSidebarCollapsed = false\n\ttoggleSidebar()\n}\n\n// 侧边栏控制\nconst toggleSidebar = () => {\n\tstate.isSidebarCollapsed = !state.isSidebarCollapsed\n\tsaveToLocalStorage()\n}\n\nconst startNewChat = () => {\n\tlocalStorage.setItem('activeAgentsName', '')\n\tconst robotHistory = localStorage.getItem(STORAGE_KEYS.CHAT_HISTORY) || '[]'\n\tconst robotHistoryData = JSON.parse(robotHistory)\n\tlet messageList: ChatMessage[] = []\n\tlet messageItem: HistoryItem = {} as HistoryItem\n\tlet firstMessageList: ChatMessage[] = []\n\tif (robotHistoryData.length) {\n\t\tmessageItem = robotHistoryData.find((item: HistoryItem) => item.id === state.activeChat) || ({} as HistoryItem)\n\t\tmessageList = messageItem?.messages || []\n\t\tfirstMessageList = robotHistoryData?.[0]?.messages || ([] as ChatMessage[])\n\t}\n\tstate.toggleSidebarFlag = false\n\tif ((watchHistoryData.value.length > 0 && firstMessageList.length > 0 && (watchHistoryDetail.value.length > 0 || currentChatMessages.value.length > 0 || messageList.length > 0)) || (!messageItem?.messages && firstMessageList.length > 0) || !state.clickCreateNum) {\n\t\tconst newChat = createNewChat('新对话' + (state.chatHistory.length + 1))\n\t\tstate.activeChat = newChat.id\n\t\tchange('')\n\t\tstate.clickCreateNum++\n\t\treturn\n\t}\n\tif (state.chatHistory.length > 0 && !state.chatHistory?.[0]?.messages?.length) {\n\t\tstate.activeChat = state.chatHistory[0].id\n\t\tchange('')\n\t\treturn\n\t}\n\tif (!currentChatMessages.value.length && state.chatHistory.length > 0) {\n\t\tstate.activeChat = state.chatHistory?.[0]?.id ?? ''\n\t\tchange('')\n\t\treturn\n\t}\n\tconst newChat = createNewChat('新对话' + (state.chatHistory.length + 1))\n\tstate.activeChat = newChat.id\n\tchange('')\n}\n\nconst change = inject<(id: string) => void>('change', () => {\n\tconsole.warn('未提供change函数')\n})\n\nconst changeChatHistory = (index: number) => {\n\tstate.activeChat = state.chatHistory[index].id\n\tchange(state.chatHistory[index].id)\n}\n\nconst clearChatHistory = () => {\n\tstate.chatHistory = []\n\tstate.activeChat = ''\n\tlocalStorage.setItem(STORAGE_KEYS.CHAT_HISTORY, JSON.stringify([]))\n}\n\nconst selectChat = (id: string, type?: string) => {\n\tstate.activeChat = id\n\tstate.toggleSidebarFlag = false\n\tstate.agentsType = type as string\n\tif (!type) {\n\t\tlocalStorage.setItem('activeAgentsName', '')\n\t}\n\tchange(id)\n\tresetAllMenus()\n}\n\nconst historyRemove = inject<(id: string) => void>('historyRemove', () => {\n\tconsole.warn('未提供remove函数')\n})\n\nconst deleteChat = (id: string) => {\n\tconst index = state.chatHistory.findIndex(item => item.id === id)\n\tif (index === -1) return\n\n\tstate.chatHistory.splice(index, 1)\n\n\tif (state.chatHistory.length > 0) {\n\t\tselectChat(state.chatHistory[0].id)\n\t} else {\n\t\tstate.activeChat = ''\n\t\tstate.mockMessages = []\n\t}\n\thistoryRemove(id)\n\tsaveToLocalStorage()\n}\n\nconst beforeSendMessage = () => {\n\tstate.toggleSidebarFlag = false\n}\n\nconst sendMessage = (messageList: ChatMessage[], type?: string) => {\n\tstate.mockMessages = messageList\n\n\tif (type) {\n\t\treturn\n\t}\n\n\tif (!state.activeChat) {\n\t\tconst newChat = createNewChat('AI基础问答', messageList)\n\t\tnewChat.messages = messageList\n\t\tstate.activeChat = newChat.id\n\t} else {\n\t\tconst currentChat = state.chatHistory.find(item => item.id === state.activeChat)\n\t\tif (currentChat) {\n\t\t\tcurrentChat.messages = messageList\n\t\t\tcurrentChat.time = new Date()\n\t\t}\n\t\tsaveToLocalStorage()\n\t}\n}\n\n// 菜单控制\nconst resetAllMenus = () => {\n\tObject.keys(state.actionMenuVisible).forEach(key => {\n\t\tstate.actionMenuVisible[key] = false\n\t})\n}\n\nconst handleRenameChat = (id: string, newTitle: string) => {\n\tconst item = state.chatHistory.find(item => item.id === id)\n\tif (item) {\n\t\titem.title = newTitle\n\t\titem.time = new Date()\n\t\tsaveToLocalStorage()\n\t}\n}\n\n// 监听聊天历史变化,自动保存\nwatch(\n\t() => state.chatHistory,\n\t() => {\n\t\tsaveToLocalStorage()\n\t},\n\t{ deep: true }\n)\ndefineExpose({\n\tsend: (value: string, fileList?: any[], auto?: boolean, type?: string) => {\n\t\tchatComponent.value?.send(value, fileList, auto, type)\n\t},\n\tcloseExtend: () => {\n\t\tstate.toggleSidebarFlag = false\n\t},\n\tcreate: () => {\n\t\t// startNewChat()\n\t\tconst newChat = createNewChat('新对话' + (state.chatHistory.length + 1))\n\t\tstate.activeChat = newChat.id\n\t\tchange('')\n\t},\n\tretry: (index: number) => {\n\t\tchatComponent.value?.retry(index)\n\t},\n\tupdate: (index: number, message: object) => {\n\t\tchatComponent.value?.update(index, message)\n\t},\n\tchangeChat: (index: number) => {\n\t\tchangeChatHistory(index)\n\t},\n\tclearChat: () => {\n\t\tclearChatHistory()\n\t}\n})\n</script>\n"],"names":["reactive","ref","inject","watch","provide","computed","onMounted","messageItem","newChat","item","_createElementBlock","_createElementVNode","_createBlock","HistorySidebar","TouchChat","_withCtx","_renderSlot","_Fragment","_createCommentVNode","TouchAgent","_createVNode","SiderBarView","_vShow"],"mappings":"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"}