@ai-group/chat-sdk 0.5.0 → 0.5.2
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/dist/cjs/assets/add-chat.svg +13 -0
- package/dist/cjs/assets/flash-open.svg +14 -0
- package/dist/cjs/assets/logo.png +0 -0
- package/dist/cjs/assets/svg/AddChatIcon.d.ts +3 -0
- package/dist/cjs/assets/svg/AddChatIcon.js +38 -0
- package/dist/cjs/assets/svg/AddChatIcon.js.map +7 -0
- package/dist/cjs/components/XAiChatbot/index.js +2 -1
- package/dist/cjs/components/XAiChatbot/index.js.map +2 -2
- package/dist/cjs/components/XAiChatbot/styles.js +1 -1
- package/dist/cjs/components/XAiChatbot/styles.js.map +2 -2
- package/dist/cjs/components/XAiConversations/index.js +61 -27
- package/dist/cjs/components/XAiConversations/index.js.map +3 -3
- package/dist/cjs/components/XAiConversations/styles.d.ts +45 -0
- package/dist/cjs/components/XAiConversations/styles.js +177 -0
- package/dist/cjs/components/XAiConversations/styles.js.map +7 -0
- package/dist/cjs/components/XAiProvider/XAiProvider.stories.js +9 -6
- package/dist/cjs/components/XAiProvider/XAiProvider.stories.js.map +2 -2
- package/dist/cjs/components/XAiProvider/index.js +96 -12
- package/dist/cjs/components/XAiProvider/index.js.map +3 -3
- package/dist/cjs/constants/index.d.ts +1 -0
- package/dist/cjs/constants/index.js +30 -0
- package/dist/cjs/constants/index.js.map +7 -0
- package/dist/cjs/hooks/useAgentGenerator.d.ts +5 -2
- package/dist/cjs/hooks/useAgentGenerator.js +53 -50
- package/dist/cjs/hooks/useAgentGenerator.js.map +2 -2
- package/dist/cjs/services/api.d.ts +23 -0
- package/dist/cjs/services/api.js +35 -2
- package/dist/cjs/services/api.js.map +2 -2
- package/dist/cjs/types/XAiChatbot.d.ts +2 -0
- package/dist/cjs/types/XAiChatbot.js.map +1 -1
- package/dist/cjs/types/XAiConversations.d.ts +2 -0
- package/dist/cjs/types/XAiConversations.js.map +1 -1
- package/dist/cjs/types/XAiMessage.js.map +2 -2
- package/dist/cjs/types/XAiProvider.d.ts +20 -2
- package/dist/cjs/types/XAiProvider.js.map +2 -2
- package/dist/cjs/utils/umdEntry.d.ts +2 -1
- package/dist/cjs/utils/umdEntry.js +3 -2
- package/dist/cjs/utils/umdEntry.js.map +2 -2
- package/dist/esm/assets/add-chat.svg +13 -0
- package/dist/esm/assets/flash-open.svg +14 -0
- package/dist/esm/assets/logo.png +0 -0
- package/dist/esm/assets/svg/AddChatIcon.d.ts +3 -0
- package/dist/esm/assets/svg/AddChatIcon.js +40 -0
- package/dist/esm/assets/svg/AddChatIcon.js.map +1 -0
- package/dist/esm/components/XAiChatbot/index.js +3 -1
- package/dist/esm/components/XAiChatbot/index.js.map +1 -1
- package/dist/esm/components/XAiChatbot/styles.js +1 -1
- package/dist/esm/components/XAiChatbot/styles.js.map +1 -1
- package/dist/esm/components/XAiConversations/index.js +129 -47
- package/dist/esm/components/XAiConversations/index.js.map +1 -1
- package/dist/esm/components/XAiConversations/styles.d.ts +45 -0
- package/dist/esm/components/XAiConversations/styles.js +36 -0
- package/dist/esm/components/XAiConversations/styles.js.map +1 -0
- package/dist/esm/components/XAiProvider/XAiProvider.stories.js +26 -27
- package/dist/esm/components/XAiProvider/XAiProvider.stories.js.map +1 -1
- package/dist/esm/components/XAiProvider/index.js +119 -14
- package/dist/esm/components/XAiProvider/index.js.map +1 -1
- package/dist/esm/constants/index.d.ts +1 -0
- package/dist/esm/constants/index.js +3 -0
- package/dist/esm/constants/index.js.map +1 -0
- package/dist/esm/hooks/useAgentGenerator.d.ts +5 -2
- package/dist/esm/hooks/useAgentGenerator.js +124 -97
- package/dist/esm/hooks/useAgentGenerator.js.map +1 -1
- package/dist/esm/services/api.d.ts +23 -0
- package/dist/esm/services/api.js +73 -0
- package/dist/esm/services/api.js.map +1 -1
- package/dist/esm/types/XAiChatbot.d.ts +2 -0
- package/dist/esm/types/XAiChatbot.js.map +1 -1
- package/dist/esm/types/XAiConversations.d.ts +2 -0
- package/dist/esm/types/XAiConversations.js.map +1 -1
- package/dist/esm/types/XAiMessage.js.map +1 -1
- package/dist/esm/types/XAiProvider.d.ts +20 -2
- package/dist/esm/types/XAiProvider.js.map +1 -1
- package/dist/esm/utils/umdEntry.d.ts +2 -1
- package/dist/esm/utils/umdEntry.js +9 -8
- package/dist/esm/utils/umdEntry.js.map +1 -1
- package/dist/umd/chat-sdk.min.js +1 -1
- package/package.json +1 -1
|
@@ -42,6 +42,7 @@ var import_XAiMessage = require("../types/XAiMessage");
|
|
|
42
42
|
var import_types = require("../types");
|
|
43
43
|
var import_request = require("../utils/request");
|
|
44
44
|
var import_utils = require("../utils/index");
|
|
45
|
+
var import_constants = require("../constants");
|
|
45
46
|
var import_api = require("../services/api");
|
|
46
47
|
var import_document = __toESM(require("../assets/document.png"));
|
|
47
48
|
var import_document_black = __toESM(require("../assets/document-black.png"));
|
|
@@ -82,10 +83,8 @@ var useAgentGenerator = ({
|
|
|
82
83
|
}) => {
|
|
83
84
|
const textSpeed = 60;
|
|
84
85
|
const [messages, setMessages] = (0, import_react.useState)([]);
|
|
85
|
-
const [messagePagination, setMessagePagination] = (0, import_react.useState)({ total: 0, pageNum: 1, pageSize: 999 });
|
|
86
86
|
const [sessionList, setSessionList] = (0, import_react.useState)([]);
|
|
87
|
-
const [
|
|
88
|
-
const [sessionPagination, setSessionPagination] = (0, import_react.useState)({ total: 0, pageNum: 1, pageSize: 20 });
|
|
87
|
+
const [sessionPagination, setSessionPagination] = (0, import_react.useState)({ total: 0, pageNum: 1, pageSize: import_constants.SESSION_PAGE_SIZE });
|
|
89
88
|
const [currentSessionId, setCurrentSessionId] = (0, import_react.useState)("");
|
|
90
89
|
const [appInfo, setAppInfo] = (0, import_react.useState)(null);
|
|
91
90
|
const requestInfo = (0, import_react.useRef)({});
|
|
@@ -148,7 +147,7 @@ var useAgentGenerator = ({
|
|
|
148
147
|
});
|
|
149
148
|
}
|
|
150
149
|
setMessages((prevMessages) => {
|
|
151
|
-
var _a, _b;
|
|
150
|
+
var _a, _b, _c;
|
|
152
151
|
let newMessages = [...prevMessages];
|
|
153
152
|
const { action, data } = response;
|
|
154
153
|
const { uniqueId, contentType, content, toolType, args, knowledgeType, success = true, errorMsg } = data || {};
|
|
@@ -263,7 +262,8 @@ var useAgentGenerator = ({
|
|
|
263
262
|
break;
|
|
264
263
|
case "FINISHED" /* finish */:
|
|
265
264
|
aiMsg.status = import_XAiMessage.MessageStatus.done;
|
|
266
|
-
onMessage == null ? void 0 : onMessage(aiMsg);
|
|
265
|
+
onMessage == null ? void 0 : onMessage((_c = aiMsg == null ? void 0 : aiMsg.content) == null ? void 0 : _c.text, aiMsg);
|
|
266
|
+
initAppConversations(false);
|
|
267
267
|
break;
|
|
268
268
|
}
|
|
269
269
|
if (lastAIMsg && lastAIMsg.type === "TextMessage") {
|
|
@@ -506,7 +506,7 @@ var useAgentGenerator = ({
|
|
|
506
506
|
setMessages((prev) => prev.filter((item) => !(item.type === "SuggestionMessage")));
|
|
507
507
|
}
|
|
508
508
|
};
|
|
509
|
-
const initAppConversations = async () => {
|
|
509
|
+
const initAppConversations = async (fetchDetail = false) => {
|
|
510
510
|
var _a, _b, _c, _d;
|
|
511
511
|
try {
|
|
512
512
|
const result = await (0, import_api.fetchSessionList)({
|
|
@@ -514,7 +514,9 @@ var useAgentGenerator = ({
|
|
|
514
514
|
appNo,
|
|
515
515
|
pt,
|
|
516
516
|
tc,
|
|
517
|
-
token
|
|
517
|
+
token,
|
|
518
|
+
pageNum: sessionPagination.pageNum,
|
|
519
|
+
pageSize: sessionPagination.pageSize
|
|
518
520
|
});
|
|
519
521
|
if (result == null ? void 0 : result.success) {
|
|
520
522
|
const resultData = ((_a = result == null ? void 0 : result.data) == null ? void 0 : _a.data) || [];
|
|
@@ -522,7 +524,7 @@ var useAgentGenerator = ({
|
|
|
522
524
|
const formatSessions = resultData.map((item) => {
|
|
523
525
|
return {
|
|
524
526
|
key: item.sessionId,
|
|
525
|
-
label: item.title,
|
|
527
|
+
label: item.title || "新对话",
|
|
526
528
|
timestamp: new Date(item.gmtCreated).getTime(),
|
|
527
529
|
messages: [],
|
|
528
530
|
meta: {
|
|
@@ -533,7 +535,7 @@ var useAgentGenerator = ({
|
|
|
533
535
|
setSessionList(formatSessions);
|
|
534
536
|
setSessionPagination({ pageNum: (_b = result == null ? void 0 : result.data) == null ? void 0 : _b.pageNum, pageSize: (_c = result == null ? void 0 : result.data) == null ? void 0 : _c.pageSize, total: (_d = result == null ? void 0 : result.data) == null ? void 0 : _d.totalCount });
|
|
535
537
|
const { sessionId } = resultData[0];
|
|
536
|
-
setCurrentSessionDetail(sessionId);
|
|
538
|
+
fetchDetail && setCurrentSessionDetail(sessionId);
|
|
537
539
|
} else {
|
|
538
540
|
setSessionList([]);
|
|
539
541
|
setCurrentSessionId((0, import_uuid.v4)());
|
|
@@ -562,9 +564,7 @@ var useAgentGenerator = ({
|
|
|
562
564
|
pt,
|
|
563
565
|
tc,
|
|
564
566
|
sessionId,
|
|
565
|
-
token
|
|
566
|
-
pageNum: sessionPagination.pageNum,
|
|
567
|
-
pageSize: sessionPagination.pageSize
|
|
567
|
+
token
|
|
568
568
|
});
|
|
569
569
|
if (sessionResult == null ? void 0 : sessionResult.success) {
|
|
570
570
|
const sessionsData = (_b = (_a = sessionResult == null ? void 0 : sessionResult.data) == null ? void 0 : _a.list) == null ? void 0 : _b.reduce((acc, cur) => {
|
|
@@ -578,49 +578,49 @@ var useAgentGenerator = ({
|
|
|
578
578
|
setCurrentSessionId((0, import_uuid.v4)());
|
|
579
579
|
}
|
|
580
580
|
};
|
|
581
|
-
const
|
|
582
|
-
|
|
583
|
-
if (sessionLoading) {
|
|
581
|
+
const deleteSession = async (sessionId) => {
|
|
582
|
+
if (!sessionId)
|
|
584
583
|
return;
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
});
|
|
598
|
-
if (result == null ? void 0 : result.success) {
|
|
599
|
-
const resultData = ((_a = result == null ? void 0 : result.data) == null ? void 0 : _a.data) || [];
|
|
600
|
-
if (resultData.length > 0) {
|
|
601
|
-
const formatSessions = resultData.map((item) => {
|
|
602
|
-
return {
|
|
603
|
-
key: item.sessionId,
|
|
604
|
-
label: item.title,
|
|
605
|
-
timestamp: new Date(item.gmtCreated).getTime(),
|
|
606
|
-
messages: [],
|
|
607
|
-
meta: {
|
|
608
|
-
...item
|
|
609
|
-
}
|
|
610
|
-
};
|
|
611
|
-
});
|
|
612
|
-
setSessionList((prevList) => [...prevList, ...formatSessions]);
|
|
613
|
-
}
|
|
614
|
-
setSessionPagination({ pageNum: (_b = result == null ? void 0 : result.data) == null ? void 0 : _b.pageNum, pageSize: (_c = result == null ? void 0 : result.data) == null ? void 0 : _c.pageSize, total: (_d = result == null ? void 0 : result.data) == null ? void 0 : _d.totalCount });
|
|
584
|
+
const result = await (0, import_api.delSessionId)({
|
|
585
|
+
url,
|
|
586
|
+
appNo,
|
|
587
|
+
pt,
|
|
588
|
+
tc,
|
|
589
|
+
sessionId,
|
|
590
|
+
token
|
|
591
|
+
});
|
|
592
|
+
if (result == null ? void 0 : result.success) {
|
|
593
|
+
initAppConversations(false);
|
|
594
|
+
if (sessionId === currentSessionId) {
|
|
595
|
+
createNewChat();
|
|
615
596
|
}
|
|
616
|
-
} catch (err) {
|
|
617
|
-
} finally {
|
|
618
|
-
setSessionLoading(false);
|
|
619
597
|
}
|
|
620
598
|
};
|
|
599
|
+
const updateSession = async (sessionId, title) => {
|
|
600
|
+
if (!sessionId && !title)
|
|
601
|
+
return;
|
|
602
|
+
const result = await (0, import_api.updateSessionTitle)({
|
|
603
|
+
url,
|
|
604
|
+
appNo,
|
|
605
|
+
pt,
|
|
606
|
+
tc,
|
|
607
|
+
title,
|
|
608
|
+
sessionId,
|
|
609
|
+
token
|
|
610
|
+
});
|
|
611
|
+
if (result == null ? void 0 : result.success) {
|
|
612
|
+
initAppConversations(false);
|
|
613
|
+
}
|
|
614
|
+
};
|
|
615
|
+
const createNewChat = () => {
|
|
616
|
+
stopChat();
|
|
617
|
+
setMessages([]);
|
|
618
|
+
initPrologue();
|
|
619
|
+
setCurrentSessionId((0, import_uuid.v4)());
|
|
620
|
+
};
|
|
621
621
|
(0, import_react.useEffect)(() => {
|
|
622
622
|
if (appInfo) {
|
|
623
|
-
initAppConversations();
|
|
623
|
+
initAppConversations(true);
|
|
624
624
|
}
|
|
625
625
|
}, [appInfo]);
|
|
626
626
|
return {
|
|
@@ -631,11 +631,14 @@ var useAgentGenerator = ({
|
|
|
631
631
|
sessionList,
|
|
632
632
|
currentSessionId,
|
|
633
633
|
sessionPagination,
|
|
634
|
-
|
|
634
|
+
initAppConversations,
|
|
635
635
|
reChat,
|
|
636
636
|
chat,
|
|
637
|
+
createNewChat,
|
|
637
638
|
setCurrentSessionId,
|
|
638
639
|
setCurrentSessionDetail,
|
|
640
|
+
updateSession,
|
|
641
|
+
deleteSession,
|
|
639
642
|
setMessage,
|
|
640
643
|
setMessages,
|
|
641
644
|
stopChat,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
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, Success, SuccessCode, sessionData } from '@/types';\nimport { request } from '@/utils/request';\nimport { safeJsonParse } from '@/utils/index';\nimport { fetchAppConfig, fetchSessionList, fetchSessionDetail } from '@/services/api';\n// 图标\nimport documentIcon from '@/assets/document.png';\n// import completedIcon from '@/assets/completed.png';\n// import 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?: (data: Success) => void;\n onMessage?: (data: Messages) => void;\n}\nconst useAgentGenerator = ({\n url,\n token,\n config,\n onError,\n onMessage,\n onSuccess,\n}: UseAgentGeneratorProps) => {\n const textSpeed = 60;\n // 聊天记录\n const [messages, setMessages] = useState<Messages[]>([]);\n // 聊天记录分页设置\n const [messagePagination, setMessagePagination] = useState({ total: 0, pageNum: 1, pageSize: 999 });\n // 会话记录\n const [sessionList, setSessionList] = useState<sessionData[]>([]);\n // 会话请求是否加载中\n const [sessionLoading, setSessionLoading] = useState<boolean>(false);\n // 会话分页设置\n const [sessionPagination, setSessionPagination] = useState({ total: 0, pageNum: 1, pageSize: 20 });\n // 当前会话\n const [currentSessionId, setCurrentSessionId] = useState<string>('');\n // 应用 配置\n const [appInfo, setAppInfo] = useState<any>(null);\n // 请求 配置\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 // 成功回调\n onSuccess?.({\n code: SuccessCode.APP_CONFIG_INIT_SUCCESS,\n message: '初始化配置成功',\n });\n } else {\n onError?.({\n code: (result.code as ErrorCode) || ErrorCode.APP_NOT_FOUND,\n message: result.message || '获取应用配置失败',\n });\n }\n } catch (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 // 插到末尾\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 // 收到一条完整,触发收到消息回调\n onMessage?.(aiMsg);\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 setMessages((prev) => {\n const prologueMessageIndex = prev.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 return [newMessage, ...prev];\n }\n return 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 setMessages((prev) => {\n const suggestMessageIndex = prev.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex === -1) {\n const prologueMessageIndex = prev.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 return [newMessage, ...prev];\n }\n // 如果有开场白,则插到开场白后面\n const newMessages = [...prev];\n newMessages.splice(prologueMessageIndex + 1, 0, newMessage);\n return newMessages;\n }\n return 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 let newMessage: Messages;\n let inputs_msg;\n if (typeof content === 'string') {\n newMessage = {\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 } else {\n newMessage = {\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 ...content,\n }\n }\n\n if (typeof newMessage.content === 'object' && 'text' in newMessage.content && typeof newMessage.content.text === 'string') {\n inputs_msg = newMessage.content.text;\n } else {\n inputs_msg = '';\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,\n },\n sessionId: currentSessionId,\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 = newMessages.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 const formatMessages = (data: any, init = false) => {\n setMessages((prev) => {\n const initMessagesList: Messages[] = [];\n data.forEach((item: any) => {\n const { content, messageTime, role } = item || {};\n\n if (role === 'USER') {\n const newMessage: Messages = {\n type: 'TextMessage',\n id: uuidV4(),\n createdAt: messageTime,\n role: MessageRole.user,\n status: MessageStatus.done,\n content: {\n text: content,\n },\n };\n\n initMessagesList.push(newMessage);\n } else if (role === 'AI') {\n const newMessage: TextMessage = {\n id: uuidV4(),\n type: 'TextMessage',\n createdAt: messageTime,\n role: MessageRole.assistant,\n content: { text: content },\n thinks: [],\n status: MessageStatus.done,\n };\n\n initMessagesList.push(newMessage);\n }\n });\n\n if (init) {\n return [...initMessagesList];\n }\n return [...prev, ...initMessagesList];\n });\n };\n\n // 初始化开场白\n const initPrologue = async () => {\n const { onboardingInfo = {} } = appInfo;\n // eslint-disable-next-line camelcase\n const { suggested_questions = [], prologue = '' } = onboardingInfo || {};\n\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 // 页面为空时展示开场白预设问题\n const hasMessages = messages.some((item) => (!item.extra?.prologue && item.type !== 'SuggestionMessage'));\n if (!hasMessages) {\n setMessage('suggest', suggestMessages);\n }\n } else {\n setMessages((prev) => prev.filter((item) => !(item.type === 'SuggestionMessage')));\n }\n };\n\n // 获取聊天记录\n const initAppConversations = async () => {\n try {\n const result = await fetchSessionList({\n url,\n appNo,\n pt,\n tc,\n token,\n });\n\n if (result?.success) {\n const resultData = result?.data?.data || [];\n if (resultData.length > 0) {\n const formatSessions = resultData.map((item) => {\n return {\n key: item.sessionId,\n label: item.title,\n timestamp: new Date(item.gmtCreated).getTime(),\n messages: [],\n meta: {\n ...item,\n }\n };\n });\n\n setSessionList(formatSessions);\n // 设置分页信息\n setSessionPagination({ pageNum: result?.data?.pageNum, pageSize: result?.data?.pageSize, total: result?.data?.totalCount })\n const { sessionId } = resultData[0];\n setCurrentSessionDetail(sessionId);\n } else {\n // 页面报错 初始化\n setSessionList([]);\n setCurrentSessionId(uuidV4());\n initPrologue();\n }\n // 成功回调\n onSuccess?.({\n code: SuccessCode.APP_MESSAGES_INIT_SUCCESS,\n message: '初始化聊天记录成功',\n });\n } else {\n initPrologue();\n }\n } catch {\n //\n }\n };\n\n // 设置当前会话详情\n const setCurrentSessionDetail = async (sessionId: string) => {\n if (sessionId) {\n if (sessionId === currentSessionId) {\n return;\n }\n setCurrentSessionId(sessionId); // 设置当前会话 id;\n const sessionResult = await fetchSessionDetail({\n url,\n appNo,\n pt,\n tc,\n sessionId,\n token,\n pageNum: sessionPagination.pageNum,\n pageSize: sessionPagination.pageSize,\n });\n\n if (sessionResult?.success) {\n const sessionsData = (sessionResult?.data as any)?.list?.reduce((acc: any[], cur: any) => {\n return [...acc, ...(cur.sessionMessages || [])];\n }, []);\n\n if (sessionsData.length > 0) {\n formatMessages(sessionsData, true);\n }\n }\n } else {\n // 兼容 无 session异常\n setCurrentSessionId(uuidV4());\n }\n }\n\n // 获取更多会话记录\n const loadMoreSessions = async () => {\n if (sessionLoading) {\n return;\n }\n try {\n setSessionLoading(true);\n const { pageNum, pageSize } = sessionPagination; \n const result = await fetchSessionList({\n url,\n appNo,\n pt,\n tc,\n token,\n pageNum: pageNum + 1,\n pageSize,\n });\n\n if (result?.success) {\n const resultData = result?.data?.data || [];\n if (resultData.length > 0) {\n const formatSessions = resultData.map((item) => {\n return {\n key: item.sessionId,\n label: item.title,\n timestamp: new Date(item.gmtCreated).getTime(),\n messages: [],\n meta: {\n ...item,\n }\n };\n });\n\n setSessionList((prevList) => [...prevList, ...formatSessions]);\n }\n // 设置分页信息\n setSessionPagination({ pageNum: result?.data?.pageNum, pageSize: result?.data?.pageSize, total: result?.data?.totalCount })\n }\n } catch (err) {\n //\n } finally {\n setSessionLoading(false);\n }\n };\n\n // 初始化应用\n useEffect(() => {\n if (appInfo) {\n // 初始化历史数据\n initAppConversations();\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 sessionList,\n currentSessionId,\n sessionPagination,\n loadMoreSessions,\n reChat,\n chat,\n setCurrentSessionId,\n setCurrentSessionDetail,\n setMessage,\n setMessages,\n stopChat,\n initPrologue,\n };\n};\n\nexport default useAgentGenerator;\n"],
|
|
5
|
-
"mappings": "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",
|
|
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, Success, SuccessCode, sessionData } from '@/types';\nimport { request } from '@/utils/request';\nimport { safeJsonParse } from '@/utils/index';\nimport { SESSION_PAGE_SIZE } from '@/constants';\nimport { fetchAppConfig, fetchSessionList, fetchSessionDetail, delSessionId, updateSessionTitle } from '@/services/api';\n// 图标\nimport documentIcon from '@/assets/document.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?: (data: Success) => void;\n onMessage?: (content: string, data: Messages) => void;\n}\nconst useAgentGenerator = ({\n url,\n token,\n config,\n onError,\n onMessage,\n onSuccess,\n}: UseAgentGeneratorProps) => {\n const textSpeed = 60;\n // 聊天记录\n const [messages, setMessages] = useState<Messages[]>([]);\n // 聊天记录分页设置\n // const [messagePagination, setMessagePagination] = useState({ total: 0, pageNum: 1, pageSize: 999 });\n // 会话记录\n const [sessionList, setSessionList] = useState<sessionData[]>([]);\n // 会话请求是否加载中\n // const [sessionLoading, setSessionLoading] = useState<boolean>(false);\n // 会话分页设置\n const [sessionPagination, setSessionPagination] = useState({ total: 0, pageNum: 1, pageSize: SESSION_PAGE_SIZE });\n // 当前会话\n const [currentSessionId, setCurrentSessionId] = useState<string>('');\n // 应用 配置\n const [appInfo, setAppInfo] = useState<any>(null);\n // 请求 配置\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 // 成功回调\n onSuccess?.({\n code: SuccessCode.APP_CONFIG_INIT_SUCCESS,\n message: '初始化配置成功',\n });\n } else {\n onError?.({\n code: (result.code as ErrorCode) || ErrorCode.APP_NOT_FOUND,\n message: result.message || '获取应用配置失败',\n });\n }\n } catch (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 // 插到末尾\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 // 收到一条完整,触发收到消息回调\n onMessage?.(aiMsg?.content?.text ,aiMsg);\n // 重新获取历史对话列表\n initAppConversations(false);\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 setMessages((prev) => {\n const prologueMessageIndex = prev.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 return [newMessage, ...prev];\n }\n return 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 setMessages((prev) => {\n const suggestMessageIndex = prev.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex === -1) {\n const prologueMessageIndex = prev.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 return [newMessage, ...prev];\n }\n // 如果有开场白,则插到开场白后面\n const newMessages = [...prev];\n newMessages.splice(prologueMessageIndex + 1, 0, newMessage);\n return newMessages;\n }\n return 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 let newMessage: Messages;\n let inputs_msg;\n if (typeof content === 'string') {\n newMessage = {\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 } else {\n newMessage = {\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 ...content,\n }\n }\n\n if (typeof newMessage.content === 'object' && 'text' in newMessage.content && typeof newMessage.content.text === 'string') {\n inputs_msg = newMessage.content.text;\n } else {\n inputs_msg = '';\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,\n },\n sessionId: currentSessionId,\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 = newMessages.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 // 停止对话\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 const formatMessages = (data: any, init = false) => {\n setMessages((prev) => {\n const initMessagesList: Messages[] = [];\n data.forEach((item: any) => {\n const { content, messageTime, role } = item || {};\n\n if (role === 'USER') {\n const newMessage: Messages = {\n type: 'TextMessage',\n id: uuidV4(),\n createdAt: messageTime,\n role: MessageRole.user,\n status: MessageStatus.done,\n content: {\n text: content,\n },\n };\n\n initMessagesList.push(newMessage);\n } else if (role === 'AI') {\n const newMessage: TextMessage = {\n id: uuidV4(),\n type: 'TextMessage',\n createdAt: messageTime,\n role: MessageRole.assistant,\n content: { text: content },\n thinks: [],\n status: MessageStatus.done,\n };\n\n initMessagesList.push(newMessage);\n }\n });\n\n if (init) {\n return [...initMessagesList];\n }\n return [...prev, ...initMessagesList];\n });\n };\n\n // 初始化开场白\n const initPrologue = async () => {\n const { onboardingInfo = {} } = appInfo;\n // eslint-disable-next-line camelcase\n const { suggested_questions = [], prologue = '' } = onboardingInfo || {};\n\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 // 页面为空时展示开场白预设问题\n const hasMessages = messages.some((item) => (!item.extra?.prologue && item.type !== 'SuggestionMessage'));\n if (!hasMessages) {\n setMessage('suggest', suggestMessages);\n }\n } else {\n setMessages((prev) => prev.filter((item) => !(item.type === 'SuggestionMessage')));\n }\n };\n\n // 获取聊天记录\n const initAppConversations = async (fetchDetail: boolean = false) => {\n try {\n const result = await fetchSessionList({\n url,\n appNo,\n pt,\n tc,\n token,\n pageNum: sessionPagination.pageNum,\n pageSize: sessionPagination.pageSize,\n });\n\n if (result?.success) {\n const resultData = result?.data?.data || [];\n if (resultData.length > 0) {\n const formatSessions = resultData.map((item) => {\n return {\n key: item.sessionId,\n label: item.title || '新对话',\n timestamp: new Date(item.gmtCreated).getTime(),\n messages: [],\n meta: {\n ...item,\n }\n };\n });\n\n setSessionList(formatSessions);\n // 设置分页信息\n setSessionPagination({ pageNum: result?.data?.pageNum, pageSize: result?.data?.pageSize, total: result?.data?.totalCount })\n const { sessionId } = resultData[0];\n fetchDetail && setCurrentSessionDetail(sessionId);\n } else {\n // 页面报错 初始化\n setSessionList([]);\n setCurrentSessionId(uuidV4());\n initPrologue();\n }\n // 成功回调\n onSuccess?.({\n code: SuccessCode.APP_MESSAGES_INIT_SUCCESS,\n message: '初始化聊天记录成功',\n });\n } else {\n initPrologue();\n }\n } catch {\n //\n }\n };\n\n // 设置当前会话详情\n const setCurrentSessionDetail = async (sessionId: string) => {\n if (sessionId) {\n if (sessionId === currentSessionId) {\n return;\n }\n setCurrentSessionId(sessionId); // 设置当前会话 id;\n const sessionResult = await fetchSessionDetail({\n url,\n appNo,\n pt,\n tc,\n sessionId,\n token,\n });\n\n if (sessionResult?.success) {\n const sessionsData = (sessionResult?.data as any)?.list?.reduce((acc: any[], cur: any) => {\n return [...acc, ...(cur.sessionMessages || [])];\n }, []);\n\n if (sessionsData.length > 0) {\n formatMessages(sessionsData, true);\n }\n }\n } else {\n // 兼容 无 session异常\n setCurrentSessionId(uuidV4());\n }\n }\n\n // 删除会话\n const deleteSession = async (sessionId: string) => {\n if (!sessionId) return;\n const result = await delSessionId({\n url,\n appNo,\n pt,\n tc,\n sessionId,\n token,\n });\n if (result?.success) {\n // 删除成功后,重新获取会话列表\n initAppConversations(false);\n // 如果删除的是当前会话,则创建新的会话\n if (sessionId === currentSessionId) {\n createNewChat();\n }\n }\n }\n\n // 更新会话名称\n const updateSession = async (sessionId: string, title: string) => {\n if (!sessionId && !title) return;\n const result = await updateSessionTitle({\n url,\n appNo,\n pt,\n tc,\n title,\n sessionId,\n token,\n });\n if (result?.success) {\n // 编辑成功后,重新获取会话列表\n initAppConversations(false);\n }\n }\n\n\n // 生成新对话\n const createNewChat = () => {\n stopChat(); // 停止聊天\n setMessages([]); // 清空所有消息\n initPrologue(); // 初始化开场白和预置问题\n setCurrentSessionId(uuidV4()); // 设置会话 id\n }\n\n // 初始化应用\n useEffect(() => {\n if (appInfo) {\n // 初始化历史数据\n initAppConversations(true);\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 sessionList,\n currentSessionId,\n sessionPagination,\n initAppConversations,\n reChat,\n chat,\n createNewChat,\n setCurrentSessionId,\n setCurrentSessionDetail,\n updateSession,\n deleteSession,\n setMessage,\n setMessages,\n stopChat,\n initPrologue,\n };\n};\n\nexport default useAgentGenerator;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["ActionType", "ProcessStatus", "ActionAvailability", "uuidV4", "documentIcon", "qaIcon", "documentExpandIcon", "qaExpandIcon", "skillNoIcon", "toolIcon", "skillNoExpandIcon", "toolExpandIcon"]
|
|
7
7
|
}
|
|
@@ -105,3 +105,26 @@ export declare const fetchSessionDetail: ({ url, appNo, pt, tc, sessionId, pageS
|
|
|
105
105
|
pageNum?: number | undefined;
|
|
106
106
|
token: string;
|
|
107
107
|
}) => Promise<ApiResponse<sessionData[]>>;
|
|
108
|
+
/**
|
|
109
|
+
* 删除会话
|
|
110
|
+
*/
|
|
111
|
+
export declare const delSessionId: ({ url, appNo, pt, tc, sessionId, token }: {
|
|
112
|
+
url: string;
|
|
113
|
+
appNo: string;
|
|
114
|
+
pt: string;
|
|
115
|
+
tc: string;
|
|
116
|
+
sessionId: string;
|
|
117
|
+
token: string;
|
|
118
|
+
}) => Promise<ApiResponse<boolean>>;
|
|
119
|
+
/**
|
|
120
|
+
* 修改会话标题
|
|
121
|
+
*/
|
|
122
|
+
export declare const updateSessionTitle: ({ url, appNo, pt, tc, sessionId, title, token }: {
|
|
123
|
+
url: string;
|
|
124
|
+
appNo: string;
|
|
125
|
+
pt: string;
|
|
126
|
+
tc: string;
|
|
127
|
+
sessionId: string;
|
|
128
|
+
title: string;
|
|
129
|
+
token: string;
|
|
130
|
+
}) => Promise<ApiResponse<boolean>>;
|
package/dist/cjs/services/api.js
CHANGED
|
@@ -19,10 +19,12 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
19
19
|
// src/services/api.ts
|
|
20
20
|
var api_exports = {};
|
|
21
21
|
__export(api_exports, {
|
|
22
|
+
delSessionId: () => delSessionId,
|
|
22
23
|
fetchAppConfig: () => fetchAppConfig,
|
|
23
24
|
fetchSessionDetail: () => fetchSessionDetail,
|
|
24
25
|
fetchSessionList: () => fetchSessionList,
|
|
25
|
-
sendMessage: () => sendMessage
|
|
26
|
+
sendMessage: () => sendMessage,
|
|
27
|
+
updateSessionTitle: () => updateSessionTitle
|
|
26
28
|
});
|
|
27
29
|
module.exports = __toCommonJS(api_exports);
|
|
28
30
|
var import_request = require("../utils/request");
|
|
@@ -72,11 +74,42 @@ var fetchSessionDetail = async ({ url, appNo, pt, tc, sessionId, pageSize = 999,
|
|
|
72
74
|
});
|
|
73
75
|
return response.data;
|
|
74
76
|
};
|
|
77
|
+
var delSessionId = async ({ url, appNo, pt, tc, sessionId, token }) => {
|
|
78
|
+
const response = await import_request.request.post(`${url}/appouter/${appNo}/delSessionId`, {
|
|
79
|
+
sessionId
|
|
80
|
+
}, {
|
|
81
|
+
params: {
|
|
82
|
+
pt,
|
|
83
|
+
tc
|
|
84
|
+
},
|
|
85
|
+
headers: {
|
|
86
|
+
Authorization: `Bearer ${token}`
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
return response.data;
|
|
90
|
+
};
|
|
91
|
+
var updateSessionTitle = async ({ url, appNo, pt, tc, sessionId, title, token }) => {
|
|
92
|
+
const response = await import_request.request.post(`${url}/appouter/${appNo}/updateSessionTitle`, {
|
|
93
|
+
sessionId,
|
|
94
|
+
title
|
|
95
|
+
}, {
|
|
96
|
+
params: {
|
|
97
|
+
pt,
|
|
98
|
+
tc
|
|
99
|
+
},
|
|
100
|
+
headers: {
|
|
101
|
+
Authorization: `Bearer ${token}`
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
return response.data;
|
|
105
|
+
};
|
|
75
106
|
// Annotate the CommonJS export names for ESM import in node:
|
|
76
107
|
0 && (module.exports = {
|
|
108
|
+
delSessionId,
|
|
77
109
|
fetchAppConfig,
|
|
78
110
|
fetchSessionDetail,
|
|
79
111
|
fetchSessionList,
|
|
80
|
-
sendMessage
|
|
112
|
+
sendMessage,
|
|
113
|
+
updateSessionTitle
|
|
81
114
|
});
|
|
82
115
|
//# sourceMappingURL=api.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/services/api.ts"],
|
|
4
|
-
"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 // eslint-disable-next-line camelcase\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// 会话记录\nexport interface sessionData {\n data: {\n sessionId: string;\n gmtCreated: string;\n userId: string;\n title: string;\n botNo: string;\n appNo: string;\n }[];\n pageNum: number;\n pageSize: number;\n totalCount: number;\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\n/**\n * 获取会话列表\n */\nexport const fetchSessionList = async ({ url, appNo, pt, tc, pageSize = 10, pageNum = 1, token }:\n { url: string; appNo: string; pt: string; tc: string; pageSize?: number; pageNum?: number; token: string }) => {\n const response = await request.post<ApiResponse<sessionData>>(`${url}/appouter/${appNo}/sessionIds`, {}, {\n params: {\n pt,\n tc,\n pageSize,\n pageNum,\n },\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n\n return response.data;\n};\n\n/**\n * 获取会话明细\n */\nexport const fetchSessionDetail = async ({ url, appNo, pt, tc, sessionId, pageSize = 999, pageNum = 1, token }:\n { url: string; appNo: string; pt: string; tc: string; sessionId: string; pageSize?: number; pageNum?: number; token: string }) => {\n const response = await request.post<ApiResponse<sessionData[]>>(`${url}/appouter/${appNo}/sessionDetails`, {}, {\n params: {\n pt,\n tc,\n sessionId,\n pageSize,\n pageNum,\n },\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n\n return response.data;\n};\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAwB;AA4EjB,IAAM,iBAAiB,OAAO,EAAE,KAAK,OAAO,IAAI,GAAG,MAAgG;AACxJ,QAAM,WAAW,MAAM,uBAAQ,KAA8B,GAAG,uBAAuB,iBAAiB,CAAC,GAAG;AAAA,IAC1G,QAAQ;AAAA,MACN;AAAA,MAAI;AAAA,IACN;AAAA,EACF,CAAC;AACD,SAAO,SAAS;AAClB;AAMO,IAAM,cAAc,OAAO,EAAE,KAAK,OAAO,IAAI,IAAI,IAAI,MAA6G;AACvK,QAAM,WAAW,MAAM,uBAAQ,KAA8B,GAAG,gBAAgB,iBAAiB;AAAA,IAC/F;AAAA,IAAI;AAAA,IAAI;AAAA,EACV,CAAC;AACD,SAAO,SAAS;AAClB;AAKO,IAAM,mBAAmB,OAAO,EAAE,KAAK,OAAO,IAAI,IAAI,WAAW,IAAI,UAAU,GAAG,MAAM,MACkB;AAC/G,QAAM,WAAW,MAAM,uBAAQ,KAA+B,GAAG,gBAAgB,oBAAoB,CAAC,GAAG;AAAA,IACvG,QAAQ;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,SAAS;AAAA,MACP,eAAe,UAAU;AAAA,IAC3B;AAAA,EACF,CAAC;AAED,SAAO,SAAS;AAClB;AAKO,IAAM,qBAAqB,OAAO,EAAE,KAAK,OAAO,IAAI,IAAI,WAAW,WAAW,KAAK,UAAU,GAAG,MAAM,MACuB;AAClI,QAAM,WAAW,MAAM,uBAAQ,KAAiC,GAAG,gBAAgB,wBAAwB,CAAC,GAAG;AAAA,IAC7G,QAAQ;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,SAAS;AAAA,MACP,eAAe,UAAU;AAAA,IAC3B;AAAA,EACF,CAAC;AAED,SAAO,SAAS;AAClB;",
|
|
4
|
+
"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 // eslint-disable-next-line camelcase\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// 会话记录\nexport interface sessionData {\n data: {\n sessionId: string;\n gmtCreated: string;\n userId: string;\n title: string;\n botNo: string;\n appNo: string;\n }[];\n pageNum: number;\n pageSize: number;\n totalCount: number;\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\n/**\n * 获取会话列表\n */\nexport const fetchSessionList = async ({ url, appNo, pt, tc, pageSize = 10, pageNum = 1, token }:\n { url: string; appNo: string; pt: string; tc: string; pageSize?: number; pageNum?: number; token: string }) => {\n const response = await request.post<ApiResponse<sessionData>>(`${url}/appouter/${appNo}/sessionIds`, {}, {\n params: {\n pt,\n tc,\n pageSize,\n pageNum,\n },\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n\n return response.data;\n};\n\n/**\n * 获取会话明细\n */\nexport const fetchSessionDetail = async ({ url, appNo, pt, tc, sessionId, pageSize = 999, pageNum = 1, token }:\n { url: string; appNo: string; pt: string; tc: string; sessionId: string; pageSize?: number; pageNum?: number; token: string }) => {\n const response = await request.post<ApiResponse<sessionData[]>>(`${url}/appouter/${appNo}/sessionDetails`, {}, {\n params: {\n pt,\n tc,\n sessionId,\n pageSize,\n pageNum,\n },\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n\n return response.data;\n};\n\n\n/**\n * 删除会话\n */\nexport const delSessionId = async ({ url, appNo, pt, tc, sessionId, token }:\n { url: string; appNo: string; pt: string; tc: string; sessionId: string; token: string }) => {\n const response = await request.post<ApiResponse<boolean>>(`${url}/appouter/${appNo}/delSessionId`, {\n sessionId,\n }, {\n params: {\n pt,\n tc,\n },\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n\n return response.data;\n}\n\n/**\n * 修改会话标题\n */\nexport const updateSessionTitle = async ({ url, appNo, pt, tc, sessionId, title, token }:\n { url: string; appNo: string; pt: string; tc: string; sessionId: string; title: string; token: string }) => {\n const response = await request.post<ApiResponse<boolean>>(`${url}/appouter/${appNo}/updateSessionTitle`, {\n sessionId,\n title,\n }, {\n params: {\n pt,\n tc,\n },\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n\n return response.data;\n}"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAwB;AA4EjB,IAAM,iBAAiB,OAAO,EAAE,KAAK,OAAO,IAAI,GAAG,MAAgG;AACxJ,QAAM,WAAW,MAAM,uBAAQ,KAA8B,GAAG,uBAAuB,iBAAiB,CAAC,GAAG;AAAA,IAC1G,QAAQ;AAAA,MACN;AAAA,MAAI;AAAA,IACN;AAAA,EACF,CAAC;AACD,SAAO,SAAS;AAClB;AAMO,IAAM,cAAc,OAAO,EAAE,KAAK,OAAO,IAAI,IAAI,IAAI,MAA6G;AACvK,QAAM,WAAW,MAAM,uBAAQ,KAA8B,GAAG,gBAAgB,iBAAiB;AAAA,IAC/F;AAAA,IAAI;AAAA,IAAI;AAAA,EACV,CAAC;AACD,SAAO,SAAS;AAClB;AAKO,IAAM,mBAAmB,OAAO,EAAE,KAAK,OAAO,IAAI,IAAI,WAAW,IAAI,UAAU,GAAG,MAAM,MACkB;AAC/G,QAAM,WAAW,MAAM,uBAAQ,KAA+B,GAAG,gBAAgB,oBAAoB,CAAC,GAAG;AAAA,IACvG,QAAQ;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,SAAS;AAAA,MACP,eAAe,UAAU;AAAA,IAC3B;AAAA,EACF,CAAC;AAED,SAAO,SAAS;AAClB;AAKO,IAAM,qBAAqB,OAAO,EAAE,KAAK,OAAO,IAAI,IAAI,WAAW,WAAW,KAAK,UAAU,GAAG,MAAM,MACuB;AAClI,QAAM,WAAW,MAAM,uBAAQ,KAAiC,GAAG,gBAAgB,wBAAwB,CAAC,GAAG;AAAA,IAC7G,QAAQ;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,SAAS;AAAA,MACP,eAAe,UAAU;AAAA,IAC3B;AAAA,EACF,CAAC;AAED,SAAO,SAAS;AAClB;AAMO,IAAM,eAAe,OAAO,EAAE,KAAK,OAAO,IAAI,IAAI,WAAW,MAAM,MACqB;AAC7F,QAAM,WAAW,MAAM,uBAAQ,KAA2B,GAAG,gBAAgB,sBAAsB;AAAA,IACjG;AAAA,EACF,GAAG;AAAA,IACD,QAAQ;AAAA,MACN;AAAA,MACA;AAAA,IACF;AAAA,IACA,SAAS;AAAA,MACP,eAAe,UAAU;AAAA,IAC3B;AAAA,EACF,CAAC;AAED,SAAO,SAAS;AAClB;AAKO,IAAM,qBAAqB,OAAO,EAAE,KAAK,OAAO,IAAI,IAAI,WAAW,OAAO,MAAM,MACuB;AAC5G,QAAM,WAAW,MAAM,uBAAQ,KAA2B,GAAG,gBAAgB,4BAA4B;AAAA,IACvG;AAAA,IACA;AAAA,EACF,GAAG;AAAA,IACD,QAAQ;AAAA,MACN;AAAA,MACA;AAAA,IACF;AAAA,IACA,SAAS;AAAA,MACP,eAAe,UAAU;AAAA,IAC3B;AAAA,EACF,CAAC;AAED,SAAO,SAAS;AAClB;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -140,6 +140,8 @@ export interface XAiChatbotProps extends ChatbotMessageFields {
|
|
|
140
140
|
userAvatar?: ReactNode;
|
|
141
141
|
/** 发送按钮 */
|
|
142
142
|
sendBtn?: ReactNode;
|
|
143
|
+
/** 是否展示清空按钮 */
|
|
144
|
+
clearBtnShow?: boolean;
|
|
143
145
|
/** 工具栏点击回调 */
|
|
144
146
|
onToolbarClick?: (item: ToolbarItemProps, event: MouseEvent) => void;
|
|
145
147
|
/** 工具栏打开/关闭回调 */
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/types/XAiChatbot.ts"],
|
|
4
|
-
"sourcesContent": ["import React, { ReactNode, RefObject, ChangeEvent, FocusEvent, MouseEvent } from 'react';\nimport type { PromptProps } from '@ant-design/x';\nimport type { MessageType } from 'src/client/base';\nimport type { Messages } from './XAiMessage';\n\n// 类型定义\nexport interface User {\n id: string;\n name: string;\n avatar?: string;\n }\n\nexport interface MessageProps {\n _id: string;\n type: string;\n content: Record<string, any>;\n createdAt: number;\n user: User;\n position?: 'left' | 'right' | 'center' | 'pop';\n hasTime?: boolean;\n status?: 'pending' | 'sent' | 'fail';\n }\n\nexport interface QuickReplyItemProps {\n name: string;\n code: string;\n icon?: string;\n img?: string;\n isNew?: boolean;\n isHighlight?: boolean;\n }\n\nexport interface ComposerHandle {\n setText: (text: string) => void;\n }\n\nexport interface ScrollToEndOptions {\n animated?: boolean;\n force?: boolean;\n }\n\nexport interface MessageContainerHandle {\n scrollToEnd: (options?: ScrollToEndOptions) => void;\n }\n\nexport interface NavbarProps {\n title?: string;\n subtitle?: string;\n avatar?: string;\n}\n\nexport interface ToolbarItemProps {\n id: string;\n icon: string;\n label: string;\n disabled?: boolean;\n }\n\nexport interface IconButtonProps {\n icon: string;\n onClick: () => void;\n disabled?: boolean;\n }\n\nexport interface RecorderProps {\n onStart?: () => void;\n onStop?: (audioBlob: Blob) => void;\n onError?: (error: Error) => void;\n }\n\nexport type InputType = 'text' | 'voice';\n\n// chatbot 会话字段\nexport interface ChatbotMessageFields {\n messages?: MessageType[];\n setMessages?: React.Dispatch<React.SetStateAction<MessageType[]>>;\n /** 发送消息回调 */\n onSend?: (type: string, content: string) => void;\n /** 清空消息回调 */\n onClear?: () => void;\n /** 停止生成回调 */\n onStop?: () => void;\n}\n\nexport interface ActionItem {\n key?: string;\n icon: React.ReactNode;\n tooltip?: string;\n}\n\n/**\n * AI 聊天机器人组件\n */\nexport interface XAiChatbotProps extends ChatbotMessageFields {\n /** 宽屏断点 */\n wideBreakpoint?: string;\n /** 导航栏展示 */\n navbarShow?: boolean;\n /** 导航栏配置 */\n navbar?: NavbarProps;\n /** 导航栏渲染函数,会覆盖 navbar */\n renderNavbar?: () => ReactNode;\n /** 是否加载中 */\n loading?: boolean;\n /** 加载更多文案 */\n loadMoreText?: string;\n /** 在消息列表上面的渲染函数 */\n renderBeforeMessageList?: () => ReactNode;\n /** 消息列表 ref */\n messagesRef?: RefObject<MessageContainerHandle>;\n /** 下拉加载回调 */\n onRefresh?: () => Promise<any>;\n /** 滚动消息列表回调 */\n onScroll?: (event: React.UIEvent<HTMLDivElement, UIEvent>) => void;\n /** 消息内容渲染函数 */\n renderMessageContent?: (message: MessageProps) => ReactNode;\n /** 快捷短语列表 */\n quickReplies?: QuickReplyItemProps[];\n /** 快捷短语是否可见 */\n quickRepliesVisible?: boolean;\n /** 点击快速回复回调 */\n onQuickReplyClick?: (item: QuickReplyItemProps, index: number) => void;\n /** 快捷短语的滚动回调 */\n onQuickReplyScroll?: () => void;\n /** 快捷短语渲染函数,会覆盖 quickReplies */\n renderQuickReplies?: () => ReactNode;\n /** 输入区 ref */\n composerRef?: RefObject<ComposerHandle>;\n /** 输入框初始内容 */\n text?: string;\n /** 空状态图片 */\n emptyStateImage?: string;\n /** 空状态文案 */\n emptyStateText?: string;\n /** 输入框占位符 */\n placeholder?: string;\n /** 输入框聚焦回调 */\n onInputFocus?: (event: FocusEvent) => void;\n /** 输入框更新回调 */\n onInputChange?: (value: string, event: ChangeEvent) => void;\n /** 输入框失去焦点回调 */\n onInputBlur?: (event: FocusEvent) => void;\n /** 输入框粘贴图片后的回调 */\n onImageSend?: (file: File) => Promise<any>;\n /** 输入方式 */\n inputType?: InputType;\n /** 输入方式切换回调 */\n onInputTypeChange?: (inputType: InputType) => void;\n /** 语音输入配置 */\n recorder?: RecorderProps;\n /** 工具栏配置 */\n toolbar?: ToolbarItemProps[];\n /** AI头像 */\n avatar?: ReactNode;\n /** 用户头像 */\n userAvatar?: ReactNode;\n /** 发送按钮 */\n sendBtn?: ReactNode;\n /** 工具栏点击回调 */\n onToolbarClick?: (item: ToolbarItemProps, event: MouseEvent) => void;\n /** 工具栏打开/关闭回调 */\n onAccessoryToggle?: (isAccessoryOpen: boolean) => void;\n /** 输入框右边图标按钮配置 */\n rightAction?: IconButtonProps;\n /** 上传按钮是否显示 */\n uploadBtnShow?: boolean;\n /** 底部文案 */\n footerTips?: string;\n /** 帮助消息点击回调 */\n onSuggestMessageClick?: (item: PromptProps, id: string) => void;\n /** 消息左下角展示字段 */\n messageTooltip?: (msg: Messages) => React.ReactNode;\n /** 消息右下角功能区 */\n messageActions?: ActionItem[];\n /** 消息右下角功能区点击回调 */\n onMessagesActionsCallback?: (index: number, data: Messages) => void; // 点击回调\n /** 输入组件 */\n Composer?: React.ElementType;\n }\n"],
|
|
4
|
+
"sourcesContent": ["import React, { ReactNode, RefObject, ChangeEvent, FocusEvent, MouseEvent } from 'react';\nimport type { PromptProps } from '@ant-design/x';\nimport type { MessageType } from 'src/client/base';\nimport type { Messages } from './XAiMessage';\n\n// 类型定义\nexport interface User {\n id: string;\n name: string;\n avatar?: string;\n }\n\nexport interface MessageProps {\n _id: string;\n type: string;\n content: Record<string, any>;\n createdAt: number;\n user: User;\n position?: 'left' | 'right' | 'center' | 'pop';\n hasTime?: boolean;\n status?: 'pending' | 'sent' | 'fail';\n }\n\nexport interface QuickReplyItemProps {\n name: string;\n code: string;\n icon?: string;\n img?: string;\n isNew?: boolean;\n isHighlight?: boolean;\n }\n\nexport interface ComposerHandle {\n setText: (text: string) => void;\n }\n\nexport interface ScrollToEndOptions {\n animated?: boolean;\n force?: boolean;\n }\n\nexport interface MessageContainerHandle {\n scrollToEnd: (options?: ScrollToEndOptions) => void;\n }\n\nexport interface NavbarProps {\n title?: string;\n subtitle?: string;\n avatar?: string;\n}\n\nexport interface ToolbarItemProps {\n id: string;\n icon: string;\n label: string;\n disabled?: boolean;\n }\n\nexport interface IconButtonProps {\n icon: string;\n onClick: () => void;\n disabled?: boolean;\n }\n\nexport interface RecorderProps {\n onStart?: () => void;\n onStop?: (audioBlob: Blob) => void;\n onError?: (error: Error) => void;\n }\n\nexport type InputType = 'text' | 'voice';\n\n// chatbot 会话字段\nexport interface ChatbotMessageFields {\n messages?: MessageType[];\n setMessages?: React.Dispatch<React.SetStateAction<MessageType[]>>;\n /** 发送消息回调 */\n onSend?: (type: string, content: string) => void;\n /** 清空消息回调 */\n onClear?: () => void;\n /** 停止生成回调 */\n onStop?: () => void;\n}\n\nexport interface ActionItem {\n key?: string;\n icon: React.ReactNode;\n tooltip?: string;\n}\n\n/**\n * AI 聊天机器人组件\n */\nexport interface XAiChatbotProps extends ChatbotMessageFields {\n /** 宽屏断点 */\n wideBreakpoint?: string;\n /** 导航栏展示 */\n navbarShow?: boolean;\n /** 导航栏配置 */\n navbar?: NavbarProps;\n /** 导航栏渲染函数,会覆盖 navbar */\n renderNavbar?: () => ReactNode;\n /** 是否加载中 */\n loading?: boolean;\n /** 加载更多文案 */\n loadMoreText?: string;\n /** 在消息列表上面的渲染函数 */\n renderBeforeMessageList?: () => ReactNode;\n /** 消息列表 ref */\n messagesRef?: RefObject<MessageContainerHandle>;\n /** 下拉加载回调 */\n onRefresh?: () => Promise<any>;\n /** 滚动消息列表回调 */\n onScroll?: (event: React.UIEvent<HTMLDivElement, UIEvent>) => void;\n /** 消息内容渲染函数 */\n renderMessageContent?: (message: MessageProps) => ReactNode;\n /** 快捷短语列表 */\n quickReplies?: QuickReplyItemProps[];\n /** 快捷短语是否可见 */\n quickRepliesVisible?: boolean;\n /** 点击快速回复回调 */\n onQuickReplyClick?: (item: QuickReplyItemProps, index: number) => void;\n /** 快捷短语的滚动回调 */\n onQuickReplyScroll?: () => void;\n /** 快捷短语渲染函数,会覆盖 quickReplies */\n renderQuickReplies?: () => ReactNode;\n /** 输入区 ref */\n composerRef?: RefObject<ComposerHandle>;\n /** 输入框初始内容 */\n text?: string;\n /** 空状态图片 */\n emptyStateImage?: string;\n /** 空状态文案 */\n emptyStateText?: string;\n /** 输入框占位符 */\n placeholder?: string;\n /** 输入框聚焦回调 */\n onInputFocus?: (event: FocusEvent) => void;\n /** 输入框更新回调 */\n onInputChange?: (value: string, event: ChangeEvent) => void;\n /** 输入框失去焦点回调 */\n onInputBlur?: (event: FocusEvent) => void;\n /** 输入框粘贴图片后的回调 */\n onImageSend?: (file: File) => Promise<any>;\n /** 输入方式 */\n inputType?: InputType;\n /** 输入方式切换回调 */\n onInputTypeChange?: (inputType: InputType) => void;\n /** 语音输入配置 */\n recorder?: RecorderProps;\n /** 工具栏配置 */\n toolbar?: ToolbarItemProps[];\n /** AI头像 */\n avatar?: ReactNode;\n /** 用户头像 */\n userAvatar?: ReactNode;\n /** 发送按钮 */\n sendBtn?: ReactNode;\n /** 是否展示清空按钮 */\n clearBtnShow? : boolean;\n /** 工具栏点击回调 */\n onToolbarClick?: (item: ToolbarItemProps, event: MouseEvent) => void;\n /** 工具栏打开/关闭回调 */\n onAccessoryToggle?: (isAccessoryOpen: boolean) => void;\n /** 输入框右边图标按钮配置 */\n rightAction?: IconButtonProps;\n /** 上传按钮是否显示 */\n uploadBtnShow?: boolean;\n /** 底部文案 */\n footerTips?: string;\n /** 帮助消息点击回调 */\n onSuggestMessageClick?: (item: PromptProps, id: string) => void;\n /** 消息左下角展示字段 */\n messageTooltip?: (msg: Messages) => React.ReactNode;\n /** 消息右下角功能区 */\n messageActions?: ActionItem[];\n /** 消息右下角功能区点击回调 */\n onMessagesActionsCallback?: (index: number, data: Messages) => void; // 点击回调\n /** 输入组件 */\n Composer?: React.ElementType;\n }\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/types/XAiConversations.ts"],
|
|
4
|
-
"sourcesContent": ["import { type ConversationsProps, type Conversation } from '@ant-design/x';\n\ntype OmitItems = Omit<ConversationsProps, 'items'>;\n\nexport interface sessionData extends Conversation {\n meta?: any;\n}\n\nexport interface XAiConversationsProps extends OmitItems {\n /** 配色 */\n color?: string;\n /** 会话列表,替换原来的 items 字段 */\n sessionList?: sessionData[];\n /** session总数,当设置该值时,会增加自动加载逻辑 */\n sessionTotal?: number;\n /** 加载更多函数 */\n loadMoreSession?: () => void;\n}\n"],
|
|
4
|
+
"sourcesContent": ["import { type ConversationsProps, type Conversation } from '@ant-design/x';\n\ntype OmitItems = Omit<ConversationsProps, 'items'>;\n\nexport interface sessionData extends Conversation {\n meta?: any;\n}\n\nexport interface XAiConversationsProps extends OmitItems {\n /** 配色 */\n color?: string;\n /** 会话列表,替换原来的 items 字段 */\n sessionList?: sessionData[];\n /** session总数,当设置该值时,会增加自动加载逻辑 */\n sessionTotal?: number;\n /** 加载更多函数 */\n loadMoreSession?: () => void;\n /** 点击生成新对话回调 */\n onNewChat?: () => void;\n}\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/types/XAiMessage.ts"],
|
|
4
|
-
"sourcesContent": ["import type { PromptsProps } from '@ant-design/x';\n\nexport type MessageType =\n| 'TextMessage'\n| 'ActionExecutionMessage'\n| 'ResultMessage'\n| 'AgentStateMessage'\n| 'ImageMessage'\n| 'SuggestionMessage';\n\nexport enum MessageRole {\n user = 'user', // 用户\n assistant = 'assistant', // AI助手\n suggestion = 'suggestion', // 建议\n system = 'system', // 工具\n}\n\nexport enum MessageStatus {\n init = 'init',\n pending = 'pending', // 生成中/接收中\n done = 'done', // 已完成\n failed = 'failed', // 失败\n recalled = 'recalled', // 已撤回\n deleted = 'deleted', // 已删除\n}\n\n/**\n* 所有消息的基础结构\n*/\nexport interface BaseMessage {\n id: string; // 消息唯一ID\n type: MessageType; // 消息类型\n createdAt: Date; // 创建时间\n status?: MessageStatus; // 内容是否生成中\n thinks?: ActionExecutionMessage[]; // 思考过程\n extra?: any; // 额外消息\n}\n\n/**\n* 文本消息\n*/\nexport interface TextMessage extends BaseMessage {\n type: 'TextMessage';\n role: MessageRole; // 发送者角色\n content: {\n text: string; // 文本内容\n };\n parentMessageId?: string; // 父消息ID(可选)\n}\n\n/**\n* 工具/动作执行消息\n*/\nexport interface ActionExecutionMessage extends BaseMessage {\n type: 'ActionExecutionMessage';\n name: string; // 动作/工具名称\n arguments?: Record<string, any>; // 执行参数\n parentMessageId?: string;\n extra?: any; // 额外信息\n}\n\n/**\n* 工具/动作执行结果消息\n*/\nexport interface ResultMessage extends BaseMessage {\n type: 'ResultMessage';\n actionExecutionId: string; // 执行ID\n actionName: string; // 动作/工具名称\n result: string; // 执行结果\n}\n\n/**\n* 智能体状态消息\n*/\nexport interface AgentStateMessage extends BaseMessage {\n type: 'AgentStateMessage';\n threadId: string; // 线程ID\n agentName: string; // agent名称\n nodeName: string; // 节点名称\n runId: string; // 运行ID\n active: boolean; // 是否激活\n role: MessageRole; // 角色\n state: any; // 状态内容\n running: boolean; // 是否运行中\n}\n\n/**\n* 图片消息\n*/\nexport interface ImageMessage extends BaseMessage {\n type: 'ImageMessage';\n content: {\n format: string; // 图片格式\n bytes: string; // base64内容\n thinks?: ActionExecutionMessage[]; // 思考过程\n };\n role: MessageRole;\n parentMessageId?: string;\n}\n\n/**\n * 提示消息\n */\nexport interface SuggestionMessage extends BaseMessage {\n type: 'SuggestionMessage';\n content: PromptsProps['items'];\n role: MessageRole;\n}\n\n/**\n* 消息输入类型(用于前端输入/组装)\n* 可选地包含不同类型的消息体\n*/\nexport interface MessageInput extends BaseMessage {\n textMessage?: Omit<TextMessage, 'id' | 'createdAt' | 'type'>;\n actionExecutionMessage?: Omit<ActionExecutionMessage, 'id' | 'createdAt' | 'type'>;\n resultMessage?: Omit<ResultMessage, 'id' | 'createdAt' | 'type'>;\n agentStateMessage?: Omit<AgentStateMessage, 'id' | 'createdAt' | 'type'>;\n imageMessage?: Omit<ImageMessage, 'id' | 'createdAt' | 'type'>;\n}\n\n/**\n* 消息列表中消息格式\n*/\nexport type Messages = TextMessage | ImageMessage | SuggestionMessage;\n\nexport enum ActionAvailability {\n disabled = 'disabled', // 不可用\n enabled = 'enabled', // 可用\n remote = 'remote', // 远程可用\n}\n\n/**\n* 工具/动作定义\n*/\nexport interface Action {\n name: string; // 名称\n description: string; // 描述\n jsonSchema: string; // 参数JSON Schema\n available?: ActionAvailability; // 可用性\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUO,IAAK,cAAL,kBAAKA,iBAAL;AACL,EAAAA,aAAA,UAAO;AACP,EAAAA,aAAA,eAAY;AACZ,EAAAA,aAAA,gBAAa;AACb,EAAAA,aAAA,YAAS;AAJC,SAAAA;AAAA,GAAA;AAOL,IAAK,gBAAL,kBAAKC,mBAAL;AACL,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,cAAW;AACX,EAAAA,eAAA,aAAU;AANA,SAAAA;AAAA,GAAA;
|
|
4
|
+
"sourcesContent": ["import type { PromptsProps } from '@ant-design/x';\n\nexport type MessageType =\n| 'TextMessage'\n| 'ActionExecutionMessage'\n| 'ResultMessage'\n| 'AgentStateMessage'\n| 'ImageMessage'\n| 'SuggestionMessage';\n\nexport enum MessageRole {\n user = 'user', // 用户\n assistant = 'assistant', // AI助手\n suggestion = 'suggestion', // 建议\n system = 'system', // 工具\n}\n\nexport enum MessageStatus {\n init = 'init',\n pending = 'pending', // 生成中/接收中\n done = 'done', // 已完成\n failed = 'failed', // 失败\n recalled = 'recalled', // 已撤回\n deleted = 'deleted', // 已删除\n}\n\n/**\n* 所有消息的基础结构\n*/\nexport interface BaseMessage {\n id: string; // 消息唯一ID\n type: MessageType; // 消息类型\n createdAt: Date; // 创建时间\n status?: MessageStatus; // 内容是否生成中\n thinks?: ActionExecutionMessage[]; // 思考过程\n extra?: any; // 额外消息\n}\n\n/**\n* 文本消息\n*/\nexport interface TextMessage extends BaseMessage {\n type: 'TextMessage';\n role: MessageRole; // 发送者角色\n content: {\n text: string; // 文本内容\n };\n parentMessageId?: string; // 父消息ID(可选)\n}\n\n\n/**\n* 工具/动作执行消息\n*/\nexport interface ActionExecutionMessage extends BaseMessage {\n type: 'ActionExecutionMessage';\n name: string; // 动作/工具名称\n arguments?: Record<string, any>; // 执行参数\n parentMessageId?: string;\n extra?: any; // 额外信息\n}\n\n/**\n* 工具/动作执行结果消息\n*/\nexport interface ResultMessage extends BaseMessage {\n type: 'ResultMessage';\n actionExecutionId: string; // 执行ID\n actionName: string; // 动作/工具名称\n result: string; // 执行结果\n}\n\n/**\n* 智能体状态消息\n*/\nexport interface AgentStateMessage extends BaseMessage {\n type: 'AgentStateMessage';\n threadId: string; // 线程ID\n agentName: string; // agent名称\n nodeName: string; // 节点名称\n runId: string; // 运行ID\n active: boolean; // 是否激活\n role: MessageRole; // 角色\n state: any; // 状态内容\n running: boolean; // 是否运行中\n}\n\n/**\n* 图片消息\n*/\nexport interface ImageMessage extends BaseMessage {\n type: 'ImageMessage';\n content: {\n format: string; // 图片格式\n bytes: string; // base64内容\n thinks?: ActionExecutionMessage[]; // 思考过程\n };\n role: MessageRole;\n parentMessageId?: string;\n}\n\n/**\n * 提示消息\n */\nexport interface SuggestionMessage extends BaseMessage {\n type: 'SuggestionMessage';\n content: PromptsProps['items'];\n role: MessageRole;\n}\n\n/**\n* 消息输入类型(用于前端输入/组装)\n* 可选地包含不同类型的消息体\n*/\nexport interface MessageInput extends BaseMessage {\n textMessage?: Omit<TextMessage, 'id' | 'createdAt' | 'type'>;\n actionExecutionMessage?: Omit<ActionExecutionMessage, 'id' | 'createdAt' | 'type'>;\n resultMessage?: Omit<ResultMessage, 'id' | 'createdAt' | 'type'>;\n agentStateMessage?: Omit<AgentStateMessage, 'id' | 'createdAt' | 'type'>;\n imageMessage?: Omit<ImageMessage, 'id' | 'createdAt' | 'type'>;\n}\n\n/**\n* 消息列表中消息格式\n*/\nexport type Messages = TextMessage | ImageMessage | SuggestionMessage;\n\nexport enum ActionAvailability {\n disabled = 'disabled', // 不可用\n enabled = 'enabled', // 可用\n remote = 'remote', // 远程可用\n}\n\n/**\n* 工具/动作定义\n*/\nexport interface Action {\n name: string; // 名称\n description: string; // 描述\n jsonSchema: string; // 参数JSON Schema\n available?: ActionAvailability; // 可用性\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUO,IAAK,cAAL,kBAAKA,iBAAL;AACL,EAAAA,aAAA,UAAO;AACP,EAAAA,aAAA,eAAY;AACZ,EAAAA,aAAA,gBAAa;AACb,EAAAA,aAAA,YAAS;AAJC,SAAAA;AAAA,GAAA;AAOL,IAAK,gBAAL,kBAAKC,mBAAL;AACL,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,cAAW;AACX,EAAAA,eAAA,aAAU;AANA,SAAAA;AAAA,GAAA;AA8GL,IAAK,qBAAL,kBAAKC,wBAAL;AACL,EAAAA,oBAAA,cAAW;AACX,EAAAA,oBAAA,aAAU;AACV,EAAAA,oBAAA,YAAS;AAHC,SAAAA;AAAA,GAAA;",
|
|
6
6
|
"names": ["MessageRole", "MessageStatus", "ActionAvailability"]
|
|
7
7
|
}
|