@fe-free/ai 4.2.1 → 4.2.3

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 CHANGED
@@ -1,5 +1,23 @@
1
1
  # @fe-free/ai
2
2
 
3
+ ## 4.2.3
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies
8
+ - @fe-free/core@4.2.3
9
+ - @fe-free/icons@4.2.3
10
+ - @fe-free/tool@4.2.3
11
+
12
+ ## 4.2.2
13
+
14
+ ### Patch Changes
15
+
16
+ - feat: ai
17
+ - @fe-free/core@4.2.2
18
+ - @fe-free/icons@4.2.2
19
+ - @fe-free/tool@4.2.2
20
+
3
21
  ## 4.2.1
4
22
 
5
23
  ### Patch Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fe-free/ai",
3
- "version": "4.2.1",
3
+ "version": "4.2.3",
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.1"
21
+ "@fe-free/core": "4.2.3"
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.1",
32
- "@fe-free/tool": "4.2.1"
31
+ "@fe-free/icons": "4.2.3",
32
+ "@fe-free/tool": "4.2.3"
33
33
  },
34
34
  "scripts": {
35
35
  "test": "echo \"Error: no test specified\" && exit 1",
@@ -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
  },