@lobehub/ui 1.11.0 → 1.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/ActionIcon/index.js +77 -79
- package/lib/ActionIcon/style.js +17 -61
- package/lib/Avatar/index.js +62 -67
- package/lib/Chat/const.js +6 -27
- package/lib/Chat/index.js +24 -28
- package/lib/Chat/store/index.js +46 -40
- package/lib/Chat/store/initialState.js +6 -27
- package/lib/Chat/store/messageReducer.js +51 -58
- package/lib/Chat/store/selectors.js +44 -46
- package/lib/Chat/store/store.js +242 -115
- package/lib/Chat/types.js +4 -16
- package/lib/Chat/utils/fetch.js +104 -68
- package/lib/ContextMenu/MenuItem/icons.js +48 -66
- package/lib/ContextMenu/MenuItem/index.js +73 -66
- package/lib/ContextMenu/MenuItem/style.js +19 -89
- package/lib/ContextMenu/index.js +194 -178
- package/lib/ContextMenu/style.js +17 -85
- package/lib/ContextMenu/types/index.js +15 -18
- package/lib/ContextMenu/types/menuItem.js +4 -16
- package/lib/Conversation/App.js +47 -50
- package/lib/Conversation/ChatList/MessageItem/Content.js +98 -93
- package/lib/Conversation/ChatList/MessageItem/Toolbar.js +94 -104
- package/lib/Conversation/ChatList/MessageItem/index.js +125 -157
- package/lib/Conversation/ChatList/index.js +64 -58
- package/lib/Conversation/InputArea/ActionBar.js +74 -92
- package/lib/Conversation/InputArea/index.js +103 -142
- package/lib/Conversation/StoreUpdater.js +28 -48
- package/lib/Conversation/index.js +30 -42
- package/lib/CopyButton/index.js +37 -62
- package/lib/DraggablePanel/index.js +192 -207
- package/lib/DraggablePanel/style.js +30 -278
- package/lib/DraggablePanel/utils.js +14 -35
- package/lib/EditableMessage/index.js +66 -89
- package/lib/EditableMessageList/index.js +97 -112
- package/lib/EditableText/index.js +36 -49
- package/lib/Highlighter/SyntaxHighlighter/Prism.js +43 -38
- package/lib/Highlighter/SyntaxHighlighter/index.js +62 -53
- package/lib/Highlighter/SyntaxHighlighter/style.js +18 -56
- package/lib/Highlighter/index.js +52 -58
- package/lib/Highlighter/style.js +22 -101
- package/lib/Icon/index.js +29 -36
- package/lib/Input/index.js +45 -43
- package/lib/Input/style.js +17 -67
- package/lib/List/ListItem/index.js +108 -150
- package/lib/List/ListItem/time.js +15 -47
- package/lib/List/index.js +9 -37
- package/lib/Logo/Divider.js +21 -34
- package/lib/Logo/Logo3D.js +17 -33
- package/lib/Logo/LogoFlat.js +108 -118
- package/lib/Logo/LogoHighContrast.js +30 -33
- package/lib/Logo/LogoText.js +21 -34
- package/lib/Logo/index.js +97 -59
- package/lib/Logo/style.js +13 -36
- package/lib/Markdown/Code.js +16 -30
- package/lib/Markdown/CodeBlock.js +33 -65
- package/lib/Markdown/index.js +35 -54
- package/lib/Markdown/style.js +15 -129
- package/lib/MessageInput/index.js +60 -56
- package/lib/MessageModal/index.js +80 -91
- package/lib/SearchBar/index.js +86 -73
- package/lib/SearchBar/style.js +18 -46
- package/lib/SideNav/index.js +43 -31
- package/lib/SideNav/style.js +13 -43
- package/lib/Snippet/index.js +42 -45
- package/lib/Snippet/style.js +13 -71
- package/lib/StroyBook/index.js +60 -61
- package/lib/StroyBook/style.js +19 -87
- package/lib/Swatches/index.js +35 -53
- package/lib/TabsNav/index.js +23 -31
- package/lib/TabsNav/style.js +17 -60
- package/lib/ThemeProvider/GlobalStyle.js +29 -92
- package/lib/ThemeProvider/index.js +43 -57
- package/lib/ThemeSwitch/index.js +62 -46
- package/lib/Tooltip/index.js +26 -31
- package/lib/Tooltip/style.js +13 -49
- package/lib/components/ControlInput.js +86 -87
- package/lib/hooks/useCopied.js +27 -37
- package/lib/hooks/useHighlight.js +65 -70
- package/lib/index.js +211 -120
- package/lib/styles/algorithms/generateColorPalette.js +28 -60
- package/lib/styles/algorithms/generateCustomStylish.js +22 -117
- package/lib/styles/algorithms/generateCustomToken.js +51 -65
- package/lib/styles/algorithms/generateTheme.js +22 -53
- package/lib/styles/colors.js +121 -1766
- package/lib/styles/index.js +23 -32
- package/lib/styles/theme/base.js +11 -32
- package/lib/styles/theme/dark.js +38 -62
- package/lib/styles/theme/light.js +38 -62
- package/lib/types/index.js +4 -16
- package/lib/utils/colorUtils.js +14 -48
- package/package.json +1 -1
|
@@ -1,70 +1,66 @@
|
|
|
1
|
-
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __export = (target, all) => {
|
|
6
|
-
for (var name in all)
|
|
7
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
-
};
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
-
for (let key of __getOwnPropNames(from))
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
1
|
+
"use strict";
|
|
18
2
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
messagesReducer: () => messagesReducer
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
23
6
|
});
|
|
24
|
-
|
|
25
|
-
var
|
|
26
|
-
var
|
|
7
|
+
exports.messagesReducer = void 0;
|
|
8
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
9
|
+
var _immer = require("immer");
|
|
10
|
+
var messagesReducer = function messagesReducer(state, payload) {
|
|
27
11
|
switch (payload.type) {
|
|
28
|
-
case
|
|
29
|
-
return [
|
|
30
|
-
case
|
|
31
|
-
return (0,
|
|
12
|
+
case 'addMessage':
|
|
13
|
+
return [].concat((0, _toConsumableArray2.default)(state), [payload.message]);
|
|
14
|
+
case 'insertMessage':
|
|
15
|
+
return (0, _immer.produce)(state, function (draftState) {
|
|
32
16
|
draftState.splice(payload.index, 0, payload.message);
|
|
33
17
|
});
|
|
34
|
-
case
|
|
35
|
-
return state.filter((_, i)
|
|
36
|
-
|
|
18
|
+
case 'deleteMessage':
|
|
19
|
+
return state.filter(function (_, i) {
|
|
20
|
+
return i !== payload.index;
|
|
21
|
+
});
|
|
22
|
+
case 'resetMessages':
|
|
37
23
|
return [];
|
|
38
|
-
case
|
|
39
|
-
return (0,
|
|
40
|
-
|
|
24
|
+
case 'updateMessage':
|
|
25
|
+
return (0, _immer.produce)(state, function (draftState) {
|
|
26
|
+
var index = payload.index,
|
|
27
|
+
message = payload.message;
|
|
41
28
|
draftState[index].content = message;
|
|
42
29
|
});
|
|
43
|
-
case
|
|
44
|
-
return (0,
|
|
45
|
-
|
|
30
|
+
case 'updateMessageRole':
|
|
31
|
+
return (0, _immer.produce)(state, function (draftState) {
|
|
32
|
+
var index = payload.index,
|
|
33
|
+
role = payload.role;
|
|
46
34
|
draftState[index].role = role;
|
|
47
35
|
});
|
|
48
|
-
case
|
|
49
|
-
return (0,
|
|
50
|
-
draftState.push({
|
|
36
|
+
case 'addUserMessage':
|
|
37
|
+
return (0, _immer.produce)(state, function (draftState) {
|
|
38
|
+
draftState.push({
|
|
39
|
+
role: 'user',
|
|
40
|
+
content: payload.message
|
|
41
|
+
});
|
|
51
42
|
});
|
|
52
|
-
case
|
|
53
|
-
return (0,
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
43
|
+
case 'updateLatestBotMessage':
|
|
44
|
+
return (0, _immer.produce)(state, function () {
|
|
45
|
+
var responseStream = payload.responseStream;
|
|
46
|
+
var newMessage = {
|
|
47
|
+
role: 'assistant',
|
|
48
|
+
content: responseStream.join('')
|
|
49
|
+
};
|
|
50
|
+
return [].concat((0, _toConsumableArray2.default)(state.slice(0, -1)), [newMessage]);
|
|
57
51
|
});
|
|
58
|
-
case
|
|
59
|
-
return (0,
|
|
60
|
-
|
|
52
|
+
case 'setErrorMessage':
|
|
53
|
+
return (0, _immer.produce)(state, function (draftState) {
|
|
54
|
+
var index = payload.index,
|
|
55
|
+
error = payload.error;
|
|
61
56
|
draftState[index].error = error;
|
|
62
57
|
});
|
|
63
|
-
case
|
|
64
|
-
return (0,
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
58
|
+
case 'updateMessageChoice':
|
|
59
|
+
return (0, _immer.produce)(state, function (draftState) {
|
|
60
|
+
var index = payload.index,
|
|
61
|
+
message = payload.message;
|
|
62
|
+
var botMessage = draftState[index];
|
|
63
|
+
var prevMsg = botMessage.content;
|
|
68
64
|
botMessage.content = message;
|
|
69
65
|
if (botMessage.choices) {
|
|
70
66
|
botMessage.choices.push(prevMsg);
|
|
@@ -73,10 +69,7 @@ var messagesReducer = (state, payload) => {
|
|
|
73
69
|
}
|
|
74
70
|
});
|
|
75
71
|
default:
|
|
76
|
-
throw Error(
|
|
72
|
+
throw Error('暂未实现的 type,请检查 reducer');
|
|
77
73
|
}
|
|
78
74
|
};
|
|
79
|
-
|
|
80
|
-
0 && (module.exports = {
|
|
81
|
-
messagesReducer
|
|
82
|
-
});
|
|
75
|
+
exports.messagesReducer = messagesReducer;
|
|
@@ -1,53 +1,51 @@
|
|
|
1
|
-
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __export = (target, all) => {
|
|
6
|
-
for (var name in all)
|
|
7
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
-
};
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
-
for (let key of __getOwnPropNames(from))
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
1
|
+
"use strict";
|
|
18
2
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
__export(selectors_exports, {
|
|
22
|
-
chatSelectors: () => chatSelectors
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
23
5
|
});
|
|
24
|
-
|
|
25
|
-
var
|
|
26
|
-
var tiktoken = (0,
|
|
27
|
-
var encode = (text)
|
|
28
|
-
if (!text)
|
|
29
|
-
|
|
30
|
-
const tokens = tiktoken.encode(text);
|
|
6
|
+
exports.chatSelectors = void 0;
|
|
7
|
+
var _tiktoken = require("@dqbd/tiktoken");
|
|
8
|
+
var tiktoken = (0, _tiktoken.get_encoding)('cl100k_base');
|
|
9
|
+
var encode = function encode(text) {
|
|
10
|
+
if (!text) return [];
|
|
11
|
+
var tokens = tiktoken.encode(text);
|
|
31
12
|
return tokens;
|
|
32
13
|
};
|
|
33
|
-
var disableInputSel = (s)
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
)
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
var
|
|
14
|
+
var disableInputSel = function disableInputSel(s) {
|
|
15
|
+
return s.changingSystemRole;
|
|
16
|
+
};
|
|
17
|
+
var messagesTokens = function messagesTokens(s) {
|
|
18
|
+
return encode(s.messages.map(function (m) {
|
|
19
|
+
return m.content;
|
|
20
|
+
}).join(''));
|
|
21
|
+
};
|
|
22
|
+
var agentContentTokens = function agentContentTokens(s) {
|
|
23
|
+
return encode(s.messages.filter(function (s) {
|
|
24
|
+
return s.role === 'system';
|
|
25
|
+
}).map(function (c) {
|
|
26
|
+
return c.content;
|
|
27
|
+
}).join('') || '');
|
|
28
|
+
};
|
|
29
|
+
var totalTokens = function totalTokens(s) {
|
|
30
|
+
return encode(s.messages.map(function (m) {
|
|
31
|
+
return m.content;
|
|
32
|
+
}).join(''));
|
|
33
|
+
};
|
|
34
|
+
var totalTokenCount = function totalTokenCount(s) {
|
|
35
|
+
return totalTokens(s).length;
|
|
36
|
+
};
|
|
37
|
+
var agentTokenCount = function agentTokenCount(s) {
|
|
38
|
+
return agentContentTokens(s).length;
|
|
39
|
+
};
|
|
40
|
+
var messagesTokenCount = function messagesTokenCount(s) {
|
|
41
|
+
return messagesTokens(s).length;
|
|
42
|
+
};
|
|
42
43
|
var chatSelectors = {
|
|
43
|
-
totalTokenCount,
|
|
44
|
-
agentTokenCount,
|
|
45
|
-
messagesTokenCount,
|
|
46
|
-
totalTokens,
|
|
47
|
-
messagesTokens,
|
|
44
|
+
totalTokenCount: totalTokenCount,
|
|
45
|
+
agentTokenCount: agentTokenCount,
|
|
46
|
+
messagesTokenCount: messagesTokenCount,
|
|
47
|
+
totalTokens: totalTokens,
|
|
48
|
+
messagesTokens: messagesTokens,
|
|
48
49
|
disableInput: disableInputSel
|
|
49
50
|
};
|
|
50
|
-
|
|
51
|
-
0 && (module.exports = {
|
|
52
|
-
chatSelectors
|
|
53
|
-
});
|
|
51
|
+
exports.chatSelectors = chatSelectors;
|
package/lib/Chat/store/store.js
CHANGED
|
@@ -1,119 +1,246 @@
|
|
|
1
|
-
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __export = (target, all) => {
|
|
6
|
-
for (var name in all)
|
|
7
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
-
};
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
-
for (let key of __getOwnPropNames(from))
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
1
|
+
"use strict";
|
|
18
2
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
createStore: () => createStore
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
23
6
|
});
|
|
24
|
-
|
|
25
|
-
var
|
|
26
|
-
var
|
|
27
|
-
var
|
|
28
|
-
var
|
|
29
|
-
var
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
onResponseFinished == null ? void 0 : onResponseFinished({ messages: get().messages });
|
|
54
|
-
},
|
|
55
|
-
sendMessage: async () => {
|
|
56
|
-
const { message, dispatchMessage, generateMessage, messages } = get();
|
|
57
|
-
if (!message)
|
|
58
|
-
return;
|
|
59
|
-
set({ message: "" });
|
|
60
|
-
dispatchMessage({ type: "addUserMessage", message });
|
|
61
|
-
dispatchMessage({ type: "addMessage", message: { role: "assistant", content: import_const.LOADING_FLAT } });
|
|
62
|
-
let currentResponse = [];
|
|
63
|
-
await generateMessage(message, messages, {
|
|
64
|
-
onMessageHandle: (text) => {
|
|
65
|
-
currentResponse = [...currentResponse, text];
|
|
66
|
-
dispatchMessage({ type: "updateLatestBotMessage", responseStream: currentResponse });
|
|
67
|
-
const item = document.getElementById("for-loading");
|
|
68
|
-
if (!item)
|
|
69
|
-
return;
|
|
70
|
-
item.scrollIntoView({ behavior: "smooth" });
|
|
71
|
-
},
|
|
72
|
-
onErrorHandle: (error) => {
|
|
73
|
-
dispatchMessage({ type: "setErrorMessage", error, index: get().messages.length - 1 });
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
},
|
|
77
|
-
resendMessage: async (index) => {
|
|
78
|
-
var _a;
|
|
79
|
-
const { dispatchMessage, sendMessage, generateMessage, messages } = get();
|
|
80
|
-
const lastMessage = messages.at(-1);
|
|
81
|
-
if (messages.length === index && (lastMessage == null ? void 0 : lastMessage.role) === "user") {
|
|
82
|
-
dispatchMessage({ type: "deleteMessage", index: index - 1 });
|
|
83
|
-
set({ message: lastMessage.content });
|
|
84
|
-
await sendMessage();
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
const contextMessages = get().messages.slice(0, index);
|
|
88
|
-
const userMessage = (_a = contextMessages.at(-1)) == null ? void 0 : _a.content;
|
|
89
|
-
if (!userMessage)
|
|
90
|
-
return;
|
|
91
|
-
const targetMsg = messages[index];
|
|
92
|
-
if (targetMsg.role !== "assistant") {
|
|
93
|
-
dispatchMessage({
|
|
94
|
-
type: "insertMessage",
|
|
95
|
-
index,
|
|
96
|
-
message: { role: "assistant", content: import_const.LOADING_FLAT }
|
|
7
|
+
exports.createStore = void 0;
|
|
8
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
9
|
+
var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
|
|
10
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
11
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
12
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
13
|
+
var _fetch = require("../utils/fetch");
|
|
14
|
+
var _const = require("../const");
|
|
15
|
+
var _initialState = require("./initialState");
|
|
16
|
+
var _messageReducer = require("./messageReducer");
|
|
17
|
+
var _excluded = ["type"];
|
|
18
|
+
var createStore = function createStore(set, get) {
|
|
19
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, _initialState.initialState), {}, {
|
|
20
|
+
dispatchMessage: function dispatchMessage(payload) {
|
|
21
|
+
var _get$onMessagesChange, _get;
|
|
22
|
+
var type = payload.type,
|
|
23
|
+
res = (0, _objectWithoutProperties2.default)(payload, _excluded);
|
|
24
|
+
var messages = (0, _messageReducer.messagesReducer)(get().messages, payload);
|
|
25
|
+
set({
|
|
26
|
+
messages: messages
|
|
27
|
+
}, false, {
|
|
28
|
+
type: "dispatchMessage/".concat(type),
|
|
29
|
+
payload: res
|
|
30
|
+
});
|
|
31
|
+
(_get$onMessagesChange = (_get = get()).onMessagesChange) === null || _get$onMessagesChange === void 0 ? void 0 : _get$onMessagesChange.call(_get, messages);
|
|
32
|
+
},
|
|
33
|
+
handleMessageEditing: function handleMessageEditing(index) {
|
|
34
|
+
set({
|
|
35
|
+
editingMessageId: index
|
|
97
36
|
});
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
37
|
+
},
|
|
38
|
+
generateMessage: function () {
|
|
39
|
+
var _generateMessage = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee(message, messages, options) {
|
|
40
|
+
var _get2, onResponseStart, request, onResponseFinished, fetcher;
|
|
41
|
+
return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
|
|
42
|
+
while (1) switch (_context.prev = _context.next) {
|
|
43
|
+
case 0:
|
|
44
|
+
_get2 = get(), onResponseStart = _get2.onResponseStart, request = _get2.request, onResponseFinished = _get2.onResponseFinished;
|
|
45
|
+
if (request) {
|
|
46
|
+
_context.next = 3;
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
return _context.abrupt("return");
|
|
50
|
+
case 3:
|
|
51
|
+
_context.next = 5;
|
|
52
|
+
return onResponseStart === null || onResponseStart === void 0 ? void 0 : onResponseStart(get().messages);
|
|
53
|
+
case 5:
|
|
54
|
+
set({
|
|
55
|
+
loading: true
|
|
56
|
+
});
|
|
57
|
+
fetcher = function fetcher() {
|
|
58
|
+
return request({
|
|
59
|
+
messages: messages
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
_context.next = 9;
|
|
63
|
+
return (0, _fetch.fetchSSE)(fetcher, options);
|
|
64
|
+
case 9:
|
|
65
|
+
set({
|
|
66
|
+
loading: false
|
|
67
|
+
});
|
|
68
|
+
onResponseFinished === null || onResponseFinished === void 0 ? void 0 : onResponseFinished({
|
|
69
|
+
messages: get().messages
|
|
70
|
+
});
|
|
71
|
+
case 11:
|
|
72
|
+
case "end":
|
|
73
|
+
return _context.stop();
|
|
74
|
+
}
|
|
75
|
+
}, _callee);
|
|
76
|
+
}));
|
|
77
|
+
function generateMessage(_x, _x2, _x3) {
|
|
78
|
+
return _generateMessage.apply(this, arguments);
|
|
112
79
|
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
80
|
+
return generateMessage;
|
|
81
|
+
}(),
|
|
82
|
+
sendMessage: function () {
|
|
83
|
+
var _sendMessage = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee2() {
|
|
84
|
+
var _get3, message, dispatchMessage, generateMessage, messages, currentResponse;
|
|
85
|
+
return (0, _regeneratorRuntime2.default)().wrap(function _callee2$(_context2) {
|
|
86
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
87
|
+
case 0:
|
|
88
|
+
_get3 = get(), message = _get3.message, dispatchMessage = _get3.dispatchMessage, generateMessage = _get3.generateMessage, messages = _get3.messages;
|
|
89
|
+
if (message) {
|
|
90
|
+
_context2.next = 3;
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
return _context2.abrupt("return");
|
|
94
|
+
case 3:
|
|
95
|
+
set({
|
|
96
|
+
message: ''
|
|
97
|
+
});
|
|
98
|
+
dispatchMessage({
|
|
99
|
+
type: 'addUserMessage',
|
|
100
|
+
message: message
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
// 添加一个空的信息用于放置 ai 响应
|
|
104
|
+
dispatchMessage({
|
|
105
|
+
type: 'addMessage',
|
|
106
|
+
message: {
|
|
107
|
+
role: 'assistant',
|
|
108
|
+
content: _const.LOADING_FLAT
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
currentResponse = []; // 生成 messages
|
|
112
|
+
_context2.next = 9;
|
|
113
|
+
return generateMessage(message, messages, {
|
|
114
|
+
onMessageHandle: function onMessageHandle(text) {
|
|
115
|
+
currentResponse = [].concat((0, _toConsumableArray2.default)(currentResponse), [text]);
|
|
116
|
+
dispatchMessage({
|
|
117
|
+
type: 'updateLatestBotMessage',
|
|
118
|
+
responseStream: currentResponse
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
// 滚动到最后一条消息
|
|
122
|
+
var item = document.getElementById('for-loading');
|
|
123
|
+
if (!item) return;
|
|
124
|
+
item.scrollIntoView({
|
|
125
|
+
behavior: 'smooth'
|
|
126
|
+
});
|
|
127
|
+
},
|
|
128
|
+
onErrorHandle: function onErrorHandle(error) {
|
|
129
|
+
dispatchMessage({
|
|
130
|
+
type: 'setErrorMessage',
|
|
131
|
+
error: error,
|
|
132
|
+
index: get().messages.length - 1
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
case 9:
|
|
137
|
+
case "end":
|
|
138
|
+
return _context2.stop();
|
|
139
|
+
}
|
|
140
|
+
}, _callee2);
|
|
141
|
+
}));
|
|
142
|
+
function sendMessage() {
|
|
143
|
+
return _sendMessage.apply(this, arguments);
|
|
144
|
+
}
|
|
145
|
+
return sendMessage;
|
|
146
|
+
}(),
|
|
147
|
+
resendMessage: function () {
|
|
148
|
+
var _resendMessage = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee3(index) {
|
|
149
|
+
var _contextMessages$at;
|
|
150
|
+
var _get4, dispatchMessage, sendMessage, generateMessage, messages, lastMessage, contextMessages, userMessage, targetMsg, botPrevMsg, currentResponse;
|
|
151
|
+
return (0, _regeneratorRuntime2.default)().wrap(function _callee3$(_context3) {
|
|
152
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
153
|
+
case 0:
|
|
154
|
+
_get4 = get(), dispatchMessage = _get4.dispatchMessage, sendMessage = _get4.sendMessage, generateMessage = _get4.generateMessage, messages = _get4.messages;
|
|
155
|
+
lastMessage = messages.at(-1); // 用户通过手动删除,造成了他的问题是最后一条消息
|
|
156
|
+
// 这种情况下,相当于用户重新发送消息
|
|
157
|
+
if (!(messages.length === index && (lastMessage === null || lastMessage === void 0 ? void 0 : lastMessage.role) === 'user')) {
|
|
158
|
+
_context3.next = 8;
|
|
159
|
+
break;
|
|
160
|
+
}
|
|
161
|
+
dispatchMessage({
|
|
162
|
+
type: 'deleteMessage',
|
|
163
|
+
index: index - 1
|
|
164
|
+
});
|
|
165
|
+
set({
|
|
166
|
+
message: lastMessage.content
|
|
167
|
+
});
|
|
168
|
+
_context3.next = 7;
|
|
169
|
+
return sendMessage();
|
|
170
|
+
case 7:
|
|
171
|
+
return _context3.abrupt("return");
|
|
172
|
+
case 8:
|
|
173
|
+
// 上下文消息就是当前消息之前的消息
|
|
174
|
+
contextMessages = get().messages.slice(0, index); // 上下文消息中最后一条消息
|
|
175
|
+
userMessage = (_contextMessages$at = contextMessages.at(-1)) === null || _contextMessages$at === void 0 ? void 0 : _contextMessages$at.content;
|
|
176
|
+
if (userMessage) {
|
|
177
|
+
_context3.next = 12;
|
|
178
|
+
break;
|
|
179
|
+
}
|
|
180
|
+
return _context3.abrupt("return");
|
|
181
|
+
case 12:
|
|
182
|
+
targetMsg = messages[index]; // 如果不是 assistant 的消息,那么需要额外插入一条消息
|
|
183
|
+
if (targetMsg.role !== 'assistant') {
|
|
184
|
+
dispatchMessage({
|
|
185
|
+
type: 'insertMessage',
|
|
186
|
+
index: index,
|
|
187
|
+
message: {
|
|
188
|
+
role: 'assistant',
|
|
189
|
+
content: _const.LOADING_FLAT
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
} else {
|
|
193
|
+
botPrevMsg = targetMsg.content; // 保存之前的消息为历史消息
|
|
194
|
+
dispatchMessage({
|
|
195
|
+
type: 'updateMessageChoice',
|
|
196
|
+
message: botPrevMsg,
|
|
197
|
+
index: index
|
|
198
|
+
});
|
|
199
|
+
dispatchMessage({
|
|
200
|
+
type: 'updateMessage',
|
|
201
|
+
message: _const.LOADING_FLAT,
|
|
202
|
+
index: index
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
// 重置错误信息
|
|
207
|
+
dispatchMessage({
|
|
208
|
+
type: 'setErrorMessage',
|
|
209
|
+
error: undefined,
|
|
210
|
+
index: index
|
|
211
|
+
});
|
|
212
|
+
|
|
213
|
+
// 开始更新消息
|
|
214
|
+
currentResponse = [];
|
|
215
|
+
_context3.next = 18;
|
|
216
|
+
return generateMessage(userMessage, contextMessages, {
|
|
217
|
+
onMessageHandle: function onMessageHandle(text) {
|
|
218
|
+
currentResponse = [].concat((0, _toConsumableArray2.default)(currentResponse), [text]);
|
|
219
|
+
dispatchMessage({
|
|
220
|
+
type: 'updateMessage',
|
|
221
|
+
message: currentResponse.join(''),
|
|
222
|
+
index: index
|
|
223
|
+
});
|
|
224
|
+
},
|
|
225
|
+
onErrorHandle: function onErrorHandle(error) {
|
|
226
|
+
dispatchMessage({
|
|
227
|
+
type: 'setErrorMessage',
|
|
228
|
+
error: error,
|
|
229
|
+
index: index
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
case 18:
|
|
234
|
+
case "end":
|
|
235
|
+
return _context3.stop();
|
|
236
|
+
}
|
|
237
|
+
}, _callee3);
|
|
238
|
+
}));
|
|
239
|
+
function resendMessage(_x4) {
|
|
240
|
+
return _resendMessage.apply(this, arguments);
|
|
241
|
+
}
|
|
242
|
+
return resendMessage;
|
|
243
|
+
}()
|
|
244
|
+
});
|
|
245
|
+
};
|
|
246
|
+
exports.createStore = createStore;
|
package/lib/Chat/types.js
CHANGED
|
@@ -1,17 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __copyProps = (to, from, except, desc) => {
|
|
6
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
7
|
-
for (let key of __getOwnPropNames(from))
|
|
8
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
9
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
10
|
-
}
|
|
11
|
-
return to;
|
|
12
|
-
};
|
|
13
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
1
|
+
"use strict";
|
|
14
2
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|