@ai-group/chat-sdk 0.2.7 → 0.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +93 -214
  2. package/dist/cjs/components/XAiChatbot/index.js +2 -2
  3. package/dist/cjs/components/XAiChatbot/index.js.map +2 -2
  4. package/dist/cjs/components/XAiChatbot/styles.d.ts +1 -0
  5. package/dist/cjs/components/XAiChatbot/styles.js +18 -1
  6. package/dist/cjs/components/XAiChatbot/styles.js.map +2 -2
  7. package/dist/cjs/components/XAiProvider/index.js +3 -1
  8. package/dist/cjs/components/XAiProvider/index.js.map +2 -2
  9. package/dist/cjs/components/XAiWebSDKWrapper.js +7 -1
  10. package/dist/cjs/components/XAiWebSDKWrapper.js.map +2 -2
  11. package/dist/cjs/hooks/useAgentGenerator.d.ts +7 -2
  12. package/dist/cjs/hooks/useAgentGenerator.js +48 -6
  13. package/dist/cjs/hooks/useAgentGenerator.js.map +2 -2
  14. package/dist/cjs/services/api.d.ts +32 -3
  15. package/dist/cjs/services/api.js.map +2 -2
  16. package/dist/cjs/types/XAiProvider.d.ts +14 -0
  17. package/dist/cjs/types/XAiProvider.js +9 -0
  18. package/dist/cjs/types/XAiProvider.js.map +3 -3
  19. package/dist/cjs/utils/umdEntry.d.ts +4 -1
  20. package/dist/cjs/utils/umdEntry.js +14 -12
  21. package/dist/cjs/utils/umdEntry.js.map +2 -2
  22. package/dist/esm/components/XAiChatbot/index.js +6 -8
  23. package/dist/esm/components/XAiChatbot/index.js.map +1 -1
  24. package/dist/esm/components/XAiChatbot/styles.d.ts +1 -0
  25. package/dist/esm/components/XAiChatbot/styles.js +37 -38
  26. package/dist/esm/components/XAiChatbot/styles.js.map +1 -1
  27. package/dist/esm/components/XAiProvider/index.js +5 -1
  28. package/dist/esm/components/XAiProvider/index.js.map +1 -1
  29. package/dist/esm/components/XAiWebSDKWrapper.js +4 -1
  30. package/dist/esm/components/XAiWebSDKWrapper.js.map +1 -1
  31. package/dist/esm/hooks/useAgentGenerator.d.ts +7 -2
  32. package/dist/esm/hooks/useAgentGenerator.js +66 -25
  33. package/dist/esm/hooks/useAgentGenerator.js.map +1 -1
  34. package/dist/esm/services/api.d.ts +32 -3
  35. package/dist/esm/services/api.js.map +1 -1
  36. package/dist/esm/types/XAiProvider.d.ts +14 -0
  37. package/dist/esm/types/XAiProvider.js +7 -0
  38. package/dist/esm/types/XAiProvider.js.map +1 -1
  39. package/dist/esm/utils/umdEntry.d.ts +4 -1
  40. package/dist/esm/utils/umdEntry.js +22 -18
  41. package/dist/esm/utils/umdEntry.js.map +1 -1
  42. package/dist/umd/chat-sdk.min.js +1 -1
  43. package/package.json +1 -1
@@ -7,6 +7,7 @@ import { useState, useEffect, useRef } from 'react';
7
7
  import { v4 as uuidV4 } from 'uuid';
8
8
  import { useEventStreamRequest } from "./useEventStreamRequest";
9
9
  import { MessageRole, MessageStatus } from "../types/XAiMessage";
10
+ import { ErrorCode } from "../types/XAiProvider";
10
11
  import { request } from "../utils/request";
11
12
  import { safeJsonParse } from "../utils";
12
13
  import { fetchAppConfig } from "../services/api";
@@ -56,7 +57,9 @@ export var ActionAvailability = /*#__PURE__*/function (ActionAvailability) {
56
57
  var useAgentGenerator = function useAgentGenerator(_ref) {
57
58
  var url = _ref.url,
58
59
  token = _ref.token,
59
- config = _ref.config;
60
+ config = _ref.config,
61
+ onError = _ref.onError,
62
+ onSuccess = _ref.onSuccess;
60
63
  var textSpeed = 60;
61
64
  var _useState = useState([]),
62
65
  _useState2 = _slicedToArray(_useState, 2),
@@ -77,7 +80,7 @@ var useAgentGenerator = function useAgentGenerator(_ref) {
77
80
  if (url && config) {
78
81
  var initConfig = /*#__PURE__*/function () {
79
82
  var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
80
- var result;
83
+ var result, _result$data, _ref4, enableFlag, isDeleted;
81
84
  return _regeneratorRuntime().wrap(function _callee$(_context) {
82
85
  while (1) switch (_context.prev = _context.next) {
83
86
  case 0:
@@ -90,16 +93,37 @@ var useAgentGenerator = function useAgentGenerator(_ref) {
90
93
  result = _context.sent;
91
94
  if (result.success) {
92
95
  setAppInfo(result.data);
96
+ _ref4 = ((_result$data = result.data) === null || _result$data === void 0 ? void 0 : _result$data.publishDTO) || {}, enableFlag = _ref4.enableFlag, isDeleted = _ref4.isDeleted;
97
+ if (!enableFlag) {
98
+ onError === null || onError === void 0 || onError({
99
+ code: ErrorCode.APP_NOT_ENABLE,
100
+ message: '应用未启用或者已下架'
101
+ });
102
+ } else if (isDeleted === 'Y') {
103
+ onError === null || onError === void 0 || onError({
104
+ code: ErrorCode.APP_DELETED,
105
+ message: '应用已下架'
106
+ });
107
+ } else {
108
+ onSuccess === null || onSuccess === void 0 || onSuccess(result.data);
109
+ }
93
110
  } else {
94
- console.error('获取聊天配置失败', result.message);
111
+ onError === null || onError === void 0 || onError({
112
+ code: ErrorCode.APP_NOT_FOUND,
113
+ message: (result === null || result === void 0 ? void 0 : result.message) || '获取聊天配置失败'
114
+ });
95
115
  }
96
- _context.next = 10;
116
+ _context.next = 11;
97
117
  break;
98
118
  case 7:
99
119
  _context.prev = 7;
100
120
  _context.t0 = _context["catch"](0);
101
121
  console.error('获取聊天配置失败', _context.t0);
102
- case 10:
122
+ onError === null || onError === void 0 || onError({
123
+ code: ErrorCode.API_ERROR,
124
+ message: '获取聊天配置失败'
125
+ });
126
+ case 11:
103
127
  case "end":
104
128
  return _context.stop();
105
129
  }
@@ -331,8 +355,8 @@ var useAgentGenerator = function useAgentGenerator(_ref) {
331
355
 
332
356
  // 添加对话(非普通对话)
333
357
  var setMessage = /*#__PURE__*/function () {
334
- var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(messageType, content) {
335
- var prologueMessageIndex, newMessage, suggestMessageIndex, _newMessage;
358
+ var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(messageType, content) {
359
+ var prologueMessageIndex, newMessage, suggestMessageIndex, _prologueMessageIndex, _newMessage;
336
360
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
337
361
  while (1) switch (_context2.prev = _context2.next) {
338
362
  case 0:
@@ -360,7 +384,7 @@ var useAgentGenerator = function useAgentGenerator(_ref) {
360
384
  }
361
385
  };
362
386
  setMessages(function (prev) {
363
- return [].concat(_toConsumableArray(prev), [newMessage]);
387
+ return [newMessage].concat(_toConsumableArray(prev));
364
388
  });
365
389
  } else {
366
390
  setMessages(function (prev) {
@@ -379,6 +403,10 @@ var useAgentGenerator = function useAgentGenerator(_ref) {
379
403
  return item.type === 'SuggestionMessage';
380
404
  });
381
405
  if (suggestMessageIndex === -1) {
406
+ _prologueMessageIndex = messages.findIndex(function (item) {
407
+ var _item$extra3;
408
+ return (_item$extra3 = item.extra) === null || _item$extra3 === void 0 ? void 0 : _item$extra3.prologue;
409
+ });
382
410
  _newMessage = {
383
411
  id: uuidV4(),
384
412
  type: 'SuggestionMessage',
@@ -387,9 +415,19 @@ var useAgentGenerator = function useAgentGenerator(_ref) {
387
415
  role: MessageRole.suggestion,
388
416
  content: content
389
417
  };
390
- setMessages(function (prev) {
391
- return [].concat(_toConsumableArray(prev), [_newMessage]);
392
- });
418
+ if (_prologueMessageIndex === -1) {
419
+ // 如果没有开场白,则插入到最前面
420
+ setMessages(function (prev) {
421
+ return [_newMessage].concat(_toConsumableArray(prev));
422
+ });
423
+ } else {
424
+ // 如果有开场白,则插到开场白后面
425
+ setMessages(function (prev) {
426
+ var newMessages = _toConsumableArray(prev);
427
+ newMessages.splice(_prologueMessageIndex + 1, 0, _newMessage);
428
+ return newMessages;
429
+ });
430
+ }
393
431
  } else {
394
432
  setMessages(function (prev) {
395
433
  return prev.map(function (item) {
@@ -410,13 +448,13 @@ var useAgentGenerator = function useAgentGenerator(_ref) {
410
448
  }, _callee2);
411
449
  }));
412
450
  return function setMessage(_x, _x2) {
413
- return _ref4.apply(this, arguments);
451
+ return _ref5.apply(this, arguments);
414
452
  };
415
453
  }();
416
454
 
417
455
  // 简单对话
418
456
  var chat = /*#__PURE__*/function () {
419
- var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(content) {
457
+ var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(content) {
420
458
  var newMessage;
421
459
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
422
460
  while (1) switch (_context3.prev = _context3.next) {
@@ -457,7 +495,7 @@ var useAgentGenerator = function useAgentGenerator(_ref) {
457
495
  }, _callee3);
458
496
  }));
459
497
  return function chat(_x3) {
460
- return _ref5.apply(this, arguments);
498
+ return _ref6.apply(this, arguments);
461
499
  };
462
500
  }();
463
501
 
@@ -518,25 +556,28 @@ var useAgentGenerator = function useAgentGenerator(_ref) {
518
556
  var _appInfo$onboardingIn = appInfo.onboardingInfo,
519
557
  onboardingInfo = _appInfo$onboardingIn === void 0 ? {} : _appInfo$onboardingIn;
520
558
  // eslint-disable-next-line camelcase
521
- var _ref6 = onboardingInfo || {},
522
- _ref6$suggested_quest = _ref6.suggested_questions,
523
- suggested_questions = _ref6$suggested_quest === void 0 ? [] : _ref6$suggested_quest,
524
- _ref6$prologue = _ref6.prologue,
525
- prologue = _ref6$prologue === void 0 ? '' : _ref6$prologue;
559
+ var _ref7 = onboardingInfo || {},
560
+ _ref7$suggested_quest = _ref7.suggested_questions,
561
+ suggested_questions = _ref7$suggested_quest === void 0 ? [] : _ref7$suggested_quest,
562
+ _ref7$prologue = _ref7.prologue,
563
+ prologue = _ref7$prologue === void 0 ? '' : _ref7$prologue;
526
564
  if (prologue) {
527
565
  setMessage('prologue', prologue);
528
566
  } else {
529
567
  setMessages(function (prev) {
530
568
  return prev.filter(function (item) {
531
- var _item$extra3;
532
- return !((_item$extra3 = item.extra) !== null && _item$extra3 !== void 0 && _item$extra3.prologue);
569
+ var _item$extra4;
570
+ return !((_item$extra4 = item.extra) !== null && _item$extra4 !== void 0 && _item$extra4.prologue);
533
571
  });
534
572
  });
535
573
  }
536
- if (suggested_questions.length > 0) {
537
- var suggestMessages = suggested_questions.filter(function (item) {
538
- return item;
539
- }).map(function (item, index) {
574
+
575
+ // 过滤空内容
576
+ var formatSuggests = suggested_questions.filter(function (item) {
577
+ return item;
578
+ });
579
+ if (formatSuggests.length > 0) {
580
+ var suggestMessages = formatSuggests.map(function (item, index) {
540
581
  return {
541
582
  key: index + 1,
542
583
  description: item
@@ -1 +1 @@
1
- {"version":3,"names":["useState","useEffect","useRef","v4","uuidV4","useEventStreamRequest","MessageRole","MessageStatus","request","safeJsonParse","fetchAppConfig","documentIcon","completedIcon","completedExpandIcon","documentExpandIcon","qaIcon","qaExpandIcon","skillNoIcon","skillNoExpandIcon","toolIcon","toolExpandIcon","ActionType","ProcessStatus","ActionAvailability","useAgentGenerator","_ref","url","token","config","textSpeed","_useState","_useState2","_slicedToArray","messages","setMessages","_useState3","_useState4","appInfo","setAppInfo","requestInfo","_ref2","appNo","pt","tc","initConfig","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","result","wrap","_callee$","_context","prev","next","_objectSpread","sent","success","data","console","error","message","t0","stop","apply","arguments","_useEventStreamReques","streaming","onClose","setTimeout","_requestInfo$current","_requestInfo$current2","current","sensitiveWords","requestId","post","onOpen","res","log","start","loading","responseData","content","response","action","contentType","errorMsg","prevMessages","newMessages","_toConsumableArray","_response","uniqueId","toolType","args","knowledgeType","_data$success","suggest","suggestMessageIndex","findIndex","item","type","newMessage","id","createdAt","Date","status","done","role","suggestion","key","description","push","suggestMsg","lastAIMsgIndex","reverse","m","assistant","realIndex","length","lastAIMsg","aiMsg","text","thinks","init","undefined","recallKnowledgeStart","name","extra","icon","expandIcon","recallKnowledgeEnd","_aiMsg$thinks","recallKnowledgeMsg","find","cost","toFixed","invokeToolStart","invokeToolEnd","_aiMsg$thinks2","invokeToolMsg","pending","failed","concat","finish","setMessage","_ref4","_callee2","messageType","prologueMessageIndex","_newMessage","_callee2$","_context2","_item$extra","prologue","noFooter","map","_item$extra2","abrupt","_x","_x2","chat","_ref5","_callee3","_callee3$","_context3","user","splice","appParams","inputs_msg","Authorization","_x3","reChat","lastUserMsg","stopChat","forEach","_appInfo$onboardingIn","onboardingInfo","_ref6","_ref6$suggested_quest","suggested_questions","_ref6$prologue","filter","_item$extra3","suggestMessages","index"],"sources":["../../../src/hooks/useAgentGenerator.ts"],"sourcesContent":["import { useState, useEffect, useRef } from 'react';\nimport { v4 as uuidV4 } from 'uuid';\nimport { useEventStreamRequest } from '@/hooks/useEventStreamRequest';\nimport { MessageRole, MessageStatus, TextMessage, SuggestionMessage, Messages } from '@/types/XAiMessage';\nimport { 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}\n\nconst useAgentGenerator = ({ url, token, config }: { url: string; token: string; config: any }) => {\n const textSpeed = 60;\n\n const [messages, setMessages] = useState<Messages[]>([]);\n const [appInfo, setAppInfo] = useState<any>(null);\n const requestInfo = useRef<{ requestId?: string; sensitiveWords?: string[] }>({});\n\n const { appNo, pt, tc } = config || {};\n\n // 初始化时获取配置\n useEffect(() => {\n if (url && config) {\n const initConfig = async () => {\n try {\n const result = await fetchAppConfig({ url, ...config });\n if (result.success) {\n setAppInfo(result.data);\n } else {\n console.error('获取聊天配置失败', result.message);\n }\n } catch (error) {\n console.error('获取聊天配置失败', error);\n }\n };\n initConfig();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [url, config]);\n\n const { start, loading, responseData, stop } = useEventStreamRequest({\n streaming: true,\n textSpeed,\n onClose: () => {\n // close的时机有可能在setMessages之前,所以需要延迟一下\n setTimeout(() => {\n if (requestInfo.current?.sensitiveWords && requestInfo.current?.requestId) {\n request.post(url);\n }\n }, 500);\n },\n onOpen(res) {\n console.log('res-----open:', res);\n },\n });\n\n // 数据更新\n useEffect(() => {\n if (!responseData || !responseData.content || !responseData.data) return;\n\n let response = responseData.data || responseData.content;\n if (typeof response === 'string') {\n response = safeJsonParse(response, {\n action: ActionType.response,\n data: {\n contentType: 'TEXT',\n content: '解析响应数据时出错,请重试',\n success: false,\n errorMsg: '响应数据格式错误',\n },\n });\n }\n\n setMessages((prevMessages) => {\n 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) => [...prev, newMessage]);\n } else {\n setMessages((prev) => prev.map((item) => {\n if (item.extra?.prologue && item.content && 'text' in item.content) {\n item.content.text = content;\n }\n return item;\n }));\n }\n break;\n }\n case 'suggest': {\n const suggestMessageIndex = messages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex === -1) {\n const newMessage: Messages = {\n id: uuidV4(),\n type: 'SuggestionMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.suggestion,\n content,\n };\n setMessages((prev) => [...prev, newMessage]);\n } else {\n setMessages((prev) => prev.map((item) => {\n if (item.type === 'SuggestionMessage') {\n item.content = content;\n }\n return item;\n }));\n }\n break;\n }\n default:\n break;\n }\n };\n\n // 简单对话\n const chat = async (content: any) => {\n const newMessage: Messages = {\n type: 'TextMessage',\n id: uuidV4(),\n createdAt: new Date(),\n role: MessageRole.user,\n status: MessageStatus.done,\n content: {\n text: content,\n },\n };\n\n setMessages((prev) => {\n // 若存在对话建议,先删除对话建议\n const suggestMessageIndex = messages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex !== -1) {\n prev.splice(suggestMessageIndex, 1);\n }\n // 插入用户消息\n prev.push(newMessage);\n return prev;\n });\n\n start(\n `${url}/appouter/${appNo}/sendMsg?pt=${pt}&tc=${tc}`,\n {\n appParams: {\n inputs_msg: content,\n },\n },\n {\n Authorization: `Bearer ${token}`,\n },\n );\n };\n\n // 重新生成方法\n const reChat = () => {\n setMessages((prevMessages) => {\n // 1. 删除最新一条 AI 消息\n const lastAIMsgIndex = [...prevMessages].reverse().findIndex(\n (m) => m.role === MessageRole.assistant && m.type === 'TextMessage',\n );\n const newMessages = [...prevMessages];\n if (lastAIMsgIndex !== -1) {\n const realIndex = newMessages.length - 1 - lastAIMsgIndex;\n newMessages.splice(realIndex, 1);\n }\n\n // 2. 若存在对话建议,先删除对话建议\n const suggestMessageIndex = messages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex !== -1) {\n newMessages.splice(suggestMessageIndex, 1);\n }\n\n // 3. 找到最新一条用户消息,且类型为 TextMessage\n const lastUserMsg = [...newMessages].reverse().find(\n (m) => m.role === MessageRole.user && m.type === 'TextMessage',\n ) as TextMessage | undefined;\n if (lastUserMsg && lastUserMsg.content && typeof lastUserMsg.content.text === 'string') {\n // 重新发起 chat\n chat(lastUserMsg.content.text);\n }\n\n return newMessages;\n });\n };\n\n const stopChat = () => {\n stop();\n setMessages((prevMessages) => {\n // 找到我所有进行中的消息,并设置为结束\n const newMessages = [...prevMessages];\n newMessages.forEach((m) => {\n if (m.status === MessageStatus.pending) {\n m.status = MessageStatus.done;\n } else if (m.status === MessageStatus.init) {\n if (m.type === 'TextMessage') {\n m.content.text = '<span style=\"color: #cbcbcb;\">用户已取消</span>';\n }\n m.status = MessageStatus.done;\n }\n });\n return newMessages;\n });\n };\n\n // 初始化应用\n useEffect(() => {\n if (appInfo) {\n const { onboardingInfo = {} } = appInfo;\n // eslint-disable-next-line camelcase\n const { suggested_questions = [], prologue = '' } = onboardingInfo || {};\n\n if (prologue) {\n setMessage('prologue', prologue);\n } else {\n setMessages((prev) => prev.filter((item) => !item.extra?.prologue));\n }\n\n if (suggested_questions.length > 0) {\n const suggestMessages = suggested_questions.filter((item: string) => item).map((item: string, index: number) => ({\n key: index + 1,\n description: item,\n }));\n setMessage('suggest', suggestMessages);\n } else {\n setMessages((prev) => prev.filter((item) => !(item.type === 'SuggestionMessage')));\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [appInfo]);\n\n return {\n appInfo,\n messages,\n loading,\n content: responseData.content,\n reChat,\n chat,\n setMessage,\n setMessages,\n stopChat,\n };\n};\n\nexport default useAgentGenerator;\n"],"mappings":"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"}
1
+ {"version":3,"names":["useState","useEffect","useRef","v4","uuidV4","useEventStreamRequest","MessageRole","MessageStatus","ErrorCode","request","safeJsonParse","fetchAppConfig","documentIcon","completedIcon","completedExpandIcon","documentExpandIcon","qaIcon","qaExpandIcon","skillNoIcon","skillNoExpandIcon","toolIcon","toolExpandIcon","ActionType","ProcessStatus","ActionAvailability","useAgentGenerator","_ref","url","token","config","onError","onSuccess","textSpeed","_useState","_useState2","_slicedToArray","messages","setMessages","_useState3","_useState4","appInfo","setAppInfo","requestInfo","_ref2","appNo","pt","tc","initConfig","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","result","_result$data","_ref4","enableFlag","isDeleted","wrap","_callee$","_context","prev","next","_objectSpread","sent","success","data","publishDTO","code","APP_NOT_ENABLE","message","APP_DELETED","APP_NOT_FOUND","t0","console","error","API_ERROR","stop","apply","arguments","_useEventStreamReques","streaming","onClose","setTimeout","_requestInfo$current","_requestInfo$current2","current","sensitiveWords","requestId","post","onOpen","res","log","start","loading","responseData","content","response","action","contentType","errorMsg","prevMessages","newMessages","_toConsumableArray","_response","uniqueId","toolType","args","knowledgeType","_data$success","suggest","suggestMessageIndex","findIndex","item","type","newMessage","id","createdAt","Date","status","done","role","suggestion","key","description","push","suggestMsg","lastAIMsgIndex","reverse","m","assistant","realIndex","length","lastAIMsg","aiMsg","text","thinks","init","undefined","recallKnowledgeStart","name","extra","icon","expandIcon","recallKnowledgeEnd","_aiMsg$thinks","recallKnowledgeMsg","find","cost","toFixed","invokeToolStart","invokeToolEnd","_aiMsg$thinks2","invokeToolMsg","pending","failed","concat","finish","setMessage","_ref5","_callee2","messageType","prologueMessageIndex","_prologueMessageIndex","_newMessage","_callee2$","_context2","_item$extra","prologue","noFooter","map","_item$extra2","abrupt","_item$extra3","splice","_x","_x2","chat","_ref6","_callee3","_callee3$","_context3","user","appParams","inputs_msg","Authorization","_x3","reChat","lastUserMsg","stopChat","forEach","_appInfo$onboardingIn","onboardingInfo","_ref7","_ref7$suggested_quest","suggested_questions","_ref7$prologue","filter","_item$extra4","formatSuggests","suggestMessages","index"],"sources":["../../../src/hooks/useAgentGenerator.ts"],"sourcesContent":["import { useState, useEffect, useRef } from 'react';\nimport { v4 as uuidV4 } from 'uuid';\nimport { useEventStreamRequest } from '@/hooks/useEventStreamRequest';\nimport { MessageRole, MessageStatus, TextMessage, SuggestionMessage, Messages } from '@/types/XAiMessage';\nimport { Error, ErrorCode } from '@/types/XAiProvider';\nimport { request } from '@/utils/request';\nimport { safeJsonParse } from '@/utils/index';\nimport { fetchAppConfig } from '@/services/api';\n// 图标\nimport documentIcon from '@/assets/document.png';\nimport completedIcon from '@/assets/completed.png';\nimport completedExpandIcon from '@/assets/completed-black.png';\nimport documentExpandIcon from '@/assets/document-black.png';\nimport qaIcon from '@/assets/qa.png';\nimport qaExpandIcon from '@/assets/qa-black.png';\nimport skillNoIcon from '@/assets/skillNo.png';\nimport skillNoExpandIcon from '@/assets/skillNo-black.png';\nimport toolIcon from '@/assets/tools.png';\nimport toolExpandIcon from '@/assets/tools-black.png';\n\nexport type ContentType = 'TEXT' | 'IMAGE' | 'FILE';\n\nexport interface ImageUrl {\n url: string;\n name: string;\n}\n\nexport interface FileUrl {\n url: string;\n fileName: string;\n suffix: string;\n}\n\nexport interface Content {\n text?: string;\n imageUrl?: ImageUrl;\n fileUrl?: FileUrl;\n}\n\nexport interface ContentDef {\n description: string;\n contentType: ContentType;\n content: Content;\n}\n// contents 类型\nexport type Contents = ContentDef[];\n\n// —————————————— 接口字段定义 ————————————\nexport enum ActionType {\n recallKnowledgeStart = 'RECALL_KNOWLEDGE_START', // 知识库召回开始\n recallKnowledgeEnd = 'RECALL_KNOWLEDGE_END', // 知识库召回结束\n invokeToolStart = 'INVOKE_AGENT_TOOL_START', // 开始调用工具\n invokeToolEnd = 'INVOKE_AGENT_TOOL_END', // 调用工具完成\n suggest = 'FOLLOW_UP', // 用户提示\n response = 'RESPONSE', // 响应\n finish = 'FINISHED', // 结束\n}\n\nexport enum ProcessStatus {\n start = 'START',\n end = 'END',\n}\n\nexport enum ActionAvailability {\n disabled = 'disabled', // 不可用\n enabled = 'enabled', // 可用\n remote = 'remote', // 远程可用\n}\n\nexport type ThinkStep = any; // 临时定义,后续可完善\n\n/**\n* 工具/动作定义\n*/\nexport interface Action {\n name: string; // 名称\n description: string; // 描述\n jsonSchema: string; // 参数JSON Schema\n available?: ActionAvailability; // 可用性\n error?: Error; // 错误信息\n}\n\nexport interface UseAgentGeneratorProps {\n url: string;\n token: string;\n config: any;\n onError?: (error: Error) => void;\n onSuccess?: (appInfo: any) => void;\n}\nconst useAgentGenerator = ({\n url,\n token,\n config,\n onError,\n onSuccess,\n}: UseAgentGeneratorProps) => {\n const textSpeed = 60;\n\n const [messages, setMessages] = useState<Messages[]>([]);\n const [appInfo, setAppInfo] = useState<any>(null);\n const requestInfo = useRef<{ requestId?: string; sensitiveWords?: string[] }>({});\n\n const { appNo, pt, tc } = config || {};\n\n // 初始化时获取配置\n useEffect(() => {\n if (url && config) {\n const initConfig = async () => {\n try {\n const result = await fetchAppConfig({ url, ...config });\n if (result.success) {\n setAppInfo(result.data);\n\n const { enableFlag, isDeleted } = result.data?.publishDTO || {};\n if (!enableFlag) {\n onError?.({\n code: ErrorCode.APP_NOT_ENABLE,\n message: '应用未启用或者已下架',\n });\n } else if (isDeleted === 'Y') {\n onError?.({\n code: ErrorCode.APP_DELETED,\n message: '应用已下架',\n });\n } else {\n onSuccess?.(result.data);\n }\n } else {\n onError?.({\n code: ErrorCode.APP_NOT_FOUND,\n message: result?.message || '获取聊天配置失败',\n });\n }\n } catch (error) {\n console.error('获取聊天配置失败', error);\n onError?.({\n code: ErrorCode.API_ERROR,\n message: '获取聊天配置失败',\n });\n }\n };\n initConfig();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [url, config]);\n\n const { start, loading, responseData, stop } = useEventStreamRequest({\n streaming: true,\n textSpeed,\n onClose: () => {\n // close的时机有可能在setMessages之前,所以需要延迟一下\n setTimeout(() => {\n if (requestInfo.current?.sensitiveWords && requestInfo.current?.requestId) {\n request.post(url);\n }\n }, 500);\n },\n onOpen(res) {\n console.log('res-----open:', res);\n },\n });\n\n // 数据更新\n useEffect(() => {\n if (!responseData || !responseData.content || !responseData.data) return;\n\n let response = responseData.data || responseData.content;\n if (typeof response === 'string') {\n response = safeJsonParse(response, {\n action: ActionType.response,\n data: {\n contentType: 'TEXT',\n content: '解析响应数据时出错,请重试',\n success: false,\n errorMsg: '响应数据格式错误',\n },\n });\n }\n\n setMessages((prevMessages) => {\n let newMessages = [...prevMessages];\n // 消息类型判断\n const { action, data } = response;\n const { uniqueId, contentType, content, toolType, args, knowledgeType, success = true, errorMsg } = data;\n\n // 建议类信息 特殊处理\n if (action === ActionType.suggest) {\n const suggestMessageIndex = messages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex === -1) {\n const newMessage: SuggestionMessage = {\n id: uuidV4(),\n type: 'SuggestionMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.suggestion,\n content: [{\n key: uuidV4(),\n description: content,\n }],\n };\n newMessages.push(newMessage);\n } else {\n const suggestMsg = newMessages[suggestMessageIndex] as SuggestionMessage;\n if (suggestMsg?.content) {\n suggestMsg.content.push({\n key: uuidV4(),\n description: content,\n });\n }\n }\n return newMessages;\n }\n\n // 找到最后一条 AI 消息\n const lastAIMsgIndex = [...prevMessages].reverse().findIndex(\n (m) => m.role === MessageRole.assistant && m.type === 'TextMessage' && (m.status === 'init' || m.status === 'pending'),\n );\n const realIndex = lastAIMsgIndex === -1 ? -1 : prevMessages.length - 1 - lastAIMsgIndex;\n const lastAIMsg = realIndex !== -1 ? prevMessages[realIndex] : null;\n\n let aiMsg: TextMessage | undefined;\n\n if (!lastAIMsg) {\n aiMsg = {\n id: uuidV4(),\n type: 'TextMessage',\n createdAt: new Date(),\n role: MessageRole.assistant,\n content: { text: '' },\n thinks: [],\n status: MessageStatus.init,\n };\n newMessages.push(aiMsg);\n } else if (lastAIMsg.type === 'TextMessage') {\n aiMsg = { ...lastAIMsg };\n } else if (lastAIMsg.type === 'ImageMessage') {\n aiMsg = undefined;\n }\n\n // 如果 aiMsg 为 undefined,则跳过处理\n if (!aiMsg) {\n return newMessages;\n }\n\n switch (action) {\n case ActionType.recallKnowledgeStart:\n aiMsg.thinks = aiMsg.thinks || [];\n aiMsg.thinks.push({\n id: uniqueId,\n createdAt: new Date(),\n type: 'ActionExecutionMessage',\n name: knowledgeType === 'DOCUMENT' ? '已搜索文档知识库' : '已搜索问答知识库',\n arguments: args,\n extra: {\n ...data,\n icon: knowledgeType === 'DOCUMENT' ? documentIcon : qaIcon,\n expandIcon: knowledgeType === 'DOCUMENT' ? documentExpandIcon : qaExpandIcon,\n },\n });\n break;\n case ActionType.recallKnowledgeEnd: {\n // 需要给之前的recallKnowledgeStart添加cost - 通过uniqueId关联\n const recallKnowledgeMsg = aiMsg.thinks?.find((item) => item.id === uniqueId);\n if (recallKnowledgeMsg) {\n recallKnowledgeMsg.extra.cost = data?.cost ? (data?.cost / 1000).toFixed(2) : 0;\n }\n break;\n }\n case ActionType.invokeToolStart:\n aiMsg.thinks = aiMsg.thinks || [];\n aiMsg.thinks.push({\n id: uniqueId,\n createdAt: new Date(),\n type: 'ActionExecutionMessage',\n name: toolType === 'SKILL' ? '已调用工作流' : '已调用工具',\n arguments: args,\n extra: {\n ...data,\n icon: toolType === 'SKILL' ? skillNoIcon : toolIcon,\n expandIcon: toolType === 'SKILL' ? skillNoExpandIcon : toolExpandIcon,\n },\n });\n break;\n case ActionType.invokeToolEnd: {\n // 需要给之前的invokeToolStart添加cost - 通过uniqueId关联\n const invokeToolMsg = aiMsg.thinks?.find((item) => item.id === uniqueId);\n if (invokeToolMsg) {\n invokeToolMsg.extra.cost = data?.cost ? (data?.cost / 1000).toFixed(2) : 0;\n }\n break;\n }\n case ActionType.response:\n if (success) {\n // 正常渲染\n if (aiMsg.status === MessageStatus.init) {\n aiMsg.status = MessageStatus.pending;\n }\n if (contentType === 'TEXT' && 'text' in aiMsg.content) {\n aiMsg.content.text += content;\n }\n } else {\n // 调用失败\n aiMsg.status = MessageStatus.failed;\n aiMsg.content.text = `<span style=\"color: red;\">❌ ${errorMsg}</span>`;\n }\n break;\n case ActionType.finish:\n aiMsg.thinks = aiMsg.thinks || [];\n aiMsg.thinks.push({\n id: uniqueId,\n createdAt: new Date(),\n type: 'ActionExecutionMessage',\n name: '运行完毕',\n extra: {\n ...data,\n cost: data?.cost ? (data?.cost / 1000).toFixed(2) : 0,\n icon: completedIcon,\n expandIcon: completedExpandIcon,\n },\n });\n aiMsg.status = MessageStatus.done;\n break;\n // 其他类型略\n }\n\n // 更新消息数组\n if (lastAIMsg && lastAIMsg.type === 'TextMessage') {\n newMessages[realIndex] = aiMsg;\n } else if (!lastAIMsg) {\n // 只有 newMessages 最后一条是 TextMessage 时才替换,否则 push\n if (newMessages.length > 0 && newMessages[newMessages.length - 1].type === 'TextMessage') {\n newMessages[newMessages.length - 1] = aiMsg;\n } else {\n // 只 push TextMessage,不替换非 TextMessage\n newMessages = [...newMessages, aiMsg];\n }\n }\n return newMessages;\n });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [responseData]);\n\n // 添加对话(非普通对话)\n const setMessage = async (messageType: string, content: any) => {\n switch (messageType) {\n case 'prologue': {\n const prologueMessageIndex = messages.findIndex((item) => item.extra?.prologue);\n if (prologueMessageIndex === -1) {\n const newMessage: Messages = {\n type: 'TextMessage',\n id: uuidV4(),\n createdAt: new Date(),\n role: MessageRole.assistant,\n status: MessageStatus.done,\n content: {\n text: content,\n },\n extra: {\n prologue: true,\n noFooter: true,\n },\n };\n setMessages((prev) => [newMessage, ...prev]);\n } else {\n setMessages((prev) => prev.map((item) => {\n if (item.extra?.prologue && item.content && 'text' in item.content) {\n item.content.text = content;\n }\n return item;\n }));\n }\n break;\n }\n case 'suggest': {\n const suggestMessageIndex = messages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex === -1) {\n const prologueMessageIndex = messages.findIndex((item) => item.extra?.prologue);\n const newMessage: Messages = {\n id: uuidV4(),\n type: 'SuggestionMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.suggestion,\n content,\n };\n if (prologueMessageIndex === -1) {\n // 如果没有开场白,则插入到最前面\n setMessages((prev) => [newMessage, ...prev]);\n } else {\n // 如果有开场白,则插到开场白后面\n setMessages((prev) => {\n const newMessages = [...prev];\n newMessages.splice(prologueMessageIndex + 1, 0, newMessage);\n return newMessages;\n });\n }\n } else {\n setMessages((prev) => prev.map((item) => {\n if (item.type === 'SuggestionMessage') {\n item.content = content;\n }\n return item;\n }));\n }\n break;\n }\n default:\n break;\n }\n };\n\n // 简单对话\n const chat = async (content: any) => {\n const newMessage: Messages = {\n type: 'TextMessage',\n id: uuidV4(),\n createdAt: new Date(),\n role: MessageRole.user,\n status: MessageStatus.done,\n content: {\n text: content,\n },\n };\n\n setMessages((prev) => {\n // 若存在对话建议,先删除对话建议\n const suggestMessageIndex = messages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex !== -1) {\n prev.splice(suggestMessageIndex, 1);\n }\n // 插入用户消息\n prev.push(newMessage);\n return prev;\n });\n\n start(\n `${url}/appouter/${appNo}/sendMsg?pt=${pt}&tc=${tc}`,\n {\n appParams: {\n inputs_msg: content,\n },\n },\n {\n Authorization: `Bearer ${token}`,\n },\n );\n };\n\n // 重新生成方法\n const reChat = () => {\n setMessages((prevMessages) => {\n // 1. 删除最新一条 AI 消息\n const lastAIMsgIndex = [...prevMessages].reverse().findIndex(\n (m) => m.role === MessageRole.assistant && m.type === 'TextMessage',\n );\n const newMessages = [...prevMessages];\n if (lastAIMsgIndex !== -1) {\n const realIndex = newMessages.length - 1 - lastAIMsgIndex;\n newMessages.splice(realIndex, 1);\n }\n\n // 2. 若存在对话建议,先删除对话建议\n const suggestMessageIndex = messages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex !== -1) {\n newMessages.splice(suggestMessageIndex, 1);\n }\n\n // 3. 找到最新一条用户消息,且类型为 TextMessage\n const lastUserMsg = [...newMessages].reverse().find(\n (m) => m.role === MessageRole.user && m.type === 'TextMessage',\n ) as TextMessage | undefined;\n if (lastUserMsg && lastUserMsg.content && typeof lastUserMsg.content.text === 'string') {\n // 重新发起 chat\n chat(lastUserMsg.content.text);\n }\n\n return newMessages;\n });\n };\n\n const stopChat = () => {\n stop();\n setMessages((prevMessages) => {\n // 找到我所有进行中的消息,并设置为结束\n const newMessages = [...prevMessages];\n newMessages.forEach((m) => {\n if (m.status === MessageStatus.pending) {\n m.status = MessageStatus.done;\n } else if (m.status === MessageStatus.init) {\n if (m.type === 'TextMessage') {\n m.content.text = '<span style=\"color: #cbcbcb;\">用户已取消</span>';\n }\n m.status = MessageStatus.done;\n }\n });\n return newMessages;\n });\n };\n\n // 初始化应用\n useEffect(() => {\n if (appInfo) {\n const { onboardingInfo = {} } = appInfo;\n // eslint-disable-next-line camelcase\n const { suggested_questions = [], prologue = '' } = onboardingInfo || {};\n\n if (prologue) {\n setMessage('prologue', prologue);\n } else {\n setMessages((prev) => prev.filter((item) => !item.extra?.prologue));\n }\n\n // 过滤空内容\n const formatSuggests = suggested_questions.filter((item: string) => item);\n\n if (formatSuggests.length > 0) {\n const suggestMessages = formatSuggests.map((item: string, index: number) => ({\n key: index + 1,\n description: item,\n }));\n setMessage('suggest', suggestMessages);\n } else {\n setMessages((prev) => prev.filter((item) => !(item.type === 'SuggestionMessage')));\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [appInfo]);\n\n return {\n appInfo,\n messages,\n loading,\n content: responseData.content,\n reChat,\n chat,\n setMessage,\n setMessages,\n stopChat,\n };\n};\n\nexport default useAgentGenerator;\n"],"mappings":"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"}
@@ -13,9 +13,38 @@ export interface ApiResponse<T> {
13
13
  code?: string;
14
14
  }
15
15
  export interface ChatConfig {
16
- id: string;
17
- name: string;
18
- settings: Record<string, unknown>;
16
+ botNo: string;
17
+ appNo: string;
18
+ appName: string;
19
+ appTheme: string;
20
+ description: string;
21
+ icon: string;
22
+ onboardingInfo: {
23
+ prologue: string;
24
+ suggested_questions: string[];
25
+ };
26
+ appVersionNo: string;
27
+ publishDTO: {
28
+ id: number;
29
+ tenantId: string;
30
+ botNo: string;
31
+ publishNo: string;
32
+ publishTime: string;
33
+ publishVersionNo: string;
34
+ publishVersionDesc: string;
35
+ publishAppType: string;
36
+ platformConfigInfo: string;
37
+ appNo: string;
38
+ appVersionNo: string;
39
+ gmtCreated: string;
40
+ enableFlag: number;
41
+ gmtModified: string;
42
+ creator: string;
43
+ modifier: string;
44
+ isDeleted: string;
45
+ authLoginInfoDTO: Record<string, unknown>;
46
+ shareLink: string;
47
+ };
19
48
  }
20
49
  /**
21
50
  * 获取聊天配置
@@ -1 +1 @@
1
- {"version":3,"names":["request","fetchAppConfig","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_ref","url","appNo","pt","tc","response","wrap","_callee$","_context","prev","next","post","concat","params","sent","abrupt","data","stop","_x","apply","arguments","sendMessage","_ref4","_callee2","_ref3","msg","_callee2$","_context2","_x2"],"sources":["../../../src/services/api.ts"],"sourcesContent":["import { request } from '@/utils/request';\n\n// 服务端API响应接口\nexport interface ServerApiResponse<T = unknown> {\n data: T;\n code: string;\n success: boolean;\n message: string;\n serverTime: number;\n traceId: string;\n}\n\n// 标准API响应类型\nexport interface ApiResponse<T> {\n success: boolean;\n data: T;\n message?: string;\n code?: string;\n}\n\n// 聊天配置类型\nexport interface ChatConfig {\n id: string;\n name: string;\n settings: Record<string, unknown>;\n}\n\n/**\n * 获取聊天配置\n * 使用request,会自动添加token\n */\nexport const fetchAppConfig = async ({ url, appNo, pt, tc }: { url: string; appNo: string; pt: string; tc: string }): Promise<ApiResponse<ChatConfig>> => {\n const response = await request.post<ApiResponse<ChatConfig>>(`${url}/appouter/config/${appNo}/initApp`, {}, {\n params: {\n pt, tc,\n },\n });\n return response.data;\n};\n\n/**\n * 获取聊天配置\n * 使用request,会自动添加token\n */\nexport const sendMessage = async ({ url, appNo, pt, tc, msg }: { url: string; appNo: string; pt: string; tc: string; msg: string }): Promise<ApiResponse<ChatConfig>> => {\n const response = await request.post<ApiResponse<ChatConfig>>(`${url}/appouter/${appNo}/sendMsg`, {\n pt, tc, msg,\n });\n return response.data;\n};\n"],"mappings":";;AAAA,SAASA,OAAO;;AAEhB;;AAUA;;AAQA;;AAOA;AACA;AACA;AACA;AACA,OAAO,IAAMC,cAAc;EAAA,IAAAC,KAAA,GAAAC,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAC,QAAAC,IAAA;IAAA,IAAAC,GAAA,EAAAC,KAAA,EAAAC,EAAA,EAAAC,EAAA,EAAAC,QAAA;IAAA,OAAAR,mBAAA,GAAAS,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAAST,GAAG,GAAAD,IAAA,CAAHC,GAAG,EAAEC,KAAK,GAAAF,IAAA,CAALE,KAAK,EAAEC,EAAE,GAAAH,IAAA,CAAFG,EAAE,EAAEC,EAAE,GAAAJ,IAAA,CAAFI,EAAE;UAAAI,QAAA,CAAAE,IAAA;UAAA,OAChCjB,OAAO,CAACkB,IAAI,IAAAC,MAAA,CAA6BX,GAAG,uBAAAW,MAAA,CAAoBV,KAAK,eAAY,CAAC,CAAC,EAAE;YAC1GW,MAAM,EAAE;cACNV,EAAE,EAAFA,EAAE;cAAEC,EAAE,EAAFA;YACN;UACF,CAAC,CAAC;QAAA;UAJIC,QAAQ,GAAAG,QAAA,CAAAM,IAAA;UAAA,OAAAN,QAAA,CAAAO,MAAA,WAKPV,QAAQ,CAACW,IAAI;QAAA;QAAA;UAAA,OAAAR,QAAA,CAAAS,IAAA;MAAA;IAAA,GAAAlB,OAAA;EAAA,CACrB;EAAA,gBAPYL,cAAcA,CAAAwB,EAAA;IAAA,OAAAvB,KAAA,CAAAwB,KAAA,OAAAC,SAAA;EAAA;AAAA,GAO1B;;AAED;AACA;AACA;AACA;AACA,OAAO,IAAMC,WAAW;EAAA,IAAAC,KAAA,GAAA1B,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAyB,SAAAC,KAAA;IAAA,IAAAvB,GAAA,EAAAC,KAAA,EAAAC,EAAA,EAAAC,EAAA,EAAAqB,GAAA,EAAApB,QAAA;IAAA,OAAAR,mBAAA,GAAAS,IAAA,UAAAoB,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAlB,IAAA,GAAAkB,SAAA,CAAAjB,IAAA;QAAA;UAAST,GAAG,GAAAuB,KAAA,CAAHvB,GAAG,EAAEC,KAAK,GAAAsB,KAAA,CAALtB,KAAK,EAAEC,EAAE,GAAAqB,KAAA,CAAFrB,EAAE,EAAEC,EAAE,GAAAoB,KAAA,CAAFpB,EAAE,EAAEqB,GAAG,GAAAD,KAAA,CAAHC,GAAG;UAAAE,SAAA,CAAAjB,IAAA;UAAA,OAClCjB,OAAO,CAACkB,IAAI,IAAAC,MAAA,CAA6BX,GAAG,gBAAAW,MAAA,CAAaV,KAAK,eAAY;YAC/FC,EAAE,EAAFA,EAAE;YAAEC,EAAE,EAAFA,EAAE;YAAEqB,GAAG,EAAHA;UACV,CAAC,CAAC;QAAA;UAFIpB,QAAQ,GAAAsB,SAAA,CAAAb,IAAA;UAAA,OAAAa,SAAA,CAAAZ,MAAA,WAGPV,QAAQ,CAACW,IAAI;QAAA;QAAA;UAAA,OAAAW,SAAA,CAAAV,IAAA;MAAA;IAAA,GAAAM,QAAA;EAAA,CACrB;EAAA,gBALYF,WAAWA,CAAAO,GAAA;IAAA,OAAAN,KAAA,CAAAH,KAAA,OAAAC,SAAA;EAAA;AAAA,GAKvB"}
1
+ {"version":3,"names":["request","fetchAppConfig","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_ref","url","appNo","pt","tc","response","wrap","_callee$","_context","prev","next","post","concat","params","sent","abrupt","data","stop","_x","apply","arguments","sendMessage","_ref4","_callee2","_ref3","msg","_callee2$","_context2","_x2"],"sources":["../../../src/services/api.ts"],"sourcesContent":["import { request } from '@/utils/request';\n\n// 服务端API响应接口\nexport interface ServerApiResponse<T = unknown> {\n data: T;\n code: string;\n success: boolean;\n message: string;\n serverTime: number;\n traceId: string;\n}\n\n// 标准API响应类型\nexport interface ApiResponse<T> {\n success: boolean;\n data: T;\n message?: string;\n code?: string;\n}\n\n// 聊天配置类型\nexport interface ChatConfig {\n botNo: string;\n appNo: string;\n appName: string;\n appTheme: string;\n description: string;\n icon: string;\n onboardingInfo: {\n prologue: string;\n suggested_questions: string[];\n };\n appVersionNo: string;\n publishDTO: {\n id: number;\n tenantId: string;\n botNo: string;\n publishNo: string;\n publishTime: string;\n publishVersionNo: string;\n publishVersionDesc: string;\n publishAppType: string;\n platformConfigInfo: string;\n appNo: string;\n appVersionNo: string;\n gmtCreated: string;\n enableFlag: number;\n gmtModified: string;\n creator: string;\n modifier: string;\n isDeleted: string;\n authLoginInfoDTO: Record<string, unknown>;\n shareLink: string;\n };\n}\n\n/**\n * 获取聊天配置\n * 使用request,会自动添加token\n */\nexport const fetchAppConfig = async ({ url, appNo, pt, tc }: { url: string; appNo: string; pt: string; tc: string }): Promise<ApiResponse<ChatConfig>> => {\n const response = await request.post<ApiResponse<ChatConfig>>(`${url}/appouter/config/${appNo}/initApp`, {}, {\n params: {\n pt, tc,\n },\n });\n return response.data;\n};\n\n/**\n * 获取聊天配置\n * 使用request,会自动添加token\n */\nexport const sendMessage = async ({ url, appNo, pt, tc, msg }: { url: string; appNo: string; pt: string; tc: string; msg: string }): Promise<ApiResponse<ChatConfig>> => {\n const response = await request.post<ApiResponse<ChatConfig>>(`${url}/appouter/${appNo}/sendMsg`, {\n pt, tc, msg,\n });\n return response.data;\n};\n"],"mappings":";;AAAA,SAASA,OAAO;;AAEhB;;AAUA;;AAQA;;AAoCA;AACA;AACA;AACA;AACA,OAAO,IAAMC,cAAc;EAAA,IAAAC,KAAA,GAAAC,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAC,QAAAC,IAAA;IAAA,IAAAC,GAAA,EAAAC,KAAA,EAAAC,EAAA,EAAAC,EAAA,EAAAC,QAAA;IAAA,OAAAR,mBAAA,GAAAS,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAAST,GAAG,GAAAD,IAAA,CAAHC,GAAG,EAAEC,KAAK,GAAAF,IAAA,CAALE,KAAK,EAAEC,EAAE,GAAAH,IAAA,CAAFG,EAAE,EAAEC,EAAE,GAAAJ,IAAA,CAAFI,EAAE;UAAAI,QAAA,CAAAE,IAAA;UAAA,OAChCjB,OAAO,CAACkB,IAAI,IAAAC,MAAA,CAA6BX,GAAG,uBAAAW,MAAA,CAAoBV,KAAK,eAAY,CAAC,CAAC,EAAE;YAC1GW,MAAM,EAAE;cACNV,EAAE,EAAFA,EAAE;cAAEC,EAAE,EAAFA;YACN;UACF,CAAC,CAAC;QAAA;UAJIC,QAAQ,GAAAG,QAAA,CAAAM,IAAA;UAAA,OAAAN,QAAA,CAAAO,MAAA,WAKPV,QAAQ,CAACW,IAAI;QAAA;QAAA;UAAA,OAAAR,QAAA,CAAAS,IAAA;MAAA;IAAA,GAAAlB,OAAA;EAAA,CACrB;EAAA,gBAPYL,cAAcA,CAAAwB,EAAA;IAAA,OAAAvB,KAAA,CAAAwB,KAAA,OAAAC,SAAA;EAAA;AAAA,GAO1B;;AAED;AACA;AACA;AACA;AACA,OAAO,IAAMC,WAAW;EAAA,IAAAC,KAAA,GAAA1B,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAyB,SAAAC,KAAA;IAAA,IAAAvB,GAAA,EAAAC,KAAA,EAAAC,EAAA,EAAAC,EAAA,EAAAqB,GAAA,EAAApB,QAAA;IAAA,OAAAR,mBAAA,GAAAS,IAAA,UAAAoB,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAlB,IAAA,GAAAkB,SAAA,CAAAjB,IAAA;QAAA;UAAST,GAAG,GAAAuB,KAAA,CAAHvB,GAAG,EAAEC,KAAK,GAAAsB,KAAA,CAALtB,KAAK,EAAEC,EAAE,GAAAqB,KAAA,CAAFrB,EAAE,EAAEC,EAAE,GAAAoB,KAAA,CAAFpB,EAAE,EAAEqB,GAAG,GAAAD,KAAA,CAAHC,GAAG;UAAAE,SAAA,CAAAjB,IAAA;UAAA,OAClCjB,OAAO,CAACkB,IAAI,IAAAC,MAAA,CAA6BX,GAAG,gBAAAW,MAAA,CAAaV,KAAK,eAAY;YAC/FC,EAAE,EAAFA,EAAE;YAAEC,EAAE,EAAFA,EAAE;YAAEqB,GAAG,EAAHA;UACV,CAAC,CAAC;QAAA;UAFIpB,QAAQ,GAAAsB,SAAA,CAAAb,IAAA;UAAA,OAAAa,SAAA,CAAAZ,MAAA,WAGPV,QAAQ,CAACW,IAAI;QAAA;QAAA;UAAA,OAAAW,SAAA,CAAAV,IAAA;MAAA;IAAA,GAAAM,QAAA;EAAA,CACrB;EAAA,gBALYF,WAAWA,CAAAO,GAAA;IAAA,OAAAN,KAAA,CAAAH,KAAA,OAAAC,SAAA;EAAA;AAAA,GAKvB"}
@@ -2,6 +2,16 @@ import React, { ReactNode } from 'react';
2
2
  import { AiClient } from 'src/client/base';
3
3
  import type { ChatbotMessageFields } from './XAiChatbot';
4
4
  export type ThemeType = 'default';
5
+ export declare enum ErrorCode {
6
+ APP_NOT_ENABLE = "APP_NOT_ENABLE",
7
+ APP_DELETED = "APP_DELETED",
8
+ APP_NOT_FOUND = "APP_NOT_FOUND",
9
+ API_ERROR = "API_ERROR"
10
+ }
11
+ export interface Error {
12
+ code: ErrorCode;
13
+ message: string;
14
+ }
5
15
  export interface XAiProviderProps {
6
16
  /** AI 服务地址 */
7
17
  url: string;
@@ -13,6 +23,10 @@ export interface XAiProviderProps {
13
23
  providerId?: string;
14
24
  /** Token 刷新回调 */
15
25
  onRefreshToken?: () => Promise<string>;
26
+ /** 应用无法正常渲染回调 */
27
+ onError?: (error: Error) => void;
28
+ /** 应用正常渲染回调 */
29
+ onSuccess?: (appInfo: any) => void;
16
30
  /** 子组件 */
17
31
  children: ReactNode;
18
32
  }
@@ -1,4 +1,11 @@
1
1
  // context/ProviderContext.ts
2
2
  import React from 'react';
3
+ export var ErrorCode = /*#__PURE__*/function (ErrorCode) {
4
+ ErrorCode["APP_NOT_ENABLE"] = "APP_NOT_ENABLE";
5
+ ErrorCode["APP_DELETED"] = "APP_DELETED";
6
+ ErrorCode["APP_NOT_FOUND"] = "APP_NOT_FOUND";
7
+ ErrorCode["API_ERROR"] = "API_ERROR";
8
+ return ErrorCode;
9
+ }({});
3
10
  export var XAiContext = /*#__PURE__*/React.createContext(null);
4
11
  //# sourceMappingURL=XAiProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","XAiContext","createContext"],"sources":["../../../src/types/XAiProvider.ts"],"sourcesContent":["// context/ProviderContext.ts\nimport React, { ReactNode } from 'react';\nimport { AiClient } from 'src/client/base';\nimport type { ChatbotMessageFields } from './XAiChatbot';\n\nexport type ThemeType = 'default';\n\nexport interface XAiProviderProps {\n /** AI 服务地址 */\n url: string;\n /** 认证 token */\n token: string;\n /** 配置信息 */\n config?: any;\n /** Provider 唯一标识,用于区分多个 Provider 实例 */\n providerId?: string;\n /** Token 刷新回调 */\n onRefreshToken?: () => Promise<string>;\n /** 子组件 */\n children: ReactNode;\n}\n\nexport interface XAiSDKProps extends XAiProviderProps {\n theme?: ThemeType;\n componentProps?: {\n id?: string;\n [key: string]: any; // 支持任意 CSS 属性\n };\n}\n\nexport interface XAiContextType extends Required<ChatbotMessageFields> {\n client: AiClient | null;\n token: string;\n loading: boolean;\n error: string | null;\n // ...其它全局配置\n}\n\nexport const XAiContext = React.createContext<XAiContextType | null>(null);\n"],"mappings":"AAAA;AACA,OAAOA,KAAK,MAAqB,OAAO;AAqCxC,OAAO,IAAMC,UAAU,gBAAGD,KAAK,CAACE,aAAa,CAAwB,IAAI,CAAC"}
1
+ {"version":3,"names":["React","ErrorCode","XAiContext","createContext"],"sources":["../../../src/types/XAiProvider.ts"],"sourcesContent":["// context/ProviderContext.ts\nimport React, { ReactNode } from 'react';\nimport { AiClient } from 'src/client/base';\nimport type { ChatbotMessageFields } from './XAiChatbot';\n\nexport type ThemeType = 'default';\n\nexport enum ErrorCode {\n APP_NOT_ENABLE = 'APP_NOT_ENABLE',\n APP_DELETED = 'APP_DELETED',\n APP_NOT_FOUND = 'APP_NOT_FOUND',\n API_ERROR = 'API_ERROR',\n}\n\nexport interface Error {\n code: ErrorCode;\n message: string;\n}\n\nexport interface XAiProviderProps {\n /** AI 服务地址 */\n url: string;\n /** 认证 token */\n token: string;\n /** 配置信息 */\n config?: any;\n /** Provider 唯一标识,用于区分多个 Provider 实例 */\n providerId?: string;\n /** Token 刷新回调 */\n onRefreshToken?: () => Promise<string>;\n /** 应用无法正常渲染回调 */\n onError?: (error: Error) => void;\n /** 应用正常渲染回调 */\n onSuccess?: (appInfo: any) => void;\n /** 子组件 */\n children: ReactNode;\n}\n\nexport interface XAiSDKProps extends XAiProviderProps {\n theme?: ThemeType;\n componentProps?: {\n id?: string;\n [key: string]: any; // 支持任意 CSS 属性\n };\n}\n\nexport interface XAiContextType extends Required<ChatbotMessageFields> {\n client: AiClient | null;\n token: string;\n loading: boolean;\n error: string | null;\n // ...其它全局配置\n}\n\nexport const XAiContext = React.createContext<XAiContextType | null>(null);\n"],"mappings":"AAAA;AACA,OAAOA,KAAK,MAAqB,OAAO;AAMxC,WAAYC,SAAS,0BAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAAA,OAATA,SAAS;AAAA;AA+CrB,OAAO,IAAMC,UAAU,gBAAGF,KAAK,CAACG,aAAa,CAAwB,IAAI,CAAC"}
@@ -3,9 +3,12 @@ declare class XAiWebSDK {
3
3
  container: HTMLElement;
4
4
  props: XAiSDKProps;
5
5
  root: any;
6
+ onError?: (error: any) => void;
7
+ onSuccess?: (appInfo: any) => void;
6
8
  constructor(container: HTMLElement, props: XAiSDKProps);
7
9
  mount(): void;
8
10
  unmount(): void;
9
- static initChatbot(containerOrProps: HTMLElement | XAiSDKProps, props?: XAiSDKProps): XAiWebSDK;
11
+ static initChatbot(props: XAiSDKProps): XAiWebSDK;
12
+ static create(props: XAiSDKProps): XAiWebSDK;
10
13
  }
11
14
  export default XAiWebSDK;
@@ -15,8 +15,12 @@ var XAiWebSDK = /*#__PURE__*/function () {
15
15
  _defineProperty(this, "container", void 0);
16
16
  _defineProperty(this, "props", void 0);
17
17
  _defineProperty(this, "root", void 0);
18
+ _defineProperty(this, "onError", void 0);
19
+ _defineProperty(this, "onSuccess", void 0);
18
20
  this.container = container;
19
21
  this.props = props;
22
+ this.onError = props.onError;
23
+ this.onSuccess = props.onSuccess;
20
24
  this.mount();
21
25
  }
22
26
  _createClass(XAiWebSDK, [{
@@ -54,29 +58,22 @@ var XAiWebSDK = /*#__PURE__*/function () {
54
58
  }
55
59
  }
56
60
 
57
- // 支持两种调用方式
61
+ // 支持 Coze 风格的语法:new XAiWebSDK.initChatbot()
58
62
  }], [{
59
63
  key: "initChatbot",
60
- value: function initChatbot(containerOrProps, props) {
61
- var _sdkProps$componentPr;
62
- // 如果第一个参数是 HTMLElement
63
- if (containerOrProps instanceof HTMLElement) {
64
- return new XAiWebSDK(containerOrProps, props);
65
- }
66
-
67
- // 如果第一个参数是 props
68
- var sdkProps = containerOrProps;
64
+ value: function initChatbot(props) {
65
+ var _props$componentProps;
69
66
  var container;
70
67
 
71
68
  // 检查是否有指定的 componentProps.id
72
- if ((_sdkProps$componentPr = sdkProps.componentProps) !== null && _sdkProps$componentPr !== void 0 && _sdkProps$componentPr.id) {
73
- var existingContainer = document.getElementById(sdkProps.componentProps.id);
69
+ if ((_props$componentProps = props.componentProps) !== null && _props$componentProps !== void 0 && _props$componentProps.id) {
70
+ var existingContainer = document.getElementById(props.componentProps.id);
74
71
  if (existingContainer) {
75
72
  container = existingContainer;
76
73
  } else {
77
74
  // 如果指定的 ID 不存在,创建新元素
78
75
  container = document.createElement('div');
79
- container.id = sdkProps.componentProps.id;
76
+ container.id = props.componentProps.id;
80
77
  }
81
78
  } else {
82
79
  // 没有指定 ID,创建默认容器
@@ -85,10 +82,10 @@ var XAiWebSDK = /*#__PURE__*/function () {
85
82
  }
86
83
 
87
84
  // 设置容器样式 - 将除了 id 以外的所有属性都应用到容器
88
- if (sdkProps.componentProps) {
89
- var _sdkProps$componentPr2 = sdkProps.componentProps,
90
- id = _sdkProps$componentPr2.id,
91
- styleProps = _objectWithoutProperties(_sdkProps$componentPr2, _excluded);
85
+ if (props.componentProps) {
86
+ var _props$componentProps2 = props.componentProps,
87
+ id = _props$componentProps2.id,
88
+ styleProps = _objectWithoutProperties(_props$componentProps2, _excluded);
92
89
  Object.assign(container.style, styleProps);
93
90
  }
94
91
 
@@ -96,7 +93,14 @@ var XAiWebSDK = /*#__PURE__*/function () {
96
93
  if (!container.parentNode) {
97
94
  document.body.appendChild(container);
98
95
  }
99
- return new XAiWebSDK(container, sdkProps);
96
+ return new XAiWebSDK(container, props);
97
+ }
98
+
99
+ // 兼容旧版本的静态方法
100
+ }, {
101
+ key: "create",
102
+ value: function create(props) {
103
+ return this.initChatbot(props);
100
104
  }
101
105
  }]);
102
106
  return XAiWebSDK;
@@ -1 +1 @@
1
- {"version":3,"names":["React","ReactDOM","XAiProvider","XAiChatbot","jsx","_jsx","XAiWebSDK","container","props","_classCallCheck","_defineProperty","mount","_createClass","key","value","createRoot","root","render","_objectSpread","children","style","width","height","unmount","initChatbot","containerOrProps","_sdkProps$componentPr","HTMLElement","sdkProps","componentProps","id","existingContainer","document","getElementById","createElement","_sdkProps$componentPr2","styleProps","_objectWithoutProperties","_excluded","Object","assign","parentNode","body","appendChild","window"],"sources":["../../../src/utils/umdEntry.tsx"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport { XAiSDKProps } from '@/types/XAiProvider';\nimport XAiProvider from '@/components/XAiProvider';\nimport XAiChatbot from '../components/XAiChatbot';\n\nclass XAiWebSDK {\n container: HTMLElement;\n\n props: XAiSDKProps;\n\n root: any;\n\n constructor(container: HTMLElement, props: XAiSDKProps) {\n this.container = container;\n this.props = props;\n this.mount();\n }\n\n mount() {\n if (ReactDOM.createRoot) {\n this.root = ReactDOM.createRoot(this.container);\n this.root.render(\n <XAiProvider {...this.props}>\n <div style={{ width: '100%', height: '100%' }}>\n <XAiChatbot />\n </div>\n </XAiProvider>,\n );\n } else {\n // @ts-ignore\n ReactDOM.render(\n <XAiProvider {...this.props}>\n <div style={{ width: '100%', height: '100%' }}>\n <XAiChatbot />\n </div>\n </XAiProvider>,\n this.container,\n );\n }\n }\n\n unmount() {\n if (this.root && this.root.unmount) {\n this.root.unmount();\n }\n }\n\n // 支持两种调用方式\n static initChatbot(containerOrProps: HTMLElement | XAiSDKProps, props?: XAiSDKProps) {\n // 如果第一个参数是 HTMLElement\n if (containerOrProps instanceof HTMLElement) {\n return new XAiWebSDK(containerOrProps, props!);\n }\n\n // 如果第一个参数是 props\n const sdkProps = containerOrProps as XAiSDKProps;\n let container: HTMLElement;\n\n // 检查是否有指定的 componentProps.id\n if (sdkProps.componentProps?.id) {\n const existingContainer = document.getElementById(sdkProps.componentProps.id);\n if (existingContainer) {\n container = existingContainer;\n } else {\n // 如果指定的 ID 不存在,创建新元素\n container = document.createElement('div');\n container.id = sdkProps.componentProps.id;\n }\n } else {\n // 没有指定 ID,创建默认容器\n container = document.createElement('div');\n container.id = 'xai-chatbot-container';\n }\n\n // 设置容器样式 - 将除了 id 以外的所有属性都应用到容器\n if (sdkProps.componentProps) {\n const { id, ...styleProps } = sdkProps.componentProps;\n Object.assign(container.style, styleProps);\n }\n\n // 如果容器不在 DOM 中,添加到 body\n if (!container.parentNode) {\n document.body.appendChild(container);\n }\n\n return new XAiWebSDK(container, sdkProps);\n }\n}\n\n// 兼容 window 方式,也支持 new\n// @ts-ignore\nwindow.XAiWebSDK = XAiWebSDK;\n\n// 支持 ESModule/UMD 直接 import\nexport default XAiWebSDK;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","ReactDOM","XAiProvider","XAiChatbot","jsx","_jsx","XAiWebSDK","container","props","_classCallCheck","_defineProperty","onError","onSuccess","mount","_createClass","key","value","createRoot","root","render","_objectSpread","children","style","width","height","unmount","initChatbot","_props$componentProps","componentProps","id","existingContainer","document","getElementById","createElement","_props$componentProps2","styleProps","_objectWithoutProperties","_excluded","Object","assign","parentNode","body","appendChild","create","window"],"sources":["../../../src/utils/umdEntry.tsx"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport { XAiSDKProps } from '@/types/XAiProvider';\nimport XAiProvider from '@/components/XAiProvider';\nimport XAiChatbot from '../components/XAiChatbot';\n\nclass XAiWebSDK {\n container: HTMLElement;\n\n props: XAiSDKProps;\n\n root: any;\n\n onError?: (error: any) => void;\n\n onSuccess?: (appInfo: any) => void;\n\n constructor(container: HTMLElement, props: XAiSDKProps) {\n this.container = container;\n this.props = props;\n this.onError = props.onError;\n this.onSuccess = props.onSuccess;\n this.mount();\n }\n\n mount() {\n if (ReactDOM.createRoot) {\n this.root = ReactDOM.createRoot(this.container);\n this.root.render(\n <XAiProvider {...this.props}>\n <div style={{ width: '100%', height: '100%' }}>\n <XAiChatbot />\n </div>\n </XAiProvider>,\n );\n } else {\n // @ts-ignore\n ReactDOM.render(\n <XAiProvider {...this.props}>\n <div style={{ width: '100%', height: '100%' }}>\n <XAiChatbot />\n </div>\n </XAiProvider>,\n this.container,\n );\n }\n }\n\n unmount() {\n if (this.root && this.root.unmount) {\n this.root.unmount();\n }\n }\n\n // 支持 Coze 风格的语法:new XAiWebSDK.initChatbot()\n static initChatbot(props: XAiSDKProps): XAiWebSDK {\n let container: HTMLElement;\n\n // 检查是否有指定的 componentProps.id\n if (props.componentProps?.id) {\n const existingContainer = document.getElementById(props.componentProps.id);\n if (existingContainer) {\n container = existingContainer;\n } else {\n // 如果指定的 ID 不存在,创建新元素\n container = document.createElement('div');\n container.id = props.componentProps.id;\n }\n } else {\n // 没有指定 ID,创建默认容器\n container = document.createElement('div');\n container.id = 'xai-chatbot-container';\n }\n\n // 设置容器样式 - 将除了 id 以外的所有属性都应用到容器\n if (props.componentProps) {\n const { id, ...styleProps } = props.componentProps;\n Object.assign(container.style, styleProps);\n }\n\n // 如果容器不在 DOM 中,添加到 body\n if (!container.parentNode) {\n document.body.appendChild(container);\n }\n\n return new XAiWebSDK(container, props);\n }\n\n // 兼容旧版本的静态方法\n static create(props: XAiSDKProps): XAiWebSDK {\n return this.initChatbot(props);\n }\n}\n\n// 兼容 window 方式,也支持 new\n// @ts-ignore\nwindow.XAiWebSDK = XAiWebSDK;\n\n// 支持 ESModule/UMD 直接 import\nexport default XAiWebSDK;\n"],"mappings":"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"}