@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.
Files changed (67) hide show
  1. package/lib/commonjs/hooks/ChatProvider.js +26 -8
  2. package/lib/commonjs/hooks/ChatProvider.js.map +1 -1
  3. package/lib/commonjs/hooks/useXChat.js +76 -32
  4. package/lib/commonjs/hooks/useXChat.js.map +1 -1
  5. package/lib/commonjs/index.js.map +1 -1
  6. package/lib/commonjs/providers/AbstractChatProvider.js +8 -4
  7. package/lib/commonjs/providers/AbstractChatProvider.js.map +1 -1
  8. package/lib/commonjs/providers/DeepSeekChatProvider.js +7 -4
  9. package/lib/commonjs/providers/DeepSeekChatProvider.js.map +1 -1
  10. package/lib/commonjs/providers/OpenAIChatProvider.js +6 -1
  11. package/lib/commonjs/providers/OpenAIChatProvider.js.map +1 -1
  12. package/lib/commonjs/stores/chatStore.js +83 -70
  13. package/lib/commonjs/stores/chatStore.js.map +1 -1
  14. package/lib/module/hooks/ChatProvider.js +26 -8
  15. package/lib/module/hooks/ChatProvider.js.map +1 -1
  16. package/lib/module/hooks/useXChat.js +77 -33
  17. package/lib/module/hooks/useXChat.js.map +1 -1
  18. package/lib/module/index.js.map +1 -1
  19. package/lib/module/providers/AbstractChatProvider.js +8 -4
  20. package/lib/module/providers/AbstractChatProvider.js.map +1 -1
  21. package/lib/module/providers/DeepSeekChatProvider.js +7 -4
  22. package/lib/module/providers/DeepSeekChatProvider.js.map +1 -1
  23. package/lib/module/providers/OpenAIChatProvider.js +6 -1
  24. package/lib/module/providers/OpenAIChatProvider.js.map +1 -1
  25. package/lib/module/stores/chatStore.js +83 -68
  26. package/lib/module/stores/chatStore.js.map +1 -1
  27. package/lib/typescript/commonjs/hooks/ChatProvider.d.ts +10 -3
  28. package/lib/typescript/commonjs/hooks/ChatProvider.d.ts.map +1 -1
  29. package/lib/typescript/commonjs/hooks/useXChat.d.ts +10 -4
  30. package/lib/typescript/commonjs/hooks/useXChat.d.ts.map +1 -1
  31. package/lib/typescript/commonjs/index.d.ts +2 -1
  32. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  33. package/lib/typescript/commonjs/providers/AbstractChatProvider.d.ts +6 -6
  34. package/lib/typescript/commonjs/providers/AbstractChatProvider.d.ts.map +1 -1
  35. package/lib/typescript/commonjs/providers/DeepSeekChatProvider.d.ts +3 -2
  36. package/lib/typescript/commonjs/providers/DeepSeekChatProvider.d.ts.map +1 -1
  37. package/lib/typescript/commonjs/providers/OpenAIChatProvider.d.ts +3 -2
  38. package/lib/typescript/commonjs/providers/OpenAIChatProvider.d.ts.map +1 -1
  39. package/lib/typescript/commonjs/stores/chatStore.d.ts +24 -14
  40. package/lib/typescript/commonjs/stores/chatStore.d.ts.map +1 -1
  41. package/lib/typescript/commonjs/types/provider.d.ts +14 -1
  42. package/lib/typescript/commonjs/types/provider.d.ts.map +1 -1
  43. package/lib/typescript/module/hooks/ChatProvider.d.ts +10 -3
  44. package/lib/typescript/module/hooks/ChatProvider.d.ts.map +1 -1
  45. package/lib/typescript/module/hooks/useXChat.d.ts +10 -4
  46. package/lib/typescript/module/hooks/useXChat.d.ts.map +1 -1
  47. package/lib/typescript/module/index.d.ts +2 -1
  48. package/lib/typescript/module/index.d.ts.map +1 -1
  49. package/lib/typescript/module/providers/AbstractChatProvider.d.ts +6 -6
  50. package/lib/typescript/module/providers/AbstractChatProvider.d.ts.map +1 -1
  51. package/lib/typescript/module/providers/DeepSeekChatProvider.d.ts +3 -2
  52. package/lib/typescript/module/providers/DeepSeekChatProvider.d.ts.map +1 -1
  53. package/lib/typescript/module/providers/OpenAIChatProvider.d.ts +3 -2
  54. package/lib/typescript/module/providers/OpenAIChatProvider.d.ts.map +1 -1
  55. package/lib/typescript/module/stores/chatStore.d.ts +24 -14
  56. package/lib/typescript/module/stores/chatStore.d.ts.map +1 -1
  57. package/lib/typescript/module/types/provider.d.ts +14 -1
  58. package/lib/typescript/module/types/provider.d.ts.map +1 -1
  59. package/package.json +1 -1
  60. package/src/hooks/ChatProvider.tsx +34 -17
  61. package/src/hooks/useXChat.ts +111 -61
  62. package/src/index.ts +3 -0
  63. package/src/providers/AbstractChatProvider.ts +17 -9
  64. package/src/providers/DeepSeekChatProvider.ts +5 -6
  65. package/src/providers/OpenAIChatProvider.ts +10 -2
  66. package/src/stores/chatStore.ts +53 -41
  67. 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
- const memoryStorage = {
22
- _data: new Map(),
27
+
28
+ /** 内存存储实现,用于未传入 storage 时的默认行为 */
29
+ class MemoryStorage {
30
+ data = new Map();
23
31
  async getItem(key) {
24
- return this._data.get(key) ?? null;
25
- },
32
+ return this.data.get(key) ?? null;
33
+ }
26
34
  async setItem(key, value) {
27
- this._data.set(key, value);
28
- },
35
+ this.data.set(key, value);
36
+ }
29
37
  async removeItem(key) {
30
- this._data.delete(key);
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","memoryStorage","_data","Map","getItem","key","setItem","value","removeItem","delete","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":[]}
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 — 聊天操作 hook
10
+ * useXChat — 聊天操作 Hook
11
11
  *
12
- * 消费 ChatProvider,输出可渲染的 messages 列表
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
- // 使用 useSyncExternalStore 订阅 zustand store 变化
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
- const localChatMessage = localMessage;
32
- store.getState().addMessage(localChatMessage);
54
+ store.getState().addMessage(localMessage);
33
55
 
34
- // 注入 loading 占位消息(显示"正在思考"动画)
35
- const loadingMessageId = `loading-${localChatMessage.id}`;
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: localChatMessage.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
- ...m,
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.status === 'loading');
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
- ...m,
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.map(m => ({
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.status,
154
- extra: m.extra
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
- const messages = state.messages.map(m => ({
176
- id: m.id,
177
- message: m,
178
- status: m.status,
179
- extra: m.extra
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
- requesting: state.isRequesting,
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","state","useSyncExternalStore","subscribe","getState","onRequest","useCallback","input","s","isRequesting","setRequesting","setError","setSuggestions","localMessage","transformLocalMessage","localChatMessage","addMessage","loadingMessageId","id","loadingMessage","text","role","createdAt","Date","messageType","status","turnId","loadingRemoved","removeLoading","removeMessage","sendMessage","onUpdate","message","upsertMessage","onSuccess","m","onError","error","requestFallback","fallbackMsg","onSuggestion","items","abort","msgs","messages","loadingMsg","find","clearError","onReload","targetIdx","findIndex","setMessages","messagesOrFn","current","currentInfos","map","extra","next","info","setMessage","partialOrFn","partial","updated","undefined","Object","assign","useEffect","requesting","suggestions"],"sourceRoot":"../../../src","sources":["hooks/useXChat.ts"],"mappings":"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","ignoreList":[]}
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,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;AAKA,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":[]}
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
- * 3 个抽象方法:transformParams / transformLocalMessage / transformMessage
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
- * useXChat.onRequest() 传入的参数转换为 XRequest 需要的格式
20
+ * 新签名:接收 options 参数(含 messages 等上下文)
21
21
  */
22
22
 
23
23
  /**
@@ -27,7 +27,7 @@ class AbstractChatProvider {
27
27
 
28
28
  /**
29
29
  * 转换响应消息
30
- * XRequest 返回的流数据转换为 ChatMessage(用于 assistant 消息渲染)
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
- currentMessage = this.transformMessage(chunk, currentMessage);
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;;AAUO,MAAeA,oBAAoB,CAIxC;EAGAC,WAAWA,CAACC,MAA6B,EAAE;IACzC,IAAI,CAACC,OAAO,GAAGD,MAAM,CAACC,OAAO;EAC/B;;EAEA;AACF;AACA;AACA;;EAGE;AACF;AACA;AACA;;EAGE;AACF;AACA;AACA;;EAGE;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;QACnBH,cAAc,GAAG,IAAI,CAACI,gBAAgB,CACpCD,KAAK,EACLH,cACF,CAAC;QACDH,SAAS,CAACQ,QAAQ,CAACL,cAAc,CAAC;MACpC,CAAC;MACDM,SAAS,EAAEA,CAAA,KAAM;QACf,IAAIN,cAAc,EAAE;UAClBH,SAAS,CAACS,SAAS,CAACN,cAAc,CAAC;QACrC;MACF,CAAC;MACDO,OAAO,EAAGC,KAAK,IAAK;QAClBX,SAAS,CAACU,OAAO,CAAC,IAAIE,KAAK,CAACD,KAAK,CAACE,OAAO,CAAC,CAAC;MAC7C;IACF,CAAC;IAED,IAAI,CAAChB,OAAO,CAACiB,MAAM,CAACb,MAAM,EAAEG,gBAAgB,CAAC;EAC/C;;EAEA;AACF;AACA;EACEW,KAAKA,CAAA,EAAS;IACZ,IAAI,CAAClB,OAAO,CAACkB,KAAK,CAAC,CAAC;EACtB;AACF;AAACC,OAAA,CAAAtB,oBAAA,GAAAA,oBAAA","ignoreList":[]}
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(output, current) {
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(output, current);
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":"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","ignoreList":[]}
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(output, current) {
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":"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","ignoreList":[]}
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":"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","ignoreList":[]}