@touchvue/chat 1.0.0-beta.41 → 1.0.0-beta.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/package.json.css +1 -1
- package/es/package.json.mjs +1 -1
- package/es/packages/components/touchchat/component/AiRobot/HelloChat.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/AiRobot/letter.vue.mjs +1 -1
- package/es/packages/components/touchchat/component/AiRobot/letter.vue2.mjs +15 -3
- package/es/packages/components/touchchat/component/AiRobot/letter.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/FileContent.vue2.mjs +3 -3
- package/es/packages/components/touchchat/component/FileContent.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/FileView.vue2.mjs +2 -2
- package/es/packages/components/touchchat/component/FileView.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/HelloChat.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/ImageFile.vue2.mjs +6 -6
- package/es/packages/components/touchchat/component/ImageFile.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/ImageView.vue2.mjs +1 -1
- package/es/packages/components/touchchat/component/ImageView.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/LinkView.vue2.mjs +4 -4
- package/es/packages/components/touchchat/component/LinkView.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/MarkLayer.vue2.mjs +1 -1
- package/es/packages/components/touchchat/component/MarkLayer.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/ModuleSelect.vue2.mjs +2 -2
- package/es/packages/components/touchchat/component/ModuleSelect.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/PDFFile.vue2.mjs +8 -8
- package/es/packages/components/touchchat/component/PDFFile.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/RealtimeVoice.vue2.mjs +1 -1
- package/es/packages/components/touchchat/component/RealtimeVoice.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/Screenshot.vue2.mjs +11 -2
- package/es/packages/components/touchchat/component/Screenshot.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/UploadView.vue2.mjs +10 -7
- package/es/packages/components/touchchat/component/UploadView.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/VoiceView.vue2.mjs +1 -1
- package/es/packages/components/touchchat/component/VoiceView.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/AgentsView.vue2.mjs +1 -1
- package/es/packages/components/touchchat/src/AiChat/AgentsView.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/AiMessage.vue2.mjs +22 -22
- package/es/packages/components/touchchat/src/AiChat/AiMessage.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/Chat/scriptMatcher.mjs +145 -0
- package/es/packages/components/touchchat/src/AiChat/Chat/scriptMatcher.mjs.map +1 -0
- package/es/packages/components/touchchat/src/AiChat/Chat/types.mjs +18 -0
- package/es/packages/components/touchchat/src/AiChat/Chat/types.mjs.map +1 -0
- package/es/packages/components/touchchat/src/AiChat/Chat/useChat.mjs +672 -0
- package/es/packages/components/touchchat/src/AiChat/Chat/useChat.mjs.map +1 -0
- package/es/packages/components/touchchat/src/AiChat/Chat/useCopy.mjs +55 -0
- package/es/packages/components/touchchat/src/AiChat/Chat/useCopy.mjs.map +1 -0
- package/es/packages/components/touchchat/src/AiChat/Chat/useMessageRender.mjs +155 -0
- package/es/packages/components/touchchat/src/AiChat/Chat/useMessageRender.mjs.map +1 -0
- package/es/packages/components/touchchat/src/AiChat/Chat/useSSE.mjs +352 -0
- package/es/packages/components/touchchat/src/AiChat/Chat/useSSE.mjs.map +1 -0
- package/es/packages/components/touchchat/src/AiChat/Chat/useScroll.mjs +74 -0
- package/es/packages/components/touchchat/src/AiChat/Chat/useScroll.mjs.map +1 -0
- package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs +8 -7
- package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/HistoryList.vue2.mjs +1 -1
- package/es/packages/components/touchchat/src/AiChat/HistoryList.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.mjs +3 -3
- package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/MessageActions.vue2.mjs +11 -11
- package/es/packages/components/touchchat/src/AiChat/MessageActions.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue2.mjs +3 -3
- package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/TouchAgent.vue2.mjs +33 -29
- package/es/packages/components/touchchat/src/AiChat/TouchAgent.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs +179 -1332
- package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue2.mjs +19 -6
- package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/UserMessage.vue2.mjs +14 -14
- package/es/packages/components/touchchat/src/AiChat/UserMessage.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/index.vue2.mjs +3 -3
- package/es/packages/components/touchchat/src/index.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/utils/a2aService.mjs +3 -2
- package/es/packages/components/touchchat/utils/a2aService.mjs.map +1 -1
- package/es/packages/components/touchchat/utils/fetchStream.mjs +2 -1
- package/es/packages/components/touchchat/utils/fetchStream.mjs.map +1 -1
- package/es/packages/components/touchchat/utils/markdown.mjs +30 -12
- package/es/packages/components/touchchat/utils/markdown.mjs.map +1 -1
- package/lib/package.json.css +1 -1
- package/lib/package.json.js +1 -1
- package/lib/packages/components/touchchat/component/AiRobot/HelloChat.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/AiRobot/letter.vue.js +1 -1
- package/lib/packages/components/touchchat/component/AiRobot/letter.vue2.js +15 -3
- package/lib/packages/components/touchchat/component/AiRobot/letter.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/FileContent.vue2.js +3 -3
- package/lib/packages/components/touchchat/component/FileContent.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/FileView.vue2.js +2 -2
- package/lib/packages/components/touchchat/component/FileView.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/HelloChat.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/ImageFile.vue2.js +6 -6
- package/lib/packages/components/touchchat/component/ImageFile.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/ImageView.vue2.js +1 -1
- package/lib/packages/components/touchchat/component/ImageView.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/LinkView.vue2.js +4 -4
- package/lib/packages/components/touchchat/component/LinkView.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/MarkLayer.vue2.js +1 -1
- package/lib/packages/components/touchchat/component/MarkLayer.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/ModuleSelect.vue2.js +2 -2
- package/lib/packages/components/touchchat/component/ModuleSelect.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/PDFFile.vue2.js +8 -8
- package/lib/packages/components/touchchat/component/PDFFile.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/RealtimeVoice.vue2.js +1 -1
- package/lib/packages/components/touchchat/component/RealtimeVoice.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/Screenshot.vue2.js +11 -2
- package/lib/packages/components/touchchat/component/Screenshot.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/UploadView.vue2.js +10 -7
- package/lib/packages/components/touchchat/component/UploadView.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/VoiceView.vue2.js +1 -1
- package/lib/packages/components/touchchat/component/VoiceView.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/AgentsView.vue2.js +1 -1
- package/lib/packages/components/touchchat/src/AiChat/AgentsView.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js +22 -22
- package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/Chat/scriptMatcher.js +147 -0
- package/lib/packages/components/touchchat/src/AiChat/Chat/scriptMatcher.js.map +1 -0
- package/lib/packages/components/touchchat/src/AiChat/Chat/types.js +21 -0
- package/lib/packages/components/touchchat/src/AiChat/Chat/types.js.map +1 -0
- package/lib/packages/components/touchchat/src/AiChat/Chat/useChat.js +674 -0
- package/lib/packages/components/touchchat/src/AiChat/Chat/useChat.js.map +1 -0
- package/lib/packages/components/touchchat/src/AiChat/Chat/useCopy.js +57 -0
- package/lib/packages/components/touchchat/src/AiChat/Chat/useCopy.js.map +1 -0
- package/lib/packages/components/touchchat/src/AiChat/Chat/useMessageRender.js +157 -0
- package/lib/packages/components/touchchat/src/AiChat/Chat/useMessageRender.js.map +1 -0
- package/lib/packages/components/touchchat/src/AiChat/Chat/useSSE.js +354 -0
- package/lib/packages/components/touchchat/src/AiChat/Chat/useSSE.js.map +1 -0
- package/lib/packages/components/touchchat/src/AiChat/Chat/useScroll.js +76 -0
- package/lib/packages/components/touchchat/src/AiChat/Chat/useScroll.js.map +1 -0
- package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js +8 -7
- package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue2.js +1 -1
- package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.js +3 -3
- package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue2.js +11 -11
- package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue2.js +3 -3
- package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/TouchAgent.vue2.js +49 -45
- package/lib/packages/components/touchchat/src/AiChat/TouchAgent.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js +179 -1332
- package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue2.js +19 -6
- package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue2.js +14 -14
- package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/index.vue2.js +3 -3
- package/lib/packages/components/touchchat/src/index.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/utils/a2aService.js +3 -2
- package/lib/packages/components/touchchat/utils/a2aService.js.map +1 -1
- package/lib/packages/components/touchchat/utils/fetchStream.js +2 -1
- package/lib/packages/components/touchchat/utils/fetchStream.js.map +1 -1
- package/lib/packages/components/touchchat/utils/markdown.js +30 -12
- package/lib/packages/components/touchchat/utils/markdown.js.map +1 -1
- package/package.json +1 -1
|
@@ -105,7 +105,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
105
105
|
return (_ctx, _cache) => {
|
|
106
106
|
return openBlock(), createElementBlock("div", {
|
|
107
107
|
class: "touchchat-ai touchchat-item",
|
|
108
|
-
"data-chat-id":
|
|
108
|
+
"data-chat-id": _ctx.item.chatId
|
|
109
109
|
}, [
|
|
110
110
|
createCommentVNode(" \u5934\u50CF\u533A\u57DF "),
|
|
111
111
|
createElementVNode("div", { class: "touchchat-ai-avatar" }, [
|
|
@@ -121,7 +121,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
121
121
|
createElementVNode(
|
|
122
122
|
"div",
|
|
123
123
|
{
|
|
124
|
-
class: normalizeClass(["touchchat-ai-content", { "is-full": !
|
|
124
|
+
class: normalizeClass(["touchchat-ai-content", { "is-full": !_ctx.item.isChating && _ctx.item.componentName }])
|
|
125
125
|
},
|
|
126
126
|
[
|
|
127
127
|
createCommentVNode(" \u6C14\u6CE1 "),
|
|
@@ -140,16 +140,16 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
140
140
|
createElementVNode("div", { class: "touchchat-ai-think-header" }, [
|
|
141
141
|
createElementVNode("div", { class: "touchchat-ai-think-state" }, [
|
|
142
142
|
createTextVNode(
|
|
143
|
-
toDisplayString(
|
|
143
|
+
toDisplayString(_ctx.item.thinkStatus === "thinking" ? "\u6DF1\u5EA6\u601D\u8003\u4E2D..." : _ctx.item.thinkStatus === "completed" ? "\u5DF2\u6DF1\u5EA6\u601D\u8003" : "\u601D\u8003\u5DF2\u505C\u6B62") + " ",
|
|
144
144
|
1
|
|
145
145
|
/* TEXT */
|
|
146
146
|
),
|
|
147
|
-
|
|
147
|
+
_ctx.item.thinkStatus === "completed" ? (openBlock(), createElementBlock(
|
|
148
148
|
Fragment,
|
|
149
149
|
{ key: 0 },
|
|
150
150
|
[
|
|
151
151
|
createTextVNode(
|
|
152
|
-
"\uFF08\u7528\u65F6" + toDisplayString((
|
|
152
|
+
"\uFF08\u7528\u65F6" + toDisplayString((_ctx.item.thinkTime || 0) / 1e3) + "\u79D2\uFF09",
|
|
153
153
|
1
|
|
154
154
|
/* TEXT */
|
|
155
155
|
)
|
|
@@ -201,8 +201,8 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
201
201
|
])) : createCommentVNode("v-if", true),
|
|
202
202
|
createCommentVNode(" \u4E3B\u5185\u5BB9 "),
|
|
203
203
|
renderSlot(_ctx.$slots, "aimsg", {
|
|
204
|
-
item:
|
|
205
|
-
index:
|
|
204
|
+
item: _ctx.item,
|
|
205
|
+
index: _ctx.index
|
|
206
206
|
}, () => [
|
|
207
207
|
contentShow.value && unref(scripts) && unref(scripts).length === 0 ? (openBlock(), createElementBlock("div", {
|
|
208
208
|
key: 0,
|
|
@@ -215,26 +215,26 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
215
215
|
unref(scripts) && unref(scripts).length > 0 ? (openBlock(), createBlock(Letter, {
|
|
216
216
|
key: 2,
|
|
217
217
|
"auto-start": "",
|
|
218
|
-
data:
|
|
218
|
+
data: _ctx.item.content,
|
|
219
219
|
onStart: startLetter,
|
|
220
220
|
onComplete: completeLetter
|
|
221
221
|
}, null, 8, ["data"])) : createCommentVNode("v-if", true),
|
|
222
222
|
createCommentVNode(" <span>letter222</span> "),
|
|
223
|
-
unref(scripts).length > 0 && (showComponent.value || !
|
|
223
|
+
unref(scripts).length > 0 && (showComponent.value || !_ctx.item.content) || !unref(scripts).length && !_ctx.item.isChating ? renderSlot(_ctx.$slots, "msg", {
|
|
224
224
|
key: 3,
|
|
225
|
-
item:
|
|
226
|
-
index:
|
|
225
|
+
item: _ctx.item,
|
|
226
|
+
index: _ctx.index
|
|
227
227
|
}, () => [
|
|
228
228
|
(openBlock(), createBlock(resolveDynamicComponent(componentName.value), {
|
|
229
|
-
index:
|
|
230
|
-
item:
|
|
229
|
+
index: _ctx.index,
|
|
230
|
+
item: _ctx.item,
|
|
231
231
|
onStart: startCompentent,
|
|
232
232
|
onComplete: completeCompentent,
|
|
233
233
|
onToggleSidebar: toggleSidebarClick
|
|
234
234
|
}, null, 40, ["index", "item"]))
|
|
235
235
|
]) : createCommentVNode("v-if", true),
|
|
236
236
|
createCommentVNode(" \u65B0\u589E\u52A0\u8F7D\u72B6\u6001\u533A\u57DF "),
|
|
237
|
-
|
|
237
|
+
_ctx.item.isChating ? (openBlock(), createElementBlock("div", {
|
|
238
238
|
key: 4,
|
|
239
239
|
class: "touchchat-ai-loading"
|
|
240
240
|
}, [
|
|
@@ -243,14 +243,14 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
243
243
|
])) : createCommentVNode("v-if", true)
|
|
244
244
|
]),
|
|
245
245
|
renderSlot(_ctx.$slots, "fn", {
|
|
246
|
-
item:
|
|
247
|
-
index:
|
|
246
|
+
item: _ctx.item,
|
|
247
|
+
index: _ctx.index
|
|
248
248
|
}, () => [
|
|
249
249
|
withDirectives(createVNode(MessageActions, {
|
|
250
|
-
item:
|
|
250
|
+
item: _ctx.item,
|
|
251
251
|
"message-type": "ai",
|
|
252
|
-
index:
|
|
253
|
-
"has-retry":
|
|
252
|
+
index: _ctx.index,
|
|
253
|
+
"has-retry": _ctx.hasRetry,
|
|
254
254
|
"show-copy": true,
|
|
255
255
|
onCopy,
|
|
256
256
|
onRetry,
|
|
@@ -259,14 +259,14 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
259
259
|
}, {
|
|
260
260
|
extendsFn: withCtx(() => [
|
|
261
261
|
renderSlot(_ctx.$slots, "extendsFn", {
|
|
262
|
-
item:
|
|
263
|
-
index:
|
|
262
|
+
item: _ctx.item,
|
|
263
|
+
index: _ctx.index
|
|
264
264
|
})
|
|
265
265
|
]),
|
|
266
266
|
_: 3
|
|
267
267
|
/* FORWARDED */
|
|
268
268
|
}, 8, ["item", "index", "has-retry"]), [
|
|
269
|
-
[vShow, showFn.value && unref(scripts).length > 0 || !unref(scripts).length && !
|
|
269
|
+
[vShow, showFn.value && unref(scripts).length > 0 || !unref(scripts).length && !_ctx.item.isChating]
|
|
270
270
|
])
|
|
271
271
|
]),
|
|
272
272
|
createCommentVNode(" && !scripts.length ")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AiMessage.vue2.mjs","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\" 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<!-- <span>letter111{{item}}</span> -->\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<!-- <span>letter222</span> -->\n\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\">\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 } from 'vue'\nimport type { ChatMessage } from './TouchChat.vue'\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'\n\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\n\t\tindex: number\n\t\thasRetry: boolean\n\t}>(),\n\t{\n\t\thasRetry: 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: 'contentRendered', element: HTMLElement): void\n\t(e: 'completeRendered', chatId: string): void\n\t(e: 'toggle-sidebar', 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 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 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\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)\n</script>\n"],"names":["aiAvatarBase","_createElementBlock","_createCommentVNode","_createElementVNode","_renderSlot","_normalizeClass","_createTextVNode","_toDisplayString","_Fragment","_createVNode","_Transition","_vShow","_unref","_createBlock","_openBlock","_resolveDynamicComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AiMessage.vue2.mjs","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\" 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<!-- <span>letter111{{item}}</span> -->\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<!-- <span>letter222</span> -->\n\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\">\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 } from 'vue'\nimport type { ChatMessage } 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'\n\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\n\t\tindex: number\n\t\thasRetry: boolean\n\t}>(),\n\t{\n\t\thasRetry: 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: 'contentRendered', element: HTMLElement): void\n\t(e: 'completeRendered', chatId: string): void\n\t(e: 'toggle-sidebar', 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 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 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\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)\n</script>\n"],"names":["aiAvatarBase","_createElementBlock","item","_createCommentVNode","_createElementVNode","_renderSlot","_normalizeClass","_Fragment","_createTextVNode","_createVNode","_Transition","_vShow","_unref","index","_createBlock","_openBlock","_resolveDynamicComponent","hasRetry"],"mappings":"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"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { ref } from 'vue';
|
|
2
|
+
|
|
3
|
+
function createScriptMatcher({ scripts, activeAgentsName, fileData }) {
|
|
4
|
+
const activeScript = ref(null);
|
|
5
|
+
const searchInScript = (script, userInput) => {
|
|
6
|
+
for (let i = 0; i < script.content.length; i++) {
|
|
7
|
+
const item = script.content[i];
|
|
8
|
+
if (item.user === "i") {
|
|
9
|
+
const isDataMatch = item.data && userInput.includes(item.data);
|
|
10
|
+
let isSubDataMatch = false;
|
|
11
|
+
if (item.alias) {
|
|
12
|
+
if (Array.isArray(item.alias)) {
|
|
13
|
+
isSubDataMatch = item.alias.some((subItem) => subItem === userInput);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
if (isDataMatch || isSubDataMatch) {
|
|
17
|
+
const responses = [];
|
|
18
|
+
for (let j = i + 1; j < script.content.length; j++) {
|
|
19
|
+
const nextItem = script.content[j];
|
|
20
|
+
if (nextItem.user === "i") {
|
|
21
|
+
break;
|
|
22
|
+
}
|
|
23
|
+
if (nextItem.user === "ai") {
|
|
24
|
+
if (nextItem.data && nextItem.type) {
|
|
25
|
+
responses.push({
|
|
26
|
+
...nextItem,
|
|
27
|
+
// 标记需要先流式输出文字,再调用组件
|
|
28
|
+
needSequenceProcessing: true
|
|
29
|
+
});
|
|
30
|
+
} else {
|
|
31
|
+
responses.push(nextItem);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const nextIndex = script.content.findIndex((contentItem, index) => index > i && contentItem.user === "i");
|
|
36
|
+
return { responses, nextIndex: nextIndex === -1 ? script.content.length : nextIndex };
|
|
37
|
+
}
|
|
38
|
+
} else if (item.user === "ai") {
|
|
39
|
+
scripts.value.forEach((script2) => {
|
|
40
|
+
if (script2.content.length) {
|
|
41
|
+
const contents = script2.content;
|
|
42
|
+
contents.forEach((item2) => {
|
|
43
|
+
if (item2.agents) {
|
|
44
|
+
if (item2.agents === activeAgentsName.value) {
|
|
45
|
+
activeScript.value = script2;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return null;
|
|
54
|
+
};
|
|
55
|
+
const findMatchingScriptContent = (userInput) => {
|
|
56
|
+
if (!scripts.value || scripts.value.length === 0)
|
|
57
|
+
return null;
|
|
58
|
+
const agentName = activeAgentsName.value ? activeAgentsName.value : localStorage.getItem("activeAgentsName") || "";
|
|
59
|
+
if (agentName) {
|
|
60
|
+
const agentMatchedScripts = scripts.value.filter((script) => {
|
|
61
|
+
return script.content.some((item) => item.agents === agentName);
|
|
62
|
+
});
|
|
63
|
+
if (agentMatchedScripts.length > 0) {
|
|
64
|
+
const fileTypeItems = agentMatchedScripts.flatMap((script) => script.content.filter((item) => item.file));
|
|
65
|
+
const fileTypes = fileTypeItems.map((item) => item.file);
|
|
66
|
+
const isFileTypeMatched = fileData.value.some((file) => {
|
|
67
|
+
const nameArr = file.name.split(".");
|
|
68
|
+
const name = nameArr[nameArr.length - 1];
|
|
69
|
+
const isMatched = fileTypes.includes(name);
|
|
70
|
+
return isMatched;
|
|
71
|
+
});
|
|
72
|
+
let matchedScriptContentIndex = -1;
|
|
73
|
+
if (!activeScript.value && isFileTypeMatched) {
|
|
74
|
+
activeScript.value = agentMatchedScripts[0];
|
|
75
|
+
}
|
|
76
|
+
if (isFileTypeMatched) {
|
|
77
|
+
for (const script of agentMatchedScripts) {
|
|
78
|
+
for (let i = 0; i < script.content.length; i++) {
|
|
79
|
+
const item = script.content[i];
|
|
80
|
+
if (item.file) {
|
|
81
|
+
const nameArr = fileData.value.map((file) => {
|
|
82
|
+
const fileExtArr = file.name.split(".");
|
|
83
|
+
return fileExtArr[fileExtArr.length - 1];
|
|
84
|
+
});
|
|
85
|
+
if (nameArr.includes(item.file)) {
|
|
86
|
+
matchedScriptContentIndex = i;
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
if (matchedScriptContentIndex !== -1) {
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
const responses = [];
|
|
96
|
+
const matchContent = agentMatchedScripts[0].content;
|
|
97
|
+
for (let j = matchedScriptContentIndex + 1; j < matchContent.length; j++) {
|
|
98
|
+
const nextItem = matchContent[j];
|
|
99
|
+
if (nextItem.user === "i") {
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
if (nextItem.user === "ai") {
|
|
103
|
+
if (nextItem.data && nextItem.type) {
|
|
104
|
+
responses.push({
|
|
105
|
+
...nextItem,
|
|
106
|
+
// 标记需要先流式输出文字,再调用组件
|
|
107
|
+
needSequenceProcessing: true
|
|
108
|
+
});
|
|
109
|
+
} else {
|
|
110
|
+
responses.push(nextItem);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
const nextIndex = matchContent.findIndex((contentItem, index) => index > matchedScriptContentIndex && contentItem.user === "i");
|
|
115
|
+
return {
|
|
116
|
+
responses,
|
|
117
|
+
nextIndex: nextIndex === -1 ? matchContent.length : nextIndex
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
if (activeScript.value) {
|
|
123
|
+
const result = searchInScript(activeScript.value, userInput);
|
|
124
|
+
if (result) {
|
|
125
|
+
return result;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
for (const script of scripts.value) {
|
|
129
|
+
const result = searchInScript(script, userInput);
|
|
130
|
+
if (result) {
|
|
131
|
+
activeScript.value = script;
|
|
132
|
+
return result;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return null;
|
|
136
|
+
};
|
|
137
|
+
return {
|
|
138
|
+
activeScript,
|
|
139
|
+
findMatchingScriptContent,
|
|
140
|
+
searchInScript
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export { createScriptMatcher };
|
|
145
|
+
//# sourceMappingURL=scriptMatcher.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scriptMatcher.mjs","sources":["../../../../../../../../packages/components/touchchat/src/AiChat/Chat/scriptMatcher.ts"],"sourcesContent":["/**\n * 脚本匹配逻辑\n */\n\nimport { ref, type Ref } from 'vue'\nimport type { Script, FileItem, ScriptMatchResult } from './types'\n\nexport interface ScriptMatcherOptions {\n\tscripts: Ref<any[]>\n\tactiveAgentsName: Ref<string>\n\tfileData: Ref<FileItem[]>\n\tunmatchText: string\n}\n\nexport function createScriptMatcher({ scripts, activeAgentsName, fileData }: ScriptMatcherOptions) {\n\tconst activeScript = ref<Script | null>(null)\n\n\t// 在脚本中搜索匹配内容\n\tconst searchInScript = (script: Script, userInput: string): ScriptMatchResult | null => {\n\t\tfor (let i = 0; i < script.content.length; i++) {\n\t\t\tconst item = script.content[i]\n\t\t\tif (item.user === 'i') {\n\t\t\t\t// 检查 data 是否匹配\n\t\t\t\tconst isDataMatch = item.data && userInput.includes(item.data)\n\t\t\t\t// 检查 alias 是否匹配\n\t\t\t\tlet isSubDataMatch = false\n\t\t\t\tif (item.alias) {\n\t\t\t\t\tif (Array.isArray(item.alias)) {\n\t\t\t\t\t\tisSubDataMatch = item.alias.some((subItem: string) => subItem === userInput)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (isDataMatch || isSubDataMatch) {\n\t\t\t\t\t// 收集 AI 回复\n\t\t\t\t\tconst responses: any[] = []\n\t\t\t\t\t// 从匹配位置的下一个元素开始遍历\n\t\t\t\t\tfor (let j = i + 1; j < script.content.length; j++) {\n\t\t\t\t\t\tconst nextItem = script.content[j]\n\t\t\t\t\t\tif (nextItem.user === 'i') {\n\t\t\t\t\t\t\tbreak // 遇到下一个用户消息,停止收集\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (nextItem.user === 'ai') {\n\t\t\t\t\t\t\tif (nextItem.data && nextItem.type) {\n\t\t\t\t\t\t\t\t// 合并 data 和 type 到一条响应中\n\t\t\t\t\t\t\t\tresponses.push({\n\t\t\t\t\t\t\t\t\t...nextItem,\n\t\t\t\t\t\t\t\t\t// 标记需要先流式输出文字,再调用组件\n\t\t\t\t\t\t\t\t\tneedSequenceProcessing: true\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tresponses.push(nextItem)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// 查找下一个用户消息的索引\n\t\t\t\t\tconst nextIndex = script.content.findIndex((contentItem: any, index: number) => index > i && contentItem.user === 'i')\n\t\t\t\t\treturn { responses, nextIndex: nextIndex === -1 ? script.content.length : nextIndex }\n\t\t\t\t}\n\t\t\t} else if (item.user === 'ai') {\n\t\t\t\tscripts.value.forEach((script: any) => {\n\t\t\t\t\tif (script.content.length) {\n\t\t\t\t\t\tconst contents = script.content\n\t\t\t\t\t\tcontents.forEach((item: any) => {\n\t\t\t\t\t\t\tif (item.agents) {\n\t\t\t\t\t\t\t\tif (item.agents === activeAgentsName.value) {\n\t\t\t\t\t\t\t\t\tactiveScript.value = script\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\treturn null\n\t}\n\n\t// 查找匹配的脚本内容\n\tconst findMatchingScriptContent = (userInput: string): ScriptMatchResult | null => {\n\t\tif (!scripts.value || scripts.value.length === 0) return null\n\n\t\tconst agentName = activeAgentsName.value ? activeAgentsName.value : localStorage.getItem('activeAgentsName') || ''\n\t\tif (agentName) {\n\t\t\tconst agentMatchedScripts = scripts.value.filter((script: any) => {\n\t\t\t\treturn script.content.some((item: any) => item.agents === agentName)\n\t\t\t})\n\t\t\tif (agentMatchedScripts.length > 0) {\n\t\t\t\tconst fileTypeItems = agentMatchedScripts.flatMap((script: any) => script.content.filter((item: any) => item.file))\n\t\t\t\tconst fileTypes = fileTypeItems.map((item: any) => item.file)\n\t\t\t\tconst isFileTypeMatched = fileData.value.some((file: any) => {\n\t\t\t\t\tconst nameArr = file.name.split('.')\n\t\t\t\t\tconst name = nameArr[nameArr.length - 1]\n\t\t\t\t\tconst isMatched = fileTypes.includes(name)\n\t\t\t\t\treturn isMatched\n\t\t\t\t})\n\t\t\t\t// 存储匹配的脚本内容下标\n\t\t\t\tlet matchedScriptContentIndex = -1\n\t\t\t\tif (!activeScript.value && isFileTypeMatched) {\n\t\t\t\t\tactiveScript.value = agentMatchedScripts[0]\n\t\t\t\t}\n\t\t\t\t// 智能体匹配成功,检查用户消息中是否有 file 字段\n\t\t\t\tif (isFileTypeMatched) {\n\t\t\t\t\t// 遍历所有匹配的脚本\n\t\t\t\t\tfor (const script of agentMatchedScripts) {\n\t\t\t\t\t\tfor (let i = 0; i < script.content.length; i++) {\n\t\t\t\t\t\t\tconst item = script.content[i]\n\t\t\t\t\t\t\tif (item.file) {\n\t\t\t\t\t\t\t\tconst nameArr = fileData.value.map((file: any) => {\n\t\t\t\t\t\t\t\t\tconst fileExtArr = file.name.split('.')\n\t\t\t\t\t\t\t\t\treturn fileExtArr[fileExtArr.length - 1]\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\tif (nameArr.includes(item.file)) {\n\t\t\t\t\t\t\t\t\tmatchedScriptContentIndex = i\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (matchedScriptContentIndex !== -1) {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst responses: any[] = []\n\t\t\t\t\tconst matchContent = agentMatchedScripts[0].content\n\t\t\t\t\tfor (let j = matchedScriptContentIndex + 1; j < matchContent.length; j++) {\n\t\t\t\t\t\tconst nextItem = matchContent[j]\n\t\t\t\t\t\tif (nextItem.user === 'i') {\n\t\t\t\t\t\t\tbreak // 遇到下一个用户消息,停止收集\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (nextItem.user === 'ai') {\n\t\t\t\t\t\t\tif (nextItem.data && nextItem.type) {\n\t\t\t\t\t\t\t\t// 合并 data 和 type 到一条响应中\n\t\t\t\t\t\t\t\tresponses.push({\n\t\t\t\t\t\t\t\t\t...nextItem,\n\t\t\t\t\t\t\t\t\t// 标记需要先流式输出文字,再调用组件\n\t\t\t\t\t\t\t\t\tneedSequenceProcessing: true\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tresponses.push(nextItem)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst nextIndex = matchContent.findIndex((contentItem: any, index: number) => index > matchedScriptContentIndex && contentItem.user === 'i')\n\t\t\t\t\treturn {\n\t\t\t\t\t\tresponses,\n\t\t\t\t\t\tnextIndex: nextIndex === -1 ? matchContent.length : nextIndex\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// agentName 有值但不存在带 agents 的剧本时,不拦截,继续下方通用剧本匹配\n\t\t}\n\n\t\t// 先尝试从当前激活的脚本中查找\n\t\tif (activeScript.value) {\n\t\t\tconst result = searchInScript(activeScript.value, userInput)\n\t\t\tif (result) {\n\t\t\t\treturn result\n\t\t\t}\n\t\t}\n\n\t\t// 若当前激活脚本未匹配,遍历所有脚本查找\n\t\tfor (const script of scripts.value) {\n\t\t\tconst result = searchInScript(script, userInput)\n\t\t\tif (result) {\n\t\t\t\tactiveScript.value = script\n\t\t\t\treturn result\n\t\t\t}\n\t\t}\n\n\t\treturn null\n\t}\n\n\treturn {\n\t\tactiveScript,\n\t\tfindMatchingScriptContent,\n\t\tsearchInScript\n\t}\n}\n"],"names":["script","item"],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
var ThinkStatus = /* @__PURE__ */ ((ThinkStatus2) => {
|
|
2
|
+
ThinkStatus2["THINKING"] = "thinking";
|
|
3
|
+
ThinkStatus2["COMPLETED"] = "completed";
|
|
4
|
+
ThinkStatus2["STOPPED"] = "stopped";
|
|
5
|
+
return ThinkStatus2;
|
|
6
|
+
})(ThinkStatus || {});
|
|
7
|
+
var MessageAction = /* @__PURE__ */ ((MessageAction2) => {
|
|
8
|
+
MessageAction2["COPY"] = "copy";
|
|
9
|
+
MessageAction2["EDIT"] = "edit";
|
|
10
|
+
MessageAction2["DELETE"] = "delete";
|
|
11
|
+
MessageAction2["RETRY"] = "retry";
|
|
12
|
+
MessageAction2["LIKE"] = "like";
|
|
13
|
+
MessageAction2["DISLIKE"] = "dislike";
|
|
14
|
+
return MessageAction2;
|
|
15
|
+
})(MessageAction || {});
|
|
16
|
+
|
|
17
|
+
export { MessageAction, ThinkStatus };
|
|
18
|
+
//# sourceMappingURL=types.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.mjs","sources":["../../../../../../../../packages/components/touchchat/src/AiChat/Chat/types.ts"],"sourcesContent":["/**\n * TouchChat 类型定义\n */\n\nexport enum ThinkStatus {\n\tTHINKING = 'thinking',\n\tCOMPLETED = 'completed',\n\tSTOPPED = 'stopped'\n}\n\nexport interface ChatMessage {\n\tchatId?: string\n\tuser: 'u' | 'ai' | string\n\ttype: string\n\tcontent: string\n\tisChating?: boolean\n\tthinkContent?: string\n\treasoningContent?: string\n\tisLiked?: boolean\n\tisDisliked?: boolean\n\tisEditing?: boolean\n\teditContent?: string\n\tthinkStatus?: ThinkStatus\n\tthinkStartTime?: number\n\tthinkTime?: number\n\tthinkEndTime?: number\n\tisShowLike?: boolean\n\tisShowCopy?: boolean\n\tcomponentName?: string\n\ttypeFlag?: string\n\tfiles?: FileItem[]\n\thtml?: string\n\tisError?: boolean\n\tauto?: boolean\n\tneedSequenceProcessing?: boolean\n\tneedSequenceType?: string\n\tstop?: boolean\n}\n\nexport interface AgentsItem {\n\tname: string\n\tintro: string\n\t[key: string]: any\n}\n\nexport interface ScriptContentItem {\n\tuser: 'i' | 'ai'\n\tdata?: string\n\ttype?: string\n\tagents?: string\n\tfile?: string\n\talias?: string | string[]\n\t[key: string]: any\n}\n\nexport interface Script {\n\tcontent: ScriptContentItem[]\n\t[key: string]: any\n}\n\nexport interface ModuleConfig {\n\taction?: () => string\n\theaders?: () => Record<string, string>\n\tbody?: () => Record<string, any>\n\trespoKey?: () => RespoKeyConfig\n\tname?: string\n}\n\nexport interface RespoKeyConfig {\n\tcontent: string\n\tcategory: string\n\tcontentCategory?: string\n\tall?: string\n\tallCategory?: string\n}\n\nexport interface ModuleItem {\n\tname?: string\n\tconfig?: ModuleConfig\n\t[key: string]: any\n}\n\nexport interface FileItem {\n\tid?: string\n\tfile?: File\n\tname: string\n\tfileType: string\n\tfileSize: string\n\tlastModified: number\n\tpreview?: string\n\tbase64?: string\n\t// 文件上传相关字段\n\tisUploading?: boolean\n\tuploadProgress?: number\n\tuploadSuccess?: boolean\n\tuploadError?: boolean\n\t[key: string]: any\n}\n\nexport interface RenderData {\n\tmainContent: string\n\tthinkContent: string\n\treasoningContent: string\n}\n\nexport enum MessageAction {\n\tCOPY = 'copy',\n\tEDIT = 'edit',\n\tDELETE = 'delete',\n\tRETRY = 'retry',\n\tLIKE = 'like',\n\tDISLIKE = 'dislike'\n}\n\nexport interface ResultItem {\n\tallAiContent?: string\n\t[key: string]: any\n}\n\nexport interface MessageProcessor {\n\tmessageQueue: ChatMessage[]\n\tisProcessing: boolean\n\tcurrentMessage: ChatMessage | null\n\tprocessNextMessage: () => void\n\thandleMessageComplete: (chatId: string) => void\n}\n\nexport interface ScriptMatchResult {\n\tresponses: any[]\n\tnextIndex: number\n}\n"],"names":["ThinkStatus","MessageAction"],"mappings":"AAIY,IAAA,WAAA,qBAAAA,YAAL,KAAA;AACN,EAAAA,aAAA,UAAW,CAAA,GAAA,UAAA,CAAA;AACX,EAAAA,aAAA,WAAY,CAAA,GAAA,WAAA,CAAA;AACZ,EAAAA,aAAA,SAAU,CAAA,GAAA,SAAA,CAAA;AAHC,EAAAA,OAAAA,YAAAA,CAAAA;AAAA,CAAA,EAAA,WAAA,IAAA,EAAA,EAAA;AAqGA,IAAA,aAAA,qBAAAC,cAAL,KAAA;AACN,EAAAA,eAAA,MAAO,CAAA,GAAA,MAAA,CAAA;AACP,EAAAA,eAAA,MAAO,CAAA,GAAA,MAAA,CAAA;AACP,EAAAA,eAAA,QAAS,CAAA,GAAA,QAAA,CAAA;AACT,EAAAA,eAAA,OAAQ,CAAA,GAAA,OAAA,CAAA;AACR,EAAAA,eAAA,MAAO,CAAA,GAAA,MAAA,CAAA;AACP,EAAAA,eAAA,SAAU,CAAA,GAAA,SAAA,CAAA;AANC,EAAAA,OAAAA,cAAAA,CAAAA;AAAA,CAAA,EAAA,aAAA,IAAA,EAAA;;;;"}
|