@ai-group/chat-sdk 1.0.11 → 1.0.13

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 (98) hide show
  1. package/dist/cjs/components/DislikeFeedback.js +79 -0
  2. package/dist/cjs/components/DislikeFeedback.js.map +7 -0
  3. package/dist/cjs/components/FeedbackTags.js +62 -0
  4. package/dist/cjs/components/FeedbackTags.js.map +7 -0
  5. package/dist/cjs/components/XAiChatbot/index.js +5 -3
  6. package/dist/cjs/components/XAiChatbot/index.js.map +2 -2
  7. package/dist/cjs/components/XAiProvider/index.d.ts +2 -2
  8. package/dist/cjs/components/XAiProvider/index.js +145 -45
  9. package/dist/cjs/components/XAiProvider/index.js.map +3 -3
  10. package/dist/cjs/hooks/useAgentGenerator.js +26 -26
  11. package/dist/cjs/hooks/useAgentGenerator.js.map +2 -2
  12. package/dist/cjs/services/api.d.ts +32 -3
  13. package/dist/cjs/services/api.js +15 -0
  14. package/dist/cjs/services/api.js.map +2 -2
  15. package/dist/cjs/types/XAiMessage.js.map +1 -1
  16. package/dist/esm/components/DislikeFeedback.js +97 -0
  17. package/dist/esm/components/DislikeFeedback.js.map +1 -0
  18. package/dist/esm/components/FeedbackTags.js +34 -0
  19. package/dist/esm/components/FeedbackTags.js.map +1 -0
  20. package/dist/esm/components/XAiChatbot/index.js +2 -2
  21. package/dist/esm/components/XAiChatbot/index.js.map +1 -1
  22. package/dist/esm/components/XAiProvider/index.d.ts +2 -2
  23. package/dist/esm/components/XAiProvider/index.js +218 -84
  24. package/dist/esm/components/XAiProvider/index.js.map +1 -1
  25. package/dist/esm/hooks/useAgentGenerator.js +10 -2
  26. package/dist/esm/hooks/useAgentGenerator.js.map +1 -1
  27. package/dist/esm/services/api.d.ts +32 -3
  28. package/dist/esm/services/api.js +32 -1
  29. package/dist/esm/services/api.js.map +1 -1
  30. package/dist/esm/types/XAiMessage.js.map +1 -1
  31. package/dist/umd/chat-sdk.min.js +1 -1
  32. package/package.json +16 -13
  33. package/dist/cjs/assets/svg/AddChatIcon.d.ts +0 -3
  34. package/dist/cjs/client/base.d.ts +0 -9
  35. package/dist/cjs/client/restClient.d.ts +0 -0
  36. package/dist/cjs/client/wsClient.d.ts +0 -0
  37. package/dist/cjs/components/XAiChatbot/index.d.ts +0 -9
  38. package/dist/cjs/components/XAiChatbot/styles.d.ts +0 -67
  39. package/dist/cjs/components/XAiConversations/XAiConversations.stories.d.ts +0 -6
  40. package/dist/cjs/components/XAiConversations/index.d.ts +0 -4
  41. package/dist/cjs/components/XAiConversations/styles.d.ts +0 -49
  42. package/dist/cjs/components/XAiProvider/demo.styles.d.ts +0 -37
  43. package/dist/cjs/components/XAiSender/XAiSender.stories.d.ts +0 -6
  44. package/dist/cjs/components/XAiSender/index.d.ts +0 -4
  45. package/dist/cjs/components/XAiSender/styles.d.ts +0 -47
  46. package/dist/cjs/constants/index.d.ts +0 -2
  47. package/dist/cjs/context/AiProviderContext.d.ts +0 -14
  48. package/dist/cjs/context/ThemeContext.d.ts +0 -20
  49. package/dist/cjs/hooks/useEventStreamRequest.d.ts +0 -30
  50. package/dist/cjs/hooks/useProviderContext.d.ts +0 -33
  51. package/dist/cjs/styles/common.d.ts +0 -73
  52. package/dist/cjs/styles/markdown.d.ts +0 -3
  53. package/dist/cjs/types/XAiChatbot.d.ts +0 -156
  54. package/dist/cjs/types/XAiConversations.d.ts +0 -20
  55. package/dist/cjs/types/XAiMessage.d.ts +0 -108
  56. package/dist/cjs/types/XAiProvider.d.ts +0 -347
  57. package/dist/cjs/types/XAiSender.d.ts +0 -13
  58. package/dist/cjs/types/index.d.ts +0 -5
  59. package/dist/cjs/types/node.d.ts +0 -10
  60. package/dist/cjs/utils/chat.d.ts +0 -34
  61. package/dist/cjs/utils/index.d.ts +0 -2
  62. package/dist/cjs/utils/providerManager.d.ts +0 -22
  63. package/dist/cjs/utils/request.d.ts +0 -78
  64. package/dist/cjs/utils/request.example.d.ts +0 -39
  65. package/dist/cjs/utils/workflowNode.d.ts +0 -2
  66. package/dist/esm/assets/svg/AddChatIcon.d.ts +0 -3
  67. package/dist/esm/client/base.d.ts +0 -9
  68. package/dist/esm/client/restClient.d.ts +0 -0
  69. package/dist/esm/client/wsClient.d.ts +0 -0
  70. package/dist/esm/components/XAiChatbot/index.d.ts +0 -9
  71. package/dist/esm/components/XAiChatbot/styles.d.ts +0 -67
  72. package/dist/esm/components/XAiConversations/XAiConversations.stories.d.ts +0 -6
  73. package/dist/esm/components/XAiConversations/index.d.ts +0 -4
  74. package/dist/esm/components/XAiConversations/styles.d.ts +0 -49
  75. package/dist/esm/components/XAiProvider/demo.styles.d.ts +0 -37
  76. package/dist/esm/components/XAiSender/XAiSender.stories.d.ts +0 -6
  77. package/dist/esm/components/XAiSender/index.d.ts +0 -4
  78. package/dist/esm/components/XAiSender/styles.d.ts +0 -47
  79. package/dist/esm/constants/index.d.ts +0 -2
  80. package/dist/esm/context/AiProviderContext.d.ts +0 -14
  81. package/dist/esm/context/ThemeContext.d.ts +0 -20
  82. package/dist/esm/hooks/useEventStreamRequest.d.ts +0 -30
  83. package/dist/esm/hooks/useProviderContext.d.ts +0 -33
  84. package/dist/esm/styles/common.d.ts +0 -73
  85. package/dist/esm/styles/markdown.d.ts +0 -3
  86. package/dist/esm/types/XAiChatbot.d.ts +0 -156
  87. package/dist/esm/types/XAiConversations.d.ts +0 -20
  88. package/dist/esm/types/XAiMessage.d.ts +0 -108
  89. package/dist/esm/types/XAiProvider.d.ts +0 -347
  90. package/dist/esm/types/XAiSender.d.ts +0 -13
  91. package/dist/esm/types/index.d.ts +0 -5
  92. package/dist/esm/types/node.d.ts +0 -10
  93. package/dist/esm/utils/chat.d.ts +0 -34
  94. package/dist/esm/utils/index.d.ts +0 -2
  95. package/dist/esm/utils/providerManager.d.ts +0 -22
  96. package/dist/esm/utils/request.d.ts +0 -78
  97. package/dist/esm/utils/request.example.d.ts +0 -39
  98. package/dist/esm/utils/workflowNode.d.ts +0 -2
@@ -1,14 +1,22 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
+ import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime";
3
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
4
+ import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
1
5
  import _createForOfIteratorHelper from "@babel/runtime/helpers/esm/createForOfIteratorHelper";
2
6
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
- import { forwardRef, useImperativeHandle, useState, useRef, useEffect } from 'react';
4
- import { message, Divider, Modal, Input } from 'antd';
7
+ import React, { forwardRef, useImperativeHandle, useState, useRef, useEffect } from 'react';
8
+ import { message, Divider, Modal, Input, ConfigProvider } from 'antd';
5
9
  import copy from 'copy-to-clipboard';
6
10
  import { XProvider } from '@ant-design/x';
7
- import { ExclamationCircleFilled } from '@ant-design/icons';
11
+ import { ExclamationCircleFilled, LikeFilled, LikeOutlined } from '@ant-design/icons';
8
12
  import { XAiContext } from "../../context/AiProviderContext";
9
13
  import useAgentGenerator from "../../hooks/useAgentGenerator";
10
14
  import { MOBILE_MAX_WIDTH } from "../../constants";
11
15
  import userIcon from "../../assets/user.png";
16
+ import { primaryBlue } from "../../styles/common";
17
+ import DislikeFeedback from "../DislikeFeedback";
18
+ import { addFeedback } from "../../services/api";
19
+ import { defaultActions } from "../XAiChatbot";
12
20
  import { jsx as _jsx } from "react/jsx-runtime";
13
21
  import { jsxs as _jsxs } from "react/jsx-runtime";
14
22
  var confirm = Modal.confirm;
@@ -80,6 +88,7 @@ var XAiProvider = /*#__PURE__*/forwardRef(function (_ref, ref) {
80
88
 
81
89
  // 创建监听器
82
90
  var resizeObserver = new ResizeObserver(function (entries) {
91
+ // eslint-disable-next-line no-restricted-syntax
83
92
  var _iterator = _createForOfIteratorHelper(entries),
84
93
  _step;
85
94
  try {
@@ -119,47 +128,92 @@ var XAiProvider = /*#__PURE__*/forwardRef(function (_ref, ref) {
119
128
  };
120
129
 
121
130
  // 工具栏按钮点击
122
- var handleActions = function handleActions(index, actionData) {
123
- var _ref3 = actionData || {},
124
- content = _ref3.content,
125
- id = _ref3.id;
126
- var _content$text = content.text,
127
- text = _content$text === void 0 ? '' : _content$text;
128
- switch (index) {
129
- case 0:
130
- reChat();
131
- break;
132
- case 1:
133
- copy(text);
134
- message.success('复制成功');
135
- break;
136
- case 2:
137
- {
138
- var idx = messages.findIndex(function (item) {
139
- return item.id === id;
140
- });
141
- if (idx >= 0) {
142
- // 删除该条消息及建议类消息
143
- if (messages.length - idx <= 2) {
144
- setMessages(function (prev) {
145
- return prev.filter(function (item) {
146
- return item.id !== id && item.type !== 'SuggestionMessage';
131
+ var handleActions = /*#__PURE__*/function () {
132
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(index, actionData) {
133
+ var _ref4, content, id, _content$text, text, idx, _ref5, appNo, pt, tc, _actionData$raw, res;
134
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
135
+ while (1) switch (_context.prev = _context.next) {
136
+ case 0:
137
+ _ref4 = actionData || {}, content = _ref4.content, id = _ref4.id;
138
+ _content$text = content.text, text = _content$text === void 0 ? '' : _content$text;
139
+ _context.t0 = index;
140
+ _context.next = _context.t0 === 0 ? 5 : _context.t0 === 1 ? 7 : _context.t0 === 2 ? 10 : _context.t0 === 3 ? 13 : 20;
141
+ break;
142
+ case 5:
143
+ reChat();
144
+ return _context.abrupt("break", 20);
145
+ case 7:
146
+ copy(text);
147
+ message.success('复制成功');
148
+ return _context.abrupt("break", 20);
149
+ case 10:
150
+ idx = messages.findIndex(function (item) {
151
+ return item.id === id;
152
+ });
153
+ if (idx >= 0) {
154
+ // 删除该条消息及建议类消息
155
+ if (messages.length - idx <= 2) {
156
+ setMessages(function (prev) {
157
+ return prev.filter(function (item) {
158
+ return item.id !== id && item.type !== 'SuggestionMessage';
159
+ });
147
160
  });
148
- });
149
- } else {
150
- // 非最新消息 只删除该条消息
161
+ } else {
162
+ // 非最新消息 只删除该条消息
163
+ setMessages(function (prev) {
164
+ return prev.filter(function (item) {
165
+ return item.id !== id;
166
+ });
167
+ });
168
+ }
169
+ message.success('删除成功');
170
+ }
171
+ return _context.abrupt("break", 20);
172
+ case 13:
173
+ _ref5 = config || {}, appNo = _ref5.appNo, pt = _ref5.pt, tc = _ref5.tc;
174
+ if (!(appNo && pt && tc)) {
175
+ _context.next = 19;
176
+ break;
177
+ }
178
+ _context.next = 17;
179
+ return addFeedback({
180
+ url: url,
181
+ token: token,
182
+ appNo: appNo,
183
+ pt: pt,
184
+ tc: tc,
185
+ requestId: (_actionData$raw = actionData.raw) === null || _actionData$raw === void 0 ? void 0 : _actionData$raw.requestId,
186
+ isLike: 1
187
+ });
188
+ case 17:
189
+ res = _context.sent;
190
+ if (res.success) {
191
+ message.success('感谢您的反馈');
151
192
  setMessages(function (prev) {
152
- return prev.filter(function (item) {
153
- return item.id !== id;
193
+ return prev.map(function (item) {
194
+ if (item.id === id) {
195
+ return _objectSpread(_objectSpread({}, item), {}, {
196
+ isLike: 1
197
+ });
198
+ }
199
+ return item;
154
200
  });
155
201
  });
202
+ } else {
203
+ message.error('反馈失败,请稍后再试');
156
204
  }
157
- message.success('删除成功');
158
- }
159
- break;
205
+ case 19:
206
+ return _context.abrupt("break", 20);
207
+ case 20:
208
+ case "end":
209
+ return _context.stop();
160
210
  }
161
- }
162
- };
211
+ }, _callee);
212
+ }));
213
+ return function handleActions(_x, _x2) {
214
+ return _ref3.apply(this, arguments);
215
+ };
216
+ }();
163
217
 
164
218
  // 建议消息点击
165
219
  var handleSuggestMessageClick = function handleSuggestMessageClick(_item, id) {
@@ -270,9 +324,9 @@ var XAiProvider = /*#__PURE__*/forwardRef(function (_ref, ref) {
270
324
  return item.actionName === 'FINISHED';
271
325
  });
272
326
  if (!finalResult) return null;
273
- var _ref4 = finalResult.extra || {},
274
- cost = _ref4.cost,
275
- tokenCount = _ref4.token;
327
+ var _ref6 = finalResult.extra || {},
328
+ cost = _ref6.cost,
329
+ tokenCount = _ref6.token;
276
330
  if (!cost && !token) return null;
277
331
  return /*#__PURE__*/_jsxs("div", {
278
332
  style: {
@@ -294,50 +348,130 @@ var XAiProvider = /*#__PURE__*/forwardRef(function (_ref, ref) {
294
348
  };
295
349
  // 是否展示清空按钮
296
350
  var clearBtnShow = typeof (config === null || config === void 0 || (_config$chatProps = config.chatProps) === null || _config$chatProps === void 0 ? void 0 : _config$chatProps.clearBtnShow) !== 'undefined' ? config.chatProps.clearBtnShow : !(config !== null && config !== void 0 && (_config$session = config.session) !== null && _config$session !== void 0 && _config$session.showSessionList);
297
- return /*#__PURE__*/_jsx(XProvider, {
298
- children: /*#__PURE__*/_jsx(XAiContext.Provider, {
299
- value: {
300
- avatar: /*#__PURE__*/_jsx("img", {
301
- src: icon,
302
- alt: "\u667A\u80FD\u4F53\u5934\u50CF"
303
- }),
304
- userAvatar: /*#__PURE__*/_jsx("img", {
305
- src: userIcon,
306
- alt: "\u7528\u6237\u5934\u50CF"
307
- }),
308
- emptyStateImage: icon,
309
- emptyStateText: appName,
310
- footerTips: '内容由AI生成,无法确保真实准确,仅供参考',
311
- providerId: providerId,
312
- sessionList: sessionList,
313
- sessionTotal: sessionPagination.total,
314
- token: token,
315
- messages: messages,
316
- loading: loading,
317
- error: null,
318
- activeKey: currentSessionId,
319
- clearBtnShow: clearBtnShow,
320
- inputShow: (config === null || config === void 0 || (_config$chatProps2 = config.chatProps) === null || _config$chatProps2 === void 0 ? void 0 : _config$chatProps2.inputShow) || true,
321
- isNarrow: isNarrow,
322
- messageTooltip: ToolTip,
323
- onSend: handleSendMessage,
324
- onClear: handleCreateNewMessage,
325
- onNewChat: handleCreateNewMessage,
326
- onStop: stopChat,
327
- menu: menuConfig,
328
- onActiveChange: handleActiveChange,
329
- onSuggestMessageClick: handleSuggestMessageClick,
330
- onMessagesActionsCallback: handleActions,
331
- isInProvider: true
332
- },
333
- children: /*#__PURE__*/_jsx("div", {
334
- ref: divRef,
335
- style: {
336
- display: 'flex',
337
- height: '100%',
338
- position: 'relative'
351
+ return /*#__PURE__*/_jsx(ConfigProvider, {
352
+ theme: {
353
+ token: {
354
+ colorPrimary: (appInfo === null || appInfo === void 0 ? void 0 : appInfo.appTheme) || primaryBlue
355
+ }
356
+ },
357
+ children: /*#__PURE__*/_jsx(XProvider, {
358
+ children: /*#__PURE__*/_jsx(XAiContext.Provider, {
359
+ value: {
360
+ avatar: /*#__PURE__*/_jsx("img", {
361
+ src: icon,
362
+ alt: "\u667A\u80FD\u4F53\u5934\u50CF"
363
+ }),
364
+ userAvatar: /*#__PURE__*/_jsx("img", {
365
+ src: userIcon,
366
+ alt: "\u7528\u6237\u5934\u50CF"
367
+ }),
368
+ emptyStateImage: icon,
369
+ emptyStateText: appName,
370
+ footerTips: '内容由AI生成,无法确保真实准确,仅供参考',
371
+ providerId: providerId,
372
+ sessionList: sessionList,
373
+ sessionTotal: sessionPagination.total,
374
+ token: token,
375
+ messages: messages,
376
+ loading: loading,
377
+ error: null,
378
+ activeKey: currentSessionId,
379
+ clearBtnShow: clearBtnShow,
380
+ inputShow: (config === null || config === void 0 || (_config$chatProps2 = config.chatProps) === null || _config$chatProps2 === void 0 ? void 0 : _config$chatProps2.inputShow) || true,
381
+ isNarrow: isNarrow,
382
+ messageTooltip: ToolTip,
383
+ messageActions: [].concat(_toConsumableArray(defaultActions), [{
384
+ key: 'like',
385
+ tooltip: '赞',
386
+ render: function render(i, msg) {
387
+ var isLike = msg.isLike === 1;
388
+ if (isLike) {
389
+ return /*#__PURE__*/_jsx(LikeFilled, {
390
+ style: {
391
+ color: (appInfo === null || appInfo === void 0 ? void 0 : appInfo.appTheme) || primaryBlue
392
+ }
393
+ });
394
+ }
395
+ return /*#__PURE__*/_jsx(LikeOutlined, {});
396
+ }
397
+ }, {
398
+ key: 'dislike',
399
+ tooltip: '踩',
400
+ render: function render(_i, msg) {
401
+ var _msg$raw;
402
+ var requestId = (_msg$raw = msg.raw) === null || _msg$raw === void 0 ? void 0 : _msg$raw.requestId;
403
+ return /*#__PURE__*/_jsx(DislikeFeedback, {
404
+ msg: msg,
405
+ activeColor: (appInfo === null || appInfo === void 0 ? void 0 : appInfo.appTheme) || primaryBlue,
406
+ onSubmit: ( /*#__PURE__*/function () {
407
+ var _ref7 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(formData) {
408
+ var res;
409
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
410
+ while (1) switch (_context2.prev = _context2.next) {
411
+ case 0:
412
+ _context2.next = 2;
413
+ return addFeedback(_objectSpread(_objectSpread({}, formData), {}, {
414
+ requestId: requestId,
415
+ isLike: -1,
416
+ url: url,
417
+ appNo: config === null || config === void 0 ? void 0 : config.appNo,
418
+ pt: config === null || config === void 0 ? void 0 : config.pt,
419
+ tc: config === null || config === void 0 ? void 0 : config.tc,
420
+ token: token
421
+ }));
422
+ case 2:
423
+ res = _context2.sent;
424
+ if (!res.success) {
425
+ _context2.next = 7;
426
+ break;
427
+ }
428
+ message.success('已收到您的反馈,我们会努力做的更好');
429
+ setMessages(function (prev) {
430
+ return prev.map(function (item) {
431
+ if (item.id === msg.id) {
432
+ return _objectSpread(_objectSpread({}, item), {}, {
433
+ isLike: -1
434
+ });
435
+ }
436
+ return item;
437
+ });
438
+ });
439
+ return _context2.abrupt("return", true);
440
+ case 7:
441
+ message.error('反馈失败,请稍后再试');
442
+ return _context2.abrupt("return", false);
443
+ case 9:
444
+ case "end":
445
+ return _context2.stop();
446
+ }
447
+ }, _callee2);
448
+ }));
449
+ return function (_x3) {
450
+ return _ref7.apply(this, arguments);
451
+ };
452
+ }())
453
+ });
454
+ }
455
+ }]),
456
+ onSend: handleSendMessage,
457
+ onClear: handleCreateNewMessage,
458
+ onNewChat: handleCreateNewMessage,
459
+ onStop: stopChat,
460
+ menu: menuConfig,
461
+ onActiveChange: handleActiveChange,
462
+ onSuggestMessageClick: handleSuggestMessageClick,
463
+ onMessagesActionsCallback: handleActions,
464
+ isInProvider: true
339
465
  },
340
- children: children
466
+ children: /*#__PURE__*/_jsx("div", {
467
+ ref: divRef,
468
+ style: {
469
+ display: 'flex',
470
+ height: '100%',
471
+ position: 'relative'
472
+ },
473
+ children: children
474
+ })
341
475
  })
342
476
  })
343
477
  });
@@ -1 +1 @@
1
- {"version":3,"names":["forwardRef","useImperativeHandle","useState","useRef","useEffect","message","Divider","Modal","Input","copy","XProvider","ExclamationCircleFilled","XAiContext","useAgentGenerator","MOBILE_MAX_WIDTH","userIcon","jsx","_jsx","jsxs","_jsxs","confirm","XAiProvider","_ref","ref","_config$chatProps","_config$session","_config$chatProps2","url","token","config","_ref$providerId","providerId","onSuccess","onError","onMessage","children","_useAgentGenerator","appInfo","chat","stopChat","reChat","createNewChat","deleteSession","updateSession","currentSessionId","sessionPagination","sessionList","messages","loading","setCurrentSessionDetail","setMessages","_ref2","appName","icon","getAppInfo","getMessages","getSessions","_useState","_useState2","_slicedToArray","isNarrow","setIsNarrow","divRef","div","current","resizeObserver","ResizeObserver","entries","_iterator","_createForOfIteratorHelper","_step","s","n","done","entry","value","width","contentRect","err","e","f","observe","initialWidth","offsetWidth","disconnect","handleSendMessage","_type","content","handleCreateNewMessage","handleActions","index","actionData","_ref3","id","_content$text","text","success","idx","findIndex","item","length","prev","filter","type","handleSuggestMessageClick","_item","m","handleActiveChange","key","handleDeleteSession","sessionId","handleUpdateSession","title","menuConfig","conversation","items","label","danger","onClick","menuInfo","domEvent","stopPropagation","inputValue","defaultValue","autoFocus","style","onChange","target","okText","cancelText","okButtonProps","background","borderColor","color","onOk","trim","error","Promise","reject","onCancel","okType","ToolTip","messageData","finalResult","think","find","actionName","_ref4","extra","cost","tokenCount","display","alignItems","fontSize","flex","paddingRight","undefined","clearBtnShow","chatProps","session","showSessionList","Provider","avatar","src","alt","userAvatar","emptyStateImage","emptyStateText","footerTips","sessionTotal","total","activeKey","inputShow","messageTooltip","onSend","onClear","onNewChat","onStop","menu","onActiveChange","onSuggestMessageClick","onMessagesActionsCallback","isInProvider","height","position"],"sources":["../../../../src/components/XAiProvider/index.tsx"],"sourcesContent":["import { forwardRef, useImperativeHandle, useState, useRef, useEffect } from 'react';\nimport { message, Divider, Modal, Input } from 'antd';\nimport copy from 'copy-to-clipboard';\nimport { XProvider } from '@ant-design/x';\nimport type { ConversationsProps } from '@ant-design/x';\nimport { ExclamationCircleFilled } from '@ant-design/icons';\nimport { XAiContext } from '@/context/AiProviderContext';\nimport { XAiProviderProps, XAiProviderHandle } from '@/types/XAiProvider';\nimport useAgentGenerator from '@/hooks/useAgentGenerator';\nimport { MOBILE_MAX_WIDTH } from '@/constants';\nimport userIcon from '@/assets/user.png';\n\nconst { confirm } = Modal;\n\nconst XAiProvider = forwardRef<XAiProviderHandle, XAiProviderProps>(({\n url,\n token,\n config,\n providerId = 'defaultId',\n onSuccess,\n onError,\n onMessage,\n children,\n}, ref) => {\n // 使用 useAgentGenerator Hook 管理消息状态\n const {\n appInfo,\n chat,\n stopChat,\n reChat,\n createNewChat,\n deleteSession,\n updateSession,\n currentSessionId,\n sessionPagination,\n sessionList,\n messages,\n loading,\n setCurrentSessionDetail,\n setMessages\n } = useAgentGenerator({ url, token, config, onError, onSuccess, onMessage });\n\n const { appName, icon } = appInfo || {};\n\n useImperativeHandle(ref, () => ({\n chat,\n stopChat,\n reChat,\n getAppInfo: () => appInfo,\n getMessages: () => messages,\n getSessions: () => sessionList,\n setMessages,\n setCurrentSessionDetail,\n }), [appInfo, messages, chat, stopChat, reChat, setMessages, setCurrentSessionDetail]);\n\n const [isNarrow, setIsNarrow] = useState<boolean>(false);\n const divRef = useRef<HTMLDivElement>(null);\n\n // 监听容器宽度变化\n useEffect(() => {\n const div = divRef.current;\n if (!div) return;\n\n // 创建监听器\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const width = entry.contentRect.width;\n setIsNarrow(width <= MOBILE_MAX_WIDTH);\n }\n })\n\n // 开始监听\n resizeObserver.observe(div);\n\n // 初始化检查\n const initialWidth = div.offsetWidth;\n setIsNarrow(initialWidth <= MOBILE_MAX_WIDTH);\n\n // 清理函数\n return () => {\n resizeObserver.disconnect();\n }\n }, []);\n\n // 发送消息\n const handleSendMessage = (_type: string, content: string) => {\n chat(content);\n };\n\n // 清空消息\n const handleCreateNewMessage = () => {\n createNewChat();\n };\n \n // 工具栏按钮点击\n const handleActions = (index: number, actionData: any) => {\n const { content, id } = actionData || {};\n const { text = '' } = content;\n switch (index) {\n case 0:\n reChat();\n break;\n case 1:\n copy(text);\n message.success('复制成功');\n break;\n case 2: {\n const idx = messages.findIndex((item) => item.id === id);\n if (idx >= 0) {\n // 删除该条消息及建议类消息\n if (messages.length - idx <= 2) {\n setMessages((prev) => prev.filter((item) => item.id !== id && item.type !== 'SuggestionMessage'));\n } else {\n // 非最新消息 只删除该条消息\n setMessages((prev) => prev.filter((item) => item.id !== id));\n }\n message.success('删除成功');\n }\n break;\n }\n }\n };\n\n // 建议消息点击\n const handleSuggestMessageClick = (_item: any, id: string) => {\n setMessages((prev: any[]) => prev.filter((m: any) => m.id !== id));\n };\n\n // 切换会话\n const handleActiveChange = (key: string) => {\n setCurrentSessionDetail(key);\n };\n\n // 删除会话\n const handleDeleteSession = (sessionId: string) => {\n deleteSession(sessionId);\n };\n\n // 修改会话内容\n const handleUpdateSession = (sessionId: string, title: string) => {\n updateSession(sessionId, title);\n }\n\n // 会话操作菜单\n const menuConfig: ConversationsProps['menu'] = (conversation) => ({\n items: [\n {\n label: '重命名',\n key: 'edit',\n },\n {\n label: '删除',\n key: 'delete',\n danger: true,\n },\n ],\n onClick: (menuInfo) => {\n menuInfo.domEvent.stopPropagation();\n const { key } = menuInfo;\n switch (key) {\n case 'edit': {\n let inputValue = conversation.label as string || '';\n confirm({\n title: '编辑对话名称',\n icon: null,\n content: (\n <Input\n defaultValue={inputValue}\n autoFocus\n style={{ width: '100%' }}\n onChange={e => {\n inputValue = e.target.value;\n }}\n />\n ),\n okText: '确认',\n cancelText: '取消',\n okButtonProps: {\n style: { background: '#000', borderColor: '#000', color: '#fff' }\n },\n onOk: () => {\n if (!inputValue.trim()) {\n message.error('对话名称不能为空');\n return Promise.reject();\n }\n handleUpdateSession(conversation.key, inputValue);\n },\n onCancel: () => {\n // 静默处理\n },\n });\n break;\n }\n case 'delete':\n confirm({\n title: '确认删除?',\n icon: <ExclamationCircleFilled />,\n content: '该对话内容将被删除无法恢复。',\n okText: '确认删除',\n okType: 'danger',\n cancelText: '取消',\n okButtonProps: {\n style: { background: '#ff4d4f', borderColor: '#ff4d4f', color: '#fff' }\n },\n onOk() {\n handleDeleteSession(conversation.key);\n },\n onCancel() {\n //\n },\n });\n break;\n } \n },\n });\n\n const ToolTip = (messageData: any) => {\n const finalResult = (messageData?.think || []).find((item: any) => item.actionName === 'FINISHED');\n if (!finalResult) return null;\n const { cost, token: tokenCount } = finalResult.extra || {};\n if (!cost && !token) return null;\n return (\n <div style={{ display: 'flex', alignItems: 'center', fontSize: '12px', color: '#949494', flex: 1, paddingRight: '40px' }}>\n { (cost !== undefined && cost !== null) && <div>{cost}s</div> }\n { tokenCount && <Divider type=\"vertical\" /> }\n { tokenCount && <div>{ tokenCount } tokens</div> }\n </div>\n );\n };\n // 是否展示清空按钮\n const clearBtnShow = typeof config?.chatProps?.clearBtnShow !== 'undefined'\n ? config.chatProps.clearBtnShow\n : !config?.session?.showSessionList;\n \n\n return (\n <XProvider>\n <XAiContext.Provider value={{\n avatar: <img src={icon} alt=\"智能体头像\" />,\n userAvatar: <img src={userIcon} alt=\"用户头像\" />,\n emptyStateImage: icon,\n emptyStateText: appName,\n footerTips: '内容由AI生成,无法确保真实准确,仅供参考',\n providerId,\n sessionList,\n sessionTotal: sessionPagination.total, \n token,\n messages,\n loading,\n error: null,\n activeKey: currentSessionId,\n clearBtnShow,\n inputShow: config?.chatProps?.inputShow || true,\n isNarrow,\n messageTooltip: ToolTip,\n onSend: handleSendMessage,\n onClear: handleCreateNewMessage,\n onNewChat: handleCreateNewMessage,\n onStop: stopChat,\n menu: menuConfig,\n onActiveChange: handleActiveChange,\n onSuggestMessageClick: handleSuggestMessageClick,\n onMessagesActionsCallback: handleActions,\n isInProvider: true,\n }}\n >\n <div\n ref={divRef}\n style={{\n display: 'flex',\n height: '100%',\n position: 'relative',\n }}>\n {children}\n </div>\n </XAiContext.Provider>\n </XProvider>\n );\n});\n\nexport default XAiProvider;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","forwardRef","useImperativeHandle","useState","useRef","useEffect","message","Divider","Modal","Input","ConfigProvider","copy","XProvider","ExclamationCircleFilled","LikeFilled","LikeOutlined","XAiContext","useAgentGenerator","MOBILE_MAX_WIDTH","userIcon","primaryBlue","DislikeFeedback","addFeedback","defaultActions","jsx","_jsx","jsxs","_jsxs","confirm","XAiProvider","_ref","ref","_config$chatProps","_config$session","_config$chatProps2","url","token","config","_ref$providerId","providerId","onSuccess","onError","onMessage","children","_useAgentGenerator","appInfo","chat","stopChat","reChat","createNewChat","deleteSession","updateSession","currentSessionId","sessionPagination","sessionList","messages","loading","setCurrentSessionDetail","setMessages","_ref2","appName","icon","getAppInfo","getMessages","getSessions","_useState","_useState2","_slicedToArray","isNarrow","setIsNarrow","divRef","div","current","resizeObserver","ResizeObserver","entries","_iterator","_createForOfIteratorHelper","_step","s","n","done","entry","value","width","contentRect","err","e","f","observe","initialWidth","offsetWidth","disconnect","handleSendMessage","_type","content","handleCreateNewMessage","handleActions","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","index","actionData","_ref4","id","_content$text","text","idx","_ref5","appNo","pt","tc","_actionData$raw","res","wrap","_callee$","_context","prev","next","t0","abrupt","success","findIndex","item","length","filter","type","requestId","raw","isLike","sent","map","_objectSpread","error","stop","_x","_x2","apply","arguments","handleSuggestMessageClick","_item","m","handleActiveChange","key","handleDeleteSession","sessionId","handleUpdateSession","title","menuConfig","conversation","items","label","danger","onClick","menuInfo","domEvent","stopPropagation","inputValue","defaultValue","autoFocus","style","onChange","target","okText","cancelText","okButtonProps","background","borderColor","color","onOk","trim","Promise","reject","onCancel","okType","ToolTip","messageData","finalResult","think","find","actionName","_ref6","extra","cost","tokenCount","display","alignItems","fontSize","flex","paddingRight","undefined","clearBtnShow","chatProps","session","showSessionList","theme","colorPrimary","appTheme","Provider","avatar","src","alt","userAvatar","emptyStateImage","emptyStateText","footerTips","sessionTotal","total","activeKey","inputShow","messageTooltip","messageActions","concat","_toConsumableArray","tooltip","render","i","msg","_i","_msg$raw","activeColor","onSubmit","_ref7","_callee2","formData","_callee2$","_context2","_x3","onSend","onClear","onNewChat","onStop","menu","onActiveChange","onSuggestMessageClick","onMessagesActionsCallback","isInProvider","height","position"],"sources":["../../../../src/components/XAiProvider/index.tsx"],"sourcesContent":["import React, { forwardRef, useImperativeHandle, useState, useRef, useEffect } from 'react';\nimport { message, Divider, Modal, Input, ConfigProvider } from 'antd';\nimport copy from 'copy-to-clipboard';\nimport { XProvider } from '@ant-design/x';\nimport type { ConversationsProps } from '@ant-design/x';\nimport { ExclamationCircleFilled, LikeFilled, LikeOutlined } from '@ant-design/icons';\nimport { XAiContext } from '@/context/AiProviderContext';\nimport { XAiProviderProps, XAiProviderHandle } from '@/types/XAiProvider';\nimport useAgentGenerator from '@/hooks/useAgentGenerator';\nimport { MOBILE_MAX_WIDTH } from '@/constants';\nimport userIcon from '@/assets/user.png';\nimport { primaryBlue } from '@/styles/common';\nimport DislikeFeedback from '../DislikeFeedback';\nimport { addFeedback } from '@/services/api';\nimport { defaultActions } from '../XAiChatbot';\n\nconst { confirm } = Modal;\n\nconst XAiProvider = forwardRef<XAiProviderHandle, XAiProviderProps>(({\n url,\n token,\n config,\n providerId = 'defaultId',\n onSuccess,\n onError,\n onMessage,\n children,\n}, ref) => {\n // 使用 useAgentGenerator Hook 管理消息状态\n const {\n appInfo,\n chat,\n stopChat,\n reChat,\n createNewChat,\n deleteSession,\n updateSession,\n currentSessionId,\n sessionPagination,\n sessionList,\n messages,\n loading,\n setCurrentSessionDetail,\n setMessages,\n } = useAgentGenerator({ url, token, config, onError, onSuccess, onMessage });\n\n const { appName, icon } = appInfo || {};\n\n useImperativeHandle(ref, () => ({\n chat,\n stopChat,\n reChat,\n getAppInfo: () => appInfo,\n getMessages: () => messages,\n getSessions: () => sessionList,\n setMessages,\n setCurrentSessionDetail,\n }), [appInfo, messages, chat, stopChat, reChat, setMessages, setCurrentSessionDetail]);\n\n const [isNarrow, setIsNarrow] = useState<boolean>(false);\n const divRef = useRef<HTMLDivElement>(null);\n\n // 监听容器宽度变化\n useEffect(() => {\n const div = divRef.current;\n if (!div) return;\n\n // 创建监听器\n const resizeObserver = new ResizeObserver((entries) => {\n // eslint-disable-next-line no-restricted-syntax\n for (const entry of entries) {\n const { width } = entry.contentRect;\n setIsNarrow(width <= MOBILE_MAX_WIDTH);\n }\n });\n\n // 开始监听\n resizeObserver.observe(div);\n\n // 初始化检查\n const initialWidth = div.offsetWidth;\n setIsNarrow(initialWidth <= MOBILE_MAX_WIDTH);\n\n // 清理函数\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n // 发送消息\n const handleSendMessage = (_type: string, content: string) => {\n chat(content);\n };\n\n // 清空消息\n const handleCreateNewMessage = () => {\n createNewChat();\n };\n\n // 工具栏按钮点击\n const handleActions = async (index: number, actionData: any) => {\n const { content, id } = actionData || {};\n const { text = '' } = content;\n switch (index) {\n case 0:\n reChat();\n break;\n case 1:\n copy(text);\n message.success('复制成功');\n break;\n case 2: {\n const idx = messages.findIndex((item) => item.id === id);\n if (idx >= 0) {\n // 删除该条消息及建议类消息\n if (messages.length - idx <= 2) {\n setMessages((prev) => prev.filter((item) => item.id !== id && item.type !== 'SuggestionMessage'));\n } else {\n // 非最新消息 只删除该条消息\n setMessages((prev) => prev.filter((item) => item.id !== id));\n }\n message.success('删除成功');\n }\n break;\n }\n case 3: {\n const { appNo, pt, tc } = config || {};\n if (appNo && pt && tc) {\n const res = await addFeedback({\n url,\n token,\n appNo,\n pt,\n tc,\n requestId: actionData.raw?.requestId,\n isLike: 1,\n });\n if (res.success) {\n message.success('感谢您的反馈');\n setMessages((prev) => {\n return prev.map((item) => {\n if (item.id === id) {\n return {\n ...item,\n isLike: 1,\n };\n }\n return item;\n });\n });\n } else {\n message.error('反馈失败,请稍后再试');\n }\n }\n break;\n }\n }\n };\n\n // 建议消息点击\n const handleSuggestMessageClick = (_item: any, id: string) => {\n setMessages((prev: any[]) => prev.filter((m: any) => m.id !== id));\n };\n\n // 切换会话\n const handleActiveChange = (key: string) => {\n setCurrentSessionDetail(key);\n };\n\n // 删除会话\n const handleDeleteSession = (sessionId: string) => {\n deleteSession(sessionId);\n };\n\n // 修改会话内容\n const handleUpdateSession = (sessionId: string, title: string) => {\n updateSession(sessionId, title);\n };\n\n // 会话操作菜单\n const menuConfig: ConversationsProps['menu'] = (conversation) => ({\n items: [\n {\n label: '重命名',\n key: 'edit',\n },\n {\n label: '删除',\n key: 'delete',\n danger: true,\n },\n ],\n onClick: (menuInfo) => {\n menuInfo.domEvent.stopPropagation();\n const { key } = menuInfo;\n switch (key) {\n case 'edit': {\n let inputValue = conversation.label as string || '';\n confirm({\n title: '编辑对话名称',\n icon: null,\n content: (\n <Input\n defaultValue={inputValue}\n autoFocus\n style={{ width: '100%' }}\n onChange={(e) => {\n inputValue = e.target.value;\n }}\n />\n ),\n okText: '确认',\n cancelText: '取消',\n okButtonProps: {\n style: { background: '#000', borderColor: '#000', color: '#fff' },\n },\n onOk: () => {\n if (!inputValue.trim()) {\n message.error('对话名称不能为空');\n return Promise.reject();\n }\n handleUpdateSession(conversation.key, inputValue);\n },\n onCancel: () => {\n // 静默处理\n },\n });\n break;\n }\n case 'delete':\n confirm({\n title: '确认删除?',\n icon: <ExclamationCircleFilled />,\n content: '该对话内容将被删除无法恢复。',\n okText: '确认删除',\n okType: 'danger',\n cancelText: '取消',\n okButtonProps: {\n style: { background: '#ff4d4f', borderColor: '#ff4d4f', color: '#fff' },\n },\n onOk() {\n handleDeleteSession(conversation.key);\n },\n onCancel() {\n //\n },\n });\n break;\n }\n },\n });\n\n const ToolTip = (messageData: any) => {\n const finalResult = (messageData?.think || []).find((item: any) => item.actionName === 'FINISHED');\n if (!finalResult) return null;\n const { cost, token: tokenCount } = finalResult.extra || {};\n if (!cost && !token) return null;\n return (\n <div style={{ display: 'flex', alignItems: 'center', fontSize: '12px', color: '#949494', flex: 1, paddingRight: '40px' }}>\n { (cost !== undefined && cost !== null) && <div>{cost}s</div> }\n { tokenCount && <Divider type=\"vertical\" /> }\n { tokenCount && <div>{ tokenCount } tokens</div> }\n </div>\n );\n };\n // 是否展示清空按钮\n const clearBtnShow = typeof config?.chatProps?.clearBtnShow !== 'undefined'\n ? config.chatProps.clearBtnShow\n : !config?.session?.showSessionList;\n\n return (\n <ConfigProvider theme={{\n token: {\n colorPrimary: appInfo?.appTheme || primaryBlue,\n },\n }}\n >\n <XProvider>\n <XAiContext.Provider value={{\n avatar: <img src={icon} alt=\"智能体头像\" />,\n userAvatar: <img src={userIcon} alt=\"用户头像\" />,\n emptyStateImage: icon,\n emptyStateText: appName,\n footerTips: '内容由AI生成,无法确保真实准确,仅供参考',\n providerId,\n sessionList,\n sessionTotal: sessionPagination.total,\n token,\n messages,\n loading,\n error: null,\n activeKey: currentSessionId,\n clearBtnShow,\n inputShow: config?.chatProps?.inputShow || true,\n isNarrow,\n messageTooltip: ToolTip,\n messageActions: [...defaultActions, {\n key: 'like',\n tooltip: '赞',\n render: (i, msg) => {\n const isLike = msg.isLike === 1;\n if (isLike) {\n return (\n <LikeFilled style={{ color: appInfo?.appTheme || primaryBlue }} />\n );\n }\n return <LikeOutlined />;\n },\n }, {\n key: 'dislike',\n tooltip: '踩',\n render: (_i, msg) => {\n const requestId = msg.raw?.requestId;\n return (\n <DislikeFeedback\n msg={msg}\n activeColor={appInfo?.appTheme || primaryBlue}\n onSubmit={async (formData) => {\n const res = await addFeedback({\n ...formData,\n requestId,\n isLike: -1,\n url,\n appNo: config?.appNo,\n pt: config?.pt,\n tc: config?.tc,\n token,\n });\n if (res.success) {\n message.success('已收到您的反馈,我们会努力做的更好');\n setMessages((prev) => {\n return prev.map((item) => {\n if (item.id === msg.id) {\n return {\n ...item,\n isLike: -1,\n };\n }\n return item;\n });\n });\n return true;\n }\n message.error('反馈失败,请稍后再试');\n return false;\n }}\n />\n );\n },\n }],\n onSend: handleSendMessage,\n onClear: handleCreateNewMessage,\n onNewChat: handleCreateNewMessage,\n onStop: stopChat,\n menu: menuConfig,\n onActiveChange: handleActiveChange,\n onSuggestMessageClick: handleSuggestMessageClick,\n onMessagesActionsCallback: handleActions,\n isInProvider: true,\n }}\n >\n <div\n ref={divRef}\n style={{\n display: 'flex',\n height: '100%',\n position: 'relative',\n }}\n >\n {children}\n </div>\n </XAiContext.Provider>\n </XProvider>\n </ConfigProvider>\n );\n});\n\nexport default XAiProvider;\n"],"mappings":"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"}
@@ -232,7 +232,7 @@ var MessageProcessor = /*#__PURE__*/function () {
232
232
 
233
233
  // 确保消息状态正确
234
234
  var updatedMsg = _objectSpread(_objectSpread({}, aiMsg), {}, {
235
- thinks: (aiMsg.thinks || '') + '\n',
235
+ thinks: "".concat(aiMsg.thinks || '', "\n"),
236
236
  status: aiMsg.status === MessageStatus.init ? MessageStatus.pending : aiMsg.status
237
237
  });
238
238
  var updatedMessages = _toConsumableArray(newMessages);
@@ -383,6 +383,7 @@ var MessageProcessor = /*#__PURE__*/function () {
383
383
  success = data.success,
384
384
  errorMsg = data.errorMsg;
385
385
  if (success) {
386
+ aiMsg.raw = data.raw;
386
387
  if (aiMsg.status === MessageStatus.init) {
387
388
  aiMsg.status = MessageStatus.pending;
388
389
  }
@@ -446,6 +447,7 @@ var MessageProcessor = /*#__PURE__*/function () {
446
447
  action = _response.action,
447
448
  _response$data = _response.data,
448
449
  data = _response$data === void 0 ? {} : _response$data;
450
+ data.raw = responseData;
449
451
  switch (action) {
450
452
  case ActionType.suggest:
451
453
  return this.handleSuggestion(messages, data);
@@ -1015,7 +1017,13 @@ var useAgentGenerator = function useAgentGenerator(params) {
1015
1017
  sessionResult = _context6.sent;
1016
1018
  if (sessionResult !== null && sessionResult !== void 0 && sessionResult.success) {
1017
1019
  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 ? void 0 : _sessionResult$data.reduce(function (acc, cur) {
1018
- return [].concat(_toConsumableArray(acc), _toConsumableArray(cur.sessionMessages || []));
1020
+ var msgs = (cur.sessionMessages || []).map(function (msg) {
1021
+ return _objectSpread(_objectSpread({}, msg), {}, {
1022
+ raw: cur,
1023
+ isLike: cur === null || cur === void 0 ? void 0 : cur.isLike
1024
+ });
1025
+ });
1026
+ return [].concat(_toConsumableArray(acc), _toConsumableArray(msgs));
1019
1027
  }, []);
1020
1028
  if (sessionsData.length > 0) {
1021
1029
  formatMessages(sessionsData, true);