@unif/react-native-chat-sdk 1.2.2 → 1.3.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 +2 -5
- package/lib/commonjs/hooks/ChatProvider.js.map +1 -1
- package/lib/commonjs/hooks/useXChat.js.map +1 -1
- package/lib/commonjs/tools/XRequest.js +29 -3
- package/lib/commonjs/tools/XRequest.js.map +1 -1
- package/lib/commonjs/tools/XStream.js +12 -2
- package/lib/commonjs/tools/XStream.js.map +1 -1
- package/lib/module/hooks/ChatProvider.js +2 -5
- package/lib/module/hooks/ChatProvider.js.map +1 -1
- package/lib/module/hooks/useXChat.js.map +1 -1
- package/lib/module/tools/XRequest.js +29 -3
- package/lib/module/tools/XRequest.js.map +1 -1
- package/lib/module/tools/XStream.js +12 -2
- package/lib/module/tools/XStream.js.map +1 -1
- package/lib/typescript/commonjs/hooks/ChatProvider.d.ts +5 -6
- package/lib/typescript/commonjs/hooks/ChatProvider.d.ts.map +1 -1
- package/lib/typescript/commonjs/hooks/useXChat.d.ts +0 -2
- package/lib/typescript/commonjs/hooks/useXChat.d.ts.map +1 -1
- package/lib/typescript/commonjs/tools/XRequest.d.ts.map +1 -1
- package/lib/typescript/commonjs/tools/XStream.d.ts.map +1 -1
- package/lib/typescript/module/hooks/ChatProvider.d.ts +5 -6
- package/lib/typescript/module/hooks/ChatProvider.d.ts.map +1 -1
- package/lib/typescript/module/hooks/useXChat.d.ts +0 -2
- package/lib/typescript/module/hooks/useXChat.d.ts.map +1 -1
- package/lib/typescript/module/tools/XRequest.d.ts.map +1 -1
- package/lib/typescript/module/tools/XStream.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/hooks/ChatProvider.tsx +11 -18
- package/src/hooks/useXChat.ts +0 -2
- package/src/tools/XRequest.ts +34 -3
- package/src/tools/XStream.ts +22 -5
|
@@ -45,8 +45,6 @@ function ChatProvider(props) {
|
|
|
45
45
|
storage,
|
|
46
46
|
models = [],
|
|
47
47
|
defaultModel,
|
|
48
|
-
generateId,
|
|
49
|
-
requestPlaceholder,
|
|
50
48
|
requestFallback,
|
|
51
49
|
children
|
|
52
50
|
} = props;
|
|
@@ -57,10 +55,8 @@ function ChatProvider(props) {
|
|
|
57
55
|
const chatConfig = (0, _react.useMemo)(() => ({
|
|
58
56
|
conversationKey: conversations.activeId,
|
|
59
57
|
provider,
|
|
60
|
-
generateId,
|
|
61
|
-
requestPlaceholder,
|
|
62
58
|
requestFallback
|
|
63
|
-
}), [conversations.activeId, provider,
|
|
59
|
+
}), [conversations.activeId, provider, requestFallback]);
|
|
64
60
|
const chat = (0, _useXChat.useXChat)(chatConfig);
|
|
65
61
|
const model = (0, _useXModel.useXModel)({
|
|
66
62
|
models,
|
|
@@ -83,6 +79,7 @@ function ChatProvider(props) {
|
|
|
83
79
|
* 消费 ChatProvider 注入的聊天上下文
|
|
84
80
|
*
|
|
85
81
|
* @template Message - 消息类型,默认 ChatMessage
|
|
82
|
+
* @template Input - 请求参数类型,默认 RequestParams<Message>
|
|
86
83
|
*/
|
|
87
84
|
function useChatContext() {
|
|
88
85
|
const ctx = (0, _react.useContext)(ChatContext);
|
|
@@ -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","memoryStorage","ChatProvider","props","provider","storage","models","defaultModel","
|
|
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","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 +1 @@
|
|
|
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","catch","err","setError","message","state","useSyncExternalStore","subscribe","onRequest","useCallback","input","s","isRequesting","setRequesting","setSuggestions","localMessage","transformLocalMessage","addMessage","loadingMessageId","id","loadingMessage","text","role","createdAt","Date","messageType","turnId","loadingRemoved","removeLoading","removeMessage","sendMessage","onUpdate","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":";;;;;;AAMA,IAAAA,MAAA,GAAAC,OAAA;AAOA,IAAAC,UAAA,GAAAD,OAAA;AAbA;AACA;AACA;AACA;AACA;;
|
|
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","catch","err","setError","message","state","useSyncExternalStore","subscribe","onRequest","useCallback","input","s","isRequesting","setRequesting","setSuggestions","localMessage","transformLocalMessage","addMessage","loadingMessageId","id","loadingMessage","text","role","createdAt","Date","messageType","turnId","loadingRemoved","removeLoading","removeMessage","sendMessage","onUpdate","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":[]}
|
|
@@ -65,11 +65,21 @@ class XRequest {
|
|
|
65
65
|
console.log(TAG, `event #${eventCount} type=${output.event}`);
|
|
66
66
|
}
|
|
67
67
|
callbacks.onStream?.(output);
|
|
68
|
-
|
|
69
|
-
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// 无命名事件 — 判断是 SSEEnvelope 还是原始 JSON(如 OpenAI delta)
|
|
72
|
+
let parsed = null;
|
|
73
|
+
try {
|
|
74
|
+
parsed = JSON.parse(output.data);
|
|
75
|
+
} catch {
|
|
76
|
+
// 非 JSON 数据,原样传递
|
|
77
|
+
}
|
|
78
|
+
const isEnvelope = parsed && typeof parsed.event_id === 'string' && typeof parsed.seq === 'number';
|
|
79
|
+
if (isEnvelope) {
|
|
80
|
+
// SSEEnvelope 协议 → SSEParser 去重排序
|
|
70
81
|
const envelopes = this.parser.process(output.data);
|
|
71
82
|
for (const envelope of envelopes) {
|
|
72
|
-
// 心跳事件仅用于保持连接,不传给 UI
|
|
73
83
|
if (envelope.type === 'heartbeat') {
|
|
74
84
|
heartbeatCount++;
|
|
75
85
|
if (heartbeatCount <= 3 || heartbeatCount % 10 === 0) {
|
|
@@ -77,6 +87,15 @@ class XRequest {
|
|
|
77
87
|
}
|
|
78
88
|
continue;
|
|
79
89
|
}
|
|
90
|
+
// done 事件 → 触发 onSuccess 结束请求
|
|
91
|
+
if (envelope.type === 'done') {
|
|
92
|
+
callbacks.onStream?.({
|
|
93
|
+
data: JSON.stringify(envelope),
|
|
94
|
+
event: envelope.type
|
|
95
|
+
});
|
|
96
|
+
callbacks.onSuccess?.('');
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
80
99
|
eventCount++;
|
|
81
100
|
if (eventCount <= 3 || eventCount % 20 === 0) {
|
|
82
101
|
console.log(TAG, `event #${eventCount} type=${envelope.type} seq=${envelope.seq}`);
|
|
@@ -86,6 +105,13 @@ class XRequest {
|
|
|
86
105
|
event: envelope.type
|
|
87
106
|
});
|
|
88
107
|
}
|
|
108
|
+
} else {
|
|
109
|
+
// 原始 JSON(OpenAI 标准 delta)→ 直接传递,绕过 SSEParser
|
|
110
|
+
eventCount++;
|
|
111
|
+
if (eventCount <= 3 || eventCount % 20 === 0) {
|
|
112
|
+
console.log(TAG, `raw #${eventCount} len=${output.data.length}`);
|
|
113
|
+
}
|
|
114
|
+
callbacks.onStream?.(output);
|
|
89
115
|
}
|
|
90
116
|
},
|
|
91
117
|
onError: error => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_XStream","require","_SSEParser","TAG","XRequest","stream","parser","SSEParser","constructor","config","create","params","callbacks","abort","reset","baseURL","endpoint","headers","timeout","getToken","reqHeaders","token","Authorization","url","console","log","XStream","method","body","eventTypes","eventCount","heartbeatCount","connect","onMessage","output","event","onStream","
|
|
1
|
+
{"version":3,"names":["_XStream","require","_SSEParser","TAG","XRequest","stream","parser","SSEParser","constructor","config","create","params","callbacks","abort","reset","baseURL","endpoint","headers","timeout","getToken","reqHeaders","token","Authorization","url","console","log","XStream","method","body","eventTypes","eventCount","heartbeatCount","connect","onMessage","output","event","onStream","parsed","JSON","parse","data","isEnvelope","event_id","seq","envelopes","process","envelope","type","stringify","onSuccess","length","onError","error","message","onComplete","dispose","exports"],"sourceRoot":"../../../src","sources":["tools/XRequest.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -68,6 +68,15 @@ class XStream {
|
|
|
68
68
|
es.addEventListener('message', event => {
|
|
69
69
|
resetTimeout();
|
|
70
70
|
if (event.data) {
|
|
71
|
+
// 标准 SSE 结束标记(OpenAI / DeepSeek 等)
|
|
72
|
+
if (event.data === '[DONE]') {
|
|
73
|
+
const elapsed = ((Date.now() - this.connectTime) / 1000).toFixed(1);
|
|
74
|
+
console.log(TAG, `[DONE] msgs=${this.msgCount} elapsed=${elapsed}s`);
|
|
75
|
+
this.clearTimer();
|
|
76
|
+
callbacks.onComplete?.();
|
|
77
|
+
this.abort();
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
71
80
|
this.msgCount++;
|
|
72
81
|
if (this.msgCount <= 3 || this.msgCount % 20 === 0) {
|
|
73
82
|
console.log(TAG, `message #${this.msgCount} len=${event.data.length}`);
|
|
@@ -98,9 +107,10 @@ class XStream {
|
|
|
98
107
|
}
|
|
99
108
|
es.addEventListener('error', event => {
|
|
100
109
|
const elapsed = ((Date.now() - this.connectTime) / 1000).toFixed(1);
|
|
101
|
-
|
|
110
|
+
const message = 'message' in event ? event.message : 'SSE 连接错误';
|
|
111
|
+
console.error(TAG, `错误 msgs=${this.msgCount} elapsed=${elapsed}s`, message);
|
|
102
112
|
this.clearTimer();
|
|
103
|
-
callbacks.onError?.(new Error(
|
|
113
|
+
callbacks.onError?.(new Error(message));
|
|
104
114
|
});
|
|
105
115
|
}
|
|
106
116
|
abort() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TAG","defaultTransform","event","data","XStream","es","timeoutTimer","msgCount","connectTime","constructor","config","connect","callbacks","abort","Date","now","url","method","headers","body","timeout","transformStream","console","log","RNEventSource","require","default","JSON","stringify","undefined","resetTimeout","clearTimer","setTimeout","elapsed","toFixed","warn","onError","Error","addEventListener","onOpen","length","output","onMessage","eventTypes","customTypes","type","
|
|
1
|
+
{"version":3,"names":["TAG","defaultTransform","event","data","XStream","es","timeoutTimer","msgCount","connectTime","constructor","config","connect","callbacks","abort","Date","now","url","method","headers","body","timeout","transformStream","console","log","RNEventSource","require","default","JSON","stringify","undefined","resetTimeout","clearTimer","setTimeout","elapsed","toFixed","warn","onError","Error","addEventListener","onOpen","onComplete","length","output","onMessage","eventTypes","customTypes","type","message","error","close","dispose","clearTimeout","exports"],"sourceRoot":"../../../src","sources":["tools/XStream.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -39,8 +39,6 @@ export function ChatProvider(props) {
|
|
|
39
39
|
storage,
|
|
40
40
|
models = [],
|
|
41
41
|
defaultModel,
|
|
42
|
-
generateId,
|
|
43
|
-
requestPlaceholder,
|
|
44
42
|
requestFallback,
|
|
45
43
|
children
|
|
46
44
|
} = props;
|
|
@@ -51,10 +49,8 @@ export function ChatProvider(props) {
|
|
|
51
49
|
const chatConfig = useMemo(() => ({
|
|
52
50
|
conversationKey: conversations.activeId,
|
|
53
51
|
provider,
|
|
54
|
-
generateId,
|
|
55
|
-
requestPlaceholder,
|
|
56
52
|
requestFallback
|
|
57
|
-
}), [conversations.activeId, provider,
|
|
53
|
+
}), [conversations.activeId, provider, requestFallback]);
|
|
58
54
|
const chat = useXChat(chatConfig);
|
|
59
55
|
const model = useXModel({
|
|
60
56
|
models,
|
|
@@ -77,6 +73,7 @@ export function ChatProvider(props) {
|
|
|
77
73
|
* 消费 ChatProvider 注入的聊天上下文
|
|
78
74
|
*
|
|
79
75
|
* @template Message - 消息类型,默认 ChatMessage
|
|
76
|
+
* @template Input - 请求参数类型,默认 RequestParams<Message>
|
|
80
77
|
*/
|
|
81
78
|
export function useChatContext() {
|
|
82
79
|
const ctx = useContext(ChatContext);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","createContext","useContext","useMemo","useXChat","useXConversations","useXModel","jsx","_jsx","ChatContext","MemoryStorage","data","Map","getItem","key","get","setItem","value","set","removeItem","delete","memoryStorage","ChatProvider","props","provider","storage","models","defaultModel","
|
|
1
|
+
{"version":3,"names":["React","createContext","useContext","useMemo","useXChat","useXConversations","useXModel","jsx","_jsx","ChatContext","MemoryStorage","data","Map","getItem","key","get","setItem","value","set","removeItem","delete","memoryStorage","ChatProvider","props","provider","storage","models","defaultModel","requestFallback","children","convOptions","conversations","chatConfig","conversationKey","activeId","chat","model","Provider","useChatContext","ctx","Error"],"sourceRoot":"../../../src","sources":["hooks/ChatProvider.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,KAAK,IAAIC,aAAa,EAAEC,UAAU,EAAEC,OAAO,QAAQ,OAAO;AACjE,SAASC,QAAQ,QAAQ,eAAY;AACrC,SAASC,iBAAiB,QAAQ,wBAAqB;AACvD,SAASC,SAAS,QAAQ,gBAAa;;AA2BvC;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAsDA;AACA;AACA;AACA;AACA,MAAMC,WAAW,gBAAGR,aAAa,CAAmC,IAAI,CAAC;;AAEzE;AACA,MAAMS,aAAa,CAAwB;EACjCC,IAAI,GAAG,IAAIC,GAAG,CAAiB,CAAC;EAExC,MAAMC,OAAOA,CAACC,GAAW,EAAE;IACzB,OAAO,IAAI,CAACH,IAAI,CAACI,GAAG,CAACD,GAAG,CAAC,IAAI,IAAI;EACnC;EACA,MAAME,OAAOA,CAACF,GAAW,EAAEG,KAAa,EAAE;IACxC,IAAI,CAACN,IAAI,CAACO,GAAG,CAACJ,GAAG,EAAEG,KAAK,CAAC;EAC3B;EACA,MAAME,UAAUA,CAACL,GAAW,EAAE;IAC5B,IAAI,CAACH,IAAI,CAACS,MAAM,CAACN,GAAG,CAAC;EACvB;AACF;AAEA,MAAMO,aAAa,GAAG,IAAIX,aAAa,CAAC,CAAC;AAEzC,OAAO,SAASY,YAAYA,CAI1BC,KAAgD,EAAE;EAClD,MAAM;IACJC,QAAQ;IACRC,OAAO;IACPC,MAAM,GAAG,EAAE;IACXC,YAAY;IACZC,eAAe;IACfC;EACF,CAAC,GAAGN,KAAK;EAET,MAAMO,WAAqC,GAAG3B,OAAO,CACnD,OAAO;IAAEsB,OAAO,EAAEA,OAAO,IAAIJ;EAAc,CAAC,CAAC,EAC7C,CAACI,OAAO,CACV,CAAC;EACD,MAAMM,aAAa,GAAG1B,iBAAiB,CAACyB,WAAW,CAAC;EAEpD,MAAME,UAAkD,GAAG7B,OAAO,CAChE,OAAO;IACL8B,eAAe,EAAEF,aAAa,CAACG,QAAQ;IACvCV,QAAQ;IACRI;EACF,CAAC,CAAC,EACF,CAACG,aAAa,CAACG,QAAQ,EAAEV,QAAQ,EAAEI,eAAe,CACpD,CAAC;EAED,MAAMO,IAAoC,GAAG/B,QAAQ,CAAC4B,UAAU,CAAC;EAEjE,MAAMI,KAAK,GAAG9B,SAAS,CAAC;IAAEoB,MAAM;IAAEC;EAAa,CAAC,CAAC;;EAEjD;EACA,MAAMV,KAAK,GAAGd,OAAO,CACnB,OAAO;IACL,GAAGgC,IAAI;IACP,GAAGJ,aAAa;IAChB,GAAGK;EACL,CAAC,CAAC,EACF,CAACD,IAAI,EAAEJ,aAAa,EAAEK,KAAK,CAC7B,CAAC;EAED,oBACE5B,IAAA,CAACC,WAAW,CAAC4B,QAAQ;IAACpB,KAAK,EAAEA,KAAmC;IAAAY,QAAA,EAC7DA;EAAQ,CACW,CAAC;AAE3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASS,cAAcA,CAAA,EAGQ;EACpC,MAAMC,GAAG,GAAGrC,UAAU,CAACO,WAAW,CAAC;EACnC,IAAI,CAAC8B,GAAG,EAAE;IACR,MAAM,IAAIC,KAAK,CAAC,mDAAmD,CAAC;EACtE;EACA;EACA,OAAOD,GAAG;AACZ","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","useMemo","useRef","useSyncExternalStore","getOrCreateChatStore","getStatus","m","status","getExtra","extra","useXChat","config","provider","conversationKey","parser","defaultMessages","defaultMessagesLoadedRef","store","current","Array","isArray","getState","setMessages","then","msgs","catch","err","setError","message","state","subscribe","onRequest","input","s","isRequesting","setRequesting","setSuggestions","localMessage","transformLocalMessage","addMessage","loadingMessageId","id","loadingMessage","text","role","createdAt","Date","messageType","turnId","loadingRemoved","removeLoading","removeMessage","sendMessage","onUpdate","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":";;AAAA;AACA;AACA;AACA;AACA;;AAEA,SACEA,WAAW,EACXC,SAAS,EACTC,OAAO,EACPC,MAAM,EACNC,oBAAoB,QACf,OAAO;AACd,SAASC,oBAAoB,QAAQ,wBAAqB;
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useMemo","useRef","useSyncExternalStore","getOrCreateChatStore","getStatus","m","status","getExtra","extra","useXChat","config","provider","conversationKey","parser","defaultMessages","defaultMessagesLoadedRef","store","current","Array","isArray","getState","setMessages","then","msgs","catch","err","setError","message","state","subscribe","onRequest","input","s","isRequesting","setRequesting","setSuggestions","localMessage","transformLocalMessage","addMessage","loadingMessageId","id","loadingMessage","text","role","createdAt","Date","messageType","turnId","loadingRemoved","removeLoading","removeMessage","sendMessage","onUpdate","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":[]}
|
|
@@ -61,11 +61,21 @@ export class XRequest {
|
|
|
61
61
|
console.log(TAG, `event #${eventCount} type=${output.event}`);
|
|
62
62
|
}
|
|
63
63
|
callbacks.onStream?.(output);
|
|
64
|
-
|
|
65
|
-
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// 无命名事件 — 判断是 SSEEnvelope 还是原始 JSON(如 OpenAI delta)
|
|
68
|
+
let parsed = null;
|
|
69
|
+
try {
|
|
70
|
+
parsed = JSON.parse(output.data);
|
|
71
|
+
} catch {
|
|
72
|
+
// 非 JSON 数据,原样传递
|
|
73
|
+
}
|
|
74
|
+
const isEnvelope = parsed && typeof parsed.event_id === 'string' && typeof parsed.seq === 'number';
|
|
75
|
+
if (isEnvelope) {
|
|
76
|
+
// SSEEnvelope 协议 → SSEParser 去重排序
|
|
66
77
|
const envelopes = this.parser.process(output.data);
|
|
67
78
|
for (const envelope of envelopes) {
|
|
68
|
-
// 心跳事件仅用于保持连接,不传给 UI
|
|
69
79
|
if (envelope.type === 'heartbeat') {
|
|
70
80
|
heartbeatCount++;
|
|
71
81
|
if (heartbeatCount <= 3 || heartbeatCount % 10 === 0) {
|
|
@@ -73,6 +83,15 @@ export class XRequest {
|
|
|
73
83
|
}
|
|
74
84
|
continue;
|
|
75
85
|
}
|
|
86
|
+
// done 事件 → 触发 onSuccess 结束请求
|
|
87
|
+
if (envelope.type === 'done') {
|
|
88
|
+
callbacks.onStream?.({
|
|
89
|
+
data: JSON.stringify(envelope),
|
|
90
|
+
event: envelope.type
|
|
91
|
+
});
|
|
92
|
+
callbacks.onSuccess?.('');
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
76
95
|
eventCount++;
|
|
77
96
|
if (eventCount <= 3 || eventCount % 20 === 0) {
|
|
78
97
|
console.log(TAG, `event #${eventCount} type=${envelope.type} seq=${envelope.seq}`);
|
|
@@ -82,6 +101,13 @@ export class XRequest {
|
|
|
82
101
|
event: envelope.type
|
|
83
102
|
});
|
|
84
103
|
}
|
|
104
|
+
} else {
|
|
105
|
+
// 原始 JSON(OpenAI 标准 delta)→ 直接传递,绕过 SSEParser
|
|
106
|
+
eventCount++;
|
|
107
|
+
if (eventCount <= 3 || eventCount % 20 === 0) {
|
|
108
|
+
console.log(TAG, `raw #${eventCount} len=${output.data.length}`);
|
|
109
|
+
}
|
|
110
|
+
callbacks.onStream?.(output);
|
|
85
111
|
}
|
|
86
112
|
},
|
|
87
113
|
onError: error => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["XStream","SSEParser","TAG","XRequest","stream","parser","constructor","config","create","params","callbacks","abort","reset","baseURL","endpoint","headers","timeout","getToken","reqHeaders","token","Authorization","url","console","log","method","body","eventTypes","eventCount","heartbeatCount","connect","onMessage","output","event","onStream","
|
|
1
|
+
{"version":3,"names":["XStream","SSEParser","TAG","XRequest","stream","parser","constructor","config","create","params","callbacks","abort","reset","baseURL","endpoint","headers","timeout","getToken","reqHeaders","token","Authorization","url","console","log","method","body","eventTypes","eventCount","heartbeatCount","connect","onMessage","output","event","onStream","parsed","JSON","parse","data","isEnvelope","event_id","seq","envelopes","process","envelope","type","stringify","onSuccess","length","onError","error","message","onComplete","dispose"],"sourceRoot":"../../../src","sources":["tools/XRequest.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -64,6 +64,15 @@ export class XStream {
|
|
|
64
64
|
es.addEventListener('message', event => {
|
|
65
65
|
resetTimeout();
|
|
66
66
|
if (event.data) {
|
|
67
|
+
// 标准 SSE 结束标记(OpenAI / DeepSeek 等)
|
|
68
|
+
if (event.data === '[DONE]') {
|
|
69
|
+
const elapsed = ((Date.now() - this.connectTime) / 1000).toFixed(1);
|
|
70
|
+
console.log(TAG, `[DONE] msgs=${this.msgCount} elapsed=${elapsed}s`);
|
|
71
|
+
this.clearTimer();
|
|
72
|
+
callbacks.onComplete?.();
|
|
73
|
+
this.abort();
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
67
76
|
this.msgCount++;
|
|
68
77
|
if (this.msgCount <= 3 || this.msgCount % 20 === 0) {
|
|
69
78
|
console.log(TAG, `message #${this.msgCount} len=${event.data.length}`);
|
|
@@ -94,9 +103,10 @@ export class XStream {
|
|
|
94
103
|
}
|
|
95
104
|
es.addEventListener('error', event => {
|
|
96
105
|
const elapsed = ((Date.now() - this.connectTime) / 1000).toFixed(1);
|
|
97
|
-
|
|
106
|
+
const message = 'message' in event ? event.message : 'SSE 连接错误';
|
|
107
|
+
console.error(TAG, `错误 msgs=${this.msgCount} elapsed=${elapsed}s`, message);
|
|
98
108
|
this.clearTimer();
|
|
99
|
-
callbacks.onError?.(new Error(
|
|
109
|
+
callbacks.onError?.(new Error(message));
|
|
100
110
|
});
|
|
101
111
|
}
|
|
102
112
|
abort() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TAG","defaultTransform","event","data","XStream","es","timeoutTimer","msgCount","connectTime","constructor","config","connect","callbacks","abort","Date","now","url","method","headers","body","timeout","transformStream","console","log","RNEventSource","require","default","JSON","stringify","undefined","resetTimeout","clearTimer","setTimeout","elapsed","toFixed","warn","onError","Error","addEventListener","onOpen","length","output","onMessage","eventTypes","customTypes","type","
|
|
1
|
+
{"version":3,"names":["TAG","defaultTransform","event","data","XStream","es","timeoutTimer","msgCount","connectTime","constructor","config","connect","callbacks","abort","Date","now","url","method","headers","body","timeout","transformStream","console","log","RNEventSource","require","default","JSON","stringify","undefined","resetTimeout","clearTimer","setTimeout","elapsed","toFixed","warn","onError","Error","addEventListener","onOpen","onComplete","length","output","onMessage","eventTypes","customTypes","type","message","error","close","dispose","clearTimeout"],"sourceRoot":"../../../src","sources":["tools/XStream.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -18,21 +18,19 @@ export interface ChatProviderProps<Message extends StoreMessage = ChatMessage, I
|
|
|
18
18
|
storage?: ChatStorage;
|
|
19
19
|
models?: ModelInfo[];
|
|
20
20
|
defaultModel?: string;
|
|
21
|
-
generateId?: () => string;
|
|
22
|
-
requestPlaceholder?: (input: Input) => Message;
|
|
23
21
|
requestFallback?: (input: Input, info: {
|
|
24
22
|
error: Error;
|
|
25
23
|
}) => Message;
|
|
26
24
|
children: React.ReactNode;
|
|
27
25
|
}
|
|
28
26
|
/** Context 值类型 — 合并 useXChat + useXConversations + useXModel */
|
|
29
|
-
interface ChatContextValue<Message = ChatMessage
|
|
27
|
+
interface ChatContextValue<Message = ChatMessage, Input = RequestParams<Message>> {
|
|
30
28
|
messages: MessageInfo<Message>[];
|
|
31
29
|
isRequesting: boolean;
|
|
32
30
|
suggestions: SuggestionItem[];
|
|
33
31
|
error: string | null;
|
|
34
|
-
onRequest: (input:
|
|
35
|
-
onReload: (id: string, input:
|
|
32
|
+
onRequest: (input: Input) => void;
|
|
33
|
+
onReload: (id: string, input: Input) => void;
|
|
36
34
|
abort: () => void;
|
|
37
35
|
clearError: () => void;
|
|
38
36
|
setMessages: (messages: MessageInfo<Message>[] | ((prev: MessageInfo<Message>[]) => MessageInfo<Message>[])) => void;
|
|
@@ -59,7 +57,8 @@ export declare function ChatProvider<Message extends StoreMessage = ChatMessage,
|
|
|
59
57
|
* 消费 ChatProvider 注入的聊天上下文
|
|
60
58
|
*
|
|
61
59
|
* @template Message - 消息类型,默认 ChatMessage
|
|
60
|
+
* @template Input - 请求参数类型,默认 RequestParams<Message>
|
|
62
61
|
*/
|
|
63
|
-
export declare function useChatContext<Message = ChatMessage
|
|
62
|
+
export declare function useChatContext<Message = ChatMessage, Input = RequestParams<Message>>(): ChatContextValue<Message, Input>;
|
|
64
63
|
export {};
|
|
65
64
|
//# sourceMappingURL=ChatProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatProvider.d.ts","sourceRoot":"","sources":["../../../../src/hooks/ChatProvider.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAA6C,MAAM,OAAO,CAAC;AAIlE,OAAO,KAAK,EAAkC,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,KAAK,EAEV,cAAc,EACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAE9E,MAAM,WAAW,iBAAiB,CAChC,OAAO,SAAS,YAAY,GAAG,WAAW,EAC1C,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,EAC9B,MAAM,GAAG,SAAS;IAElB,QAAQ,EAAE,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACvD,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,
|
|
1
|
+
{"version":3,"file":"ChatProvider.d.ts","sourceRoot":"","sources":["../../../../src/hooks/ChatProvider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -21,11 +21,9 @@ export interface UseXChatConfig<Message = ChatMessage, Input = RequestParams<Mes
|
|
|
21
21
|
parser?: (message: Message) => Message[];
|
|
22
22
|
/** 初始消息(同步数组或异步 Promise) */
|
|
23
23
|
defaultMessages?: Message[] | (() => Promise<Message[]>);
|
|
24
|
-
requestPlaceholder?: (input: Input) => Message;
|
|
25
24
|
requestFallback?: (input: Input, info: {
|
|
26
25
|
error: Error;
|
|
27
26
|
}) => Message;
|
|
28
|
-
generateId?: () => string;
|
|
29
27
|
}
|
|
30
28
|
export interface UseXChatReturn<Message = ChatMessage, Input = RequestParams<Message>> {
|
|
31
29
|
messages: MessageInfo<Message>[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useXChat.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useXChat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,WAAW,WAAW,CAAC,OAAO,GAAG,WAAW;IAChD,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,cAAc,CAC7B,OAAO,GAAG,WAAW,EACrB,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,EAC9B,MAAM,GAAG,SAAS;IAElB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACvD,qBAAqB;IACrB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,EAAE,CAAC;IACzC,4BAA4B;IAC5B,eAAe,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACzD,
|
|
1
|
+
{"version":3,"file":"useXChat.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useXChat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,WAAW,WAAW,CAAC,OAAO,GAAG,WAAW;IAChD,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,cAAc,CAC7B,OAAO,GAAG,WAAW,EACrB,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,EAC9B,MAAM,GAAG,SAAS;IAElB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACvD,qBAAqB;IACrB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,EAAE,CAAC;IACzC,4BAA4B;IAC5B,eAAe,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACzD,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,OAAO,CAAC;CACrE;AAED,MAAM,WAAW,cAAc,CAC7B,OAAO,GAAG,WAAW,EACrB,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC;IAE9B,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;IACjC,aAAa;IACb,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC7C,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,WAAW,EAAE,CACX,QAAQ,EACJ,WAAW,CAAC,OAAO,CAAC,EAAE,GACtB,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,KAAK,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,KAC3D,IAAI,CAAC;IACV,UAAU,EAAE,CACV,EAAE,EAAE,MAAM,EACV,OAAO,EACH,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,GAC7B,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,KAC/D,IAAI,CAAC;IACV,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAcD,wBAAgB,QAAQ,CACtB,OAAO,SAAS,YAAY,GAAG,WAAW,EAC1C,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,EAC9B,MAAM,GAAG,SAAS,EAElB,MAAM,EAAE,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,GAC7C,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CA2PhC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XRequest.d.ts","sourceRoot":"","sources":["../../../../src/tools/XRequest.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAKnD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACxC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACtC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC7D,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,MAAM,CAAmB;gBAErB,MAAM,EAAE,cAAc;IAI5B,MAAM,CACV,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,SAAS,EAAE,iBAAiB,GAC3B,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"XRequest.d.ts","sourceRoot":"","sources":["../../../../src/tools/XRequest.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAKnD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACxC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACtC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC7D,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,MAAM,CAAmB;gBAErB,MAAM,EAAE,cAAc;IAI5B,MAAM,CACV,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,SAAS,EAAE,iBAAiB,GAC3B,OAAO,CAAC,IAAI,CAAC;IA+HhB,KAAK,IAAI,IAAI;IAOb,OAAO,IAAI,IAAI;CAGhB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XStream.d.ts","sourceRoot":"","sources":["../../../../src/tools/XStream.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"XStream.d.ts","sourceRoot":"","sources":["../../../../src/tools/XStream.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAInD,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,SAAS,CAAC;IACzE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACrC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAUD,qBAAa,OAAO;IAClB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,EAAE,CAA4B;IACtC,OAAO,CAAC,YAAY,CAA8C;IAClE,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,WAAW,CAAK;gBAEZ,MAAM,EAAE,aAAa;IAIjC,OAAO,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI;IAwG1C,KAAK,IAAI,IAAI;IAYb,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,UAAU;CAMnB"}
|
|
@@ -18,21 +18,19 @@ export interface ChatProviderProps<Message extends StoreMessage = ChatMessage, I
|
|
|
18
18
|
storage?: ChatStorage;
|
|
19
19
|
models?: ModelInfo[];
|
|
20
20
|
defaultModel?: string;
|
|
21
|
-
generateId?: () => string;
|
|
22
|
-
requestPlaceholder?: (input: Input) => Message;
|
|
23
21
|
requestFallback?: (input: Input, info: {
|
|
24
22
|
error: Error;
|
|
25
23
|
}) => Message;
|
|
26
24
|
children: React.ReactNode;
|
|
27
25
|
}
|
|
28
26
|
/** Context 值类型 — 合并 useXChat + useXConversations + useXModel */
|
|
29
|
-
interface ChatContextValue<Message = ChatMessage
|
|
27
|
+
interface ChatContextValue<Message = ChatMessage, Input = RequestParams<Message>> {
|
|
30
28
|
messages: MessageInfo<Message>[];
|
|
31
29
|
isRequesting: boolean;
|
|
32
30
|
suggestions: SuggestionItem[];
|
|
33
31
|
error: string | null;
|
|
34
|
-
onRequest: (input:
|
|
35
|
-
onReload: (id: string, input:
|
|
32
|
+
onRequest: (input: Input) => void;
|
|
33
|
+
onReload: (id: string, input: Input) => void;
|
|
36
34
|
abort: () => void;
|
|
37
35
|
clearError: () => void;
|
|
38
36
|
setMessages: (messages: MessageInfo<Message>[] | ((prev: MessageInfo<Message>[]) => MessageInfo<Message>[])) => void;
|
|
@@ -59,7 +57,8 @@ export declare function ChatProvider<Message extends StoreMessage = ChatMessage,
|
|
|
59
57
|
* 消费 ChatProvider 注入的聊天上下文
|
|
60
58
|
*
|
|
61
59
|
* @template Message - 消息类型,默认 ChatMessage
|
|
60
|
+
* @template Input - 请求参数类型,默认 RequestParams<Message>
|
|
62
61
|
*/
|
|
63
|
-
export declare function useChatContext<Message = ChatMessage
|
|
62
|
+
export declare function useChatContext<Message = ChatMessage, Input = RequestParams<Message>>(): ChatContextValue<Message, Input>;
|
|
64
63
|
export {};
|
|
65
64
|
//# sourceMappingURL=ChatProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatProvider.d.ts","sourceRoot":"","sources":["../../../../src/hooks/ChatProvider.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAA6C,MAAM,OAAO,CAAC;AAIlE,OAAO,KAAK,EAAkC,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,KAAK,EAEV,cAAc,EACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAE9E,MAAM,WAAW,iBAAiB,CAChC,OAAO,SAAS,YAAY,GAAG,WAAW,EAC1C,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,EAC9B,MAAM,GAAG,SAAS;IAElB,QAAQ,EAAE,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACvD,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,
|
|
1
|
+
{"version":3,"file":"ChatProvider.d.ts","sourceRoot":"","sources":["../../../../src/hooks/ChatProvider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -21,11 +21,9 @@ export interface UseXChatConfig<Message = ChatMessage, Input = RequestParams<Mes
|
|
|
21
21
|
parser?: (message: Message) => Message[];
|
|
22
22
|
/** 初始消息(同步数组或异步 Promise) */
|
|
23
23
|
defaultMessages?: Message[] | (() => Promise<Message[]>);
|
|
24
|
-
requestPlaceholder?: (input: Input) => Message;
|
|
25
24
|
requestFallback?: (input: Input, info: {
|
|
26
25
|
error: Error;
|
|
27
26
|
}) => Message;
|
|
28
|
-
generateId?: () => string;
|
|
29
27
|
}
|
|
30
28
|
export interface UseXChatReturn<Message = ChatMessage, Input = RequestParams<Message>> {
|
|
31
29
|
messages: MessageInfo<Message>[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useXChat.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useXChat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,WAAW,WAAW,CAAC,OAAO,GAAG,WAAW;IAChD,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,cAAc,CAC7B,OAAO,GAAG,WAAW,EACrB,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,EAC9B,MAAM,GAAG,SAAS;IAElB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACvD,qBAAqB;IACrB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,EAAE,CAAC;IACzC,4BAA4B;IAC5B,eAAe,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACzD,
|
|
1
|
+
{"version":3,"file":"useXChat.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useXChat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,WAAW,WAAW,CAAC,OAAO,GAAG,WAAW;IAChD,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,cAAc,CAC7B,OAAO,GAAG,WAAW,EACrB,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,EAC9B,MAAM,GAAG,SAAS;IAElB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACvD,qBAAqB;IACrB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,EAAE,CAAC;IACzC,4BAA4B;IAC5B,eAAe,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACzD,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,OAAO,CAAC;CACrE;AAED,MAAM,WAAW,cAAc,CAC7B,OAAO,GAAG,WAAW,EACrB,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC;IAE9B,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;IACjC,aAAa;IACb,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC7C,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,WAAW,EAAE,CACX,QAAQ,EACJ,WAAW,CAAC,OAAO,CAAC,EAAE,GACtB,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,KAAK,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,KAC3D,IAAI,CAAC;IACV,UAAU,EAAE,CACV,EAAE,EAAE,MAAM,EACV,OAAO,EACH,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,GAC7B,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,KAC/D,IAAI,CAAC;IACV,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAcD,wBAAgB,QAAQ,CACtB,OAAO,SAAS,YAAY,GAAG,WAAW,EAC1C,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,EAC9B,MAAM,GAAG,SAAS,EAElB,MAAM,EAAE,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,GAC7C,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CA2PhC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XRequest.d.ts","sourceRoot":"","sources":["../../../../src/tools/XRequest.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAKnD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACxC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACtC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC7D,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,MAAM,CAAmB;gBAErB,MAAM,EAAE,cAAc;IAI5B,MAAM,CACV,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,SAAS,EAAE,iBAAiB,GAC3B,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"XRequest.d.ts","sourceRoot":"","sources":["../../../../src/tools/XRequest.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAKnD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACxC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACtC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC7D,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,MAAM,CAAmB;gBAErB,MAAM,EAAE,cAAc;IAI5B,MAAM,CACV,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,SAAS,EAAE,iBAAiB,GAC3B,OAAO,CAAC,IAAI,CAAC;IA+HhB,KAAK,IAAI,IAAI;IAOb,OAAO,IAAI,IAAI;CAGhB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XStream.d.ts","sourceRoot":"","sources":["../../../../src/tools/XStream.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"XStream.d.ts","sourceRoot":"","sources":["../../../../src/tools/XStream.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAInD,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,SAAS,CAAC;IACzE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACrC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAUD,qBAAa,OAAO;IAClB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,EAAE,CAA4B;IACtC,OAAO,CAAC,YAAY,CAA8C;IAClE,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,WAAW,CAAK;gBAEZ,MAAM,EAAE,aAAa;IAIjC,OAAO,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI;IAwG1C,KAAK,IAAI,IAAI;IAYb,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,UAAU;CAMnB"}
|
package/package.json
CHANGED
|
@@ -30,21 +30,22 @@ export interface ChatProviderProps<
|
|
|
30
30
|
storage?: ChatStorage;
|
|
31
31
|
models?: ModelInfo[];
|
|
32
32
|
defaultModel?: string;
|
|
33
|
-
generateId?: () => string;
|
|
34
|
-
requestPlaceholder?: (input: Input) => Message;
|
|
35
33
|
requestFallback?: (input: Input, info: { error: Error }) => Message;
|
|
36
34
|
children: React.ReactNode;
|
|
37
35
|
}
|
|
38
36
|
|
|
39
37
|
/** Context 值类型 — 合并 useXChat + useXConversations + useXModel */
|
|
40
|
-
interface ChatContextValue<
|
|
38
|
+
interface ChatContextValue<
|
|
39
|
+
Message = ChatMessage,
|
|
40
|
+
Input = RequestParams<Message>,
|
|
41
|
+
> {
|
|
41
42
|
// useXChat
|
|
42
43
|
messages: MessageInfo<Message>[];
|
|
43
44
|
isRequesting: boolean;
|
|
44
45
|
suggestions: SuggestionItem[];
|
|
45
46
|
error: string | null;
|
|
46
|
-
onRequest: (input:
|
|
47
|
-
onReload: (id: string, input:
|
|
47
|
+
onRequest: (input: Input) => void;
|
|
48
|
+
onReload: (id: string, input: Input) => void;
|
|
48
49
|
abort: () => void;
|
|
49
50
|
clearError: () => void;
|
|
50
51
|
setMessages: (
|
|
@@ -120,8 +121,6 @@ export function ChatProvider<
|
|
|
120
121
|
storage,
|
|
121
122
|
models = [],
|
|
122
123
|
defaultModel,
|
|
123
|
-
generateId,
|
|
124
|
-
requestPlaceholder,
|
|
125
124
|
requestFallback,
|
|
126
125
|
children,
|
|
127
126
|
} = props;
|
|
@@ -136,17 +135,9 @@ export function ChatProvider<
|
|
|
136
135
|
() => ({
|
|
137
136
|
conversationKey: conversations.activeId,
|
|
138
137
|
provider,
|
|
139
|
-
generateId,
|
|
140
|
-
requestPlaceholder,
|
|
141
138
|
requestFallback,
|
|
142
139
|
}),
|
|
143
|
-
[
|
|
144
|
-
conversations.activeId,
|
|
145
|
-
provider,
|
|
146
|
-
generateId,
|
|
147
|
-
requestPlaceholder,
|
|
148
|
-
requestFallback,
|
|
149
|
-
]
|
|
140
|
+
[conversations.activeId, provider, requestFallback]
|
|
150
141
|
);
|
|
151
142
|
|
|
152
143
|
const chat: UseXChatReturn<Message, Input> = useXChat(chatConfig);
|
|
@@ -174,14 +165,16 @@ export function ChatProvider<
|
|
|
174
165
|
* 消费 ChatProvider 注入的聊天上下文
|
|
175
166
|
*
|
|
176
167
|
* @template Message - 消息类型,默认 ChatMessage
|
|
168
|
+
* @template Input - 请求参数类型,默认 RequestParams<Message>
|
|
177
169
|
*/
|
|
178
170
|
export function useChatContext<
|
|
179
171
|
Message = ChatMessage,
|
|
180
|
-
|
|
172
|
+
Input = RequestParams<Message>,
|
|
173
|
+
>(): ChatContextValue<Message, Input> {
|
|
181
174
|
const ctx = useContext(ChatContext);
|
|
182
175
|
if (!ctx) {
|
|
183
176
|
throw new Error('useChatContext must be used within a ChatProvider');
|
|
184
177
|
}
|
|
185
178
|
// Context 存储 unknown,读取时通过泛型窄化为具体类型
|
|
186
|
-
return ctx as ChatContextValue<Message>;
|
|
179
|
+
return ctx as ChatContextValue<Message, Input>;
|
|
187
180
|
}
|
package/src/hooks/useXChat.ts
CHANGED
|
@@ -36,9 +36,7 @@ export interface UseXChatConfig<
|
|
|
36
36
|
parser?: (message: Message) => Message[];
|
|
37
37
|
/** 初始消息(同步数组或异步 Promise) */
|
|
38
38
|
defaultMessages?: Message[] | (() => Promise<Message[]>);
|
|
39
|
-
requestPlaceholder?: (input: Input) => Message;
|
|
40
39
|
requestFallback?: (input: Input, info: { error: Error }) => Message;
|
|
41
|
-
generateId?: () => string;
|
|
42
40
|
}
|
|
43
41
|
|
|
44
42
|
export interface UseXChatReturn<
|
package/src/tools/XRequest.ts
CHANGED
|
@@ -89,11 +89,26 @@ export class XRequest {
|
|
|
89
89
|
console.log(TAG, `event #${eventCount} type=${output.event}`);
|
|
90
90
|
}
|
|
91
91
|
callbacks.onStream?.(output);
|
|
92
|
-
|
|
93
|
-
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// 无命名事件 — 判断是 SSEEnvelope 还是原始 JSON(如 OpenAI delta)
|
|
96
|
+
let parsed: Record<string, unknown> | null = null;
|
|
97
|
+
try {
|
|
98
|
+
parsed = JSON.parse(output.data);
|
|
99
|
+
} catch {
|
|
100
|
+
// 非 JSON 数据,原样传递
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
const isEnvelope =
|
|
104
|
+
parsed &&
|
|
105
|
+
typeof parsed.event_id === 'string' &&
|
|
106
|
+
typeof parsed.seq === 'number';
|
|
107
|
+
|
|
108
|
+
if (isEnvelope) {
|
|
109
|
+
// SSEEnvelope 协议 → SSEParser 去重排序
|
|
94
110
|
const envelopes: SSEEnvelope[] = this.parser.process(output.data);
|
|
95
111
|
for (const envelope of envelopes) {
|
|
96
|
-
// 心跳事件仅用于保持连接,不传给 UI
|
|
97
112
|
if (envelope.type === 'heartbeat') {
|
|
98
113
|
heartbeatCount++;
|
|
99
114
|
if (heartbeatCount <= 3 || heartbeatCount % 10 === 0) {
|
|
@@ -101,6 +116,15 @@ export class XRequest {
|
|
|
101
116
|
}
|
|
102
117
|
continue;
|
|
103
118
|
}
|
|
119
|
+
// done 事件 → 触发 onSuccess 结束请求
|
|
120
|
+
if (envelope.type === 'done') {
|
|
121
|
+
callbacks.onStream?.({
|
|
122
|
+
data: JSON.stringify(envelope),
|
|
123
|
+
event: envelope.type,
|
|
124
|
+
});
|
|
125
|
+
callbacks.onSuccess?.('');
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
104
128
|
eventCount++;
|
|
105
129
|
if (eventCount <= 3 || eventCount % 20 === 0) {
|
|
106
130
|
console.log(
|
|
@@ -113,6 +137,13 @@ export class XRequest {
|
|
|
113
137
|
event: envelope.type,
|
|
114
138
|
});
|
|
115
139
|
}
|
|
140
|
+
} else {
|
|
141
|
+
// 原始 JSON(OpenAI 标准 delta)→ 直接传递,绕过 SSEParser
|
|
142
|
+
eventCount++;
|
|
143
|
+
if (eventCount <= 3 || eventCount % 20 === 0) {
|
|
144
|
+
console.log(TAG, `raw #${eventCount} len=${output.data.length}`);
|
|
145
|
+
}
|
|
146
|
+
callbacks.onStream?.(output);
|
|
116
147
|
}
|
|
117
148
|
},
|
|
118
149
|
onError: (error: Error) => {
|
package/src/tools/XStream.ts
CHANGED
|
@@ -5,6 +5,13 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import type EventSource from 'react-native-sse';
|
|
8
|
+
import type {
|
|
9
|
+
MessageEvent,
|
|
10
|
+
ErrorEvent,
|
|
11
|
+
TimeoutEvent,
|
|
12
|
+
ExceptionEvent,
|
|
13
|
+
CustomEvent,
|
|
14
|
+
} from 'react-native-sse';
|
|
8
15
|
import type { SSEOutput } from '../types/provider';
|
|
9
16
|
|
|
10
17
|
const TAG = '[XStream]';
|
|
@@ -93,9 +100,18 @@ export class XStream {
|
|
|
93
100
|
callbacks.onOpen?.();
|
|
94
101
|
});
|
|
95
102
|
|
|
96
|
-
es.addEventListener('message', (event:
|
|
103
|
+
es.addEventListener('message', (event: MessageEvent) => {
|
|
97
104
|
resetTimeout();
|
|
98
105
|
if (event.data) {
|
|
106
|
+
// 标准 SSE 结束标记(OpenAI / DeepSeek 等)
|
|
107
|
+
if (event.data === '[DONE]') {
|
|
108
|
+
const elapsed = ((Date.now() - this.connectTime) / 1000).toFixed(1);
|
|
109
|
+
console.log(TAG, `[DONE] msgs=${this.msgCount} elapsed=${elapsed}s`);
|
|
110
|
+
this.clearTimer();
|
|
111
|
+
callbacks.onComplete?.();
|
|
112
|
+
this.abort();
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
99
115
|
this.msgCount++;
|
|
100
116
|
if (this.msgCount <= 3 || this.msgCount % 20 === 0) {
|
|
101
117
|
console.log(
|
|
@@ -111,7 +127,7 @@ export class XStream {
|
|
|
111
127
|
// 注册自定义命名 SSE 事件类型监听器
|
|
112
128
|
const { eventTypes: customTypes = [] } = this.config;
|
|
113
129
|
for (const type of customTypes) {
|
|
114
|
-
es.addEventListener(type, (event:
|
|
130
|
+
es.addEventListener(type, (event: CustomEvent<string>) => {
|
|
115
131
|
resetTimeout();
|
|
116
132
|
if (event.data) {
|
|
117
133
|
this.msgCount++;
|
|
@@ -126,15 +142,16 @@ export class XStream {
|
|
|
126
142
|
|
|
127
143
|
es.addEventListener(
|
|
128
144
|
'error',
|
|
129
|
-
(event:
|
|
145
|
+
(event: ErrorEvent | TimeoutEvent | ExceptionEvent) => {
|
|
130
146
|
const elapsed = ((Date.now() - this.connectTime) / 1000).toFixed(1);
|
|
147
|
+
const message = 'message' in event ? event.message : 'SSE 连接错误';
|
|
131
148
|
console.error(
|
|
132
149
|
TAG,
|
|
133
150
|
`错误 msgs=${this.msgCount} elapsed=${elapsed}s`,
|
|
134
|
-
|
|
151
|
+
message
|
|
135
152
|
);
|
|
136
153
|
this.clearTimer();
|
|
137
|
-
callbacks.onError?.(new Error(
|
|
154
|
+
callbacks.onError?.(new Error(message));
|
|
138
155
|
}
|
|
139
156
|
);
|
|
140
157
|
}
|