@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
|
@@ -0,0 +1,487 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
|
|
29
|
+
// src/hooks/useAgentGenerator.ts
|
|
30
|
+
var useAgentGenerator_exports = {};
|
|
31
|
+
__export(useAgentGenerator_exports, {
|
|
32
|
+
ActionAvailability: () => ActionAvailability,
|
|
33
|
+
ActionType: () => ActionType,
|
|
34
|
+
ProcessStatus: () => ProcessStatus,
|
|
35
|
+
default: () => useAgentGenerator_default
|
|
36
|
+
});
|
|
37
|
+
module.exports = __toCommonJS(useAgentGenerator_exports);
|
|
38
|
+
var import_react = require("react");
|
|
39
|
+
var import_uuid = require("uuid");
|
|
40
|
+
var import_useEventStreamRequest = require("./useEventStreamRequest");
|
|
41
|
+
var import_XAiMessage = require("../types/XAiMessage");
|
|
42
|
+
var import_XAiProvider = require("../types/XAiProvider");
|
|
43
|
+
var import_request = require("../utils/request");
|
|
44
|
+
var import_utils = require("../utils/index");
|
|
45
|
+
var import_api = require("../services/api");
|
|
46
|
+
var import_document = __toESM(require("../assets/document.png"));
|
|
47
|
+
var import_completed = __toESM(require("../assets/completed.png"));
|
|
48
|
+
var import_completed_black = __toESM(require("../assets/completed-black.png"));
|
|
49
|
+
var import_document_black = __toESM(require("../assets/document-black.png"));
|
|
50
|
+
var import_qa = __toESM(require("../assets/qa.png"));
|
|
51
|
+
var import_qa_black = __toESM(require("../assets/qa-black.png"));
|
|
52
|
+
var import_skillNo = __toESM(require("../assets/skillNo.png"));
|
|
53
|
+
var import_skillNo_black = __toESM(require("../assets/skillNo-black.png"));
|
|
54
|
+
var import_tools = __toESM(require("../assets/tools.png"));
|
|
55
|
+
var import_tools_black = __toESM(require("../assets/tools-black.png"));
|
|
56
|
+
var ActionType = /* @__PURE__ */ ((ActionType2) => {
|
|
57
|
+
ActionType2["recallKnowledgeStart"] = "RECALL_KNOWLEDGE_START";
|
|
58
|
+
ActionType2["recallKnowledgeEnd"] = "RECALL_KNOWLEDGE_END";
|
|
59
|
+
ActionType2["invokeToolStart"] = "INVOKE_AGENT_TOOL_START";
|
|
60
|
+
ActionType2["invokeToolEnd"] = "INVOKE_AGENT_TOOL_END";
|
|
61
|
+
ActionType2["suggest"] = "FOLLOW_UP";
|
|
62
|
+
ActionType2["response"] = "RESPONSE";
|
|
63
|
+
ActionType2["finish"] = "FINISHED";
|
|
64
|
+
return ActionType2;
|
|
65
|
+
})(ActionType || {});
|
|
66
|
+
var ProcessStatus = /* @__PURE__ */ ((ProcessStatus2) => {
|
|
67
|
+
ProcessStatus2["start"] = "START";
|
|
68
|
+
ProcessStatus2["end"] = "END";
|
|
69
|
+
return ProcessStatus2;
|
|
70
|
+
})(ProcessStatus || {});
|
|
71
|
+
var ActionAvailability = /* @__PURE__ */ ((ActionAvailability2) => {
|
|
72
|
+
ActionAvailability2["disabled"] = "disabled";
|
|
73
|
+
ActionAvailability2["enabled"] = "enabled";
|
|
74
|
+
ActionAvailability2["remote"] = "remote";
|
|
75
|
+
return ActionAvailability2;
|
|
76
|
+
})(ActionAvailability || {});
|
|
77
|
+
var useAgentGenerator = ({
|
|
78
|
+
url,
|
|
79
|
+
token,
|
|
80
|
+
config,
|
|
81
|
+
onError,
|
|
82
|
+
onSuccess
|
|
83
|
+
}) => {
|
|
84
|
+
const textSpeed = 60;
|
|
85
|
+
const [messages, setMessages] = (0, import_react.useState)([]);
|
|
86
|
+
const [appInfo, setAppInfo] = (0, import_react.useState)(null);
|
|
87
|
+
const requestInfo = (0, import_react.useRef)({});
|
|
88
|
+
const { appNo, pt, tc } = config || {};
|
|
89
|
+
(0, import_react.useEffect)(() => {
|
|
90
|
+
if (url && config) {
|
|
91
|
+
const initConfig = async () => {
|
|
92
|
+
var _a;
|
|
93
|
+
try {
|
|
94
|
+
const result = await (0, import_api.fetchAppConfig)({ url, ...config });
|
|
95
|
+
if (result.success) {
|
|
96
|
+
setAppInfo(result.data);
|
|
97
|
+
const { enableFlag, isDeleted } = ((_a = result.data) == null ? void 0 : _a.publishDTO) || {};
|
|
98
|
+
if (!enableFlag) {
|
|
99
|
+
onError == null ? void 0 : onError({
|
|
100
|
+
code: import_XAiProvider.ErrorCode.APP_NOT_ENABLE,
|
|
101
|
+
message: "应用未启用或者已下架"
|
|
102
|
+
});
|
|
103
|
+
} else if (isDeleted === "Y") {
|
|
104
|
+
onError == null ? void 0 : onError({
|
|
105
|
+
code: import_XAiProvider.ErrorCode.APP_DELETED,
|
|
106
|
+
message: "应用已下架"
|
|
107
|
+
});
|
|
108
|
+
} else {
|
|
109
|
+
onSuccess == null ? void 0 : onSuccess(result.data);
|
|
110
|
+
}
|
|
111
|
+
} else {
|
|
112
|
+
onError == null ? void 0 : onError({
|
|
113
|
+
code: import_XAiProvider.ErrorCode.APP_NOT_FOUND,
|
|
114
|
+
message: (result == null ? void 0 : result.message) || "获取聊天配置失败"
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
} catch (error) {
|
|
118
|
+
console.error("获取聊天配置失败", error);
|
|
119
|
+
onError == null ? void 0 : onError({
|
|
120
|
+
code: import_XAiProvider.ErrorCode.API_ERROR,
|
|
121
|
+
message: "获取聊天配置失败"
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
initConfig();
|
|
126
|
+
}
|
|
127
|
+
}, [url, config]);
|
|
128
|
+
const { start, loading, responseData, stop } = (0, import_useEventStreamRequest.useEventStreamRequest)({
|
|
129
|
+
streaming: true,
|
|
130
|
+
textSpeed,
|
|
131
|
+
onClose: () => {
|
|
132
|
+
setTimeout(() => {
|
|
133
|
+
var _a, _b;
|
|
134
|
+
if (((_a = requestInfo.current) == null ? void 0 : _a.sensitiveWords) && ((_b = requestInfo.current) == null ? void 0 : _b.requestId)) {
|
|
135
|
+
import_request.request.post(url);
|
|
136
|
+
}
|
|
137
|
+
}, 500);
|
|
138
|
+
},
|
|
139
|
+
onOpen(res) {
|
|
140
|
+
console.log("res-----open:", res);
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
(0, import_react.useEffect)(() => {
|
|
144
|
+
if (!responseData || !responseData.content || !responseData.data)
|
|
145
|
+
return;
|
|
146
|
+
let response = responseData.data || responseData.content;
|
|
147
|
+
if (typeof response === "string") {
|
|
148
|
+
response = (0, import_utils.safeJsonParse)(response, {
|
|
149
|
+
action: "RESPONSE" /* response */,
|
|
150
|
+
data: {
|
|
151
|
+
contentType: "TEXT",
|
|
152
|
+
content: "解析响应数据时出错,请重试",
|
|
153
|
+
success: false,
|
|
154
|
+
errorMsg: "响应数据格式错误"
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
setMessages((prevMessages) => {
|
|
159
|
+
var _a, _b;
|
|
160
|
+
let newMessages = [...prevMessages];
|
|
161
|
+
const { action, data } = response;
|
|
162
|
+
const { uniqueId, contentType, content, toolType, args, knowledgeType, success = true, errorMsg } = data;
|
|
163
|
+
if (action === "FOLLOW_UP" /* suggest */) {
|
|
164
|
+
const suggestMessageIndex = messages.findIndex((item) => item.type === "SuggestionMessage");
|
|
165
|
+
if (suggestMessageIndex === -1) {
|
|
166
|
+
const newMessage = {
|
|
167
|
+
id: (0, import_uuid.v4)(),
|
|
168
|
+
type: "SuggestionMessage",
|
|
169
|
+
createdAt: /* @__PURE__ */ new Date(),
|
|
170
|
+
status: import_XAiMessage.MessageStatus.done,
|
|
171
|
+
role: import_XAiMessage.MessageRole.suggestion,
|
|
172
|
+
content: [{
|
|
173
|
+
key: (0, import_uuid.v4)(),
|
|
174
|
+
description: content
|
|
175
|
+
}]
|
|
176
|
+
};
|
|
177
|
+
newMessages.push(newMessage);
|
|
178
|
+
} else {
|
|
179
|
+
const suggestMsg = newMessages[suggestMessageIndex];
|
|
180
|
+
if (suggestMsg == null ? void 0 : suggestMsg.content) {
|
|
181
|
+
suggestMsg.content.push({
|
|
182
|
+
key: (0, import_uuid.v4)(),
|
|
183
|
+
description: content
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return newMessages;
|
|
188
|
+
}
|
|
189
|
+
const lastAIMsgIndex = [...prevMessages].reverse().findIndex(
|
|
190
|
+
(m) => m.role === import_XAiMessage.MessageRole.assistant && m.type === "TextMessage" && (m.status === "init" || m.status === "pending")
|
|
191
|
+
);
|
|
192
|
+
const realIndex = lastAIMsgIndex === -1 ? -1 : prevMessages.length - 1 - lastAIMsgIndex;
|
|
193
|
+
const lastAIMsg = realIndex !== -1 ? prevMessages[realIndex] : null;
|
|
194
|
+
let aiMsg;
|
|
195
|
+
if (!lastAIMsg) {
|
|
196
|
+
aiMsg = {
|
|
197
|
+
id: (0, import_uuid.v4)(),
|
|
198
|
+
type: "TextMessage",
|
|
199
|
+
createdAt: /* @__PURE__ */ new Date(),
|
|
200
|
+
role: import_XAiMessage.MessageRole.assistant,
|
|
201
|
+
content: { text: "" },
|
|
202
|
+
thinks: [],
|
|
203
|
+
status: import_XAiMessage.MessageStatus.init
|
|
204
|
+
};
|
|
205
|
+
newMessages.push(aiMsg);
|
|
206
|
+
} else if (lastAIMsg.type === "TextMessage") {
|
|
207
|
+
aiMsg = { ...lastAIMsg };
|
|
208
|
+
} else if (lastAIMsg.type === "ImageMessage") {
|
|
209
|
+
aiMsg = void 0;
|
|
210
|
+
}
|
|
211
|
+
if (!aiMsg) {
|
|
212
|
+
return newMessages;
|
|
213
|
+
}
|
|
214
|
+
switch (action) {
|
|
215
|
+
case "RECALL_KNOWLEDGE_START" /* recallKnowledgeStart */:
|
|
216
|
+
aiMsg.thinks = aiMsg.thinks || [];
|
|
217
|
+
aiMsg.thinks.push({
|
|
218
|
+
id: uniqueId,
|
|
219
|
+
createdAt: /* @__PURE__ */ new Date(),
|
|
220
|
+
type: "ActionExecutionMessage",
|
|
221
|
+
name: knowledgeType === "DOCUMENT" ? "已搜索文档知识库" : "已搜索问答知识库",
|
|
222
|
+
arguments: args,
|
|
223
|
+
extra: {
|
|
224
|
+
...data,
|
|
225
|
+
icon: knowledgeType === "DOCUMENT" ? import_document.default : import_qa.default,
|
|
226
|
+
expandIcon: knowledgeType === "DOCUMENT" ? import_document_black.default : import_qa_black.default
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
break;
|
|
230
|
+
case "RECALL_KNOWLEDGE_END" /* recallKnowledgeEnd */: {
|
|
231
|
+
const recallKnowledgeMsg = (_a = aiMsg.thinks) == null ? void 0 : _a.find((item) => item.id === uniqueId);
|
|
232
|
+
if (recallKnowledgeMsg) {
|
|
233
|
+
recallKnowledgeMsg.extra.cost = (data == null ? void 0 : data.cost) ? ((data == null ? void 0 : data.cost) / 1e3).toFixed(2) : 0;
|
|
234
|
+
}
|
|
235
|
+
break;
|
|
236
|
+
}
|
|
237
|
+
case "INVOKE_AGENT_TOOL_START" /* invokeToolStart */:
|
|
238
|
+
aiMsg.thinks = aiMsg.thinks || [];
|
|
239
|
+
aiMsg.thinks.push({
|
|
240
|
+
id: uniqueId,
|
|
241
|
+
createdAt: /* @__PURE__ */ new Date(),
|
|
242
|
+
type: "ActionExecutionMessage",
|
|
243
|
+
name: toolType === "SKILL" ? "已调用工作流" : "已调用工具",
|
|
244
|
+
arguments: args,
|
|
245
|
+
extra: {
|
|
246
|
+
...data,
|
|
247
|
+
icon: toolType === "SKILL" ? import_skillNo.default : import_tools.default,
|
|
248
|
+
expandIcon: toolType === "SKILL" ? import_skillNo_black.default : import_tools_black.default
|
|
249
|
+
}
|
|
250
|
+
});
|
|
251
|
+
break;
|
|
252
|
+
case "INVOKE_AGENT_TOOL_END" /* invokeToolEnd */: {
|
|
253
|
+
const invokeToolMsg = (_b = aiMsg.thinks) == null ? void 0 : _b.find((item) => item.id === uniqueId);
|
|
254
|
+
if (invokeToolMsg) {
|
|
255
|
+
invokeToolMsg.extra.cost = (data == null ? void 0 : data.cost) ? ((data == null ? void 0 : data.cost) / 1e3).toFixed(2) : 0;
|
|
256
|
+
}
|
|
257
|
+
break;
|
|
258
|
+
}
|
|
259
|
+
case "RESPONSE" /* response */:
|
|
260
|
+
if (success) {
|
|
261
|
+
if (aiMsg.status === import_XAiMessage.MessageStatus.init) {
|
|
262
|
+
aiMsg.status = import_XAiMessage.MessageStatus.pending;
|
|
263
|
+
}
|
|
264
|
+
if (contentType === "TEXT" && "text" in aiMsg.content) {
|
|
265
|
+
aiMsg.content.text += content;
|
|
266
|
+
}
|
|
267
|
+
} else {
|
|
268
|
+
aiMsg.status = import_XAiMessage.MessageStatus.failed;
|
|
269
|
+
aiMsg.content.text = `<span style="color: red;">❌ ${errorMsg}</span>`;
|
|
270
|
+
}
|
|
271
|
+
break;
|
|
272
|
+
case "FINISHED" /* finish */:
|
|
273
|
+
aiMsg.thinks = aiMsg.thinks || [];
|
|
274
|
+
aiMsg.thinks.push({
|
|
275
|
+
id: uniqueId,
|
|
276
|
+
createdAt: /* @__PURE__ */ new Date(),
|
|
277
|
+
type: "ActionExecutionMessage",
|
|
278
|
+
name: "运行完毕",
|
|
279
|
+
extra: {
|
|
280
|
+
...data,
|
|
281
|
+
cost: (data == null ? void 0 : data.cost) ? ((data == null ? void 0 : data.cost) / 1e3).toFixed(2) : 0,
|
|
282
|
+
icon: import_completed.default,
|
|
283
|
+
expandIcon: import_completed_black.default
|
|
284
|
+
}
|
|
285
|
+
});
|
|
286
|
+
aiMsg.status = import_XAiMessage.MessageStatus.done;
|
|
287
|
+
break;
|
|
288
|
+
}
|
|
289
|
+
if (lastAIMsg && lastAIMsg.type === "TextMessage") {
|
|
290
|
+
newMessages[realIndex] = aiMsg;
|
|
291
|
+
} else if (!lastAIMsg) {
|
|
292
|
+
if (newMessages.length > 0 && newMessages[newMessages.length - 1].type === "TextMessage") {
|
|
293
|
+
newMessages[newMessages.length - 1] = aiMsg;
|
|
294
|
+
} else {
|
|
295
|
+
newMessages = [...newMessages, aiMsg];
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
return newMessages;
|
|
299
|
+
});
|
|
300
|
+
}, [responseData]);
|
|
301
|
+
const setMessage = async (messageType, content) => {
|
|
302
|
+
switch (messageType) {
|
|
303
|
+
case "prologue": {
|
|
304
|
+
const prologueMessageIndex = messages.findIndex((item) => {
|
|
305
|
+
var _a;
|
|
306
|
+
return (_a = item.extra) == null ? void 0 : _a.prologue;
|
|
307
|
+
});
|
|
308
|
+
if (prologueMessageIndex === -1) {
|
|
309
|
+
const newMessage = {
|
|
310
|
+
type: "TextMessage",
|
|
311
|
+
id: (0, import_uuid.v4)(),
|
|
312
|
+
createdAt: /* @__PURE__ */ new Date(),
|
|
313
|
+
role: import_XAiMessage.MessageRole.assistant,
|
|
314
|
+
status: import_XAiMessage.MessageStatus.done,
|
|
315
|
+
content: {
|
|
316
|
+
text: content
|
|
317
|
+
},
|
|
318
|
+
extra: {
|
|
319
|
+
prologue: true,
|
|
320
|
+
noFooter: true
|
|
321
|
+
}
|
|
322
|
+
};
|
|
323
|
+
setMessages((prev) => [newMessage, ...prev]);
|
|
324
|
+
} else {
|
|
325
|
+
setMessages((prev) => prev.map((item) => {
|
|
326
|
+
var _a;
|
|
327
|
+
if (((_a = item.extra) == null ? void 0 : _a.prologue) && item.content && "text" in item.content) {
|
|
328
|
+
item.content.text = content;
|
|
329
|
+
}
|
|
330
|
+
return item;
|
|
331
|
+
}));
|
|
332
|
+
}
|
|
333
|
+
break;
|
|
334
|
+
}
|
|
335
|
+
case "suggest": {
|
|
336
|
+
const suggestMessageIndex = messages.findIndex((item) => item.type === "SuggestionMessage");
|
|
337
|
+
if (suggestMessageIndex === -1) {
|
|
338
|
+
const prologueMessageIndex = messages.findIndex((item) => {
|
|
339
|
+
var _a;
|
|
340
|
+
return (_a = item.extra) == null ? void 0 : _a.prologue;
|
|
341
|
+
});
|
|
342
|
+
const newMessage = {
|
|
343
|
+
id: (0, import_uuid.v4)(),
|
|
344
|
+
type: "SuggestionMessage",
|
|
345
|
+
createdAt: /* @__PURE__ */ new Date(),
|
|
346
|
+
status: import_XAiMessage.MessageStatus.done,
|
|
347
|
+
role: import_XAiMessage.MessageRole.suggestion,
|
|
348
|
+
content
|
|
349
|
+
};
|
|
350
|
+
if (prologueMessageIndex === -1) {
|
|
351
|
+
setMessages((prev) => [newMessage, ...prev]);
|
|
352
|
+
} else {
|
|
353
|
+
setMessages((prev) => {
|
|
354
|
+
const newMessages = [...prev];
|
|
355
|
+
newMessages.splice(prologueMessageIndex + 1, 0, newMessage);
|
|
356
|
+
return newMessages;
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
} else {
|
|
360
|
+
setMessages((prev) => prev.map((item) => {
|
|
361
|
+
if (item.type === "SuggestionMessage") {
|
|
362
|
+
item.content = content;
|
|
363
|
+
}
|
|
364
|
+
return item;
|
|
365
|
+
}));
|
|
366
|
+
}
|
|
367
|
+
break;
|
|
368
|
+
}
|
|
369
|
+
default:
|
|
370
|
+
break;
|
|
371
|
+
}
|
|
372
|
+
};
|
|
373
|
+
const chat = async (content) => {
|
|
374
|
+
const newMessage = {
|
|
375
|
+
type: "TextMessage",
|
|
376
|
+
id: (0, import_uuid.v4)(),
|
|
377
|
+
createdAt: /* @__PURE__ */ new Date(),
|
|
378
|
+
role: import_XAiMessage.MessageRole.user,
|
|
379
|
+
status: import_XAiMessage.MessageStatus.done,
|
|
380
|
+
content: {
|
|
381
|
+
text: content
|
|
382
|
+
}
|
|
383
|
+
};
|
|
384
|
+
setMessages((prev) => {
|
|
385
|
+
const suggestMessageIndex = messages.findIndex((item) => item.type === "SuggestionMessage");
|
|
386
|
+
if (suggestMessageIndex !== -1) {
|
|
387
|
+
prev.splice(suggestMessageIndex, 1);
|
|
388
|
+
}
|
|
389
|
+
prev.push(newMessage);
|
|
390
|
+
return prev;
|
|
391
|
+
});
|
|
392
|
+
start(
|
|
393
|
+
`${url}/appouter/${appNo}/sendMsg?pt=${pt}&tc=${tc}`,
|
|
394
|
+
{
|
|
395
|
+
appParams: {
|
|
396
|
+
inputs_msg: content
|
|
397
|
+
}
|
|
398
|
+
},
|
|
399
|
+
{
|
|
400
|
+
Authorization: `Bearer ${token}`
|
|
401
|
+
}
|
|
402
|
+
);
|
|
403
|
+
};
|
|
404
|
+
const reChat = () => {
|
|
405
|
+
setMessages((prevMessages) => {
|
|
406
|
+
const lastAIMsgIndex = [...prevMessages].reverse().findIndex(
|
|
407
|
+
(m) => m.role === import_XAiMessage.MessageRole.assistant && m.type === "TextMessage"
|
|
408
|
+
);
|
|
409
|
+
const newMessages = [...prevMessages];
|
|
410
|
+
if (lastAIMsgIndex !== -1) {
|
|
411
|
+
const realIndex = newMessages.length - 1 - lastAIMsgIndex;
|
|
412
|
+
newMessages.splice(realIndex, 1);
|
|
413
|
+
}
|
|
414
|
+
const suggestMessageIndex = messages.findIndex((item) => item.type === "SuggestionMessage");
|
|
415
|
+
if (suggestMessageIndex !== -1) {
|
|
416
|
+
newMessages.splice(suggestMessageIndex, 1);
|
|
417
|
+
}
|
|
418
|
+
const lastUserMsg = [...newMessages].reverse().find(
|
|
419
|
+
(m) => m.role === import_XAiMessage.MessageRole.user && m.type === "TextMessage"
|
|
420
|
+
);
|
|
421
|
+
if (lastUserMsg && lastUserMsg.content && typeof lastUserMsg.content.text === "string") {
|
|
422
|
+
chat(lastUserMsg.content.text);
|
|
423
|
+
}
|
|
424
|
+
return newMessages;
|
|
425
|
+
});
|
|
426
|
+
};
|
|
427
|
+
const stopChat = () => {
|
|
428
|
+
stop();
|
|
429
|
+
setMessages((prevMessages) => {
|
|
430
|
+
const newMessages = [...prevMessages];
|
|
431
|
+
newMessages.forEach((m) => {
|
|
432
|
+
if (m.status === import_XAiMessage.MessageStatus.pending) {
|
|
433
|
+
m.status = import_XAiMessage.MessageStatus.done;
|
|
434
|
+
} else if (m.status === import_XAiMessage.MessageStatus.init) {
|
|
435
|
+
if (m.type === "TextMessage") {
|
|
436
|
+
m.content.text = '<span style="color: #cbcbcb;">用户已取消</span>';
|
|
437
|
+
}
|
|
438
|
+
m.status = import_XAiMessage.MessageStatus.done;
|
|
439
|
+
}
|
|
440
|
+
});
|
|
441
|
+
return newMessages;
|
|
442
|
+
});
|
|
443
|
+
};
|
|
444
|
+
(0, import_react.useEffect)(() => {
|
|
445
|
+
if (appInfo) {
|
|
446
|
+
const { onboardingInfo = {} } = appInfo;
|
|
447
|
+
const { suggested_questions = [], prologue = "" } = onboardingInfo || {};
|
|
448
|
+
if (prologue) {
|
|
449
|
+
setMessage("prologue", prologue);
|
|
450
|
+
} else {
|
|
451
|
+
setMessages((prev) => prev.filter((item) => {
|
|
452
|
+
var _a;
|
|
453
|
+
return !((_a = item.extra) == null ? void 0 : _a.prologue);
|
|
454
|
+
}));
|
|
455
|
+
}
|
|
456
|
+
const formatSuggests = suggested_questions.filter((item) => item);
|
|
457
|
+
if (formatSuggests.length > 0) {
|
|
458
|
+
const suggestMessages = formatSuggests.map((item, index) => ({
|
|
459
|
+
key: index + 1,
|
|
460
|
+
description: item
|
|
461
|
+
}));
|
|
462
|
+
setMessage("suggest", suggestMessages);
|
|
463
|
+
} else {
|
|
464
|
+
setMessages((prev) => prev.filter((item) => !(item.type === "SuggestionMessage")));
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
}, [appInfo]);
|
|
468
|
+
return {
|
|
469
|
+
appInfo,
|
|
470
|
+
messages,
|
|
471
|
+
loading,
|
|
472
|
+
content: responseData.content,
|
|
473
|
+
reChat,
|
|
474
|
+
chat,
|
|
475
|
+
setMessage,
|
|
476
|
+
setMessages,
|
|
477
|
+
stopChat
|
|
478
|
+
};
|
|
479
|
+
};
|
|
480
|
+
var useAgentGenerator_default = useAgentGenerator;
|
|
481
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
482
|
+
0 && (module.exports = {
|
|
483
|
+
ActionAvailability,
|
|
484
|
+
ActionType,
|
|
485
|
+
ProcessStatus
|
|
486
|
+
});
|
|
487
|
+
//# sourceMappingURL=useAgentGenerator.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/hooks/useAgentGenerator.ts"],
|
|
4
|
+
"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"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA4C;AAC5C,kBAA6B;AAC7B,mCAAsC;AACtC,wBAAqF;AACrF,yBAAiC;AACjC,qBAAwB;AACxB,mBAA8B;AAC9B,iBAA+B;AAE/B,sBAAyB;AACzB,uBAA0B;AAC1B,6BAAgC;AAChC,4BAA+B;AAC/B,gBAAmB;AACnB,sBAAyB;AACzB,qBAAwB;AACxB,2BAA8B;AAC9B,mBAAqB;AACrB,yBAA2B;AA8BpB,IAAK,aAAL,kBAAKA,gBAAL;AACL,EAAAA,YAAA,0BAAuB;AACvB,EAAAA,YAAA,wBAAqB;AACrB,EAAAA,YAAA,qBAAkB;AAClB,EAAAA,YAAA,mBAAgB;AAChB,EAAAA,YAAA,aAAU;AACV,EAAAA,YAAA,cAAW;AACX,EAAAA,YAAA,YAAS;AAPC,SAAAA;AAAA,GAAA;AAUL,IAAK,gBAAL,kBAAKC,mBAAL;AACL,EAAAA,eAAA,WAAQ;AACR,EAAAA,eAAA,SAAM;AAFI,SAAAA;AAAA,GAAA;AAKL,IAAK,qBAAL,kBAAKC,wBAAL;AACL,EAAAA,oBAAA,cAAW;AACX,EAAAA,oBAAA,aAAU;AACV,EAAAA,oBAAA,YAAS;AAHC,SAAAA;AAAA,GAAA;AA0BZ,IAAM,oBAAoB,CAAC;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA8B;AAC5B,QAAM,YAAY;AAElB,QAAM,CAAC,UAAU,WAAW,QAAI,uBAAqB,CAAC,CAAC;AACvD,QAAM,CAAC,SAAS,UAAU,QAAI,uBAAc,IAAI;AAChD,QAAM,kBAAc,qBAA0D,CAAC,CAAC;AAEhF,QAAM,EAAE,OAAO,IAAI,GAAG,IAAI,UAAU,CAAC;AAGrC,8BAAU,MAAM;AACd,QAAI,OAAO,QAAQ;AACjB,YAAM,aAAa,YAAY;AA3GrC;AA4GQ,YAAI;AACF,gBAAM,SAAS,UAAM,2BAAe,EAAE,KAAK,GAAG,OAAO,CAAC;AACtD,cAAI,OAAO,SAAS;AAClB,uBAAW,OAAO,IAAI;AAEtB,kBAAM,EAAE,YAAY,UAAU,MAAI,YAAO,SAAP,mBAAa,eAAc,CAAC;AAC9D,gBAAI,CAAC,YAAY;AACf,iDAAU;AAAA,gBACR,MAAM,6BAAU;AAAA,gBAChB,SAAS;AAAA,cACX;AAAA,YACF,WAAW,cAAc,KAAK;AAC5B,iDAAU;AAAA,gBACR,MAAM,6BAAU;AAAA,gBAChB,SAAS;AAAA,cACX;AAAA,YACF,OAAO;AACL,qDAAY,OAAO;AAAA,YACrB;AAAA,UACF,OAAO;AACL,+CAAU;AAAA,cACR,MAAM,6BAAU;AAAA,cAChB,UAAS,iCAAQ,YAAW;AAAA,YAC9B;AAAA,UACF;AAAA,QACF,SAAS,OAAP;AACA,kBAAQ,MAAM,YAAY,KAAK;AAC/B,6CAAU;AAAA,YACR,MAAM,6BAAU;AAAA,YAChB,SAAS;AAAA,UACX;AAAA,QACF;AAAA,MACF;AACA,iBAAW;AAAA,IACb;AAAA,EAEF,GAAG,CAAC,KAAK,MAAM,CAAC;AAEhB,QAAM,EAAE,OAAO,SAAS,cAAc,KAAK,QAAI,oDAAsB;AAAA,IACnE,WAAW;AAAA,IACX;AAAA,IACA,SAAS,MAAM;AAEb,iBAAW,MAAM;AAvJvB;AAwJQ,cAAI,iBAAY,YAAZ,mBAAqB,qBAAkB,iBAAY,YAAZ,mBAAqB,YAAW;AACzE,iCAAQ,KAAK,GAAG;AAAA,QAClB;AAAA,MACF,GAAG,GAAG;AAAA,IACR;AAAA,IACA,OAAO,KAAK;AACV,cAAQ,IAAI,iBAAiB,GAAG;AAAA,IAClC;AAAA,EACF,CAAC;AAGD,8BAAU,MAAM;AACd,QAAI,CAAC,gBAAgB,CAAC,aAAa,WAAW,CAAC,aAAa;AAAM;AAElE,QAAI,WAAW,aAAa,QAAQ,aAAa;AACjD,QAAI,OAAO,aAAa,UAAU;AAChC,qBAAW,4BAAc,UAAU;AAAA,QACjC,QAAQ;AAAA,QACR,MAAM;AAAA,UACJ,aAAa;AAAA,UACb,SAAS;AAAA,UACT,SAAS;AAAA,UACT,UAAU;AAAA,QACZ;AAAA,MACF,CAAC;AAAA,IACH;AAEA,gBAAY,CAAC,iBAAiB;AAnLlC;AAoLM,UAAI,cAAc,CAAC,GAAG,YAAY;AAElC,YAAM,EAAE,QAAQ,KAAK,IAAI;AACzB,YAAM,EAAE,UAAU,aAAa,SAAS,UAAU,MAAM,eAAe,UAAU,MAAM,SAAS,IAAI;AAGpG,UAAI,WAAW,2BAAoB;AACjC,cAAM,sBAAsB,SAAS,UAAU,CAAC,SAAS,KAAK,SAAS,mBAAmB;AAC1F,YAAI,wBAAwB,IAAI;AAC9B,gBAAM,aAAgC;AAAA,YACpC,QAAI,YAAAC,IAAO;AAAA,YACX,MAAM;AAAA,YACN,WAAW,oBAAI,KAAK;AAAA,YACpB,QAAQ,gCAAc;AAAA,YACtB,MAAM,8BAAY;AAAA,YAClB,SAAS,CAAC;AAAA,cACR,SAAK,YAAAA,IAAO;AAAA,cACZ,aAAa;AAAA,YACf,CAAC;AAAA,UACH;AACA,sBAAY,KAAK,UAAU;AAAA,QAC7B,OAAO;AACL,gBAAM,aAAa,YAAY,mBAAmB;AAClD,cAAI,yCAAY,SAAS;AACvB,uBAAW,QAAQ,KAAK;AAAA,cACtB,SAAK,YAAAA,IAAO;AAAA,cACZ,aAAa;AAAA,YACf,CAAC;AAAA,UACH;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAGA,YAAM,iBAAiB,CAAC,GAAG,YAAY,EAAE,QAAQ,EAAE;AAAA,QACjD,CAAC,MAAM,EAAE,SAAS,8BAAY,aAAa,EAAE,SAAS,kBAAkB,EAAE,WAAW,UAAU,EAAE,WAAW;AAAA,MAC9G;AACA,YAAM,YAAY,mBAAmB,KAAK,KAAK,aAAa,SAAS,IAAI;AACzE,YAAM,YAAY,cAAc,KAAK,aAAa,SAAS,IAAI;AAE/D,UAAI;AAEJ,UAAI,CAAC,WAAW;AACd,gBAAQ;AAAA,UACN,QAAI,YAAAA,IAAO;AAAA,UACX,MAAM;AAAA,UACN,WAAW,oBAAI,KAAK;AAAA,UACpB,MAAM,8BAAY;AAAA,UAClB,SAAS,EAAE,MAAM,GAAG;AAAA,UACpB,QAAQ,CAAC;AAAA,UACT,QAAQ,gCAAc;AAAA,QACxB;AACA,oBAAY,KAAK,KAAK;AAAA,MACxB,WAAW,UAAU,SAAS,eAAe;AAC3C,gBAAQ,EAAE,GAAG,UAAU;AAAA,MACzB,WAAW,UAAU,SAAS,gBAAgB;AAC5C,gBAAQ;AAAA,MACV;AAGA,UAAI,CAAC,OAAO;AACV,eAAO;AAAA,MACT;AAEA,cAAQ,QAAQ;AAAA,QACd,KAAK;AACH,gBAAM,SAAS,MAAM,UAAU,CAAC;AAChC,gBAAM,OAAO,KAAK;AAAA,YAChB,IAAI;AAAA,YACJ,WAAW,oBAAI,KAAK;AAAA,YACpB,MAAM;AAAA,YACN,MAAM,kBAAkB,aAAa,aAAa;AAAA,YAClD,WAAW;AAAA,YACX,OAAO;AAAA,cACL,GAAG;AAAA,cACH,MAAM,kBAAkB,aAAa,gBAAAC,UAAe,UAAAC;AAAA,cACpD,YAAY,kBAAkB,aAAa,sBAAAC,UAAqB,gBAAAC;AAAA,YAClE;AAAA,UACF,CAAC;AACD;AAAA,QACF,KAAK,iDAA+B;AAElC,gBAAM,sBAAqB,WAAM,WAAN,mBAAc,KAAK,CAAC,SAAS,KAAK,OAAO;AACpE,cAAI,oBAAoB;AACtB,+BAAmB,MAAM,QAAO,6BAAM,UAAQ,6BAAM,QAAO,KAAM,QAAQ,CAAC,IAAI;AAAA,UAChF;AACA;AAAA,QACF;AAAA,QACA,KAAK;AACH,gBAAM,SAAS,MAAM,UAAU,CAAC;AAChC,gBAAM,OAAO,KAAK;AAAA,YAChB,IAAI;AAAA,YACJ,WAAW,oBAAI,KAAK;AAAA,YACpB,MAAM;AAAA,YACN,MAAM,aAAa,UAAU,WAAW;AAAA,YACxC,WAAW;AAAA,YACX,OAAO;AAAA,cACL,GAAG;AAAA,cACH,MAAM,aAAa,UAAU,eAAAC,UAAc,aAAAC;AAAA,cAC3C,YAAY,aAAa,UAAU,qBAAAC,UAAoB,mBAAAC;AAAA,YACzD;AAAA,UACF,CAAC;AACD;AAAA,QACF,KAAK,6CAA0B;AAE7B,gBAAM,iBAAgB,WAAM,WAAN,mBAAc,KAAK,CAAC,SAAS,KAAK,OAAO;AAC/D,cAAI,eAAe;AACjB,0BAAc,MAAM,QAAO,6BAAM,UAAQ,6BAAM,QAAO,KAAM,QAAQ,CAAC,IAAI;AAAA,UAC3E;AACA;AAAA,QACF;AAAA,QACA,KAAK;AACH,cAAI,SAAS;AAEX,gBAAI,MAAM,WAAW,gCAAc,MAAM;AACvC,oBAAM,SAAS,gCAAc;AAAA,YAC/B;AACA,gBAAI,gBAAgB,UAAU,UAAU,MAAM,SAAS;AACrD,oBAAM,QAAQ,QAAQ;AAAA,YACxB;AAAA,UACF,OAAO;AAEL,kBAAM,SAAS,gCAAc;AAC7B,kBAAM,QAAQ,OAAO,+BAA+B;AAAA,UACtD;AACA;AAAA,QACF,KAAK;AACH,gBAAM,SAAS,MAAM,UAAU,CAAC;AAChC,gBAAM,OAAO,KAAK;AAAA,YAChB,IAAI;AAAA,YACJ,WAAW,oBAAI,KAAK;AAAA,YACpB,MAAM;AAAA,YACN,MAAM;AAAA,YACN,OAAO;AAAA,cACL,GAAG;AAAA,cACH,OAAM,6BAAM,UAAQ,6BAAM,QAAO,KAAM,QAAQ,CAAC,IAAI;AAAA,cACpD,MAAM,iBAAAC;AAAA,cACN,YAAY,uBAAAC;AAAA,YACd;AAAA,UACF,CAAC;AACD,gBAAM,SAAS,gCAAc;AAC7B;AAAA,MAEJ;AAGA,UAAI,aAAa,UAAU,SAAS,eAAe;AACjD,oBAAY,SAAS,IAAI;AAAA,MAC3B,WAAW,CAAC,WAAW;AAErB,YAAI,YAAY,SAAS,KAAK,YAAY,YAAY,SAAS,CAAC,EAAE,SAAS,eAAe;AACxF,sBAAY,YAAY,SAAS,CAAC,IAAI;AAAA,QACxC,OAAO;AAEL,wBAAc,CAAC,GAAG,aAAa,KAAK;AAAA,QACtC;AAAA,MACF;AACA,aAAO;AAAA,IACT,CAAC;AAAA,EAGH,GAAG,CAAC,YAAY,CAAC;AAGjB,QAAM,aAAa,OAAO,aAAqB,YAAiB;AAC9D,YAAQ,aAAa;AAAA,MACnB,KAAK,YAAY;AACf,cAAM,uBAAuB,SAAS,UAAU,CAAC,SAAM;AA3V/D;AA2VkE,4BAAK,UAAL,mBAAY;AAAA,SAAQ;AAC9E,YAAI,yBAAyB,IAAI;AAC/B,gBAAM,aAAuB;AAAA,YAC3B,MAAM;AAAA,YACN,QAAI,YAAAV,IAAO;AAAA,YACX,WAAW,oBAAI,KAAK;AAAA,YACpB,MAAM,8BAAY;AAAA,YAClB,QAAQ,gCAAc;AAAA,YACtB,SAAS;AAAA,cACP,MAAM;AAAA,YACR;AAAA,YACA,OAAO;AAAA,cACL,UAAU;AAAA,cACV,UAAU;AAAA,YACZ;AAAA,UACF;AACA,sBAAY,CAAC,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC;AAAA,QAC7C,OAAO;AACL,sBAAY,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS;AA7WnD;AA8WY,kBAAI,UAAK,UAAL,mBAAY,aAAY,KAAK,WAAW,UAAU,KAAK,SAAS;AAClE,mBAAK,QAAQ,OAAO;AAAA,YACtB;AACA,mBAAO;AAAA,UACT,CAAC,CAAC;AAAA,QACJ;AACA;AAAA,MACF;AAAA,MACA,KAAK,WAAW;AACd,cAAM,sBAAsB,SAAS,UAAU,CAAC,SAAS,KAAK,SAAS,mBAAmB;AAC1F,YAAI,wBAAwB,IAAI;AAC9B,gBAAM,uBAAuB,SAAS,UAAU,CAAC,SAAM;AAzXjE;AAyXoE,8BAAK,UAAL,mBAAY;AAAA,WAAQ;AAC9E,gBAAM,aAAuB;AAAA,YAC3B,QAAI,YAAAA,IAAO;AAAA,YACX,MAAM;AAAA,YACN,WAAW,oBAAI,KAAK;AAAA,YACpB,QAAQ,gCAAc;AAAA,YACtB,MAAM,8BAAY;AAAA,YAClB;AAAA,UACF;AACA,cAAI,yBAAyB,IAAI;AAE/B,wBAAY,CAAC,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC;AAAA,UAC7C,OAAO;AAEL,wBAAY,CAAC,SAAS;AACpB,oBAAM,cAAc,CAAC,GAAG,IAAI;AAC5B,0BAAY,OAAO,uBAAuB,GAAG,GAAG,UAAU;AAC1D,qBAAO;AAAA,YACT,CAAC;AAAA,UACH;AAAA,QACF,OAAO;AACL,sBAAY,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS;AACvC,gBAAI,KAAK,SAAS,qBAAqB;AACrC,mBAAK,UAAU;AAAA,YACjB;AACA,mBAAO;AAAA,UACT,CAAC,CAAC;AAAA,QACJ;AACA;AAAA,MACF;AAAA,MACA;AACE;AAAA,IACJ;AAAA,EACF;AAGA,QAAM,OAAO,OAAO,YAAiB;AACnC,UAAM,aAAuB;AAAA,MAC3B,MAAM;AAAA,MACN,QAAI,YAAAA,IAAO;AAAA,MACX,WAAW,oBAAI,KAAK;AAAA,MACpB,MAAM,8BAAY;AAAA,MAClB,QAAQ,gCAAc;AAAA,MACtB,SAAS;AAAA,QACP,MAAM;AAAA,MACR;AAAA,IACF;AAEA,gBAAY,CAAC,SAAS;AAEpB,YAAM,sBAAsB,SAAS,UAAU,CAAC,SAAS,KAAK,SAAS,mBAAmB;AAC1F,UAAI,wBAAwB,IAAI;AAC9B,aAAK,OAAO,qBAAqB,CAAC;AAAA,MACpC;AAEA,WAAK,KAAK,UAAU;AACpB,aAAO;AAAA,IACT,CAAC;AAED;AAAA,MACE,GAAG,gBAAgB,oBAAoB,SAAS;AAAA,MAChD;AAAA,QACE,WAAW;AAAA,UACT,YAAY;AAAA,QACd;AAAA,MACF;AAAA,MACA;AAAA,QACE,eAAe,UAAU;AAAA,MAC3B;AAAA,IACF;AAAA,EACF;AAGA,QAAM,SAAS,MAAM;AACnB,gBAAY,CAAC,iBAAiB;AAE5B,YAAM,iBAAiB,CAAC,GAAG,YAAY,EAAE,QAAQ,EAAE;AAAA,QACjD,CAAC,MAAM,EAAE,SAAS,8BAAY,aAAa,EAAE,SAAS;AAAA,MACxD;AACA,YAAM,cAAc,CAAC,GAAG,YAAY;AACpC,UAAI,mBAAmB,IAAI;AACzB,cAAM,YAAY,YAAY,SAAS,IAAI;AAC3C,oBAAY,OAAO,WAAW,CAAC;AAAA,MACjC;AAGA,YAAM,sBAAsB,SAAS,UAAU,CAAC,SAAS,KAAK,SAAS,mBAAmB;AAC1F,UAAI,wBAAwB,IAAI;AAC9B,oBAAY,OAAO,qBAAqB,CAAC;AAAA,MAC3C;AAGA,YAAM,cAAc,CAAC,GAAG,WAAW,EAAE,QAAQ,EAAE;AAAA,QAC7C,CAAC,MAAM,EAAE,SAAS,8BAAY,QAAQ,EAAE,SAAS;AAAA,MACnD;AACA,UAAI,eAAe,YAAY,WAAW,OAAO,YAAY,QAAQ,SAAS,UAAU;AAEtF,aAAK,YAAY,QAAQ,IAAI;AAAA,MAC/B;AAEA,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AAEA,QAAM,WAAW,MAAM;AACrB,SAAK;AACL,gBAAY,CAAC,iBAAiB;AAE5B,YAAM,cAAc,CAAC,GAAG,YAAY;AACpC,kBAAY,QAAQ,CAAC,MAAM;AACzB,YAAI,EAAE,WAAW,gCAAc,SAAS;AACtC,YAAE,SAAS,gCAAc;AAAA,QAC3B,WAAW,EAAE,WAAW,gCAAc,MAAM;AAC1C,cAAI,EAAE,SAAS,eAAe;AAC5B,cAAE,QAAQ,OAAO;AAAA,UACnB;AACA,YAAE,SAAS,gCAAc;AAAA,QAC3B;AAAA,MACF,CAAC;AACD,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AAGA,8BAAU,MAAM;AACd,QAAI,SAAS;AACX,YAAM,EAAE,iBAAiB,CAAC,EAAE,IAAI;AAEhC,YAAM,EAAE,sBAAsB,CAAC,GAAG,WAAW,GAAG,IAAI,kBAAkB,CAAC;AAEvE,UAAI,UAAU;AACZ,mBAAW,YAAY,QAAQ;AAAA,MACjC,OAAO;AACL,oBAAY,CAAC,SAAS,KAAK,OAAO,CAAC,SAAM;AA9fjD;AA8foD,oBAAC,UAAK,UAAL,mBAAY;AAAA,SAAQ,CAAC;AAAA,MACpE;AAGA,YAAM,iBAAiB,oBAAoB,OAAO,CAAC,SAAiB,IAAI;AAExE,UAAI,eAAe,SAAS,GAAG;AAC7B,cAAM,kBAAkB,eAAe,IAAI,CAAC,MAAc,WAAmB;AAAA,UAC3E,KAAK,QAAQ;AAAA,UACb,aAAa;AAAA,QACf,EAAE;AACF,mBAAW,WAAW,eAAe;AAAA,MACvC,OAAO;AACL,oBAAY,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,EAAE,KAAK,SAAS,oBAAoB,CAAC;AAAA,MACnF;AAAA,IACF;AAAA,EAEF,GAAG,CAAC,OAAO,CAAC;AAEZ,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS,aAAa;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,IAAO,4BAAQ;",
|
|
6
|
+
"names": ["ActionType", "ProcessStatus", "ActionAvailability", "uuidV4", "documentIcon", "qaIcon", "documentExpandIcon", "qaExpandIcon", "skillNoIcon", "toolIcon", "skillNoExpandIcon", "toolExpandIcon", "completedIcon", "completedExpandIcon"]
|
|
7
|
+
}
|
|
@@ -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;
|