@touchvue/chat 1.0.0-beta.50 → 1.0.0-beta.52

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 (120) hide show
  1. package/README.md +70 -70
  2. package/es/package.json.css +1 -1
  3. package/es/package.json.mjs +1 -1
  4. package/es/packages/components/resolver.mjs.map +1 -1
  5. package/es/packages/components/touchchat/component/AiRobot/HelloChat.vue2.mjs.map +1 -1
  6. package/es/packages/components/touchchat/component/AiRobot/letter.vue.mjs +1 -1
  7. package/es/packages/components/touchchat/component/AiRobot/letter.vue2.mjs +8 -8
  8. package/es/packages/components/touchchat/component/AiRobot/letter.vue2.mjs.map +1 -1
  9. package/es/packages/components/touchchat/component/FileContent.vue2.mjs +3 -3
  10. package/es/packages/components/touchchat/component/FileContent.vue2.mjs.map +1 -1
  11. package/es/packages/components/touchchat/component/FileView.vue2.mjs +2 -2
  12. package/es/packages/components/touchchat/component/FileView.vue2.mjs.map +1 -1
  13. package/es/packages/components/touchchat/component/HelloChat.vue2.mjs.map +1 -1
  14. package/es/packages/components/touchchat/component/ImageFile.vue2.mjs +6 -6
  15. package/es/packages/components/touchchat/component/ImageFile.vue2.mjs.map +1 -1
  16. package/es/packages/components/touchchat/component/ImageView.vue2.mjs +1 -1
  17. package/es/packages/components/touchchat/component/ImageView.vue2.mjs.map +1 -1
  18. package/es/packages/components/touchchat/component/LinkView.vue2.mjs +4 -4
  19. package/es/packages/components/touchchat/component/LinkView.vue2.mjs.map +1 -1
  20. package/es/packages/components/touchchat/component/MarkLayer.vue2.mjs +1 -1
  21. package/es/packages/components/touchchat/component/MarkLayer.vue2.mjs.map +1 -1
  22. package/es/packages/components/touchchat/component/ModuleSelect.vue2.mjs +2 -2
  23. package/es/packages/components/touchchat/component/ModuleSelect.vue2.mjs.map +1 -1
  24. package/es/packages/components/touchchat/component/PDFFile.vue2.mjs +10 -10
  25. package/es/packages/components/touchchat/component/PDFFile.vue2.mjs.map +1 -1
  26. package/es/packages/components/touchchat/component/QuoteContent.vue2.mjs.map +1 -1
  27. package/es/packages/components/touchchat/component/RealtimeVoice.vue2.mjs +1 -1
  28. package/es/packages/components/touchchat/component/RealtimeVoice.vue2.mjs.map +1 -1
  29. package/es/packages/components/touchchat/component/UploadView.vue2.mjs.map +1 -1
  30. package/es/packages/components/touchchat/component/VideoFile.vue.mjs +1 -1
  31. package/es/packages/components/touchchat/component/VideoFile.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 +36 -39
  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.map +1 -1
  37. package/es/packages/components/touchchat/src/AiChat/Chat/types.mjs.map +1 -1
  38. package/es/packages/components/touchchat/src/AiChat/Chat/useChat.mjs +6 -0
  39. package/es/packages/components/touchchat/src/AiChat/Chat/useChat.mjs.map +1 -1
  40. package/es/packages/components/touchchat/src/AiChat/Chat/useCopy.mjs.map +1 -1
  41. package/es/packages/components/touchchat/src/AiChat/Chat/useMessageRender.mjs.map +1 -1
  42. package/es/packages/components/touchchat/src/AiChat/Chat/useSSE.mjs +93 -4
  43. package/es/packages/components/touchchat/src/AiChat/Chat/useSSE.mjs.map +1 -1
  44. package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs +7 -6
  45. package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs.map +1 -1
  46. package/es/packages/components/touchchat/src/AiChat/HistoryList.vue2.mjs +1 -1
  47. package/es/packages/components/touchchat/src/AiChat/HistoryList.vue2.mjs.map +1 -1
  48. package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.mjs +3 -3
  49. package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.mjs.map +1 -1
  50. package/es/packages/components/touchchat/src/AiChat/MessageActions.vue2.mjs +11 -11
  51. package/es/packages/components/touchchat/src/AiChat/MessageActions.vue2.mjs.map +1 -1
  52. package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue2.mjs +3 -3
  53. package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue2.mjs.map +1 -1
  54. package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs.map +1 -1
  55. package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue2.mjs.map +1 -1
  56. package/es/packages/components/touchchat/src/AiChat/UserMessage.vue2.mjs +16 -16
  57. package/es/packages/components/touchchat/src/AiChat/UserMessage.vue2.mjs.map +1 -1
  58. package/es/packages/components/touchchat/src/index.vue2.mjs.map +1 -1
  59. package/es/packages/components/touchchat/utils/a2aService.mjs.map +1 -1
  60. package/es/packages/components/touchchat/utils/fetchStream.mjs.map +1 -1
  61. package/lib/package.json.css +1 -1
  62. package/lib/package.json.js +1 -1
  63. package/lib/packages/components/resolver.js.map +1 -1
  64. package/lib/packages/components/touchchat/component/AiRobot/HelloChat.vue2.js.map +1 -1
  65. package/lib/packages/components/touchchat/component/AiRobot/letter.vue.js +1 -1
  66. package/lib/packages/components/touchchat/component/AiRobot/letter.vue2.js +8 -8
  67. package/lib/packages/components/touchchat/component/AiRobot/letter.vue2.js.map +1 -1
  68. package/lib/packages/components/touchchat/component/FileContent.vue2.js +3 -3
  69. package/lib/packages/components/touchchat/component/FileContent.vue2.js.map +1 -1
  70. package/lib/packages/components/touchchat/component/FileView.vue2.js +2 -2
  71. package/lib/packages/components/touchchat/component/FileView.vue2.js.map +1 -1
  72. package/lib/packages/components/touchchat/component/HelloChat.vue2.js.map +1 -1
  73. package/lib/packages/components/touchchat/component/ImageFile.vue2.js +6 -6
  74. package/lib/packages/components/touchchat/component/ImageFile.vue2.js.map +1 -1
  75. package/lib/packages/components/touchchat/component/ImageView.vue2.js +1 -1
  76. package/lib/packages/components/touchchat/component/ImageView.vue2.js.map +1 -1
  77. package/lib/packages/components/touchchat/component/LinkView.vue2.js +4 -4
  78. package/lib/packages/components/touchchat/component/LinkView.vue2.js.map +1 -1
  79. package/lib/packages/components/touchchat/component/MarkLayer.vue2.js +1 -1
  80. package/lib/packages/components/touchchat/component/MarkLayer.vue2.js.map +1 -1
  81. package/lib/packages/components/touchchat/component/ModuleSelect.vue2.js +2 -2
  82. package/lib/packages/components/touchchat/component/ModuleSelect.vue2.js.map +1 -1
  83. package/lib/packages/components/touchchat/component/PDFFile.vue2.js +10 -10
  84. package/lib/packages/components/touchchat/component/PDFFile.vue2.js.map +1 -1
  85. package/lib/packages/components/touchchat/component/QuoteContent.vue2.js.map +1 -1
  86. package/lib/packages/components/touchchat/component/RealtimeVoice.vue2.js +1 -1
  87. package/lib/packages/components/touchchat/component/RealtimeVoice.vue2.js.map +1 -1
  88. package/lib/packages/components/touchchat/component/UploadView.vue2.js.map +1 -1
  89. package/lib/packages/components/touchchat/component/VideoFile.vue.js +1 -1
  90. package/lib/packages/components/touchchat/component/VideoFile.vue2.js.map +1 -1
  91. package/lib/packages/components/touchchat/src/AiChat/AgentsView.vue2.js +1 -1
  92. package/lib/packages/components/touchchat/src/AiChat/AgentsView.vue2.js.map +1 -1
  93. package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js +36 -39
  94. package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js.map +1 -1
  95. package/lib/packages/components/touchchat/src/AiChat/Chat/scriptMatcher.js.map +1 -1
  96. package/lib/packages/components/touchchat/src/AiChat/Chat/types.js.map +1 -1
  97. package/lib/packages/components/touchchat/src/AiChat/Chat/useChat.js +6 -0
  98. package/lib/packages/components/touchchat/src/AiChat/Chat/useChat.js.map +1 -1
  99. package/lib/packages/components/touchchat/src/AiChat/Chat/useCopy.js.map +1 -1
  100. package/lib/packages/components/touchchat/src/AiChat/Chat/useMessageRender.js.map +1 -1
  101. package/lib/packages/components/touchchat/src/AiChat/Chat/useSSE.js +93 -4
  102. package/lib/packages/components/touchchat/src/AiChat/Chat/useSSE.js.map +1 -1
  103. package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js +7 -6
  104. package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js.map +1 -1
  105. package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue2.js +1 -1
  106. package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue2.js.map +1 -1
  107. package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.js +3 -3
  108. package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.js.map +1 -1
  109. package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue2.js +11 -11
  110. package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue2.js.map +1 -1
  111. package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue2.js +3 -3
  112. package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue2.js.map +1 -1
  113. package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js.map +1 -1
  114. package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue2.js.map +1 -1
  115. package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue2.js +16 -16
  116. package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue2.js.map +1 -1
  117. package/lib/packages/components/touchchat/src/index.vue2.js.map +1 -1
  118. package/lib/packages/components/touchchat/utils/a2aService.js.map +1 -1
  119. package/lib/packages/components/touchchat/utils/fetchStream.js.map +1 -1
  120. package/package.json +83 -83
@@ -75,16 +75,16 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
75
75
  null,
76
76
  [
77
77
  createCommentVNode(' v-if="item.content" '),
78
- !__props.item.auto ? (openBlock(), createElementBlock("div", {
78
+ !_ctx.item.auto ? (openBlock(), createElementBlock("div", {
79
79
  key: 0,
80
80
  class: "touchchat-user touchchat-item",
81
- "data-chat-id": __props.item.chatId
81
+ "data-chat-id": _ctx.item.chatId
82
82
  }, [
83
83
  createCommentVNode(" \u5934\u50CF\u533A\u57DF "),
84
84
  createElementVNode(
85
85
  "div",
86
86
  {
87
- class: normalizeClass(["touchchat-user-avatar", ((_b = (_a = __props.item) == null ? void 0 : _a.files) == null ? void 0 : _b.length) && __props.item.content ? "file-user-avatar" : ""])
87
+ class: normalizeClass(["touchchat-user-avatar", ((_b = (_a = _ctx.item) == null ? void 0 : _a.files) == null ? void 0 : _b.length) && _ctx.item.content ? "file-user-avatar" : ""])
88
88
  },
89
89
  [
90
90
  renderSlot(_ctx.$slots, "userAvatar", {}, () => [
@@ -101,19 +101,19 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
101
101
  createCommentVNode(" \u5185\u5BB9\u533A\u57DF "),
102
102
  createElementVNode("div", { class: "touchchat-user-content" }, [
103
103
  createCommentVNode(" <div>{{item}}</div> hasColse "),
104
- ((_d = (_c = __props.item) == null ? void 0 : _c.files) == null ? void 0 : _d.length) ? (openBlock(), createBlock(FileContent, {
104
+ ((_d = (_c = _ctx.item) == null ? void 0 : _c.files) == null ? void 0 : _d.length) ? (openBlock(), createBlock(FileContent, {
105
105
  key: 0,
106
- "file-list": __props.item.files,
106
+ "file-list": _ctx.item.files,
107
107
  "has-colse": false,
108
108
  type: "UserMessage",
109
109
  onUserMessageFileList: userMessageFileList
110
110
  }, null, 8, ["file-list"])) : createCommentVNode("v-if", true),
111
111
  createCommentVNode(" \u6C14\u6CE1 "),
112
- !__props.item.isWithDraw && !__props.item.isEditing && (__props.item.content || ((_f = (_e = __props.item) == null ? void 0 : _e.files) == null ? void 0 : _f.length)) ? (openBlock(), createElementBlock(
112
+ !_ctx.item.isWithDraw && !_ctx.item.isEditing && (_ctx.item.content || ((_f = (_e = _ctx.item) == null ? void 0 : _e.files) == null ? void 0 : _f.length)) ? (openBlock(), createElementBlock(
113
113
  Fragment,
114
114
  { key: 1 },
115
115
  [
116
- __props.item.content ? (openBlock(), createElementBlock("div", {
116
+ _ctx.item.content ? (openBlock(), createElementBlock("div", {
117
117
  key: 0,
118
118
  class: "touch-user-wrapper"
119
119
  }, [
@@ -121,7 +121,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
121
121
  "div",
122
122
  {
123
123
  key: 0,
124
- class: normalizeClass(["touchchat-action-item value-read no-hover", { "is-read": (_g = __props.item) == null ? void 0 : _g.isRead }])
124
+ class: normalizeClass(["touchchat-action-item value-read no-hover", { "is-read": (_g = _ctx.item) == null ? void 0 : _g.isRead }])
125
125
  },
126
126
  null,
127
127
  2
@@ -136,13 +136,13 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
136
136
  ])) : createCommentVNode("v-if", true),
137
137
  createCommentVNode(' v-if="!scripts.length" '),
138
138
  renderSlot(_ctx.$slots, "fn", {
139
- item: __props.item,
140
- index: __props.index
139
+ item: _ctx.item,
140
+ index: _ctx.index
141
141
  }, () => [
142
142
  createVNode(MessageActions, {
143
- item: __props.item,
143
+ item: _ctx.item,
144
144
  "message-type": "user",
145
- index: __props.index,
145
+ index: _ctx.index,
146
146
  "show-copy": true,
147
147
  onCopy,
148
148
  onEdit,
@@ -151,19 +151,19 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
151
151
  }, {
152
152
  extendsFn: withCtx(() => [
153
153
  renderSlot(_ctx.$slots, "extendsFn", {
154
- item: __props.item,
155
- index: __props.index
154
+ item: _ctx.item,
155
+ index: _ctx.index
156
156
  })
157
157
  ]),
158
158
  _: 3
159
159
  /* FORWARDED */
160
160
  }, 8, ["item", "index"])
161
161
  ]),
162
- createCommentVNode(' <slot name="fn" :item="item" :index="index">\r\n <MessageActions v-show="!item.isChating" :item="item" message-type="ai" :index="index" :has-retry="hasRetry" :show-copy="true" @copy="onCopy" @retry="onRetry" @like="onLike" @dislike="onDislike">\r\n <template #extendsFn>\r\n <slot name="extendsFn" :item="item" :index="index" />\r\n </template>\r\n </MessageActions>\r\n </slot> ')
162
+ createCommentVNode(' <slot name="fn" :item="item" :index="index">\n <MessageActions v-show="!item.isChating" :item="item" message-type="ai" :index="index" :has-retry="hasRetry" :show-copy="true" @copy="onCopy" @retry="onRetry" @like="onLike" @dislike="onDislike">\n <template #extendsFn>\n <slot name="extendsFn" :item="item" :index="index" />\n </template>\n </MessageActions>\n </slot> ')
163
163
  ],
164
164
  64
165
165
  /* STABLE_FRAGMENT */
166
- )) : __props.item.isEditing && __props.item.content ? (openBlock(), createElementBlock(
166
+ )) : _ctx.item.isEditing && _ctx.item.content ? (openBlock(), createElementBlock(
167
167
  Fragment,
168
168
  { key: 2 },
169
169
  [
@@ -1 +1 @@
1
- {"version":3,"file":"UserMessage.vue2.mjs","sources":["../../../../../../../packages/components/touchchat/src/AiChat/UserMessage.vue"],"sourcesContent":["<template>\r\n\t<!-- v-if=\"item.content\" -->\r\n\t<div v-if=\"!item.auto\" class=\"touchchat-user touchchat-item\" :data-chat-id=\"item.chatId\">\r\n\t\t<!-- 头像区域 -->\r\n\t\t<div class=\"touchchat-user-avatar\" :class=\"item?.files?.length && item.content ? 'file-user-avatar' : ''\">\r\n\t\t\t<slot name=\"userAvatar\">\r\n\t\t\t\t<img v-if=\"isShowAvatar\" :src=\"userAvatarPath\" class=\"touchchat-user-avatar-pic\" />\r\n\t\t\t</slot>\r\n\t\t</div>\r\n\r\n\t\t<!-- 内容区域 -->\r\n\t\t<div class=\"touchchat-user-content\">\r\n\t\t\t<!-- <div>{{item}}</div> hasColse -->\r\n\t\t\t<file-content v-if=\"item?.files?.length\" :file-list=\"item.files\" :has-colse=\"false\" type=\"UserMessage\" @user-message-file-list=\"userMessageFileList\"></file-content>\r\n\t\t\t<!-- 气泡 -->\r\n\t\t\t<template v-if=\"!item.isWithDraw && !item.isEditing && (item.content || item?.files?.length)\">\r\n\t\t\t\t<div v-if=\"item.content\" class=\"touch-user-wrapper\">\r\n\t\t\t\t\t<div v-if=\"hasRead\" class=\"touchchat-action-item value-read no-hover\" :class=\"{ 'is-read': item?.isRead }\"></div>\r\n\t\t\t\t\t<div class=\"touchchat-user-bubble\">\r\n\t\t\t\t\t\t<div :ref=\"setHtmlContentRef\" class=\"touchchat-user-bubble-text\"></div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<!-- v-if=\"!scripts.length\" -->\r\n\t\t\t\t<slot name=\"fn\" :item=\"item\" :index=\"index\">\r\n\t\t\t\t\t<MessageActions :item=\"item\" message-type=\"user\" :index=\"index\" :show-copy=\"true\" @copy=\"onCopy\" @edit=\"onEdit\" @delete=\"onDelete\" @with-draw=\"onWithdraw\">\r\n\t\t\t\t\t\t<template #extendsFn>\r\n\t\t\t\t\t\t\t<slot name=\"extendsFn\" :item=\"item\" :index=\"index\" />\r\n\t\t\t\t\t\t</template>\r\n\t\t\t\t\t</MessageActions>\r\n\t\t\t\t</slot>\r\n\t\t\t\t<!-- <slot name=\"fn\" :item=\"item\" :index=\"index\">\r\n\t\t\t\t\t<MessageActions v-show=\"!item.isChating\" :item=\"item\" message-type=\"ai\" :index=\"index\" :has-retry=\"hasRetry\" :show-copy=\"true\" @copy=\"onCopy\" @retry=\"onRetry\" @like=\"onLike\" @dislike=\"onDislike\">\r\n\t\t\t\t\t\t<template #extendsFn>\r\n\t\t\t\t\t\t\t<slot name=\"extendsFn\" :item=\"item\" :index=\"index\" />\r\n\t\t\t\t\t\t</template>\r\n\t\t\t\t\t</MessageActions>\r\n\t\t\t\t</slot> -->\r\n\t\t\t</template>\r\n\r\n\t\t\t<!-- 编辑区域 -->\r\n\t\t\t<div v-else-if=\"item.isEditing && item.content\" class=\"touchchat-user-edit\">\r\n\t\t\t\t<div class=\"touchchat-user-edit-input\">\r\n\t\t\t\t\t<textarea v-model=\"localEditContent\" placeholder=\"请输入消息内容...\"></textarea>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"touchchat-user-edit-submit\">\r\n\t\t\t\t\t<button class=\"touchchat-user-cancel\" @click=\"onCancelEdit\">\r\n\t\t\t\t\t\t<span class=\"touchchat-user-cancel-text\">取消</span>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t\t<button class=\"touchchat-user-send\" :disabled=\"!localEditContent.trim()\" @click=\"onSaveEdit\">\r\n\t\t\t\t\t\t<span class=\"touchchat-user-send-text\">发送</span>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\n// 导入新组件\r\nimport MessageActions from './MessageActions.vue'\r\nimport { ref, nextTick, watch, inject, type ComponentPublicInstance } from 'vue'\r\nimport type { ChatMessage, ChatMsgList, FileItem } from './Chat/types'\r\nimport markdown from '../../utils/markdown.ts'\r\nimport userAvatarBase from '../../img/userAvatar.png'\r\nimport fileContent from '../../component/FileContent.vue'\r\n\r\nconst props = defineProps<{\r\n\titem: ChatMessage & ChatMsgList\r\n\tindex: number\r\n}>()\r\n\r\nconst emits = defineEmits<{\r\n\t(e: 'copy', index: number): void\r\n\t(e: 'edit', index: number): void\r\n\t(e: 'delete', index: number): void\r\n\t(e: 'saveEdit', index: number, newContent: string): void\r\n\t(e: 'cancelEdit', index: number): void\r\n\t(e: 'withDraw', item: any, index: number): void\r\n\t(e: 'user-message-file-list', item: FileItem, index: number): void\r\n}>()\r\n\r\nconst htmlContentRef = ref<HTMLElement | null>(null)\r\nconst localEditContent = ref('')\r\nconst isShowAvatar = ref(true)\r\nconst userAvatarPath = ref(userAvatarBase)\r\nconst avatar = inject<boolean>('avatar', true)\r\nconst hasRead = inject<boolean>('hasRead', false)\r\n\r\n// 初始化渲染\r\nnextTick(() => {\r\n\trenderContent()\r\n})\r\n\r\nconst init = () => {\r\n\tisShowAvatar.value = avatar\r\n}\r\n\r\n// 修改ref赋值方式确保正确绑定\r\nconst setHtmlContentRef = (ref: Element | ComponentPublicInstance | null = null) => {\r\n\t// 只处理Element类型的引用\r\n\tif (ref instanceof Element) {\r\n\t\thtmlContentRef.value = ref as HTMLElement\r\n\t\trenderContent()\r\n\t} else {\r\n\t\thtmlContentRef.value = null\r\n\t}\r\n}\r\n\r\n// 监听props变化同步到本地状态\r\nwatch(\r\n\t() => props.item.editContent,\r\n\t(newVal: any) => {\r\n\t\tlocalEditContent.value = newVal || ''\r\n\t},\r\n\t{ immediate: true } // 初始化时同步\r\n)\r\n\r\n// 增强watch监听,添加immediate和nextTick确保时序正确\r\nwatch(\r\n\t() => props.item.content,\r\n\t(newContent: any) => {\r\n\t\tif (newContent) {\r\n\t\t\tnextTick(() => renderContent())\r\n\t\t}\r\n\t},\r\n\t{ immediate: true } // 初始化和变化时都执行\r\n)\r\n\r\nconst renderContent = () => {\r\n\tinit()\r\n\t// 添加防御性检查\r\n\tif (!htmlContentRef.value || !props.item.content) return\r\n\thtmlContentRef.value.innerHTML = markdown?.render(props.item.content, { isReasoning: false }) || ''\r\n}\r\n\r\nconst onCopy = () => emits('copy', props.index)\r\nconst onEdit = () => emits('edit', props.index)\r\nconst onDelete = () => emits('delete', props.index)\r\nconst onSaveEdit = () => emits('saveEdit', props.index, localEditContent.value)\r\nconst onCancelEdit = () => emits('cancelEdit', props.index)\r\nconst onWithdraw = () => emits('withDraw', props.item, props.index)\r\n\r\nconst userMessageFileList = (item: FileItem, index: number) => {\r\n\temits('user-message-file-list', item, index)\r\n}\r\n</script>\r\n"],"names":["ref","_createCommentVNode","_createElementBlock","_createElementVNode","_normalizeClass","_renderSlot","_createBlock","fileContent","_Fragment","_unref","_createVNode"],"mappings":"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"}
1
+ {"version":3,"file":"UserMessage.vue2.mjs","sources":["../../../../../../../packages/components/touchchat/src/AiChat/UserMessage.vue"],"sourcesContent":["<template>\n\t<!-- v-if=\"item.content\" -->\n\t<div v-if=\"!item.auto\" class=\"touchchat-user touchchat-item\" :data-chat-id=\"item.chatId\">\n\t\t<!-- 头像区域 -->\n\t\t<div class=\"touchchat-user-avatar\" :class=\"item?.files?.length && item.content ? 'file-user-avatar' : ''\">\n\t\t\t<slot name=\"userAvatar\">\n\t\t\t\t<img v-if=\"isShowAvatar\" :src=\"userAvatarPath\" class=\"touchchat-user-avatar-pic\" />\n\t\t\t</slot>\n\t\t</div>\n\n\t\t<!-- 内容区域 -->\n\t\t<div class=\"touchchat-user-content\">\n\t\t\t<!-- <div>{{item}}</div> hasColse -->\n\t\t\t<file-content v-if=\"item?.files?.length\" :file-list=\"item.files\" :has-colse=\"false\" type=\"UserMessage\" @user-message-file-list=\"userMessageFileList\"></file-content>\n\t\t\t<!-- 气泡 -->\n\t\t\t<template v-if=\"!item.isWithDraw && !item.isEditing && (item.content || item?.files?.length)\">\n\t\t\t\t<div v-if=\"item.content\" class=\"touch-user-wrapper\">\n\t\t\t\t\t<div v-if=\"hasRead\" class=\"touchchat-action-item value-read no-hover\" :class=\"{ 'is-read': item?.isRead }\"></div>\n\t\t\t\t\t<div class=\"touchchat-user-bubble\">\n\t\t\t\t\t\t<div :ref=\"setHtmlContentRef\" class=\"touchchat-user-bubble-text\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<!-- v-if=\"!scripts.length\" -->\n\t\t\t\t<slot name=\"fn\" :item=\"item\" :index=\"index\">\n\t\t\t\t\t<MessageActions :item=\"item\" message-type=\"user\" :index=\"index\" :show-copy=\"true\" @copy=\"onCopy\" @edit=\"onEdit\" @delete=\"onDelete\" @with-draw=\"onWithdraw\">\n\t\t\t\t\t\t<template #extendsFn>\n\t\t\t\t\t\t\t<slot name=\"extendsFn\" :item=\"item\" :index=\"index\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</MessageActions>\n\t\t\t\t</slot>\n\t\t\t\t<!-- <slot name=\"fn\" :item=\"item\" :index=\"index\">\n\t\t\t\t\t<MessageActions v-show=\"!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\t<template #extendsFn>\n\t\t\t\t\t\t\t<slot name=\"extendsFn\" :item=\"item\" :index=\"index\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</MessageActions>\n\t\t\t\t</slot> -->\n\t\t\t</template>\n\n\t\t\t<!-- 编辑区域 -->\n\t\t\t<div v-else-if=\"item.isEditing && item.content\" class=\"touchchat-user-edit\">\n\t\t\t\t<div class=\"touchchat-user-edit-input\">\n\t\t\t\t\t<textarea v-model=\"localEditContent\" placeholder=\"请输入消息内容...\"></textarea>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"touchchat-user-edit-submit\">\n\t\t\t\t\t<button class=\"touchchat-user-cancel\" @click=\"onCancelEdit\">\n\t\t\t\t\t\t<span class=\"touchchat-user-cancel-text\">取消</span>\n\t\t\t\t\t</button>\n\t\t\t\t\t<button class=\"touchchat-user-send\" :disabled=\"!localEditContent.trim()\" @click=\"onSaveEdit\">\n\t\t\t\t\t\t<span class=\"touchchat-user-send-text\">发送</span>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\" setup>\n// 导入新组件\nimport MessageActions from './MessageActions.vue'\nimport { ref, nextTick, watch, inject, type ComponentPublicInstance } from 'vue'\nimport type { ChatMessage, ChatMsgList, FileItem } from './Chat/types'\nimport markdown from '../../utils/markdown.ts'\nimport userAvatarBase from '../../img/userAvatar.png'\nimport fileContent from '../../component/FileContent.vue'\n\nconst props = defineProps<{\n\titem: ChatMessage & ChatMsgList\n\tindex: number\n}>()\n\nconst emits = defineEmits<{\n\t(e: 'copy', index: number): void\n\t(e: 'edit', index: number): void\n\t(e: 'delete', index: number): void\n\t(e: 'saveEdit', index: number, newContent: string): void\n\t(e: 'cancelEdit', index: number): void\n\t(e: 'withDraw', item: any, index: number): void\n\t(e: 'user-message-file-list', item: FileItem, index: number): void\n}>()\n\nconst htmlContentRef = ref<HTMLElement | null>(null)\nconst localEditContent = ref('')\nconst isShowAvatar = ref(true)\nconst userAvatarPath = ref(userAvatarBase)\nconst avatar = inject<boolean>('avatar', true)\nconst hasRead = inject<boolean>('hasRead', false)\n\n// 初始化渲染\nnextTick(() => {\n\trenderContent()\n})\n\nconst init = () => {\n\tisShowAvatar.value = avatar\n}\n\n// 修改ref赋值方式确保正确绑定\nconst setHtmlContentRef = (ref: Element | ComponentPublicInstance | null = null) => {\n\t// 只处理Element类型的引用\n\tif (ref instanceof Element) {\n\t\thtmlContentRef.value = ref as HTMLElement\n\t\trenderContent()\n\t} else {\n\t\thtmlContentRef.value = null\n\t}\n}\n\n// 监听props变化同步到本地状态\nwatch(\n\t() => props.item.editContent,\n\t(newVal: any) => {\n\t\tlocalEditContent.value = newVal || ''\n\t},\n\t{ immediate: true } // 初始化时同步\n)\n\n// 增强watch监听,添加immediate和nextTick确保时序正确\nwatch(\n\t() => props.item.content,\n\t(newContent: any) => {\n\t\tif (newContent) {\n\t\t\tnextTick(() => renderContent())\n\t\t}\n\t},\n\t{ immediate: true } // 初始化和变化时都执行\n)\n\nconst renderContent = () => {\n\tinit()\n\t// 添加防御性检查\n\tif (!htmlContentRef.value || !props.item.content) return\n\thtmlContentRef.value.innerHTML = markdown?.render(props.item.content, { isReasoning: false }) || ''\n}\n\nconst onCopy = () => emits('copy', props.index)\nconst onEdit = () => emits('edit', props.index)\nconst onDelete = () => emits('delete', props.index)\nconst onSaveEdit = () => emits('saveEdit', props.index, localEditContent.value)\nconst onCancelEdit = () => emits('cancelEdit', props.index)\nconst onWithdraw = () => emits('withDraw', props.item, props.index)\n\nconst userMessageFileList = (item: FileItem, index: number) => {\n\temits('user-message-file-list', item, index)\n}\n</script>\n"],"names":["ref","_createCommentVNode","item","_createElementBlock","_createElementVNode","_normalizeClass","_renderSlot","_createBlock","fileContent","_Fragment","_unref","index","_createVNode"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.vue2.mjs","sources":["../../../../../../packages/components/touchchat/src/index.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({ name: 'Touchchat' });\n</script>\n<template>\r\n\t<!-- <div>1.0.0-beta.2026032301</div> -->\r\n\t<DeepSeek ref=\"deepSeekRef\" :style=\"elementStyle\" :class=\"elementClass\">\r\n\t\t<!-- msg -->\r\n\t\t<template #aimsg=\"{ item, index }\">\r\n\t\t\t<slot name=\"aimsg\" :item=\"item\" :index=\"index\" />\r\n\t\t</template>\r\n\t\t<template #msg=\"{ item, index }\">\r\n\t\t\t<slot name=\"msg\" :item=\"item\" :index=\"index\" />\r\n\t\t</template>\r\n\t\t<template #aiAvatar>\r\n\t\t\t<slot name=\"aiAvatar\" />\r\n\t\t</template>\r\n\t\t<template #userAvatar>\r\n\t\t\t<slot name=\"userAvatar\" />\r\n\t\t</template>\r\n\t\t<template #welcome>\r\n\t\t\t<slot name=\"welcome\" />\r\n\t\t</template>\r\n\t\t<!-- edit -->\r\n\t\t<template #edit>\r\n\t\t\t<slot name=\"edit\" />\r\n\t\t</template>\r\n\t\t<!-- top -->\r\n\t\t<template #top>\r\n\t\t\t<slot name=\"top\" />\r\n\t\t</template>\r\n\t\t<template #shortcut>\r\n\t\t\t<slot name=\"shortcut\" />\r\n\t\t</template>\r\n\t\t<!-- extend -->\r\n\t\t<template #extend=\"{ item, index }\">\r\n\t\t\t<slot name=\"extend\" :item=\"item\" :index=\"index\" />\r\n\t\t</template>\r\n\t\t<!-- fn -->\r\n\t\t<template #fn=\"{ item, index }\">\r\n\t\t\t<slot name=\"fn\" :item=\"item\" :index=\"index\" />\r\n\t\t</template>\r\n\t\t<template #editTop>\r\n\t\t\t<slot name=\"editTop\" />\r\n\t\t</template>\r\n\t\t<template #editFn>\r\n\t\t\t<slot name=\"editFn\" />\r\n\t\t</template>\r\n\t\t<template #editSubmitRight>\r\n\t\t\t<slot name=\"editSubmitRight\"></slot>\r\n\t\t</template>\r\n\t\t<template #editSubmitLeft>\r\n\t\t\t<slot name=\"editSubmitLeft\"></slot>\r\n\t\t</template>\r\n\t\t<template #extendsFn=\"{ item, index }\">\r\n\t\t\t<slot name=\"extendsFn\" :item=\"item\" :index=\"index\" />\r\n\t\t</template>\r\n\t\t<template #mayLike=\"{ item, index }\">\r\n\t\t\t<slot name=\"mayLike\" :item=\"item\" :index=\"index\" />\r\n\t\t</template>\r\n\t</DeepSeek>\r\n</template>\r\n<script setup lang=\"ts\">\r\nimport { ChatMessage, ChatMsgList, MessageActions, ModuleItem } from './AiChat/Chat/types'\r\nimport type { AgentConfig, SubAgent } from './types/a2a'\r\nimport DeepSeek from './AiChat/TouchHistory.vue'\r\nimport { provide, ref, computed, watch } from 'vue'\r\n\r\n\r\n\r\nconst emits = defineEmits<{\r\n\t(e: 'send', value: string, fileList?: any[]): void\r\n\t(e: 'afterSend', result: any): void\r\n\t(e: 'like', index: number, isLike: boolean): void\r\n\t(e: 'dislike', index: number, isDislike: boolean): void\r\n\t(e: 'side-bottom'): void\r\n\t(e: 'change', id: string): void\r\n\t(e: 'historyRemove', id: string): void\r\n\t(e: 'remove', item: ChatMessage, index: number): void\r\n\t(e: 'bottom'): void\r\n\t(e: 'stop', item: ChatMessage, index: number): void\r\n\t(e: 'modelChange', item: ModuleItem, index: number): void\r\n\t(e: 'openSideBar', item: ChatMessage & ChatMsgList, index: number): void\r\n\t(e: 'share', item: ChatMessage & ChatMsgList, index: number): void\r\n\t(e: 'withDraw', item: ChatMessage & ChatMsgList, index: number): void\r\n\t(e: 'file-action', item: ChatMessage & ChatMsgList, index: number): void\r\n}>()\r\n\r\nconst sendVal = ref('')\r\n\r\ninterface ScriptItem {\r\n\tid?: string\r\n\tname: string\r\n\tsubTitle?: string\r\n\tcontent: Array<{\r\n\t\tuser: string\r\n\t\tdata?: string\r\n\t\talias?: string[]\r\n\t\ttype?: string\r\n\t}>\r\n}\r\n\r\ninterface HistoryItem {\r\n\tid?: string\r\n\ttime?: string\r\n\ttitle?: string\r\n}\r\n\r\ninterface MessageItem {\r\n\tchatId: string\r\n\tuser: string\r\n\ttype: string\r\n\tcontent: string\r\n\t[props: string]: any\r\n}\r\n\r\n// interface ModuleItem {\r\n// \tname: string\r\n// \tconfig: {\r\n// \t\taction: string\r\n// \t\theaders: () => object\r\n// \t\tbody: () => object\r\n// \t\trespoKey: () => object\r\n// \t}\r\n// }\r\ntype Modules = (string | ModuleItem)[]\r\ntype ResultArray = AgentConfig[] | SubAgent[]\r\ninterface MultiAgentInfo {\r\n\tlist: ResultArray\r\n\turl?: string\r\n\t// token?: string\r\n\theaders?: object\r\n}\r\n\r\nconst props = withDefaults(\r\n\tdefineProps<{\r\n\t\tmode?: string\r\n\t\tscripts?: ScriptItem[]\r\n\t\twidth?: number | string\r\n\t\theight?: number | string\r\n\t\tcomponents?: { [key: string]: any } // components\r\n\t\tavatar?: boolean // avatar\r\n\t\tplaceholder?: string\r\n\t\tunmatchText?: string // unmatchText\r\n\t\ttitle?: string\r\n\t\tlayout?: string // layout=\"side, think, upload, chain,realtime\"\r\n\t\tbeforeSend?: () => { result: boolean; componentName?: string }\r\n\t\thistoryList?: HistoryItem[] // historyList\r\n\t\thistoryDetail?: MessageItem[] // historyDetail\r\n\t\tagents?: {\r\n\t\t\tid: string\r\n\t\t\tname: string\r\n\t\t\tintro: string\r\n\t\t}[] // agents\r\n\t\tmodules?: Modules // modules\r\n\t\tspeed?: number // speed\r\n\t\tallowedTypes?: string[] // allowedTypes\r\n\t\t// agentConfigList?: ResultArray // agentConfigList 智能体配置列表\r\n\t\t// multiAgentHost?: string // multiAgentHost 多智能体主机地址\r\n\t\t// multiAgentToken?: string // multiAgentToken 多智能体认证令牌\r\n\t\tagentInfo?: MultiAgentInfo // agentInfo 多智能体信息\r\n\t\ta2uiProps?: {\r\n\t\t\t[key: string]: any\r\n\t\t}\r\n\t\tmessageActions?: MessageActions\r\n\t\thasRead?: boolean\r\n\t\tisSelectMode?: boolean\r\n\t\tuploadAction?: (file: File, onProgress: (percent: number) => void) => Promise<any>\r\n\t}>(),\r\n\t{\r\n\t\tmode: '',\r\n\t\tscripts: () => [],\r\n\t\twidth: '',\r\n\t\theight: '',\r\n\t\tcomponents: () => ({}),\r\n\t\tavatar: true,\r\n\t\tplaceholder: 'hi,我是touchchat,快来和我聊天吧~',\r\n\t\tunmatchText: '您的消息未匹配到任何内容',\r\n\t\ttitle: 'TouchChat',\r\n\t\tlayout: 'side, clear, think, upload, screen, voice,realtime', //chain 思考链\r\n\t\t// side 侧边栏(历史记录),think 深度思考,upload 上传文件,chain 思考链\r\n\t\tbeforeSend: () => ({ result: true, componentName: '' }),\r\n\t\thistoryList: () => [],\r\n\t\thistoryDetail: () => [],\r\n\t\tagents: () => [],\r\n\t\tmodules: () => [],\r\n\t\tspeed: 10,\r\n\t\tallowedTypes: () => [],\r\n\t\tagentInfo: () => ({\r\n\t\t\tlist: [], // list 智能体列表 =1 单智能体 >1 多智能体\r\n\t\t\turl: '', // url 多智能体主机地址 单智能体为空 多智能体必传\r\n\t\t\theaders: {} // 多智能体请求头信息\r\n\t\t}),\r\n\t\ta2uiProps: () => ({}),\r\n\t\tmessageActions: () => {\r\n\t\t\treturn {\r\n\t\t\t\tuser: ['edit', 'delete', 'copy'],\r\n\t\t\t\tai: ['retry', 'like', 'dislike', 'copy']\r\n\t\t\t}\r\n\t\t},\r\n\t\thasRead: false,\r\n\t\tisSelectMode: false,\r\n\t\tuploadAction: undefined\r\n\t}\r\n)\r\nconst selectMode = computed(() => props.isSelectMode)\r\nprovide('components', props.components)\r\nprovide('avatar', props.avatar)\r\nprovide('placeholder', props.placeholder)\r\nprovide('unmatchText', props.unmatchText)\r\nprovide('title', props.title)\r\nprovide('layout', props.layout)\r\nprovide('beforeSend', props.beforeSend)\r\nprovide('scripts', ref(props.scripts || []))\r\nprovide('speed', props.speed)\r\nprovide('allowedTypes', props.allowedTypes)\r\nprovide('a2uiProps', props.a2uiProps)\r\nprovide('messageActions', props.messageActions)\r\nprovide('hasRead', props.hasRead)\r\nprovide('isSelectMode', selectMode)\r\nprovide('uploadAction', props.uploadAction)\r\nconst historyListComputed = computed(() => props.historyList)\r\nconst providedHistoryList = ref(props.historyList)\r\nwatch(\r\n\thistoryListComputed,\r\n\tnewVal => {\r\n\t\tprovidedHistoryList.value = newVal\r\n\t},\r\n\t{ immediate: true }\r\n)\r\nprovide('historyList', providedHistoryList)\r\nconst historyDetailComputed = computed(() => props.historyDetail)\r\nconst providedHistoryDetail = ref(props.historyDetail)\r\nwatch(\r\n\thistoryDetailComputed,\r\n\tnewVal => {\r\n\t\tprovidedHistoryDetail.value = newVal\r\n\t},\r\n\t{ immediate: true }\r\n)\r\nprovide('historyDetail', providedHistoryDetail)\r\nprovide('agents', props.agents)\r\nconst iModules = ref(props.modules)\r\nwatch(\r\n\t() => props.modules,\r\n\tnewVal => {\r\n\t\tiModules.value = newVal\r\n\t\t// console.log('modules === index.vue === 191', newVal)\r\n\t},\r\n\t{ immediate: true }\r\n)\r\nprovide('modules', iModules)\r\n\r\nconst iMultiAgentInfo = ref(props.agentInfo)\r\nwatch(\r\n\t() => props.agentInfo,\r\n\tnewVal => {\r\n\t\tiMultiAgentInfo.value = newVal\r\n\t},\r\n\t{ immediate: true, deep: true }\r\n)\r\nprovide('agentInfo', iMultiAgentInfo)\r\n\r\n// 新增:提供处理点赞事件的函数\r\nprovide('like', (index: number, isLike: boolean) => {\r\n\t// 这里可以实现具体的点赞逻辑\r\n\temits('like', index, isLike) // like\r\n\t// 可以添加实际的业务逻辑,如调用API等\r\n})\r\n\r\n// 新增:提供处理点赞事件的函数 dislike\r\nprovide('dislike', (index: number, isUnlike: boolean) => {\r\n\t// 这里可以实现具体的点赞逻辑\r\n\temits('dislike', index, isUnlike) // dislike\r\n\t// 可以添加实际的业务逻辑,如调用API等\r\n})\r\n\r\nprovide('send', (value: string, fileList?: any[]) => {\r\n\t// send\r\n\t// 这里可以实现具体的点赞逻辑\r\n\tsendVal.value = value\r\n\temits('send', value, fileList)\r\n\t// 可以添加实际的业务逻辑,如调用API等\r\n})\r\n\r\nprovide('sideBottom', () => {\r\n\t// console.log('sideBottom === 触底事件') // bottom\r\n\temits('side-bottom')\r\n})\r\n\r\nprovide('change', (id: string) => {\r\n\t// console.log('change === 激活事件', id) // change\r\n\temits('change', id)\r\n})\r\n\r\nprovide('historyRemove', (id: string) => {\r\n\t//remove\r\n\t// console.log('historyRemove === 删除事件', id)\r\n\temits('historyRemove', id)\r\n})\r\n\r\nprovide('openSideBar', (item: any, index: number) => {\r\n\temits('openSideBar', item, index)\r\n})\r\n\r\nprovide('share', (item: any, index: number) => {\r\n\temits('share', item, index)\r\n})\r\n\r\nprovide('withDraw', (item: any, index: number) => {\r\n\temits('withDraw', item, index)\r\n})\r\n\r\nprovide('afterSend', (content: any) => {\r\n\t// afterSend\r\n\t// console.log('afterSend === 发送消息事件', content)\r\n\temits('afterSend', content)\r\n})\r\n\r\nprovide('remove', (item: ChatMessage, index: number) => {\r\n\t// afterSend\r\n\t// console.log('remove === 详情删除', item, index)\r\n\temits('remove', item, index)\r\n})\r\n\r\nprovide('bottom', () => {\r\n\t// console.log('bottom === 详情触底')\r\n\temits('bottom')\r\n})\r\n\r\nprovide('stop', (item: ChatMessage, index: number) => {\r\n\t// console.log('stop === 用户终止事件')\r\n\temits('stop', item, index)\r\n})\r\n\r\nprovide('modelChange', (item: ModuleItem, index: number) => {\r\n\t// console.log('modelChange === 模型切换事件', item, index)\r\n\temits('modelChange', item, index)\r\n})\r\n\r\n// const rootRef = ref(null)\r\nconst deepSeekRef = ref<InstanceType<typeof DeepSeek> | null>(null)\r\n\r\nconst elementClass = computed(() => {\r\n\tconst classList = []\r\n\tif (props.mode) {\r\n\t\tclassList.push(`touchchat-${props.mode}`)\r\n\t}\r\n\treturn classList.join(' ')\r\n})\r\n\r\n// 修改elementStyle计算属性,移除对scripts.length的检查\r\nconst elementStyle = computed(() => {\r\n\tlet width = ''\r\n\tlet height = ''\r\n\r\n\tif (props.width) {\r\n\t\tif (typeof props.width === 'string') {\r\n\t\t\twidth = props.width ?? '100%'\r\n\t\t} else {\r\n\t\t\twidth = `${props.width}em`\r\n\t\t}\r\n\t}\r\n\r\n\tif (props.height) {\r\n\t\tif (typeof props.height === 'string') {\r\n\t\t\theight = props.height ?? '100%'\r\n\t\t} else {\r\n\t\t\theight = `${props.height}em`\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\t\twidth,\r\n\t\theight\r\n\t}\r\n})\r\nconst updateInputMethod = ref<any>(null)\r\nprovide('setInput', updateInputMethod)\r\nconst setInput = (newValue: string) => {\r\n\tif (updateInputMethod.value) {\r\n\t\tupdateInputMethod.value(newValue)\r\n\t}\r\n}\r\nprovide('fileAction', (item: any, index: number) => {\r\n\temits('file-action', item, index)\r\n})\r\ndefineExpose({\r\n\tsend: (value: string, fileList?: any[], auto?: boolean, type?: string) => {\r\n\t\tdeepSeekRef.value?.send(value, fileList, auto, type) //send\r\n\t},\r\n\tcloseExtend: () => {\r\n\t\tdeepSeekRef.value?.closeExtend() // closeExtend\r\n\t},\r\n\tcreate: () => {\r\n\t\tdeepSeekRef.value?.create() // reset\r\n\t},\r\n\tretry: (index: number) => {\r\n\t\tdeepSeekRef.value?.retry(index)\r\n\t},\r\n\tupdate: (index: number, message: object) => {\r\n\t\tdeepSeekRef.value?.update(index, message)\r\n\t},\r\n\tchangeChat: (index: number) => {\r\n\t\tdeepSeekRef.value?.changeChat(index)\r\n\t},\r\n\tclearChat: () => {\r\n\t\tdeepSeekRef.value?.clearChat()\r\n\t},\r\n\tsetInput\r\n})\r\n</script>\r\n"],"names":["DO_defineComponent","_createCommentVNode","_createVNode","_withCtx","_renderSlot"],"mappings":"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"}
1
+ {"version":3,"file":"index.vue2.mjs","sources":["../../../../../../packages/components/touchchat/src/index.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({ name: 'Touchchat' });\n</script>\n<template>\n\t<!-- <div>1.0.0-beta.2026032301</div> -->\n\t<DeepSeek ref=\"deepSeekRef\" :style=\"elementStyle\" :class=\"elementClass\">\n\t\t<!-- msg -->\n\t\t<template #aimsg=\"{ item, index }\">\n\t\t\t<slot name=\"aimsg\" :item=\"item\" :index=\"index\" />\n\t\t</template>\n\t\t<template #msg=\"{ item, index }\">\n\t\t\t<slot name=\"msg\" :item=\"item\" :index=\"index\" />\n\t\t</template>\n\t\t<template #aiAvatar>\n\t\t\t<slot name=\"aiAvatar\" />\n\t\t</template>\n\t\t<template #userAvatar>\n\t\t\t<slot name=\"userAvatar\" />\n\t\t</template>\n\t\t<template #welcome>\n\t\t\t<slot name=\"welcome\" />\n\t\t</template>\n\t\t<!-- edit -->\n\t\t<template #edit>\n\t\t\t<slot name=\"edit\" />\n\t\t</template>\n\t\t<!-- top -->\n\t\t<template #top>\n\t\t\t<slot name=\"top\" />\n\t\t</template>\n\t\t<template #shortcut>\n\t\t\t<slot name=\"shortcut\" />\n\t\t</template>\n\t\t<!-- extend -->\n\t\t<template #extend=\"{ item, index }\">\n\t\t\t<slot name=\"extend\" :item=\"item\" :index=\"index\" />\n\t\t</template>\n\t\t<!-- fn -->\n\t\t<template #fn=\"{ item, index }\">\n\t\t\t<slot name=\"fn\" :item=\"item\" :index=\"index\" />\n\t\t</template>\n\t\t<template #editTop>\n\t\t\t<slot name=\"editTop\" />\n\t\t</template>\n\t\t<template #editFn>\n\t\t\t<slot name=\"editFn\" />\n\t\t</template>\n\t\t<template #editSubmitRight>\n\t\t\t<slot name=\"editSubmitRight\"></slot>\n\t\t</template>\n\t\t<template #editSubmitLeft>\n\t\t\t<slot name=\"editSubmitLeft\"></slot>\n\t\t</template>\n\t\t<template #extendsFn=\"{ item, index }\">\n\t\t\t<slot name=\"extendsFn\" :item=\"item\" :index=\"index\" />\n\t\t</template>\n\t\t<template #mayLike=\"{ item, index }\">\n\t\t\t<slot name=\"mayLike\" :item=\"item\" :index=\"index\" />\n\t\t</template>\n\t</DeepSeek>\n</template>\n<script setup lang=\"ts\">\nimport { ChatMessage, ChatMsgList, MessageActions, ModuleItem } from './AiChat/Chat/types'\nimport type { AgentConfig, SubAgent } from './types/a2a'\nimport DeepSeek from './AiChat/TouchHistory.vue'\nimport { provide, ref, computed, watch } from 'vue'\n\n\n\nconst emits = defineEmits<{\n\t(e: 'send', value: string, fileList?: any[]): void\n\t(e: 'afterSend', result: any): void\n\t(e: 'like', index: number, isLike: boolean): void\n\t(e: 'dislike', index: number, isDislike: boolean): void\n\t(e: 'side-bottom'): void\n\t(e: 'change', id: string): void\n\t(e: 'historyRemove', id: string): void\n\t(e: 'remove', item: ChatMessage, index: number): void\n\t(e: 'bottom'): void\n\t(e: 'stop', item: ChatMessage, index: number): void\n\t(e: 'modelChange', item: ModuleItem, index: number): void\n\t(e: 'openSideBar', item: ChatMessage & ChatMsgList, index: number): void\n\t(e: 'share', item: ChatMessage & ChatMsgList, index: number): void\n\t(e: 'withDraw', item: ChatMessage & ChatMsgList, index: number): void\n\t(e: 'file-action', item: ChatMessage & ChatMsgList, index: number): void\n}>()\n\nconst sendVal = ref('')\n\ninterface ScriptItem {\n\tid?: string\n\tname: string\n\tsubTitle?: string\n\tcontent: Array<{\n\t\tuser: string\n\t\tdata?: string\n\t\talias?: string[]\n\t\ttype?: string\n\t}>\n}\n\ninterface HistoryItem {\n\tid?: string\n\ttime?: string\n\ttitle?: string\n}\n\ninterface MessageItem {\n\tchatId: string\n\tuser: string\n\ttype: string\n\tcontent: string\n\t[props: string]: any\n}\n\n// interface ModuleItem {\n// \tname: string\n// \tconfig: {\n// \t\taction: string\n// \t\theaders: () => object\n// \t\tbody: () => object\n// \t\trespoKey: () => object\n// \t}\n// }\ntype Modules = (string | ModuleItem)[]\ntype ResultArray = AgentConfig[] | SubAgent[]\ninterface MultiAgentInfo {\n\tlist: ResultArray\n\turl?: string\n\t// token?: string\n\theaders?: object\n}\n\nconst props = withDefaults(\n\tdefineProps<{\n\t\tmode?: string\n\t\tscripts?: ScriptItem[]\n\t\twidth?: number | string\n\t\theight?: number | string\n\t\tcomponents?: { [key: string]: any } // components\n\t\tavatar?: boolean // avatar\n\t\tplaceholder?: string\n\t\tunmatchText?: string // unmatchText\n\t\ttitle?: string\n\t\tlayout?: string // layout=\"side, think, upload, chain,realtime\"\n\t\tbeforeSend?: () => { result: boolean; componentName?: string }\n\t\thistoryList?: HistoryItem[] // historyList\n\t\thistoryDetail?: MessageItem[] // historyDetail\n\t\tagents?: {\n\t\t\tid: string\n\t\t\tname: string\n\t\t\tintro: string\n\t\t}[] // agents\n\t\tmodules?: Modules // modules\n\t\tspeed?: number // speed\n\t\tallowedTypes?: string[] // allowedTypes\n\t\t// agentConfigList?: ResultArray // agentConfigList 智能体配置列表\n\t\t// multiAgentHost?: string // multiAgentHost 多智能体主机地址\n\t\t// multiAgentToken?: string // multiAgentToken 多智能体认证令牌\n\t\tagentInfo?: MultiAgentInfo // agentInfo 多智能体信息\n\t\ta2uiProps?: {\n\t\t\t[key: string]: any\n\t\t}\n\t\tmessageActions?: MessageActions\n\t\thasRead?: boolean\n\t\tisSelectMode?: boolean\n\t\tuploadAction?: (file: File, onProgress: (percent: number) => void) => Promise<any>\n\t}>(),\n\t{\n\t\tmode: '',\n\t\tscripts: () => [],\n\t\twidth: '',\n\t\theight: '',\n\t\tcomponents: () => ({}),\n\t\tavatar: true,\n\t\tplaceholder: 'hi,我是touchchat,快来和我聊天吧~',\n\t\tunmatchText: '您的消息未匹配到任何内容',\n\t\ttitle: 'TouchChat',\n\t\tlayout: 'side, clear, think, upload, screen, voice,realtime', //chain 思考链\n\t\t// side 侧边栏(历史记录),think 深度思考,upload 上传文件,chain 思考链\n\t\tbeforeSend: () => ({ result: true, componentName: '' }),\n\t\thistoryList: () => [],\n\t\thistoryDetail: () => [],\n\t\tagents: () => [],\n\t\tmodules: () => [],\n\t\tspeed: 10,\n\t\tallowedTypes: () => [],\n\t\tagentInfo: () => ({\n\t\t\tlist: [], // list 智能体列表 =1 单智能体 >1 多智能体\n\t\t\turl: '', // url 多智能体主机地址 单智能体为空 多智能体必传\n\t\t\theaders: {} // 多智能体请求头信息\n\t\t}),\n\t\ta2uiProps: () => ({}),\n\t\tmessageActions: () => {\n\t\t\treturn {\n\t\t\t\tuser: ['edit', 'delete', 'copy'],\n\t\t\t\tai: ['retry', 'like', 'dislike', 'copy']\n\t\t\t}\n\t\t},\n\t\thasRead: false,\n\t\tisSelectMode: false,\n\t\tuploadAction: undefined\n\t}\n)\nconst selectMode = computed(() => props.isSelectMode)\nprovide('components', props.components)\nprovide('avatar', props.avatar)\nprovide('placeholder', props.placeholder)\nprovide('unmatchText', props.unmatchText)\nprovide('title', props.title)\nprovide('layout', props.layout)\nprovide('beforeSend', props.beforeSend)\nprovide('scripts', ref(props.scripts || []))\nprovide('speed', props.speed)\nprovide('allowedTypes', props.allowedTypes)\nprovide('a2uiProps', props.a2uiProps)\nprovide('messageActions', props.messageActions)\nprovide('hasRead', props.hasRead)\nprovide('isSelectMode', selectMode)\nprovide('uploadAction', props.uploadAction)\nconst historyListComputed = computed(() => props.historyList)\nconst providedHistoryList = ref(props.historyList)\nwatch(\n\thistoryListComputed,\n\tnewVal => {\n\t\tprovidedHistoryList.value = newVal\n\t},\n\t{ immediate: true }\n)\nprovide('historyList', providedHistoryList)\nconst historyDetailComputed = computed(() => props.historyDetail)\nconst providedHistoryDetail = ref(props.historyDetail)\nwatch(\n\thistoryDetailComputed,\n\tnewVal => {\n\t\tprovidedHistoryDetail.value = newVal\n\t},\n\t{ immediate: true }\n)\nprovide('historyDetail', providedHistoryDetail)\nprovide('agents', props.agents)\nconst iModules = ref(props.modules)\nwatch(\n\t() => props.modules,\n\tnewVal => {\n\t\tiModules.value = newVal\n\t\t// console.log('modules === index.vue === 191', newVal)\n\t},\n\t{ immediate: true }\n)\nprovide('modules', iModules)\n\nconst iMultiAgentInfo = ref(props.agentInfo)\nwatch(\n\t() => props.agentInfo,\n\tnewVal => {\n\t\tiMultiAgentInfo.value = newVal\n\t},\n\t{ immediate: true, deep: true }\n)\nprovide('agentInfo', iMultiAgentInfo)\n\n// 新增:提供处理点赞事件的函数\nprovide('like', (index: number, isLike: boolean) => {\n\t// 这里可以实现具体的点赞逻辑\n\temits('like', index, isLike) // like\n\t// 可以添加实际的业务逻辑,如调用API等\n})\n\n// 新增:提供处理点赞事件的函数 dislike\nprovide('dislike', (index: number, isUnlike: boolean) => {\n\t// 这里可以实现具体的点赞逻辑\n\temits('dislike', index, isUnlike) // dislike\n\t// 可以添加实际的业务逻辑,如调用API等\n})\n\nprovide('send', (value: string, fileList?: any[]) => {\n\t// send\n\t// 这里可以实现具体的点赞逻辑\n\tsendVal.value = value\n\temits('send', value, fileList)\n\t// 可以添加实际的业务逻辑,如调用API等\n})\n\nprovide('sideBottom', () => {\n\t// console.log('sideBottom === 触底事件') // bottom\n\temits('side-bottom')\n})\n\nprovide('change', (id: string) => {\n\t// console.log('change === 激活事件', id) // change\n\temits('change', id)\n})\n\nprovide('historyRemove', (id: string) => {\n\t//remove\n\t// console.log('historyRemove === 删除事件', id)\n\temits('historyRemove', id)\n})\n\nprovide('openSideBar', (item: any, index: number) => {\n\temits('openSideBar', item, index)\n})\n\nprovide('share', (item: any, index: number) => {\n\temits('share', item, index)\n})\n\nprovide('withDraw', (item: any, index: number) => {\n\temits('withDraw', item, index)\n})\n\nprovide('afterSend', (content: any) => {\n\t// afterSend\n\t// console.log('afterSend === 发送消息事件', content)\n\temits('afterSend', content)\n})\n\nprovide('remove', (item: ChatMessage, index: number) => {\n\t// afterSend\n\t// console.log('remove === 详情删除', item, index)\n\temits('remove', item, index)\n})\n\nprovide('bottom', () => {\n\t// console.log('bottom === 详情触底')\n\temits('bottom')\n})\n\nprovide('stop', (item: ChatMessage, index: number) => {\n\t// console.log('stop === 用户终止事件')\n\temits('stop', item, index)\n})\n\nprovide('modelChange', (item: ModuleItem, index: number) => {\n\t// console.log('modelChange === 模型切换事件', item, index)\n\temits('modelChange', item, index)\n})\n\n// const rootRef = ref(null)\nconst deepSeekRef = ref<InstanceType<typeof DeepSeek> | null>(null)\n\nconst elementClass = computed(() => {\n\tconst classList = []\n\tif (props.mode) {\n\t\tclassList.push(`touchchat-${props.mode}`)\n\t}\n\treturn classList.join(' ')\n})\n\n// 修改elementStyle计算属性,移除对scripts.length的检查\nconst elementStyle = computed(() => {\n\tlet width = ''\n\tlet height = ''\n\n\tif (props.width) {\n\t\tif (typeof props.width === 'string') {\n\t\t\twidth = props.width ?? '100%'\n\t\t} else {\n\t\t\twidth = `${props.width}em`\n\t\t}\n\t}\n\n\tif (props.height) {\n\t\tif (typeof props.height === 'string') {\n\t\t\theight = props.height ?? '100%'\n\t\t} else {\n\t\t\theight = `${props.height}em`\n\t\t}\n\t}\n\n\treturn {\n\t\twidth,\n\t\theight\n\t}\n})\nconst updateInputMethod = ref<any>(null)\nprovide('setInput', updateInputMethod)\nconst setInput = (newValue: string) => {\n\tif (updateInputMethod.value) {\n\t\tupdateInputMethod.value(newValue)\n\t}\n}\nprovide('fileAction', (item: any, index: number) => {\n\temits('file-action', item, index)\n})\ndefineExpose({\n\tsend: (value: string, fileList?: any[], auto?: boolean, type?: string) => {\n\t\tdeepSeekRef.value?.send(value, fileList, auto, type) //send\n\t},\n\tcloseExtend: () => {\n\t\tdeepSeekRef.value?.closeExtend() // closeExtend\n\t},\n\tcreate: () => {\n\t\tdeepSeekRef.value?.create() // reset\n\t},\n\tretry: (index: number) => {\n\t\tdeepSeekRef.value?.retry(index)\n\t},\n\tupdate: (index: number, message: object) => {\n\t\tdeepSeekRef.value?.update(index, message)\n\t},\n\tchangeChat: (index: number) => {\n\t\tdeepSeekRef.value?.changeChat(index)\n\t},\n\tclearChat: () => {\n\t\tdeepSeekRef.value?.clearChat()\n\t},\n\tsetInput\n})\n</script>\n"],"names":["DO_defineComponent","_createCommentVNode","_createVNode","_withCtx","_renderSlot"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"a2aService.mjs","sources":["../../../../../../packages/components/touchchat/utils/a2aService.ts"],"sourcesContent":["import type { AgentConfig, Message, JSONRPCRequest, StreamChunk, Task, AgentCard, SubAgent } from '../src/types/a2a'\r\n// @/types/a2a\r\n\r\n// A2A Service - Handles communication with A2A agents\r\nexport class A2AService {\r\n\tprivate agents: Map<string, AgentConfig> = new Map()\r\n\r\n\t// Register an agent\r\n\tregisterAgent(config: AgentConfig): void {\r\n\t\tthis.agents.set(config.id, config)\r\n\t}\r\n\r\n\t// Unregister an agent\r\n\tunregisterAgent(agentId: string): void {\r\n\t\tthis.agents.delete(agentId)\r\n\t}\r\n\r\n\t// Get registered agent\r\n\tgetAgent(agentId: string): AgentConfig | undefined {\r\n\t\treturn this.agents.get(agentId)\r\n\t}\r\n\r\n\t// Get all registered agents\r\n\tgetAllAgents(): AgentConfig[] {\r\n\t\treturn Array.from(this.agents.values())\r\n\t}\r\n\r\n\t// Fetch agent card (agent discovery)\r\n\tasync fetchAgentCard(url: string): Promise<AgentCard> {\r\n\t\tconst response = await fetch(url, {\r\n\t\t\tmethod: 'GET',\r\n\t\t\theaders: {\r\n\t\t\t\tAccept: 'application/json'\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\tif (!response.ok) {\r\n\t\t\tthrow new Error(`Failed to fetch agent card: ${response.statusText}`)\r\n\t\t}\r\n\r\n\t\treturn response.json()\r\n\t}\r\n\r\n\t// Send message to agent (non-streaming)\r\n\tasync sendMessage(agentId: string, message: Message, sessionId?: string): Promise<Task> {\r\n\t\tconst agent = this.agents.get(agentId)\r\n\t\tif (!agent) {\r\n\t\t\tthrow new Error(`Agent ${agentId} not found`)\r\n\t\t}\r\n\r\n\t\tconst request: JSONRPCRequest = {\r\n\t\t\tjsonrpc: '2.0',\r\n\t\t\tid: this.generateId(),\r\n\t\t\tmethod: 'message/send',\r\n\t\t\tparams: {\r\n\t\t\t\tmessage,\r\n\t\t\t\tsessionId\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst response = await fetch(agent.endpoint, {\r\n\t\t\tmethod: 'POST',\r\n\t\t\theaders: {\r\n\t\t\t\t'Content-Type': 'application/json',\r\n\t\t\t\t...(agent.authToken && { Authorization: `Bearer ${agent.authToken}` })\r\n\t\t\t},\r\n\t\t\tbody: JSON.stringify(request)\r\n\t\t})\r\n\r\n\t\tif (!response.ok) {\r\n\t\t\tthrow new Error(`HTTP error: ${response.status}`)\r\n\t\t}\r\n\r\n\t\tconst data = await response.json()\r\n\r\n\t\tif (data.error) {\r\n\t\t\tthrow new Error(`A2A error: ${data.error.message}`)\r\n\t\t}\r\n\r\n\t\treturn data.result as Task\r\n\t}\r\n\r\n\t// Stream message to agent (for streaming responses)\r\n\tasync streamMessage(agentId: string, message: Message, sessionId?: string, signal?: AbortSignal): Promise<ReadableStream<StreamChunk>> {\r\n\t\tconst agent = this.agents.get(agentId)\r\n\t\tif (!agent) {\r\n\t\t\tthrow new Error(`Agent ${agentId} not found`)\r\n\t\t}\r\n\r\n\t\tconst request: JSONRPCRequest = {\r\n\t\t\tjsonrpc: '2.0',\r\n\t\t\tid: this.generateId(),\r\n\t\t\tmethod: 'message/stream',\r\n\t\t\tparams: {\r\n\t\t\t\tmessage,\r\n\t\t\t\tsessionId\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst response = await fetch(agent.endpoint, {\r\n\t\t\tmethod: 'POST',\r\n\t\t\theaders: {\r\n\t\t\t\t'Content-Type': 'application/json',\r\n\t\t\t\tAccept: 'text/event-stream',\r\n\t\t\t\t...(agent.authToken && { Authorization: `Bearer ${agent.authToken}` })\r\n\t\t\t},\r\n\t\t\tbody: JSON.stringify(request),\r\n\t\t\tsignal\r\n\t\t})\r\n\r\n\t\tif (!response.ok) {\r\n\t\t\tthrow new Error(`HTTP error: ${response.status}`)\r\n\t\t}\r\n\r\n\t\tif (!response.body) {\r\n\t\t\tthrow new Error('No response body')\r\n\t\t}\r\n\r\n\t\treturn new ReadableStream<StreamChunk>({\r\n\t\t\tasync start(controller) {\r\n\t\t\t\tconst reader = response.body!.getReader()\r\n\t\t\t\tconst decoder = new TextDecoder()\r\n\t\t\t\tlet buffer = ''\r\n\r\n\t\t\t\t// Handle abort signal\r\n\t\t\t\tif (signal) {\r\n\t\t\t\t\tsignal.addEventListener('abort', () => {\r\n\t\t\t\t\t\tcontroller.close()\r\n\t\t\t\t\t\treader.cancel()\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\tlet isDone = false\r\n\t\t\t\t\twhile (!isDone) {\r\n\t\t\t\t\t\t// Check if the signal has been aborted\r\n\t\t\t\t\t\tif (signal?.aborted) {\r\n\t\t\t\t\t\t\tcontroller.close()\r\n\t\t\t\t\t\t\treturn\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tconst { done, value } = await reader.read()\r\n\t\t\t\t\t\tif (done) {\r\n\t\t\t\t\t\t\tisDone = true\r\n\t\t\t\t\t\t\tcontroller.close()\r\n\t\t\t\t\t\t\tbreak\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tbuffer += decoder.decode(value, { stream: true })\r\n\t\t\t\t\t\tconst lines = buffer.split('\\n')\r\n\t\t\t\t\t\tbuffer = lines.pop() || ''\r\n\r\n\t\t\t\t\t\tconst fn = async (data: string) => {\r\n\t\t\t\t\t\t\tif (data === '[DONE]') {\r\n\t\t\t\t\t\t\t\tcontroller.close()\r\n\t\t\t\t\t\t\t\treturn\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\tconst chunk: StreamChunk = JSON.parse(data)\r\n\t\t\t\t\t\t\t\t// Add a small delay to simulate streaming effect\r\n\t\t\t\t\t\t\t\tawait new Promise(resolve => setTimeout(resolve, 50))\r\n\t\t\t\t\t\t\t\tcontroller.enqueue(chunk)\r\n\t\t\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\t\t\tconsole.warn('Failed to parse SSE data:', data)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tfor (const line of lines) {\r\n\t\t\t\t\t\t\tconst trimmed = line.trim()\r\n\t\t\t\t\t\t\tif (trimmed.startsWith('data:')) {\r\n\t\t\t\t\t\t\t\tconst data = trimmed.slice(5)\r\n\t\t\t\t\t\t\t\tawait fn(data)\r\n\t\t\t\t\t\t\t} else if (trimmed.startsWith('data: ')) {\r\n\t\t\t\t\t\t\t\tconst data = trimmed.slice(6)\r\n\t\t\t\t\t\t\t\tawait fn(data)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} finally {\r\n\t\t\t\t\treader.releaseLock()\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\t// Multi-agent message routing\r\n\tasync routeMessage(agentIds: string[], message: Message, mode: 'sequential' | 'parallel' = 'sequential'): Promise<Map<string, Task>> {\r\n\t\tconst results = new Map<string, Task>()\r\n\r\n\t\tif (mode === 'parallel') {\r\n\t\t\tconst promises = agentIds.map(async agentId => {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tconst task = await this.sendMessage(agentId, message)\r\n\t\t\t\t\treturn { agentId, task, error: null }\r\n\t\t\t\t} catch (error) {\r\n\t\t\t\t\treturn { agentId, task: null, error }\r\n\t\t\t\t}\r\n\t\t\t})\r\n\r\n\t\t\tconst settled = await Promise.all(promises)\r\n\t\t\tfor (const { agentId, task, error } of settled) {\r\n\t\t\t\tif (task) {\r\n\t\t\t\t\tresults.set(agentId, task)\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconsole.error(`Error sending to agent ${agentId}:`, error)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// Sequential\r\n\t\t\tfor (const agentId of agentIds) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tconst task = await this.sendMessage(agentId, message)\r\n\t\t\t\t\tresults.set(agentId, task)\r\n\t\t\t\t} catch (error) {\r\n\t\t\t\t\tconsole.error(`Error sending to agent ${agentId}:`, error)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn results\r\n\t}\r\n\r\n\t// Get task status\r\n\tasync getTask(agentId: string, taskId: string): Promise<Task> {\r\n\t\tconst agent = this.agents.get(agentId)\r\n\t\tif (!agent) {\r\n\t\t\tthrow new Error(`Agent ${agentId} not found`)\r\n\t\t}\r\n\r\n\t\tconst request: JSONRPCRequest = {\r\n\t\t\tjsonrpc: '2.0',\r\n\t\t\tid: this.generateId(),\r\n\t\t\tmethod: 'task/get',\r\n\t\t\tparams: { taskId }\r\n\t\t}\r\n\r\n\t\tconst response = await fetch(agent.endpoint, {\r\n\t\t\tmethod: 'POST',\r\n\t\t\theaders: {\r\n\t\t\t\t'Content-Type': 'application/json',\r\n\t\t\t\t...(agent.authToken && { Authorization: `Bearer ${agent.authToken}` })\r\n\t\t\t},\r\n\t\t\tbody: JSON.stringify(request)\r\n\t\t})\r\n\r\n\t\tif (!response.ok) {\r\n\t\t\tthrow new Error(`HTTP error: ${response.status}`)\r\n\t\t}\r\n\r\n\t\tconst data = await response.json()\r\n\r\n\t\tif (data.error) {\r\n\t\t\tthrow new Error(`A2A error: ${data.error.message}`)\r\n\t\t}\r\n\r\n\t\treturn data.result as Task\r\n\t}\r\n\r\n\t// Cancel task\r\n\tasync cancelTask(agentId: string, taskId: string): Promise<void> {\r\n\t\tconst agent = this.agents.get(agentId)\r\n\t\tif (!agent) {\r\n\t\t\tthrow new Error(`Agent ${agentId} not found`)\r\n\t\t}\r\n\r\n\t\tconst request: JSONRPCRequest = {\r\n\t\t\tjsonrpc: '2.0',\r\n\t\t\tid: this.generateId(),\r\n\t\t\tmethod: 'task/cancel',\r\n\t\t\tparams: { taskId }\r\n\t\t}\r\n\r\n\t\tconst response = await fetch(agent.endpoint, {\r\n\t\t\tmethod: 'POST',\r\n\t\t\theaders: {\r\n\t\t\t\t'Content-Type': 'application/json',\r\n\t\t\t\t...(agent.authToken && { Authorization: `Bearer ${agent.authToken}` })\r\n\t\t\t},\r\n\t\t\tbody: JSON.stringify(request)\r\n\t\t})\r\n\r\n\t\tif (!response.ok) {\r\n\t\t\tthrow new Error(`HTTP error: ${response.status}`)\r\n\t\t}\r\n\r\n\t\tconst data = await response.json()\r\n\r\n\t\tif (data.error) {\r\n\t\t\tthrow new Error(`A2A error: ${data.error.message}`)\r\n\t\t}\r\n\t}\r\n\r\n\t// Generate unique ID\r\n\tprivate generateId(): string {\r\n\t\treturn `req-${Date.now()}-${Math.random().toString(36).slice(2, 11)}`\r\n\t}\r\n\r\n\t// Multi-agent streaming message\r\n\tasync *streamMultiAgentMessage(hostEndpoint: string, subAgents: SubAgent[], message: Message, headers: object, sessionId?: string, signal?: AbortSignal): AsyncGenerator<StreamChunk, void, unknown> {\r\n\t\t// Build X-Sub-Agents headers: JSON array -> Base64\r\n\t\tconst subAgentsJson = JSON.stringify(subAgents)\r\n\t\t// Use Unicode-safe Base64 encoding\r\n\t\tconst xSubAgents = btoa(unescape(encodeURIComponent(subAgentsJson)))\r\n\r\n\t\tconst request: JSONRPCRequest = {\r\n\t\t\tjsonrpc: '2.0',\r\n\t\t\tid: this.generateId(),\r\n\t\t\tmethod: 'message/stream',\r\n\t\t\tparams: {\r\n\t\t\t\tmessage,\r\n\t\t\t\tsessionId\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst response = await fetch(hostEndpoint, {\r\n\t\t\tmethod: 'POST',\r\n\t\t\theaders: {\r\n\t\t\t\t'Content-Type': 'application/json',\r\n\t\t\t\tAccept: 'text/event-stream',\r\n\t\t\t\t'X-Sub-Agents': xSubAgents,\r\n\t\t\t\t// 'ai-jwt-token': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhc2lhaW5mby5jb20iLCJzdWIiOiJkZW5nd2FuIiwiYXVkIjoiY29tLmFpZi5wYWFzLndlYlRva2VuIiwidXNlckluZm8iOiJ7XCJhbGlhc1wiOlwiZGVuZ3dhblwiLFwiYXV0b2luXCI6ZmFsc2UsXCJlbnZDb2RlXCI6XCJQUk9EXCIsXCJlbnZOYW1lXCI6XCLnlJ_kuqfnjq_looNcIixcImxhbmd1YWdlXCI6XCJ6aFwiLFwicGVybWlzc2lvbnNcIjpbXCJcIixcInBvcnRhbDpzeXN0ZW06cm9sZTpiaW5kXCIsXCJwb3J0YWw6ZGljdGlvbmFyeTpkYXRhOmFkZFwiLG51bGwsXCJhZ2VudFwiLFwicG9ydGFsOnN5c3RlbTp1c2VyOmRlbGV0ZVwiLFwicG9ydGFsOmRpY3Rpb25hcnk6ZGF0YTp1cGRhdGVcIixcImF1ZGl0TG9nL2xpc3RBdWRpdExvZ1wiLFwicG9ydGFsOmRpY3Rpb25hcnk6ZGF0YTpkZWxldGVcIixcInBvcnRhbDpzeXN0ZW06dXNlcjp1cGRhdGVcIixcInBvcnRhbDptY3A6YXVkaXRcIixcInBvcnRhbDptY3A6c2FmZWF1ZGl0XCIsXCJwb3J0YWw6bWNwOnRvb2xjb25maXJtXCIsXCJwb3J0YWw6c3lzdGVtOnRlbmFudDphZGRcIixcInBvcnRhbDpzeXN0ZW06dGVuYW50OnJlbGF0aW9uXCIsXCJwb3J0YWw6c3lzdGVtOm9wZXJhdGlvbjpwZXJtaXNzaW9uXCIsXCJwb3J0YWw6c3lzdGVtUGFyYW1ldGVyOmRlbGV0ZVwiLFwicG9ydGFsOmRpY3Rpb25hcnk6dXBkYXRlXCIsXCJwb3J0YWw6c3lzdGVtOnJvbGU6YWRkXCIsXCJ0ZW5hbnQvZ2V0VGVuYW50RHRvTGlzdFwiLFwicG9ydGFsOnN5c3RlbTpyb2xlOnVwZGF0ZVwiLFwicG9ydGFsOmFnZW50OmF1ZGl0XCIsXCJwb3J0YWw6bm90aWNlOnVwZGF0ZVwiLFwicG9ydGFsOnN5c3RlbTpyb2xlOmRlbGV0ZVwiLFwicG9ydGFsOnN5c3RlbTp1c2VyOmFkZFwiLFwibWVudS9nZXRNZW51QnlQYXJhbVwiLFwicG9ydGFsOmRpY3Rpb25hcnk6ZGVsZXRlXCIsXCJwb3J0YWw6c3lzdGVtOm9wZXJhdGlvbjpkZWxldGVcIixcInVzZXIvcXVlcnlVc2VyRHRvTGlzdFwiLFwicG9ydGFsOnN5c3RlbTptZW51OmFkZFwiLFwicG9ydGFsOnN5c3RlbVBhcmFtZXRlcjp1cGRhdGVcIixcInBvcnRhbDphZ2VudDptb2RlbGNoZWNrXCIsXCJwb3J0YWw6c3lzdGVtOm1lbnU6dXBkYXRlXCIsXCJyb2xlL3F1ZXJ5Um9sZUxpc3RcIixcInBvcnRhbDpzeXN0ZW06bWVudTpkZWxldGVcIixcInBvcnRhbDpub3RpY2U6YWRkXCIsXCJwb3J0YWw6c3lzdGVtOnRlbmFudDpkZWxldGVcIixcInBvcnRhbDpzeXN0ZW1QYXJhbWV0ZXI6YWRkXCIsXCJyb2xlUGVybWlzc2lvbnMvcXVlcnlNZW51UGVybWlzc2lvbkxpc3RcIixcInBvcnRhbDpzeXN0ZW06dGVuYW50OnVwZGF0ZVwiLFwibm90aWNlL2xpc3ROb3RpY2VcIl0sXCJwbGF0Zm9ybU1hbmFnZXJcIjp0cnVlLFwicm9sZUxpc3RcIjpbe1wiY3JlYXRlVGltZVwiOlwiMjAyNi0wMy0wMSAwMDowMDowMFwiLFwiaGFzRWRpdFwiOjEsXCJyb2xlQ29kZVwiOlwiY2FwX3Byb3ZpZGVyXCIsXCJyb2xlSWRcIjoxMixcInJvbGVOYW1lXCI6XCLog73lipvmj5DkvpvogIVcIixcInJvbGVUeXBlXCI6MX0se1wiY3JlYXRlVGltZVwiOlwiMjAyNi0wMy0wMSAwMDowMDowMFwiLFwiaGFzRWRpdFwiOjEsXCJyb2xlQ29kZVwiOlwidGVuYW50X2FkbWluXCIsXCJyb2xlSWRcIjo4LFwicm9sZU5hbWVcIjpcIuenn-aIt-euoeeQhuWRmFwiLFwicm9sZVR5cGVcIjoxfSx7XCJjcmVhdGVUaW1lXCI6XCIyMDIyLTA2LTI4IDAwOjAwOjAwXCIsXCJoYXNFZGl0XCI6MSxcInJvbGVDb2RlXCI6XCJyb2xlX2FkbWluXCIsXCJyb2xlSWRcIjoxLFwicm9sZU5hbWVcIjpcIui2hee6p-euoeeQhuWRmFwiLFwicm9sZVR5cGVcIjoxfV0sXCJ0ZW5hbnRDb2RlXCI6XCJ0ZW5hbnQtb25lXCIsXCJ0ZW5hbnRJZFwiOjUsXCJ0ZW5hbnROYW1lXCI6XCLkuIDnuqfov5DokKXnqbrpl7RcIixcInVzZXJJZFwiOjYsXCJ1c2VyTmFtZVwiOlwiZGVuZ3dhblwifSIsImV4cCI6MTc3Mzk5ODEzN30.7P8WVl3ji1G2unk0wOISJbF43ilcuzksOdSOQJNHGXM'\r\n\t\t\t\t// 'ai-jwt-token': authToken\r\n\t\t\t\t...headers\r\n\t\t\t},\r\n\t\t\tbody: JSON.stringify(request),\r\n\t\t\tsignal\r\n\t\t})\r\n\r\n\t\tif (!response.ok) {\r\n\t\t\tthrow new Error(`HTTP error: ${response.status}`)\r\n\t\t}\r\n\r\n\t\tif (!response.body) {\r\n\t\t\tthrow new Error('No response body')\r\n\t\t}\r\n\r\n\t\tconst reader = response.body.getReader()\r\n\t\tconst decoder = new TextDecoder()\r\n\t\tlet buffer = ''\r\n\r\n\t\ttry {\r\n\t\t\twhile (true) {\r\n\t\t\t\t// Check if the signal has been aborted\r\n\t\t\t\tif (signal?.aborted) {\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst { done, value } = await reader.read()\r\n\t\t\t\tif (done) break\r\n\r\n\t\t\t\tbuffer += decoder.decode(value, { stream: true })\r\n\t\t\t\tconst lines = buffer.split('\\n')\r\n\t\t\t\tbuffer = lines.pop() || ''\r\n\r\n\t\t\t\tfor (const line of lines) {\r\n\t\t\t\t\tconst trimmed = line.trim()\r\n\t\t\t\t\tif (trimmed.startsWith('data: ')) {\r\n\t\t\t\t\t\tconst data = trimmed.slice(6)\r\n\t\t\t\t\t\tif (data === '[DONE]') return\r\n\r\n\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\tconst chunk: StreamChunk = JSON.parse(data)\r\n\t\t\t\t\t\t\tyield chunk\r\n\t\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\t\tconsole.warn('Failed to parse SSE data:', data)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\treader.releaseLock()\r\n\t\t}\r\n\t}\r\n}\r\n\r\n// Singleton instance\r\nexport const a2aService = new A2AService()\r\n"],"names":[],"mappings":"AAIO,MAAM,UAAW,CAAA;AAAA,EAAjB,WAAA,GAAA;AACN,IAAQ,IAAA,CAAA,MAAA,uBAAuC,GAAI,EAAA,CAAA;AAAA,GAAA;AAAA;AAAA,EAGnD,cAAc,MAA2B,EAAA;AACxC,IAAA,IAAA,CAAK,MAAO,CAAA,GAAA,CAAI,MAAO,CAAA,EAAA,EAAI,MAAM,CAAA,CAAA;AAAA,GAClC;AAAA;AAAA,EAGA,gBAAgB,OAAuB,EAAA;AACtC,IAAK,IAAA,CAAA,MAAA,CAAO,OAAO,OAAO,CAAA,CAAA;AAAA,GAC3B;AAAA;AAAA,EAGA,SAAS,OAA0C,EAAA;AAClD,IAAO,OAAA,IAAA,CAAK,MAAO,CAAA,GAAA,CAAI,OAAO,CAAA,CAAA;AAAA,GAC/B;AAAA;AAAA,EAGA,YAA8B,GAAA;AAC7B,IAAA,OAAO,KAAM,CAAA,IAAA,CAAK,IAAK,CAAA,MAAA,CAAO,QAAQ,CAAA,CAAA;AAAA,GACvC;AAAA;AAAA,EAGA,MAAM,eAAe,GAAiC,EAAA;AACrD,IAAM,MAAA,QAAA,GAAW,MAAM,KAAA,CAAM,GAAK,EAAA;AAAA,MACjC,MAAQ,EAAA,KAAA;AAAA,MACR,OAAS,EAAA;AAAA,QACR,MAAQ,EAAA,kBAAA;AAAA,OACT;AAAA,KACA,CAAA,CAAA;AAED,IAAI,IAAA,CAAC,SAAS,EAAI,EAAA;AACjB,MAAA,MAAM,IAAI,KAAA,CAAM,CAA+B,4BAAA,EAAA,QAAA,CAAS,UAAY,CAAA,CAAA,CAAA,CAAA;AAAA,KACrE;AAEA,IAAA,OAAO,SAAS,IAAK,EAAA,CAAA;AAAA,GACtB;AAAA;AAAA,EAGA,MAAM,WAAA,CAAY,OAAiB,EAAA,OAAA,EAAkB,SAAmC,EAAA;AACvF,IAAA,MAAM,KAAQ,GAAA,IAAA,CAAK,MAAO,CAAA,GAAA,CAAI,OAAO,CAAA,CAAA;AACrC,IAAA,IAAI,CAAC,KAAO,EAAA;AACX,MAAM,MAAA,IAAI,KAAM,CAAA,CAAA,MAAA,EAAS,OAAmB,CAAA,UAAA,CAAA,CAAA,CAAA;AAAA,KAC7C;AAEA,IAAA,MAAM,OAA0B,GAAA;AAAA,MAC/B,OAAS,EAAA,KAAA;AAAA,MACT,EAAA,EAAI,KAAK,UAAW,EAAA;AAAA,MACpB,MAAQ,EAAA,cAAA;AAAA,MACR,MAAQ,EAAA;AAAA,QACP,OAAA;AAAA,QACA,SAAA;AAAA,OACD;AAAA,KACD,CAAA;AAEA,IAAA,MAAM,QAAW,GAAA,MAAM,KAAM,CAAA,KAAA,CAAM,QAAU,EAAA;AAAA,MAC5C,MAAQ,EAAA,MAAA;AAAA,MACR,OAAS,EAAA;AAAA,QACR,cAAgB,EAAA,kBAAA;AAAA,QAChB,GAAI,KAAM,CAAA,SAAA,IAAa,EAAE,aAAe,EAAA,CAAA,OAAA,EAAU,MAAM,SAAY,CAAA,CAAA,EAAA;AAAA,OACrE;AAAA,MACA,IAAA,EAAM,IAAK,CAAA,SAAA,CAAU,OAAO,CAAA;AAAA,KAC5B,CAAA,CAAA;AAED,IAAI,IAAA,CAAC,SAAS,EAAI,EAAA;AACjB,MAAA,MAAM,IAAI,KAAA,CAAM,CAAe,YAAA,EAAA,QAAA,CAAS,MAAQ,CAAA,CAAA,CAAA,CAAA;AAAA,KACjD;AAEA,IAAM,MAAA,IAAA,GAAO,MAAM,QAAA,CAAS,IAAK,EAAA,CAAA;AAEjC,IAAA,IAAI,KAAK,KAAO,EAAA;AACf,MAAA,MAAM,IAAI,KAAA,CAAM,CAAc,WAAA,EAAA,IAAA,CAAK,MAAM,OAAS,CAAA,CAAA,CAAA,CAAA;AAAA,KACnD;AAEA,IAAA,OAAO,IAAK,CAAA,MAAA,CAAA;AAAA,GACb;AAAA;AAAA,EAGA,MAAM,aAAA,CAAc,OAAiB,EAAA,OAAA,EAAkB,WAAoB,MAA4D,EAAA;AACtI,IAAA,MAAM,KAAQ,GAAA,IAAA,CAAK,MAAO,CAAA,GAAA,CAAI,OAAO,CAAA,CAAA;AACrC,IAAA,IAAI,CAAC,KAAO,EAAA;AACX,MAAM,MAAA,IAAI,KAAM,CAAA,CAAA,MAAA,EAAS,OAAmB,CAAA,UAAA,CAAA,CAAA,CAAA;AAAA,KAC7C;AAEA,IAAA,MAAM,OAA0B,GAAA;AAAA,MAC/B,OAAS,EAAA,KAAA;AAAA,MACT,EAAA,EAAI,KAAK,UAAW,EAAA;AAAA,MACpB,MAAQ,EAAA,gBAAA;AAAA,MACR,MAAQ,EAAA;AAAA,QACP,OAAA;AAAA,QACA,SAAA;AAAA,OACD;AAAA,KACD,CAAA;AAEA,IAAA,MAAM,QAAW,GAAA,MAAM,KAAM,CAAA,KAAA,CAAM,QAAU,EAAA;AAAA,MAC5C,MAAQ,EAAA,MAAA;AAAA,MACR,OAAS,EAAA;AAAA,QACR,cAAgB,EAAA,kBAAA;AAAA,QAChB,MAAQ,EAAA,mBAAA;AAAA,QACR,GAAI,KAAM,CAAA,SAAA,IAAa,EAAE,aAAe,EAAA,CAAA,OAAA,EAAU,MAAM,SAAY,CAAA,CAAA,EAAA;AAAA,OACrE;AAAA,MACA,IAAA,EAAM,IAAK,CAAA,SAAA,CAAU,OAAO,CAAA;AAAA,MAC5B,MAAA;AAAA,KACA,CAAA,CAAA;AAED,IAAI,IAAA,CAAC,SAAS,EAAI,EAAA;AACjB,MAAA,MAAM,IAAI,KAAA,CAAM,CAAe,YAAA,EAAA,QAAA,CAAS,MAAQ,CAAA,CAAA,CAAA,CAAA;AAAA,KACjD;AAEA,IAAI,IAAA,CAAC,SAAS,IAAM,EAAA;AACnB,MAAM,MAAA,IAAI,MAAM,kBAAkB,CAAA,CAAA;AAAA,KACnC;AAEA,IAAA,OAAO,IAAI,cAA4B,CAAA;AAAA,MACtC,MAAM,MAAM,UAAY,EAAA;AACvB,QAAM,MAAA,MAAA,GAAS,QAAS,CAAA,IAAA,CAAM,SAAU,EAAA,CAAA;AACxC,QAAM,MAAA,OAAA,GAAU,IAAI,WAAY,EAAA,CAAA;AAChC,QAAA,IAAI,MAAS,GAAA,EAAA,CAAA;AAGb,QAAA,IAAI,MAAQ,EAAA;AACX,UAAO,MAAA,CAAA,gBAAA,CAAiB,SAAS,MAAM;AACtC,YAAA,UAAA,CAAW,KAAM,EAAA,CAAA;AACjB,YAAA,MAAA,CAAO,MAAO,EAAA,CAAA;AAAA,WACd,CAAA,CAAA;AAAA,SACF;AAEA,QAAI,IAAA;AACH,UAAA,IAAI,MAAS,GAAA,KAAA,CAAA;AACb,UAAA,OAAO,CAAC,MAAQ,EAAA;AAEf,YAAA,IAAI,iCAAQ,OAAS,EAAA;AACpB,cAAA,UAAA,CAAW,KAAM,EAAA,CAAA;AACjB,cAAA,OAAA;AAAA,aACD;AAEA,YAAA,MAAM,EAAE,IAAM,EAAA,KAAA,EAAU,GAAA,MAAM,OAAO,IAAK,EAAA,CAAA;AAC1C,YAAA,IAAI,IAAM,EAAA;AACT,cAAS,MAAA,GAAA,IAAA,CAAA;AACT,cAAA,UAAA,CAAW,KAAM,EAAA,CAAA;AACjB,cAAA,MAAA;AAAA,aACD;AAEA,YAAA,MAAA,IAAU,QAAQ,MAAO,CAAA,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAM,CAAA,CAAA;AAChD,YAAM,MAAA,KAAA,GAAQ,MAAO,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAC/B,YAAS,MAAA,GAAA,KAAA,CAAM,KAAS,IAAA,EAAA,CAAA;AAExB,YAAM,MAAA,EAAA,GAAK,OAAO,IAAiB,KAAA;AAClC,cAAA,IAAI,SAAS,QAAU,EAAA;AACtB,gBAAA,UAAA,CAAW,KAAM,EAAA,CAAA;AACjB,gBAAA,OAAA;AAAA,eACD;AAEA,cAAI,IAAA;AACH,gBAAM,MAAA,KAAA,GAAqB,IAAK,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAE1C,gBAAA,MAAM,IAAI,OAAQ,CAAA,CAAA,OAAA,KAAW,UAAW,CAAA,OAAA,EAAS,EAAE,CAAC,CAAA,CAAA;AACpD,gBAAA,UAAA,CAAW,QAAQ,KAAK,CAAA,CAAA;AAAA,uBAChB,CAAP,EAAA;AACD,gBAAQ,OAAA,CAAA,IAAA,CAAK,6BAA6B,IAAI,CAAA,CAAA;AAAA,eAC/C;AAAA,aACD,CAAA;AAEA,YAAA,KAAA,MAAW,QAAQ,KAAO,EAAA;AACzB,cAAM,MAAA,OAAA,GAAU,KAAK,IAAK,EAAA,CAAA;AAC1B,cAAI,IAAA,OAAA,CAAQ,UAAW,CAAA,OAAO,CAAG,EAAA;AAChC,gBAAM,MAAA,IAAA,GAAO,OAAQ,CAAA,KAAA,CAAM,CAAC,CAAA,CAAA;AAC5B,gBAAA,MAAM,GAAG,IAAI,CAAA,CAAA;AAAA,eACH,MAAA,IAAA,OAAA,CAAQ,UAAW,CAAA,QAAQ,CAAG,EAAA;AACxC,gBAAM,MAAA,IAAA,GAAO,OAAQ,CAAA,KAAA,CAAM,CAAC,CAAA,CAAA;AAC5B,gBAAA,MAAM,GAAG,IAAI,CAAA,CAAA;AAAA,eACd;AAAA,aACD;AAAA,WACD;AAAA,SACC,SAAA;AACD,UAAA,MAAA,CAAO,WAAY,EAAA,CAAA;AAAA,SACpB;AAAA,OACD;AAAA,KACA,CAAA,CAAA;AAAA,GACF;AAAA;AAAA,EAGA,MAAM,YAAA,CAAa,QAAoB,EAAA,OAAA,EAAkB,OAAkC,YAA0C,EAAA;AACpI,IAAM,MAAA,OAAA,uBAAc,GAAkB,EAAA,CAAA;AAEtC,IAAA,IAAI,SAAS,UAAY,EAAA;AACxB,MAAA,MAAM,QAAW,GAAA,QAAA,CAAS,GAAI,CAAA,OAAM,OAAW,KAAA;AAC9C,QAAI,IAAA;AACH,UAAA,MAAM,IAAO,GAAA,MAAM,IAAK,CAAA,WAAA,CAAY,SAAS,OAAO,CAAA,CAAA;AACpD,UAAA,OAAO,EAAE,OAAA,EAAS,IAAM,EAAA,KAAA,EAAO,IAAK,EAAA,CAAA;AAAA,iBAC5B,KAAP,EAAA;AACD,UAAA,OAAO,EAAE,OAAA,EAAS,IAAM,EAAA,IAAA,EAAM,KAAM,EAAA,CAAA;AAAA,SACrC;AAAA,OACA,CAAA,CAAA;AAED,MAAA,MAAM,OAAU,GAAA,MAAM,OAAQ,CAAA,GAAA,CAAI,QAAQ,CAAA,CAAA;AAC1C,MAAA,KAAA,MAAW,EAAE,OAAA,EAAS,IAAM,EAAA,KAAA,MAAW,OAAS,EAAA;AAC/C,QAAA,IAAI,IAAM,EAAA;AACT,UAAQ,OAAA,CAAA,GAAA,CAAI,SAAS,IAAI,CAAA,CAAA;AAAA,SACnB,MAAA;AACN,UAAQ,OAAA,CAAA,KAAA,CAAM,CAA0B,uBAAA,EAAA,OAAA,CAAA,CAAA,CAAA,EAAY,KAAK,CAAA,CAAA;AAAA,SAC1D;AAAA,OACD;AAAA,KACM,MAAA;AAEN,MAAA,KAAA,MAAW,WAAW,QAAU,EAAA;AAC/B,QAAI,IAAA;AACH,UAAA,MAAM,IAAO,GAAA,MAAM,IAAK,CAAA,WAAA,CAAY,SAAS,OAAO,CAAA,CAAA;AACpD,UAAQ,OAAA,CAAA,GAAA,CAAI,SAAS,IAAI,CAAA,CAAA;AAAA,iBACjB,KAAP,EAAA;AACD,UAAQ,OAAA,CAAA,KAAA,CAAM,CAA0B,uBAAA,EAAA,OAAA,CAAA,CAAA,CAAA,EAAY,KAAK,CAAA,CAAA;AAAA,SAC1D;AAAA,OACD;AAAA,KACD;AAEA,IAAO,OAAA,OAAA,CAAA;AAAA,GACR;AAAA;AAAA,EAGA,MAAM,OAAQ,CAAA,OAAA,EAAiB,MAA+B,EAAA;AAC7D,IAAA,MAAM,KAAQ,GAAA,IAAA,CAAK,MAAO,CAAA,GAAA,CAAI,OAAO,CAAA,CAAA;AACrC,IAAA,IAAI,CAAC,KAAO,EAAA;AACX,MAAM,MAAA,IAAI,KAAM,CAAA,CAAA,MAAA,EAAS,OAAmB,CAAA,UAAA,CAAA,CAAA,CAAA;AAAA,KAC7C;AAEA,IAAA,MAAM,OAA0B,GAAA;AAAA,MAC/B,OAAS,EAAA,KAAA;AAAA,MACT,EAAA,EAAI,KAAK,UAAW,EAAA;AAAA,MACpB,MAAQ,EAAA,UAAA;AAAA,MACR,MAAA,EAAQ,EAAE,MAAO,EAAA;AAAA,KAClB,CAAA;AAEA,IAAA,MAAM,QAAW,GAAA,MAAM,KAAM,CAAA,KAAA,CAAM,QAAU,EAAA;AAAA,MAC5C,MAAQ,EAAA,MAAA;AAAA,MACR,OAAS,EAAA;AAAA,QACR,cAAgB,EAAA,kBAAA;AAAA,QAChB,GAAI,KAAM,CAAA,SAAA,IAAa,EAAE,aAAe,EAAA,CAAA,OAAA,EAAU,MAAM,SAAY,CAAA,CAAA,EAAA;AAAA,OACrE;AAAA,MACA,IAAA,EAAM,IAAK,CAAA,SAAA,CAAU,OAAO,CAAA;AAAA,KAC5B,CAAA,CAAA;AAED,IAAI,IAAA,CAAC,SAAS,EAAI,EAAA;AACjB,MAAA,MAAM,IAAI,KAAA,CAAM,CAAe,YAAA,EAAA,QAAA,CAAS,MAAQ,CAAA,CAAA,CAAA,CAAA;AAAA,KACjD;AAEA,IAAM,MAAA,IAAA,GAAO,MAAM,QAAA,CAAS,IAAK,EAAA,CAAA;AAEjC,IAAA,IAAI,KAAK,KAAO,EAAA;AACf,MAAA,MAAM,IAAI,KAAA,CAAM,CAAc,WAAA,EAAA,IAAA,CAAK,MAAM,OAAS,CAAA,CAAA,CAAA,CAAA;AAAA,KACnD;AAEA,IAAA,OAAO,IAAK,CAAA,MAAA,CAAA;AAAA,GACb;AAAA;AAAA,EAGA,MAAM,UAAW,CAAA,OAAA,EAAiB,MAA+B,EAAA;AAChE,IAAA,MAAM,KAAQ,GAAA,IAAA,CAAK,MAAO,CAAA,GAAA,CAAI,OAAO,CAAA,CAAA;AACrC,IAAA,IAAI,CAAC,KAAO,EAAA;AACX,MAAM,MAAA,IAAI,KAAM,CAAA,CAAA,MAAA,EAAS,OAAmB,CAAA,UAAA,CAAA,CAAA,CAAA;AAAA,KAC7C;AAEA,IAAA,MAAM,OAA0B,GAAA;AAAA,MAC/B,OAAS,EAAA,KAAA;AAAA,MACT,EAAA,EAAI,KAAK,UAAW,EAAA;AAAA,MACpB,MAAQ,EAAA,aAAA;AAAA,MACR,MAAA,EAAQ,EAAE,MAAO,EAAA;AAAA,KAClB,CAAA;AAEA,IAAA,MAAM,QAAW,GAAA,MAAM,KAAM,CAAA,KAAA,CAAM,QAAU,EAAA;AAAA,MAC5C,MAAQ,EAAA,MAAA;AAAA,MACR,OAAS,EAAA;AAAA,QACR,cAAgB,EAAA,kBAAA;AAAA,QAChB,GAAI,KAAM,CAAA,SAAA,IAAa,EAAE,aAAe,EAAA,CAAA,OAAA,EAAU,MAAM,SAAY,CAAA,CAAA,EAAA;AAAA,OACrE;AAAA,MACA,IAAA,EAAM,IAAK,CAAA,SAAA,CAAU,OAAO,CAAA;AAAA,KAC5B,CAAA,CAAA;AAED,IAAI,IAAA,CAAC,SAAS,EAAI,EAAA;AACjB,MAAA,MAAM,IAAI,KAAA,CAAM,CAAe,YAAA,EAAA,QAAA,CAAS,MAAQ,CAAA,CAAA,CAAA,CAAA;AAAA,KACjD;AAEA,IAAM,MAAA,IAAA,GAAO,MAAM,QAAA,CAAS,IAAK,EAAA,CAAA;AAEjC,IAAA,IAAI,KAAK,KAAO,EAAA;AACf,MAAA,MAAM,IAAI,KAAA,CAAM,CAAc,WAAA,EAAA,IAAA,CAAK,MAAM,OAAS,CAAA,CAAA,CAAA,CAAA;AAAA,KACnD;AAAA,GACD;AAAA;AAAA,EAGQ,UAAqB,GAAA;AAC5B,IAAA,OAAO,CAAO,IAAA,EAAA,IAAA,CAAK,GAAI,EAAA,CAAA,CAAA,EAAK,IAAK,CAAA,MAAA,EAAS,CAAA,QAAA,CAAS,EAAE,CAAA,CAAE,KAAM,CAAA,CAAA,EAAG,EAAE,CAAA,CAAA,CAAA,CAAA;AAAA,GACnE;AAAA;AAAA,EAGA,OAAO,uBAAwB,CAAA,YAAA,EAAsB,WAAuB,OAAkB,EAAA,OAAA,EAAiB,WAAoB,MAAkE,EAAA;AAEpM,IAAM,MAAA,aAAA,GAAgB,IAAK,CAAA,SAAA,CAAU,SAAS,CAAA,CAAA;AAE9C,IAAA,MAAM,aAAa,IAAK,CAAA,QAAA,CAAS,kBAAmB,CAAA,aAAa,CAAC,CAAC,CAAA,CAAA;AAEnE,IAAA,MAAM,OAA0B,GAAA;AAAA,MAC/B,OAAS,EAAA,KAAA;AAAA,MACT,EAAA,EAAI,KAAK,UAAW,EAAA;AAAA,MACpB,MAAQ,EAAA,gBAAA;AAAA,MACR,MAAQ,EAAA;AAAA,QACP,OAAA;AAAA,QACA,SAAA;AAAA,OACD;AAAA,KACD,CAAA;AAEA,IAAM,MAAA,QAAA,GAAW,MAAM,KAAA,CAAM,YAAc,EAAA;AAAA,MAC1C,MAAQ,EAAA,MAAA;AAAA,MACR,OAAS,EAAA;AAAA,QACR,cAAgB,EAAA,kBAAA;AAAA,QAChB,MAAQ,EAAA,mBAAA;AAAA,QACR,cAAgB,EAAA,UAAA;AAAA;AAAA;AAAA,QAGhB,GAAG,OAAA;AAAA,OACJ;AAAA,MACA,IAAA,EAAM,IAAK,CAAA,SAAA,CAAU,OAAO,CAAA;AAAA,MAC5B,MAAA;AAAA,KACA,CAAA,CAAA;AAED,IAAI,IAAA,CAAC,SAAS,EAAI,EAAA;AACjB,MAAA,MAAM,IAAI,KAAA,CAAM,CAAe,YAAA,EAAA,QAAA,CAAS,MAAQ,CAAA,CAAA,CAAA,CAAA;AAAA,KACjD;AAEA,IAAI,IAAA,CAAC,SAAS,IAAM,EAAA;AACnB,MAAM,MAAA,IAAI,MAAM,kBAAkB,CAAA,CAAA;AAAA,KACnC;AAEA,IAAM,MAAA,MAAA,GAAS,QAAS,CAAA,IAAA,CAAK,SAAU,EAAA,CAAA;AACvC,IAAM,MAAA,OAAA,GAAU,IAAI,WAAY,EAAA,CAAA;AAChC,IAAA,IAAI,MAAS,GAAA,EAAA,CAAA;AAEb,IAAI,IAAA;AACH,MAAA,OAAO,IAAM,EAAA;AAEZ,QAAA,IAAI,iCAAQ,OAAS,EAAA;AACpB,UAAA,OAAA;AAAA,SACD;AAEA,QAAA,MAAM,EAAE,IAAM,EAAA,KAAA,EAAU,GAAA,MAAM,OAAO,IAAK,EAAA,CAAA;AAC1C,QAAI,IAAA,IAAA;AAAM,UAAA,MAAA;AAEV,QAAA,MAAA,IAAU,QAAQ,MAAO,CAAA,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAM,CAAA,CAAA;AAChD,QAAM,MAAA,KAAA,GAAQ,MAAO,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAC/B,QAAS,MAAA,GAAA,KAAA,CAAM,KAAS,IAAA,EAAA,CAAA;AAExB,QAAA,KAAA,MAAW,QAAQ,KAAO,EAAA;AACzB,UAAM,MAAA,OAAA,GAAU,KAAK,IAAK,EAAA,CAAA;AAC1B,UAAI,IAAA,OAAA,CAAQ,UAAW,CAAA,QAAQ,CAAG,EAAA;AACjC,YAAM,MAAA,IAAA,GAAO,OAAQ,CAAA,KAAA,CAAM,CAAC,CAAA,CAAA;AAC5B,YAAA,IAAI,IAAS,KAAA,QAAA;AAAU,cAAA,OAAA;AAEvB,YAAI,IAAA;AACH,cAAM,MAAA,KAAA,GAAqB,IAAK,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAC1C,cAAM,MAAA,KAAA,CAAA;AAAA,qBACE,CAAP,EAAA;AACD,cAAQ,OAAA,CAAA,IAAA,CAAK,6BAA6B,IAAI,CAAA,CAAA;AAAA,aAC/C;AAAA,WACD;AAAA,SACD;AAAA,OACD;AAAA,KACC,SAAA;AACD,MAAA,MAAA,CAAO,WAAY,EAAA,CAAA;AAAA,KACpB;AAAA,GACD;AACD,CAAA;AAGa,MAAA,UAAA,GAAa,IAAI,UAAW;;;;"}
1
+ {"version":3,"file":"a2aService.mjs","sources":["../../../../../../packages/components/touchchat/utils/a2aService.ts"],"sourcesContent":["import type { AgentConfig, Message, JSONRPCRequest, StreamChunk, Task, AgentCard, SubAgent } from '../src/types/a2a'\n// @/types/a2a\n\n// A2A Service - Handles communication with A2A agents\nexport class A2AService {\n\tprivate agents: Map<string, AgentConfig> = new Map()\n\n\t// Register an agent\n\tregisterAgent(config: AgentConfig): void {\n\t\tthis.agents.set(config.id, config)\n\t}\n\n\t// Unregister an agent\n\tunregisterAgent(agentId: string): void {\n\t\tthis.agents.delete(agentId)\n\t}\n\n\t// Get registered agent\n\tgetAgent(agentId: string): AgentConfig | undefined {\n\t\treturn this.agents.get(agentId)\n\t}\n\n\t// Get all registered agents\n\tgetAllAgents(): AgentConfig[] {\n\t\treturn Array.from(this.agents.values())\n\t}\n\n\t// Fetch agent card (agent discovery)\n\tasync fetchAgentCard(url: string): Promise<AgentCard> {\n\t\tconst response = await fetch(url, {\n\t\t\tmethod: 'GET',\n\t\t\theaders: {\n\t\t\t\tAccept: 'application/json'\n\t\t\t}\n\t\t})\n\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`Failed to fetch agent card: ${response.statusText}`)\n\t\t}\n\n\t\treturn response.json()\n\t}\n\n\t// Send message to agent (non-streaming)\n\tasync sendMessage(agentId: string, message: Message, sessionId?: string): Promise<Task> {\n\t\tconst agent = this.agents.get(agentId)\n\t\tif (!agent) {\n\t\t\tthrow new Error(`Agent ${agentId} not found`)\n\t\t}\n\n\t\tconst request: JSONRPCRequest = {\n\t\t\tjsonrpc: '2.0',\n\t\t\tid: this.generateId(),\n\t\t\tmethod: 'message/send',\n\t\t\tparams: {\n\t\t\t\tmessage,\n\t\t\t\tsessionId\n\t\t\t}\n\t\t}\n\n\t\tconst response = await fetch(agent.endpoint, {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t...(agent.authToken && { Authorization: `Bearer ${agent.authToken}` })\n\t\t\t},\n\t\t\tbody: JSON.stringify(request)\n\t\t})\n\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`HTTP error: ${response.status}`)\n\t\t}\n\n\t\tconst data = await response.json()\n\n\t\tif (data.error) {\n\t\t\tthrow new Error(`A2A error: ${data.error.message}`)\n\t\t}\n\n\t\treturn data.result as Task\n\t}\n\n\t// Stream message to agent (for streaming responses)\n\tasync streamMessage(agentId: string, message: Message, sessionId?: string, signal?: AbortSignal): Promise<ReadableStream<StreamChunk>> {\n\t\tconst agent = this.agents.get(agentId)\n\t\tif (!agent) {\n\t\t\tthrow new Error(`Agent ${agentId} not found`)\n\t\t}\n\n\t\tconst request: JSONRPCRequest = {\n\t\t\tjsonrpc: '2.0',\n\t\t\tid: this.generateId(),\n\t\t\tmethod: 'message/stream',\n\t\t\tparams: {\n\t\t\t\tmessage,\n\t\t\t\tsessionId\n\t\t\t}\n\t\t}\n\n\t\tconst response = await fetch(agent.endpoint, {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\tAccept: 'text/event-stream',\n\t\t\t\t...(agent.authToken && { Authorization: `Bearer ${agent.authToken}` })\n\t\t\t},\n\t\t\tbody: JSON.stringify(request),\n\t\t\tsignal\n\t\t})\n\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`HTTP error: ${response.status}`)\n\t\t}\n\n\t\tif (!response.body) {\n\t\t\tthrow new Error('No response body')\n\t\t}\n\n\t\treturn new ReadableStream<StreamChunk>({\n\t\t\tasync start(controller) {\n\t\t\t\tconst reader = response.body!.getReader()\n\t\t\t\tconst decoder = new TextDecoder()\n\t\t\t\tlet buffer = ''\n\n\t\t\t\t// Handle abort signal\n\t\t\t\tif (signal) {\n\t\t\t\t\tsignal.addEventListener('abort', () => {\n\t\t\t\t\t\tcontroller.close()\n\t\t\t\t\t\treader.cancel()\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tlet isDone = false\n\t\t\t\t\twhile (!isDone) {\n\t\t\t\t\t\t// Check if the signal has been aborted\n\t\t\t\t\t\tif (signal?.aborted) {\n\t\t\t\t\t\t\tcontroller.close()\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst { done, value } = await reader.read()\n\t\t\t\t\t\tif (done) {\n\t\t\t\t\t\t\tisDone = true\n\t\t\t\t\t\t\tcontroller.close()\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbuffer += decoder.decode(value, { stream: true })\n\t\t\t\t\t\tconst lines = buffer.split('\\n')\n\t\t\t\t\t\tbuffer = lines.pop() || ''\n\n\t\t\t\t\t\tconst fn = async (data: string) => {\n\t\t\t\t\t\t\tif (data === '[DONE]') {\n\t\t\t\t\t\t\t\tcontroller.close()\n\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst chunk: StreamChunk = JSON.parse(data)\n\t\t\t\t\t\t\t\t// Add a small delay to simulate streaming effect\n\t\t\t\t\t\t\t\tawait new Promise(resolve => setTimeout(resolve, 50))\n\t\t\t\t\t\t\t\tcontroller.enqueue(chunk)\n\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\tconsole.warn('Failed to parse SSE data:', data)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor (const line of lines) {\n\t\t\t\t\t\t\tconst trimmed = line.trim()\n\t\t\t\t\t\t\tif (trimmed.startsWith('data:')) {\n\t\t\t\t\t\t\t\tconst data = trimmed.slice(5)\n\t\t\t\t\t\t\t\tawait fn(data)\n\t\t\t\t\t\t\t} else if (trimmed.startsWith('data: ')) {\n\t\t\t\t\t\t\t\tconst data = trimmed.slice(6)\n\t\t\t\t\t\t\t\tawait fn(data)\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} finally {\n\t\t\t\t\treader.releaseLock()\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n\n\t// Multi-agent message routing\n\tasync routeMessage(agentIds: string[], message: Message, mode: 'sequential' | 'parallel' = 'sequential'): Promise<Map<string, Task>> {\n\t\tconst results = new Map<string, Task>()\n\n\t\tif (mode === 'parallel') {\n\t\t\tconst promises = agentIds.map(async agentId => {\n\t\t\t\ttry {\n\t\t\t\t\tconst task = await this.sendMessage(agentId, message)\n\t\t\t\t\treturn { agentId, task, error: null }\n\t\t\t\t} catch (error) {\n\t\t\t\t\treturn { agentId, task: null, error }\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tconst settled = await Promise.all(promises)\n\t\t\tfor (const { agentId, task, error } of settled) {\n\t\t\t\tif (task) {\n\t\t\t\t\tresults.set(agentId, task)\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error(`Error sending to agent ${agentId}:`, error)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// Sequential\n\t\t\tfor (const agentId of agentIds) {\n\t\t\t\ttry {\n\t\t\t\t\tconst task = await this.sendMessage(agentId, message)\n\t\t\t\t\tresults.set(agentId, task)\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error(`Error sending to agent ${agentId}:`, error)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn results\n\t}\n\n\t// Get task status\n\tasync getTask(agentId: string, taskId: string): Promise<Task> {\n\t\tconst agent = this.agents.get(agentId)\n\t\tif (!agent) {\n\t\t\tthrow new Error(`Agent ${agentId} not found`)\n\t\t}\n\n\t\tconst request: JSONRPCRequest = {\n\t\t\tjsonrpc: '2.0',\n\t\t\tid: this.generateId(),\n\t\t\tmethod: 'task/get',\n\t\t\tparams: { taskId }\n\t\t}\n\n\t\tconst response = await fetch(agent.endpoint, {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t...(agent.authToken && { Authorization: `Bearer ${agent.authToken}` })\n\t\t\t},\n\t\t\tbody: JSON.stringify(request)\n\t\t})\n\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`HTTP error: ${response.status}`)\n\t\t}\n\n\t\tconst data = await response.json()\n\n\t\tif (data.error) {\n\t\t\tthrow new Error(`A2A error: ${data.error.message}`)\n\t\t}\n\n\t\treturn data.result as Task\n\t}\n\n\t// Cancel task\n\tasync cancelTask(agentId: string, taskId: string): Promise<void> {\n\t\tconst agent = this.agents.get(agentId)\n\t\tif (!agent) {\n\t\t\tthrow new Error(`Agent ${agentId} not found`)\n\t\t}\n\n\t\tconst request: JSONRPCRequest = {\n\t\t\tjsonrpc: '2.0',\n\t\t\tid: this.generateId(),\n\t\t\tmethod: 'task/cancel',\n\t\t\tparams: { taskId }\n\t\t}\n\n\t\tconst response = await fetch(agent.endpoint, {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t...(agent.authToken && { Authorization: `Bearer ${agent.authToken}` })\n\t\t\t},\n\t\t\tbody: JSON.stringify(request)\n\t\t})\n\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`HTTP error: ${response.status}`)\n\t\t}\n\n\t\tconst data = await response.json()\n\n\t\tif (data.error) {\n\t\t\tthrow new Error(`A2A error: ${data.error.message}`)\n\t\t}\n\t}\n\n\t// Generate unique ID\n\tprivate generateId(): string {\n\t\treturn `req-${Date.now()}-${Math.random().toString(36).slice(2, 11)}`\n\t}\n\n\t// Multi-agent streaming message\n\tasync *streamMultiAgentMessage(hostEndpoint: string, subAgents: SubAgent[], message: Message, headers: object, sessionId?: string, signal?: AbortSignal): AsyncGenerator<StreamChunk, void, unknown> {\n\t\t// Build X-Sub-Agents headers: JSON array -> Base64\n\t\tconst subAgentsJson = JSON.stringify(subAgents)\n\t\t// Use Unicode-safe Base64 encoding\n\t\tconst xSubAgents = btoa(unescape(encodeURIComponent(subAgentsJson)))\n\n\t\tconst request: JSONRPCRequest = {\n\t\t\tjsonrpc: '2.0',\n\t\t\tid: this.generateId(),\n\t\t\tmethod: 'message/stream',\n\t\t\tparams: {\n\t\t\t\tmessage,\n\t\t\t\tsessionId\n\t\t\t}\n\t\t}\n\n\t\tconst response = await fetch(hostEndpoint, {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\tAccept: 'text/event-stream',\n\t\t\t\t'X-Sub-Agents': xSubAgents,\n\t\t\t\t// 'ai-jwt-token': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhc2lhaW5mby5jb20iLCJzdWIiOiJkZW5nd2FuIiwiYXVkIjoiY29tLmFpZi5wYWFzLndlYlRva2VuIiwidXNlckluZm8iOiJ7XCJhbGlhc1wiOlwiZGVuZ3dhblwiLFwiYXV0b2luXCI6ZmFsc2UsXCJlbnZDb2RlXCI6XCJQUk9EXCIsXCJlbnZOYW1lXCI6XCLnlJ_kuqfnjq_looNcIixcImxhbmd1YWdlXCI6XCJ6aFwiLFwicGVybWlzc2lvbnNcIjpbXCJcIixcInBvcnRhbDpzeXN0ZW06cm9sZTpiaW5kXCIsXCJwb3J0YWw6ZGljdGlvbmFyeTpkYXRhOmFkZFwiLG51bGwsXCJhZ2VudFwiLFwicG9ydGFsOnN5c3RlbTp1c2VyOmRlbGV0ZVwiLFwicG9ydGFsOmRpY3Rpb25hcnk6ZGF0YTp1cGRhdGVcIixcImF1ZGl0TG9nL2xpc3RBdWRpdExvZ1wiLFwicG9ydGFsOmRpY3Rpb25hcnk6ZGF0YTpkZWxldGVcIixcInBvcnRhbDpzeXN0ZW06dXNlcjp1cGRhdGVcIixcInBvcnRhbDptY3A6YXVkaXRcIixcInBvcnRhbDptY3A6c2FmZWF1ZGl0XCIsXCJwb3J0YWw6bWNwOnRvb2xjb25maXJtXCIsXCJwb3J0YWw6c3lzdGVtOnRlbmFudDphZGRcIixcInBvcnRhbDpzeXN0ZW06dGVuYW50OnJlbGF0aW9uXCIsXCJwb3J0YWw6c3lzdGVtOm9wZXJhdGlvbjpwZXJtaXNzaW9uXCIsXCJwb3J0YWw6c3lzdGVtUGFyYW1ldGVyOmRlbGV0ZVwiLFwicG9ydGFsOmRpY3Rpb25hcnk6dXBkYXRlXCIsXCJwb3J0YWw6c3lzdGVtOnJvbGU6YWRkXCIsXCJ0ZW5hbnQvZ2V0VGVuYW50RHRvTGlzdFwiLFwicG9ydGFsOnN5c3RlbTpyb2xlOnVwZGF0ZVwiLFwicG9ydGFsOmFnZW50OmF1ZGl0XCIsXCJwb3J0YWw6bm90aWNlOnVwZGF0ZVwiLFwicG9ydGFsOnN5c3RlbTpyb2xlOmRlbGV0ZVwiLFwicG9ydGFsOnN5c3RlbTp1c2VyOmFkZFwiLFwibWVudS9nZXRNZW51QnlQYXJhbVwiLFwicG9ydGFsOmRpY3Rpb25hcnk6ZGVsZXRlXCIsXCJwb3J0YWw6c3lzdGVtOm9wZXJhdGlvbjpkZWxldGVcIixcInVzZXIvcXVlcnlVc2VyRHRvTGlzdFwiLFwicG9ydGFsOnN5c3RlbTptZW51OmFkZFwiLFwicG9ydGFsOnN5c3RlbVBhcmFtZXRlcjp1cGRhdGVcIixcInBvcnRhbDphZ2VudDptb2RlbGNoZWNrXCIsXCJwb3J0YWw6c3lzdGVtOm1lbnU6dXBkYXRlXCIsXCJyb2xlL3F1ZXJ5Um9sZUxpc3RcIixcInBvcnRhbDpzeXN0ZW06bWVudTpkZWxldGVcIixcInBvcnRhbDpub3RpY2U6YWRkXCIsXCJwb3J0YWw6c3lzdGVtOnRlbmFudDpkZWxldGVcIixcInBvcnRhbDpzeXN0ZW1QYXJhbWV0ZXI6YWRkXCIsXCJyb2xlUGVybWlzc2lvbnMvcXVlcnlNZW51UGVybWlzc2lvbkxpc3RcIixcInBvcnRhbDpzeXN0ZW06dGVuYW50OnVwZGF0ZVwiLFwibm90aWNlL2xpc3ROb3RpY2VcIl0sXCJwbGF0Zm9ybU1hbmFnZXJcIjp0cnVlLFwicm9sZUxpc3RcIjpbe1wiY3JlYXRlVGltZVwiOlwiMjAyNi0wMy0wMSAwMDowMDowMFwiLFwiaGFzRWRpdFwiOjEsXCJyb2xlQ29kZVwiOlwiY2FwX3Byb3ZpZGVyXCIsXCJyb2xlSWRcIjoxMixcInJvbGVOYW1lXCI6XCLog73lipvmj5DkvpvogIVcIixcInJvbGVUeXBlXCI6MX0se1wiY3JlYXRlVGltZVwiOlwiMjAyNi0wMy0wMSAwMDowMDowMFwiLFwiaGFzRWRpdFwiOjEsXCJyb2xlQ29kZVwiOlwidGVuYW50X2FkbWluXCIsXCJyb2xlSWRcIjo4LFwicm9sZU5hbWVcIjpcIuenn-aIt-euoeeQhuWRmFwiLFwicm9sZVR5cGVcIjoxfSx7XCJjcmVhdGVUaW1lXCI6XCIyMDIyLTA2LTI4IDAwOjAwOjAwXCIsXCJoYXNFZGl0XCI6MSxcInJvbGVDb2RlXCI6XCJyb2xlX2FkbWluXCIsXCJyb2xlSWRcIjoxLFwicm9sZU5hbWVcIjpcIui2hee6p-euoeeQhuWRmFwiLFwicm9sZVR5cGVcIjoxfV0sXCJ0ZW5hbnRDb2RlXCI6XCJ0ZW5hbnQtb25lXCIsXCJ0ZW5hbnRJZFwiOjUsXCJ0ZW5hbnROYW1lXCI6XCLkuIDnuqfov5DokKXnqbrpl7RcIixcInVzZXJJZFwiOjYsXCJ1c2VyTmFtZVwiOlwiZGVuZ3dhblwifSIsImV4cCI6MTc3Mzk5ODEzN30.7P8WVl3ji1G2unk0wOISJbF43ilcuzksOdSOQJNHGXM'\n\t\t\t\t// 'ai-jwt-token': authToken\n\t\t\t\t...headers\n\t\t\t},\n\t\t\tbody: JSON.stringify(request),\n\t\t\tsignal\n\t\t})\n\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`HTTP error: ${response.status}`)\n\t\t}\n\n\t\tif (!response.body) {\n\t\t\tthrow new Error('No response body')\n\t\t}\n\n\t\tconst reader = response.body.getReader()\n\t\tconst decoder = new TextDecoder()\n\t\tlet buffer = ''\n\n\t\ttry {\n\t\t\twhile (true) {\n\t\t\t\t// Check if the signal has been aborted\n\t\t\t\tif (signal?.aborted) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tconst { done, value } = await reader.read()\n\t\t\t\tif (done) break\n\n\t\t\t\tbuffer += decoder.decode(value, { stream: true })\n\t\t\t\tconst lines = buffer.split('\\n')\n\t\t\t\tbuffer = lines.pop() || ''\n\n\t\t\t\tfor (const line of lines) {\n\t\t\t\t\tconst trimmed = line.trim()\n\t\t\t\t\tif (trimmed.startsWith('data: ')) {\n\t\t\t\t\t\tconst data = trimmed.slice(6)\n\t\t\t\t\t\tif (data === '[DONE]') return\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst chunk: StreamChunk = JSON.parse(data)\n\t\t\t\t\t\t\tyield chunk\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tconsole.warn('Failed to parse SSE data:', data)\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} finally {\n\t\t\treader.releaseLock()\n\t\t}\n\t}\n}\n\n// Singleton instance\nexport const a2aService = new A2AService()\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"fetchStream.mjs","sources":["../../../../../../packages/components/touchchat/utils/fetchStream.ts"],"sourcesContent":["// 定义 FetchStream 所需的选项接口\r\ninterface FetchStreamOptions {\r\n\turl: string\r\n\trequestInit?: RequestInit\r\n\tonmessage?: (line: string, index: number) => void\r\n\tondone?: (allDataText: string) => void\r\n\tonerror?: (response: Response | Error) => void\r\n\tonabort?: () => void\r\n\tontimeout?: () => void\r\n}\r\n\r\nconst decoder = new TextDecoder('utf-8')\r\nlet partial = '' // 未完成的字节\r\n\r\n// 改进的handleChunk函数,更安全地处理UTF-8字符\r\nconst handleChunk = (chunk: Uint8Array): string => {\r\n\t// 将新数据块拼接到剩余字节\r\n\tconst data = partial + decoder.decode(chunk, { stream: true })\r\n\r\n\t// 查找最后一个完整行结束位置\r\n\tconst lastNewline = data.lastIndexOf('\\n')\r\n\r\n\tif (lastNewline >= 0) {\r\n\t\tpartial = data.slice(lastNewline + 1) // 保留不完整部分\r\n\t\treturn data.slice(0, lastNewline + 1) // 返回完整行\r\n\t}\r\n\r\n\t// 如果没有找到换行符,保留全部数据\r\n\tpartial = data\r\n\treturn ''\r\n}\r\n\r\n// FetchStream 类,用于处理流式请求\r\nexport class FetchStream {\r\n\turl: string\r\n\trequestInit: RequestInit\r\n\tonmessage?: (line: string, index: number) => void\r\n\tondone?: (allDataText: string) => void\r\n\tonerror?: (response: Response | Error) => void\r\n\tonabort?: () => void\r\n\tontimeout?: () => void\r\n\tcontroller: AbortController | null\r\n\ttimer: ReturnType<typeof setTimeout> | null\r\n\r\n\tconstructor(options: FetchStreamOptions) {\r\n\t\tif (!options.url) {\r\n\t\t\tthrow new Error('url argument must be provided')\r\n\t\t}\r\n\t\tthis.url = options.url\r\n\t\tthis.requestInit = options.requestInit || {}\r\n\t\tthis.onmessage = options.onmessage\r\n\t\tthis.ondone = options.ondone\r\n\t\tthis.onerror = options.onerror\r\n\t\tthis.onabort = options.onabort\r\n\t\tthis.ontimeout = options.ontimeout\r\n\r\n\t\tthis.controller = new AbortController()\r\n\t\tthis.timer = null\r\n\r\n\t\tthis.createFetchRequest()\r\n\t}\r\n\r\n\t// 创建 fetch 请求\r\n\tasync createFetchRequest(): Promise<void> {\r\n\t\tthis.timeout()\r\n\r\n\t\ttry {\r\n\t\t\tconst response = await fetch(this.url, {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\tsignal: this.controller?.signal,\r\n\t\t\t\t...this.requestInit\r\n\t\t\t})\r\n\r\n\t\t\tif (this.timer) {\r\n\t\t\t\tclearTimeout(this.timer)\r\n\t\t\t}\r\n\r\n\t\t\tif (response.status === 200) {\r\n\t\t\t\tif (!response.body) {\r\n\t\t\t\t\tthrow new Error('Response body is null')\r\n\t\t\t\t}\r\n\t\t\t\tconst reader = response.body.getReader()\r\n\t\t\t\tlet allDataText = ''\r\n\t\t\t\tlet buffer = ''\r\n\t\t\t\tlet index = 0\r\n\r\n\t\t\t\tlet shouldContinue = true\r\n\t\t\t\twhile (shouldContinue) {\r\n\t\t\t\t\tconst { value, done } = await reader.read()\r\n\t\t\t\t\tif (done) {\r\n\t\t\t\t\t\tshouldContinue = false\r\n\t\t\t\t\t\tbreak\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (value) {\r\n\t\t\t\t\t\tconst dataText = handleChunk(value)\r\n\r\n\t\t\t\t\t\tif (dataText) {\r\n\t\t\t\t\t\t\tallDataText += dataText\r\n\t\t\t\t\t\t\tbuffer += dataText\r\n\r\n\t\t\t\t\t\t\t// 处理完整行\r\n\t\t\t\t\t\t\tlet lineEndIndex\r\n\t\t\t\t\t\t\twhile ((lineEndIndex = buffer.indexOf('\\n')) >= 0) {\r\n\t\t\t\t\t\t\t\tconst line = buffer.slice(0, lineEndIndex)\r\n\t\t\t\t\t\t\t\tbuffer = buffer.slice(lineEndIndex + 1)\r\n\t\t\t\t\t\t\t\tthis.onmessage?.(line, index++)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// 处理剩余数据\r\n\t\t\t\tif (buffer.length > 0) {\r\n\t\t\t\t\tthis.onmessage?.(buffer, index++)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.ondone?.(allDataText)\r\n\t\t\t} else {\r\n\t\t\t\t// 读取响应体中的错误信息\r\n\t\t\t\tconst errorBody = await response.text()\r\n\t\t\t\tthrow new Error(errorBody || `请求失败: ${response.status} ${response.statusText}`)\r\n\t\t\t}\r\n\t\t} catch (response) {\r\n\t\t\t// 如果是用户主动中止的错误,不调用onerror\r\n\t\t\tconst isAbortError = response instanceof Error && response.name === 'AbortError'\r\n\r\n\t\t\t// 如果不是用户主动中止的错误,则调用 onerror\r\n\t\t\tif (!isAbortError) {\r\n\t\t\t\tthis.onerror?.(response instanceof Response ? response : new Error(String(response)))\r\n\t\t\t} else if (this.onabort) {\r\n\t\t\t\t// 如果是中止错误且定义了 onabort 回调,则调用它\r\n\t\t\t\tthis.onabort()\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// 中断 fetch 请求\r\n\tabort(): void {\r\n\t\ttry {\r\n\t\t\tthis.controller?.abort()\r\n\t\t\tthis.onabort?.()\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error('Abort error:', error)\r\n\t\t}\r\n\t}\r\n\r\n\t// 超时中断\r\n\ttimeout(time: number = 60000): void {\r\n\t\tthis.timer = setTimeout(() => {\r\n\t\t\tthis.abort()\r\n\t\t\tthis.ontimeout?.()\r\n\t\t}, time)\r\n\t}\r\n}\r\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetchStream.mjs","sources":["../../../../../../packages/components/touchchat/utils/fetchStream.ts"],"sourcesContent":["// 定义 FetchStream 所需的选项接口\ninterface FetchStreamOptions {\n\turl: string\n\trequestInit?: RequestInit\n\tonmessage?: (line: string, index: number) => void\n\tondone?: (allDataText: string) => void\n\tonerror?: (response: Response | Error) => void\n\tonabort?: () => void\n\tontimeout?: () => void\n}\n\nconst decoder = new TextDecoder('utf-8')\nlet partial = '' // 未完成的字节\n\n// 改进的handleChunk函数,更安全地处理UTF-8字符\nconst handleChunk = (chunk: Uint8Array): string => {\n\t// 将新数据块拼接到剩余字节\n\tconst data = partial + decoder.decode(chunk, { stream: true })\n\n\t// 查找最后一个完整行结束位置\n\tconst lastNewline = data.lastIndexOf('\\n')\n\n\tif (lastNewline >= 0) {\n\t\tpartial = data.slice(lastNewline + 1) // 保留不完整部分\n\t\treturn data.slice(0, lastNewline + 1) // 返回完整行\n\t}\n\n\t// 如果没有找到换行符,保留全部数据\n\tpartial = data\n\treturn ''\n}\n\n// FetchStream 类,用于处理流式请求\nexport class FetchStream {\n\turl: string\n\trequestInit: RequestInit\n\tonmessage?: (line: string, index: number) => void\n\tondone?: (allDataText: string) => void\n\tonerror?: (response: Response | Error) => void\n\tonabort?: () => void\n\tontimeout?: () => void\n\tcontroller: AbortController | null\n\ttimer: ReturnType<typeof setTimeout> | null\n\n\tconstructor(options: FetchStreamOptions) {\n\t\tif (!options.url) {\n\t\t\tthrow new Error('url argument must be provided')\n\t\t}\n\t\tthis.url = options.url\n\t\tthis.requestInit = options.requestInit || {}\n\t\tthis.onmessage = options.onmessage\n\t\tthis.ondone = options.ondone\n\t\tthis.onerror = options.onerror\n\t\tthis.onabort = options.onabort\n\t\tthis.ontimeout = options.ontimeout\n\n\t\tthis.controller = new AbortController()\n\t\tthis.timer = null\n\n\t\tthis.createFetchRequest()\n\t}\n\n\t// 创建 fetch 请求\n\tasync createFetchRequest(): Promise<void> {\n\t\tthis.timeout()\n\n\t\ttry {\n\t\t\tconst response = await fetch(this.url, {\n\t\t\t\tmethod: 'POST',\n\t\t\t\tsignal: this.controller?.signal,\n\t\t\t\t...this.requestInit\n\t\t\t})\n\n\t\t\tif (this.timer) {\n\t\t\t\tclearTimeout(this.timer)\n\t\t\t}\n\n\t\t\tif (response.status === 200) {\n\t\t\t\tif (!response.body) {\n\t\t\t\t\tthrow new Error('Response body is null')\n\t\t\t\t}\n\t\t\t\tconst reader = response.body.getReader()\n\t\t\t\tlet allDataText = ''\n\t\t\t\tlet buffer = ''\n\t\t\t\tlet index = 0\n\n\t\t\t\tlet shouldContinue = true\n\t\t\t\twhile (shouldContinue) {\n\t\t\t\t\tconst { value, done } = await reader.read()\n\t\t\t\t\tif (done) {\n\t\t\t\t\t\tshouldContinue = false\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tif (value) {\n\t\t\t\t\t\tconst dataText = handleChunk(value)\n\n\t\t\t\t\t\tif (dataText) {\n\t\t\t\t\t\t\tallDataText += dataText\n\t\t\t\t\t\t\tbuffer += dataText\n\n\t\t\t\t\t\t\t// 处理完整行\n\t\t\t\t\t\t\tlet lineEndIndex\n\t\t\t\t\t\t\twhile ((lineEndIndex = buffer.indexOf('\\n')) >= 0) {\n\t\t\t\t\t\t\t\tconst line = buffer.slice(0, lineEndIndex)\n\t\t\t\t\t\t\t\tbuffer = buffer.slice(lineEndIndex + 1)\n\t\t\t\t\t\t\t\tthis.onmessage?.(line, index++)\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\n\t\t\t\t// 处理剩余数据\n\t\t\t\tif (buffer.length > 0) {\n\t\t\t\t\tthis.onmessage?.(buffer, index++)\n\t\t\t\t}\n\n\t\t\t\tthis.ondone?.(allDataText)\n\t\t\t} else {\n\t\t\t\t// 读取响应体中的错误信息\n\t\t\t\tconst errorBody = await response.text()\n\t\t\t\tthrow new Error(errorBody || `请求失败: ${response.status} ${response.statusText}`)\n\t\t\t}\n\t\t} catch (response) {\n\t\t\t// 如果是用户主动中止的错误,不调用onerror\n\t\t\tconst isAbortError = response instanceof Error && response.name === 'AbortError'\n\n\t\t\t// 如果不是用户主动中止的错误,则调用 onerror\n\t\t\tif (!isAbortError) {\n\t\t\t\tthis.onerror?.(response instanceof Response ? response : new Error(String(response)))\n\t\t\t} else if (this.onabort) {\n\t\t\t\t// 如果是中止错误且定义了 onabort 回调,则调用它\n\t\t\t\tthis.onabort()\n\t\t\t}\n\t\t}\n\t}\n\n\t// 中断 fetch 请求\n\tabort(): void {\n\t\ttry {\n\t\t\tthis.controller?.abort()\n\t\t\tthis.onabort?.()\n\t\t} catch (error) {\n\t\t\tconsole.error('Abort error:', error)\n\t\t}\n\t}\n\n\t// 超时中断\n\ttimeout(time: number = 60000): void {\n\t\tthis.timer = setTimeout(() => {\n\t\t\tthis.abort()\n\t\t\tthis.ontimeout?.()\n\t\t}, time)\n\t}\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- .video-File[data-v-1f6d2348]{height:auto;width:5em}.video-play[data-v-1f6d2348]{width:100%}.typewriter-container[data-v-6fd1b883]{position:relative}.loading-container[data-v-6fd1b883]{min-height:40px}.typewriter-loading[data-v-6fd1b883]{align-items:center;color:#666;display:flex;font-size:14px;gap:8px;line-height:1;margin-top:12px;padding:8px 0}.loading-dot[data-v-6fd1b883]{animation:bounce-6fd1b883 1.4s ease-in-out infinite both;background-color:#666;border-radius:50%;display:inline-block;height:8px;width:8px}.loading-text[data-v-6fd1b883]{user-select:none}@keyframes bounce-6fd1b883{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}.markdown-content[data-v-6fd1b883]{color:#333}.markdown-content h1[data-v-6fd1b883],.markdown-content h2[data-v-6fd1b883]{margin:1em 0 .5em}.markdown-content p[data-v-6fd1b883]{margin:.5em 0}.markdown-content code[data-v-6fd1b883]{background:#f0f0f0;border-radius:4px;padding:.2em .4em}.hljs{background:#fafafa;color:#383a42;display:block;overflow-x:auto;padding:.5em}.hljs-comment,.hljs-quote{color:#a0a1a7;font-style:italic}.hljs-doctag,.hljs-formula,.hljs-keyword{color:#a626a4}.hljs-deletion,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-subst{color:#e45649}.hljs-literal{color:#0184bb}.hljs-addition,.hljs-attribute,.hljs-meta-string,.hljs-regexp,.hljs-string{color:#50a14f}.hljs-built_in,.hljs-class .hljs-title{color:#c18401}.hljs-attr,.hljs-number,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-pseudo,.hljs-template-variable,.hljs-type,.hljs-variable{color:#986801}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-symbol,.hljs-title{color:#4078f2}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline}
1
+ .hljs{background:#fafafa;color:#383a42;display:block;overflow-x:auto;padding:.5em}.hljs-comment,.hljs-quote{color:#a0a1a7;font-style:italic}.hljs-doctag,.hljs-formula,.hljs-keyword{color:#a626a4}.hljs-deletion,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-subst{color:#e45649}.hljs-literal{color:#0184bb}.hljs-addition,.hljs-attribute,.hljs-meta-string,.hljs-regexp,.hljs-string{color:#50a14f}.hljs-built_in,.hljs-class .hljs-title{color:#c18401}.hljs-attr,.hljs-number,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-pseudo,.hljs-template-variable,.hljs-type,.hljs-variable{color:#986801}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-symbol,.hljs-title{color:#4078f2}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline}.video-File[data-v-7305b796]{height:auto;width:5em}.video-play[data-v-7305b796]{width:100%}.typewriter-container[data-v-5bee9536]{position:relative}.loading-container[data-v-5bee9536]{min-height:40px}.typewriter-loading[data-v-5bee9536]{align-items:center;color:#666;display:flex;font-size:14px;gap:8px;line-height:1;margin-top:12px;padding:8px 0}.loading-dot[data-v-5bee9536]{animation:bounce-5bee9536 1.4s ease-in-out infinite both;background-color:#666;border-radius:50%;display:inline-block;height:8px;width:8px}.loading-text[data-v-5bee9536]{user-select:none}@keyframes bounce-5bee9536{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}.markdown-content[data-v-5bee9536]{color:#333}.markdown-content h1[data-v-5bee9536],.markdown-content h2[data-v-5bee9536]{margin:1em 0 .5em}.markdown-content p[data-v-5bee9536]{margin:.5em 0}.markdown-content code[data-v-5bee9536]{background:#f0f0f0;border-radius:4px;padding:.2em .4em}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var name = "@touchvue/chat";
6
- var version = "1.0.0-beta.50";
6
+ var version = "1.0.0-beta.52";
7
7
  var description = "TouchVue Chat Component Library";
8
8
  var main = "lib/index.js";
9
9
  var module$1 = "es/index.mjs";
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.js","sources":["../../../../packages/components/resolver.ts"],"sourcesContent":["/**\r\n * TouchVue Chat 组件解析器\r\n * 用于支持 unplugin-auto-import 和 unplugin-vue-components 插件\r\n */\r\n\r\n// 组件库名称\r\nconst LIBRARY_NAME = '@touchvue/chat'\r\n// 组件前缀\r\nconst PREFIX = 'To'\r\n\r\n/**\r\n * 检查组件名称是否符合规则\r\n * @param name 组件名称\r\n * @returns 是否符合规则\r\n */\r\nconst isValidComponentName = (name: string): boolean => {\r\n\treturn name.startsWith(PREFIX)\r\n}\r\n\r\n/**\r\n * 获取组件名称(不带前缀)\r\n * @param name 组件名称\r\n * @returns 不带前缀的组件名称\r\n */\r\nconst getComponentName = (name: string): string => {\r\n\treturn name.slice(PREFIX.length)\r\n}\r\n\r\nconst getSideEffectsPath = (name: string, prefix: string = LIBRARY_NAME): string => {\r\n\treturn `${prefix}/theme/components/${getComponentName(name).toLowerCase()}/index.css`\r\n}\r\n\r\n/**\r\n * 组件解析器\r\n * 用于 unplugin-vue-components 插件\r\n */\r\nexport function TouchVueResolver() {\r\n\treturn {\r\n\t\ttype: 'component',\r\n\t\tresolve: (name: string) => {\r\n\t\t\tif (!isValidComponentName(name)) return\r\n\t\t\treturn {\r\n\t\t\t\tname,\r\n\t\t\t\tfrom: LIBRARY_NAME,\r\n\t\t\t\tsideEffects: getSideEffectsPath(name)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * 默认导出所有解析器\r\n */\r\nexport default {\r\n\tTouchVueResolver\r\n}\r\n"],"names":[],"mappings":";;;;AAMA,MAAM,YAAe,GAAA,gBAAA,CAAA;AAErB,MAAM,MAAS,GAAA,IAAA,CAAA;AAOf,MAAM,oBAAA,GAAuB,CAAC,IAA0B,KAAA;AACvD,EAAO,OAAA,IAAA,CAAK,WAAW,MAAM,CAAA,CAAA;AAC9B,CAAA,CAAA;AAOA,MAAM,gBAAA,GAAmB,CAAC,IAAyB,KAAA;AAClD,EAAO,OAAA,IAAA,CAAK,KAAM,CAAA,MAAA,CAAO,MAAM,CAAA,CAAA;AAChC,CAAA,CAAA;AAEA,MAAM,kBAAqB,GAAA,CAAC,IAAc,EAAA,MAAA,GAAiB,YAAyB,KAAA;AACnF,EAAA,OAAO,CAAG,EAAA,MAAA,CAAA,kBAAA,EAA2B,gBAAiB,CAAA,IAAI,EAAE,WAAY,EAAA,CAAA,UAAA,CAAA,CAAA;AACzE,CAAA,CAAA;AAMO,SAAS,gBAAmB,GAAA;AAClC,EAAO,OAAA;AAAA,IACN,IAAM,EAAA,WAAA;AAAA,IACN,OAAA,EAAS,CAAC,IAAiB,KAAA;AAC1B,MAAI,IAAA,CAAC,qBAAqB,IAAI,CAAA;AAAG,QAAA,OAAA;AACjC,MAAO,OAAA;AAAA,QACN,IAAA;AAAA,QACA,IAAM,EAAA,YAAA;AAAA,QACN,WAAA,EAAa,mBAAmB,IAAI,CAAA;AAAA,OACrC,CAAA;AAAA,KACD;AAAA,GACD,CAAA;AACD,CAAA;AAKA,eAAe;AAAA,EACd,gBAAA;AACD,CAAA;;;;;"}
1
+ {"version":3,"file":"resolver.js","sources":["../../../../packages/components/resolver.ts"],"sourcesContent":["/**\n * TouchVue Chat 组件解析器\n * 用于支持 unplugin-auto-import 和 unplugin-vue-components 插件\n */\n\n// 组件库名称\nconst LIBRARY_NAME = '@touchvue/chat'\n// 组件前缀\nconst PREFIX = 'To'\n\n/**\n * 检查组件名称是否符合规则\n * @param name 组件名称\n * @returns 是否符合规则\n */\nconst isValidComponentName = (name: string): boolean => {\n\treturn name.startsWith(PREFIX)\n}\n\n/**\n * 获取组件名称(不带前缀)\n * @param name 组件名称\n * @returns 不带前缀的组件名称\n */\nconst getComponentName = (name: string): string => {\n\treturn name.slice(PREFIX.length)\n}\n\nconst getSideEffectsPath = (name: string, prefix: string = LIBRARY_NAME): string => {\n\treturn `${prefix}/theme/components/${getComponentName(name).toLowerCase()}/index.css`\n}\n\n/**\n * 组件解析器\n * 用于 unplugin-vue-components 插件\n */\nexport function TouchVueResolver() {\n\treturn {\n\t\ttype: 'component',\n\t\tresolve: (name: string) => {\n\t\t\tif (!isValidComponentName(name)) return\n\t\t\treturn {\n\t\t\t\tname,\n\t\t\t\tfrom: LIBRARY_NAME,\n\t\t\t\tsideEffects: getSideEffectsPath(name)\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * 默认导出所有解析器\n */\nexport default {\n\tTouchVueResolver\n}\n"],"names":[],"mappings":";;;;AAMA,MAAM,YAAe,GAAA,gBAAA,CAAA;AAErB,MAAM,MAAS,GAAA,IAAA,CAAA;AAOf,MAAM,oBAAA,GAAuB,CAAC,IAA0B,KAAA;AACvD,EAAO,OAAA,IAAA,CAAK,WAAW,MAAM,CAAA,CAAA;AAC9B,CAAA,CAAA;AAOA,MAAM,gBAAA,GAAmB,CAAC,IAAyB,KAAA;AAClD,EAAO,OAAA,IAAA,CAAK,KAAM,CAAA,MAAA,CAAO,MAAM,CAAA,CAAA;AAChC,CAAA,CAAA;AAEA,MAAM,kBAAqB,GAAA,CAAC,IAAc,EAAA,MAAA,GAAiB,YAAyB,KAAA;AACnF,EAAA,OAAO,CAAG,EAAA,MAAA,CAAA,kBAAA,EAA2B,gBAAiB,CAAA,IAAI,EAAE,WAAY,EAAA,CAAA,UAAA,CAAA,CAAA;AACzE,CAAA,CAAA;AAMO,SAAS,gBAAmB,GAAA;AAClC,EAAO,OAAA;AAAA,IACN,IAAM,EAAA,WAAA;AAAA,IACN,OAAA,EAAS,CAAC,IAAiB,KAAA;AAC1B,MAAI,IAAA,CAAC,qBAAqB,IAAI,CAAA;AAAG,QAAA,OAAA;AACjC,MAAO,OAAA;AAAA,QACN,IAAA;AAAA,QACA,IAAM,EAAA,YAAA;AAAA,QACN,WAAA,EAAa,mBAAmB,IAAI,CAAA;AAAA,OACrC,CAAA;AAAA,KACD;AAAA,GACD,CAAA;AACD,CAAA;AAKA,eAAe;AAAA,EACd,gBAAA;AACD,CAAA;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"HelloChat.vue2.js","sources":["../../../../../../../packages/components/touchchat/component/AiRobot/HelloChat.vue"],"sourcesContent":["<script lang=\"ts\">\nconst itemsPerPage = 5\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({ name: 'HelloChat' });</script>\n<template>\r\n\t<div class=\"hello-chat\">\r\n\t\t<img src=\"../../img/aiAvatar.png\" alt=\"\" />\r\n\t\t<p class=\"title\">您好,我能帮您处理什么</p>\r\n\t\t<p class=\"sub-info\">作为您的智能伙伴,我既能帮您查账单、办业务,又能陪您聊天、学知识。</p>\r\n\t</div>\r\n\t<div class=\"function-buttons\">\r\n\t\t<ul>\r\n\t\t\t<li v-for=\"item in helloChatList\" :key=\"item.id\" @click=\"handleItemClick(item, '0')\">\r\n\t\t\t\t<img src=\"../../img/icon.png\" alt=\"{{ item.name }}\" class=\"icon\" />\r\n\t\t\t\t<span class=\"ellipsis-text\">{{ item.name }}</span>\r\n\t\t\t</li>\r\n\t\t</ul>\r\n\t</div>\r\n\t<div class=\"option-conter\">\r\n\t\t<div v-if=\"optionList.length > 0\" class=\"option-item item-1\">\r\n\t\t\t<div class=\"item-top\">\r\n\t\t\t\t<div class=\"item-1-left\">\r\n\t\t\t\t\t<p>猜你想所问</p>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"item-1-right\" @click=\"handleChange\">\r\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"13\" viewBox=\"0 0 12 13\" fill=\"none\">\r\n\t\t\t\t\t\t<path d=\"M10.5 2.40796V6.40796\" stroke=\"#0077FA\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n\t\t\t\t\t\t<path d=\"M1.5 6.40747V10.4075\" stroke=\"#0077FA\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n\t\t\t\t\t\t<path d=\"M10.5 6.40747C10.5 3.9222 8.48528 1.90747 6 1.90747C4.72863 1.90747 3.5804 2.43471 2.76203 3.28247M1.5 6.40747C1.5 8.89275 3.51472 10.9075 6 10.9075C7.2139 10.9075 8.31555 10.4268 9.125 9.64545\" stroke=\"#0077FA\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n\t\t\t\t\t</svg>\r\n\t\t\t\t\t<span>换一换</span>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"item-bottom\">\r\n\t\t\t\t<ul>\r\n\t\t\t\t\t<li v-for=\"item in optionList\" :key=\"item.id\" @click=\"handleItemClick(item, '1')\">\r\n\t\t\t\t\t\t<span>{{ item.name }}</span>\r\n\t\t\t\t\t</li>\r\n\t\t\t\t</ul>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div v-if=\"optionTeam.length\" class=\"option-item item-2\">\r\n\t\t\t<ul>\r\n\t\t\t\t<li v-for=\"item in optionTeam\" :key=\"item.id\" @click=\"handleItemClick(item, '2')\">\r\n\t\t\t\t\t<p class=\"title\">{{ item.name }}</p>\r\n\t\t\t\t\t<p class=\"team\">\r\n\t\t\t\t\t\t<span class=\"content\">{{ item.subTitle }}</span>\r\n\t\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n\t\t\t\t\t\t\t<g clip-path=\"url(#clip0_2450_2140)\">\r\n\t\t\t\t\t\t\t\t<path d=\"M8.00006 16.4075C12.4183 16.4075 16.0001 12.8258 16.0001 8.40747C16.0001 3.98919 12.4183 0.407471 8.00006 0.407471C3.58178 0.407471 6.10352e-05 3.98919 6.10352e-05 8.40747C6.10352e-05 12.8258 3.58178 16.4075 8.00006 16.4075Z\" fill=\"url(#paint0_linear_2450_2140)\" />\r\n\t\t\t\t\t\t\t\t<path d=\"M4.83057 8.57422H10.8306\" stroke=\"white\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n\t\t\t\t\t\t\t\t<path d=\"M7.83057 5.57422L10.8306 8.57422L7.83057 11.5742\" stroke=\"white\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n\t\t\t\t\t\t\t</g>\r\n\t\t\t\t\t\t\t<defs>\r\n\t\t\t\t\t\t\t\t<linearGradient id=\"paint0_linear_2450_2140\" x1=\"15.6001\" y1=\"14.9055\" x2=\"0.714348\" y2=\"14.9055\" gradientUnits=\"userSpaceOnUse\">\r\n\t\t\t\t\t\t\t\t\t<stop stop-color=\"#3B80FF\" />\r\n\t\t\t\t\t\t\t\t\t<stop offset=\"0.899038\" stop-color=\"#C8B6FF\" />\r\n\t\t\t\t\t\t\t\t</linearGradient>\r\n\t\t\t\t\t\t\t\t<clipPath id=\"clip0_2450_2140\">\r\n\t\t\t\t\t\t\t\t\t<rect width=\"16\" height=\"16\" fill=\"white\" transform=\"translate(0 0.407471)\" />\r\n\t\t\t\t\t\t\t\t</clipPath>\r\n\t\t\t\t\t\t\t</defs>\r\n\t\t\t\t\t\t</svg>\r\n\t\t\t\t\t</p>\r\n\t\t\t\t</li>\r\n\t\t\t</ul>\r\n\t\t</div>\r\n\t\t<div v-if=\"optionOther.length\" class=\"option-item item-3\">\r\n\t\t\t<ul>\r\n\t\t\t\t<li v-for=\"item in optionOther\" :key=\"item.id\" @click=\"handleItemClick(item, '3')\">\r\n\t\t\t\t\t<span>{{ item.name }}</span>\r\n\t\t\t\t</li>\r\n\t\t\t</ul>\r\n\t\t</div>\r\n\t</div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { inject, ref, computed } from 'vue'\r\n\r\n\r\n// 定义类型\r\ninterface HelloChatInfo {\r\n\tinfo1: any[]\r\n\tinfo2: any[]\r\n\tinfo3: any[]\r\n}\r\n\r\ntype HelloChatItem = { id: string; name: string }\r\n\r\n// 为注入的变量添加类型参数\r\nconst helloChatList = inject<HelloChatItem[]>('helloChatList', [])\r\nconst helloChatInfo = inject<HelloChatInfo>('helloChatInfo', {\r\n\tinfo1: [],\r\n\tinfo2: [],\r\n\tinfo3: []\r\n})\r\n\r\n// 添加当前页码状态,默认为0\r\nconst currentPage = ref(0)\r\n// 每页显示的项目数量\r\n\r\n\r\n// 获取完整的选项列表\r\nconst fullOptionList = ref(helloChatInfo.info1)\r\n\r\n// 计算当前显示的项目\\\r\nconst optionList = computed(() => {\r\n\tif (!fullOptionList.value.length) {\r\n\t\treturn []\r\n\t}\r\n\tconst startIndex = currentPage.value * itemsPerPage\r\n\treturn fullOptionList.value.slice(startIndex, startIndex + itemsPerPage) || []\r\n})\r\n\r\nconst optionTeam = ref(helloChatInfo.info2)\r\nconst optionOther = ref(helloChatInfo.info3)\r\n\r\n// 处理列表项点击事件\r\nconst emit = defineEmits(['handleItemClick'])\r\nconst handleItemClick = (item: HelloChatItem, type: string) => {\r\n\temit('handleItemClick', item, type)\r\n}\r\n\r\n// 实现换一换功能\r\nconst handleChange = () => {\r\n\t// 计算总页数\r\n\tconst totalPages = Math.ceil(fullOptionList.value.length / itemsPerPage)\r\n\t// 切换到下一页,如果是最后一页则回到第一页\r\n\tcurrentPage.value = (currentPage.value + 1) % totalPages\r\n}\r\n</script>\r\n\r\n<!-- <style lang=\"less\" scoped>\r\n@import '../style/HelloChatRobot.less';\r\n</style> -->\r\n"],"names":["DO_defineComponent","inject","ref","computed","_createElementVNode","_imports_0","_createElementBlock","_Fragment","_renderList","_unref","_imports_1","_toDisplayString"],"mappings":"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"}
1
+ {"version":3,"file":"HelloChat.vue2.js","sources":["../../../../../../../packages/components/touchchat/component/AiRobot/HelloChat.vue"],"sourcesContent":["<script lang=\"ts\">\nconst itemsPerPage = 5\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({ name: 'HelloChat' });</script>\n<template>\n\t<div class=\"hello-chat\">\n\t\t<img src=\"../../img/aiAvatar.png\" alt=\"\" />\n\t\t<p class=\"title\">您好,我能帮您处理什么</p>\n\t\t<p class=\"sub-info\">作为您的智能伙伴,我既能帮您查账单、办业务,又能陪您聊天、学知识。</p>\n\t</div>\n\t<div class=\"function-buttons\">\n\t\t<ul>\n\t\t\t<li v-for=\"item in helloChatList\" :key=\"item.id\" @click=\"handleItemClick(item, '0')\">\n\t\t\t\t<img src=\"../../img/icon.png\" alt=\"{{ item.name }}\" class=\"icon\" />\n\t\t\t\t<span class=\"ellipsis-text\">{{ item.name }}</span>\n\t\t\t</li>\n\t\t</ul>\n\t</div>\n\t<div class=\"option-conter\">\n\t\t<div v-if=\"optionList.length > 0\" class=\"option-item item-1\">\n\t\t\t<div class=\"item-top\">\n\t\t\t\t<div class=\"item-1-left\">\n\t\t\t\t\t<p>猜你想所问</p>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"item-1-right\" @click=\"handleChange\">\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"13\" viewBox=\"0 0 12 13\" fill=\"none\">\n\t\t\t\t\t\t<path d=\"M10.5 2.40796V6.40796\" stroke=\"#0077FA\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n\t\t\t\t\t\t<path d=\"M1.5 6.40747V10.4075\" stroke=\"#0077FA\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n\t\t\t\t\t\t<path d=\"M10.5 6.40747C10.5 3.9222 8.48528 1.90747 6 1.90747C4.72863 1.90747 3.5804 2.43471 2.76203 3.28247M1.5 6.40747C1.5 8.89275 3.51472 10.9075 6 10.9075C7.2139 10.9075 8.31555 10.4268 9.125 9.64545\" stroke=\"#0077FA\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n\t\t\t\t\t</svg>\n\t\t\t\t\t<span>换一换</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"item-bottom\">\n\t\t\t\t<ul>\n\t\t\t\t\t<li v-for=\"item in optionList\" :key=\"item.id\" @click=\"handleItemClick(item, '1')\">\n\t\t\t\t\t\t<span>{{ item.name }}</span>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t</div>\n\t\t<div v-if=\"optionTeam.length\" class=\"option-item item-2\">\n\t\t\t<ul>\n\t\t\t\t<li v-for=\"item in optionTeam\" :key=\"item.id\" @click=\"handleItemClick(item, '2')\">\n\t\t\t\t\t<p class=\"title\">{{ item.name }}</p>\n\t\t\t\t\t<p class=\"team\">\n\t\t\t\t\t\t<span class=\"content\">{{ item.subTitle }}</span>\n\t\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\n\t\t\t\t\t\t\t<g clip-path=\"url(#clip0_2450_2140)\">\n\t\t\t\t\t\t\t\t<path d=\"M8.00006 16.4075C12.4183 16.4075 16.0001 12.8258 16.0001 8.40747C16.0001 3.98919 12.4183 0.407471 8.00006 0.407471C3.58178 0.407471 6.10352e-05 3.98919 6.10352e-05 8.40747C6.10352e-05 12.8258 3.58178 16.4075 8.00006 16.4075Z\" fill=\"url(#paint0_linear_2450_2140)\" />\n\t\t\t\t\t\t\t\t<path d=\"M4.83057 8.57422H10.8306\" stroke=\"white\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n\t\t\t\t\t\t\t\t<path d=\"M7.83057 5.57422L10.8306 8.57422L7.83057 11.5742\" stroke=\"white\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t\t<defs>\n\t\t\t\t\t\t\t\t<linearGradient id=\"paint0_linear_2450_2140\" x1=\"15.6001\" y1=\"14.9055\" x2=\"0.714348\" y2=\"14.9055\" gradientUnits=\"userSpaceOnUse\">\n\t\t\t\t\t\t\t\t\t<stop stop-color=\"#3B80FF\" />\n\t\t\t\t\t\t\t\t\t<stop offset=\"0.899038\" stop-color=\"#C8B6FF\" />\n\t\t\t\t\t\t\t\t</linearGradient>\n\t\t\t\t\t\t\t\t<clipPath id=\"clip0_2450_2140\">\n\t\t\t\t\t\t\t\t\t<rect width=\"16\" height=\"16\" fill=\"white\" transform=\"translate(0 0.407471)\" />\n\t\t\t\t\t\t\t\t</clipPath>\n\t\t\t\t\t\t\t</defs>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</p>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\t\t<div v-if=\"optionOther.length\" class=\"option-item item-3\">\n\t\t\t<ul>\n\t\t\t\t<li v-for=\"item in optionOther\" :key=\"item.id\" @click=\"handleItemClick(item, '3')\">\n\t\t\t\t\t<span>{{ item.name }}</span>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { inject, ref, computed } from 'vue'\n\n\n// 定义类型\ninterface HelloChatInfo {\n\tinfo1: any[]\n\tinfo2: any[]\n\tinfo3: any[]\n}\n\ntype HelloChatItem = { id: string; name: string }\n\n// 为注入的变量添加类型参数\nconst helloChatList = inject<HelloChatItem[]>('helloChatList', [])\nconst helloChatInfo = inject<HelloChatInfo>('helloChatInfo', {\n\tinfo1: [],\n\tinfo2: [],\n\tinfo3: []\n})\n\n// 添加当前页码状态,默认为0\nconst currentPage = ref(0)\n// 每页显示的项目数量\n\n\n// 获取完整的选项列表\nconst fullOptionList = ref(helloChatInfo.info1)\n\n// 计算当前显示的项目\\\nconst optionList = computed(() => {\n\tif (!fullOptionList.value.length) {\n\t\treturn []\n\t}\n\tconst startIndex = currentPage.value * itemsPerPage\n\treturn fullOptionList.value.slice(startIndex, startIndex + itemsPerPage) || []\n})\n\nconst optionTeam = ref(helloChatInfo.info2)\nconst optionOther = ref(helloChatInfo.info3)\n\n// 处理列表项点击事件\nconst emit = defineEmits(['handleItemClick'])\nconst handleItemClick = (item: HelloChatItem, type: string) => {\n\temit('handleItemClick', item, type)\n}\n\n// 实现换一换功能\nconst handleChange = () => {\n\t// 计算总页数\n\tconst totalPages = Math.ceil(fullOptionList.value.length / itemsPerPage)\n\t// 切换到下一页,如果是最后一页则回到第一页\n\tcurrentPage.value = (currentPage.value + 1) % totalPages\n}\n</script>\n\n<!-- <style lang=\"less\" scoped>\n@import '../style/HelloChatRobot.less';\n</style> -->\n"],"names":["DO_defineComponent","inject","ref","computed","_createElementVNode","_imports_0","_createElementBlock","_Fragment","_renderList","_unref","_imports_1","_toDisplayString"],"mappings":"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"}
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var letter_vue_vue_type_script_setup_true_lang = require('./letter.vue2.js');
6
6
  var _pluginVue_exportHelper = require('../../../../../_virtual/_plugin-vue_export-helper.js');
7
7
 
8
- var Letter = /* @__PURE__ */ _pluginVue_exportHelper.default(letter_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-6fd1b883"], ["__file", "letter.vue"]]);
8
+ var Letter = /* @__PURE__ */ _pluginVue_exportHelper.default(letter_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-5bee9536"], ["__file", "letter.vue"]]);
9
9
 
10
10
  exports.default = Letter;
11
11
  //# sourceMappingURL=letter.vue.js.map
@@ -184,14 +184,14 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
184
184
  innerHTML: displayContent.value
185
185
  }, null, 10, ["innerHTML"]),
186
186
  vue.createCommentVNode(" \u6761\u4EF6\u663E\u793Aloading\uFF0C\u4EC5\u5728HTML\u6A21\u5F0F\u4E14\u6B63\u5728\u6253\u5B57\u65F6\u663E\u793A "),
187
- vue.createCommentVNode(` <div v-if="isTyping" class="typewriter-loading">\r
188
- <span class="loading-dot" :style="{ animationDelay: '0ms' }"></span>\r
189
- <span class="loading-dot" :style="{ animationDelay: '200ms' }"></span>\r
190
- <span class="loading-dot" :style="{ animationDelay: '400ms' }"></span>\r
191
- <span class="loading-text">{{ loadingText ?? '\u6B63\u5728\u6E32\u67D3\u5185\u5BB9' }}</span>\r
192
- <span class="loading-dot" :style="{ animationDelay: '0ms' }"></span>\r
193
- <span class="loading-dot" :style="{ animationDelay: '200ms' }"></span>\r
194
- <span class="loading-dot" :style="{ animationDelay: '400ms' }"></span>\r
187
+ vue.createCommentVNode(` <div v-if="isTyping" class="typewriter-loading">
188
+ <span class="loading-dot" :style="{ animationDelay: '0ms' }"></span>
189
+ <span class="loading-dot" :style="{ animationDelay: '200ms' }"></span>
190
+ <span class="loading-dot" :style="{ animationDelay: '400ms' }"></span>
191
+ <span class="loading-text">{{ loadingText ?? '\u6B63\u5728\u6E32\u67D3\u5185\u5BB9' }}</span>
192
+ <span class="loading-dot" :style="{ animationDelay: '0ms' }"></span>
193
+ <span class="loading-dot" :style="{ animationDelay: '200ms' }"></span>
194
+ <span class="loading-dot" :style="{ animationDelay: '400ms' }"></span>
195
195
  </div> `)
196
196
  ],
197
197
  2