@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.
- package/README.md +93 -214
- package/dist/cjs/assets/arrow-down.png +0 -0
- package/dist/cjs/assets/arrow-up.png +0 -0
- package/dist/cjs/assets/chatKnowledge.png +0 -0
- package/dist/cjs/assets/completed-black.png +0 -0
- package/dist/cjs/assets/completed.png +0 -0
- package/dist/cjs/assets/document-black.png +0 -0
- package/dist/cjs/assets/document.png +0 -0
- package/dist/cjs/assets/document.svg +16 -0
- package/dist/cjs/assets/empty.png +0 -0
- package/dist/cjs/assets/group.png +0 -0
- package/dist/cjs/assets/qa-black.png +0 -0
- package/dist/cjs/assets/qa.png +0 -0
- package/dist/cjs/assets/skillNo-black.png +0 -0
- package/dist/cjs/assets/skillNo.png +0 -0
- package/dist/cjs/assets/tools-black.png +0 -0
- package/dist/cjs/assets/tools.png +0 -0
- package/dist/cjs/assets/user.png +0 -0
- package/dist/cjs/client/base.d.ts +9 -0
- package/dist/cjs/client/base.js +18 -0
- package/dist/cjs/client/base.js.map +7 -0
- package/dist/cjs/client/restClient.d.ts +0 -0
- package/dist/cjs/client/restClient.js +1 -0
- package/dist/cjs/client/restClient.js.map +7 -0
- package/dist/cjs/client/wsClient.d.ts +0 -0
- package/dist/cjs/client/wsClient.js +1 -0
- package/dist/cjs/client/wsClient.js.map +7 -0
- package/dist/cjs/components/XAiChatbot/XAiChatbot.stories.d.ts +10 -0
- package/dist/cjs/components/XAiChatbot/XAiChatbot.stories.js +484 -0
- package/dist/cjs/components/XAiChatbot/XAiChatbot.stories.js.map +7 -0
- package/dist/cjs/components/XAiChatbot/index.d.ts +12 -0
- package/dist/cjs/components/XAiChatbot/index.js +365 -0
- package/dist/cjs/components/XAiChatbot/index.js.map +7 -0
- package/dist/cjs/components/XAiChatbot/styles.d.ts +72 -0
- package/dist/cjs/components/XAiChatbot/styles.js +426 -0
- package/dist/cjs/components/XAiChatbot/styles.js.map +7 -0
- package/dist/cjs/components/XAiProvider/XAiProvider.stories.d.ts +7 -0
- package/dist/cjs/components/XAiProvider/XAiProvider.stories.js +127 -0
- package/dist/cjs/components/XAiProvider/XAiProvider.stories.js.map +7 -0
- package/dist/cjs/components/XAiProvider/index.d.ts +4 -0
- package/dist/cjs/components/XAiProvider/index.js +115 -0
- package/dist/cjs/components/XAiProvider/index.js.map +7 -0
- package/dist/cjs/components/XAiSDK.d.ts +10 -0
- package/dist/cjs/components/XAiSDK.js +53 -0
- package/dist/cjs/components/XAiSDK.js.map +7 -0
- package/dist/cjs/components/XAiWebSDKWrapper.d.ts +9 -0
- package/dist/cjs/components/XAiWebSDKWrapper.js +70 -0
- package/dist/cjs/components/XAiWebSDKWrapper.js.map +7 -0
- package/dist/cjs/context/AiProviderContext.d.ts +12 -0
- package/dist/cjs/context/AiProviderContext.js +74 -0
- package/dist/cjs/context/AiProviderContext.js.map +7 -0
- package/dist/cjs/context/ThemeContext.d.ts +20 -0
- package/dist/cjs/context/ThemeContext.js +37 -0
- package/dist/cjs/context/ThemeContext.js.map +7 -0
- package/dist/cjs/hooks/useAgentGenerator.d.ts +72 -0
- package/dist/cjs/hooks/useAgentGenerator.js +487 -0
- package/dist/cjs/hooks/useAgentGenerator.js.map +7 -0
- package/dist/cjs/hooks/useEventStreamRequest.d.ts +30 -0
- package/dist/cjs/hooks/useEventStreamRequest.js +188 -0
- package/dist/cjs/hooks/useEventStreamRequest.js.map +7 -0
- package/dist/cjs/hooks/useProviderContext.d.ts +33 -0
- package/dist/cjs/hooks/useProviderContext.js +105 -0
- package/dist/cjs/hooks/useProviderContext.js.map +7 -0
- package/dist/cjs/hooks/useXAiSDK.d.ts +14 -0
- package/dist/cjs/hooks/useXAiSDK.js +75 -0
- package/dist/cjs/hooks/useXAiSDK.js.map +7 -0
- package/dist/cjs/index.d.ts +9 -0
- package/dist/cjs/index.js +61 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/services/api.d.ts +69 -0
- package/dist/cjs/services/api.js +49 -0
- package/dist/cjs/services/api.js.map +7 -0
- package/dist/cjs/styles/common.d.ts +64 -0
- package/dist/cjs/styles/common.js +144 -0
- package/dist/cjs/styles/common.js.map +7 -0
- package/dist/cjs/styles/markdown.d.ts +3 -0
- package/dist/cjs/styles/markdown.js +193 -0
- package/dist/cjs/styles/markdown.js.map +7 -0
- package/dist/cjs/types/XAiChatbot.d.ts +159 -0
- package/dist/cjs/types/XAiChatbot.js +18 -0
- package/dist/cjs/types/XAiChatbot.js.map +7 -0
- package/dist/cjs/types/XAiMessage.d.ts +121 -0
- package/dist/cjs/types/XAiMessage.js +55 -0
- package/dist/cjs/types/XAiMessage.js.map +7 -0
- package/dist/cjs/types/XAiProvider.d.ts +46 -0
- package/dist/cjs/types/XAiProvider.js +50 -0
- package/dist/cjs/types/XAiProvider.js.map +7 -0
- package/dist/cjs/types/index.d.ts +3 -0
- package/dist/cjs/types/index.js +28 -0
- package/dist/cjs/types/index.js.map +7 -0
- package/dist/cjs/types/mdx.d.ts +18 -0
- package/dist/cjs/utils/chat.d.ts +34 -0
- package/dist/cjs/utils/chat.js +1 -0
- package/dist/cjs/utils/chat.js.map +7 -0
- package/dist/cjs/utils/index.d.ts +2 -0
- package/dist/cjs/utils/index.js +49 -0
- package/dist/cjs/utils/index.js.map +7 -0
- package/dist/cjs/utils/providerManager.d.ts +22 -0
- package/dist/cjs/utils/providerManager.js +73 -0
- package/dist/cjs/utils/providerManager.js.map +7 -0
- package/dist/cjs/utils/request.d.ts +78 -0
- package/dist/cjs/utils/request.example.d.ts +39 -0
- package/dist/cjs/utils/request.example.js +211 -0
- package/dist/cjs/utils/request.example.js.map +7 -0
- package/dist/cjs/utils/request.js +231 -0
- package/dist/cjs/utils/request.js.map +7 -0
- package/dist/cjs/utils/umdEntry.d.ts +14 -0
- package/dist/cjs/utils/umdEntry.js +97 -0
- package/dist/cjs/utils/umdEntry.js.map +7 -0
- package/dist/esm/assets/user.png +0 -0
- package/dist/esm/client/base.d.ts +9 -0
- package/dist/esm/client/restClient.d.ts +0 -0
- package/dist/esm/client/wsClient.d.ts +0 -0
- package/dist/esm/components/XAiChatbot/XAiChatbot.stories.d.ts +10 -0
- package/dist/esm/components/XAiChatbot/index.d.ts +12 -0
- package/dist/esm/components/XAiChatbot/index.js +17 -11
- package/dist/esm/components/XAiChatbot/index.js.map +1 -1
- package/dist/esm/components/XAiChatbot/styles.d.ts +72 -0
- package/dist/esm/components/XAiChatbot/styles.js +37 -38
- package/dist/esm/components/XAiChatbot/styles.js.map +1 -1
- package/dist/esm/components/XAiProvider/XAiProvider.stories.d.ts +7 -0
- package/dist/esm/components/XAiProvider/index.d.ts +4 -0
- package/dist/esm/components/XAiProvider/index.js +8 -1
- package/dist/esm/components/XAiProvider/index.js.map +1 -1
- package/dist/esm/components/XAiSDK.d.ts +10 -0
- package/dist/esm/components/XAiWebSDKWrapper.d.ts +9 -0
- package/dist/esm/components/XAiWebSDKWrapper.js +4 -1
- package/dist/esm/components/XAiWebSDKWrapper.js.map +1 -1
- package/dist/esm/context/AiProviderContext.d.ts +12 -0
- package/dist/esm/context/ThemeContext.d.ts +20 -0
- package/dist/esm/hooks/useAgentGenerator.d.ts +72 -0
- package/dist/esm/hooks/useAgentGenerator.js +113 -39
- package/dist/esm/hooks/useAgentGenerator.js.map +1 -1
- package/dist/esm/hooks/useEventStreamRequest.d.ts +30 -0
- package/dist/esm/hooks/useProviderContext.d.ts +33 -0
- package/dist/esm/hooks/useXAiSDK.d.ts +14 -0
- package/dist/esm/index.d.ts +9 -0
- package/dist/esm/services/api.d.ts +69 -0
- package/dist/esm/services/api.js.map +1 -1
- package/dist/esm/styles/common.d.ts +64 -0
- package/dist/esm/styles/markdown.d.ts +3 -0
- package/dist/esm/types/XAiChatbot.d.ts +159 -0
- package/dist/esm/types/XAiMessage.d.ts +121 -0
- package/dist/esm/types/XAiProvider.d.ts +46 -0
- package/dist/esm/types/XAiProvider.js +7 -0
- package/dist/esm/types/XAiProvider.js.map +1 -1
- package/dist/esm/types/index.d.ts +3 -0
- package/dist/esm/utils/chat.d.ts +34 -0
- package/dist/esm/utils/index.d.ts +2 -0
- package/dist/esm/utils/providerManager.d.ts +22 -0
- package/dist/esm/utils/request.d.ts +78 -0
- package/dist/esm/utils/request.example.d.ts +39 -0
- package/dist/esm/utils/umdEntry.d.ts +14 -0
- package/dist/esm/utils/umdEntry.js +22 -18
- package/dist/esm/utils/umdEntry.js.map +1 -1
- package/dist/umd/chat-sdk.min.js +1 -1
- 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
|
-
|
|
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 =
|
|
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
|
-
|
|
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
|
|
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
|
|
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)
|
|
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
|
-
|
|
360
|
-
|
|
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
|
|
451
|
+
return _ref5.apply(this, arguments);
|
|
383
452
|
};
|
|
384
453
|
}();
|
|
385
454
|
|
|
386
455
|
// 简单对话
|
|
387
456
|
var chat = /*#__PURE__*/function () {
|
|
388
|
-
var
|
|
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
|
|
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
|
|
491
|
-
|
|
492
|
-
suggested_questions =
|
|
493
|
-
|
|
494
|
-
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$
|
|
501
|
-
return !((_item$
|
|
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
|
-
|
|
506
|
-
|
|
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
|
|
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"}
|