@unif/react-native-chat-sdk 0.6.0 → 1.0.0
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/commonjs/hooks/ChatProvider.js +26 -8
- package/lib/commonjs/hooks/ChatProvider.js.map +1 -1
- package/lib/commonjs/hooks/useXChat.js +76 -32
- package/lib/commonjs/hooks/useXChat.js.map +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/providers/AbstractChatProvider.js +8 -4
- package/lib/commonjs/providers/AbstractChatProvider.js.map +1 -1
- package/lib/commonjs/providers/DeepSeekChatProvider.js +7 -4
- package/lib/commonjs/providers/DeepSeekChatProvider.js.map +1 -1
- package/lib/commonjs/providers/OpenAIChatProvider.js +6 -1
- package/lib/commonjs/providers/OpenAIChatProvider.js.map +1 -1
- package/lib/commonjs/stores/chatStore.js +83 -70
- package/lib/commonjs/stores/chatStore.js.map +1 -1
- package/lib/module/hooks/ChatProvider.js +26 -8
- package/lib/module/hooks/ChatProvider.js.map +1 -1
- package/lib/module/hooks/useXChat.js +77 -33
- package/lib/module/hooks/useXChat.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/providers/AbstractChatProvider.js +8 -4
- package/lib/module/providers/AbstractChatProvider.js.map +1 -1
- package/lib/module/providers/DeepSeekChatProvider.js +7 -4
- package/lib/module/providers/DeepSeekChatProvider.js.map +1 -1
- package/lib/module/providers/OpenAIChatProvider.js +6 -1
- package/lib/module/providers/OpenAIChatProvider.js.map +1 -1
- package/lib/module/stores/chatStore.js +83 -68
- package/lib/module/stores/chatStore.js.map +1 -1
- package/lib/typescript/commonjs/hooks/ChatProvider.d.ts +10 -3
- package/lib/typescript/commonjs/hooks/ChatProvider.d.ts.map +1 -1
- package/lib/typescript/commonjs/hooks/useXChat.d.ts +10 -4
- package/lib/typescript/commonjs/hooks/useXChat.d.ts.map +1 -1
- package/lib/typescript/commonjs/index.d.ts +2 -1
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/providers/AbstractChatProvider.d.ts +6 -6
- package/lib/typescript/commonjs/providers/AbstractChatProvider.d.ts.map +1 -1
- package/lib/typescript/commonjs/providers/DeepSeekChatProvider.d.ts +3 -2
- package/lib/typescript/commonjs/providers/DeepSeekChatProvider.d.ts.map +1 -1
- package/lib/typescript/commonjs/providers/OpenAIChatProvider.d.ts +3 -2
- package/lib/typescript/commonjs/providers/OpenAIChatProvider.d.ts.map +1 -1
- package/lib/typescript/commonjs/stores/chatStore.d.ts +24 -14
- package/lib/typescript/commonjs/stores/chatStore.d.ts.map +1 -1
- package/lib/typescript/commonjs/types/provider.d.ts +14 -1
- package/lib/typescript/commonjs/types/provider.d.ts.map +1 -1
- package/lib/typescript/module/hooks/ChatProvider.d.ts +10 -3
- package/lib/typescript/module/hooks/ChatProvider.d.ts.map +1 -1
- package/lib/typescript/module/hooks/useXChat.d.ts +10 -4
- package/lib/typescript/module/hooks/useXChat.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts +2 -1
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/providers/AbstractChatProvider.d.ts +6 -6
- package/lib/typescript/module/providers/AbstractChatProvider.d.ts.map +1 -1
- package/lib/typescript/module/providers/DeepSeekChatProvider.d.ts +3 -2
- package/lib/typescript/module/providers/DeepSeekChatProvider.d.ts.map +1 -1
- package/lib/typescript/module/providers/OpenAIChatProvider.d.ts +3 -2
- package/lib/typescript/module/providers/OpenAIChatProvider.d.ts.map +1 -1
- package/lib/typescript/module/stores/chatStore.d.ts +24 -14
- package/lib/typescript/module/stores/chatStore.d.ts.map +1 -1
- package/lib/typescript/module/types/provider.d.ts +14 -1
- package/lib/typescript/module/types/provider.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/hooks/ChatProvider.tsx +34 -17
- package/src/hooks/useXChat.ts +111 -61
- package/src/index.ts +3 -0
- package/src/providers/AbstractChatProvider.ts +17 -9
- package/src/providers/DeepSeekChatProvider.ts +5 -6
- package/src/providers/OpenAIChatProvider.ts +10 -2
- package/src/stores/chatStore.ts +53 -41
- package/src/types/provider.ts +19 -1
|
@@ -17,19 +17,28 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
|
|
|
17
17
|
* 可选的全局 Provider 模式(也可直接使用 hooks)
|
|
18
18
|
*/
|
|
19
19
|
|
|
20
|
+
/** Context 值类型 — 合并 useXChat + useXConversations + useXModel */
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Context 使用 unknown 作为 Message 泛型的默认值,
|
|
24
|
+
* 在 ChatProvider 和 useChatContext 中通过泛型参数指定具体类型。
|
|
25
|
+
*/
|
|
20
26
|
const ChatContext = /*#__PURE__*/(0, _react.createContext)(null);
|
|
21
|
-
|
|
22
|
-
|
|
27
|
+
|
|
28
|
+
/** 内存存储实现,用于未传入 storage 时的默认行为 */
|
|
29
|
+
class MemoryStorage {
|
|
30
|
+
data = new Map();
|
|
23
31
|
async getItem(key) {
|
|
24
|
-
return this.
|
|
25
|
-
}
|
|
32
|
+
return this.data.get(key) ?? null;
|
|
33
|
+
}
|
|
26
34
|
async setItem(key, value) {
|
|
27
|
-
this.
|
|
28
|
-
}
|
|
35
|
+
this.data.set(key, value);
|
|
36
|
+
}
|
|
29
37
|
async removeItem(key) {
|
|
30
|
-
this.
|
|
38
|
+
this.data.delete(key);
|
|
31
39
|
}
|
|
32
|
-
}
|
|
40
|
+
}
|
|
41
|
+
const memoryStorage = new MemoryStorage();
|
|
33
42
|
function ChatProvider(props) {
|
|
34
43
|
const {
|
|
35
44
|
provider,
|
|
@@ -57,6 +66,8 @@ function ChatProvider(props) {
|
|
|
57
66
|
models,
|
|
58
67
|
defaultModel
|
|
59
68
|
});
|
|
69
|
+
|
|
70
|
+
// 合并三个 hook 的返回值
|
|
60
71
|
const value = (0, _react.useMemo)(() => ({
|
|
61
72
|
...chat,
|
|
62
73
|
...conversations,
|
|
@@ -67,11 +78,18 @@ function ChatProvider(props) {
|
|
|
67
78
|
children: children
|
|
68
79
|
});
|
|
69
80
|
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* 消费 ChatProvider 注入的聊天上下文
|
|
84
|
+
*
|
|
85
|
+
* @template Message - 消息类型,默认 ChatMessage
|
|
86
|
+
*/
|
|
70
87
|
function useChatContext() {
|
|
71
88
|
const ctx = (0, _react.useContext)(ChatContext);
|
|
72
89
|
if (!ctx) {
|
|
73
90
|
throw new Error('useChatContext must be used within a ChatProvider');
|
|
74
91
|
}
|
|
92
|
+
// Context 存储 unknown,读取时通过泛型窄化为具体类型
|
|
75
93
|
return ctx;
|
|
76
94
|
}
|
|
77
95
|
//# sourceMappingURL=ChatProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_useXChat","_useXConversations","_useXModel","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ChatContext","createContext","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_useXChat","_useXConversations","_useXModel","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ChatContext","createContext","MemoryStorage","data","Map","getItem","key","setItem","value","removeItem","delete","memoryStorage","ChatProvider","props","provider","storage","models","defaultModel","generateId","requestPlaceholder","requestFallback","children","convOptions","useMemo","conversations","useXConversations","chatConfig","conversationKey","activeId","chat","useXChat","model","useXModel","jsx","Provider","useChatContext","ctx","useContext","Error"],"sourceRoot":"../../../src","sources":["hooks/ChatProvider.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -7,19 +7,42 @@ exports.useXChat = useXChat;
|
|
|
7
7
|
var _react = require("react");
|
|
8
8
|
var _chatStore = require("../stores/chatStore");
|
|
9
9
|
/**
|
|
10
|
-
* useXChat — 聊天操作
|
|
10
|
+
* useXChat — 聊天操作 Hook
|
|
11
11
|
*
|
|
12
|
-
*
|
|
12
|
+
* 支持 isRequesting / parser 消息展开 / defaultMessages 初始消息
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
|
+
/** 从 Message 中安全读取 status 字段 */
|
|
16
|
+
function getStatus(m) {
|
|
17
|
+
return m.status ?? 'local';
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/** 从 Message 中安全读取 extra 字段 */
|
|
21
|
+
function getExtra(m) {
|
|
22
|
+
return m.extra;
|
|
23
|
+
}
|
|
15
24
|
function useXChat(config) {
|
|
16
25
|
const {
|
|
17
26
|
provider,
|
|
18
|
-
conversationKey
|
|
27
|
+
conversationKey,
|
|
28
|
+
parser,
|
|
29
|
+
defaultMessages
|
|
19
30
|
} = config;
|
|
31
|
+
const defaultMessagesLoadedRef = (0, _react.useRef)(false);
|
|
20
32
|
const store = (0, _react.useMemo)(() => (0, _chatStore.getOrCreateChatStore)(conversationKey), [conversationKey]);
|
|
21
33
|
|
|
22
|
-
//
|
|
34
|
+
// 首次挂载时加载 defaultMessages
|
|
35
|
+
(0, _react.useEffect)(() => {
|
|
36
|
+
if (!defaultMessages || defaultMessagesLoadedRef.current) return;
|
|
37
|
+
defaultMessagesLoadedRef.current = true;
|
|
38
|
+
if (Array.isArray(defaultMessages)) {
|
|
39
|
+
store.getState().setMessages(defaultMessages);
|
|
40
|
+
} else {
|
|
41
|
+
defaultMessages().then(msgs => {
|
|
42
|
+
store.getState().setMessages(msgs);
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}, [defaultMessages, store]);
|
|
23
46
|
const state = (0, _react.useSyncExternalStore)(store.subscribe, store.getState, store.getState);
|
|
24
47
|
const onRequest = (0, _react.useCallback)(input => {
|
|
25
48
|
const s = store.getState();
|
|
@@ -28,11 +51,12 @@ function useXChat(config) {
|
|
|
28
51
|
store.getState().setError(null);
|
|
29
52
|
store.getState().setSuggestions([]);
|
|
30
53
|
const localMessage = provider.transformLocalMessage(input);
|
|
31
|
-
|
|
32
|
-
store.getState().addMessage(localChatMessage);
|
|
54
|
+
store.getState().addMessage(localMessage);
|
|
33
55
|
|
|
34
|
-
//
|
|
35
|
-
|
|
56
|
+
// loading 占位消息:合成临时对象,收到首条响应后立即移除。
|
|
57
|
+
// 这里无法直接构造 Message 泛型实例,因此使用 unknown 中转,
|
|
58
|
+
// 这是整个 SDK 中唯一一处不可避免的类型断言。
|
|
59
|
+
const loadingMessageId = `loading-${localMessage.id}`;
|
|
36
60
|
const loadingMessage = {
|
|
37
61
|
id: loadingMessageId,
|
|
38
62
|
text: '',
|
|
@@ -40,7 +64,7 @@ function useXChat(config) {
|
|
|
40
64
|
createdAt: new Date(),
|
|
41
65
|
messageType: 'text',
|
|
42
66
|
status: 'loading',
|
|
43
|
-
turnId:
|
|
67
|
+
turnId: localMessage.turnId ?? ''
|
|
44
68
|
};
|
|
45
69
|
store.getState().addMessage(loadingMessage);
|
|
46
70
|
let loadingRemoved = false;
|
|
@@ -57,9 +81,8 @@ function useXChat(config) {
|
|
|
57
81
|
},
|
|
58
82
|
onSuccess: message => {
|
|
59
83
|
removeLoading();
|
|
60
|
-
const m = message;
|
|
61
84
|
store.getState().upsertMessage({
|
|
62
|
-
...
|
|
85
|
+
...message,
|
|
63
86
|
status: 'success'
|
|
64
87
|
});
|
|
65
88
|
store.getState().setRequesting(false);
|
|
@@ -82,9 +105,8 @@ function useXChat(config) {
|
|
|
82
105
|
}, [provider, store, config]);
|
|
83
106
|
const abort = (0, _react.useCallback)(() => {
|
|
84
107
|
provider.abort();
|
|
85
|
-
// 清理可能存在的 loading 占位消息
|
|
86
108
|
const msgs = store.getState().messages;
|
|
87
|
-
const loadingMsg = msgs.find(m => m
|
|
109
|
+
const loadingMsg = msgs.find(m => getStatus(m) === 'loading');
|
|
88
110
|
if (loadingMsg) {
|
|
89
111
|
store.getState().removeMessage(loadingMsg.id);
|
|
90
112
|
}
|
|
@@ -96,8 +118,6 @@ function useXChat(config) {
|
|
|
96
118
|
const onReload = (0, _react.useCallback)((id, input) => {
|
|
97
119
|
const s = store.getState();
|
|
98
120
|
if (s.isRequesting) return;
|
|
99
|
-
|
|
100
|
-
// 将目标消息标记为 loading,移除其后的 assistant 消息
|
|
101
121
|
const targetIdx = s.messages.findIndex(m => m.id === id);
|
|
102
122
|
if (targetIdx < 0) return;
|
|
103
123
|
store.getState().setRequesting(true);
|
|
@@ -108,9 +128,8 @@ function useXChat(config) {
|
|
|
108
128
|
store.getState().upsertMessage(message);
|
|
109
129
|
},
|
|
110
130
|
onSuccess: message => {
|
|
111
|
-
const m = message;
|
|
112
131
|
store.getState().upsertMessage({
|
|
113
|
-
...
|
|
132
|
+
...message,
|
|
114
133
|
status: 'success'
|
|
115
134
|
});
|
|
116
135
|
store.getState().setRequesting(false);
|
|
@@ -133,12 +152,7 @@ function useXChat(config) {
|
|
|
133
152
|
const setMessages = (0, _react.useCallback)(messagesOrFn => {
|
|
134
153
|
if (typeof messagesOrFn === 'function') {
|
|
135
154
|
const current = store.getState().messages;
|
|
136
|
-
const currentInfos = current
|
|
137
|
-
id: m.id,
|
|
138
|
-
message: m,
|
|
139
|
-
status: m.status,
|
|
140
|
-
extra: m.extra
|
|
141
|
-
}));
|
|
155
|
+
const currentInfos = toMessageInfoList(current);
|
|
142
156
|
const next = messagesOrFn(currentInfos);
|
|
143
157
|
store.getState().setMessages(next.map(info => info.message));
|
|
144
158
|
} else {
|
|
@@ -150,8 +164,8 @@ function useXChat(config) {
|
|
|
150
164
|
const info = {
|
|
151
165
|
id: m.id,
|
|
152
166
|
message: m,
|
|
153
|
-
status: m
|
|
154
|
-
extra: m
|
|
167
|
+
status: getStatus(m),
|
|
168
|
+
extra: getExtra(m)
|
|
155
169
|
};
|
|
156
170
|
const partial = typeof partialOrFn === 'function' ? partialOrFn(info) : partialOrFn;
|
|
157
171
|
const updated = {};
|
|
@@ -172,15 +186,35 @@ function useXChat(config) {
|
|
|
172
186
|
provider.abort();
|
|
173
187
|
};
|
|
174
188
|
}, [provider]);
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
189
|
+
|
|
190
|
+
// 应用 parser(一对多展开)
|
|
191
|
+
const messages = (0, _react.useMemo)(() => {
|
|
192
|
+
const rawInfos = toMessageInfoList(state.messages);
|
|
193
|
+
if (!parser) return rawInfos;
|
|
194
|
+
const expanded = [];
|
|
195
|
+
for (const info of rawInfos) {
|
|
196
|
+
const parsed = parser(info.message);
|
|
197
|
+
if (parsed.length === 0) continue;
|
|
198
|
+
if (parsed.length === 1) {
|
|
199
|
+
expanded.push({
|
|
200
|
+
...info,
|
|
201
|
+
message: parsed[0]
|
|
202
|
+
});
|
|
203
|
+
} else {
|
|
204
|
+
parsed.forEach((p, i) => {
|
|
205
|
+
expanded.push({
|
|
206
|
+
...info,
|
|
207
|
+
id: `${info.id}-${i}`,
|
|
208
|
+
message: p
|
|
209
|
+
});
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return expanded;
|
|
214
|
+
}, [state.messages, parser]);
|
|
181
215
|
return {
|
|
182
216
|
messages,
|
|
183
|
-
|
|
217
|
+
isRequesting: state.isRequesting,
|
|
184
218
|
suggestions: state.suggestions,
|
|
185
219
|
error: state.error,
|
|
186
220
|
onRequest,
|
|
@@ -192,4 +226,14 @@ function useXChat(config) {
|
|
|
192
226
|
removeMessage
|
|
193
227
|
};
|
|
194
228
|
}
|
|
229
|
+
|
|
230
|
+
/** store messages → MessageInfo 列表 */
|
|
231
|
+
function toMessageInfoList(messages) {
|
|
232
|
+
return messages.map(m => ({
|
|
233
|
+
id: m.id,
|
|
234
|
+
message: m,
|
|
235
|
+
status: getStatus(m),
|
|
236
|
+
extra: getExtra(m)
|
|
237
|
+
}));
|
|
238
|
+
}
|
|
195
239
|
//# sourceMappingURL=useXChat.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_chatStore","useXChat","config","provider","conversationKey","store","useMemo","getOrCreateChatStore","
|
|
1
|
+
{"version":3,"names":["_react","require","_chatStore","getStatus","m","status","getExtra","extra","useXChat","config","provider","conversationKey","parser","defaultMessages","defaultMessagesLoadedRef","useRef","store","useMemo","getOrCreateChatStore","useEffect","current","Array","isArray","getState","setMessages","then","msgs","state","useSyncExternalStore","subscribe","onRequest","useCallback","input","s","isRequesting","setRequesting","setError","setSuggestions","localMessage","transformLocalMessage","addMessage","loadingMessageId","id","loadingMessage","text","role","createdAt","Date","messageType","turnId","loadingRemoved","removeLoading","removeMessage","sendMessage","onUpdate","message","upsertMessage","onSuccess","onError","error","requestFallback","fallbackMsg","onSuggestion","items","abort","messages","loadingMsg","find","clearError","onReload","targetIdx","findIndex","messagesOrFn","currentInfos","toMessageInfoList","next","map","info","setMessage","partialOrFn","partial","updated","undefined","Object","assign","rawInfos","expanded","parsed","length","push","forEach","p","i","suggestions"],"sourceRoot":"../../../src","sources":["hooks/useXChat.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_XStream","require","_XRequest","_SSEParser","_AbstractChatProvider","_OpenAIChatProvider","_DeepSeekChatProvider","_chatStore","_useXChat","_useXConversations","_useXModel","_ChatProvider"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"names":["_XStream","require","_XRequest","_SSEParser","_AbstractChatProvider","_OpenAIChatProvider","_DeepSeekChatProvider","_chatStore","_useXChat","_useXConversations","_useXModel","_ChatProvider"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,IAAAA,QAAA,GAAAC,OAAA;AAGA,IAAAC,SAAA,GAAAD,OAAA;AAGA,IAAAE,UAAA,GAAAF,OAAA;AAGA,IAAAG,qBAAA,GAAAH,OAAA;AACA,IAAAI,mBAAA,GAAAJ,OAAA;AAEA,IAAAK,qBAAA,GAAAL,OAAA;AAMA,IAAAM,UAAA,GAAAN,OAAA;AAOA,IAAAO,SAAA,GAAAP,OAAA;AAOA,IAAAQ,kBAAA,GAAAR,OAAA;AAMA,IAAAS,UAAA,GAAAT,OAAA;AAGA,IAAAU,aAAA,GAAAV,OAAA","ignoreList":[]}
|
|
@@ -7,7 +7,7 @@ exports.AbstractChatProvider = void 0;
|
|
|
7
7
|
/**
|
|
8
8
|
* AbstractChatProvider — Provider 抽象基类
|
|
9
9
|
*
|
|
10
|
-
*
|
|
10
|
+
* 定义 transformMessage / transformParams / transformLocalMessage 抽象方法
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
class AbstractChatProvider {
|
|
@@ -17,7 +17,7 @@ class AbstractChatProvider {
|
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* 转换请求参数
|
|
20
|
-
*
|
|
20
|
+
* 新签名:接收 options 参数(含 messages 等上下文)
|
|
21
21
|
*/
|
|
22
22
|
|
|
23
23
|
/**
|
|
@@ -27,7 +27,7 @@ class AbstractChatProvider {
|
|
|
27
27
|
|
|
28
28
|
/**
|
|
29
29
|
* 转换响应消息
|
|
30
|
-
*
|
|
30
|
+
* 新签名:接收 info 对象(含 output + current)
|
|
31
31
|
*/
|
|
32
32
|
|
|
33
33
|
/**
|
|
@@ -38,7 +38,11 @@ class AbstractChatProvider {
|
|
|
38
38
|
let currentMessage;
|
|
39
39
|
const requestCallbacks = {
|
|
40
40
|
onStream: chunk => {
|
|
41
|
-
|
|
41
|
+
// XRequest 回调类型是 SSEOutput,与 Output 泛型默认一致
|
|
42
|
+
currentMessage = this.transformMessage({
|
|
43
|
+
output: chunk,
|
|
44
|
+
current: currentMessage
|
|
45
|
+
});
|
|
42
46
|
callbacks.onUpdate(currentMessage);
|
|
43
47
|
},
|
|
44
48
|
onSuccess: () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AbstractChatProvider","constructor","config","request","sendMessage","input","callbacks","params","transformParams","currentMessage","requestCallbacks","onStream","chunk","transformMessage","onUpdate","onSuccess","onError","error","Error","message","create","abort","exports"],"sourceRoot":"../../../src","sources":["providers/AbstractChatProvider.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;;
|
|
1
|
+
{"version":3,"names":["AbstractChatProvider","constructor","config","request","sendMessage","input","callbacks","params","transformParams","currentMessage","requestCallbacks","onStream","chunk","transformMessage","output","current","onUpdate","onSuccess","onError","error","Error","message","create","abort","exports"],"sourceRoot":"../../../src","sources":["providers/AbstractChatProvider.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;;AAYO,MAAeA,oBAAoB,CAIxC;EAGAC,WAAWA,CAACC,MAA6B,EAAE;IACzC,IAAI,CAACC,OAAO,GAAGD,MAAM,CAACC,OAAO;EAC/B;;EAEA;AACF;AACA;AACA;;EAME;AACF;AACA;AACA;;EAGE;AACF;AACA;AACA;;EAKE;AACF;AACA;EACEC,WAAWA,CAACC,KAAY,EAAEC,SAAqC,EAAQ;IACrE,MAAMC,MAAM,GAAG,IAAI,CAACC,eAAe,CAACH,KAAK,CAAC;IAC1C,IAAII,cAAmC;IAEvC,MAAMC,gBAAmC,GAAG;MAC1CC,QAAQ,EAAGC,KAAK,IAAK;QACnB;QACAH,cAAc,GAAG,IAAI,CAACI,gBAAgB,CAAC;UACrCC,MAAM,EAAEF,KAAe;UACvBG,OAAO,EAAEN;QACX,CAAC,CAAC;QACFH,SAAS,CAACU,QAAQ,CAACP,cAAc,CAAC;MACpC,CAAC;MACDQ,SAAS,EAAEA,CAAA,KAAM;QACf,IAAIR,cAAc,EAAE;UAClBH,SAAS,CAACW,SAAS,CAACR,cAAc,CAAC;QACrC;MACF,CAAC;MACDS,OAAO,EAAGC,KAAK,IAAK;QAClBb,SAAS,CAACY,OAAO,CAAC,IAAIE,KAAK,CAACD,KAAK,CAACE,OAAO,CAAC,CAAC;MAC7C;IACF,CAAC;IAED,IAAI,CAAClB,OAAO,CAACmB,MAAM,CAACf,MAAM,EAAEG,gBAAgB,CAAC;EAC/C;;EAEA;AACF;AACA;EACEa,KAAKA,CAAA,EAAS;IACZ,IAAI,CAACpB,OAAO,CAACoB,KAAK,CAAC,CAAC;EACtB;AACF;AAACC,OAAA,CAAAxB,oBAAA,GAAAA,oBAAA","ignoreList":[]}
|
|
@@ -24,8 +24,13 @@ class DeepSeekChatProvider extends _OpenAIChatProvider.OpenAIChatProvider {
|
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
26
|
* 覆写 transformMessage,处理 DeepSeek reasoning_content
|
|
27
|
+
* 新签名:info.output + info.current
|
|
27
28
|
*/
|
|
28
|
-
transformMessage(
|
|
29
|
+
transformMessage(info) {
|
|
30
|
+
const {
|
|
31
|
+
output,
|
|
32
|
+
current
|
|
33
|
+
} = info;
|
|
29
34
|
const raw = output.data;
|
|
30
35
|
if (raw.trim() === '[DONE]') {
|
|
31
36
|
return {
|
|
@@ -52,14 +57,12 @@ class DeepSeekChatProvider extends _OpenAIChatProvider.OpenAIChatProvider {
|
|
|
52
57
|
|
|
53
58
|
// 将 reasoning_content 映射为 <think> 标签包裹
|
|
54
59
|
if (reasoningContent) {
|
|
55
|
-
// 如果还没有开始 think 标签,添加开始标签
|
|
56
60
|
if (!prevText.includes('<think>')) {
|
|
57
61
|
newText += '<think>';
|
|
58
62
|
}
|
|
59
63
|
newText += reasoningContent;
|
|
60
64
|
}
|
|
61
65
|
if (content) {
|
|
62
|
-
// 如果有未关闭的 think 标签,先关闭
|
|
63
66
|
if (newText.includes('<think>') && !newText.includes('</think>')) {
|
|
64
67
|
newText += '</think>';
|
|
65
68
|
}
|
|
@@ -80,7 +83,7 @@ class DeepSeekChatProvider extends _OpenAIChatProvider.OpenAIChatProvider {
|
|
|
80
83
|
turnId: current?.turnId ?? `turn-${Date.now()}`
|
|
81
84
|
};
|
|
82
85
|
} catch {
|
|
83
|
-
return current ?? super.transformMessage(
|
|
86
|
+
return current ?? super.transformMessage(info);
|
|
84
87
|
}
|
|
85
88
|
}
|
|
86
89
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_OpenAIChatProvider","require","DeepSeekChatProvider","OpenAIChatProvider","constructor","config","baseURL","apiKey","model","getToken","transformMessage","output","current","raw","data","trim","id","text","role","createdAt","Date","messageType","status","turnId","parsed","JSON","parse","delta","choices","content","reasoningContent","reasoning_content","finishReason","finish_reason","prevText","newText","includes","now","exports"],"sourceRoot":"../../../src","sources":["providers/DeepSeekChatProvider.ts"],"mappings":";;;;;;AAOA,IAAAA,mBAAA,GAAAC,OAAA;AAPA;AACA;AACA;AACA;AACA;AACA;;AAaO,MAAMC,oBAAoB,SAASC,sCAAkB,CAAC;EAC3DC,WAAWA,CAACC,MAAkC,EAAE;IAC9C,KAAK,CAAC;MACJC,OAAO,EAAED,MAAM,CAACC,OAAO,IAAI,0BAA0B;MACrDC,MAAM,EAAEF,MAAM,CAACE,MAAM;MACrBC,KAAK,EAAEH,MAAM,CAACG,KAAK,IAAI,eAAe;MACtCC,QAAQ,EAAEJ,MAAM,CAACI;IACnB,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;EACWC,gBAAgBA,CACvBC,
|
|
1
|
+
{"version":3,"names":["_OpenAIChatProvider","require","DeepSeekChatProvider","OpenAIChatProvider","constructor","config","baseURL","apiKey","model","getToken","transformMessage","info","output","current","raw","data","trim","id","text","role","createdAt","Date","messageType","status","turnId","parsed","JSON","parse","delta","choices","content","reasoningContent","reasoning_content","finishReason","finish_reason","prevText","newText","includes","now","exports"],"sourceRoot":"../../../src","sources":["providers/DeepSeekChatProvider.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -68,8 +68,13 @@ class OpenAIChatProvider extends _AbstractChatProvider.AbstractChatProvider {
|
|
|
68
68
|
|
|
69
69
|
/**
|
|
70
70
|
* 将 SSE delta 转为 ChatMessage(累积 content)
|
|
71
|
+
* 新签名:info.output + info.current
|
|
71
72
|
*/
|
|
72
|
-
transformMessage(
|
|
73
|
+
transformMessage(info) {
|
|
74
|
+
const {
|
|
75
|
+
output,
|
|
76
|
+
current
|
|
77
|
+
} = info;
|
|
73
78
|
const raw = output.data;
|
|
74
79
|
|
|
75
80
|
// OpenAI 结束标记
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_AbstractChatProvider","require","_XRequest","_idCounter","genId","Date","now","OpenAIChatProvider","AbstractChatProvider","constructor","config","headers","apiKey","Authorization","request","XRequest","baseURL","endpoint","getToken","model","transformParams","input","messages","map","m","role","content","text","push","message","stream","transformLocalMessage","id","createdAt","messageType","status","turnId","extra","transformMessage","output","current","raw","data","trim","createEmptyAssistant","parsed","JSON","parse","delta","choices","finishReason","finish_reason","prevText","exports"],"sourceRoot":"../../../src","sources":["providers/OpenAIChatProvider.ts"],"mappings":";;;;;;AAMA,IAAAA,qBAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AAPA;AACA;AACA;AACA;AACA;;
|
|
1
|
+
{"version":3,"names":["_AbstractChatProvider","require","_XRequest","_idCounter","genId","Date","now","OpenAIChatProvider","AbstractChatProvider","constructor","config","headers","apiKey","Authorization","request","XRequest","baseURL","endpoint","getToken","model","transformParams","input","messages","map","m","role","content","text","push","message","stream","transformLocalMessage","id","createdAt","messageType","status","turnId","extra","transformMessage","info","output","current","raw","data","trim","createEmptyAssistant","parsed","JSON","parse","delta","choices","finishReason","finish_reason","prevText","exports"],"sourceRoot":"../../../src","sources":["providers/OpenAIChatProvider.ts"],"mappings":";;;;;;AAMA,IAAAA,qBAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AAPA;AACA;AACA;AACA;AACA;;AAmBA,IAAIE,UAAU,GAAG,CAAC;AAClB,MAAMC,KAAK,GAAGA,CAAA,KAAM,OAAOC,IAAI,CAACC,GAAG,CAAC,CAAC,IAAI,EAAEH,UAAU,EAAE;AAEhD,MAAMI,kBAAkB,SAASC,0CAAoB,CAI1D;EAGAC,WAAWA,CAACC,MAAgC,EAAE;IAC5C,MAAMC,OAA+B,GAAG,CAAC,CAAC;IAC1C,IAAID,MAAM,CAACE,MAAM,EAAE;MACjBD,OAAO,CAACE,aAAa,GAAG,UAAUH,MAAM,CAACE,MAAM,EAAE;IACnD;IAEA,MAAME,OAAO,GAAG,IAAIC,kBAAQ,CAAC;MAC3BC,OAAO,EAAEN,MAAM,CAACM,OAAO;MACvBC,QAAQ,EAAEP,MAAM,CAACO,QAAQ,IAAI,sBAAsB;MACnDN,OAAO;MACPO,QAAQ,EAAER,MAAM,CAACQ;IACnB,CAAC,CAAC;IAEF,KAAK,CAAC;MAAEJ;IAAQ,CAAC,CAAC;IAClB,IAAI,CAACK,KAAK,GAAGT,MAAM,CAACS,KAAK,IAAI,QAAQ;EACvC;;EAEA;AACF;AACA;EACEC,eAAeA,CAACC,KAAiC,EAA2B;IAC1E,MAAMC,QAAQ,GAAG,CAACD,KAAK,CAACC,QAAQ,IAAI,EAAE,EAAEC,GAAG,CAAEC,CAAC,KAAM;MAClDC,IAAI,EAAED,CAAC,CAACC,IAAI;MACZC,OAAO,EAAEF,CAAC,CAACG;IACb,CAAC,CAAC,CAAC;IAEHL,QAAQ,CAACM,IAAI,CAAC;MACZH,IAAI,EAAEJ,KAAK,CAACQ,OAAO,CAACJ,IAAI;MACxBC,OAAO,EAAEL,KAAK,CAACQ,OAAO,CAACF;IACzB,CAAC,CAAC;IAEF,OAAO;MACLR,KAAK,EAAEE,KAAK,CAACF,KAAK,IAAI,IAAI,CAACA,KAAK;MAChCG,QAAQ;MACRQ,MAAM,EAAE;IACV,CAAC;EACH;;EAEA;AACF;AACA;EACEC,qBAAqBA,CAACV,KAAiC,EAAe;IACpE,OAAO;MACLW,EAAE,EAAE5B,KAAK,CAAC,CAAC;MACXuB,IAAI,EAAEN,KAAK,CAACQ,OAAO,CAACF,IAAI;MACxBF,IAAI,EAAE,MAAM;MACZQ,SAAS,EAAE,IAAI5B,IAAI,CAAC,CAAC;MACrB6B,WAAW,EAAE,MAAM;MACnBC,MAAM,EAAE,OAAwB;MAChCC,MAAM,EAAGf,KAAK,CAACgB,KAAK,EAAED,MAAM,IAAehC,KAAK,CAAC;IACnD,CAAC;EACH;;EAEA;AACF;AACA;AACA;EACEkC,gBAAgBA,CACdC,IAAkD,EACrC;IACb,MAAM;MAAEC,MAAM;MAAEC;IAAQ,CAAC,GAAGF,IAAI;IAChC,MAAMG,GAAG,GAAGF,MAAM,CAACG,IAAI;;IAEvB;IACA,IAAID,GAAG,CAACE,IAAI,CAAC,CAAC,KAAK,QAAQ,EAAE;MAC3B,OAAO;QACL,IAAIH,OAAO,IAAI,IAAI,CAACI,oBAAoB,CAAC,CAAC,CAAC;QAC3CV,MAAM,EAAE;MACV,CAAC;IACH;IAEA,IAAI;MACF,MAAMW,MAAM,GAAGC,IAAI,CAACC,KAAK,CAACN,GAAG,CAAC;MAC9B,MAAMO,KAAK,GAAGH,MAAM,CAACI,OAAO,GAAG,CAAC,CAAC,EAAED,KAAK;MACxC,MAAMvB,OAAO,GAAGuB,KAAK,EAAEvB,OAAO,IAAI,EAAE;MACpC,MAAMyB,YAAY,GAAGL,MAAM,CAACI,OAAO,GAAG,CAAC,CAAC,EAAEE,aAAa;MAEvD,MAAMC,QAAQ,GAAGZ,OAAO,EAAEd,IAAI,IAAI,EAAE;MAEpC,OAAO;QACLK,EAAE,EAAES,OAAO,EAAET,EAAE,IAAI5B,KAAK,CAAC,CAAC;QAC1BuB,IAAI,EAAE0B,QAAQ,GAAG3B,OAAO;QACxBD,IAAI,EAAE,WAAW;QACjBQ,SAAS,EAAEQ,OAAO,EAAER,SAAS,IAAI,IAAI5B,IAAI,CAAC,CAAC;QAC3C6B,WAAW,EAAE,MAAM;QACnBC,MAAM,EAAEgB,YAAY,GAAG,SAAS,GAAG,UAAU;QAC7Cf,MAAM,EAAEK,OAAO,EAAEL,MAAM,IAAIhC,KAAK,CAAC;MACnC,CAAC;IACH,CAAC,CAAC,MAAM;MACN,OAAOqC,OAAO,IAAI,IAAI,CAACI,oBAAoB,CAAC,CAAC;IAC/C;EACF;EAEQA,oBAAoBA,CAAA,EAAgB;IAC1C,OAAO;MACLb,EAAE,EAAE5B,KAAK,CAAC,CAAC;MACXuB,IAAI,EAAE,EAAE;MACRF,IAAI,EAAE,WAAW;MACjBQ,SAAS,EAAE,IAAI5B,IAAI,CAAC,CAAC;MACrB6B,WAAW,EAAE,MAAM;MACnBC,MAAM,EAAE,UAAU;MAClBC,MAAM,EAAEhC,KAAK,CAAC;IAChB,CAAC;EACH;AACF;AAACkD,OAAA,CAAA/C,kBAAA,GAAAA,kBAAA","ignoreList":[]}
|