@fe-free/ai 4.2.1 → 4.2.2
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/CHANGELOG.md +9 -0
- package/package.json +4 -4
- package/src/store/index.ts +50 -21
package/CHANGELOG.md
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fe-free/ai",
|
|
3
|
-
"version": "4.2.
|
|
3
|
+
"version": "4.2.2",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "./src/index.ts",
|
|
6
6
|
"author": "",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"lodash-es": "^4.17.21",
|
|
19
19
|
"uuid": "^13.0.0",
|
|
20
20
|
"zustand": "^4.5.7",
|
|
21
|
-
"@fe-free/core": "4.2.
|
|
21
|
+
"@fe-free/core": "4.2.2"
|
|
22
22
|
},
|
|
23
23
|
"peerDependencies": {
|
|
24
24
|
"antd": "^5.27.1",
|
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
"i18next-icu": "^2.4.1",
|
|
29
29
|
"react": "^19.2.0",
|
|
30
30
|
"react-i18next": "^16.4.0",
|
|
31
|
-
"@fe-free/icons": "4.2.
|
|
32
|
-
"@fe-free/tool": "4.2.
|
|
31
|
+
"@fe-free/icons": "4.2.2",
|
|
32
|
+
"@fe-free/tool": "4.2.2"
|
|
33
33
|
},
|
|
34
34
|
"scripts": {
|
|
35
35
|
"test": "echo \"Error: no test specified\" && exit 1",
|
package/src/store/index.ts
CHANGED
|
@@ -11,14 +11,6 @@ interface ChatStore<
|
|
|
11
11
|
AIData,
|
|
12
12
|
ContextData extends Record<string, any>,
|
|
13
13
|
> {
|
|
14
|
-
/** 存放Chat的上下文数据 */
|
|
15
|
-
contextData?: ContextData;
|
|
16
|
-
setContextData: (contextData?: ContextData) => void;
|
|
17
|
-
setContextDataWithField: (
|
|
18
|
-
field: keyof ContextData,
|
|
19
|
-
contextDataValue: ContextData[keyof ContextData],
|
|
20
|
-
) => void;
|
|
21
|
-
|
|
22
14
|
senderValue?: UserData;
|
|
23
15
|
setSenderValue: (senderValue?: UserData) => void;
|
|
24
16
|
|
|
@@ -27,6 +19,16 @@ interface ChatStore<
|
|
|
27
19
|
addMessage: (message: ChatMessage<UserData, AIData>) => void;
|
|
28
20
|
updateMessage: (message: ChatMessage<UserData, AIData>) => void;
|
|
29
21
|
setMessagesBefore: (messages: ChatMessage<UserData, AIData>[]) => void;
|
|
22
|
+
setMessagesAfter: (messages: ChatMessage<UserData, AIData>[]) => void;
|
|
23
|
+
|
|
24
|
+
/** 存放Chat的上下文数据 */
|
|
25
|
+
contextData?: ContextData;
|
|
26
|
+
setContextData: (contextData?: ContextData) => void;
|
|
27
|
+
setContextDataWithField: (
|
|
28
|
+
field: keyof ContextData,
|
|
29
|
+
contextDataValue: ContextData[keyof ContextData],
|
|
30
|
+
) => void;
|
|
31
|
+
setContextDataPartial: (contextDataPartial: Partial<ContextData>) => void;
|
|
30
32
|
|
|
31
33
|
reset: () => void;
|
|
32
34
|
}
|
|
@@ -37,19 +39,6 @@ function createChatStore<
|
|
|
37
39
|
ContextData extends Record<string, any> = any,
|
|
38
40
|
>() {
|
|
39
41
|
const useChatStore = create<ChatStore<UserData, AIData, ContextData>>((set, get, store) => ({
|
|
40
|
-
contextData: undefined,
|
|
41
|
-
setContextData: (contextData) => {
|
|
42
|
-
set({ contextData });
|
|
43
|
-
},
|
|
44
|
-
setContextDataWithField: (field, contextDataValue) => {
|
|
45
|
-
const preContextData = get().contextData;
|
|
46
|
-
set({
|
|
47
|
-
contextData: {
|
|
48
|
-
...preContextData,
|
|
49
|
-
[field]: contextDataValue,
|
|
50
|
-
} as ContextData,
|
|
51
|
-
});
|
|
52
|
-
},
|
|
53
42
|
senderValue: undefined,
|
|
54
43
|
setSenderValue: (senderValue) => {
|
|
55
44
|
set(() => ({ senderValue }));
|
|
@@ -111,6 +100,46 @@ function createChatStore<
|
|
|
111
100
|
messages: newMessages,
|
|
112
101
|
});
|
|
113
102
|
},
|
|
103
|
+
setMessagesAfter: (messagesAfter) => {
|
|
104
|
+
if (messagesAfter.length === 0) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
const messages = get().messages;
|
|
109
|
+
|
|
110
|
+
const firstMessageAfter = messagesAfter[0];
|
|
111
|
+
const index = messages.findIndex((message) => message.uuid === firstMessageAfter.uuid);
|
|
112
|
+
|
|
113
|
+
// 如果 index 非 -1,则合并
|
|
114
|
+
// 如果 index -1,-1 + 1 为 0,即全取 message,也适用
|
|
115
|
+
const newMessages = [...messages.slice(0, index), ...messagesAfter];
|
|
116
|
+
|
|
117
|
+
set({
|
|
118
|
+
messages: newMessages,
|
|
119
|
+
});
|
|
120
|
+
},
|
|
121
|
+
contextData: undefined,
|
|
122
|
+
setContextData: (contextData) => {
|
|
123
|
+
set({ contextData });
|
|
124
|
+
},
|
|
125
|
+
setContextDataWithField: (field, contextDataValue) => {
|
|
126
|
+
const preContextData = get().contextData;
|
|
127
|
+
set({
|
|
128
|
+
contextData: {
|
|
129
|
+
...preContextData,
|
|
130
|
+
[field]: contextDataValue,
|
|
131
|
+
} as ContextData,
|
|
132
|
+
});
|
|
133
|
+
},
|
|
134
|
+
setContextDataPartial: (contextDataPartial) => {
|
|
135
|
+
const preContextData = get().contextData;
|
|
136
|
+
set({
|
|
137
|
+
contextData: {
|
|
138
|
+
...preContextData,
|
|
139
|
+
...contextDataPartial,
|
|
140
|
+
} as ContextData,
|
|
141
|
+
});
|
|
142
|
+
},
|
|
114
143
|
reset: () => {
|
|
115
144
|
set(store.getInitialState());
|
|
116
145
|
},
|