@touchvue/chat 1.0.0-beta.45 → 1.0.0-beta.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/package.json.mjs +1 -1
- package/es/packages/components/touchchat/src/AiChat/AiMessage.vue2.mjs +11 -2
- package/es/packages/components/touchchat/src/AiChat/AiMessage.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/Chat/useSSE.mjs +2 -1
- package/es/packages/components/touchchat/src/AiChat/Chat/useSSE.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs +4 -0
- package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/UserMessage.vue2.mjs +5 -3
- package/es/packages/components/touchchat/src/AiChat/UserMessage.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/index.vue2.mjs +14 -11
- package/es/packages/components/touchchat/src/index.vue2.mjs.map +1 -1
- package/lib/package.json.js +1 -1
- package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js +11 -2
- package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/Chat/useSSE.js +2 -1
- package/lib/packages/components/touchchat/src/AiChat/Chat/useSSE.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js +4 -0
- package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue2.js +4 -2
- package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/index.vue2.js +14 -11
- package/lib/packages/components/touchchat/src/index.vue2.js.map +1 -1
- package/package.json +1 -1
|
@@ -33,10 +33,11 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
33
33
|
a2uiProps: { default: () => ({}) },
|
|
34
34
|
messageActions: { default: () => {
|
|
35
35
|
return {
|
|
36
|
-
user: ["edit", "delete", "
|
|
37
|
-
ai: ["retry", "like", "dislike", "
|
|
36
|
+
user: ["edit", "delete", "copy"],
|
|
37
|
+
ai: ["retry", "like", "dislike", "copy"]
|
|
38
38
|
};
|
|
39
|
-
} }
|
|
39
|
+
} },
|
|
40
|
+
hasRead: { type: Boolean, default: false }
|
|
40
41
|
},
|
|
41
42
|
emits: ["send", "afterSend", "like", "dislike", "side-bottom", "change", "historyRemove", "remove", "bottom", "stop", "modelChange", "openSideBar", "share", "withDraw"],
|
|
42
43
|
setup(__props, { expose: __expose, emit: __emit }) {
|
|
@@ -55,6 +56,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
55
56
|
provide("allowedTypes", props.allowedTypes);
|
|
56
57
|
provide("a2uiProps", props.a2uiProps);
|
|
57
58
|
provide("messageActions", props.messageActions);
|
|
59
|
+
provide("hasRead", props.hasRead);
|
|
58
60
|
const historyListComputed = computed(() => props.historyList);
|
|
59
61
|
const providedHistoryList = ref(props.historyList);
|
|
60
62
|
watch(
|
|
@@ -105,15 +107,12 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
105
107
|
emits("send", value, fileList);
|
|
106
108
|
});
|
|
107
109
|
provide("sideBottom", () => {
|
|
108
|
-
console.log("sideBottom === \u89E6\u5E95\u4E8B\u4EF6");
|
|
109
110
|
emits("side-bottom");
|
|
110
111
|
});
|
|
111
112
|
provide("change", (id) => {
|
|
112
|
-
console.log("change === \u6FC0\u6D3B\u4E8B\u4EF6", id);
|
|
113
113
|
emits("change", id);
|
|
114
114
|
});
|
|
115
115
|
provide("historyRemove", (id) => {
|
|
116
|
-
console.log("historyRemove === \u5220\u9664\u4E8B\u4EF6", id);
|
|
117
116
|
emits("historyRemove", id);
|
|
118
117
|
});
|
|
119
118
|
provide("openSideBar", (item, index) => {
|
|
@@ -129,19 +128,15 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
129
128
|
emits("afterSend", content);
|
|
130
129
|
});
|
|
131
130
|
provide("remove", (item, index) => {
|
|
132
|
-
console.log("remove === \u8BE6\u60C5\u5220\u9664", item, index);
|
|
133
131
|
emits("remove", item, index);
|
|
134
132
|
});
|
|
135
133
|
provide("bottom", () => {
|
|
136
|
-
console.log("bottom === \u8BE6\u60C5\u89E6\u5E95");
|
|
137
134
|
emits("bottom");
|
|
138
135
|
});
|
|
139
136
|
provide("stop", (item, index) => {
|
|
140
|
-
console.log("stop === \u7528\u6237\u7EC8\u6B62\u4E8B\u4EF6");
|
|
141
137
|
emits("stop", item, index);
|
|
142
138
|
});
|
|
143
139
|
provide("modelChange", (item, index) => {
|
|
144
|
-
console.log("modelChange === \u6A21\u578B\u5207\u6362\u4E8B\u4EF6", item, index);
|
|
145
140
|
emits("modelChange", item, index);
|
|
146
141
|
});
|
|
147
142
|
const deepSeekRef = ref(null);
|
|
@@ -175,6 +170,13 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
175
170
|
height
|
|
176
171
|
};
|
|
177
172
|
});
|
|
173
|
+
const updateInputMethod = ref(null);
|
|
174
|
+
provide("setInput", updateInputMethod);
|
|
175
|
+
const setInput = (newValue) => {
|
|
176
|
+
if (updateInputMethod.value) {
|
|
177
|
+
updateInputMethod.value(newValue);
|
|
178
|
+
}
|
|
179
|
+
};
|
|
178
180
|
__expose({
|
|
179
181
|
send: (value, fileList, auto, type) => {
|
|
180
182
|
var _a;
|
|
@@ -203,7 +205,8 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
203
205
|
clearChat: () => {
|
|
204
206
|
var _a;
|
|
205
207
|
(_a = deepSeekRef.value) == null ? void 0 : _a.clearChat();
|
|
206
|
-
}
|
|
208
|
+
},
|
|
209
|
+
setInput
|
|
207
210
|
});
|
|
208
211
|
return (_ctx, _cache) => {
|
|
209
212
|
return openBlock(), createElementBlock(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.vue2.mjs","sources":["../../../../../../packages/components/touchchat/src/index.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({ name: 'Touchchat' });\n</script>\n<template>\n\t<!-- <div>1.0.0-beta.2026032301</div> -->\n\t<DeepSeek ref=\"deepSeekRef\" :style=\"elementStyle\" :class=\"elementClass\">\n\t\t<!-- msg -->\n\t\t<template #aimsg=\"{ item, index }\">\n\t\t\t<slot name=\"aimsg\" :item=\"item\" :index=\"index\" />\n\t\t</template>\n\t\t<template #msg=\"{ item, index }\">\n\t\t\t<slot name=\"msg\" :item=\"item\" :index=\"index\" />\n\t\t</template>\n\t\t<template #aiAvatar>\n\t\t\t<slot name=\"aiAvatar\" />\n\t\t</template>\n\t\t<template #userAvatar>\n\t\t\t<slot name=\"userAvatar\" />\n\t\t</template>\n\t\t<template #welcome>\n\t\t\t<slot name=\"welcome\" />\n\t\t</template>\n\t\t<!-- edit -->\n\t\t<template #edit>\n\t\t\t<slot name=\"edit\" />\n\t\t</template>\n\t\t<!-- top -->\n\t\t<template #top>\n\t\t\t<slot name=\"top\" />\n\t\t</template>\n\t\t<template #shortcut>\n\t\t\t<slot name=\"shortcut\" />\n\t\t</template>\n\t\t<!-- extend -->\n\t\t<template #extend=\"{ item, index }\">\n\t\t\t<slot name=\"extend\" :item=\"item\" :index=\"index\" />\n\t\t</template>\n\t\t<!-- fn -->\n\t\t<template #fn=\"{ item, index }\">\n\t\t\t<slot name=\"fn\" :item=\"item\" :index=\"index\" />\n\t\t</template>\n\t\t<template #editTop>\n\t\t\t<slot name=\"editTop\" />\n\t\t</template>\n\t\t<template #editFn>\n\t\t\t<slot name=\"editFn\" />\n\t\t</template>\n\t\t<template #editSubmitRight>\n\t\t\t<slot name=\"editSubmitRight\"></slot>\n\t\t</template>\n\t\t<template #editSubmitLeft>\n\t\t\t<slot name=\"editSubmitLeft\"></slot>\n\t\t</template>\n\t\t<template #extendsFn=\"{ item, index }\">\n\t\t\t<slot name=\"extendsFn\" :item=\"item\" :index=\"index\" />\n\t\t</template>\n\t</DeepSeek>\n</template>\n<script setup lang=\"ts\">\nimport { ChatMessage, ChatMsgList, MessageActions, ModuleItem } from './AiChat/Chat/types'\nimport type { AgentConfig, SubAgent } from '../src/types/a2a'\nimport DeepSeek from './AiChat/TouchHistory.vue'\nimport { provide, ref, computed, watch } from 'vue'\n\n\n\nconst emits = defineEmits<{\n\t(e: 'send', value: string, fileList?: any[]): void\n\t(e: 'afterSend', result: any): void\n\t(e: 'like', index: number, isLike: boolean): void\n\t(e: 'dislike', index: number, isDislike: boolean): void\n\t(e: 'side-bottom'): void\n\t(e: 'change', id: string): void\n\t(e: 'historyRemove', id: string): void\n\t(e: 'remove', item: ChatMessage, index: number): void\n\t(e: 'bottom'): void\n\t(e: 'stop', item: ChatMessage, index: number): void\n\t(e: 'modelChange', item: ModuleItem, index: number): void\n\t(e: 'openSideBar', item: ChatMessage & ChatMsgList, index: number): void\n\t(e: 'share', item: ChatMessage & ChatMsgList, index: number): void\n\t(e: 'withDraw', item: ChatMessage & ChatMsgList, index: number): void\n}>()\n\nconst sendVal = ref('')\n\ninterface ScriptItem {\n\tid?: string\n\tname: string\n\tsubTitle?: string\n\tcontent: Array<{\n\t\tuser: string\n\t\tdata?: string\n\t\talias?: string[]\n\t\ttype?: string\n\t}>\n}\n\ninterface HistoryItem {\n\tid?: string\n\ttime?: string\n\ttitle?: string\n}\n\ninterface MessageItem {\n\tchatId: string\n\tuser: string\n\ttype: string\n\tcontent: string\n\t[props: string]: any\n}\n\n// interface ModuleItem {\n// \tname: string\n// \tconfig: {\n// \t\taction: string\n// \t\theaders: () => object\n// \t\tbody: () => object\n// \t\trespoKey: () => object\n// \t}\n// }\ntype Modules = (string | ModuleItem)[]\ntype ResultArray = AgentConfig[] | SubAgent[]\ninterface MultiAgentInfo {\n\tlist: ResultArray\n\turl?: string\n\t// token?: string\n\theaders?: object\n}\n\nconst props = withDefaults(\n\tdefineProps<{\n\t\tmode?: string\n\t\tscripts?: ScriptItem[]\n\t\twidth?: number | string\n\t\theight?: number | string\n\t\tcomponents?: { [key: string]: any } // components\n\t\tavatar?: boolean // avatar\n\t\tplaceholder?: string\n\t\tunmatchText?: string // unmatchText\n\t\ttitle?: string\n\t\tlayout?: string // layout=\"side, think, upload, chain,realtime\"\n\t\tbeforeSend?: () => { result: boolean; componentName?: string }\n\t\thistoryList?: HistoryItem[] // historyList\n\t\thistoryDetail?: MessageItem[] // historyDetail\n\t\tagents?: {\n\t\t\tid: string\n\t\t\tname: string\n\t\t\tintro: string\n\t\t}[] // agents\n\t\tmodules?: Modules // modules\n\t\tspeed?: number // speed\n\t\tallowedTypes?: string[] // allowedTypes\n\t\t// agentConfigList?: ResultArray // agentConfigList 智能体配置列表\n\t\t// multiAgentHost?: string // multiAgentHost 多智能体主机地址\n\t\t// multiAgentToken?: string // multiAgentToken 多智能体认证令牌\n\t\tagentInfo?: MultiAgentInfo // agentInfo 多智能体信息\n\t\ta2uiProps?: {\n\t\t\t[key: string]: any\n\t\t}\n\t\tmessageActions?: MessageActions\n\t}>(),\n\t{\n\t\tmode: '',\n\t\tscripts: () => [],\n\t\twidth: '',\n\t\theight: '',\n\t\tcomponents: () => ({}),\n\t\tavatar: true,\n\t\tplaceholder: 'hi,我是touchchat,快来和我聊天吧~',\n\t\tunmatchText: '您的消息未匹配到任何内容',\n\t\ttitle: 'TouchChat',\n\t\tlayout: 'side, clear, think, upload, screen, voice,realtime', //chain 思考链\n\t\t// side 侧边栏(历史记录),think 深度思考,upload 上传文件,chain 思考链\n\t\tbeforeSend: () => ({ result: true, componentName: '' }),\n\t\thistoryList: () => [],\n\t\thistoryDetail: () => [],\n\t\tagents: () => [],\n\t\tmodules: () => [],\n\t\tspeed: 10,\n\t\tallowedTypes: () => [],\n\t\tagentInfo: () => ({\n\t\t\tlist: [], // list 智能体列表 =1 单智能体 >1 多智能体\n\t\t\turl: '', // url 多智能体主机地址 单智能体为空 多智能体必传\n\t\t\theaders: {} // 多智能体请求头信息\n\t\t}),\n\t\ta2uiProps: () => ({}),\n\t\tmessageActions: () => {\n\t\t\treturn {\n\t\t\t\tuser: ['edit', 'delete', 'withDraw', 'copy'],\n\t\t\t\tai: ['retry', 'like', 'dislike', 'share', 'copy', 'quote']\n\t\t\t}\n\t\t}\n\t}\n)\n\nprovide('components', props.components)\nprovide('avatar', props.avatar)\nprovide('placeholder', props.placeholder)\nprovide('unmatchText', props.unmatchText)\nprovide('title', props.title)\nprovide('layout', props.layout)\nprovide('beforeSend', props.beforeSend)\nprovide('scripts', ref(props.scripts || []))\nprovide('speed', props.speed)\nprovide('allowedTypes', props.allowedTypes)\nprovide('a2uiProps', props.a2uiProps)\nprovide('messageActions', props.messageActions)\nconst historyListComputed = computed(() => props.historyList)\nconst providedHistoryList = ref(props.historyList)\nwatch(\n\thistoryListComputed,\n\tnewVal => {\n\t\tprovidedHistoryList.value = newVal\n\t},\n\t{ immediate: true }\n)\nprovide('historyList', providedHistoryList)\nconst historyDetailComputed = computed(() => props.historyDetail)\nconst providedHistoryDetail = ref(props.historyDetail)\nwatch(\n\thistoryDetailComputed,\n\tnewVal => {\n\t\tprovidedHistoryDetail.value = newVal\n\t},\n\t{ immediate: true }\n)\nprovide('historyDetail', providedHistoryDetail)\nprovide('agents', props.agents)\nconst iModules = ref(props.modules)\nwatch(\n\t() => props.modules,\n\tnewVal => {\n\t\tiModules.value = newVal\n\t\t// console.log('modules === index.vue === 191', newVal)\n\t},\n\t{ immediate: true }\n)\nprovide('modules', iModules)\n\nconst iMultiAgentInfo = ref(props.agentInfo)\nwatch(\n\t() => props.agentInfo,\n\tnewVal => {\n\t\tiMultiAgentInfo.value = newVal\n\t},\n\t{ immediate: true, deep: true }\n)\nprovide('agentInfo', iMultiAgentInfo)\n\n// 新增:提供处理点赞事件的函数\nprovide('like', (index: number, isLike: boolean) => {\n\t// 这里可以实现具体的点赞逻辑\n\temits('like', index, isLike) // like\n\t// 可以添加实际的业务逻辑,如调用API等\n})\n\n// 新增:提供处理点赞事件的函数 dislike\nprovide('dislike', (index: number, isUnlike: boolean) => {\n\t// 这里可以实现具体的点赞逻辑\n\temits('dislike', index, isUnlike) // dislike\n\t// 可以添加实际的业务逻辑,如调用API等\n})\n\nprovide('send', (value: string, fileList?: any[]) => {\n\t// send\n\t// 这里可以实现具体的点赞逻辑\n\tsendVal.value = value\n\temits('send', value, fileList)\n\t// 可以添加实际的业务逻辑,如调用API等\n})\n\nprovide('sideBottom', () => {\n\tconsole.log('sideBottom === 触底事件') // bottom\n\temits('side-bottom')\n})\n\nprovide('change', (id: string) => {\n\tconsole.log('change === 激活事件', id) // change\n\temits('change', id)\n})\n\nprovide('historyRemove', (id: string) => {\n\t//remove\n\tconsole.log('historyRemove === 删除事件', id)\n\temits('historyRemove', id)\n})\n\nprovide('openSideBar', (item: any, index: number) => {\n\temits('openSideBar', item, index)\n})\n\nprovide('share', (item: any, index: number) => {\n\temits('share', item, index)\n})\n\nprovide('withDraw', (item: any, index: number) => {\n\temits('withDraw', item, index)\n})\n\nprovide('afterSend', (content: any) => {\n\t// afterSend\n\t// console.log('afterSend === 发送消息事件', content)\n\temits('afterSend', content)\n})\n\nprovide('remove', (item: ChatMessage, index: number) => {\n\t// afterSend\n\tconsole.log('remove === 详情删除', item, index)\n\temits('remove', item, index)\n})\n\nprovide('bottom', () => {\n\tconsole.log('bottom === 详情触底')\n\temits('bottom')\n})\n\nprovide('stop', (item: ChatMessage, index: number) => {\n\tconsole.log('stop === 用户终止事件')\n\temits('stop', item, index)\n})\n\nprovide('modelChange', (item: ModuleItem, index: number) => {\n\tconsole.log('modelChange === 模型切换事件', item, index)\n\temits('modelChange', item, index)\n})\n\n// const rootRef = ref(null)\nconst deepSeekRef = ref<InstanceType<typeof DeepSeek> | null>(null)\n\nconst elementClass = computed(() => {\n\tconst classList = []\n\tif (props.mode) {\n\t\tclassList.push(`touchchat-${props.mode}`)\n\t}\n\treturn classList.join(' ')\n})\n\n// 修改elementStyle计算属性,移除对scripts.length的检查\nconst elementStyle = computed(() => {\n\tlet width = ''\n\tlet height = ''\n\n\tif (props.width) {\n\t\tif (typeof props.width === 'string') {\n\t\t\twidth = props.width ?? '100%'\n\t\t} else {\n\t\t\twidth = `${props.width}em`\n\t\t}\n\t}\n\n\tif (props.height) {\n\t\tif (typeof props.height === 'string') {\n\t\t\theight = props.height ?? '100%'\n\t\t} else {\n\t\t\theight = `${props.height}em`\n\t\t}\n\t}\n\n\treturn {\n\t\twidth,\n\t\theight\n\t}\n})\ndefineExpose({\n\tsend: (value: string, fileList?: any[], auto?: boolean, type?: string) => {\n\t\tdeepSeekRef.value?.send(value, fileList, auto, type) //send\n\t},\n\tcloseExtend: () => {\n\t\tdeepSeekRef.value?.closeExtend() // closeExtend\n\t},\n\tcreate: () => {\n\t\tdeepSeekRef.value?.create() // reset\n\t},\n\tretry: (index: number) => {\n\t\tdeepSeekRef.value?.retry(index)\n\t},\n\tupdate: (index: number, message: object) => {\n\t\tdeepSeekRef.value?.update(index, message)\n\t},\n\tchangeChat: (index: number) => {\n\t\tdeepSeekRef.value?.changeChat(index)\n\t},\n\tclearChat: () => {\n\t\tdeepSeekRef.value?.clearChat()\n\t}\n})\n</script>\n"],"names":["DO_defineComponent","_createCommentVNode","_createVNode","_withCtx","_renderSlot"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.vue2.mjs","sources":["../../../../../../packages/components/touchchat/src/index.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({ name: 'Touchchat' });\n</script>\n<template>\n\t<!-- <div>1.0.0-beta.2026032301</div> -->\n\t<DeepSeek ref=\"deepSeekRef\" :style=\"elementStyle\" :class=\"elementClass\">\n\t\t<!-- msg -->\n\t\t<template #aimsg=\"{ item, index }\">\n\t\t\t<slot name=\"aimsg\" :item=\"item\" :index=\"index\" />\n\t\t</template>\n\t\t<template #msg=\"{ item, index }\">\n\t\t\t<slot name=\"msg\" :item=\"item\" :index=\"index\" />\n\t\t</template>\n\t\t<template #aiAvatar>\n\t\t\t<slot name=\"aiAvatar\" />\n\t\t</template>\n\t\t<template #userAvatar>\n\t\t\t<slot name=\"userAvatar\" />\n\t\t</template>\n\t\t<template #welcome>\n\t\t\t<slot name=\"welcome\" />\n\t\t</template>\n\t\t<!-- edit -->\n\t\t<template #edit>\n\t\t\t<slot name=\"edit\" />\n\t\t</template>\n\t\t<!-- top -->\n\t\t<template #top>\n\t\t\t<slot name=\"top\" />\n\t\t</template>\n\t\t<template #shortcut>\n\t\t\t<slot name=\"shortcut\" />\n\t\t</template>\n\t\t<!-- extend -->\n\t\t<template #extend=\"{ item, index }\">\n\t\t\t<slot name=\"extend\" :item=\"item\" :index=\"index\" />\n\t\t</template>\n\t\t<!-- fn -->\n\t\t<template #fn=\"{ item, index }\">\n\t\t\t<slot name=\"fn\" :item=\"item\" :index=\"index\" />\n\t\t</template>\n\t\t<template #editTop>\n\t\t\t<slot name=\"editTop\" />\n\t\t</template>\n\t\t<template #editFn>\n\t\t\t<slot name=\"editFn\" />\n\t\t</template>\n\t\t<template #editSubmitRight>\n\t\t\t<slot name=\"editSubmitRight\"></slot>\n\t\t</template>\n\t\t<template #editSubmitLeft>\n\t\t\t<slot name=\"editSubmitLeft\"></slot>\n\t\t</template>\n\t\t<template #extendsFn=\"{ item, index }\">\n\t\t\t<slot name=\"extendsFn\" :item=\"item\" :index=\"index\" />\n\t\t</template>\n\t</DeepSeek>\n</template>\n<script setup lang=\"ts\">\nimport { ChatMessage, ChatMsgList, MessageActions, ModuleItem } from './AiChat/Chat/types'\nimport type { AgentConfig, SubAgent } from '../src/types/a2a'\nimport DeepSeek from './AiChat/TouchHistory.vue'\nimport { provide, ref, computed, watch } from 'vue'\n\n\n\nconst emits = defineEmits<{\n\t(e: 'send', value: string, fileList?: any[]): void\n\t(e: 'afterSend', result: any): void\n\t(e: 'like', index: number, isLike: boolean): void\n\t(e: 'dislike', index: number, isDislike: boolean): void\n\t(e: 'side-bottom'): void\n\t(e: 'change', id: string): void\n\t(e: 'historyRemove', id: string): void\n\t(e: 'remove', item: ChatMessage, index: number): void\n\t(e: 'bottom'): void\n\t(e: 'stop', item: ChatMessage, index: number): void\n\t(e: 'modelChange', item: ModuleItem, index: number): void\n\t(e: 'openSideBar', item: ChatMessage & ChatMsgList, index: number): void\n\t(e: 'share', item: ChatMessage & ChatMsgList, index: number): void\n\t(e: 'withDraw', item: ChatMessage & ChatMsgList, index: number): void\n}>()\n\nconst sendVal = ref('')\n\ninterface ScriptItem {\n\tid?: string\n\tname: string\n\tsubTitle?: string\n\tcontent: Array<{\n\t\tuser: string\n\t\tdata?: string\n\t\talias?: string[]\n\t\ttype?: string\n\t}>\n}\n\ninterface HistoryItem {\n\tid?: string\n\ttime?: string\n\ttitle?: string\n}\n\ninterface MessageItem {\n\tchatId: string\n\tuser: string\n\ttype: string\n\tcontent: string\n\t[props: string]: any\n}\n\n// interface ModuleItem {\n// \tname: string\n// \tconfig: {\n// \t\taction: string\n// \t\theaders: () => object\n// \t\tbody: () => object\n// \t\trespoKey: () => object\n// \t}\n// }\ntype Modules = (string | ModuleItem)[]\ntype ResultArray = AgentConfig[] | SubAgent[]\ninterface MultiAgentInfo {\n\tlist: ResultArray\n\turl?: string\n\t// token?: string\n\theaders?: object\n}\n\nconst props = withDefaults(\n\tdefineProps<{\n\t\tmode?: string\n\t\tscripts?: ScriptItem[]\n\t\twidth?: number | string\n\t\theight?: number | string\n\t\tcomponents?: { [key: string]: any } // components\n\t\tavatar?: boolean // avatar\n\t\tplaceholder?: string\n\t\tunmatchText?: string // unmatchText\n\t\ttitle?: string\n\t\tlayout?: string // layout=\"side, think, upload, chain,realtime\"\n\t\tbeforeSend?: () => { result: boolean; componentName?: string }\n\t\thistoryList?: HistoryItem[] // historyList\n\t\thistoryDetail?: MessageItem[] // historyDetail\n\t\tagents?: {\n\t\t\tid: string\n\t\t\tname: string\n\t\t\tintro: string\n\t\t}[] // agents\n\t\tmodules?: Modules // modules\n\t\tspeed?: number // speed\n\t\tallowedTypes?: string[] // allowedTypes\n\t\t// agentConfigList?: ResultArray // agentConfigList 智能体配置列表\n\t\t// multiAgentHost?: string // multiAgentHost 多智能体主机地址\n\t\t// multiAgentToken?: string // multiAgentToken 多智能体认证令牌\n\t\tagentInfo?: MultiAgentInfo // agentInfo 多智能体信息\n\t\ta2uiProps?: {\n\t\t\t[key: string]: any\n\t\t}\n\t\tmessageActions?: MessageActions\n\t\thasRead?: boolean\n\t}>(),\n\t{\n\t\tmode: '',\n\t\tscripts: () => [],\n\t\twidth: '',\n\t\theight: '',\n\t\tcomponents: () => ({}),\n\t\tavatar: true,\n\t\tplaceholder: 'hi,我是touchchat,快来和我聊天吧~',\n\t\tunmatchText: '您的消息未匹配到任何内容',\n\t\ttitle: 'TouchChat',\n\t\tlayout: 'side, clear, think, upload, screen, voice,realtime', //chain 思考链\n\t\t// side 侧边栏(历史记录),think 深度思考,upload 上传文件,chain 思考链\n\t\tbeforeSend: () => ({ result: true, componentName: '' }),\n\t\thistoryList: () => [],\n\t\thistoryDetail: () => [],\n\t\tagents: () => [],\n\t\tmodules: () => [],\n\t\tspeed: 10,\n\t\tallowedTypes: () => [],\n\t\tagentInfo: () => ({\n\t\t\tlist: [], // list 智能体列表 =1 单智能体 >1 多智能体\n\t\t\turl: '', // url 多智能体主机地址 单智能体为空 多智能体必传\n\t\t\theaders: {} // 多智能体请求头信息\n\t\t}),\n\t\ta2uiProps: () => ({}),\n\t\tmessageActions: () => {\n\t\t\treturn {\n\t\t\t\tuser: ['edit', 'delete', 'copy'],\n\t\t\t\tai: ['retry', 'like', 'dislike', 'copy']\n\t\t\t}\n\t\t},\n\t\thasRead: false\n\t}\n)\n\nprovide('components', props.components)\nprovide('avatar', props.avatar)\nprovide('placeholder', props.placeholder)\nprovide('unmatchText', props.unmatchText)\nprovide('title', props.title)\nprovide('layout', props.layout)\nprovide('beforeSend', props.beforeSend)\nprovide('scripts', ref(props.scripts || []))\nprovide('speed', props.speed)\nprovide('allowedTypes', props.allowedTypes)\nprovide('a2uiProps', props.a2uiProps)\nprovide('messageActions', props.messageActions)\nprovide('hasRead', props.hasRead)\nconst historyListComputed = computed(() => props.historyList)\nconst providedHistoryList = ref(props.historyList)\nwatch(\n\thistoryListComputed,\n\tnewVal => {\n\t\tprovidedHistoryList.value = newVal\n\t},\n\t{ immediate: true }\n)\nprovide('historyList', providedHistoryList)\nconst historyDetailComputed = computed(() => props.historyDetail)\nconst providedHistoryDetail = ref(props.historyDetail)\nwatch(\n\thistoryDetailComputed,\n\tnewVal => {\n\t\tprovidedHistoryDetail.value = newVal\n\t},\n\t{ immediate: true }\n)\nprovide('historyDetail', providedHistoryDetail)\nprovide('agents', props.agents)\nconst iModules = ref(props.modules)\nwatch(\n\t() => props.modules,\n\tnewVal => {\n\t\tiModules.value = newVal\n\t\t// console.log('modules === index.vue === 191', newVal)\n\t},\n\t{ immediate: true }\n)\nprovide('modules', iModules)\n\nconst iMultiAgentInfo = ref(props.agentInfo)\nwatch(\n\t() => props.agentInfo,\n\tnewVal => {\n\t\tiMultiAgentInfo.value = newVal\n\t},\n\t{ immediate: true, deep: true }\n)\nprovide('agentInfo', iMultiAgentInfo)\n\n// 新增:提供处理点赞事件的函数\nprovide('like', (index: number, isLike: boolean) => {\n\t// 这里可以实现具体的点赞逻辑\n\temits('like', index, isLike) // like\n\t// 可以添加实际的业务逻辑,如调用API等\n})\n\n// 新增:提供处理点赞事件的函数 dislike\nprovide('dislike', (index: number, isUnlike: boolean) => {\n\t// 这里可以实现具体的点赞逻辑\n\temits('dislike', index, isUnlike) // dislike\n\t// 可以添加实际的业务逻辑,如调用API等\n})\n\nprovide('send', (value: string, fileList?: any[]) => {\n\t// send\n\t// 这里可以实现具体的点赞逻辑\n\tsendVal.value = value\n\temits('send', value, fileList)\n\t// 可以添加实际的业务逻辑,如调用API等\n})\n\nprovide('sideBottom', () => {\n\t// console.log('sideBottom === 触底事件') // bottom\n\temits('side-bottom')\n})\n\nprovide('change', (id: string) => {\n\t// console.log('change === 激活事件', id) // change\n\temits('change', id)\n})\n\nprovide('historyRemove', (id: string) => {\n\t//remove\n\t// console.log('historyRemove === 删除事件', id)\n\temits('historyRemove', id)\n})\n\nprovide('openSideBar', (item: any, index: number) => {\n\temits('openSideBar', item, index)\n})\n\nprovide('share', (item: any, index: number) => {\n\temits('share', item, index)\n})\n\nprovide('withDraw', (item: any, index: number) => {\n\temits('withDraw', item, index)\n})\n\nprovide('afterSend', (content: any) => {\n\t// afterSend\n\t// console.log('afterSend === 发送消息事件', content)\n\temits('afterSend', content)\n})\n\nprovide('remove', (item: ChatMessage, index: number) => {\n\t// afterSend\n\t// console.log('remove === 详情删除', item, index)\n\temits('remove', item, index)\n})\n\nprovide('bottom', () => {\n\t// console.log('bottom === 详情触底')\n\temits('bottom')\n})\n\nprovide('stop', (item: ChatMessage, index: number) => {\n\t// console.log('stop === 用户终止事件')\n\temits('stop', item, index)\n})\n\nprovide('modelChange', (item: ModuleItem, index: number) => {\n\t// console.log('modelChange === 模型切换事件', item, index)\n\temits('modelChange', item, index)\n})\n\n// const rootRef = ref(null)\nconst deepSeekRef = ref<InstanceType<typeof DeepSeek> | null>(null)\n\nconst elementClass = computed(() => {\n\tconst classList = []\n\tif (props.mode) {\n\t\tclassList.push(`touchchat-${props.mode}`)\n\t}\n\treturn classList.join(' ')\n})\n\n// 修改elementStyle计算属性,移除对scripts.length的检查\nconst elementStyle = computed(() => {\n\tlet width = ''\n\tlet height = ''\n\n\tif (props.width) {\n\t\tif (typeof props.width === 'string') {\n\t\t\twidth = props.width ?? '100%'\n\t\t} else {\n\t\t\twidth = `${props.width}em`\n\t\t}\n\t}\n\n\tif (props.height) {\n\t\tif (typeof props.height === 'string') {\n\t\t\theight = props.height ?? '100%'\n\t\t} else {\n\t\t\theight = `${props.height}em`\n\t\t}\n\t}\n\n\treturn {\n\t\twidth,\n\t\theight\n\t}\n})\nconst updateInputMethod = ref<any>(null)\nprovide('setInput', updateInputMethod)\nconst setInput = (newValue: string) => {\n\tif (updateInputMethod.value) {\n\t\tupdateInputMethod.value(newValue)\n\t}\n}\ndefineExpose({\n\tsend: (value: string, fileList?: any[], auto?: boolean, type?: string) => {\n\t\tdeepSeekRef.value?.send(value, fileList, auto, type) //send\n\t},\n\tcloseExtend: () => {\n\t\tdeepSeekRef.value?.closeExtend() // closeExtend\n\t},\n\tcreate: () => {\n\t\tdeepSeekRef.value?.create() // reset\n\t},\n\tretry: (index: number) => {\n\t\tdeepSeekRef.value?.retry(index)\n\t},\n\tupdate: (index: number, message: object) => {\n\t\tdeepSeekRef.value?.update(index, message)\n\t},\n\tchangeChat: (index: number) => {\n\t\tdeepSeekRef.value?.changeChat(index)\n\t},\n\tclearChat: () => {\n\t\tdeepSeekRef.value?.clearChat()\n\t},\n\tsetInput\n})\n</script>\n"],"names":["DO_defineComponent","_createCommentVNode","_createVNode","_withCtx","_renderSlot"],"mappings":"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"}
|
package/lib/package.json.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var name = "@touchvue/chat";
|
|
6
|
-
var version = "1.0.0-beta.
|
|
6
|
+
var version = "1.0.0-beta.47";
|
|
7
7
|
var description = "TouchVue Chat Component Library";
|
|
8
8
|
var main = "lib/index.js";
|
|
9
9
|
var module$1 = "es/index.mjs";
|
|
@@ -79,6 +79,10 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
79
79
|
const reasoningContentShow = vue.computed(() => {
|
|
80
80
|
return props.item.reasoningContent;
|
|
81
81
|
});
|
|
82
|
+
const processedContent = vue.computed(() => {
|
|
83
|
+
var _a;
|
|
84
|
+
return props.item.content ? ((_a = markdown.default) == null ? void 0 : _a.render(props.item.content, { isReasoning: false })) || "" : "";
|
|
85
|
+
});
|
|
82
86
|
const getProcessedContent = (node) => {
|
|
83
87
|
var _a;
|
|
84
88
|
return node.content ? ((_a = markdown.default) == null ? void 0 : _a.render(node.content, { isReasoning: false })) || "" : "";
|
|
@@ -228,7 +232,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
228
232
|
item: _ctx.item,
|
|
229
233
|
index: _ctx.index
|
|
230
234
|
}, () => [
|
|
231
|
-
contentShow.value && vue.unref(scripts) && vue.unref(scripts).length === 0 && _ctx.item.msgList ? (vue.openBlock(), vue.createElementBlock("div", {
|
|
235
|
+
contentShow.value && vue.unref(scripts) && vue.unref(scripts).length === 0 && _ctx.item.msgList && _ctx.item.msgList.length ? (vue.openBlock(), vue.createElementBlock("div", {
|
|
232
236
|
key: 0,
|
|
233
237
|
class: "touchchat-ai-bubble-text touchchat-markdown"
|
|
234
238
|
}, [
|
|
@@ -270,7 +274,12 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
270
274
|
128
|
|
271
275
|
/* KEYED_FRAGMENT */
|
|
272
276
|
))
|
|
273
|
-
])) : vue.createCommentVNode("v-if", true)
|
|
277
|
+
])) : vue.createCommentVNode("v-if", true),
|
|
278
|
+
contentShow.value && vue.unref(scripts) && vue.unref(scripts).length === 0 && !(_ctx.item.msgList && _ctx.item.msgList.length) ? (vue.openBlock(), vue.createElementBlock("div", {
|
|
279
|
+
key: 1,
|
|
280
|
+
class: "touchchat-ai-bubble-text touchchat-markdown",
|
|
281
|
+
innerHTML: processedContent.value
|
|
282
|
+
}, null, 8, ["innerHTML"])) : vue.createCommentVNode("v-if", true)
|
|
274
283
|
]),
|
|
275
284
|
vue.createCommentVNode(" && !item.componentName "),
|
|
276
285
|
vue.unref(scripts) && vue.unref(scripts).length > 0 ? (vue.openBlock(), vue.createBlock(letter.default, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AiMessage.vue2.js","sources":["../../../../../../../packages/components/touchchat/src/AiChat/AiMessage.vue"],"sourcesContent":["<template>\n\t<div class=\"touchchat-ai touchchat-item\" :data-chat-id=\"item.chatId\">\n\t\t<!-- 头像区域 -->\n\t\t<div class=\"touchchat-ai-avatar\">\n\t\t\t<slot name=\"aiAvatar\">\n\t\t\t\t<img v-if=\"isShowAvatar\" :src=\"aiAvatarPath\" class=\"touchchat-ai-avatar-pic\" />\n\t\t\t</slot>\n\t\t</div>\n\n\t\t<!-- 内容区域 -->\n\t\t<div class=\"touchchat-ai-content\" :class=\"{ 'is-full': !item.isChating && item.componentName }\">\n\t\t\t<!-- 气泡 -->\n\t\t\t<div class=\"touchchat-ai-bubble\">\n\t\t\t\t<!-- 思考内容 -->\n\t\t\t\t<div v-if=\"thinkContentShow\" class=\"touchchat-ai-think\" v-html=\"processedThinkContent\"></div>\n\n\t\t\t\t<!-- 推理内容 -->\n\t\t\t\t<div v-if=\"reasoningContentShow\" class=\"touchchat-ai-think\">\n\t\t\t\t\t<div class=\"touchchat-ai-think-header\">\n\t\t\t\t\t\t<div class=\"touchchat-ai-think-state\">\n\t\t\t\t\t\t\t{{ item.thinkStatus === 'thinking' ? '深度思考中...' : item.thinkStatus === 'completed' ? '已深度思考' : '思考已停止' }}\n\t\t\t\t\t\t\t<template v-if=\"item.thinkStatus === 'completed'\">(用时{{ (item.thinkTime || 0) / 1000 }}秒)</template>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"touchchat-ai-think-toggle\" :class=\"collapse ? '' : 'is-expand'\" @click=\"collapse = !collapse\">\n\t\t\t\t\t\t\t<span class=\"touchchat-ai-think-toggle-icon\"></span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<transition name=\"touchchat-ai-think-collpase\">\n\t\t\t\t\t\t<div v-show=\"collapse && !chainAble\" class=\"touchchat-ai-think-content\" v-html=\"processedReasoningContent\"></div>\n\t\t\t\t\t</transition>\n\t\t\t\t\t<transition name=\"touchchat-ai-think-collpase\">\n\t\t\t\t\t\t<thought-chain v-show=\"collapse && chainAble\"></thought-chain>\n\t\t\t\t\t</transition>\n\t\t\t\t</div>\n\n\t\t\t\t<!-- 主内容 -->\n\t\t\t\t<slot name=\"aimsg\" :item=\"item\" :index=\"index\">\n\t\t\t\t\t<div v-if=\"contentShow && scripts && scripts.length === 0 && item.msgList\" class=\"touchchat-ai-bubble-text touchchat-markdown\">\n\t\t\t\t\t\t<template v-for=\"node in item.msgList\" :key=\"node.id\">\n\t\t\t\t\t\t\t<div v-if=\"node.type === 'markdown' && node.content\" v-html=\"getProcessedContent(node)\" />\n\t\t\t\t\t\t\t<component :is=\"components[node.componentName]\" v-if=\"node.type === 'component' && node.displayMode === 'inline'\" v-bind=\"item.props\" />\n\t\t\t\t\t\t\t<TouchA2ui v-if=\"node.type === 'a2ui'\" :messages=\"node.msgs\" :components=\"a2uiProps.components\" :surface-id=\"node.surfaceId\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</div>\n\t\t\t\t</slot>\n\n\t\t\t\t<!-- && !item.componentName -->\n\t\t\t\t<letter v-if=\"scripts && scripts.length > 0\" auto-start :data=\"item.content\" @start=\"startLetter\" @complete=\"completeLetter\"> </letter>\n\t\t\t\t<slot v-if=\"(scripts.length > 0 && (showComponent || !item.content)) || (!scripts.length && !item.isChating)\" name=\"msg\" :item=\"item\" :index=\"index\">\n\t\t\t\t\t<component :is=\"componentName\" :index=\"index\" :item=\"item\" @start=\"startCompentent\" @complete=\"completeCompentent\" @toggle-sidebar=\"toggleSidebarClick\"></component>\n\t\t\t\t</slot>\n\n\t\t\t\t<!-- 新增加载状态区域 -->\n\t\t\t\t<div v-if=\"item.isChating\" class=\"touchchat-ai-loading\">\n\t\t\t\t\t<div class=\"touchchat-ai-loading-icon\"></div>\n\t\t\t\t\t<span class=\"touchchat-ai-loading-text\">加载中...</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<slot name=\"fn\" :item=\"item\" :index=\"index\">\n\t\t\t\t<MessageActions v-show=\"(showFn && scripts.length > 0) || (!scripts.length && !item.isChating)\" :item=\"item\" message-type=\"ai\" :index=\"index\" :has-retry=\"hasRetry\" :show-copy=\"true\" @copy=\"onCopy\" @retry=\"onRetry\" @like=\"onLike\" @dislike=\"onDislike\" @quote=\"onQuote\">\n\t\t\t\t\t<!-- <slot name=\"extendsFn\" :item=\"item\" :index=\"index\"></slot> -->\n\t\t\t\t\t<template #extendsFn>\n\t\t\t\t\t\t<slot name=\"extendsFn\" :item=\"item\" :index=\"index\" />\n\t\t\t\t\t</template>\n\t\t\t\t</MessageActions>\n\t\t\t</slot>\n\t\t\t<!-- && !scripts.length -->\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\" setup>\n// useSlots, Comment, watch\nimport { ref, computed, inject, onMounted, watch } from 'vue'\nimport type { ChatMessage, ChatMsgList } from './Chat/types'\nimport aiAvatarBase from '../../img/aiAvatar.png'\nimport markdown from '../../utils/markdown.ts'\nimport FileView from '../../component/FileView.vue'\nimport ImageView from '../../component/ImageView.vue'\nimport LinkView from '../../component/LinkView.vue'\nimport CardView from '../../component/CardView.vue'\nimport MessageActions from './MessageActions.vue'\nimport Face from '../../component/AiRobot/face.vue'\nimport MeterialPrepare from '../../component/AiRobot/meterialPrepare.vue'\nimport Letter from '../../component/AiRobot/letter.vue'\nimport ThoughtChain from '../../component/ThoughtChain.vue'\nimport { TouchA2ui } from '@touchvue/a2ui'\n// 为组件映射表定义接口\ninterface ComponentMap {\n\t[key: string]: any // 允许任何字符串键\n\tFileView: typeof FileView\n\tImageView: typeof ImageView\n\tLinkView: typeof LinkView\n\tCardView: typeof CardView\n}\n\n// 创建组件映射表\nconst componentMap: ComponentMap = {\n\tFileView,\n\tImageView,\n\tLinkView,\n\tCardView,\n\tFace,\n\tMeterialPrepare\n}\n\nconst props = withDefaults(\n\tdefineProps<{\n\t\titem: ChatMessage & ChatMsgList\n\t\tindex: number\n\t\thasRetry: boolean\n\t}>(),\n\t{\n\t\thasRetry: true\n\t}\n)\n\nwatch(\n\t() => props.item,\n\tval => {\n\t\tlet arr = []\n\t\tif (val.msgList) {\n\t\t\tarr = val.msgList?.filter(item => (item.type === 'component' && (item.displayMode === 'drawer' || item.displayMode === 'tip')) || (item.type === 'iframe' && item.url))\n\t\t}\n\t\tif (arr.length) {\n\t\t\temits('openSideBar', arr[0], props.index)\n\t\t}\n\t},\n\t{\n\t\tdeep: true\n\t}\n)\n\nconst emits = defineEmits<{\n\t(e: 'copy', index: number): void\n\t(e: 'retry', index: number): void\n\t(e: 'like', index: number): void\n\t(e: 'dislike', index: number): void\n\t(e: 'quote', item: any, index: number): void\n\t(e: 'contentRendered', element: HTMLElement): void\n\t(e: 'completeRendered', chatId: string): void\n\t(e: 'toggle-sidebar', item: any, index: number): void\n\t(e: 'openSideBar', item: any, index: number): void\n}>()\n\nconst collapse = ref(true)\nconst isShowAvatar = ref(true)\nconst aiAvatarPath = ref(aiAvatarBase)\nconst components = inject<Record<string, any>>('components', {}) // 指定类型并提供默认值 {}\nconst a2uiProps = inject<Record<string, any>>('a2uiProps', {}) // 指定类型并提供默认值 {}\nconst avatar = inject<boolean>('avatar', true)\nconst scripts = inject<any[]>('scripts', [])\nconst layout = inject<string>('layout', 'side, think, upload, chain')\nconst chainAble = layout.includes('chain')\nconst showComponent = ref(false)\nconst showFn = ref(false)\n\nconst init = () => {\n\tisShowAvatar.value = avatar\n}\n\nconst componentName = computed(() => {\n\tconst slotMap = components\n\n\t// 明确newMap的类型,允许字符串索引\n\tconst newMap: Record<string, any> = {\n\t\t...slotMap,\n\t\t...componentMap\n\t}\n\treturn newMap[props.item.componentName as string] || null\n})\n\nconst thinkContentShow = computed(() => {\n\treturn props.item.thinkContent\n\t// && !props.item.componentName;\n})\n\nconst reasoningContentShow = computed(() => {\n\treturn props.item.reasoningContent\n})\n\n// const processedContent = computed(() => {\n// \treturn props.item.content ? markdown?.render(props.item.content, { isReasoning: false }) || '' : ''\n// })\n\nconst getProcessedContent = (node: any) => {\n\treturn node.content ? markdown?.render(node.content, { isReasoning: false }) || '' : ''\n}\n\nconst processedThinkContent = computed(() => {\n\treturn props.item.thinkContent ? markdown?.render(props.item.thinkContent, { isReasoning: true }) || '' : ''\n})\n\nconst processedReasoningContent = computed(() => {\n\treturn props.item.reasoningContent ? markdown?.render(props.item.reasoningContent, { isReasoning: true }) || '' : ''\n})\n\nconst contentShow = computed(() => {\n\treturn props.item.content || props.item.msgList?.length\n})\n\nconst toggleSidebarClick = (item: ChatMessage, index: number) => {\n\temits('toggle-sidebar', item, index)\n}\n\nonMounted(() => {\n\tinit()\n})\n\nconst completeCompentent = () => {\n\temits('completeRendered', props.item?.chatId || '')\n\tshowFn.value = true\n}\nconst completeLetter = () => {\n\tshowComponent.value = true\n\tif (!props.item.componentName) {\n\t\temits('completeRendered', props.item?.chatId || '')\n\t\tshowFn.value = true\n\t}\n}\n\nconst startCompentent = () => {\n\tconsole.log('startCompentent')\n}\nconst startLetter = () => {\n\tshowComponent.value = false\n\tshowFn.value = false\n}\n\nconst onCopy = () => emits('copy', props.index)\nconst onRetry = () => emits('retry', props.index)\nconst onLike = () => emits('like', props.index)\nconst onDislike = () => emits('dislike', props.index)\nconst onQuote = () => emits('quote', props.item, props.index)\n</script>\n"],"names":["FileView","ImageView","LinkView","CardView","Face","MeterialPrepare","watch","ref","aiAvatarBase","inject","computed","markdown","onMounted","_createElementBlock","item","_createCommentVNode","_createElementVNode","_renderSlot","_normalizeClass","_Fragment","_createTextVNode","_createVNode","_Transition","_vShow","_unref","ThoughtChain","index","_openBlock","_createBlock","_resolveDynamicComponent","_mergeProps","TouchA2ui","Letter","MessageActions","hasRetry"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AiMessage.vue2.js","sources":["../../../../../../../packages/components/touchchat/src/AiChat/AiMessage.vue"],"sourcesContent":["<template>\n\t<div class=\"touchchat-ai touchchat-item\" :data-chat-id=\"item.chatId\">\n\t\t<!-- 头像区域 -->\n\t\t<div class=\"touchchat-ai-avatar\">\n\t\t\t<slot name=\"aiAvatar\">\n\t\t\t\t<img v-if=\"isShowAvatar\" :src=\"aiAvatarPath\" class=\"touchchat-ai-avatar-pic\" />\n\t\t\t</slot>\n\t\t</div>\n\n\t\t<!-- 内容区域 -->\n\t\t<div class=\"touchchat-ai-content\" :class=\"{ 'is-full': !item.isChating && item.componentName }\">\n\t\t\t<!-- 气泡 -->\n\t\t\t<div class=\"touchchat-ai-bubble\">\n\t\t\t\t<!-- 思考内容 -->\n\t\t\t\t<div v-if=\"thinkContentShow\" class=\"touchchat-ai-think\" v-html=\"processedThinkContent\"></div>\n\n\t\t\t\t<!-- 推理内容 -->\n\t\t\t\t<div v-if=\"reasoningContentShow\" class=\"touchchat-ai-think\">\n\t\t\t\t\t<div class=\"touchchat-ai-think-header\">\n\t\t\t\t\t\t<div class=\"touchchat-ai-think-state\">\n\t\t\t\t\t\t\t{{ item.thinkStatus === 'thinking' ? '深度思考中...' : item.thinkStatus === 'completed' ? '已深度思考' : '思考已停止' }}\n\t\t\t\t\t\t\t<template v-if=\"item.thinkStatus === 'completed'\">(用时{{ (item.thinkTime || 0) / 1000 }}秒)</template>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"touchchat-ai-think-toggle\" :class=\"collapse ? '' : 'is-expand'\" @click=\"collapse = !collapse\">\n\t\t\t\t\t\t\t<span class=\"touchchat-ai-think-toggle-icon\"></span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<transition name=\"touchchat-ai-think-collpase\">\n\t\t\t\t\t\t<div v-show=\"collapse && !chainAble\" class=\"touchchat-ai-think-content\" v-html=\"processedReasoningContent\"></div>\n\t\t\t\t\t</transition>\n\t\t\t\t\t<transition name=\"touchchat-ai-think-collpase\">\n\t\t\t\t\t\t<thought-chain v-show=\"collapse && chainAble\"></thought-chain>\n\t\t\t\t\t</transition>\n\t\t\t\t</div>\n\n\t\t\t\t<!-- 主内容 -->\n\t\t\t\t<slot name=\"aimsg\" :item=\"item\" :index=\"index\">\n\t\t\t\t\t<div v-if=\"contentShow && scripts && scripts.length === 0 && item.msgList && item.msgList.length\" class=\"touchchat-ai-bubble-text touchchat-markdown\">\n\t\t\t\t\t\t<template v-for=\"node in item.msgList\" :key=\"node.id\">\n\t\t\t\t\t\t\t<div v-if=\"node.type === 'markdown' && node.content\" v-html=\"getProcessedContent(node)\" />\n\t\t\t\t\t\t\t<component :is=\"components[node.componentName]\" v-if=\"node.type === 'component' && node.displayMode === 'inline'\" v-bind=\"item.props\" />\n\t\t\t\t\t\t\t<TouchA2ui v-if=\"node.type === 'a2ui'\" :messages=\"node.msgs\" :components=\"a2uiProps.components\" :surface-id=\"node.surfaceId\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div v-if=\"contentShow && scripts && scripts.length === 0 && !(item.msgList && item.msgList.length)\" class=\"touchchat-ai-bubble-text touchchat-markdown\" v-html=\"processedContent\"></div>\n\t\t\t\t</slot>\n\n\t\t\t\t<!-- && !item.componentName -->\n\t\t\t\t<letter v-if=\"scripts && scripts.length > 0\" auto-start :data=\"item.content\" @start=\"startLetter\" @complete=\"completeLetter\"> </letter>\n\t\t\t\t<slot v-if=\"(scripts.length > 0 && (showComponent || !item.content)) || (!scripts.length && !item.isChating)\" name=\"msg\" :item=\"item\" :index=\"index\">\n\t\t\t\t\t<component :is=\"componentName\" :index=\"index\" :item=\"item\" @start=\"startCompentent\" @complete=\"completeCompentent\" @toggle-sidebar=\"toggleSidebarClick\"></component>\n\t\t\t\t</slot>\n\n\t\t\t\t<!-- 新增加载状态区域 -->\n\t\t\t\t<div v-if=\"item.isChating\" class=\"touchchat-ai-loading\">\n\t\t\t\t\t<div class=\"touchchat-ai-loading-icon\"></div>\n\t\t\t\t\t<span class=\"touchchat-ai-loading-text\">加载中...</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<slot name=\"fn\" :item=\"item\" :index=\"index\">\n\t\t\t\t<MessageActions v-show=\"(showFn && scripts.length > 0) || (!scripts.length && !item.isChating)\" :item=\"item\" message-type=\"ai\" :index=\"index\" :has-retry=\"hasRetry\" :show-copy=\"true\" @copy=\"onCopy\" @retry=\"onRetry\" @like=\"onLike\" @dislike=\"onDislike\" @quote=\"onQuote\">\n\t\t\t\t\t<!-- <slot name=\"extendsFn\" :item=\"item\" :index=\"index\"></slot> -->\n\t\t\t\t\t<template #extendsFn>\n\t\t\t\t\t\t<slot name=\"extendsFn\" :item=\"item\" :index=\"index\" />\n\t\t\t\t\t</template>\n\t\t\t\t</MessageActions>\n\t\t\t</slot>\n\t\t\t<!-- && !scripts.length -->\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\" setup>\n// useSlots, Comment, watch\nimport { ref, computed, inject, onMounted, watch } from 'vue'\nimport type { ChatMessage, ChatMsgList } from './Chat/types'\nimport aiAvatarBase from '../../img/aiAvatar.png'\nimport markdown from '../../utils/markdown.ts'\nimport FileView from '../../component/FileView.vue'\nimport ImageView from '../../component/ImageView.vue'\nimport LinkView from '../../component/LinkView.vue'\nimport CardView from '../../component/CardView.vue'\nimport MessageActions from './MessageActions.vue'\nimport Face from '../../component/AiRobot/face.vue'\nimport MeterialPrepare from '../../component/AiRobot/meterialPrepare.vue'\nimport Letter from '../../component/AiRobot/letter.vue'\nimport ThoughtChain from '../../component/ThoughtChain.vue'\nimport { TouchA2ui } from '@touchvue/a2ui'\n// 为组件映射表定义接口\ninterface ComponentMap {\n\t[key: string]: any // 允许任何字符串键\n\tFileView: typeof FileView\n\tImageView: typeof ImageView\n\tLinkView: typeof LinkView\n\tCardView: typeof CardView\n}\n\n// 创建组件映射表\nconst componentMap: ComponentMap = {\n\tFileView,\n\tImageView,\n\tLinkView,\n\tCardView,\n\tFace,\n\tMeterialPrepare\n}\n\nconst props = withDefaults(\n\tdefineProps<{\n\t\titem: ChatMessage & ChatMsgList\n\t\tindex: number\n\t\thasRetry: boolean\n\t}>(),\n\t{\n\t\thasRetry: true\n\t}\n)\n\nwatch(\n\t() => props.item,\n\tval => {\n\t\tlet arr = []\n\t\tif (val.msgList) {\n\t\t\tarr = val.msgList?.filter(item => (item.type === 'component' && (item.displayMode === 'drawer' || item.displayMode === 'tip')) || (item.type === 'iframe' && item.url))\n\t\t}\n\t\tif (arr.length) {\n\t\t\temits('openSideBar', arr[0], props.index)\n\t\t}\n\t},\n\t{\n\t\tdeep: true\n\t}\n)\n\nconst emits = defineEmits<{\n\t(e: 'copy', index: number): void\n\t(e: 'retry', index: number): void\n\t(e: 'like', index: number): void\n\t(e: 'dislike', index: number): void\n\t(e: 'quote', item: any, index: number): void\n\t(e: 'contentRendered', element: HTMLElement): void\n\t(e: 'completeRendered', chatId: string): void\n\t(e: 'toggle-sidebar', item: any, index: number): void\n\t(e: 'openSideBar', item: any, index: number): void\n}>()\n\nconst collapse = ref(true)\nconst isShowAvatar = ref(true)\nconst aiAvatarPath = ref(aiAvatarBase)\nconst components = inject<Record<string, any>>('components', {}) // 指定类型并提供默认值 {}\nconst a2uiProps = inject<Record<string, any>>('a2uiProps', {}) // 指定类型并提供默认值 {}\nconst avatar = inject<boolean>('avatar', true)\nconst scripts = inject<any[]>('scripts', [])\nconst layout = inject<string>('layout', 'side, think, upload, chain')\nconst chainAble = layout.includes('chain')\nconst showComponent = ref(false)\nconst showFn = ref(false)\n\nconst init = () => {\n\tisShowAvatar.value = avatar\n}\n\nconst componentName = computed(() => {\n\tconst slotMap = components\n\n\t// 明确newMap的类型,允许字符串索引\n\tconst newMap: Record<string, any> = {\n\t\t...slotMap,\n\t\t...componentMap\n\t}\n\treturn newMap[props.item.componentName as string] || null\n})\n\nconst thinkContentShow = computed(() => {\n\treturn props.item.thinkContent\n\t// && !props.item.componentName;\n})\n\nconst reasoningContentShow = computed(() => {\n\treturn props.item.reasoningContent\n})\n\nconst processedContent = computed(() => {\n\treturn props.item.content ? markdown?.render(props.item.content, { isReasoning: false }) || '' : ''\n})\n\nconst getProcessedContent = (node: any) => {\n\treturn node.content ? markdown?.render(node.content, { isReasoning: false }) || '' : ''\n}\n\nconst processedThinkContent = computed(() => {\n\treturn props.item.thinkContent ? markdown?.render(props.item.thinkContent, { isReasoning: true }) || '' : ''\n})\n\nconst processedReasoningContent = computed(() => {\n\treturn props.item.reasoningContent ? markdown?.render(props.item.reasoningContent, { isReasoning: true }) || '' : ''\n})\n\nconst contentShow = computed(() => {\n\treturn props.item.content || props.item.msgList?.length\n})\n\nconst toggleSidebarClick = (item: ChatMessage, index: number) => {\n\temits('toggle-sidebar', item, index)\n}\n\nonMounted(() => {\n\tinit()\n})\n\nconst completeCompentent = () => {\n\temits('completeRendered', props.item?.chatId || '')\n\tshowFn.value = true\n}\nconst completeLetter = () => {\n\tshowComponent.value = true\n\tif (!props.item.componentName) {\n\t\temits('completeRendered', props.item?.chatId || '')\n\t\tshowFn.value = true\n\t}\n}\n\nconst startCompentent = () => {\n\tconsole.log('startCompentent')\n}\nconst startLetter = () => {\n\tshowComponent.value = false\n\tshowFn.value = false\n}\n\nconst onCopy = () => emits('copy', props.index)\nconst onRetry = () => emits('retry', props.index)\nconst onLike = () => emits('like', props.index)\nconst onDislike = () => emits('dislike', props.index)\nconst onQuote = () => emits('quote', props.item, props.index)\n</script>\n"],"names":["FileView","ImageView","LinkView","CardView","Face","MeterialPrepare","watch","ref","aiAvatarBase","inject","computed","markdown","onMounted","_createElementBlock","item","_createCommentVNode","_createElementVNode","_renderSlot","_normalizeClass","_Fragment","_createTextVNode","_createVNode","_Transition","_vShow","_unref","ThoughtChain","index","_openBlock","_createBlock","_resolveDynamicComponent","_mergeProps","TouchA2ui","Letter","MessageActions","hasRetry"],"mappings":"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"}
|
|
@@ -109,6 +109,7 @@ function useSSE({ chatList, currIndex, isChating, isMounted, isUnmounting, enabl
|
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
111
|
} else if (respoKey) {
|
|
112
|
+
console.log("\u6765\u4E86\u6CA1\u6709", result[respoKey.content]);
|
|
112
113
|
if (result) {
|
|
113
114
|
if (result.type === "markdown") {
|
|
114
115
|
const mapKey = `markdown_${result.order}`;
|
|
@@ -133,7 +134,7 @@ function useSSE({ chatList, currIndex, isChating, isMounted, isUnmounting, enabl
|
|
|
133
134
|
msgs: result.msgs ? [...result.msgs] : []
|
|
134
135
|
});
|
|
135
136
|
}
|
|
136
|
-
} else {
|
|
137
|
+
} else if (result.type) {
|
|
137
138
|
const mapKey = `${result.type}_${result.order}`;
|
|
138
139
|
aiContentList.push({ mapKey, ...result });
|
|
139
140
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSSE.js","sources":["../../../../../../../../packages/components/touchchat/src/AiChat/Chat/useSSE.ts"],"sourcesContent":["/**\n * SSE 流式请求逻辑 Composable\n */\n\nimport { ref, type Ref, nextTick } from 'vue'\nimport { FetchStream } from '../../../utils/fetchStream.ts'\nimport { showToast } from '../../../utils/tools.ts'\nimport { ThinkStatus, type ChatMessage, type ModuleItem, type ResultItem, type RenderData, type RespoKeyConfig, ChatMsgList } from './types'\n\nexport interface UseSSEOptions {\n\tchatList: Ref<ChatMessage[]>\n\tcurrIndex: Ref<number>\n\tisChating: Ref<boolean>\n\tisMounted: Ref<boolean>\n\tisUnmounting: Ref<boolean>\n\tinputValue: Ref<string>\n\tenableDeepThinking: Ref<boolean>\n\tcurrentComponentName: Ref<string>\n\ttypeFlag: Ref<string>\n\tmoduleInfo: Ref<ModuleItem>\n\temit: (event: string, ...args: any[]) => void\n\tafterSend: (result: object) => void\n\tenqueueRender: (data: RenderData) => void\n\trenderContent: (content: string, type: 'main' | 'thinking' | 'reasoning', index?: number) => void\n\tmarkdownToHtml: (content: string) => string\n\tscrollToBottom: () => void\n\tstop: (item: ChatMessage, index: number) => void\n}\n\nexport function useSSE({ chatList, currIndex, isChating, isMounted, isUnmounting, enableDeepThinking, currentComponentName, typeFlag, moduleInfo, emit, afterSend, enqueueRender, renderContent, markdownToHtml, scrollToBottom, stop }: UseSSEOptions) {\n\tconst fetchStream = ref<InstanceType<typeof FetchStream> | null>(null)\n\tconst resultItem = ref<ResultItem | null>(null)\n\t// 生成聊天ID\n\tconst generateChatId = (prefix: string = 'ai_'): string => {\n\t\treturn prefix + Math.random().toString(36).slice(2).padEnd(10, '0').slice(0, 10)\n\t}\n\n\t// SSE 连接\n\tconst openSSE = (userContent: string, insertIndex?: number, type?: number): void => {\n\t\ttry {\n\t\t\tif (isUnmounting.value) return\n\t\t\tisChating.value = true\n\n\t\t\tconst currentAiMessage = chatList.value.find((item: any) => item.isChating)\n\t\t\tif (currentAiMessage) {\n\t\t\t\tcurrentAiMessage.isShowLike = true\n\t\t\t\tcurrentAiMessage.isShowCopy = true\n\t\t\t\tcurrentAiMessage.componentName = currentComponentName.value\n\t\t\t}\n\n\t\t\tconst chatId = currentAiMessage?.chatId || generateChatId()\n\t\t\tlet aiContent = currentAiMessage?.content || ''\n\t\t\tconst aiContentList: any[] = currentAiMessage?.msgList || []\n\t\t\tlet reasoningContent = currentAiMessage?.reasoningContent || ''\n\t\t\tlet allAiContent = ''\n\n\t\t\tif (!currentAiMessage) {\n\t\t\t\tconst chatItem: ChatMessage & ChatMsgList = {\n\t\t\t\t\tchatId: chatId,\n\t\t\t\t\tuser: 'ai',\n\t\t\t\t\ttype: 'text',\n\t\t\t\t\tisChating: true,\n\t\t\t\t\tcontent: '',\n\t\t\t\t\tthinkContent: '',\n\t\t\t\t\treasoningContent: '',\n\t\t\t\t\tthinkStatus: ThinkStatus.THINKING,\n\t\t\t\t\tthinkStartTime: Date.now(),\n\t\t\t\t\tisShowLike: true,\n\t\t\t\t\tisShowCopy: true,\n\t\t\t\t\tcomponentName: currentComponentName.value,\n\t\t\t\t\ttypeFlag: typeFlag.value,\n\t\t\t\t\tmsgList: [],\n\t\t\t\t\tisRead: true\n\t\t\t\t}\n\t\t\t\tif (insertIndex !== undefined && insertIndex <= chatList.value.length) {\n\t\t\t\t\tchatList.value.splice(insertIndex, 0, chatItem)\n\t\t\t\t} else {\n\t\t\t\t\tchatList.value.push(chatItem)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcurrIndex.value = insertIndex ?? chatList.value.length - 1\n\n\t\t\t// 构建请求配置\n\t\t\tconst BodyConfig = moduleInfo.value?.config?.body?.()\n\t\t\tconst requestBody = BodyConfig?.messages?.length\n\t\t\t\t? { ...BodyConfig, messages: [...BodyConfig.messages], model: enableDeepThinking.value ? 'deepseek-reasoner' : 'deepseek-v3' }\n\t\t\t\t: {\n\t\t\t\t\t\tmodel: enableDeepThinking.value ? 'deepseek-reasoner' : 'deepseek-v3',\n\t\t\t\t\t\tmessages: [{ role: 'user', content: userContent }],\n\t\t\t\t\t\tstream: true\n\t\t\t\t\t}\n\n\t\t\t// 更新消息内容\n\t\t\tif (BodyConfig?.messages?.length) {\n\t\t\t\tBodyConfig.messages[0].content = userContent\n\t\t\t}\n\t\t\tconst apiUrl = typeof moduleInfo.value?.config?.action === 'function' ? moduleInfo.value.config.action() : moduleInfo.value?.config?.action || 'https://api.apiyi.com/v1/chat/completions'\n\n\t\t\tfetchStream.value = new FetchStream({\n\t\t\t\turl: apiUrl,\n\t\t\t\trequestInit: {\n\t\t\t\t\theaders: moduleInfo.value?.config?.headers\n\t\t\t\t\t\t? new Headers(moduleInfo.value.config.headers() as Record<string, string>)\n\t\t\t\t\t\t: new Headers({\n\t\t\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t\t\t\tAuthorization: 'Bearer sk-fe9MtODvds8wpzz05f3417Fe3e9641C1926e6fC588425dEd'\n\t\t\t\t\t\t\t} as Record<string, string>),\n\t\t\t\t\tbody: JSON.stringify(requestBody)\n\t\t\t\t},\n\t\t\t\tonmessage: (line: string) => {\n\t\t\t\t\tif (isUnmounting.value) return\n\t\t\t\t\tlet dataString = ''\n\t\t\t\t\tif (line.length) {\n\t\t\t\t\t\tif (line.includes('data:')) {\n\t\t\t\t\t\t\tconst match = line.match(/\\{[\\s\\S]*\\}/)\n\t\t\t\t\t\t\tdataString = match ? match[0] : ''\n\t\t\t\t\t\t} else if (line.startsWith('{') && line.endsWith('}')) {\n\t\t\t\t\t\t\tdataString = line\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tdataString = dataString.trim()\n\t\t\t\t\tconst respoKeyConfig = moduleInfo.value?.config?.respoKey\n\t\t\t\t\tconst respoKey: RespoKeyConfig | undefined = typeof respoKeyConfig === 'function' ? respoKeyConfig() : respoKeyConfig\n\t\t\t\t\tconst deepseekFlag = moduleInfo.value?.name === 'deepseek-v3'\n\n\t\t\t\t\t// saveEdit 场景下 type === 1,直接渲染\n\t\t\t\t\tif (type === 1 && dataString) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst result = JSON.parse(dataString)\n\t\t\t\t\t\t\tconst newAiMessage = chatList.value[currIndex.value]\n\n\t\t\t\t\t\t\tif (deepseekFlag || !moduleInfo.value) {\n\t\t\t\t\t\t\t\tif (result?.choices?.[0]?.delta?.content) {\n\t\t\t\t\t\t\t\t\taiContent += result.choices[0].delta.content\n\t\t\t\t\t\t\t\t\tif (newAiMessage?.thinkStatus === ThinkStatus.THINKING) {\n\t\t\t\t\t\t\t\t\t\tnewAiMessage.thinkStatus = ThinkStatus.COMPLETED\n\t\t\t\t\t\t\t\t\t\tnewAiMessage.thinkTime = Date.now() - (newAiMessage.thinkStartTime || Date.now())\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (result?.choices?.[0]?.delta?.reasoning_content) {\n\t\t\t\t\t\t\t\t\treasoningContent += result.choices[0].delta.reasoning_content\n\t\t\t\t\t\t\t\t\tif (!newAiMessage?.thinkStatus) {\n\t\t\t\t\t\t\t\t\t\tnewAiMessage.thinkStatus = ThinkStatus.THINKING\n\t\t\t\t\t\t\t\t\t\tnewAiMessage.thinkStartTime = Date.now()\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (respoKey) {\n\t\t\t\t\t\t\t\tif (result) {\n\t\t\t\t\t\t\t\t\tif (result.type === 'markdown') {\n\t\t\t\t\t\t\t\t\t\tconst mapKey = `markdown_${result.order}`\n\t\t\t\t\t\t\t\t\t\tconst hasKey = aiContentList.findIndex(con => con.mapKey === mapKey)\n\t\t\t\t\t\t\t\t\t\tif (hasKey !== -1) {\n\t\t\t\t\t\t\t\t\t\t\taiContentList[hasKey].content += result.content\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\taiContentList.push({ mapKey, ...result })\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} else if (result.type === 'a2ui') {\n\t\t\t\t\t\t\t\t\t\tconst mapKey = result.surfaceId\n\t\t\t\t\t\t\t\t\t\tconst hasKey = aiContentList.findIndex(con => con.surfaceId === mapKey)\n\t\t\t\t\t\t\t\t\t\tif (hasKey !== -1) {\n\t\t\t\t\t\t\t\t\t\t\tconst updatedMsgs = [...aiContentList[hasKey].msgs, ...result.msgs]\n\n\t\t\t\t\t\t\t\t\t\t\taiContentList[hasKey] = {\n\t\t\t\t\t\t\t\t\t\t\t\t...aiContentList[hasKey],\n\t\t\t\t\t\t\t\t\t\t\t\tmsgs: updatedMsgs\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\taiContentList.push({\n\t\t\t\t\t\t\t\t\t\t\t\t...result,\n\t\t\t\t\t\t\t\t\t\t\t\tmsgs: result.msgs ? [...result.msgs] : []\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst mapKey = `${result.type}_${result.order}`\n\t\t\t\t\t\t\t\t\t\taiContentList.push({ mapKey, ...result })\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (result && result[respoKey.content]) {\n\t\t\t\t\t\t\t\t\taiContent += result[respoKey.content]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// 更新消息内容到chatList\n\t\t\t\t\t\t\tif (newAiMessage) {\n\t\t\t\t\t\t\t\tnewAiMessage.content = aiContent\n\t\t\t\t\t\t\t\tnewAiMessage.msgList = [...aiContentList]\n\t\t\t\t\t\t\t\tnewAiMessage.reasoningContent = reasoningContent\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (chatList.value.some((ele: any) => ele.chatId === chatId)) {\n\t\t\t\t\t\t\t\tnextTick(() => {\n\t\t\t\t\t\t\t\t\t// 显式传递索引,确保渲染到正确位置\n\t\t\t\t\t\t\t\t\tconst renderWithRetry = (retryCount = 0) => {\n\t\t\t\t\t\t\t\t\t\tif (retryCount > 10) {\n\t\t\t\t\t\t\t\t\t\t\tconsole.error('renderContent失败:无法找到DOM元素,currIndex:', currIndex.value)\n\t\t\t\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// 显式传递索引,确保渲染到正确位置\n\t\t\t\t\t\t\t\t\t\trenderContent(aiContent, 'main', currIndex.value)\n\t\t\t\t\t\t\t\t\t\trenderContent(reasoningContent, 'reasoning', currIndex.value)\n\n\t\t\t\t\t\t\t\t\t\t// 检查是否渲染成功(通过检查内容是否被设置)\n\t\t\t\t\t\t\t\t\t\tconst currentMsg = chatList.value[currIndex.value]\n\t\t\t\t\t\t\t\t\t\tif (currentMsg && (currentMsg.content !== aiContent || currentMsg.reasoningContent !== reasoningContent)) {\n\t\t\t\t\t\t\t\t\t\t\t// 如果没有成功,稍后重试\n\t\t\t\t\t\t\t\t\t\t\tsetTimeout(() => renderWithRetry(retryCount + 1), 50)\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tnextTick(() => {\n\t\t\t\t\t\t\t\t\t\t\t\tscrollToBottom()\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\trenderWithRetry()\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tconsole.error('解析SSE消息失败:', e)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (dataString && ((dataString.startsWith('{') && dataString.endsWith('}')) || !respoKey?.content)) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst result = !respoKey?.content && moduleInfo.value ? dataString : JSON.parse(dataString)\n\t\t\t\t\t\t\tconst newAiMessage = chatList.value[currIndex.value]\n\n\t\t\t\t\t\t\t// deepseek\n\t\t\t\t\t\t\tif (deepseekFlag || !moduleInfo.value) {\n\t\t\t\t\t\t\t\tif (result?.choices?.[0]?.delta?.content) {\n\t\t\t\t\t\t\t\t\taiContent += result.choices[0].delta.content\n\t\t\t\t\t\t\t\t\tif (newAiMessage?.thinkStatus === ThinkStatus.THINKING) {\n\t\t\t\t\t\t\t\t\t\tnewAiMessage.thinkStatus = ThinkStatus.COMPLETED\n\t\t\t\t\t\t\t\t\t\tnewAiMessage.thinkTime = Date.now() - (newAiMessage.thinkStartTime || Date.now())\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (result?.choices?.[0]?.delta?.reasoning_content) {\n\t\t\t\t\t\t\t\t\treasoningContent += result.choices[0].delta.reasoning_content\n\t\t\t\t\t\t\t\t\tif (!newAiMessage?.thinkStatus) {\n\t\t\t\t\t\t\t\t\t\tnewAiMessage.thinkStatus = ThinkStatus.THINKING\n\t\t\t\t\t\t\t\t\t\tnewAiMessage.thinkStartTime = Date.now()\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tallAiContent = reasoningContent + aiContent\n\t\t\t\t\t\t\t} else if (respoKey) {\n\t\t\t\t\t\t\t\tif (result && result[respoKey.content] && (result[respoKey.category] === respoKey.contentCategory || !result[respoKey.category])) {\n\t\t\t\t\t\t\t\t\taiContent += result[respoKey.content]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// 匹配不规则的结束\n\t\t\t\t\t\t\t\tif (result && result[respoKey.category] === 'done') {\n\t\t\t\t\t\t\t\t\tresultItem.value = result\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// 匹配不规则的错误提示\n\t\t\t\t\t\t\t\tif (result && result[respoKey.category] === 'error') {\n\t\t\t\t\t\t\t\t\tconst errorMessage = respoKey.all && result[respoKey.all] ? result[respoKey.all] : '当前网络异常'\n\t\t\t\t\t\t\t\t\tconst currentAiMessage = chatList.value[currIndex.value]\n\t\t\t\t\t\t\t\t\tif (currentAiMessage.chatId) {\n\t\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\">\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\"/>\n\t\t\t\t\t\t\t\t\t\t</svg>${errorMessage}</div>`\n\t\t\t\t\t\t\t\t\t\tcurrentAiMessage.isChating = false\n\t\t\t\t\t\t\t\t\t\tcurrentAiMessage.componentName = ''\n\t\t\t\t\t\t\t\t\t\tcurrentAiMessage.isShowLike = false\n\t\t\t\t\t\t\t\t\t\tcurrentAiMessage.isShowCopy = false\n\t\t\t\t\t\t\t\t\t\tcurrentAiMessage.isError = true\n\n\t\t\t\t\t\t\t\t\t\tnextTick(() => {\n\t\t\t\t\t\t\t\t\t\t\temit('sendMessage', [...chatList.value])\n\t\t\t\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\t\t\t\t\tafterSend(result)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// 后端无allAiContent完整信息 前端手动拼接\n\t\t\t\t\t\t\t\tif (aiContent || reasoningContent) {\n\t\t\t\t\t\t\t\t\tallAiContent = aiContent + reasoningContent\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (respoKey && respoKey.all && result && result[respoKey.all] && result[respoKey.category] === respoKey.allCategory) {\n\t\t\t\t\t\t\t\t\tallAiContent = result[respoKey.all]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// 后端返回匹配不规则的流式输出\n\t\t\t\t\t\t\t\tif (respoKey && result && typeof result === 'string' && result !== '[DONE]') {\n\t\t\t\t\t\t\t\t\taiContent += result\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// 后端返回匹配不规则的流式输出 结束\n\t\t\t\t\t\t\t\tif (respoKey && result && typeof result === 'string' && result === '[DONE]') {\n\t\t\t\t\t\t\t\t\tconst index = chatList.value.findIndex((ele: any) => ele.chatId === chatId)\n\t\t\t\t\t\t\t\t\tif (index !== -1 && chatList.value[index]) {\n\t\t\t\t\t\t\t\t\t\tisChating.value = false\n\t\t\t\t\t\t\t\t\t\tchatList.value[index].isChating = false\n\t\t\t\t\t\t\t\t\t\temit('sendMessage', JSON.parse(JSON.stringify(chatList.value)))\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (chatList.value.some((ele: any) => ele.chatId === chatId)) {\n\t\t\t\t\t\t\t\tenqueueRender({\n\t\t\t\t\t\t\t\t\tmainContent: aiContent,\n\t\t\t\t\t\t\t\t\tthinkContent: '',\n\t\t\t\t\t\t\t\t\treasoningContent: reasoningContent\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// type === 1 的情况已经在上面单独处理,这里不再重复渲染\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tconsole.error('解析SSE消息失败:', error)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tondone: () => {\n\t\t\t\t\tnextTick(() => {\n\t\t\t\t\t\tisChating.value = false\n\t\t\t\t\t\tif (isUnmounting.value || !isMounted.value) return\n\t\t\t\t\t\tconst index = chatList.value.findIndex((ele: any) => ele.chatId === chatId)\n\t\t\t\t\t\tif (index !== -1 && chatList.value[index]) {\n\t\t\t\t\t\t\tchatList.value[index].isChating = false\n\t\t\t\t\t\t\tchatList.value[index].componentName = currentComponentName.value\n\t\t\t\t\t\t\tchatList.value[index].html = markdownToHtml(allAiContent)\n\t\t\t\t\t\t\tif (allAiContent) {\n\t\t\t\t\t\t\t\tif (resultItem.value) {\n\t\t\t\t\t\t\t\t\tresultItem.value.allAiContent = allAiContent\n\t\t\t\t\t\t\t\t\tafterSend(resultItem.value)\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tafterSend({ allAiContent })\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst waitForRenderComplete = () => {\n\t\t\t\t\t\t\t\t// 这里假设需要检查渲染队列,通过回调检查\n\t\t\t\t\t\t\t\tif (chatList.value.length > 0) {\n\t\t\t\t\t\t\t\t\temit('sendMessage', JSON.parse(JSON.stringify(chatList.value)))\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\twaitForRenderComplete()\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tonabort: () => {\n\t\t\t\t\thandleAbort()\n\t\t\t\t},\n\t\t\t\tonerror: (response: Error | Response) => {\n\t\t\t\t\thandleError(response)\n\t\t\t\t}\n\t\t\t})\n\t\t} catch (error) {\n\t\t\tconsole.error('OpenSSE错误:', error)\n\t\t\tisChating.value = false\n\t\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\">\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\"/>\n\t\t</svg>${'请求失败'}</div>`\n\t\t\tchatList.value[currIndex.value].isChating = false\n\t\t\tchatList.value[currIndex.value].isShowCopy = false\n\t\t\tchatList.value[currIndex.value].isShowLike = false\n\t\t\tshowToast('请求失败,请重试', 'error', 3000)\n\t\t}\n\t}\n\n\t// 处理请求中止\n\tconst handleAbort = (): void => {\n\t\tisChating.value = false\n\t\tif (isUnmounting.value) return\n\n\t\tconst currentAiMessage = chatList.value[currIndex.value]\n\t\tstop(chatList.value[currIndex.value], currIndex.value)\n\t\tconst hasContent = currentAiMessage && (currentAiMessage.content || currentAiMessage.thinkContent || currentAiMessage.reasoningContent)\n\n\t\tif (currentAiMessage) {\n\t\t\tif (currentAiMessage.thinkStatus === ThinkStatus.THINKING) {\n\t\t\t\tcurrentAiMessage.thinkStatus = ThinkStatus.STOPPED\n\t\t\t\tcurrentAiMessage.thinkTime = Date.now() - (currentAiMessage.thinkStartTime || Date.now())\n\t\t\t}\n\t\t\tif (!hasContent) {\n\t\t\t\tconst userMessageIndex = currIndex.value - 1\n\t\t\t\tif (userMessageIndex >= 0 && chatList.value[userMessageIndex].user === 'u') {\n\t\t\t\t\tchatList.value.splice(currIndex.value, 1)\n\t\t\t\t\tchatList.value.splice(userMessageIndex, 1)\n\t\t\t\t} else {\n\t\t\t\t\tchatList.value.splice(currIndex.value, 1)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst updatedAiMessage = {\n\t\t\t\t\t...currentAiMessage,\n\t\t\t\t\tisChating: false,\n\t\t\t\t\tcontent: currentAiMessage.content ? currentAiMessage.content + '...' : '',\n\t\t\t\t\tthinkContent: currentAiMessage.thinkContent ? currentAiMessage.thinkContent + '...' : undefined,\n\t\t\t\t\treasoningContent: currentAiMessage.reasoningContent ? currentAiMessage.reasoningContent + '...' : undefined,\n\t\t\t\t\tthinkStatus: currentAiMessage.thinkStatus as ThinkStatus,\n\t\t\t\t\tstop: true\n\t\t\t\t}\n\n\t\t\t\tchatList.value.splice(currIndex.value, 1, updatedAiMessage)\n\n\t\t\t\tnextTick(() => {\n\t\t\t\t\trenderContent(updatedAiMessage.thinkContent || '', 'thinking')\n\t\t\t\t\trenderContent(updatedAiMessage.reasoningContent || '', 'reasoning')\n\t\t\t\t\trenderContent(updatedAiMessage.content || '', 'main')\n\t\t\t\t\temit('sendMessage', [...chatList.value])\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tif (chatList.value.length > 0) {\n\t\t\temit('sendMessage', [...chatList.value])\n\t\t}\n\t}\n\n\t// 处理请求错误\n\tconst handleError = (response: Error | Response): void => {\n\t\tif (isUnmounting.value) return\n\t\tisChating.value = false\n\n\t\tlet errorMessage = '未知错误'\n\t\tif (response instanceof Error) {\n\t\t\tconsole.error('API请求错误:', response)\n\t\t\terrorMessage = response.message\n\t\t} else if (response instanceof Response) {\n\t\t\tconsole.error('API请求错误, 响应状态:', response.status, response.statusText)\n\t\t\terrorMessage = `请求失败: ${response.status} ${response.statusText}`\n\t\t}\n\n\t\tconst currentAiMessage = chatList.value[currIndex.value]\n\t\tif (currentAiMessage) {\n\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\">\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\"/>\n</svg>${errorMessage}</div>`\n\t\t\tcurrentAiMessage.isChating = false\n\t\t\tcurrentAiMessage.componentName = ''\n\t\t\tcurrentAiMessage.isShowLike = false\n\t\t\tcurrentAiMessage.isShowCopy = false\n\t\t\tcurrentAiMessage.isError = true\n\n\t\t\tnextTick(() => {\n\t\t\t\trenderContent(currentAiMessage.content || '', 'main')\n\t\t\t\temit('sendMessage', [...chatList.value])\n\t\t\t})\n\t\t} else {\n\t\t\tshowToast(errorMessage, 'error', 3000)\n\t\t\temit('sendMessage', [...chatList.value])\n\t\t}\n\t}\n\n\t// 清理 SSE 连接\n\tconst cleanupSSE = () => {\n\t\tif (fetchStream.value) {\n\t\t\tfetchStream.value.abort()\n\t\t\tfetchStream.value = null\n\t\t}\n\t}\n\n\treturn {\n\t\tfetchStream,\n\t\tresultItem,\n\t\topenSSE,\n\t\thandleAbort,\n\t\thandleError,\n\t\tcleanupSSE\n\t}\n}\n"],"names":["fetchStream","ref","ThinkStatus","FetchStream","_a","_b","_c","_d","_e","_f","_g","_h","_i","_j","_k","nextTick","currentAiMessage","showToast"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useSSE.js","sources":["../../../../../../../../packages/components/touchchat/src/AiChat/Chat/useSSE.ts"],"sourcesContent":["/**\n * SSE 流式请求逻辑 Composable\n */\n\nimport { ref, type Ref, nextTick } from 'vue'\nimport { FetchStream } from '../../../utils/fetchStream.ts'\nimport { showToast } from '../../../utils/tools.ts'\nimport { ThinkStatus, type ChatMessage, type ModuleItem, type ResultItem, type RenderData, type RespoKeyConfig, ChatMsgList } from './types'\n\nexport interface UseSSEOptions {\n\tchatList: Ref<ChatMessage[]>\n\tcurrIndex: Ref<number>\n\tisChating: Ref<boolean>\n\tisMounted: Ref<boolean>\n\tisUnmounting: Ref<boolean>\n\tinputValue: Ref<string>\n\tenableDeepThinking: Ref<boolean>\n\tcurrentComponentName: Ref<string>\n\ttypeFlag: Ref<string>\n\tmoduleInfo: Ref<ModuleItem>\n\temit: (event: string, ...args: any[]) => void\n\tafterSend: (result: object) => void\n\tenqueueRender: (data: RenderData) => void\n\trenderContent: (content: string, type: 'main' | 'thinking' | 'reasoning', index?: number) => void\n\tmarkdownToHtml: (content: string) => string\n\tscrollToBottom: () => void\n\tstop: (item: ChatMessage, index: number) => void\n}\n\nexport function useSSE({ chatList, currIndex, isChating, isMounted, isUnmounting, enableDeepThinking, currentComponentName, typeFlag, moduleInfo, emit, afterSend, enqueueRender, renderContent, markdownToHtml, scrollToBottom, stop }: UseSSEOptions) {\n\tconst fetchStream = ref<InstanceType<typeof FetchStream> | null>(null)\n\tconst resultItem = ref<ResultItem | null>(null)\n\t// 生成聊天ID\n\tconst generateChatId = (prefix: string = 'ai_'): string => {\n\t\treturn prefix + Math.random().toString(36).slice(2).padEnd(10, '0').slice(0, 10)\n\t}\n\n\t// SSE 连接\n\tconst openSSE = (userContent: string, insertIndex?: number, type?: number): void => {\n\t\ttry {\n\t\t\tif (isUnmounting.value) return\n\t\t\tisChating.value = true\n\n\t\t\tconst currentAiMessage = chatList.value.find((item: any) => item.isChating)\n\t\t\tif (currentAiMessage) {\n\t\t\t\tcurrentAiMessage.isShowLike = true\n\t\t\t\tcurrentAiMessage.isShowCopy = true\n\t\t\t\tcurrentAiMessage.componentName = currentComponentName.value\n\t\t\t}\n\n\t\t\tconst chatId = currentAiMessage?.chatId || generateChatId()\n\t\t\tlet aiContent = currentAiMessage?.content || ''\n\t\t\tconst aiContentList: any[] = currentAiMessage?.msgList || []\n\t\t\tlet reasoningContent = currentAiMessage?.reasoningContent || ''\n\t\t\tlet allAiContent = ''\n\n\t\t\tif (!currentAiMessage) {\n\t\t\t\tconst chatItem: ChatMessage & ChatMsgList = {\n\t\t\t\t\tchatId: chatId,\n\t\t\t\t\tuser: 'ai',\n\t\t\t\t\ttype: 'text',\n\t\t\t\t\tisChating: true,\n\t\t\t\t\tcontent: '',\n\t\t\t\t\tthinkContent: '',\n\t\t\t\t\treasoningContent: '',\n\t\t\t\t\tthinkStatus: ThinkStatus.THINKING,\n\t\t\t\t\tthinkStartTime: Date.now(),\n\t\t\t\t\tisShowLike: true,\n\t\t\t\t\tisShowCopy: true,\n\t\t\t\t\tcomponentName: currentComponentName.value,\n\t\t\t\t\ttypeFlag: typeFlag.value,\n\t\t\t\t\tmsgList: [],\n\t\t\t\t\tisRead: true\n\t\t\t\t}\n\t\t\t\tif (insertIndex !== undefined && insertIndex <= chatList.value.length) {\n\t\t\t\t\tchatList.value.splice(insertIndex, 0, chatItem)\n\t\t\t\t} else {\n\t\t\t\t\tchatList.value.push(chatItem)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcurrIndex.value = insertIndex ?? chatList.value.length - 1\n\n\t\t\t// 构建请求配置\n\t\t\tconst BodyConfig = moduleInfo.value?.config?.body?.()\n\t\t\tconst requestBody = BodyConfig?.messages?.length\n\t\t\t\t? { ...BodyConfig, messages: [...BodyConfig.messages], model: enableDeepThinking.value ? 'deepseek-reasoner' : 'deepseek-v3' }\n\t\t\t\t: {\n\t\t\t\t\t\tmodel: enableDeepThinking.value ? 'deepseek-reasoner' : 'deepseek-v3',\n\t\t\t\t\t\tmessages: [{ role: 'user', content: userContent }],\n\t\t\t\t\t\tstream: true\n\t\t\t\t\t}\n\n\t\t\t// 更新消息内容\n\t\t\tif (BodyConfig?.messages?.length) {\n\t\t\t\tBodyConfig.messages[0].content = userContent\n\t\t\t}\n\t\t\tconst apiUrl = typeof moduleInfo.value?.config?.action === 'function' ? moduleInfo.value.config.action() : moduleInfo.value?.config?.action || 'https://api.apiyi.com/v1/chat/completions'\n\n\t\t\tfetchStream.value = new FetchStream({\n\t\t\t\turl: apiUrl,\n\t\t\t\trequestInit: {\n\t\t\t\t\theaders: moduleInfo.value?.config?.headers\n\t\t\t\t\t\t? new Headers(moduleInfo.value.config.headers() as Record<string, string>)\n\t\t\t\t\t\t: new Headers({\n\t\t\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t\t\t\tAuthorization: 'Bearer sk-fe9MtODvds8wpzz05f3417Fe3e9641C1926e6fC588425dEd'\n\t\t\t\t\t\t\t} as Record<string, string>),\n\t\t\t\t\tbody: JSON.stringify(requestBody)\n\t\t\t\t},\n\t\t\t\tonmessage: (line: string) => {\n\t\t\t\t\tif (isUnmounting.value) return\n\t\t\t\t\tlet dataString = ''\n\t\t\t\t\tif (line.length) {\n\t\t\t\t\t\tif (line.includes('data:')) {\n\t\t\t\t\t\t\tconst match = line.match(/\\{[\\s\\S]*\\}/)\n\t\t\t\t\t\t\tdataString = match ? match[0] : ''\n\t\t\t\t\t\t} else if (line.startsWith('{') && line.endsWith('}')) {\n\t\t\t\t\t\t\tdataString = line\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tdataString = dataString.trim()\n\t\t\t\t\tconst respoKeyConfig = moduleInfo.value?.config?.respoKey\n\t\t\t\t\tconst respoKey: RespoKeyConfig | undefined = typeof respoKeyConfig === 'function' ? respoKeyConfig() : respoKeyConfig\n\t\t\t\t\tconst deepseekFlag = moduleInfo.value?.name === 'deepseek-v3'\n\n\t\t\t\t\t// saveEdit 场景下 type === 1,直接渲染\n\t\t\t\t\tif (type === 1 && dataString) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst result = JSON.parse(dataString)\n\t\t\t\t\t\t\tconst newAiMessage = chatList.value[currIndex.value]\n\n\t\t\t\t\t\t\tif (deepseekFlag || !moduleInfo.value) {\n\t\t\t\t\t\t\t\tif (result?.choices?.[0]?.delta?.content) {\n\t\t\t\t\t\t\t\t\taiContent += result.choices[0].delta.content\n\t\t\t\t\t\t\t\t\tif (newAiMessage?.thinkStatus === ThinkStatus.THINKING) {\n\t\t\t\t\t\t\t\t\t\tnewAiMessage.thinkStatus = ThinkStatus.COMPLETED\n\t\t\t\t\t\t\t\t\t\tnewAiMessage.thinkTime = Date.now() - (newAiMessage.thinkStartTime || Date.now())\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (result?.choices?.[0]?.delta?.reasoning_content) {\n\t\t\t\t\t\t\t\t\treasoningContent += result.choices[0].delta.reasoning_content\n\t\t\t\t\t\t\t\t\tif (!newAiMessage?.thinkStatus) {\n\t\t\t\t\t\t\t\t\t\tnewAiMessage.thinkStatus = ThinkStatus.THINKING\n\t\t\t\t\t\t\t\t\t\tnewAiMessage.thinkStartTime = Date.now()\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (respoKey) {\n\t\t\t\t\t\t\t\tconsole.log('来了没有', result[respoKey.content])\n\t\t\t\t\t\t\t\tif (result) {\n\t\t\t\t\t\t\t\t\tif (result.type === 'markdown') {\n\t\t\t\t\t\t\t\t\t\tconst mapKey = `markdown_${result.order}`\n\t\t\t\t\t\t\t\t\t\tconst hasKey = aiContentList.findIndex(con => con.mapKey === mapKey)\n\t\t\t\t\t\t\t\t\t\tif (hasKey !== -1) {\n\t\t\t\t\t\t\t\t\t\t\taiContentList[hasKey].content += result.content\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\taiContentList.push({ mapKey, ...result })\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} else if (result.type === 'a2ui') {\n\t\t\t\t\t\t\t\t\t\tconst mapKey = result.surfaceId\n\t\t\t\t\t\t\t\t\t\tconst hasKey = aiContentList.findIndex(con => con.surfaceId === mapKey)\n\t\t\t\t\t\t\t\t\t\tif (hasKey !== -1) {\n\t\t\t\t\t\t\t\t\t\t\tconst updatedMsgs = [...aiContentList[hasKey].msgs, ...result.msgs]\n\n\t\t\t\t\t\t\t\t\t\t\taiContentList[hasKey] = {\n\t\t\t\t\t\t\t\t\t\t\t\t...aiContentList[hasKey],\n\t\t\t\t\t\t\t\t\t\t\t\tmsgs: updatedMsgs\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\taiContentList.push({\n\t\t\t\t\t\t\t\t\t\t\t\t...result,\n\t\t\t\t\t\t\t\t\t\t\t\tmsgs: result.msgs ? [...result.msgs] : []\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} else if (result.type) {\n\t\t\t\t\t\t\t\t\t\tconst mapKey = `${result.type}_${result.order}`\n\t\t\t\t\t\t\t\t\t\taiContentList.push({ mapKey, ...result })\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (result && result[respoKey.content]) {\n\t\t\t\t\t\t\t\t\taiContent += result[respoKey.content]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// 更新消息内容到chatList\n\t\t\t\t\t\t\tif (newAiMessage) {\n\t\t\t\t\t\t\t\tnewAiMessage.content = aiContent\n\t\t\t\t\t\t\t\tnewAiMessage.msgList = [...aiContentList]\n\t\t\t\t\t\t\t\tnewAiMessage.reasoningContent = reasoningContent\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (chatList.value.some((ele: any) => ele.chatId === chatId)) {\n\t\t\t\t\t\t\t\tnextTick(() => {\n\t\t\t\t\t\t\t\t\t// 显式传递索引,确保渲染到正确位置\n\t\t\t\t\t\t\t\t\tconst renderWithRetry = (retryCount = 0) => {\n\t\t\t\t\t\t\t\t\t\tif (retryCount > 10) {\n\t\t\t\t\t\t\t\t\t\t\tconsole.error('renderContent失败:无法找到DOM元素,currIndex:', currIndex.value)\n\t\t\t\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// 显式传递索引,确保渲染到正确位置\n\t\t\t\t\t\t\t\t\t\trenderContent(aiContent, 'main', currIndex.value)\n\t\t\t\t\t\t\t\t\t\trenderContent(reasoningContent, 'reasoning', currIndex.value)\n\n\t\t\t\t\t\t\t\t\t\t// 检查是否渲染成功(通过检查内容是否被设置)\n\t\t\t\t\t\t\t\t\t\tconst currentMsg = chatList.value[currIndex.value]\n\t\t\t\t\t\t\t\t\t\tif (currentMsg && (currentMsg.content !== aiContent || currentMsg.reasoningContent !== reasoningContent)) {\n\t\t\t\t\t\t\t\t\t\t\t// 如果没有成功,稍后重试\n\t\t\t\t\t\t\t\t\t\t\tsetTimeout(() => renderWithRetry(retryCount + 1), 50)\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tnextTick(() => {\n\t\t\t\t\t\t\t\t\t\t\t\tscrollToBottom()\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\trenderWithRetry()\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tconsole.error('解析SSE消息失败:', e)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (dataString && ((dataString.startsWith('{') && dataString.endsWith('}')) || !respoKey?.content)) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst result = !respoKey?.content && moduleInfo.value ? dataString : JSON.parse(dataString)\n\t\t\t\t\t\t\tconst newAiMessage = chatList.value[currIndex.value]\n\n\t\t\t\t\t\t\t// deepseek\n\t\t\t\t\t\t\tif (deepseekFlag || !moduleInfo.value) {\n\t\t\t\t\t\t\t\tif (result?.choices?.[0]?.delta?.content) {\n\t\t\t\t\t\t\t\t\taiContent += result.choices[0].delta.content\n\t\t\t\t\t\t\t\t\tif (newAiMessage?.thinkStatus === ThinkStatus.THINKING) {\n\t\t\t\t\t\t\t\t\t\tnewAiMessage.thinkStatus = ThinkStatus.COMPLETED\n\t\t\t\t\t\t\t\t\t\tnewAiMessage.thinkTime = Date.now() - (newAiMessage.thinkStartTime || Date.now())\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (result?.choices?.[0]?.delta?.reasoning_content) {\n\t\t\t\t\t\t\t\t\treasoningContent += result.choices[0].delta.reasoning_content\n\t\t\t\t\t\t\t\t\tif (!newAiMessage?.thinkStatus) {\n\t\t\t\t\t\t\t\t\t\tnewAiMessage.thinkStatus = ThinkStatus.THINKING\n\t\t\t\t\t\t\t\t\t\tnewAiMessage.thinkStartTime = Date.now()\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tallAiContent = reasoningContent + aiContent\n\t\t\t\t\t\t\t} else if (respoKey) {\n\t\t\t\t\t\t\t\tif (result && result[respoKey.content] && (result[respoKey.category] === respoKey.contentCategory || !result[respoKey.category])) {\n\t\t\t\t\t\t\t\t\taiContent += result[respoKey.content]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// 匹配不规则的结束\n\t\t\t\t\t\t\t\tif (result && result[respoKey.category] === 'done') {\n\t\t\t\t\t\t\t\t\tresultItem.value = result\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// 匹配不规则的错误提示\n\t\t\t\t\t\t\t\tif (result && result[respoKey.category] === 'error') {\n\t\t\t\t\t\t\t\t\tconst errorMessage = respoKey.all && result[respoKey.all] ? result[respoKey.all] : '当前网络异常'\n\t\t\t\t\t\t\t\t\tconst currentAiMessage = chatList.value[currIndex.value]\n\t\t\t\t\t\t\t\t\tif (currentAiMessage.chatId) {\n\t\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\">\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\"/>\n\t\t\t\t\t\t\t\t\t\t</svg>${errorMessage}</div>`\n\t\t\t\t\t\t\t\t\t\tcurrentAiMessage.isChating = false\n\t\t\t\t\t\t\t\t\t\tcurrentAiMessage.componentName = ''\n\t\t\t\t\t\t\t\t\t\tcurrentAiMessage.isShowLike = false\n\t\t\t\t\t\t\t\t\t\tcurrentAiMessage.isShowCopy = false\n\t\t\t\t\t\t\t\t\t\tcurrentAiMessage.isError = true\n\n\t\t\t\t\t\t\t\t\t\tnextTick(() => {\n\t\t\t\t\t\t\t\t\t\t\temit('sendMessage', [...chatList.value])\n\t\t\t\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\t\t\t\t\tafterSend(result)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// 后端无allAiContent完整信息 前端手动拼接\n\t\t\t\t\t\t\t\tif (aiContent || reasoningContent) {\n\t\t\t\t\t\t\t\t\tallAiContent = aiContent + reasoningContent\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (respoKey && respoKey.all && result && result[respoKey.all] && result[respoKey.category] === respoKey.allCategory) {\n\t\t\t\t\t\t\t\t\tallAiContent = result[respoKey.all]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// 后端返回匹配不规则的流式输出\n\t\t\t\t\t\t\t\tif (respoKey && result && typeof result === 'string' && result !== '[DONE]') {\n\t\t\t\t\t\t\t\t\taiContent += result\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// 后端返回匹配不规则的流式输出 结束\n\t\t\t\t\t\t\t\tif (respoKey && result && typeof result === 'string' && result === '[DONE]') {\n\t\t\t\t\t\t\t\t\tconst index = chatList.value.findIndex((ele: any) => ele.chatId === chatId)\n\t\t\t\t\t\t\t\t\tif (index !== -1 && chatList.value[index]) {\n\t\t\t\t\t\t\t\t\t\tisChating.value = false\n\t\t\t\t\t\t\t\t\t\tchatList.value[index].isChating = false\n\t\t\t\t\t\t\t\t\t\temit('sendMessage', JSON.parse(JSON.stringify(chatList.value)))\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (chatList.value.some((ele: any) => ele.chatId === chatId)) {\n\t\t\t\t\t\t\t\tenqueueRender({\n\t\t\t\t\t\t\t\t\tmainContent: aiContent,\n\t\t\t\t\t\t\t\t\tthinkContent: '',\n\t\t\t\t\t\t\t\t\treasoningContent: reasoningContent\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// type === 1 的情况已经在上面单独处理,这里不再重复渲染\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tconsole.error('解析SSE消息失败:', error)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tondone: () => {\n\t\t\t\t\tnextTick(() => {\n\t\t\t\t\t\tisChating.value = false\n\t\t\t\t\t\tif (isUnmounting.value || !isMounted.value) return\n\t\t\t\t\t\tconst index = chatList.value.findIndex((ele: any) => ele.chatId === chatId)\n\t\t\t\t\t\tif (index !== -1 && chatList.value[index]) {\n\t\t\t\t\t\t\tchatList.value[index].isChating = false\n\t\t\t\t\t\t\tchatList.value[index].componentName = currentComponentName.value\n\t\t\t\t\t\t\tchatList.value[index].html = markdownToHtml(allAiContent)\n\t\t\t\t\t\t\tif (allAiContent) {\n\t\t\t\t\t\t\t\tif (resultItem.value) {\n\t\t\t\t\t\t\t\t\tresultItem.value.allAiContent = allAiContent\n\t\t\t\t\t\t\t\t\tafterSend(resultItem.value)\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tafterSend({ allAiContent })\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst waitForRenderComplete = () => {\n\t\t\t\t\t\t\t\t// 这里假设需要检查渲染队列,通过回调检查\n\t\t\t\t\t\t\t\tif (chatList.value.length > 0) {\n\t\t\t\t\t\t\t\t\temit('sendMessage', JSON.parse(JSON.stringify(chatList.value)))\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\twaitForRenderComplete()\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tonabort: () => {\n\t\t\t\t\thandleAbort()\n\t\t\t\t},\n\t\t\t\tonerror: (response: Error | Response) => {\n\t\t\t\t\thandleError(response)\n\t\t\t\t}\n\t\t\t})\n\t\t} catch (error) {\n\t\t\tconsole.error('OpenSSE错误:', error)\n\t\t\tisChating.value = false\n\t\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\">\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\"/>\n\t\t</svg>${'请求失败'}</div>`\n\t\t\tchatList.value[currIndex.value].isChating = false\n\t\t\tchatList.value[currIndex.value].isShowCopy = false\n\t\t\tchatList.value[currIndex.value].isShowLike = false\n\t\t\tshowToast('请求失败,请重试', 'error', 3000)\n\t\t}\n\t}\n\n\t// 处理请求中止\n\tconst handleAbort = (): void => {\n\t\tisChating.value = false\n\t\tif (isUnmounting.value) return\n\n\t\tconst currentAiMessage = chatList.value[currIndex.value]\n\t\tstop(chatList.value[currIndex.value], currIndex.value)\n\t\tconst hasContent = currentAiMessage && (currentAiMessage.content || currentAiMessage.thinkContent || currentAiMessage.reasoningContent)\n\n\t\tif (currentAiMessage) {\n\t\t\tif (currentAiMessage.thinkStatus === ThinkStatus.THINKING) {\n\t\t\t\tcurrentAiMessage.thinkStatus = ThinkStatus.STOPPED\n\t\t\t\tcurrentAiMessage.thinkTime = Date.now() - (currentAiMessage.thinkStartTime || Date.now())\n\t\t\t}\n\t\t\tif (!hasContent) {\n\t\t\t\tconst userMessageIndex = currIndex.value - 1\n\t\t\t\tif (userMessageIndex >= 0 && chatList.value[userMessageIndex].user === 'u') {\n\t\t\t\t\tchatList.value.splice(currIndex.value, 1)\n\t\t\t\t\tchatList.value.splice(userMessageIndex, 1)\n\t\t\t\t} else {\n\t\t\t\t\tchatList.value.splice(currIndex.value, 1)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst updatedAiMessage = {\n\t\t\t\t\t...currentAiMessage,\n\t\t\t\t\tisChating: false,\n\t\t\t\t\tcontent: currentAiMessage.content ? currentAiMessage.content + '...' : '',\n\t\t\t\t\tthinkContent: currentAiMessage.thinkContent ? currentAiMessage.thinkContent + '...' : undefined,\n\t\t\t\t\treasoningContent: currentAiMessage.reasoningContent ? currentAiMessage.reasoningContent + '...' : undefined,\n\t\t\t\t\tthinkStatus: currentAiMessage.thinkStatus as ThinkStatus,\n\t\t\t\t\tstop: true\n\t\t\t\t}\n\n\t\t\t\tchatList.value.splice(currIndex.value, 1, updatedAiMessage)\n\n\t\t\t\tnextTick(() => {\n\t\t\t\t\trenderContent(updatedAiMessage.thinkContent || '', 'thinking')\n\t\t\t\t\trenderContent(updatedAiMessage.reasoningContent || '', 'reasoning')\n\t\t\t\t\trenderContent(updatedAiMessage.content || '', 'main')\n\t\t\t\t\temit('sendMessage', [...chatList.value])\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tif (chatList.value.length > 0) {\n\t\t\temit('sendMessage', [...chatList.value])\n\t\t}\n\t}\n\n\t// 处理请求错误\n\tconst handleError = (response: Error | Response): void => {\n\t\tif (isUnmounting.value) return\n\t\tisChating.value = false\n\n\t\tlet errorMessage = '未知错误'\n\t\tif (response instanceof Error) {\n\t\t\tconsole.error('API请求错误:', response)\n\t\t\terrorMessage = response.message\n\t\t} else if (response instanceof Response) {\n\t\t\tconsole.error('API请求错误, 响应状态:', response.status, response.statusText)\n\t\t\terrorMessage = `请求失败: ${response.status} ${response.statusText}`\n\t\t}\n\n\t\tconst currentAiMessage = chatList.value[currIndex.value]\n\t\tif (currentAiMessage) {\n\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\">\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\"/>\n</svg>${errorMessage}</div>`\n\t\t\tcurrentAiMessage.isChating = false\n\t\t\tcurrentAiMessage.componentName = ''\n\t\t\tcurrentAiMessage.isShowLike = false\n\t\t\tcurrentAiMessage.isShowCopy = false\n\t\t\tcurrentAiMessage.isError = true\n\n\t\t\tnextTick(() => {\n\t\t\t\trenderContent(currentAiMessage.content || '', 'main')\n\t\t\t\temit('sendMessage', [...chatList.value])\n\t\t\t})\n\t\t} else {\n\t\t\tshowToast(errorMessage, 'error', 3000)\n\t\t\temit('sendMessage', [...chatList.value])\n\t\t}\n\t}\n\n\t// 清理 SSE 连接\n\tconst cleanupSSE = () => {\n\t\tif (fetchStream.value) {\n\t\t\tfetchStream.value.abort()\n\t\t\tfetchStream.value = null\n\t\t}\n\t}\n\n\treturn {\n\t\tfetchStream,\n\t\tresultItem,\n\t\topenSSE,\n\t\thandleAbort,\n\t\thandleError,\n\t\tcleanupSSE\n\t}\n}\n"],"names":["fetchStream","ref","ThinkStatus","FetchStream","_a","_b","_c","_d","_e","_f","_g","_h","_i","_j","_k","nextTick","currentAiMessage","showToast"],"mappings":"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"}
|
|
@@ -125,7 +125,11 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
125
125
|
ChatInputRef.value.itemUploadFile(index, "drop");
|
|
126
126
|
}
|
|
127
127
|
};
|
|
128
|
+
const setInputValue = vue.inject("setInput");
|
|
128
129
|
vue.onMounted(() => {
|
|
130
|
+
setInputValue.value = (value) => {
|
|
131
|
+
inputValue.value = value;
|
|
132
|
+
};
|
|
129
133
|
chatOnMounted();
|
|
130
134
|
vue.watch(
|
|
131
135
|
() => scripts,
|