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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/es/package.json.css +1 -1
  2. package/es/package.json.mjs +1 -1
  3. package/es/packages/components/touchchat/component/AiRobot/HelloChat.vue2.mjs.map +1 -1
  4. package/es/packages/components/touchchat/component/AiRobot/letter.vue.mjs +1 -1
  5. package/es/packages/components/touchchat/component/AiRobot/letter.vue2.mjs +15 -3
  6. package/es/packages/components/touchchat/component/AiRobot/letter.vue2.mjs.map +1 -1
  7. package/es/packages/components/touchchat/component/FileContent.vue2.mjs +3 -3
  8. package/es/packages/components/touchchat/component/FileContent.vue2.mjs.map +1 -1
  9. package/es/packages/components/touchchat/component/FileView.vue2.mjs +2 -2
  10. package/es/packages/components/touchchat/component/FileView.vue2.mjs.map +1 -1
  11. package/es/packages/components/touchchat/component/HelloChat.vue2.mjs.map +1 -1
  12. package/es/packages/components/touchchat/component/ImageFile.vue2.mjs +6 -6
  13. package/es/packages/components/touchchat/component/ImageFile.vue2.mjs.map +1 -1
  14. package/es/packages/components/touchchat/component/ImageView.vue2.mjs +1 -1
  15. package/es/packages/components/touchchat/component/ImageView.vue2.mjs.map +1 -1
  16. package/es/packages/components/touchchat/component/LinkView.vue2.mjs +4 -4
  17. package/es/packages/components/touchchat/component/LinkView.vue2.mjs.map +1 -1
  18. package/es/packages/components/touchchat/component/MarkLayer.vue2.mjs +1 -1
  19. package/es/packages/components/touchchat/component/MarkLayer.vue2.mjs.map +1 -1
  20. package/es/packages/components/touchchat/component/ModuleSelect.vue2.mjs +2 -2
  21. package/es/packages/components/touchchat/component/ModuleSelect.vue2.mjs.map +1 -1
  22. package/es/packages/components/touchchat/component/PDFFile.vue2.mjs +8 -8
  23. package/es/packages/components/touchchat/component/PDFFile.vue2.mjs.map +1 -1
  24. package/es/packages/components/touchchat/component/RealtimeVoice.vue2.mjs +1 -1
  25. package/es/packages/components/touchchat/component/RealtimeVoice.vue2.mjs.map +1 -1
  26. package/es/packages/components/touchchat/component/Screenshot.vue2.mjs +11 -2
  27. package/es/packages/components/touchchat/component/Screenshot.vue2.mjs.map +1 -1
  28. package/es/packages/components/touchchat/component/UploadView.vue2.mjs +10 -7
  29. package/es/packages/components/touchchat/component/UploadView.vue2.mjs.map +1 -1
  30. package/es/packages/components/touchchat/component/VoiceView.vue2.mjs +1 -1
  31. package/es/packages/components/touchchat/component/VoiceView.vue2.mjs.map +1 -1
  32. package/es/packages/components/touchchat/src/AiChat/AgentsView.vue2.mjs +1 -1
  33. package/es/packages/components/touchchat/src/AiChat/AgentsView.vue2.mjs.map +1 -1
  34. package/es/packages/components/touchchat/src/AiChat/AiMessage.vue2.mjs +22 -22
  35. package/es/packages/components/touchchat/src/AiChat/AiMessage.vue2.mjs.map +1 -1
  36. package/es/packages/components/touchchat/src/AiChat/Chat/scriptMatcher.mjs +145 -0
  37. package/es/packages/components/touchchat/src/AiChat/Chat/scriptMatcher.mjs.map +1 -0
  38. package/es/packages/components/touchchat/src/AiChat/Chat/types.mjs +18 -0
  39. package/es/packages/components/touchchat/src/AiChat/Chat/types.mjs.map +1 -0
  40. package/es/packages/components/touchchat/src/AiChat/Chat/useChat.mjs +672 -0
  41. package/es/packages/components/touchchat/src/AiChat/Chat/useChat.mjs.map +1 -0
  42. package/es/packages/components/touchchat/src/AiChat/Chat/useCopy.mjs +55 -0
  43. package/es/packages/components/touchchat/src/AiChat/Chat/useCopy.mjs.map +1 -0
  44. package/es/packages/components/touchchat/src/AiChat/Chat/useMessageRender.mjs +155 -0
  45. package/es/packages/components/touchchat/src/AiChat/Chat/useMessageRender.mjs.map +1 -0
  46. package/es/packages/components/touchchat/src/AiChat/Chat/useSSE.mjs +352 -0
  47. package/es/packages/components/touchchat/src/AiChat/Chat/useSSE.mjs.map +1 -0
  48. package/es/packages/components/touchchat/src/AiChat/Chat/useScroll.mjs +74 -0
  49. package/es/packages/components/touchchat/src/AiChat/Chat/useScroll.mjs.map +1 -0
  50. package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs +8 -7
  51. package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs.map +1 -1
  52. package/es/packages/components/touchchat/src/AiChat/HistoryList.vue2.mjs +1 -1
  53. package/es/packages/components/touchchat/src/AiChat/HistoryList.vue2.mjs.map +1 -1
  54. package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.mjs +3 -3
  55. package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.mjs.map +1 -1
  56. package/es/packages/components/touchchat/src/AiChat/MessageActions.vue2.mjs +11 -11
  57. package/es/packages/components/touchchat/src/AiChat/MessageActions.vue2.mjs.map +1 -1
  58. package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue2.mjs +3 -3
  59. package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue2.mjs.map +1 -1
  60. package/es/packages/components/touchchat/src/AiChat/TouchAgent.vue2.mjs +33 -29
  61. package/es/packages/components/touchchat/src/AiChat/TouchAgent.vue2.mjs.map +1 -1
  62. package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs +179 -1332
  63. package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs.map +1 -1
  64. package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue2.mjs +19 -6
  65. package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue2.mjs.map +1 -1
  66. package/es/packages/components/touchchat/src/AiChat/UserMessage.vue2.mjs +14 -14
  67. package/es/packages/components/touchchat/src/AiChat/UserMessage.vue2.mjs.map +1 -1
  68. package/es/packages/components/touchchat/src/index.vue2.mjs +3 -3
  69. package/es/packages/components/touchchat/src/index.vue2.mjs.map +1 -1
  70. package/es/packages/components/touchchat/utils/a2aService.mjs +3 -2
  71. package/es/packages/components/touchchat/utils/a2aService.mjs.map +1 -1
  72. package/es/packages/components/touchchat/utils/fetchStream.mjs +2 -1
  73. package/es/packages/components/touchchat/utils/fetchStream.mjs.map +1 -1
  74. package/es/packages/components/touchchat/utils/markdown.mjs +30 -12
  75. package/es/packages/components/touchchat/utils/markdown.mjs.map +1 -1
  76. package/lib/package.json.css +1 -1
  77. package/lib/package.json.js +1 -1
  78. package/lib/packages/components/touchchat/component/AiRobot/HelloChat.vue2.js.map +1 -1
  79. package/lib/packages/components/touchchat/component/AiRobot/letter.vue.js +1 -1
  80. package/lib/packages/components/touchchat/component/AiRobot/letter.vue2.js +15 -3
  81. package/lib/packages/components/touchchat/component/AiRobot/letter.vue2.js.map +1 -1
  82. package/lib/packages/components/touchchat/component/FileContent.vue2.js +3 -3
  83. package/lib/packages/components/touchchat/component/FileContent.vue2.js.map +1 -1
  84. package/lib/packages/components/touchchat/component/FileView.vue2.js +2 -2
  85. package/lib/packages/components/touchchat/component/FileView.vue2.js.map +1 -1
  86. package/lib/packages/components/touchchat/component/HelloChat.vue2.js.map +1 -1
  87. package/lib/packages/components/touchchat/component/ImageFile.vue2.js +6 -6
  88. package/lib/packages/components/touchchat/component/ImageFile.vue2.js.map +1 -1
  89. package/lib/packages/components/touchchat/component/ImageView.vue2.js +1 -1
  90. package/lib/packages/components/touchchat/component/ImageView.vue2.js.map +1 -1
  91. package/lib/packages/components/touchchat/component/LinkView.vue2.js +4 -4
  92. package/lib/packages/components/touchchat/component/LinkView.vue2.js.map +1 -1
  93. package/lib/packages/components/touchchat/component/MarkLayer.vue2.js +1 -1
  94. package/lib/packages/components/touchchat/component/MarkLayer.vue2.js.map +1 -1
  95. package/lib/packages/components/touchchat/component/ModuleSelect.vue2.js +2 -2
  96. package/lib/packages/components/touchchat/component/ModuleSelect.vue2.js.map +1 -1
  97. package/lib/packages/components/touchchat/component/PDFFile.vue2.js +8 -8
  98. package/lib/packages/components/touchchat/component/PDFFile.vue2.js.map +1 -1
  99. package/lib/packages/components/touchchat/component/RealtimeVoice.vue2.js +1 -1
  100. package/lib/packages/components/touchchat/component/RealtimeVoice.vue2.js.map +1 -1
  101. package/lib/packages/components/touchchat/component/Screenshot.vue2.js +11 -2
  102. package/lib/packages/components/touchchat/component/Screenshot.vue2.js.map +1 -1
  103. package/lib/packages/components/touchchat/component/UploadView.vue2.js +10 -7
  104. package/lib/packages/components/touchchat/component/UploadView.vue2.js.map +1 -1
  105. package/lib/packages/components/touchchat/component/VoiceView.vue2.js +1 -1
  106. package/lib/packages/components/touchchat/component/VoiceView.vue2.js.map +1 -1
  107. package/lib/packages/components/touchchat/src/AiChat/AgentsView.vue2.js +1 -1
  108. package/lib/packages/components/touchchat/src/AiChat/AgentsView.vue2.js.map +1 -1
  109. package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js +22 -22
  110. package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js.map +1 -1
  111. package/lib/packages/components/touchchat/src/AiChat/Chat/scriptMatcher.js +147 -0
  112. package/lib/packages/components/touchchat/src/AiChat/Chat/scriptMatcher.js.map +1 -0
  113. package/lib/packages/components/touchchat/src/AiChat/Chat/types.js +21 -0
  114. package/lib/packages/components/touchchat/src/AiChat/Chat/types.js.map +1 -0
  115. package/lib/packages/components/touchchat/src/AiChat/Chat/useChat.js +674 -0
  116. package/lib/packages/components/touchchat/src/AiChat/Chat/useChat.js.map +1 -0
  117. package/lib/packages/components/touchchat/src/AiChat/Chat/useCopy.js +57 -0
  118. package/lib/packages/components/touchchat/src/AiChat/Chat/useCopy.js.map +1 -0
  119. package/lib/packages/components/touchchat/src/AiChat/Chat/useMessageRender.js +157 -0
  120. package/lib/packages/components/touchchat/src/AiChat/Chat/useMessageRender.js.map +1 -0
  121. package/lib/packages/components/touchchat/src/AiChat/Chat/useSSE.js +354 -0
  122. package/lib/packages/components/touchchat/src/AiChat/Chat/useSSE.js.map +1 -0
  123. package/lib/packages/components/touchchat/src/AiChat/Chat/useScroll.js +76 -0
  124. package/lib/packages/components/touchchat/src/AiChat/Chat/useScroll.js.map +1 -0
  125. package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js +8 -7
  126. package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js.map +1 -1
  127. package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue2.js +1 -1
  128. package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue2.js.map +1 -1
  129. package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.js +3 -3
  130. package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.js.map +1 -1
  131. package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue2.js +11 -11
  132. package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue2.js.map +1 -1
  133. package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue2.js +3 -3
  134. package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue2.js.map +1 -1
  135. package/lib/packages/components/touchchat/src/AiChat/TouchAgent.vue2.js +49 -45
  136. package/lib/packages/components/touchchat/src/AiChat/TouchAgent.vue2.js.map +1 -1
  137. package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js +179 -1332
  138. package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js.map +1 -1
  139. package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue2.js +19 -6
  140. package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue2.js.map +1 -1
  141. package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue2.js +14 -14
  142. package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue2.js.map +1 -1
  143. package/lib/packages/components/touchchat/src/index.vue2.js +3 -3
  144. package/lib/packages/components/touchchat/src/index.vue2.js.map +1 -1
  145. package/lib/packages/components/touchchat/utils/a2aService.js +3 -2
  146. package/lib/packages/components/touchchat/utils/a2aService.js.map +1 -1
  147. package/lib/packages/components/touchchat/utils/fetchStream.js +2 -1
  148. package/lib/packages/components/touchchat/utils/fetchStream.js.map +1 -1
  149. package/lib/packages/components/touchchat/utils/markdown.js +30 -12
  150. package/lib/packages/components/touchchat/utils/markdown.js.map +1 -1
  151. package/package.json +1 -1
@@ -109,7 +109,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
109
109
  return (_ctx, _cache) => {
110
110
  return vue.openBlock(), vue.createElementBlock("div", {
111
111
  class: "touchchat-ai touchchat-item",
112
- "data-chat-id": __props.item.chatId
112
+ "data-chat-id": _ctx.item.chatId
113
113
  }, [
114
114
  vue.createCommentVNode(" \u5934\u50CF\u533A\u57DF "),
115
115
  vue.createElementVNode("div", { class: "touchchat-ai-avatar" }, [
@@ -125,7 +125,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
125
125
  vue.createElementVNode(
126
126
  "div",
127
127
  {
128
- class: vue.normalizeClass(["touchchat-ai-content", { "is-full": !__props.item.isChating && __props.item.componentName }])
128
+ class: vue.normalizeClass(["touchchat-ai-content", { "is-full": !_ctx.item.isChating && _ctx.item.componentName }])
129
129
  },
130
130
  [
131
131
  vue.createCommentVNode(" \u6C14\u6CE1 "),
@@ -144,16 +144,16 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
144
144
  vue.createElementVNode("div", { class: "touchchat-ai-think-header" }, [
145
145
  vue.createElementVNode("div", { class: "touchchat-ai-think-state" }, [
146
146
  vue.createTextVNode(
147
- vue.toDisplayString(__props.item.thinkStatus === "thinking" ? "\u6DF1\u5EA6\u601D\u8003\u4E2D..." : __props.item.thinkStatus === "completed" ? "\u5DF2\u6DF1\u5EA6\u601D\u8003" : "\u601D\u8003\u5DF2\u505C\u6B62") + " ",
147
+ vue.toDisplayString(_ctx.item.thinkStatus === "thinking" ? "\u6DF1\u5EA6\u601D\u8003\u4E2D..." : _ctx.item.thinkStatus === "completed" ? "\u5DF2\u6DF1\u5EA6\u601D\u8003" : "\u601D\u8003\u5DF2\u505C\u6B62") + " ",
148
148
  1
149
149
  /* TEXT */
150
150
  ),
151
- __props.item.thinkStatus === "completed" ? (vue.openBlock(), vue.createElementBlock(
151
+ _ctx.item.thinkStatus === "completed" ? (vue.openBlock(), vue.createElementBlock(
152
152
  vue.Fragment,
153
153
  { key: 0 },
154
154
  [
155
155
  vue.createTextVNode(
156
- "\uFF08\u7528\u65F6" + vue.toDisplayString((__props.item.thinkTime || 0) / 1e3) + "\u79D2\uFF09",
156
+ "\uFF08\u7528\u65F6" + vue.toDisplayString((_ctx.item.thinkTime || 0) / 1e3) + "\u79D2\uFF09",
157
157
  1
158
158
  /* TEXT */
159
159
  )
@@ -205,8 +205,8 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
205
205
  ])) : vue.createCommentVNode("v-if", true),
206
206
  vue.createCommentVNode(" \u4E3B\u5185\u5BB9 "),
207
207
  vue.renderSlot(_ctx.$slots, "aimsg", {
208
- item: __props.item,
209
- index: __props.index
208
+ item: _ctx.item,
209
+ index: _ctx.index
210
210
  }, () => [
211
211
  contentShow.value && vue.unref(scripts) && vue.unref(scripts).length === 0 ? (vue.openBlock(), vue.createElementBlock("div", {
212
212
  key: 0,
@@ -219,26 +219,26 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
219
219
  vue.unref(scripts) && vue.unref(scripts).length > 0 ? (vue.openBlock(), vue.createBlock(letter.default, {
220
220
  key: 2,
221
221
  "auto-start": "",
222
- data: __props.item.content,
222
+ data: _ctx.item.content,
223
223
  onStart: startLetter,
224
224
  onComplete: completeLetter
225
225
  }, null, 8, ["data"])) : vue.createCommentVNode("v-if", true),
226
226
  vue.createCommentVNode(" <span>letter222</span> "),
227
- vue.unref(scripts).length > 0 && (showComponent.value || !__props.item.content) || !vue.unref(scripts).length && !__props.item.isChating ? vue.renderSlot(_ctx.$slots, "msg", {
227
+ vue.unref(scripts).length > 0 && (showComponent.value || !_ctx.item.content) || !vue.unref(scripts).length && !_ctx.item.isChating ? vue.renderSlot(_ctx.$slots, "msg", {
228
228
  key: 3,
229
- item: __props.item,
230
- index: __props.index
229
+ item: _ctx.item,
230
+ index: _ctx.index
231
231
  }, () => [
232
232
  (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(componentName.value), {
233
- index: __props.index,
234
- item: __props.item,
233
+ index: _ctx.index,
234
+ item: _ctx.item,
235
235
  onStart: startCompentent,
236
236
  onComplete: completeCompentent,
237
237
  onToggleSidebar: toggleSidebarClick
238
238
  }, null, 40, ["index", "item"]))
239
239
  ]) : vue.createCommentVNode("v-if", true),
240
240
  vue.createCommentVNode(" \u65B0\u589E\u52A0\u8F7D\u72B6\u6001\u533A\u57DF "),
241
- __props.item.isChating ? (vue.openBlock(), vue.createElementBlock("div", {
241
+ _ctx.item.isChating ? (vue.openBlock(), vue.createElementBlock("div", {
242
242
  key: 4,
243
243
  class: "touchchat-ai-loading"
244
244
  }, [
@@ -247,14 +247,14 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
247
247
  ])) : vue.createCommentVNode("v-if", true)
248
248
  ]),
249
249
  vue.renderSlot(_ctx.$slots, "fn", {
250
- item: __props.item,
251
- index: __props.index
250
+ item: _ctx.item,
251
+ index: _ctx.index
252
252
  }, () => [
253
253
  vue.withDirectives(vue.createVNode(MessageActions.default, {
254
- item: __props.item,
254
+ item: _ctx.item,
255
255
  "message-type": "ai",
256
- index: __props.index,
257
- "has-retry": __props.hasRetry,
256
+ index: _ctx.index,
257
+ "has-retry": _ctx.hasRetry,
258
258
  "show-copy": true,
259
259
  onCopy,
260
260
  onRetry,
@@ -263,14 +263,14 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
263
263
  }, {
264
264
  extendsFn: vue.withCtx(() => [
265
265
  vue.renderSlot(_ctx.$slots, "extendsFn", {
266
- item: __props.item,
267
- index: __props.index
266
+ item: _ctx.item,
267
+ index: _ctx.index
268
268
  })
269
269
  ]),
270
270
  _: 3
271
271
  /* FORWARDED */
272
272
  }, 8, ["item", "index", "has-retry"]), [
273
- [vue.vShow, showFn.value && vue.unref(scripts).length > 0 || !vue.unref(scripts).length && !__props.item.isChating]
273
+ [vue.vShow, showFn.value && vue.unref(scripts).length > 0 || !vue.unref(scripts).length && !_ctx.item.isChating]
274
274
  ])
275
275
  ]),
276
276
  vue.createCommentVNode(" && !scripts.length ")
@@ -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\" 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":["FileView","ImageView","LinkView","CardView","Face","MeterialPrepare","ref","aiAvatarBase","inject","computed","markdown","onMounted","_createElementBlock","_createCommentVNode","_createElementVNode","_renderSlot","_normalizeClass","_createTextVNode","_toDisplayString","_Fragment","_createVNode","_Transition","_vShow","_unref","ThoughtChain","_createBlock","Letter","_openBlock","_resolveDynamicComponent","MessageActions"],"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\" 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":["FileView","ImageView","LinkView","CardView","Face","MeterialPrepare","ref","aiAvatarBase","inject","computed","markdown","onMounted","_createElementBlock","item","_createCommentVNode","_createElementVNode","_renderSlot","_normalizeClass","_Fragment","_createTextVNode","_createVNode","_Transition","_vShow","_unref","ThoughtChain","index","_createBlock","Letter","_openBlock","_resolveDynamicComponent","MessageActions","hasRetry"],"mappings":"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"}
@@ -0,0 +1,147 @@
1
+ 'use strict';
2
+
3
+ var vue = require('vue');
4
+
5
+ function createScriptMatcher({ scripts, activeAgentsName, fileData }) {
6
+ const activeScript = vue.ref(null);
7
+ const searchInScript = (script, userInput) => {
8
+ for (let i = 0; i < script.content.length; i++) {
9
+ const item = script.content[i];
10
+ if (item.user === "i") {
11
+ const isDataMatch = item.data && userInput.includes(item.data);
12
+ let isSubDataMatch = false;
13
+ if (item.alias) {
14
+ if (Array.isArray(item.alias)) {
15
+ isSubDataMatch = item.alias.some((subItem) => subItem === userInput);
16
+ }
17
+ }
18
+ if (isDataMatch || isSubDataMatch) {
19
+ const responses = [];
20
+ for (let j = i + 1; j < script.content.length; j++) {
21
+ const nextItem = script.content[j];
22
+ if (nextItem.user === "i") {
23
+ break;
24
+ }
25
+ if (nextItem.user === "ai") {
26
+ if (nextItem.data && nextItem.type) {
27
+ responses.push({
28
+ ...nextItem,
29
+ // 标记需要先流式输出文字,再调用组件
30
+ needSequenceProcessing: true
31
+ });
32
+ } else {
33
+ responses.push(nextItem);
34
+ }
35
+ }
36
+ }
37
+ const nextIndex = script.content.findIndex((contentItem, index) => index > i && contentItem.user === "i");
38
+ return { responses, nextIndex: nextIndex === -1 ? script.content.length : nextIndex };
39
+ }
40
+ } else if (item.user === "ai") {
41
+ scripts.value.forEach((script2) => {
42
+ if (script2.content.length) {
43
+ const contents = script2.content;
44
+ contents.forEach((item2) => {
45
+ if (item2.agents) {
46
+ if (item2.agents === activeAgentsName.value) {
47
+ activeScript.value = script2;
48
+ }
49
+ }
50
+ });
51
+ }
52
+ });
53
+ }
54
+ }
55
+ return null;
56
+ };
57
+ const findMatchingScriptContent = (userInput) => {
58
+ if (!scripts.value || scripts.value.length === 0)
59
+ return null;
60
+ const agentName = activeAgentsName.value ? activeAgentsName.value : localStorage.getItem("activeAgentsName") || "";
61
+ if (agentName) {
62
+ const agentMatchedScripts = scripts.value.filter((script) => {
63
+ return script.content.some((item) => item.agents === agentName);
64
+ });
65
+ if (agentMatchedScripts.length > 0) {
66
+ const fileTypeItems = agentMatchedScripts.flatMap((script) => script.content.filter((item) => item.file));
67
+ const fileTypes = fileTypeItems.map((item) => item.file);
68
+ const isFileTypeMatched = fileData.value.some((file) => {
69
+ const nameArr = file.name.split(".");
70
+ const name = nameArr[nameArr.length - 1];
71
+ const isMatched = fileTypes.includes(name);
72
+ return isMatched;
73
+ });
74
+ let matchedScriptContentIndex = -1;
75
+ if (!activeScript.value && isFileTypeMatched) {
76
+ activeScript.value = agentMatchedScripts[0];
77
+ }
78
+ if (isFileTypeMatched) {
79
+ for (const script of agentMatchedScripts) {
80
+ for (let i = 0; i < script.content.length; i++) {
81
+ const item = script.content[i];
82
+ if (item.file) {
83
+ const nameArr = fileData.value.map((file) => {
84
+ const fileExtArr = file.name.split(".");
85
+ return fileExtArr[fileExtArr.length - 1];
86
+ });
87
+ if (nameArr.includes(item.file)) {
88
+ matchedScriptContentIndex = i;
89
+ break;
90
+ }
91
+ }
92
+ }
93
+ if (matchedScriptContentIndex !== -1) {
94
+ break;
95
+ }
96
+ }
97
+ const responses = [];
98
+ const matchContent = agentMatchedScripts[0].content;
99
+ for (let j = matchedScriptContentIndex + 1; j < matchContent.length; j++) {
100
+ const nextItem = matchContent[j];
101
+ if (nextItem.user === "i") {
102
+ break;
103
+ }
104
+ if (nextItem.user === "ai") {
105
+ if (nextItem.data && nextItem.type) {
106
+ responses.push({
107
+ ...nextItem,
108
+ // 标记需要先流式输出文字,再调用组件
109
+ needSequenceProcessing: true
110
+ });
111
+ } else {
112
+ responses.push(nextItem);
113
+ }
114
+ }
115
+ }
116
+ const nextIndex = matchContent.findIndex((contentItem, index) => index > matchedScriptContentIndex && contentItem.user === "i");
117
+ return {
118
+ responses,
119
+ nextIndex: nextIndex === -1 ? matchContent.length : nextIndex
120
+ };
121
+ }
122
+ }
123
+ }
124
+ if (activeScript.value) {
125
+ const result = searchInScript(activeScript.value, userInput);
126
+ if (result) {
127
+ return result;
128
+ }
129
+ }
130
+ for (const script of scripts.value) {
131
+ const result = searchInScript(script, userInput);
132
+ if (result) {
133
+ activeScript.value = script;
134
+ return result;
135
+ }
136
+ }
137
+ return null;
138
+ };
139
+ return {
140
+ activeScript,
141
+ findMatchingScriptContent,
142
+ searchInScript
143
+ };
144
+ }
145
+
146
+ exports.createScriptMatcher = createScriptMatcher;
147
+ //# sourceMappingURL=scriptMatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scriptMatcher.js","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":["ref","script","item"],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+
3
+ var ThinkStatus = /* @__PURE__ */ ((ThinkStatus2) => {
4
+ ThinkStatus2["THINKING"] = "thinking";
5
+ ThinkStatus2["COMPLETED"] = "completed";
6
+ ThinkStatus2["STOPPED"] = "stopped";
7
+ return ThinkStatus2;
8
+ })(ThinkStatus || {});
9
+ var MessageAction = /* @__PURE__ */ ((MessageAction2) => {
10
+ MessageAction2["COPY"] = "copy";
11
+ MessageAction2["EDIT"] = "edit";
12
+ MessageAction2["DELETE"] = "delete";
13
+ MessageAction2["RETRY"] = "retry";
14
+ MessageAction2["LIKE"] = "like";
15
+ MessageAction2["DISLIKE"] = "dislike";
16
+ return MessageAction2;
17
+ })(MessageAction || {});
18
+
19
+ exports.MessageAction = MessageAction;
20
+ exports.ThinkStatus = ThinkStatus;
21
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","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;;;;;"}