@ai-group/chat-sdk 0.2.8 → 0.3.0

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 (72) hide show
  1. package/dist/cjs/components/XAiChatbot/index.js +14 -5
  2. package/dist/cjs/components/XAiChatbot/index.js.map +2 -2
  3. package/dist/cjs/components/XAiChatbot/styles.d.ts +1 -0
  4. package/dist/cjs/components/XAiChatbot/styles.js +13 -0
  5. package/dist/cjs/components/XAiChatbot/styles.js.map +2 -2
  6. package/dist/cjs/components/XAiConversations/XAiConversations.stories.d.ts +6 -0
  7. package/dist/cjs/components/XAiConversations/XAiConversations.stories.js +82 -0
  8. package/dist/cjs/components/XAiConversations/XAiConversations.stories.js.map +7 -0
  9. package/dist/cjs/components/XAiConversations/index.d.ts +4 -0
  10. package/dist/cjs/components/XAiConversations/index.js +59 -0
  11. package/dist/cjs/components/XAiConversations/index.js.map +7 -0
  12. package/dist/cjs/components/XAiProvider/XAiProvider.stories.d.ts +2 -2
  13. package/dist/cjs/components/XAiProvider/XAiProvider.stories.js +12 -12
  14. package/dist/cjs/components/XAiProvider/XAiProvider.stories.js.map +2 -2
  15. package/dist/cjs/components/XAiProvider/demo.styles.d.ts +35 -0
  16. package/dist/cjs/components/XAiProvider/demo.styles.js +37 -0
  17. package/dist/cjs/components/XAiProvider/demo.styles.js.map +7 -0
  18. package/dist/cjs/components/XAiProvider/index.js +7 -4
  19. package/dist/cjs/components/XAiProvider/index.js.map +3 -3
  20. package/dist/cjs/hooks/useAgentGenerator.d.ts +3 -0
  21. package/dist/cjs/hooks/useAgentGenerator.js +162 -69
  22. package/dist/cjs/hooks/useAgentGenerator.js.map +2 -2
  23. package/dist/cjs/services/api.d.ts +33 -0
  24. package/dist/cjs/services/api.js +33 -0
  25. package/dist/cjs/services/api.js.map +2 -2
  26. package/dist/cjs/styles/markdown.js +140 -138
  27. package/dist/cjs/styles/markdown.js.map +2 -2
  28. package/dist/cjs/types/XAiChatbot.d.ts +2 -0
  29. package/dist/cjs/types/XAiChatbot.js.map +1 -1
  30. package/dist/cjs/types/XAiConversations.d.ts +4 -0
  31. package/dist/cjs/types/XAiConversations.js +18 -0
  32. package/dist/cjs/types/XAiConversations.js.map +7 -0
  33. package/dist/cjs/types/index.d.ts +1 -0
  34. package/dist/cjs/types/index.js +3 -1
  35. package/dist/cjs/types/index.js.map +2 -2
  36. package/dist/esm/components/XAiChatbot/index.js +22 -4
  37. package/dist/esm/components/XAiChatbot/index.js.map +1 -1
  38. package/dist/esm/components/XAiChatbot/styles.d.ts +1 -0
  39. package/dist/esm/components/XAiChatbot/styles.js +18 -17
  40. package/dist/esm/components/XAiChatbot/styles.js.map +1 -1
  41. package/dist/esm/components/XAiConversations/XAiConversations.stories.d.ts +6 -0
  42. package/dist/esm/components/XAiConversations/XAiConversations.stories.js +42 -0
  43. package/dist/esm/components/XAiConversations/XAiConversations.stories.js.map +1 -0
  44. package/dist/esm/components/XAiConversations/index.d.ts +4 -0
  45. package/dist/esm/components/XAiConversations/index.js +27 -0
  46. package/dist/esm/components/XAiConversations/index.js.map +1 -0
  47. package/dist/esm/components/XAiProvider/XAiProvider.stories.d.ts +2 -2
  48. package/dist/esm/components/XAiProvider/XAiProvider.stories.js +38 -180
  49. package/dist/esm/components/XAiProvider/XAiProvider.stories.js.map +1 -1
  50. package/dist/esm/components/XAiProvider/demo.styles.d.ts +35 -0
  51. package/dist/esm/components/XAiProvider/demo.styles.js +12 -0
  52. package/dist/esm/components/XAiProvider/demo.styles.js.map +1 -0
  53. package/dist/esm/components/XAiProvider/index.js +14 -3
  54. package/dist/esm/components/XAiProvider/index.js.map +1 -1
  55. package/dist/esm/hooks/useAgentGenerator.d.ts +3 -0
  56. package/dist/esm/hooks/useAgentGenerator.js +268 -114
  57. package/dist/esm/hooks/useAgentGenerator.js.map +1 -1
  58. package/dist/esm/services/api.d.ts +33 -0
  59. package/dist/esm/services/api.js +75 -0
  60. package/dist/esm/services/api.js.map +1 -1
  61. package/dist/esm/styles/markdown.js +1 -1
  62. package/dist/esm/styles/markdown.js.map +1 -1
  63. package/dist/esm/types/XAiChatbot.d.ts +2 -0
  64. package/dist/esm/types/XAiChatbot.js.map +1 -1
  65. package/dist/esm/types/XAiConversations.d.ts +4 -0
  66. package/dist/esm/types/XAiConversations.js +2 -0
  67. package/dist/esm/types/XAiConversations.js.map +1 -0
  68. package/dist/esm/types/index.d.ts +1 -0
  69. package/dist/esm/types/index.js +1 -0
  70. package/dist/esm/types/index.js.map +1 -1
  71. package/dist/umd/chat-sdk.min.js +1 -1
  72. package/package.json +1 -1
@@ -10,7 +10,7 @@ import { MessageRole, MessageStatus } from "../types/XAiMessage";
10
10
  import { ErrorCode } from "../types/XAiProvider";
11
11
  import { request } from "../utils/request";
12
12
  import { safeJsonParse } from "../utils";
13
- import { fetchAppConfig } from "../services/api";
13
+ import { fetchAppConfig, fetchSessionList, fetchSessionDetail } from "../services/api";
14
14
  // 图标
15
15
  import documentIcon from "../assets/document.png";
16
16
  import completedIcon from "../assets/completed.png";
@@ -61,14 +61,27 @@ var useAgentGenerator = function useAgentGenerator(_ref) {
61
61
  onError = _ref.onError,
62
62
  onSuccess = _ref.onSuccess;
63
63
  var textSpeed = 60;
64
+ // 聊天记录
64
65
  var _useState = useState([]),
65
66
  _useState2 = _slicedToArray(_useState, 2),
66
67
  messages = _useState2[0],
67
68
  setMessages = _useState2[1];
68
- var _useState3 = useState(null),
69
+ // 会话记录
70
+ var _useState3 = useState([]),
69
71
  _useState4 = _slicedToArray(_useState3, 2),
70
- appInfo = _useState4[0],
71
- setAppInfo = _useState4[1];
72
+ sessionsList = _useState4[0],
73
+ setSessionList = _useState4[1];
74
+ // 当前会话
75
+ var _useState5 = useState(''),
76
+ _useState6 = _slicedToArray(_useState5, 2),
77
+ currentSession = _useState6[0],
78
+ setCurrentSession = _useState6[1];
79
+ // 应用 配置
80
+ var _useState7 = useState(null),
81
+ _useState8 = _slicedToArray(_useState7, 2),
82
+ appInfo = _useState8[0],
83
+ setAppInfo = _useState8[1];
84
+ // 请求 配置
72
85
  var requestInfo = useRef({});
73
86
  var _ref2 = config || {},
74
87
  appNo = _ref2.appNo,
@@ -206,6 +219,7 @@ var useAgentGenerator = function useAgentGenerator(_ref) {
206
219
  description: content
207
220
  }]
208
221
  };
222
+ // 插到末尾
209
223
  newMessages.push(newMessage);
210
224
  } else {
211
225
  var suggestMsg = newMessages[suggestMessageIndex];
@@ -356,92 +370,82 @@ var useAgentGenerator = function useAgentGenerator(_ref) {
356
370
  // 添加对话(非普通对话)
357
371
  var setMessage = /*#__PURE__*/function () {
358
372
  var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(messageType, content) {
359
- var prologueMessageIndex, newMessage, suggestMessageIndex, _prologueMessageIndex, _newMessage;
360
373
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
361
374
  while (1) switch (_context2.prev = _context2.next) {
362
375
  case 0:
363
376
  _context2.t0 = messageType;
364
- _context2.next = _context2.t0 === 'prologue' ? 3 : _context2.t0 === 'suggest' ? 6 : 9;
377
+ _context2.next = _context2.t0 === 'prologue' ? 3 : _context2.t0 === 'suggest' ? 5 : 7;
365
378
  break;
366
379
  case 3:
367
- prologueMessageIndex = messages.findIndex(function (item) {
368
- var _item$extra;
369
- return (_item$extra = item.extra) === null || _item$extra === void 0 ? void 0 : _item$extra.prologue;
370
- });
371
- if (prologueMessageIndex === -1) {
372
- newMessage = {
373
- type: 'TextMessage',
374
- id: uuidV4(),
375
- createdAt: new Date(),
376
- role: MessageRole.assistant,
377
- status: MessageStatus.done,
378
- content: {
379
- text: content
380
- },
381
- extra: {
382
- prologue: true,
383
- noFooter: true
384
- }
385
- };
386
- setMessages(function (prev) {
387
- return [newMessage].concat(_toConsumableArray(prev));
380
+ setMessages(function (prev) {
381
+ var prologueMessageIndex = prev.findIndex(function (item) {
382
+ var _item$extra;
383
+ return (_item$extra = item.extra) === null || _item$extra === void 0 ? void 0 : _item$extra.prologue;
388
384
  });
389
- } else {
390
- setMessages(function (prev) {
391
- return prev.map(function (item) {
392
- var _item$extra2;
393
- if ((_item$extra2 = item.extra) !== null && _item$extra2 !== void 0 && _item$extra2.prologue && item.content && 'text' in item.content) {
394
- item.content.text = content;
385
+ if (prologueMessageIndex === -1) {
386
+ var newMessage = {
387
+ type: 'TextMessage',
388
+ id: uuidV4(),
389
+ createdAt: new Date(),
390
+ role: MessageRole.assistant,
391
+ status: MessageStatus.done,
392
+ content: {
393
+ text: content
394
+ },
395
+ extra: {
396
+ prologue: true,
397
+ noFooter: true
395
398
  }
396
- return item;
397
- });
399
+ };
400
+ return [newMessage].concat(_toConsumableArray(prev));
401
+ }
402
+ return prev.map(function (item) {
403
+ var _item$extra2;
404
+ if ((_item$extra2 = item.extra) !== null && _item$extra2 !== void 0 && _item$extra2.prologue && item.content && 'text' in item.content) {
405
+ item.content.text = content;
406
+ }
407
+ return item;
398
408
  });
399
- }
400
- return _context2.abrupt("break", 10);
401
- case 6:
402
- suggestMessageIndex = messages.findIndex(function (item) {
403
- return item.type === 'SuggestionMessage';
404
409
  });
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;
410
+ return _context2.abrupt("break", 8);
411
+ case 5:
412
+ setMessages(function (prev) {
413
+ var suggestMessageIndex = prev.findIndex(function (item) {
414
+ return item.type === 'SuggestionMessage';
409
415
  });
410
- _newMessage = {
411
- id: uuidV4(),
412
- type: 'SuggestionMessage',
413
- createdAt: new Date(),
414
- status: MessageStatus.done,
415
- role: MessageRole.suggestion,
416
- content: content
417
- };
418
- if (_prologueMessageIndex === -1) {
419
- // 如果没有开场白,则插入到最前面
420
- setMessages(function (prev) {
421
- return [_newMessage].concat(_toConsumableArray(prev));
416
+ if (suggestMessageIndex === -1) {
417
+ var prologueMessageIndex = prev.findIndex(function (item) {
418
+ var _item$extra3;
419
+ return (_item$extra3 = item.extra) === null || _item$extra3 === void 0 ? void 0 : _item$extra3.prologue;
422
420
  });
423
- } else {
421
+ var newMessage = {
422
+ id: uuidV4(),
423
+ type: 'SuggestionMessage',
424
+ createdAt: new Date(),
425
+ status: MessageStatus.done,
426
+ role: MessageRole.suggestion,
427
+ content: content
428
+ };
429
+ if (prologueMessageIndex === -1) {
430
+ // 如果没有开场白,则插入到最前面
431
+ return [newMessage].concat(_toConsumableArray(prev));
432
+ }
424
433
  // 如果有开场白,则插到开场白后面
425
- setMessages(function (prev) {
426
- var newMessages = _toConsumableArray(prev);
427
- newMessages.splice(_prologueMessageIndex + 1, 0, _newMessage);
428
- return newMessages;
429
- });
434
+ var newMessages = _toConsumableArray(prev);
435
+ newMessages.splice(prologueMessageIndex + 1, 0, newMessage);
436
+ return newMessages;
430
437
  }
431
- } else {
432
- setMessages(function (prev) {
433
- return prev.map(function (item) {
434
- if (item.type === 'SuggestionMessage') {
435
- item.content = content;
436
- }
437
- return item;
438
- });
438
+ return prev.map(function (item) {
439
+ if (item.type === 'SuggestionMessage') {
440
+ item.content = content;
441
+ }
442
+ return item;
439
443
  });
440
- }
441
- return _context2.abrupt("break", 10);
442
- case 9:
443
- return _context2.abrupt("break", 10);
444
- case 10:
444
+ });
445
+ return _context2.abrupt("break", 8);
446
+ case 7:
447
+ return _context2.abrupt("break", 8);
448
+ case 8:
445
449
  case "end":
446
450
  return _context2.stop();
447
451
  }
@@ -484,7 +488,8 @@ var useAgentGenerator = function useAgentGenerator(_ref) {
484
488
  start("".concat(url, "/appouter/").concat(appNo, "/sendMsg?pt=").concat(pt, "&tc=").concat(tc), {
485
489
  appParams: {
486
490
  inputs_msg: content
487
- }
491
+ },
492
+ sessionId: currentSession
488
493
  }, {
489
494
  Authorization: "Bearer ".concat(token)
490
495
  });
@@ -550,47 +555,193 @@ var useAgentGenerator = function useAgentGenerator(_ref) {
550
555
  });
551
556
  };
552
557
 
558
+ // 初始化历史记录
559
+ var formatMessages = function formatMessages(data) {
560
+ setMessages(function (prev) {
561
+ var initMessagesList = [];
562
+ data.forEach(function (item) {
563
+ var _ref7 = item || {},
564
+ content = _ref7.content,
565
+ messageTime = _ref7.messageTime,
566
+ role = _ref7.role;
567
+ if (role === 'USER') {
568
+ var newMessage = {
569
+ type: 'TextMessage',
570
+ id: uuidV4(),
571
+ createdAt: messageTime,
572
+ role: MessageRole.user,
573
+ status: MessageStatus.done,
574
+ content: {
575
+ text: content
576
+ }
577
+ };
578
+ initMessagesList.push(newMessage);
579
+ } else if (role === 'AI') {
580
+ var _contentObj$result;
581
+ var contentObj = safeJsonParse(content);
582
+ var _newMessage = {
583
+ id: uuidV4(),
584
+ type: 'TextMessage',
585
+ createdAt: messageTime,
586
+ role: MessageRole.assistant,
587
+ content: {
588
+ text: contentObj === null || contentObj === void 0 || (_contentObj$result = contentObj.result) === null || _contentObj$result === void 0 ? void 0 : _contentObj$result.result
589
+ },
590
+ thinks: [],
591
+ status: MessageStatus.done
592
+ };
593
+ initMessagesList.push(_newMessage);
594
+ }
595
+ });
596
+ return [].concat(_toConsumableArray(prev), initMessagesList);
597
+ });
598
+ };
599
+
600
+ // 初始化开场白
601
+ var initPrologue = /*#__PURE__*/function () {
602
+ var _ref8 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
603
+ var _appInfo$onboardingIn, onboardingInfo, _ref9, _ref9$suggested_quest, suggested_questions, _ref9$prologue, prologue, formatSuggests, suggestMessages, hasMessages;
604
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
605
+ while (1) switch (_context4.prev = _context4.next) {
606
+ case 0:
607
+ _appInfo$onboardingIn = appInfo.onboardingInfo, onboardingInfo = _appInfo$onboardingIn === void 0 ? {} : _appInfo$onboardingIn; // eslint-disable-next-line camelcase
608
+ _ref9 = onboardingInfo || {}, _ref9$suggested_quest = _ref9.suggested_questions, suggested_questions = _ref9$suggested_quest === void 0 ? [] : _ref9$suggested_quest, _ref9$prologue = _ref9.prologue, prologue = _ref9$prologue === void 0 ? '' : _ref9$prologue; // 初始化开场白
609
+ if (prologue) {
610
+ setMessage('prologue', prologue);
611
+ } else {
612
+ setMessages(function (prev) {
613
+ return prev.filter(function (item) {
614
+ var _item$extra4;
615
+ return !((_item$extra4 = item.extra) !== null && _item$extra4 !== void 0 && _item$extra4.prologue);
616
+ });
617
+ });
618
+ }
619
+
620
+ // 过滤空内容
621
+ formatSuggests = suggested_questions.filter(function (item) {
622
+ return item;
623
+ });
624
+ if (formatSuggests.length > 0) {
625
+ suggestMessages = formatSuggests.map(function (item, index) {
626
+ return {
627
+ key: index + 1,
628
+ description: item
629
+ };
630
+ }); // 页面为空时展示开场白预设问题
631
+ hasMessages = messages.some(function (item) {
632
+ var _item$extra5;
633
+ return !((_item$extra5 = item.extra) !== null && _item$extra5 !== void 0 && _item$extra5.prologue) && item.type !== 'SuggestionMessage';
634
+ });
635
+ if (!hasMessages) {
636
+ setMessage('suggest', suggestMessages);
637
+ }
638
+ } else {
639
+ setMessages(function (prev) {
640
+ return prev.filter(function (item) {
641
+ return !(item.type === 'SuggestionMessage');
642
+ });
643
+ });
644
+ }
645
+ case 5:
646
+ case "end":
647
+ return _context4.stop();
648
+ }
649
+ }, _callee4);
650
+ }));
651
+ return function initPrologue() {
652
+ return _ref8.apply(this, arguments);
653
+ };
654
+ }();
655
+
656
+ // 获取聊天记录
657
+ var initAppConversations = /*#__PURE__*/function () {
658
+ var _ref10 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {
659
+ var result, _result$data2, sessionId, sessionResult, _sessionResult$data, sessionsData;
660
+ return _regeneratorRuntime().wrap(function _callee5$(_context5) {
661
+ while (1) switch (_context5.prev = _context5.next) {
662
+ case 0:
663
+ _context5.prev = 0;
664
+ _context5.next = 3;
665
+ return fetchSessionList({
666
+ url: url,
667
+ appNo: appNo,
668
+ pt: pt,
669
+ tc: tc,
670
+ token: token
671
+ });
672
+ case 3:
673
+ result = _context5.sent;
674
+ if (!(result !== null && result !== void 0 && result.success)) {
675
+ _context5.next = 24;
676
+ break;
677
+ }
678
+ if (!((result === null || result === void 0 || (_result$data2 = result.data) === null || _result$data2 === void 0 ? void 0 : _result$data2.length) > 0)) {
679
+ _context5.next = 19;
680
+ break;
681
+ }
682
+ setSessionList(result.data);
683
+ sessionId = result.data[0].sessionId;
684
+ if (!sessionId) {
685
+ _context5.next = 16;
686
+ break;
687
+ }
688
+ setCurrentSession(sessionId); // 设置当前会话 id;
689
+ _context5.next = 12;
690
+ return fetchSessionDetail({
691
+ url: url,
692
+ appNo: appNo,
693
+ pt: pt,
694
+ tc: tc,
695
+ sessionId: sessionId,
696
+ token: token
697
+ });
698
+ case 12:
699
+ sessionResult = _context5.sent;
700
+ if (sessionResult !== null && sessionResult !== void 0 && sessionResult.success) {
701
+ sessionsData = (sessionResult === null || sessionResult === void 0 || (_sessionResult$data = sessionResult.data) === null || _sessionResult$data === void 0 || (_sessionResult$data = _sessionResult$data.list) === null || _sessionResult$data === void 0 || (_sessionResult$data = _sessionResult$data[0]) === null || _sessionResult$data === void 0 ? void 0 : _sessionResult$data.sessionMessages) || [];
702
+ if (sessionsData.length > 0) {
703
+ formatMessages(sessionsData);
704
+ }
705
+ }
706
+ _context5.next = 17;
707
+ break;
708
+ case 16:
709
+ // 兼容 无 session异常
710
+ setCurrentSession(uuidV4());
711
+ case 17:
712
+ _context5.next = 22;
713
+ break;
714
+ case 19:
715
+ setSessionList([]);
716
+ setCurrentSession(uuidV4());
717
+ initPrologue();
718
+ case 22:
719
+ _context5.next = 25;
720
+ break;
721
+ case 24:
722
+ initPrologue();
723
+ case 25:
724
+ _context5.next = 29;
725
+ break;
726
+ case 27:
727
+ _context5.prev = 27;
728
+ _context5.t0 = _context5["catch"](0);
729
+ case 29:
730
+ case "end":
731
+ return _context5.stop();
732
+ }
733
+ }, _callee5, null, [[0, 27]]);
734
+ }));
735
+ return function initAppConversations() {
736
+ return _ref10.apply(this, arguments);
737
+ };
738
+ }();
739
+
553
740
  // 初始化应用
554
741
  useEffect(function () {
555
742
  if (appInfo) {
556
- var _appInfo$onboardingIn = appInfo.onboardingInfo,
557
- onboardingInfo = _appInfo$onboardingIn === void 0 ? {} : _appInfo$onboardingIn;
558
- // eslint-disable-next-line camelcase
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;
564
- if (prologue) {
565
- setMessage('prologue', prologue);
566
- } else {
567
- setMessages(function (prev) {
568
- return prev.filter(function (item) {
569
- var _item$extra4;
570
- return !((_item$extra4 = item.extra) !== null && _item$extra4 !== void 0 && _item$extra4.prologue);
571
- });
572
- });
573
- }
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) {
581
- return {
582
- key: index + 1,
583
- description: item
584
- };
585
- });
586
- setMessage('suggest', suggestMessages);
587
- } else {
588
- setMessages(function (prev) {
589
- return prev.filter(function (item) {
590
- return !(item.type === 'SuggestionMessage');
591
- });
592
- });
593
- }
743
+ // 初始化历史数据
744
+ initAppConversations();
594
745
  }
595
746
  // eslint-disable-next-line react-hooks/exhaustive-deps
596
747
  }, [appInfo]);
@@ -599,8 +750,11 @@ var useAgentGenerator = function useAgentGenerator(_ref) {
599
750
  messages: messages,
600
751
  loading: loading,
601
752
  content: responseData.content,
753
+ sessionsList: sessionsList,
754
+ currentSession: currentSession,
602
755
  reChat: reChat,
603
756
  chat: chat,
757
+ setCurrentSession: setCurrentSession,
604
758
  setMessage: setMessage,
605
759
  setMessages: setMessages,
606
760
  stopChat: stopChat