@myun/gimi-chat 0.5.3 → 0.5.5

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.
@@ -198,9 +198,7 @@ var useApi = function useApi(baseUrl, authToken) {
198
198
  return _regeneratorRuntime().wrap(function _callee10$(_context10) {
199
199
  while (1) switch (_context10.prev = _context10.next) {
200
200
  case 0:
201
- return _context10.abrupt("return", fetchService.post('/mcourse/web/trace/product', {
202
- params: params
203
- }));
201
+ return _context10.abrupt("return", fetchService.post('/mcourse/web/trace/product', params));
204
202
  case 1:
205
203
  case "end":
206
204
  return _context10.stop();
@@ -87,11 +87,23 @@ var AiExplain = function AiExplain(_ref) {
87
87
  _useState18 = _slicedToArray(_useState17, 2),
88
88
  isFirstUse = _useState18[0],
89
89
  setIsFirstUse = _useState18[1];
90
- // 文本的looding状态
91
90
  var _useState19 = useState(false),
92
91
  _useState20 = _slicedToArray(_useState19, 2),
93
- isTextLoading = _useState20[0],
94
- setIsTextLoading = _useState20[1];
92
+ showWordsTooltip = _useState20[0],
93
+ setShowWordsTooltip = _useState20[1];
94
+ var _useState21 = useState(false),
95
+ _useState22 = _slicedToArray(_useState21, 2),
96
+ showMuteTooltip = _useState22[0],
97
+ setShowMuteTooltip = _useState22[1];
98
+ var _useState23 = useState(false),
99
+ _useState24 = _slicedToArray(_useState23, 2),
100
+ showHangUpTooltip = _useState24[0],
101
+ setShowHangUpTooltip = _useState24[1];
102
+ // 文本的looding状态
103
+ var _useState25 = useState(false),
104
+ _useState26 = _slicedToArray(_useState25, 2),
105
+ isTextLoading = _useState26[0],
106
+ setIsTextLoading = _useState26[1];
95
107
  var _useScroll = useScroll(containerRef),
96
108
  _useScroll2 = _slicedToArray(_useScroll, 2),
97
109
  throttledScrollToBottom = _useScroll2[0],
@@ -107,6 +119,13 @@ var AiExplain = function AiExplain(_ref) {
107
119
  var dispatch = useDispatch();
108
120
  var UNSUPPORTED_CALL_MSG_KEY = 'ai-chat-unsupported-call';
109
121
  var unsupportedShownRef = useRef(false);
122
+ React.useEffect(function () {
123
+ if (isFirstUse) {
124
+ setShowWordsTooltip(true);
125
+ setShowMuteTooltip(true);
126
+ setShowHangUpTooltip(true);
127
+ }
128
+ }, [isFirstUse]);
110
129
  var renderStatus = useMemo(function () {
111
130
  if (!audioEnabled) {
112
131
  if (isThinking) return /*#__PURE__*/React.createElement("div", {
@@ -507,7 +526,7 @@ var AiExplain = function AiExplain(_ref) {
507
526
  style: {
508
527
  marginTop: '30vh'
509
528
  },
510
- zIndex: 1000
529
+ zIndex: 10000
511
530
  });
512
531
  return;
513
532
  }
@@ -725,12 +744,6 @@ var AiExplain = function AiExplain(_ref) {
725
744
  return _regeneratorRuntime().wrap(function _callee6$(_context6) {
726
745
  while (1) switch (_context6.prev = _context6.next) {
727
746
  case 0:
728
- // 销毁warning提示框
729
- // if (warningMessageRef?.current) {
730
- // message.destroy(); // 销毁所有 message,包括当前警告框
731
- // warningMessageRef.current = null;
732
- // }
733
-
734
747
  setMessageList([]);
735
748
  _context6.next = 3;
736
749
  return handleDisconnect();
@@ -860,16 +873,6 @@ var AiExplain = function AiExplain(_ref) {
860
873
  setIsFirstUse(false);
861
874
  }, 3000);
862
875
  }, [paper]);
863
-
864
- // 断开 RTC 连接、停止 AI 任务、释放麦克风
865
- // useUnload(() => {
866
- // console.log('页面卸载, 断开连接');
867
- // if (warningMessageRef.current) {
868
- // message.destroy();
869
- // warningMessageRef.current = null;
870
- // }
871
- // handleDisconnect();
872
- // });
873
876
  useEffect(function () {
874
877
  var onPageHide = function onPageHide(e) {
875
878
  // 如果进入 bfcache(往返缓存),不一定要断开;你们按业务决定
@@ -973,15 +976,13 @@ var AiExplain = function AiExplain(_ref) {
973
976
  }, /*#__PURE__*/React.createElement(LottieImg, {
974
977
  name: "aiBg",
975
978
  size: ['100%', '100%']
976
- })), /*#__PURE__*/React.createElement(Tooltip, {
977
- placement: "bottomRight",
978
- overlayClassName: "out-tooltip ai-chat-tooltip",
979
- visible: isFirstUse,
980
- content: showCaptions ? '点击可关闭字幕' : '点击可开启字幕'
981
- }, /*#__PURE__*/React.createElement("div", {
979
+ })), /*#__PURE__*/React.createElement("div", {
982
980
  className: styles.rightWrap
983
981
  }, /*#__PURE__*/React.createElement(Tooltip, {
982
+ zIndex: 10000,
984
983
  placement: "bottom",
984
+ visible: showWordsTooltip,
985
+ onVisibleChange: setShowWordsTooltip,
985
986
  content: showCaptions ? '关闭字幕' : '打开字幕',
986
987
  overlayClassName: "ai-chat-tooltip"
987
988
  }, /*#__PURE__*/React.createElement("div", {
@@ -995,7 +996,7 @@ var AiExplain = function AiExplain(_ref) {
995
996
  onClick: function onClick() {
996
997
  return setShowCaptions(!showCaptions);
997
998
  }
998
- }))))), /*#__PURE__*/React.createElement("div", {
999
+ })))), /*#__PURE__*/React.createElement("div", {
999
1000
  className: classNames(styles.main)
1000
1001
  }, /*#__PURE__*/React.createElement(Header, {
1001
1002
  title: headerTitle
@@ -1024,12 +1025,10 @@ var AiExplain = function AiExplain(_ref) {
1024
1025
  }, renderStatus), /*#__PURE__*/React.createElement("div", {
1025
1026
  className: styles.btnWrap
1026
1027
  }, /*#__PURE__*/React.createElement(Tooltip, {
1028
+ zIndex: 10000,
1027
1029
  placement: "top",
1028
- visible: isFirstUse,
1029
- content: audioEnabled ? '关闭麦克风' : '打开麦克风',
1030
- overlayClassName: "ai-chat-tooltip"
1031
- }, /*#__PURE__*/React.createElement(Tooltip, {
1032
- placement: "top",
1030
+ visible: showMuteTooltip,
1031
+ onVisibleChange: setShowMuteTooltip,
1033
1032
  content: audioEnabled ? '关闭麦克风' : '打开麦克风',
1034
1033
  overlayClassName: "ai-chat-tooltip"
1035
1034
  }, /*#__PURE__*/React.createElement("div", {
@@ -1040,13 +1039,11 @@ var AiExplain = function AiExplain(_ref) {
1040
1039
  }, /*#__PURE__*/React.createElement(IconFontCom, {
1041
1040
  type: audioEnabled ? 'icon-voice' : 'icon-a-voice1',
1042
1041
  size: 34
1043
- })))), /*#__PURE__*/React.createElement(Tooltip, {
1044
- placement: "top",
1045
- visible: isFirstUse,
1046
- content: '挂断电话',
1047
- overlayClassName: "ai-chat-tooltip"
1048
- }, /*#__PURE__*/React.createElement(Tooltip, {
1042
+ }))), /*#__PURE__*/React.createElement(Tooltip, {
1043
+ zIndex: 10000,
1049
1044
  placement: "top",
1045
+ visible: showHangUpTooltip,
1046
+ onVisibleChange: setShowHangUpTooltip,
1050
1047
  content: '挂断电话',
1051
1048
  overlayClassName: "ai-chat-tooltip"
1052
1049
  }, /*#__PURE__*/React.createElement("div", {
@@ -1057,6 +1054,6 @@ var AiExplain = function AiExplain(_ref) {
1057
1054
  }, /*#__PURE__*/React.createElement(IconFontCom, {
1058
1055
  type: "icon-a-mti-guaduanshi",
1059
1056
  size: 34
1060
- }))))))))), document.body);
1057
+ })))))))), document.body);
1061
1058
  };
1062
1059
  export default AiExplain;
@@ -1,6 +1,6 @@
1
1
  @charset "UTF-8";
2
2
  .aiChat {
3
- z-index: 999;
3
+ z-index: 9999;
4
4
  position: fixed;
5
5
  inset: 0;
6
6
  }
@@ -27,4 +27,34 @@
27
27
  .search_button .icon {
28
28
  color: rgb(46, 57, 76);
29
29
  flex-shrink: 0;
30
+ }
31
+
32
+ .list {
33
+ display: flex;
34
+ flex-direction: column;
35
+ gap: 10px;
36
+ }
37
+ .list .item {
38
+ display: flex;
39
+ flex-direction: column;
40
+ gap: 10px;
41
+ width: 296px;
42
+ height: 99px;
43
+ font-family: PingFang SC;
44
+ font-weight: 400;
45
+ font-style: Regular;
46
+ font-size: 12px;
47
+ line-height: 150%;
48
+ letter-spacing: 0px;
49
+ color: rgb(113, 127, 148);
50
+ }
51
+ .list .item .item_title {
52
+ font-weight: 500;
53
+ font-size: 14px;
54
+ color: rgb(46, 57, 76);
55
+ }
56
+ .list .item .item_footer {
57
+ display: flex;
58
+ align-items: center;
59
+ justify-content: space-between;
30
60
  }
@@ -0,0 +1,13 @@
1
+ import React from "react";
2
+ export interface IReasoningSearchItem {
3
+ title: string;
4
+ sitename: string;
5
+ url: string;
6
+ }
7
+ declare const ReasoningSearchSidebar: (props: {
8
+ sidebarTargetElm?: HTMLElement;
9
+ isOverFlow: boolean;
10
+ className?: string;
11
+ style?: React.CSSProperties;
12
+ }) => React.JSX.Element | null;
13
+ export default ReasoningSearchSidebar;
@@ -0,0 +1,60 @@
1
+ import React, { useCallback } from "react";
2
+ import { useAppSelector, useAppDispatch } from "../../store/hooks";
3
+ import GimiSideBar from "../gimi-sidebar";
4
+ import { setShowSidebarReasoningSearch, setSidebarReasoningSearchList } from "../../store/slices/gimiMenuSlice";
5
+ import ReactDOM from "react-dom";
6
+ import styles from "./index.module.css";
7
+ import { Badge } from '@douyinfe/semi-ui';
8
+ var ReasoningSearchSidebar = function ReasoningSearchSidebar(props) {
9
+ var sidebarTargetElm = props.sidebarTargetElm,
10
+ isOverFlow = props.isOverFlow,
11
+ className = props.className,
12
+ style = props.style;
13
+ var showSidebarReasoningSearch = useAppSelector(function (state) {
14
+ return state.gimiMenu.showSidebarReasoningSearch;
15
+ });
16
+ var sidebarReasoningSearchList = useAppSelector(function (state) {
17
+ return state.gimiMenu.sidebarReasoningSearchList;
18
+ });
19
+ var dispatch = useAppDispatch();
20
+ var handleClose = useCallback(function () {
21
+ dispatch(setShowSidebarReasoningSearch({
22
+ showSidebarReasoningSearch: false
23
+ }));
24
+ dispatch(setSidebarReasoningSearchList([]));
25
+ }, [dispatch]);
26
+ var renderContent = function renderContent() {
27
+ return /*#__PURE__*/React.createElement(GimiSideBar, {
28
+ show: showSidebarReasoningSearch,
29
+ isOverFlow: isOverFlow,
30
+ title: "\u641C\u7D22\u6765\u6E90",
31
+ handleClose: handleClose,
32
+ className: className,
33
+ style: style
34
+ }, /*#__PURE__*/React.createElement("div", {
35
+ className: styles.list
36
+ }, sidebarReasoningSearchList.map(function (item, index) {
37
+ return /*#__PURE__*/React.createElement("div", {
38
+ key: index,
39
+ className: styles.item
40
+ }, /*#__PURE__*/React.createElement("div", {
41
+ className: styles.item_title
42
+ }, item.title), /*#__PURE__*/React.createElement("div", {
43
+ className: styles.item_description
44
+ }, item.title), /*#__PURE__*/React.createElement("div", {
45
+ className: styles.item_footer
46
+ }, /*#__PURE__*/React.createElement("div", {
47
+ className: styles.footer_left
48
+ }, item.sitename), /*#__PURE__*/React.createElement(Badge, {
49
+ type: "tertiary"
50
+ }, index + 1)));
51
+ })));
52
+ };
53
+ if (isOverFlow) {
54
+ var targetElm = sidebarTargetElm || document.getElementById('myun_gimi_design_chat');
55
+ if (!targetElm) return null;
56
+ return /*#__PURE__*/ReactDOM.createPortal(renderContent(), targetElm);
57
+ }
58
+ return /*#__PURE__*/React.createElement(React.Fragment, null, renderContent());
59
+ };
60
+ export default ReasoningSearchSidebar;
@@ -320,7 +320,7 @@ var useCommonChatAPI = function useCommonChatAPI(props) {
320
320
  return _context2.stop();
321
321
  }
322
322
  }, _callee2);
323
- })), [dispatch, onSendEnd]);
323
+ })), [dispatch, onSendEnd, inputValue]);
324
324
  var handleMCPToolsStreamRs = React.useCallback(function (dataObj) {
325
325
  setStatus(2);
326
326
  var messageList = messageListRef.current;
@@ -770,7 +770,7 @@ var useCommonChatAPI = function useCommonChatAPI(props) {
770
770
  return function (_x13) {
771
771
  return _ref10.apply(this, arguments);
772
772
  };
773
- }(), [dispatch]);
773
+ }(), [dispatch, inputValue]);
774
774
  var fillInputModel = React.useCallback(function (value, messageList) {
775
775
  if ((messageList === null || messageList === void 0 ? void 0 : messageList.length) > 0 && value && messageList[messageList.length - 1].moduleType === 'ask') {
776
776
  var targetChatItem = _toConsumableArray(messageList).reverse().find(function (item) {
@@ -1152,7 +1152,7 @@ var useCommonChatAPI = function useCommonChatAPI(props) {
1152
1152
  setDisableSend(true);
1153
1153
  handleSend('', agentObjRef.current, true);
1154
1154
  }
1155
- }, [dispatch]);
1155
+ }, [dispatch, handleSend]);
1156
1156
  React.useEffect(function () {
1157
1157
  if ((messageList === null || messageList === void 0 ? void 0 : messageList.length) > 0) {
1158
1158
  var _chatItem$moduleInfo, _chatItem$moduleInfo2;
@@ -2,6 +2,7 @@ import { Reducer } from '@reduxjs/toolkit';
2
2
  import type { KonwledgeTraceState } from '../../types/answer';
3
3
  import type { FileItem, IFileCardProps } from '../../types/file';
4
4
  import { IChatMessageItem } from '../../interfaces/chatMessage';
5
+ import { IReasoningSearchItem } from '../../components/reasoning-search/sidebar';
5
6
  export interface GimiMenuState {
6
7
  platform: 'myun' | 'preview' | 'damai';
7
8
  token: string;
@@ -29,6 +30,8 @@ export interface GimiMenuState {
29
30
  konwledgeTraceState: KonwledgeTraceState;
30
31
  showKonwledgeTrace: boolean;
31
32
  showSidebarFileList: boolean;
33
+ showSidebarReasoningSearch: boolean;
34
+ sidebarReasoningSearchList: IReasoningSearchItem[];
32
35
  sidebarFileList: IFileCardProps[];
33
36
  filePreviewState: {
34
37
  show: boolean;
@@ -93,6 +96,8 @@ export declare const setAgentDetail: import("@reduxjs/toolkit").ActionCreatorWit
93
96
  showMicWarning: boolean;
94
97
  }, "gimiMenu/setShowMicWarning">, setBussinessParams: import("@reduxjs/toolkit").ActionCreatorWithPayload<Record<string, any>, "gimiMenu/setBussinessParams">, setAutoLoadConversation: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
95
98
  autoLoadConversation: boolean;
96
- }, "gimiMenu/setAutoLoadConversation">;
99
+ }, "gimiMenu/setAutoLoadConversation">, setShowSidebarReasoningSearch: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
100
+ showSidebarReasoningSearch: boolean;
101
+ }, "gimiMenu/setShowSidebarReasoningSearch">, setSidebarReasoningSearchList: import("@reduxjs/toolkit").ActionCreatorWithPayload<IReasoningSearchItem[], "gimiMenu/setSidebarReasoningSearchList">;
97
102
  declare const reducer: Reducer<GimiMenuState>;
98
103
  export default reducer;
@@ -46,6 +46,8 @@ var initialState = {
46
46
  },
47
47
  showKonwledgeTrace: false,
48
48
  showSidebarFileList: false,
49
+ showSidebarReasoningSearch: false,
50
+ sidebarReasoningSearchList: [],
49
51
  sidebarFileList: [],
50
52
  filePreviewState: {
51
53
  show: false,
@@ -168,18 +170,35 @@ var gimiMenuSlice = createSlice({
168
170
  var showKonwledgeTrace = action.payload.showKonwledgeTrace;
169
171
  state.showKonwledgeTrace = showKonwledgeTrace;
170
172
  if (showKonwledgeTrace) {
173
+ // 知识跟踪打开时,其他侧边栏关闭
171
174
  state.filePreviewState.show = false;
172
175
  state.showSidebarFileList = false;
176
+ state.showSidebarReasoningSearch = false;
173
177
  }
174
178
  },
175
179
  setShowSidebarFileList: function setShowSidebarFileList(state, action) {
176
180
  var showSidebarFileList = action.payload.showSidebarFileList;
177
181
  state.showSidebarFileList = showSidebarFileList;
178
182
  if (showSidebarFileList) {
183
+ // 文件列表打开时,其他侧边栏关闭
179
184
  state.filePreviewState.show = false;
180
185
  state.showKonwledgeTrace = false;
186
+ state.showSidebarReasoningSearch = false;
181
187
  }
182
188
  },
189
+ setShowSidebarReasoningSearch: function setShowSidebarReasoningSearch(state, action) {
190
+ var showSidebarReasoningSearch = action.payload.showSidebarReasoningSearch;
191
+ state.showSidebarReasoningSearch = showSidebarReasoningSearch;
192
+ if (showSidebarReasoningSearch) {
193
+ // 边搜边想侧边栏打开时,其他侧边栏关闭
194
+ state.filePreviewState.show = false;
195
+ state.showKonwledgeTrace = false;
196
+ state.showSidebarFileList = false;
197
+ }
198
+ },
199
+ setSidebarReasoningSearchList: function setSidebarReasoningSearchList(state, action) {
200
+ state.sidebarReasoningSearchList = action.payload;
201
+ },
183
202
  setSidebarFileList: function setSidebarFileList(state, action) {
184
203
  state.sidebarFileList = action.payload;
185
204
  },
@@ -190,8 +209,10 @@ var gimiMenuSlice = createSlice({
190
209
  var filePreviewState = action.payload.filePreviewState;
191
210
  state.filePreviewState = _objectSpread(_objectSpread({}, state.filePreviewState), filePreviewState);
192
211
  if (filePreviewState.show) {
212
+ // 文件预览打开时,其他侧边栏关闭
193
213
  state.showKonwledgeTrace = false;
194
214
  state.showSidebarFileList = false;
215
+ state.showSidebarReasoningSearch = false;
195
216
  }
196
217
  },
197
218
  setQuoteProductList: function setQuoteProductList(state, action) {
@@ -255,7 +276,9 @@ var _gimiMenuSlice$action = gimiMenuSlice.actions,
255
276
  setQuoteTeachModelList = _gimiMenuSlice$action.setQuoteTeachModelList,
256
277
  setShowMicWarning = _gimiMenuSlice$action.setShowMicWarning,
257
278
  setBussinessParams = _gimiMenuSlice$action.setBussinessParams,
258
- setAutoLoadConversation = _gimiMenuSlice$action.setAutoLoadConversation;
259
- export { setAgentDetail, setConversationId, setIsMsgRecieving, setBaseUrl, setToken, setPlatform, updateState, setMessageList, setFileList, setCurrentMessageId, updateParams, setShowKonwledgeTrace, setShowSidebarFileList, setSidebarFileList, setKonwledgeTraceState, setFilePreviewState, setQuoteProductList, setQuoteTeachModelList, setShowMicWarning, setBussinessParams, setAutoLoadConversation };
279
+ setAutoLoadConversation = _gimiMenuSlice$action.setAutoLoadConversation,
280
+ setShowSidebarReasoningSearch = _gimiMenuSlice$action.setShowSidebarReasoningSearch,
281
+ setSidebarReasoningSearchList = _gimiMenuSlice$action.setSidebarReasoningSearchList;
282
+ export { setAgentDetail, setConversationId, setIsMsgRecieving, setBaseUrl, setToken, setPlatform, updateState, setMessageList, setFileList, setCurrentMessageId, updateParams, setShowKonwledgeTrace, setShowSidebarFileList, setSidebarFileList, setKonwledgeTraceState, setFilePreviewState, setQuoteProductList, setQuoteTeachModelList, setShowMicWarning, setBussinessParams, setAutoLoadConversation, setShowSidebarReasoningSearch, setSidebarReasoningSearchList };
260
283
  var reducer = gimiMenuSlice.reducer;
261
284
  export default reducer;