@ai-group/chat-sdk 0.2.5 → 0.2.8

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 (157) hide show
  1. package/README.md +93 -214
  2. package/dist/cjs/assets/arrow-down.png +0 -0
  3. package/dist/cjs/assets/arrow-up.png +0 -0
  4. package/dist/cjs/assets/chatKnowledge.png +0 -0
  5. package/dist/cjs/assets/completed-black.png +0 -0
  6. package/dist/cjs/assets/completed.png +0 -0
  7. package/dist/cjs/assets/document-black.png +0 -0
  8. package/dist/cjs/assets/document.png +0 -0
  9. package/dist/cjs/assets/document.svg +16 -0
  10. package/dist/cjs/assets/empty.png +0 -0
  11. package/dist/cjs/assets/group.png +0 -0
  12. package/dist/cjs/assets/qa-black.png +0 -0
  13. package/dist/cjs/assets/qa.png +0 -0
  14. package/dist/cjs/assets/skillNo-black.png +0 -0
  15. package/dist/cjs/assets/skillNo.png +0 -0
  16. package/dist/cjs/assets/tools-black.png +0 -0
  17. package/dist/cjs/assets/tools.png +0 -0
  18. package/dist/cjs/assets/user.png +0 -0
  19. package/dist/cjs/client/base.d.ts +9 -0
  20. package/dist/cjs/client/base.js +18 -0
  21. package/dist/cjs/client/base.js.map +7 -0
  22. package/dist/cjs/client/restClient.d.ts +0 -0
  23. package/dist/cjs/client/restClient.js +1 -0
  24. package/dist/cjs/client/restClient.js.map +7 -0
  25. package/dist/cjs/client/wsClient.d.ts +0 -0
  26. package/dist/cjs/client/wsClient.js +1 -0
  27. package/dist/cjs/client/wsClient.js.map +7 -0
  28. package/dist/cjs/components/XAiChatbot/XAiChatbot.stories.d.ts +10 -0
  29. package/dist/cjs/components/XAiChatbot/XAiChatbot.stories.js +484 -0
  30. package/dist/cjs/components/XAiChatbot/XAiChatbot.stories.js.map +7 -0
  31. package/dist/cjs/components/XAiChatbot/index.d.ts +12 -0
  32. package/dist/cjs/components/XAiChatbot/index.js +365 -0
  33. package/dist/cjs/components/XAiChatbot/index.js.map +7 -0
  34. package/dist/cjs/components/XAiChatbot/styles.d.ts +72 -0
  35. package/dist/cjs/components/XAiChatbot/styles.js +426 -0
  36. package/dist/cjs/components/XAiChatbot/styles.js.map +7 -0
  37. package/dist/cjs/components/XAiProvider/XAiProvider.stories.d.ts +7 -0
  38. package/dist/cjs/components/XAiProvider/XAiProvider.stories.js +127 -0
  39. package/dist/cjs/components/XAiProvider/XAiProvider.stories.js.map +7 -0
  40. package/dist/cjs/components/XAiProvider/index.d.ts +4 -0
  41. package/dist/cjs/components/XAiProvider/index.js +115 -0
  42. package/dist/cjs/components/XAiProvider/index.js.map +7 -0
  43. package/dist/cjs/components/XAiSDK.d.ts +10 -0
  44. package/dist/cjs/components/XAiSDK.js +53 -0
  45. package/dist/cjs/components/XAiSDK.js.map +7 -0
  46. package/dist/cjs/components/XAiWebSDKWrapper.d.ts +9 -0
  47. package/dist/cjs/components/XAiWebSDKWrapper.js +70 -0
  48. package/dist/cjs/components/XAiWebSDKWrapper.js.map +7 -0
  49. package/dist/cjs/context/AiProviderContext.d.ts +12 -0
  50. package/dist/cjs/context/AiProviderContext.js +74 -0
  51. package/dist/cjs/context/AiProviderContext.js.map +7 -0
  52. package/dist/cjs/context/ThemeContext.d.ts +20 -0
  53. package/dist/cjs/context/ThemeContext.js +37 -0
  54. package/dist/cjs/context/ThemeContext.js.map +7 -0
  55. package/dist/cjs/hooks/useAgentGenerator.d.ts +72 -0
  56. package/dist/cjs/hooks/useAgentGenerator.js +487 -0
  57. package/dist/cjs/hooks/useAgentGenerator.js.map +7 -0
  58. package/dist/cjs/hooks/useEventStreamRequest.d.ts +30 -0
  59. package/dist/cjs/hooks/useEventStreamRequest.js +188 -0
  60. package/dist/cjs/hooks/useEventStreamRequest.js.map +7 -0
  61. package/dist/cjs/hooks/useProviderContext.d.ts +33 -0
  62. package/dist/cjs/hooks/useProviderContext.js +105 -0
  63. package/dist/cjs/hooks/useProviderContext.js.map +7 -0
  64. package/dist/cjs/hooks/useXAiSDK.d.ts +14 -0
  65. package/dist/cjs/hooks/useXAiSDK.js +75 -0
  66. package/dist/cjs/hooks/useXAiSDK.js.map +7 -0
  67. package/dist/cjs/index.d.ts +9 -0
  68. package/dist/cjs/index.js +61 -0
  69. package/dist/cjs/index.js.map +7 -0
  70. package/dist/cjs/services/api.d.ts +69 -0
  71. package/dist/cjs/services/api.js +49 -0
  72. package/dist/cjs/services/api.js.map +7 -0
  73. package/dist/cjs/styles/common.d.ts +64 -0
  74. package/dist/cjs/styles/common.js +144 -0
  75. package/dist/cjs/styles/common.js.map +7 -0
  76. package/dist/cjs/styles/markdown.d.ts +3 -0
  77. package/dist/cjs/styles/markdown.js +193 -0
  78. package/dist/cjs/styles/markdown.js.map +7 -0
  79. package/dist/cjs/types/XAiChatbot.d.ts +159 -0
  80. package/dist/cjs/types/XAiChatbot.js +18 -0
  81. package/dist/cjs/types/XAiChatbot.js.map +7 -0
  82. package/dist/cjs/types/XAiMessage.d.ts +121 -0
  83. package/dist/cjs/types/XAiMessage.js +55 -0
  84. package/dist/cjs/types/XAiMessage.js.map +7 -0
  85. package/dist/cjs/types/XAiProvider.d.ts +46 -0
  86. package/dist/cjs/types/XAiProvider.js +50 -0
  87. package/dist/cjs/types/XAiProvider.js.map +7 -0
  88. package/dist/cjs/types/index.d.ts +3 -0
  89. package/dist/cjs/types/index.js +28 -0
  90. package/dist/cjs/types/index.js.map +7 -0
  91. package/dist/cjs/types/mdx.d.ts +18 -0
  92. package/dist/cjs/utils/chat.d.ts +34 -0
  93. package/dist/cjs/utils/chat.js +1 -0
  94. package/dist/cjs/utils/chat.js.map +7 -0
  95. package/dist/cjs/utils/index.d.ts +2 -0
  96. package/dist/cjs/utils/index.js +49 -0
  97. package/dist/cjs/utils/index.js.map +7 -0
  98. package/dist/cjs/utils/providerManager.d.ts +22 -0
  99. package/dist/cjs/utils/providerManager.js +73 -0
  100. package/dist/cjs/utils/providerManager.js.map +7 -0
  101. package/dist/cjs/utils/request.d.ts +78 -0
  102. package/dist/cjs/utils/request.example.d.ts +39 -0
  103. package/dist/cjs/utils/request.example.js +211 -0
  104. package/dist/cjs/utils/request.example.js.map +7 -0
  105. package/dist/cjs/utils/request.js +231 -0
  106. package/dist/cjs/utils/request.js.map +7 -0
  107. package/dist/cjs/utils/umdEntry.d.ts +14 -0
  108. package/dist/cjs/utils/umdEntry.js +97 -0
  109. package/dist/cjs/utils/umdEntry.js.map +7 -0
  110. package/dist/esm/assets/user.png +0 -0
  111. package/dist/esm/client/base.d.ts +9 -0
  112. package/dist/esm/client/restClient.d.ts +0 -0
  113. package/dist/esm/client/wsClient.d.ts +0 -0
  114. package/dist/esm/components/XAiChatbot/XAiChatbot.stories.d.ts +10 -0
  115. package/dist/esm/components/XAiChatbot/index.d.ts +12 -0
  116. package/dist/esm/components/XAiChatbot/index.js +17 -11
  117. package/dist/esm/components/XAiChatbot/index.js.map +1 -1
  118. package/dist/esm/components/XAiChatbot/styles.d.ts +72 -0
  119. package/dist/esm/components/XAiChatbot/styles.js +37 -38
  120. package/dist/esm/components/XAiChatbot/styles.js.map +1 -1
  121. package/dist/esm/components/XAiProvider/XAiProvider.stories.d.ts +7 -0
  122. package/dist/esm/components/XAiProvider/index.d.ts +4 -0
  123. package/dist/esm/components/XAiProvider/index.js +8 -1
  124. package/dist/esm/components/XAiProvider/index.js.map +1 -1
  125. package/dist/esm/components/XAiSDK.d.ts +10 -0
  126. package/dist/esm/components/XAiWebSDKWrapper.d.ts +9 -0
  127. package/dist/esm/components/XAiWebSDKWrapper.js +4 -1
  128. package/dist/esm/components/XAiWebSDKWrapper.js.map +1 -1
  129. package/dist/esm/context/AiProviderContext.d.ts +12 -0
  130. package/dist/esm/context/ThemeContext.d.ts +20 -0
  131. package/dist/esm/hooks/useAgentGenerator.d.ts +72 -0
  132. package/dist/esm/hooks/useAgentGenerator.js +113 -39
  133. package/dist/esm/hooks/useAgentGenerator.js.map +1 -1
  134. package/dist/esm/hooks/useEventStreamRequest.d.ts +30 -0
  135. package/dist/esm/hooks/useProviderContext.d.ts +33 -0
  136. package/dist/esm/hooks/useXAiSDK.d.ts +14 -0
  137. package/dist/esm/index.d.ts +9 -0
  138. package/dist/esm/services/api.d.ts +69 -0
  139. package/dist/esm/services/api.js.map +1 -1
  140. package/dist/esm/styles/common.d.ts +64 -0
  141. package/dist/esm/styles/markdown.d.ts +3 -0
  142. package/dist/esm/types/XAiChatbot.d.ts +159 -0
  143. package/dist/esm/types/XAiMessage.d.ts +121 -0
  144. package/dist/esm/types/XAiProvider.d.ts +46 -0
  145. package/dist/esm/types/XAiProvider.js +7 -0
  146. package/dist/esm/types/XAiProvider.js.map +1 -1
  147. package/dist/esm/types/index.d.ts +3 -0
  148. package/dist/esm/utils/chat.d.ts +34 -0
  149. package/dist/esm/utils/index.d.ts +2 -0
  150. package/dist/esm/utils/providerManager.d.ts +22 -0
  151. package/dist/esm/utils/request.d.ts +78 -0
  152. package/dist/esm/utils/request.example.d.ts +39 -0
  153. package/dist/esm/utils/umdEntry.d.ts +14 -0
  154. package/dist/esm/utils/umdEntry.js +22 -18
  155. package/dist/esm/utils/umdEntry.js.map +1 -1
  156. package/dist/umd/chat-sdk.min.js +1 -1
  157. package/package.json +1 -1
@@ -7,6 +7,7 @@ import { useState, useEffect, useRef } from 'react';
7
7
  import { v4 as uuidV4 } from 'uuid';
8
8
  import { useEventStreamRequest } from "./useEventStreamRequest";
9
9
  import { MessageRole, MessageStatus } from "../types/XAiMessage";
10
+ import { ErrorCode } from "../types/XAiProvider";
10
11
  import { request } from "../utils/request";
11
12
  import { safeJsonParse } from "../utils";
12
13
  import { fetchAppConfig } from "../services/api";
@@ -30,6 +31,7 @@ export var ActionType = /*#__PURE__*/function (ActionType) {
30
31
  ActionType["recallKnowledgeEnd"] = "RECALL_KNOWLEDGE_END";
31
32
  ActionType["invokeToolStart"] = "INVOKE_AGENT_TOOL_START";
32
33
  ActionType["invokeToolEnd"] = "INVOKE_AGENT_TOOL_END";
34
+ ActionType["suggest"] = "FOLLOW_UP";
33
35
  ActionType["response"] = "RESPONSE";
34
36
  ActionType["finish"] = "FINISHED";
35
37
  return ActionType;
@@ -55,7 +57,9 @@ export var ActionAvailability = /*#__PURE__*/function (ActionAvailability) {
55
57
  var useAgentGenerator = function useAgentGenerator(_ref) {
56
58
  var url = _ref.url,
57
59
  token = _ref.token,
58
- config = _ref.config;
60
+ config = _ref.config,
61
+ onError = _ref.onError,
62
+ onSuccess = _ref.onSuccess;
59
63
  var textSpeed = 60;
60
64
  var _useState = useState([]),
61
65
  _useState2 = _slicedToArray(_useState, 2),
@@ -76,7 +80,7 @@ var useAgentGenerator = function useAgentGenerator(_ref) {
76
80
  if (url && config) {
77
81
  var initConfig = /*#__PURE__*/function () {
78
82
  var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
79
- var result;
83
+ var result, _result$data, _ref4, enableFlag, isDeleted;
80
84
  return _regeneratorRuntime().wrap(function _callee$(_context) {
81
85
  while (1) switch (_context.prev = _context.next) {
82
86
  case 0:
@@ -89,16 +93,37 @@ var useAgentGenerator = function useAgentGenerator(_ref) {
89
93
  result = _context.sent;
90
94
  if (result.success) {
91
95
  setAppInfo(result.data);
96
+ _ref4 = ((_result$data = result.data) === null || _result$data === void 0 ? void 0 : _result$data.publishDTO) || {}, enableFlag = _ref4.enableFlag, isDeleted = _ref4.isDeleted;
97
+ if (!enableFlag) {
98
+ onError === null || onError === void 0 || onError({
99
+ code: ErrorCode.APP_NOT_ENABLE,
100
+ message: '应用未启用或者已下架'
101
+ });
102
+ } else if (isDeleted === 'Y') {
103
+ onError === null || onError === void 0 || onError({
104
+ code: ErrorCode.APP_DELETED,
105
+ message: '应用已下架'
106
+ });
107
+ } else {
108
+ onSuccess === null || onSuccess === void 0 || onSuccess(result.data);
109
+ }
92
110
  } else {
93
- console.error('获取聊天配置失败', result.message);
111
+ onError === null || onError === void 0 || onError({
112
+ code: ErrorCode.APP_NOT_FOUND,
113
+ message: (result === null || result === void 0 ? void 0 : result.message) || '获取聊天配置失败'
114
+ });
94
115
  }
95
- _context.next = 10;
116
+ _context.next = 11;
96
117
  break;
97
118
  case 7:
98
119
  _context.prev = 7;
99
120
  _context.t0 = _context["catch"](0);
100
121
  console.error('获取聊天配置失败', _context.t0);
101
- case 10:
122
+ onError === null || onError === void 0 || onError({
123
+ code: ErrorCode.API_ERROR,
124
+ message: '获取聊天配置失败'
125
+ });
126
+ case 11:
102
127
  case "end":
103
128
  return _context.stop();
104
129
  }
@@ -149,13 +174,57 @@ var useAgentGenerator = function useAgentGenerator(_ref) {
149
174
  });
150
175
  }
151
176
  setMessages(function (prevMessages) {
177
+ var newMessages = _toConsumableArray(prevMessages);
178
+ // 消息类型判断
179
+ var _response = response,
180
+ action = _response.action,
181
+ data = _response.data;
182
+ var uniqueId = data.uniqueId,
183
+ contentType = data.contentType,
184
+ content = data.content,
185
+ toolType = data.toolType,
186
+ args = data.args,
187
+ knowledgeType = data.knowledgeType,
188
+ _data$success = data.success,
189
+ success = _data$success === void 0 ? true : _data$success,
190
+ errorMsg = data.errorMsg;
191
+
192
+ // 建议类信息 特殊处理
193
+ if (action === ActionType.suggest) {
194
+ var suggestMessageIndex = messages.findIndex(function (item) {
195
+ return item.type === 'SuggestionMessage';
196
+ });
197
+ if (suggestMessageIndex === -1) {
198
+ var newMessage = {
199
+ id: uuidV4(),
200
+ type: 'SuggestionMessage',
201
+ createdAt: new Date(),
202
+ status: MessageStatus.done,
203
+ role: MessageRole.suggestion,
204
+ content: [{
205
+ key: uuidV4(),
206
+ description: content
207
+ }]
208
+ };
209
+ newMessages.push(newMessage);
210
+ } else {
211
+ var suggestMsg = newMessages[suggestMessageIndex];
212
+ if (suggestMsg !== null && suggestMsg !== void 0 && suggestMsg.content) {
213
+ suggestMsg.content.push({
214
+ key: uuidV4(),
215
+ description: content
216
+ });
217
+ }
218
+ }
219
+ return newMessages;
220
+ }
221
+
152
222
  // 找到最后一条 AI 消息
153
223
  var lastAIMsgIndex = _toConsumableArray(prevMessages).reverse().findIndex(function (m) {
154
224
  return m.role === MessageRole.assistant && m.type === 'TextMessage' && (m.status === 'init' || m.status === 'pending');
155
225
  });
156
226
  var realIndex = lastAIMsgIndex === -1 ? -1 : prevMessages.length - 1 - lastAIMsgIndex;
157
227
  var lastAIMsg = realIndex !== -1 ? prevMessages[realIndex] : null;
158
- var newMessages = _toConsumableArray(prevMessages);
159
228
  var aiMsg;
160
229
  if (!lastAIMsg) {
161
230
  aiMsg = {
@@ -176,20 +245,6 @@ var useAgentGenerator = function useAgentGenerator(_ref) {
176
245
  aiMsg = undefined;
177
246
  }
178
247
 
179
- // 消息类型判断
180
- var _response = response,
181
- action = _response.action,
182
- data = _response.data;
183
- var uniqueId = data.uniqueId,
184
- contentType = data.contentType,
185
- content = data.content,
186
- toolType = data.toolType,
187
- args = data.args,
188
- knowledgeType = data.knowledgeType,
189
- _data$success = data.success,
190
- success = _data$success === void 0 ? true : _data$success,
191
- errorMsg = data.errorMsg;
192
-
193
248
  // 如果 aiMsg 为 undefined,则跳过处理
194
249
  if (!aiMsg) {
195
250
  return newMessages;
@@ -283,7 +338,7 @@ var useAgentGenerator = function useAgentGenerator(_ref) {
283
338
  // 更新消息数组
284
339
  if (lastAIMsg && lastAIMsg.type === 'TextMessage') {
285
340
  newMessages[realIndex] = aiMsg;
286
- } else if (!lastAIMsg && aiMsg) {
341
+ } else if (!lastAIMsg) {
287
342
  // 只有 newMessages 最后一条是 TextMessage 时才替换,否则 push
288
343
  if (newMessages.length > 0 && newMessages[newMessages.length - 1].type === 'TextMessage') {
289
344
  newMessages[newMessages.length - 1] = aiMsg;
@@ -300,8 +355,8 @@ var useAgentGenerator = function useAgentGenerator(_ref) {
300
355
 
301
356
  // 添加对话(非普通对话)
302
357
  var setMessage = /*#__PURE__*/function () {
303
- var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(messageType, content) {
304
- var prologueMessageIndex, newMessage, suggestMessageIndex, _newMessage;
358
+ var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(messageType, content) {
359
+ var prologueMessageIndex, newMessage, suggestMessageIndex, _prologueMessageIndex, _newMessage;
305
360
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
306
361
  while (1) switch (_context2.prev = _context2.next) {
307
362
  case 0:
@@ -329,7 +384,7 @@ var useAgentGenerator = function useAgentGenerator(_ref) {
329
384
  }
330
385
  };
331
386
  setMessages(function (prev) {
332
- return [].concat(_toConsumableArray(prev), [newMessage]);
387
+ return [newMessage].concat(_toConsumableArray(prev));
333
388
  });
334
389
  } else {
335
390
  setMessages(function (prev) {
@@ -348,6 +403,10 @@ var useAgentGenerator = function useAgentGenerator(_ref) {
348
403
  return item.type === 'SuggestionMessage';
349
404
  });
350
405
  if (suggestMessageIndex === -1) {
406
+ _prologueMessageIndex = messages.findIndex(function (item) {
407
+ var _item$extra3;
408
+ return (_item$extra3 = item.extra) === null || _item$extra3 === void 0 ? void 0 : _item$extra3.prologue;
409
+ });
351
410
  _newMessage = {
352
411
  id: uuidV4(),
353
412
  type: 'SuggestionMessage',
@@ -356,9 +415,19 @@ var useAgentGenerator = function useAgentGenerator(_ref) {
356
415
  role: MessageRole.suggestion,
357
416
  content: content
358
417
  };
359
- setMessages(function (prev) {
360
- return [].concat(_toConsumableArray(prev), [_newMessage]);
361
- });
418
+ if (_prologueMessageIndex === -1) {
419
+ // 如果没有开场白,则插入到最前面
420
+ setMessages(function (prev) {
421
+ return [_newMessage].concat(_toConsumableArray(prev));
422
+ });
423
+ } else {
424
+ // 如果有开场白,则插到开场白后面
425
+ setMessages(function (prev) {
426
+ var newMessages = _toConsumableArray(prev);
427
+ newMessages.splice(_prologueMessageIndex + 1, 0, _newMessage);
428
+ return newMessages;
429
+ });
430
+ }
362
431
  } else {
363
432
  setMessages(function (prev) {
364
433
  return prev.map(function (item) {
@@ -379,13 +448,13 @@ var useAgentGenerator = function useAgentGenerator(_ref) {
379
448
  }, _callee2);
380
449
  }));
381
450
  return function setMessage(_x, _x2) {
382
- return _ref4.apply(this, arguments);
451
+ return _ref5.apply(this, arguments);
383
452
  };
384
453
  }();
385
454
 
386
455
  // 简单对话
387
456
  var chat = /*#__PURE__*/function () {
388
- var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(content) {
457
+ var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(content) {
389
458
  var newMessage;
390
459
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
391
460
  while (1) switch (_context3.prev = _context3.next) {
@@ -426,7 +495,7 @@ var useAgentGenerator = function useAgentGenerator(_ref) {
426
495
  }, _callee3);
427
496
  }));
428
497
  return function chat(_x3) {
429
- return _ref5.apply(this, arguments);
498
+ return _ref6.apply(this, arguments);
430
499
  };
431
500
  }();
432
501
 
@@ -487,23 +556,28 @@ var useAgentGenerator = function useAgentGenerator(_ref) {
487
556
  var _appInfo$onboardingIn = appInfo.onboardingInfo,
488
557
  onboardingInfo = _appInfo$onboardingIn === void 0 ? {} : _appInfo$onboardingIn;
489
558
  // eslint-disable-next-line camelcase
490
- var _ref6 = onboardingInfo || {},
491
- _ref6$suggested_quest = _ref6.suggested_questions,
492
- suggested_questions = _ref6$suggested_quest === void 0 ? [] : _ref6$suggested_quest,
493
- _ref6$prologue = _ref6.prologue,
494
- prologue = _ref6$prologue === void 0 ? '' : _ref6$prologue;
559
+ var _ref7 = onboardingInfo || {},
560
+ _ref7$suggested_quest = _ref7.suggested_questions,
561
+ suggested_questions = _ref7$suggested_quest === void 0 ? [] : _ref7$suggested_quest,
562
+ _ref7$prologue = _ref7.prologue,
563
+ prologue = _ref7$prologue === void 0 ? '' : _ref7$prologue;
495
564
  if (prologue) {
496
565
  setMessage('prologue', prologue);
497
566
  } else {
498
567
  setMessages(function (prev) {
499
568
  return prev.filter(function (item) {
500
- var _item$extra3;
501
- return !((_item$extra3 = item.extra) !== null && _item$extra3 !== void 0 && _item$extra3.prologue);
569
+ var _item$extra4;
570
+ return !((_item$extra4 = item.extra) !== null && _item$extra4 !== void 0 && _item$extra4.prologue);
502
571
  });
503
572
  });
504
573
  }
505
- if (suggested_questions.length > 0) {
506
- var suggestMessages = suggested_questions.map(function (item, index) {
574
+
575
+ // 过滤空内容
576
+ var formatSuggests = suggested_questions.filter(function (item) {
577
+ return item;
578
+ });
579
+ if (formatSuggests.length > 0) {
580
+ var suggestMessages = formatSuggests.map(function (item, index) {
507
581
  return {
508
582
  key: index + 1,
509
583
  description: item
@@ -1 +1 @@
1
- {"version":3,"names":["useState","useEffect","useRef","v4","uuidV4","useEventStreamRequest","MessageRole","MessageStatus","request","safeJsonParse","fetchAppConfig","documentIcon","completedIcon","completedExpandIcon","documentExpandIcon","qaIcon","qaExpandIcon","skillNoIcon","skillNoExpandIcon","toolIcon","toolExpandIcon","ActionType","ProcessStatus","ActionAvailability","useAgentGenerator","_ref","url","token","config","textSpeed","_useState","_useState2","_slicedToArray","messages","setMessages","_useState3","_useState4","appInfo","setAppInfo","requestInfo","_ref2","appNo","pt","tc","initConfig","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","result","wrap","_callee$","_context","prev","next","_objectSpread","sent","success","data","console","error","message","t0","stop","apply","arguments","_useEventStreamReques","streaming","onClose","setTimeout","_requestInfo$current","_requestInfo$current2","current","sensitiveWords","requestId","post","onOpen","res","log","start","loading","responseData","content","response","action","contentType","errorMsg","prevMessages","lastAIMsgIndex","_toConsumableArray","reverse","findIndex","m","role","assistant","type","status","realIndex","length","lastAIMsg","newMessages","aiMsg","id","createdAt","Date","text","thinks","init","push","undefined","_response","uniqueId","toolType","args","knowledgeType","_data$success","recallKnowledgeStart","name","extra","icon","expandIcon","recallKnowledgeEnd","_aiMsg$thinks","recallKnowledgeMsg","find","item","cost","toFixed","invokeToolStart","invokeToolEnd","_aiMsg$thinks2","invokeToolMsg","pending","failed","concat","finish","done","setMessage","_ref4","_callee2","messageType","prologueMessageIndex","newMessage","suggestMessageIndex","_newMessage","_callee2$","_context2","_item$extra","prologue","noFooter","map","_item$extra2","abrupt","suggestion","_x","_x2","chat","_ref5","_callee3","_callee3$","_context3","user","splice","appParams","inputs_msg","Authorization","_x3","reChat","lastUserMsg","stopChat","forEach","_appInfo$onboardingIn","onboardingInfo","_ref6","_ref6$suggested_quest","suggested_questions","_ref6$prologue","filter","_item$extra3","suggestMessages","index","key","description"],"sources":["../../../src/hooks/useAgentGenerator.ts"],"sourcesContent":["import { useState, useEffect, useRef } from 'react';\nimport { v4 as uuidV4 } from 'uuid';\nimport { useEventStreamRequest } from '@/hooks/useEventStreamRequest';\nimport { MessageRole, MessageStatus, TextMessage, Messages } from '@/types/XAiMessage';\nimport { request } from '@/utils/request';\nimport { safeJsonParse } from '@/utils/index';\nimport { fetchAppConfig } from '@/services/api';\n// 图标\nimport documentIcon from '@/assets/document.png';\nimport completedIcon from '@/assets/completed.png';\nimport completedExpandIcon from '@/assets/completed-black.png';\nimport documentExpandIcon from '@/assets/document-black.png';\nimport qaIcon from '@/assets/qa.png';\nimport qaExpandIcon from '@/assets/qa-black.png';\nimport skillNoIcon from '@/assets/skillNo.png';\nimport skillNoExpandIcon from '@/assets/skillNo-black.png';\nimport toolIcon from '@/assets/tools.png';\nimport toolExpandIcon from '@/assets/tools-black.png';\n\nexport type ContentType = 'TEXT' | 'IMAGE' | 'FILE';\n\nexport interface ImageUrl {\n url: string;\n name: string;\n}\n\nexport interface FileUrl {\n url: string;\n fileName: string;\n suffix: string;\n}\n\nexport interface Content {\n text?: string;\n imageUrl?: ImageUrl;\n fileUrl?: FileUrl;\n}\n\nexport interface ContentDef {\n description: string;\n contentType: ContentType;\n content: Content;\n}\n// contents 类型\nexport type Contents = ContentDef[];\n\n// —————————————— 接口字段定义 ————————————\nexport enum ActionType {\n recallKnowledgeStart = 'RECALL_KNOWLEDGE_START', // 知识库召回开始\n recallKnowledgeEnd = 'RECALL_KNOWLEDGE_END', // 知识库召回结束\n invokeToolStart = 'INVOKE_AGENT_TOOL_START', // 开始调用工具\n invokeToolEnd = 'INVOKE_AGENT_TOOL_END', // 调用工具完成\n response = 'RESPONSE', // 响应\n finish = 'FINISHED', // 结束\n}\n\nexport enum ProcessStatus {\n start = 'START',\n end = 'END',\n}\n\nexport enum ActionAvailability {\n disabled = 'disabled', // 不可用\n enabled = 'enabled', // 可用\n remote = 'remote', // 远程可用\n}\n\nexport type ThinkStep = any; // 临时定义,后续可完善\n\n/**\n* 工具/动作定义\n*/\nexport interface Action {\n name: string; // 名称\n description: string; // 描述\n jsonSchema: string; // 参数JSON Schema\n available?: ActionAvailability; // 可用性\n}\n\nconst useAgentGenerator = ({ url, token, config }: { url: string; token: string; config: any }) => {\n const textSpeed = 60;\n\n const [messages, setMessages] = useState<Messages[]>([]);\n const [appInfo, setAppInfo] = useState<any>(null);\n const requestInfo = useRef<{ requestId?: string; sensitiveWords?: string[] }>({});\n\n const { appNo, pt, tc } = config || {};\n\n // 初始化时获取配置\n useEffect(() => {\n if (url && config) {\n const initConfig = async () => {\n try {\n const result = await fetchAppConfig({ url, ...config });\n if (result.success) {\n setAppInfo(result.data);\n } else {\n console.error('获取聊天配置失败', result.message);\n }\n } catch (error) {\n console.error('获取聊天配置失败', error);\n }\n };\n initConfig();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [url, config]);\n\n const { start, loading, responseData, stop } = useEventStreamRequest({\n streaming: true,\n textSpeed,\n onClose: () => {\n // close的时机有可能在setMessages之前,所以需要延迟一下\n setTimeout(() => {\n if (requestInfo.current?.sensitiveWords && requestInfo.current?.requestId) {\n request.post(url);\n }\n }, 500);\n },\n onOpen(res) {\n console.log('res-----open:', res);\n },\n });\n\n // 数据更新\n useEffect(() => {\n if (!responseData || !responseData.content || !responseData.data) return;\n\n let response = responseData.data || responseData.content;\n if (typeof response === 'string') {\n response = safeJsonParse(response, {\n action: ActionType.response,\n data: {\n contentType: 'TEXT',\n content: '解析响应数据时出错,请重试',\n success: false,\n errorMsg: '响应数据格式错误',\n },\n });\n }\n\n setMessages((prevMessages) => {\n // 找到最后一条 AI 消息\n const lastAIMsgIndex = [...prevMessages].reverse().findIndex(\n (m) => m.role === MessageRole.assistant && m.type === 'TextMessage' && (m.status === 'init' || m.status === 'pending'),\n );\n const realIndex = lastAIMsgIndex === -1 ? -1 : prevMessages.length - 1 - lastAIMsgIndex;\n const lastAIMsg = realIndex !== -1 ? prevMessages[realIndex] : null;\n\n let newMessages = [...prevMessages];\n let aiMsg: TextMessage | undefined;\n\n if (!lastAIMsg) {\n aiMsg = {\n id: uuidV4(),\n type: 'TextMessage',\n createdAt: new Date(),\n role: MessageRole.assistant,\n content: { text: '' },\n thinks: [],\n status: MessageStatus.init,\n };\n newMessages.push(aiMsg);\n } else if (lastAIMsg.type === 'TextMessage') {\n aiMsg = { ...lastAIMsg };\n } else if (lastAIMsg.type === 'ImageMessage') {\n aiMsg = undefined;\n }\n\n // 消息类型判断\n const { action, data } = response;\n const { uniqueId, contentType, content, toolType, args, knowledgeType, success = true, errorMsg } = data;\n\n // 如果 aiMsg 为 undefined,则跳过处理\n if (!aiMsg) {\n return newMessages;\n }\n\n switch (action) {\n case ActionType.recallKnowledgeStart:\n aiMsg.thinks = aiMsg.thinks || [];\n aiMsg.thinks.push({\n id: uniqueId,\n createdAt: new Date(),\n type: 'ActionExecutionMessage',\n name: knowledgeType === 'DOCUMENT' ? '已搜索文档知识库' : '已搜索问答知识库',\n arguments: args,\n extra: {\n ...data,\n icon: knowledgeType === 'DOCUMENT' ? documentIcon : qaIcon,\n expandIcon: knowledgeType === 'DOCUMENT' ? documentExpandIcon : qaExpandIcon,\n },\n });\n break;\n case ActionType.recallKnowledgeEnd: {\n // 需要给之前的recallKnowledgeStart添加cost - 通过uniqueId关联\n const recallKnowledgeMsg = aiMsg.thinks?.find((item) => item.id === uniqueId);\n if (recallKnowledgeMsg) {\n recallKnowledgeMsg.extra.cost = data?.cost ? (data?.cost / 1000).toFixed(2) : 0;\n }\n break;\n }\n case ActionType.invokeToolStart:\n aiMsg.thinks = aiMsg.thinks || [];\n aiMsg.thinks.push({\n id: uniqueId,\n createdAt: new Date(),\n type: 'ActionExecutionMessage',\n name: toolType === 'SKILL' ? '已调用工作流' : '已调用工具',\n arguments: args,\n extra: {\n ...data,\n icon: toolType === 'SKILL' ? skillNoIcon : toolIcon,\n expandIcon: toolType === 'SKILL' ? skillNoExpandIcon : toolExpandIcon,\n },\n });\n break;\n case ActionType.invokeToolEnd: {\n // 需要给之前的invokeToolStart添加cost - 通过uniqueId关联\n const invokeToolMsg = aiMsg.thinks?.find((item) => item.id === uniqueId);\n if (invokeToolMsg) {\n invokeToolMsg.extra.cost = data?.cost ? (data?.cost / 1000).toFixed(2) : 0;\n }\n break;\n }\n case ActionType.response:\n if (success) {\n // 正常渲染\n if (aiMsg.status === MessageStatus.init) {\n aiMsg.status = MessageStatus.pending;\n }\n if (contentType === 'TEXT' && 'text' in aiMsg.content) {\n aiMsg.content.text += content;\n }\n } else {\n // 调用失败\n aiMsg.status = MessageStatus.failed;\n aiMsg.content.text = `<span style=\"color: red;\">❌ ${errorMsg}</span>`;\n }\n break;\n case ActionType.finish:\n aiMsg.thinks = aiMsg.thinks || [];\n aiMsg.thinks.push({\n id: uniqueId,\n createdAt: new Date(),\n type: 'ActionExecutionMessage',\n name: '运行完毕',\n extra: {\n ...data,\n cost: data?.cost ? (data?.cost / 1000).toFixed(2) : 0,\n icon: completedIcon,\n expandIcon: completedExpandIcon,\n },\n });\n aiMsg.status = MessageStatus.done;\n break;\n // 其他类型略\n }\n\n // 更新消息数组\n if (lastAIMsg && lastAIMsg.type === 'TextMessage') {\n newMessages[realIndex] = aiMsg;\n } else if (!lastAIMsg && aiMsg) {\n // 只有 newMessages 最后一条是 TextMessage 时才替换,否则 push\n if (newMessages.length > 0 && newMessages[newMessages.length - 1].type === 'TextMessage') {\n newMessages[newMessages.length - 1] = aiMsg;\n } else {\n // 只 push TextMessage,不替换非 TextMessage\n newMessages = [...newMessages, aiMsg];\n }\n }\n return newMessages;\n });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [responseData]);\n\n // 添加对话(非普通对话)\n const setMessage = async (messageType: string, content: any) => {\n switch (messageType) {\n case 'prologue': {\n const prologueMessageIndex = messages.findIndex((item) => item.extra?.prologue);\n if (prologueMessageIndex === -1) {\n const newMessage: Messages = {\n type: 'TextMessage',\n id: uuidV4(),\n createdAt: new Date(),\n role: MessageRole.assistant,\n status: MessageStatus.done,\n content: {\n text: content,\n },\n extra: {\n prologue: true,\n noFooter: true,\n },\n };\n setMessages((prev) => [...prev, newMessage]);\n } else {\n setMessages((prev) => prev.map((item) => {\n if (item.extra?.prologue && item.content && 'text' in item.content) {\n item.content.text = content;\n }\n return item;\n }));\n }\n break;\n }\n case 'suggest': {\n const suggestMessageIndex = messages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex === -1) {\n const newMessage: Messages = {\n id: uuidV4(),\n type: 'SuggestionMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.suggestion,\n content,\n };\n setMessages((prev) => [...prev, newMessage]);\n } else {\n setMessages((prev) => prev.map((item) => {\n if (item.type === 'SuggestionMessage') {\n item.content = content;\n }\n return item;\n }));\n }\n break;\n }\n default:\n break;\n }\n };\n\n // 简单对话\n const chat = async (content: any) => {\n const newMessage: Messages = {\n type: 'TextMessage',\n id: uuidV4(),\n createdAt: new Date(),\n role: MessageRole.user,\n status: MessageStatus.done,\n content: {\n text: content,\n },\n };\n\n setMessages((prev) => {\n // 若存在对话建议,先删除对话建议\n const suggestMessageIndex = messages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex !== -1) {\n prev.splice(suggestMessageIndex, 1);\n }\n // 插入用户消息\n prev.push(newMessage);\n return prev;\n });\n\n start(\n `${url}/appouter/${appNo}/sendMsg?pt=${pt}&tc=${tc}`,\n {\n appParams: {\n inputs_msg: content,\n },\n },\n {\n Authorization: `Bearer ${token}`,\n },\n );\n };\n\n // 重新生成方法\n const reChat = () => {\n setMessages((prevMessages) => {\n // 1. 删除最新一条 AI 消息\n const lastAIMsgIndex = [...prevMessages].reverse().findIndex(\n (m) => m.role === MessageRole.assistant && m.type === 'TextMessage',\n );\n const newMessages = [...prevMessages];\n if (lastAIMsgIndex !== -1) {\n const realIndex = newMessages.length - 1 - lastAIMsgIndex;\n newMessages.splice(realIndex, 1);\n }\n\n // 2. 若存在对话建议,先删除对话建议\n const suggestMessageIndex = messages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex !== -1) {\n newMessages.splice(suggestMessageIndex, 1);\n }\n\n // 3. 找到最新一条用户消息,且类型为 TextMessage\n const lastUserMsg = [...newMessages].reverse().find(\n (m) => m.role === MessageRole.user && m.type === 'TextMessage',\n ) as TextMessage | undefined;\n if (lastUserMsg && lastUserMsg.content && typeof lastUserMsg.content.text === 'string') {\n // 重新发起 chat\n chat(lastUserMsg.content.text);\n }\n\n return newMessages;\n });\n };\n\n const stopChat = () => {\n stop();\n setMessages((prevMessages) => {\n // 找到我所有进行中的消息,并设置为结束\n const newMessages = [...prevMessages];\n newMessages.forEach((m) => {\n if (m.status === MessageStatus.pending) {\n m.status = MessageStatus.done;\n } else if (m.status === MessageStatus.init) {\n if (m.type === 'TextMessage') {\n m.content.text = '<span style=\"color: #cbcbcb;\">用户已取消</span>';\n }\n m.status = MessageStatus.done;\n }\n });\n return newMessages;\n });\n };\n\n // 初始化应用\n useEffect(() => {\n if (appInfo) {\n const { onboardingInfo = {} } = appInfo;\n // eslint-disable-next-line camelcase\n const { suggested_questions = [], prologue = '' } = onboardingInfo || {};\n\n if (prologue) {\n setMessage('prologue', prologue);\n } else {\n setMessages((prev) => prev.filter((item) => !item.extra?.prologue));\n }\n\n if (suggested_questions.length > 0) {\n const suggestMessages = suggested_questions.map((item: string, index: number) => ({\n key: index + 1,\n description: item,\n }));\n setMessage('suggest', suggestMessages);\n } else {\n setMessages((prev) => prev.filter((item) => !(item.type === 'SuggestionMessage')));\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [appInfo]);\n\n return {\n appInfo,\n messages,\n loading,\n content: responseData.content,\n reChat,\n chat,\n setMessage,\n setMessages,\n stopChat,\n };\n};\n\nexport default useAgentGenerator;\n"],"mappings":"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"}
1
+ {"version":3,"names":["useState","useEffect","useRef","v4","uuidV4","useEventStreamRequest","MessageRole","MessageStatus","ErrorCode","request","safeJsonParse","fetchAppConfig","documentIcon","completedIcon","completedExpandIcon","documentExpandIcon","qaIcon","qaExpandIcon","skillNoIcon","skillNoExpandIcon","toolIcon","toolExpandIcon","ActionType","ProcessStatus","ActionAvailability","useAgentGenerator","_ref","url","token","config","onError","onSuccess","textSpeed","_useState","_useState2","_slicedToArray","messages","setMessages","_useState3","_useState4","appInfo","setAppInfo","requestInfo","_ref2","appNo","pt","tc","initConfig","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","result","_result$data","_ref4","enableFlag","isDeleted","wrap","_callee$","_context","prev","next","_objectSpread","sent","success","data","publishDTO","code","APP_NOT_ENABLE","message","APP_DELETED","APP_NOT_FOUND","t0","console","error","API_ERROR","stop","apply","arguments","_useEventStreamReques","streaming","onClose","setTimeout","_requestInfo$current","_requestInfo$current2","current","sensitiveWords","requestId","post","onOpen","res","log","start","loading","responseData","content","response","action","contentType","errorMsg","prevMessages","newMessages","_toConsumableArray","_response","uniqueId","toolType","args","knowledgeType","_data$success","suggest","suggestMessageIndex","findIndex","item","type","newMessage","id","createdAt","Date","status","done","role","suggestion","key","description","push","suggestMsg","lastAIMsgIndex","reverse","m","assistant","realIndex","length","lastAIMsg","aiMsg","text","thinks","init","undefined","recallKnowledgeStart","name","extra","icon","expandIcon","recallKnowledgeEnd","_aiMsg$thinks","recallKnowledgeMsg","find","cost","toFixed","invokeToolStart","invokeToolEnd","_aiMsg$thinks2","invokeToolMsg","pending","failed","concat","finish","setMessage","_ref5","_callee2","messageType","prologueMessageIndex","_prologueMessageIndex","_newMessage","_callee2$","_context2","_item$extra","prologue","noFooter","map","_item$extra2","abrupt","_item$extra3","splice","_x","_x2","chat","_ref6","_callee3","_callee3$","_context3","user","appParams","inputs_msg","Authorization","_x3","reChat","lastUserMsg","stopChat","forEach","_appInfo$onboardingIn","onboardingInfo","_ref7","_ref7$suggested_quest","suggested_questions","_ref7$prologue","filter","_item$extra4","formatSuggests","suggestMessages","index"],"sources":["../../../src/hooks/useAgentGenerator.ts"],"sourcesContent":["import { useState, useEffect, useRef } from 'react';\nimport { v4 as uuidV4 } from 'uuid';\nimport { useEventStreamRequest } from '@/hooks/useEventStreamRequest';\nimport { MessageRole, MessageStatus, TextMessage, SuggestionMessage, Messages } from '@/types/XAiMessage';\nimport { Error, ErrorCode } from '@/types/XAiProvider';\nimport { request } from '@/utils/request';\nimport { safeJsonParse } from '@/utils/index';\nimport { fetchAppConfig } from '@/services/api';\n// 图标\nimport documentIcon from '@/assets/document.png';\nimport completedIcon from '@/assets/completed.png';\nimport completedExpandIcon from '@/assets/completed-black.png';\nimport documentExpandIcon from '@/assets/document-black.png';\nimport qaIcon from '@/assets/qa.png';\nimport qaExpandIcon from '@/assets/qa-black.png';\nimport skillNoIcon from '@/assets/skillNo.png';\nimport skillNoExpandIcon from '@/assets/skillNo-black.png';\nimport toolIcon from '@/assets/tools.png';\nimport toolExpandIcon from '@/assets/tools-black.png';\n\nexport type ContentType = 'TEXT' | 'IMAGE' | 'FILE';\n\nexport interface ImageUrl {\n url: string;\n name: string;\n}\n\nexport interface FileUrl {\n url: string;\n fileName: string;\n suffix: string;\n}\n\nexport interface Content {\n text?: string;\n imageUrl?: ImageUrl;\n fileUrl?: FileUrl;\n}\n\nexport interface ContentDef {\n description: string;\n contentType: ContentType;\n content: Content;\n}\n// contents 类型\nexport type Contents = ContentDef[];\n\n// —————————————— 接口字段定义 ————————————\nexport enum ActionType {\n recallKnowledgeStart = 'RECALL_KNOWLEDGE_START', // 知识库召回开始\n recallKnowledgeEnd = 'RECALL_KNOWLEDGE_END', // 知识库召回结束\n invokeToolStart = 'INVOKE_AGENT_TOOL_START', // 开始调用工具\n invokeToolEnd = 'INVOKE_AGENT_TOOL_END', // 调用工具完成\n suggest = 'FOLLOW_UP', // 用户提示\n response = 'RESPONSE', // 响应\n finish = 'FINISHED', // 结束\n}\n\nexport enum ProcessStatus {\n start = 'START',\n end = 'END',\n}\n\nexport enum ActionAvailability {\n disabled = 'disabled', // 不可用\n enabled = 'enabled', // 可用\n remote = 'remote', // 远程可用\n}\n\nexport type ThinkStep = any; // 临时定义,后续可完善\n\n/**\n* 工具/动作定义\n*/\nexport interface Action {\n name: string; // 名称\n description: string; // 描述\n jsonSchema: string; // 参数JSON Schema\n available?: ActionAvailability; // 可用性\n error?: Error; // 错误信息\n}\n\nexport interface UseAgentGeneratorProps {\n url: string;\n token: string;\n config: any;\n onError?: (error: Error) => void;\n onSuccess?: (appInfo: any) => void;\n}\nconst useAgentGenerator = ({\n url,\n token,\n config,\n onError,\n onSuccess,\n}: UseAgentGeneratorProps) => {\n const textSpeed = 60;\n\n const [messages, setMessages] = useState<Messages[]>([]);\n const [appInfo, setAppInfo] = useState<any>(null);\n const requestInfo = useRef<{ requestId?: string; sensitiveWords?: string[] }>({});\n\n const { appNo, pt, tc } = config || {};\n\n // 初始化时获取配置\n useEffect(() => {\n if (url && config) {\n const initConfig = async () => {\n try {\n const result = await fetchAppConfig({ url, ...config });\n if (result.success) {\n setAppInfo(result.data);\n\n const { enableFlag, isDeleted } = result.data?.publishDTO || {};\n if (!enableFlag) {\n onError?.({\n code: ErrorCode.APP_NOT_ENABLE,\n message: '应用未启用或者已下架',\n });\n } else if (isDeleted === 'Y') {\n onError?.({\n code: ErrorCode.APP_DELETED,\n message: '应用已下架',\n });\n } else {\n onSuccess?.(result.data);\n }\n } else {\n onError?.({\n code: ErrorCode.APP_NOT_FOUND,\n message: result?.message || '获取聊天配置失败',\n });\n }\n } catch (error) {\n console.error('获取聊天配置失败', error);\n onError?.({\n code: ErrorCode.API_ERROR,\n message: '获取聊天配置失败',\n });\n }\n };\n initConfig();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [url, config]);\n\n const { start, loading, responseData, stop } = useEventStreamRequest({\n streaming: true,\n textSpeed,\n onClose: () => {\n // close的时机有可能在setMessages之前,所以需要延迟一下\n setTimeout(() => {\n if (requestInfo.current?.sensitiveWords && requestInfo.current?.requestId) {\n request.post(url);\n }\n }, 500);\n },\n onOpen(res) {\n console.log('res-----open:', res);\n },\n });\n\n // 数据更新\n useEffect(() => {\n if (!responseData || !responseData.content || !responseData.data) return;\n\n let response = responseData.data || responseData.content;\n if (typeof response === 'string') {\n response = safeJsonParse(response, {\n action: ActionType.response,\n data: {\n contentType: 'TEXT',\n content: '解析响应数据时出错,请重试',\n success: false,\n errorMsg: '响应数据格式错误',\n },\n });\n }\n\n setMessages((prevMessages) => {\n let newMessages = [...prevMessages];\n // 消息类型判断\n const { action, data } = response;\n const { uniqueId, contentType, content, toolType, args, knowledgeType, success = true, errorMsg } = data;\n\n // 建议类信息 特殊处理\n if (action === ActionType.suggest) {\n const suggestMessageIndex = messages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex === -1) {\n const newMessage: SuggestionMessage = {\n id: uuidV4(),\n type: 'SuggestionMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.suggestion,\n content: [{\n key: uuidV4(),\n description: content,\n }],\n };\n newMessages.push(newMessage);\n } else {\n const suggestMsg = newMessages[suggestMessageIndex] as SuggestionMessage;\n if (suggestMsg?.content) {\n suggestMsg.content.push({\n key: uuidV4(),\n description: content,\n });\n }\n }\n return newMessages;\n }\n\n // 找到最后一条 AI 消息\n const lastAIMsgIndex = [...prevMessages].reverse().findIndex(\n (m) => m.role === MessageRole.assistant && m.type === 'TextMessage' && (m.status === 'init' || m.status === 'pending'),\n );\n const realIndex = lastAIMsgIndex === -1 ? -1 : prevMessages.length - 1 - lastAIMsgIndex;\n const lastAIMsg = realIndex !== -1 ? prevMessages[realIndex] : null;\n\n let aiMsg: TextMessage | undefined;\n\n if (!lastAIMsg) {\n aiMsg = {\n id: uuidV4(),\n type: 'TextMessage',\n createdAt: new Date(),\n role: MessageRole.assistant,\n content: { text: '' },\n thinks: [],\n status: MessageStatus.init,\n };\n newMessages.push(aiMsg);\n } else if (lastAIMsg.type === 'TextMessage') {\n aiMsg = { ...lastAIMsg };\n } else if (lastAIMsg.type === 'ImageMessage') {\n aiMsg = undefined;\n }\n\n // 如果 aiMsg 为 undefined,则跳过处理\n if (!aiMsg) {\n return newMessages;\n }\n\n switch (action) {\n case ActionType.recallKnowledgeStart:\n aiMsg.thinks = aiMsg.thinks || [];\n aiMsg.thinks.push({\n id: uniqueId,\n createdAt: new Date(),\n type: 'ActionExecutionMessage',\n name: knowledgeType === 'DOCUMENT' ? '已搜索文档知识库' : '已搜索问答知识库',\n arguments: args,\n extra: {\n ...data,\n icon: knowledgeType === 'DOCUMENT' ? documentIcon : qaIcon,\n expandIcon: knowledgeType === 'DOCUMENT' ? documentExpandIcon : qaExpandIcon,\n },\n });\n break;\n case ActionType.recallKnowledgeEnd: {\n // 需要给之前的recallKnowledgeStart添加cost - 通过uniqueId关联\n const recallKnowledgeMsg = aiMsg.thinks?.find((item) => item.id === uniqueId);\n if (recallKnowledgeMsg) {\n recallKnowledgeMsg.extra.cost = data?.cost ? (data?.cost / 1000).toFixed(2) : 0;\n }\n break;\n }\n case ActionType.invokeToolStart:\n aiMsg.thinks = aiMsg.thinks || [];\n aiMsg.thinks.push({\n id: uniqueId,\n createdAt: new Date(),\n type: 'ActionExecutionMessage',\n name: toolType === 'SKILL' ? '已调用工作流' : '已调用工具',\n arguments: args,\n extra: {\n ...data,\n icon: toolType === 'SKILL' ? skillNoIcon : toolIcon,\n expandIcon: toolType === 'SKILL' ? skillNoExpandIcon : toolExpandIcon,\n },\n });\n break;\n case ActionType.invokeToolEnd: {\n // 需要给之前的invokeToolStart添加cost - 通过uniqueId关联\n const invokeToolMsg = aiMsg.thinks?.find((item) => item.id === uniqueId);\n if (invokeToolMsg) {\n invokeToolMsg.extra.cost = data?.cost ? (data?.cost / 1000).toFixed(2) : 0;\n }\n break;\n }\n case ActionType.response:\n if (success) {\n // 正常渲染\n if (aiMsg.status === MessageStatus.init) {\n aiMsg.status = MessageStatus.pending;\n }\n if (contentType === 'TEXT' && 'text' in aiMsg.content) {\n aiMsg.content.text += content;\n }\n } else {\n // 调用失败\n aiMsg.status = MessageStatus.failed;\n aiMsg.content.text = `<span style=\"color: red;\">❌ ${errorMsg}</span>`;\n }\n break;\n case ActionType.finish:\n aiMsg.thinks = aiMsg.thinks || [];\n aiMsg.thinks.push({\n id: uniqueId,\n createdAt: new Date(),\n type: 'ActionExecutionMessage',\n name: '运行完毕',\n extra: {\n ...data,\n cost: data?.cost ? (data?.cost / 1000).toFixed(2) : 0,\n icon: completedIcon,\n expandIcon: completedExpandIcon,\n },\n });\n aiMsg.status = MessageStatus.done;\n break;\n // 其他类型略\n }\n\n // 更新消息数组\n if (lastAIMsg && lastAIMsg.type === 'TextMessage') {\n newMessages[realIndex] = aiMsg;\n } else if (!lastAIMsg) {\n // 只有 newMessages 最后一条是 TextMessage 时才替换,否则 push\n if (newMessages.length > 0 && newMessages[newMessages.length - 1].type === 'TextMessage') {\n newMessages[newMessages.length - 1] = aiMsg;\n } else {\n // 只 push TextMessage,不替换非 TextMessage\n newMessages = [...newMessages, aiMsg];\n }\n }\n return newMessages;\n });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [responseData]);\n\n // 添加对话(非普通对话)\n const setMessage = async (messageType: string, content: any) => {\n switch (messageType) {\n case 'prologue': {\n const prologueMessageIndex = messages.findIndex((item) => item.extra?.prologue);\n if (prologueMessageIndex === -1) {\n const newMessage: Messages = {\n type: 'TextMessage',\n id: uuidV4(),\n createdAt: new Date(),\n role: MessageRole.assistant,\n status: MessageStatus.done,\n content: {\n text: content,\n },\n extra: {\n prologue: true,\n noFooter: true,\n },\n };\n setMessages((prev) => [newMessage, ...prev]);\n } else {\n setMessages((prev) => prev.map((item) => {\n if (item.extra?.prologue && item.content && 'text' in item.content) {\n item.content.text = content;\n }\n return item;\n }));\n }\n break;\n }\n case 'suggest': {\n const suggestMessageIndex = messages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex === -1) {\n const prologueMessageIndex = messages.findIndex((item) => item.extra?.prologue);\n const newMessage: Messages = {\n id: uuidV4(),\n type: 'SuggestionMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.suggestion,\n content,\n };\n if (prologueMessageIndex === -1) {\n // 如果没有开场白,则插入到最前面\n setMessages((prev) => [newMessage, ...prev]);\n } else {\n // 如果有开场白,则插到开场白后面\n setMessages((prev) => {\n const newMessages = [...prev];\n newMessages.splice(prologueMessageIndex + 1, 0, newMessage);\n return newMessages;\n });\n }\n } else {\n setMessages((prev) => prev.map((item) => {\n if (item.type === 'SuggestionMessage') {\n item.content = content;\n }\n return item;\n }));\n }\n break;\n }\n default:\n break;\n }\n };\n\n // 简单对话\n const chat = async (content: any) => {\n const newMessage: Messages = {\n type: 'TextMessage',\n id: uuidV4(),\n createdAt: new Date(),\n role: MessageRole.user,\n status: MessageStatus.done,\n content: {\n text: content,\n },\n };\n\n setMessages((prev) => {\n // 若存在对话建议,先删除对话建议\n const suggestMessageIndex = messages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex !== -1) {\n prev.splice(suggestMessageIndex, 1);\n }\n // 插入用户消息\n prev.push(newMessage);\n return prev;\n });\n\n start(\n `${url}/appouter/${appNo}/sendMsg?pt=${pt}&tc=${tc}`,\n {\n appParams: {\n inputs_msg: content,\n },\n },\n {\n Authorization: `Bearer ${token}`,\n },\n );\n };\n\n // 重新生成方法\n const reChat = () => {\n setMessages((prevMessages) => {\n // 1. 删除最新一条 AI 消息\n const lastAIMsgIndex = [...prevMessages].reverse().findIndex(\n (m) => m.role === MessageRole.assistant && m.type === 'TextMessage',\n );\n const newMessages = [...prevMessages];\n if (lastAIMsgIndex !== -1) {\n const realIndex = newMessages.length - 1 - lastAIMsgIndex;\n newMessages.splice(realIndex, 1);\n }\n\n // 2. 若存在对话建议,先删除对话建议\n const suggestMessageIndex = messages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex !== -1) {\n newMessages.splice(suggestMessageIndex, 1);\n }\n\n // 3. 找到最新一条用户消息,且类型为 TextMessage\n const lastUserMsg = [...newMessages].reverse().find(\n (m) => m.role === MessageRole.user && m.type === 'TextMessage',\n ) as TextMessage | undefined;\n if (lastUserMsg && lastUserMsg.content && typeof lastUserMsg.content.text === 'string') {\n // 重新发起 chat\n chat(lastUserMsg.content.text);\n }\n\n return newMessages;\n });\n };\n\n const stopChat = () => {\n stop();\n setMessages((prevMessages) => {\n // 找到我所有进行中的消息,并设置为结束\n const newMessages = [...prevMessages];\n newMessages.forEach((m) => {\n if (m.status === MessageStatus.pending) {\n m.status = MessageStatus.done;\n } else if (m.status === MessageStatus.init) {\n if (m.type === 'TextMessage') {\n m.content.text = '<span style=\"color: #cbcbcb;\">用户已取消</span>';\n }\n m.status = MessageStatus.done;\n }\n });\n return newMessages;\n });\n };\n\n // 初始化应用\n useEffect(() => {\n if (appInfo) {\n const { onboardingInfo = {} } = appInfo;\n // eslint-disable-next-line camelcase\n const { suggested_questions = [], prologue = '' } = onboardingInfo || {};\n\n if (prologue) {\n setMessage('prologue', prologue);\n } else {\n setMessages((prev) => prev.filter((item) => !item.extra?.prologue));\n }\n\n // 过滤空内容\n const formatSuggests = suggested_questions.filter((item: string) => item);\n\n if (formatSuggests.length > 0) {\n const suggestMessages = formatSuggests.map((item: string, index: number) => ({\n key: index + 1,\n description: item,\n }));\n setMessage('suggest', suggestMessages);\n } else {\n setMessages((prev) => prev.filter((item) => !(item.type === 'SuggestionMessage')));\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [appInfo]);\n\n return {\n appInfo,\n messages,\n loading,\n content: responseData.content,\n reChat,\n chat,\n setMessage,\n setMessages,\n stopChat,\n };\n};\n\nexport default useAgentGenerator;\n"],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ interface IResponseData {
2
+ code: string;
3
+ httpCode?: number;
4
+ data: string | {
5
+ message: string;
6
+ };
7
+ message: string;
8
+ content: string;
9
+ requestId: string;
10
+ sessionId: string;
11
+ error?: boolean;
12
+ success?: boolean;
13
+ }
14
+ interface UseEventStreamProps {
15
+ streaming: boolean;
16
+ options?: RequestInit;
17
+ onOpen?: (response: Response) => void;
18
+ onError?: (error: Error) => void;
19
+ onClose?: () => void;
20
+ textSpeed?: number;
21
+ }
22
+ interface UseEventStreamReturn {
23
+ responseData: IResponseData | Record<any, any>;
24
+ loading: boolean;
25
+ start: (url: string, values?: any, headers?: Record<string, string>) => void;
26
+ stop: () => void;
27
+ onError?: (error: Error) => void;
28
+ }
29
+ export declare const useEventStreamRequest: ({ onOpen, onError, streaming, onClose, textSpeed, }: UseEventStreamProps) => UseEventStreamReturn;
30
+ export default useEventStreamRequest;
@@ -0,0 +1,33 @@
1
+ import type { XAiContextType } from "../context/AiProviderContext";
2
+ export interface UseProviderContextOptions<T> {
3
+ props: T;
4
+ providerProps?: (keyof XAiContextType)[];
5
+ mergeLogic?: (props: T, context: XAiContextType | undefined) => T;
6
+ }
7
+ export interface UseProviderContextReturn<T> {
8
+ mergedProps: T;
9
+ isInProvider: boolean;
10
+ context: XAiContextType | undefined;
11
+ getProviderValue: <K extends keyof XAiContextType>(key: K) => XAiContextType[K] | undefined;
12
+ }
13
+ export type MethodCaller<T extends any[] = any[], R = any> = (...args: T) => R;
14
+ export interface ProviderMethods {
15
+ isInProvider: boolean;
16
+ sendMessage: MethodCaller<[string], void>;
17
+ stopGeneration: MethodCaller<[], void>;
18
+ clearMessages: MethodCaller<[], void>;
19
+ regenerateLastMessage: MethodCaller<[string], void>;
20
+ }
21
+ /**
22
+ * 通用的 Provider 上下文 Hook
23
+ * 用于判断组件是否在 XAiProvider 中,并合并相关属性
24
+ */
25
+ export declare const useProviderContext: <T extends Record<string, any>>(options: UseProviderContextOptions<T>) => UseProviderContextReturn<T>;
26
+ /**
27
+ * 专门为 XAiChatbot 设计的 Hook
28
+ */
29
+ export declare const useChatbotContext: (componentProps: any) => UseProviderContextReturn<any>;
30
+ /**
31
+ * 通用的 Provider 方法调用 Hook
32
+ */
33
+ export declare const useProviderMethods: () => ProviderMethods;
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import { XAiProviderProps } from "../types/XAiProvider";
3
+ export interface UseXAiSDKOptions extends XAiProviderProps {
4
+ containerId?: string;
5
+ width?: string | number;
6
+ height?: string | number;
7
+ className?: string;
8
+ style?: React.CSSProperties;
9
+ }
10
+ export declare const useXAiSDK: (options: UseXAiSDKOptions) => {
11
+ containerRef: React.RefObject<HTMLDivElement | null>;
12
+ render: () => import("react/jsx-runtime").JSX.Element;
13
+ };
14
+ export default useXAiSDK;
@@ -0,0 +1,9 @@
1
+ import { useXAi } from './context/AiProviderContext';
2
+ import XAiProvider from './components/XAiProvider';
3
+ import XAiChatbot from './components/XAiChatbot';
4
+ import XAiSDK from './components/XAiSDK';
5
+ import XAiWebSDKWrapper from './components/XAiWebSDKWrapper';
6
+ import useXAiSDK from './hooks/useXAiSDK';
7
+ import request from './utils/request';
8
+ export * from './types';
9
+ export { useXAi, XAiProvider, XAiChatbot, XAiSDK, XAiWebSDKWrapper, useXAiSDK, request, };
@@ -0,0 +1,69 @@
1
+ export interface ServerApiResponse<T = unknown> {
2
+ data: T;
3
+ code: string;
4
+ success: boolean;
5
+ message: string;
6
+ serverTime: number;
7
+ traceId: string;
8
+ }
9
+ export interface ApiResponse<T> {
10
+ success: boolean;
11
+ data: T;
12
+ message?: string;
13
+ code?: string;
14
+ }
15
+ export interface ChatConfig {
16
+ botNo: string;
17
+ appNo: string;
18
+ appName: string;
19
+ appTheme: string;
20
+ description: string;
21
+ icon: string;
22
+ onboardingInfo: {
23
+ prologue: string;
24
+ suggested_questions: string[];
25
+ };
26
+ appVersionNo: string;
27
+ publishDTO: {
28
+ id: number;
29
+ tenantId: string;
30
+ botNo: string;
31
+ publishNo: string;
32
+ publishTime: string;
33
+ publishVersionNo: string;
34
+ publishVersionDesc: string;
35
+ publishAppType: string;
36
+ platformConfigInfo: string;
37
+ appNo: string;
38
+ appVersionNo: string;
39
+ gmtCreated: string;
40
+ enableFlag: number;
41
+ gmtModified: string;
42
+ creator: string;
43
+ modifier: string;
44
+ isDeleted: string;
45
+ authLoginInfoDTO: Record<string, unknown>;
46
+ shareLink: string;
47
+ };
48
+ }
49
+ /**
50
+ * 获取聊天配置
51
+ * 使用request,会自动添加token
52
+ */
53
+ export declare const fetchAppConfig: ({ url, appNo, pt, tc }: {
54
+ url: string;
55
+ appNo: string;
56
+ pt: string;
57
+ tc: string;
58
+ }) => Promise<ApiResponse<ChatConfig>>;
59
+ /**
60
+ * 获取聊天配置
61
+ * 使用request,会自动添加token
62
+ */
63
+ export declare const sendMessage: ({ url, appNo, pt, tc, msg }: {
64
+ url: string;
65
+ appNo: string;
66
+ pt: string;
67
+ tc: string;
68
+ msg: string;
69
+ }) => Promise<ApiResponse<ChatConfig>>;
@@ -1 +1 @@
1
- {"version":3,"names":["request","fetchAppConfig","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_ref","url","appNo","pt","tc","response","wrap","_callee$","_context","prev","next","post","concat","params","sent","abrupt","data","stop","_x","apply","arguments","sendMessage","_ref4","_callee2","_ref3","msg","_callee2$","_context2","_x2"],"sources":["../../../src/services/api.ts"],"sourcesContent":["import { request } from '@/utils/request';\n\n// 服务端API响应接口\nexport interface ServerApiResponse<T = unknown> {\n data: T;\n code: string;\n success: boolean;\n message: string;\n serverTime: number;\n traceId: string;\n}\n\n// 标准API响应类型\nexport interface ApiResponse<T> {\n success: boolean;\n data: T;\n message?: string;\n code?: string;\n}\n\n// 聊天配置类型\nexport interface ChatConfig {\n id: string;\n name: string;\n settings: Record<string, unknown>;\n}\n\n/**\n * 获取聊天配置\n * 使用request,会自动添加token\n */\nexport const fetchAppConfig = async ({ url, appNo, pt, tc }: { url: string; appNo: string; pt: string; tc: string }): Promise<ApiResponse<ChatConfig>> => {\n const response = await request.post<ApiResponse<ChatConfig>>(`${url}/appouter/config/${appNo}/initApp`, {}, {\n params: {\n pt, tc,\n },\n });\n return response.data;\n};\n\n/**\n * 获取聊天配置\n * 使用request,会自动添加token\n */\nexport const sendMessage = async ({ url, appNo, pt, tc, msg }: { url: string; appNo: string; pt: string; tc: string; msg: string }): Promise<ApiResponse<ChatConfig>> => {\n const response = await request.post<ApiResponse<ChatConfig>>(`${url}/appouter/${appNo}/sendMsg`, {\n pt, tc, msg,\n });\n return response.data;\n};\n"],"mappings":";;AAAA,SAASA,OAAO;;AAEhB;;AAUA;;AAQA;;AAOA;AACA;AACA;AACA;AACA,OAAO,IAAMC,cAAc;EAAA,IAAAC,KAAA,GAAAC,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAC,QAAAC,IAAA;IAAA,IAAAC,GAAA,EAAAC,KAAA,EAAAC,EAAA,EAAAC,EAAA,EAAAC,QAAA;IAAA,OAAAR,mBAAA,GAAAS,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAAST,GAAG,GAAAD,IAAA,CAAHC,GAAG,EAAEC,KAAK,GAAAF,IAAA,CAALE,KAAK,EAAEC,EAAE,GAAAH,IAAA,CAAFG,EAAE,EAAEC,EAAE,GAAAJ,IAAA,CAAFI,EAAE;UAAAI,QAAA,CAAAE,IAAA;UAAA,OAChCjB,OAAO,CAACkB,IAAI,IAAAC,MAAA,CAA6BX,GAAG,uBAAAW,MAAA,CAAoBV,KAAK,eAAY,CAAC,CAAC,EAAE;YAC1GW,MAAM,EAAE;cACNV,EAAE,EAAFA,EAAE;cAAEC,EAAE,EAAFA;YACN;UACF,CAAC,CAAC;QAAA;UAJIC,QAAQ,GAAAG,QAAA,CAAAM,IAAA;UAAA,OAAAN,QAAA,CAAAO,MAAA,WAKPV,QAAQ,CAACW,IAAI;QAAA;QAAA;UAAA,OAAAR,QAAA,CAAAS,IAAA;MAAA;IAAA,GAAAlB,OAAA;EAAA,CACrB;EAAA,gBAPYL,cAAcA,CAAAwB,EAAA;IAAA,OAAAvB,KAAA,CAAAwB,KAAA,OAAAC,SAAA;EAAA;AAAA,GAO1B;;AAED;AACA;AACA;AACA;AACA,OAAO,IAAMC,WAAW;EAAA,IAAAC,KAAA,GAAA1B,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAyB,SAAAC,KAAA;IAAA,IAAAvB,GAAA,EAAAC,KAAA,EAAAC,EAAA,EAAAC,EAAA,EAAAqB,GAAA,EAAApB,QAAA;IAAA,OAAAR,mBAAA,GAAAS,IAAA,UAAAoB,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAlB,IAAA,GAAAkB,SAAA,CAAAjB,IAAA;QAAA;UAAST,GAAG,GAAAuB,KAAA,CAAHvB,GAAG,EAAEC,KAAK,GAAAsB,KAAA,CAALtB,KAAK,EAAEC,EAAE,GAAAqB,KAAA,CAAFrB,EAAE,EAAEC,EAAE,GAAAoB,KAAA,CAAFpB,EAAE,EAAEqB,GAAG,GAAAD,KAAA,CAAHC,GAAG;UAAAE,SAAA,CAAAjB,IAAA;UAAA,OAClCjB,OAAO,CAACkB,IAAI,IAAAC,MAAA,CAA6BX,GAAG,gBAAAW,MAAA,CAAaV,KAAK,eAAY;YAC/FC,EAAE,EAAFA,EAAE;YAAEC,EAAE,EAAFA,EAAE;YAAEqB,GAAG,EAAHA;UACV,CAAC,CAAC;QAAA;UAFIpB,QAAQ,GAAAsB,SAAA,CAAAb,IAAA;UAAA,OAAAa,SAAA,CAAAZ,MAAA,WAGPV,QAAQ,CAACW,IAAI;QAAA;QAAA;UAAA,OAAAW,SAAA,CAAAV,IAAA;MAAA;IAAA,GAAAM,QAAA;EAAA,CACrB;EAAA,gBALYF,WAAWA,CAAAO,GAAA;IAAA,OAAAN,KAAA,CAAAH,KAAA,OAAAC,SAAA;EAAA;AAAA,GAKvB"}
1
+ {"version":3,"names":["request","fetchAppConfig","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_ref","url","appNo","pt","tc","response","wrap","_callee$","_context","prev","next","post","concat","params","sent","abrupt","data","stop","_x","apply","arguments","sendMessage","_ref4","_callee2","_ref3","msg","_callee2$","_context2","_x2"],"sources":["../../../src/services/api.ts"],"sourcesContent":["import { request } from '@/utils/request';\n\n// 服务端API响应接口\nexport interface ServerApiResponse<T = unknown> {\n data: T;\n code: string;\n success: boolean;\n message: string;\n serverTime: number;\n traceId: string;\n}\n\n// 标准API响应类型\nexport interface ApiResponse<T> {\n success: boolean;\n data: T;\n message?: string;\n code?: string;\n}\n\n// 聊天配置类型\nexport interface ChatConfig {\n botNo: string;\n appNo: string;\n appName: string;\n appTheme: string;\n description: string;\n icon: string;\n onboardingInfo: {\n prologue: string;\n suggested_questions: string[];\n };\n appVersionNo: string;\n publishDTO: {\n id: number;\n tenantId: string;\n botNo: string;\n publishNo: string;\n publishTime: string;\n publishVersionNo: string;\n publishVersionDesc: string;\n publishAppType: string;\n platformConfigInfo: string;\n appNo: string;\n appVersionNo: string;\n gmtCreated: string;\n enableFlag: number;\n gmtModified: string;\n creator: string;\n modifier: string;\n isDeleted: string;\n authLoginInfoDTO: Record<string, unknown>;\n shareLink: string;\n };\n}\n\n/**\n * 获取聊天配置\n * 使用request,会自动添加token\n */\nexport const fetchAppConfig = async ({ url, appNo, pt, tc }: { url: string; appNo: string; pt: string; tc: string }): Promise<ApiResponse<ChatConfig>> => {\n const response = await request.post<ApiResponse<ChatConfig>>(`${url}/appouter/config/${appNo}/initApp`, {}, {\n params: {\n pt, tc,\n },\n });\n return response.data;\n};\n\n/**\n * 获取聊天配置\n * 使用request,会自动添加token\n */\nexport const sendMessage = async ({ url, appNo, pt, tc, msg }: { url: string; appNo: string; pt: string; tc: string; msg: string }): Promise<ApiResponse<ChatConfig>> => {\n const response = await request.post<ApiResponse<ChatConfig>>(`${url}/appouter/${appNo}/sendMsg`, {\n pt, tc, msg,\n });\n return response.data;\n};\n"],"mappings":";;AAAA,SAASA,OAAO;;AAEhB;;AAUA;;AAQA;;AAoCA;AACA;AACA;AACA;AACA,OAAO,IAAMC,cAAc;EAAA,IAAAC,KAAA,GAAAC,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAC,QAAAC,IAAA;IAAA,IAAAC,GAAA,EAAAC,KAAA,EAAAC,EAAA,EAAAC,EAAA,EAAAC,QAAA;IAAA,OAAAR,mBAAA,GAAAS,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAAST,GAAG,GAAAD,IAAA,CAAHC,GAAG,EAAEC,KAAK,GAAAF,IAAA,CAALE,KAAK,EAAEC,EAAE,GAAAH,IAAA,CAAFG,EAAE,EAAEC,EAAE,GAAAJ,IAAA,CAAFI,EAAE;UAAAI,QAAA,CAAAE,IAAA;UAAA,OAChCjB,OAAO,CAACkB,IAAI,IAAAC,MAAA,CAA6BX,GAAG,uBAAAW,MAAA,CAAoBV,KAAK,eAAY,CAAC,CAAC,EAAE;YAC1GW,MAAM,EAAE;cACNV,EAAE,EAAFA,EAAE;cAAEC,EAAE,EAAFA;YACN;UACF,CAAC,CAAC;QAAA;UAJIC,QAAQ,GAAAG,QAAA,CAAAM,IAAA;UAAA,OAAAN,QAAA,CAAAO,MAAA,WAKPV,QAAQ,CAACW,IAAI;QAAA;QAAA;UAAA,OAAAR,QAAA,CAAAS,IAAA;MAAA;IAAA,GAAAlB,OAAA;EAAA,CACrB;EAAA,gBAPYL,cAAcA,CAAAwB,EAAA;IAAA,OAAAvB,KAAA,CAAAwB,KAAA,OAAAC,SAAA;EAAA;AAAA,GAO1B;;AAED;AACA;AACA;AACA;AACA,OAAO,IAAMC,WAAW;EAAA,IAAAC,KAAA,GAAA1B,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAyB,SAAAC,KAAA;IAAA,IAAAvB,GAAA,EAAAC,KAAA,EAAAC,EAAA,EAAAC,EAAA,EAAAqB,GAAA,EAAApB,QAAA;IAAA,OAAAR,mBAAA,GAAAS,IAAA,UAAAoB,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAlB,IAAA,GAAAkB,SAAA,CAAAjB,IAAA;QAAA;UAAST,GAAG,GAAAuB,KAAA,CAAHvB,GAAG,EAAEC,KAAK,GAAAsB,KAAA,CAALtB,KAAK,EAAEC,EAAE,GAAAqB,KAAA,CAAFrB,EAAE,EAAEC,EAAE,GAAAoB,KAAA,CAAFpB,EAAE,EAAEqB,GAAG,GAAAD,KAAA,CAAHC,GAAG;UAAAE,SAAA,CAAAjB,IAAA;UAAA,OAClCjB,OAAO,CAACkB,IAAI,IAAAC,MAAA,CAA6BX,GAAG,gBAAAW,MAAA,CAAaV,KAAK,eAAY;YAC/FC,EAAE,EAAFA,EAAE;YAAEC,EAAE,EAAFA,EAAE;YAAEqB,GAAG,EAAHA;UACV,CAAC,CAAC;QAAA;UAFIpB,QAAQ,GAAAsB,SAAA,CAAAb,IAAA;UAAA,OAAAa,SAAA,CAAAZ,MAAA,WAGPV,QAAQ,CAACW,IAAI;QAAA;QAAA;UAAA,OAAAW,SAAA,CAAAV,IAAA;MAAA;IAAA,GAAAM,QAAA;EAAA,CACrB;EAAA,gBALYF,WAAWA,CAAAO,GAAA;IAAA,OAAAN,KAAA,CAAAH,KAAA,OAAAC,SAAA;EAAA;AAAA,GAKvB"}