@unif/react-native-chat-sdk 0.4.1 → 0.5.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 +6 -5
- package/lib/commonjs/hooks/ChatProvider.js.map +1 -1
- package/lib/commonjs/hooks/useXChat.js +3 -11
- package/lib/commonjs/hooks/useXChat.js.map +1 -1
- package/lib/commonjs/hooks/useXConversations.js +24 -4
- package/lib/commonjs/hooks/useXConversations.js.map +1 -1
- package/lib/commonjs/hooks/useXModel.js.map +1 -1
- package/lib/commonjs/index.js +19 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/providers/AbstractChatProvider.js.map +1 -1
- package/lib/commonjs/providers/DeepSeekChatProvider.js.map +1 -1
- package/lib/commonjs/providers/OpenAIChatProvider.js +1 -1
- package/lib/commonjs/providers/OpenAIChatProvider.js.map +1 -1
- package/lib/commonjs/stores/chatStore.js +19 -0
- package/lib/commonjs/stores/chatStore.js.map +1 -1
- package/lib/commonjs/stores/historyStore.js +26 -0
- package/lib/commonjs/stores/historyStore.js.map +1 -1
- package/lib/commonjs/tools/XRequest.js +1 -1
- package/lib/commonjs/tools/XRequest.js.map +1 -1
- package/lib/commonjs/tools/XStream.js +0 -1
- package/lib/commonjs/tools/XStream.js.map +1 -1
- package/lib/module/hooks/ChatProvider.js +6 -5
- package/lib/module/hooks/ChatProvider.js.map +1 -1
- package/lib/module/hooks/useXChat.js +5 -13
- package/lib/module/hooks/useXChat.js.map +1 -1
- package/lib/module/hooks/useXConversations.js +24 -4
- package/lib/module/hooks/useXConversations.js.map +1 -1
- package/lib/module/hooks/useXModel.js.map +1 -1
- package/lib/module/index.js +2 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/providers/AbstractChatProvider.js.map +1 -1
- package/lib/module/providers/DeepSeekChatProvider.js.map +1 -1
- package/lib/module/providers/OpenAIChatProvider.js +1 -1
- package/lib/module/providers/OpenAIChatProvider.js.map +1 -1
- package/lib/module/stores/chatStore.js +16 -0
- package/lib/module/stores/chatStore.js.map +1 -1
- package/lib/module/stores/historyStore.js +26 -0
- package/lib/module/stores/historyStore.js.map +1 -1
- package/lib/module/stores/modelStore.js.map +1 -1
- package/lib/module/stores/sessionStore.js.map +1 -1
- package/lib/module/tools/XRequest.js +1 -1
- package/lib/module/tools/XRequest.js.map +1 -1
- package/lib/module/tools/XStream.js +0 -1
- package/lib/module/tools/XStream.js.map +1 -1
- package/lib/typescript/commonjs/hooks/ChatProvider.d.ts +3 -2
- package/lib/typescript/commonjs/hooks/ChatProvider.d.ts.map +1 -1
- package/lib/typescript/commonjs/hooks/useXChat.d.ts +1 -2
- package/lib/typescript/commonjs/hooks/useXChat.d.ts.map +1 -1
- package/lib/typescript/commonjs/hooks/useXConversations.d.ts +3 -0
- package/lib/typescript/commonjs/hooks/useXConversations.d.ts.map +1 -1
- package/lib/typescript/commonjs/index.d.ts +3 -2
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/providers/AbstractChatProvider.d.ts.map +1 -1
- package/lib/typescript/commonjs/providers/DeepSeekChatProvider.d.ts.map +1 -1
- package/lib/typescript/commonjs/providers/OpenAIChatProvider.d.ts.map +1 -1
- package/lib/typescript/commonjs/stores/chatStore.d.ts +3 -0
- package/lib/typescript/commonjs/stores/chatStore.d.ts.map +1 -1
- package/lib/typescript/commonjs/stores/historyStore.d.ts +1 -0
- package/lib/typescript/commonjs/stores/historyStore.d.ts.map +1 -1
- package/lib/typescript/commonjs/tools/SSEParser.d.ts.map +1 -1
- package/lib/typescript/commonjs/tools/XStream.d.ts.map +1 -1
- package/lib/typescript/commonjs/types/provider.d.ts.map +1 -1
- package/lib/typescript/module/hooks/ChatProvider.d.ts +3 -2
- package/lib/typescript/module/hooks/ChatProvider.d.ts.map +1 -1
- package/lib/typescript/module/hooks/useXChat.d.ts +1 -2
- package/lib/typescript/module/hooks/useXChat.d.ts.map +1 -1
- package/lib/typescript/module/hooks/useXConversations.d.ts +3 -0
- package/lib/typescript/module/hooks/useXConversations.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts +3 -2
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/providers/AbstractChatProvider.d.ts.map +1 -1
- package/lib/typescript/module/providers/DeepSeekChatProvider.d.ts.map +1 -1
- package/lib/typescript/module/providers/OpenAIChatProvider.d.ts.map +1 -1
- package/lib/typescript/module/stores/chatStore.d.ts +3 -0
- package/lib/typescript/module/stores/chatStore.d.ts.map +1 -1
- package/lib/typescript/module/stores/historyStore.d.ts +1 -0
- package/lib/typescript/module/stores/historyStore.d.ts.map +1 -1
- package/lib/typescript/module/tools/SSEParser.d.ts.map +1 -1
- package/lib/typescript/module/tools/XStream.d.ts.map +1 -1
- package/lib/typescript/module/types/provider.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/hooks/ChatProvider.tsx +24 -12
- package/src/hooks/useXChat.ts +11 -23
- package/src/hooks/useXConversations.ts +39 -10
- package/src/hooks/useXModel.ts +2 -2
- package/src/index.ts +31 -19
- package/src/providers/AbstractChatProvider.ts +7 -3
- package/src/providers/DeepSeekChatProvider.ts +4 -7
- package/src/providers/OpenAIChatProvider.ts +6 -6
- package/src/stores/chatStore.ts +29 -10
- package/src/stores/historyStore.ts +45 -8
- package/src/stores/modelStore.ts +1 -1
- package/src/stores/sessionStore.ts +1 -1
- package/src/tools/SSEParser.ts +1 -1
- package/src/tools/XRequest.ts +1 -1
- package/src/tools/XStream.ts +0 -1
- package/src/types/provider.ts +2 -2
- package/lib/commonjs/index.md +0 -188
- package/lib/module/index.md +0 -188
- package/src/index.md +0 -188
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SSEParser.d.ts","sourceRoot":"","sources":["../../../../src/tools/SSEParser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"SSEParser.d.ts","sourceRoot":"","sources":["../../../../src/tools/SSEParser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,qBAAa,SAAS;IACpB,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,OAAO,CAAK;IAEpB,KAAK,IAAI,IAAI;IAMb;;;OAGG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,EAAE;CA2BpC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XStream.d.ts","sourceRoot":"","sources":["../../../../src/tools/XStream.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,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;CAC1E;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;
|
|
1
|
+
{"version":3,"file":"XStream.d.ts","sourceRoot":"","sources":["../../../../src/tools/XStream.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,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;CAC1E;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;IA8E1C,KAAK,IAAI,IAAI;IAYb,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,UAAU;CAMnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../../src/types/provider.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../../src/types/provider.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,WAAW;IAC5C,OAAO,EAAE,CAAC,CAAC;IACX,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB,CAAC,OAAO,GAAG,WAAW;IACtD,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAChC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,IAAI,CAAC;CAClD"}
|
|
@@ -32,18 +32,19 @@ interface ChatContextValue<Message = ChatMessage> {
|
|
|
32
32
|
onRequest: (input: unknown) => void;
|
|
33
33
|
onReload: (id: string, input: unknown) => void;
|
|
34
34
|
abort: () => void;
|
|
35
|
-
resetChat: () => void;
|
|
36
|
-
loadSession: (messages: ChatMessage[]) => void;
|
|
37
35
|
clearError: () => void;
|
|
38
36
|
setMessages: (messages: MessageInfo<Message>[] | ((prev: MessageInfo<Message>[]) => MessageInfo<Message>[])) => void;
|
|
39
37
|
setMessage: (id: string, partial: Partial<MessageInfo<Message>> | ((msg: MessageInfo<Message>) => Partial<MessageInfo<Message>>)) => void;
|
|
40
38
|
removeMessage: (id: string) => void;
|
|
41
39
|
sessions: SessionSummary[];
|
|
42
40
|
activeId: string;
|
|
41
|
+
setActiveId: (id: string) => void;
|
|
43
42
|
switchSession: (id: string) => Promise<Message[]>;
|
|
44
43
|
newSession: () => void;
|
|
45
44
|
deleteSession: (id: string) => Promise<void>;
|
|
46
45
|
archiveSession: (id: string, title: string, messages: Message[]) => Promise<void>;
|
|
46
|
+
saveSession: (id: string, title: string, messages: Message[]) => Promise<void>;
|
|
47
|
+
loadSessionMessages: (id: string) => Promise<Message[]>;
|
|
47
48
|
updateSession: (id: string, data: Partial<{
|
|
48
49
|
title: string;
|
|
49
50
|
}>) => void;
|
|
@@ -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,EAAkB,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9D,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,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAE9E,MAAM,WAAW,iBAAiB,CAChC,OAAO,GAAG,WAAW,EACrB,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,UAAU,CAAC,EAAE,MAAM,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC;IAC/C,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,OAAO,CAAC;IACpE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,UAAU,gBAAgB,CAAC,OAAO,GAAG,WAAW;IAE9C,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACpC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,
|
|
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,EAAkB,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9D,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,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAE9E,MAAM,WAAW,iBAAiB,CAChC,OAAO,GAAG,WAAW,EACrB,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,UAAU,CAAC,EAAE,MAAM,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC;IAC/C,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,OAAO,CAAC;IACpE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,UAAU,gBAAgB,CAAC,OAAO,GAAG,WAAW;IAE9C,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACpC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,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;IAEpC,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAClD,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,cAAc,EAAE,CACd,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,OAAO,EAAE,KAChB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,WAAW,EAAE,CACX,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,OAAO,EAAE,KAChB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACxD,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,KAAK,IAAI,CAAC;IAEtE,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAiBD,wBAAgB,YAAY,CAC1B,OAAO,GAAG,WAAW,EACrB,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,EAC9B,MAAM,GAAG,SAAS,EAClB,KAAK,EAAE,iBAAiB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,2CAqDjD;AAED,wBAAgB,cAAc,CAC5B,OAAO,GAAG,WAAW,KAClB,gBAAgB,CAAC,OAAO,CAAC,CAM7B"}
|
|
@@ -14,6 +14,7 @@ export interface MessageInfo<Message = ChatMessage> {
|
|
|
14
14
|
extra?: Record<string, unknown>;
|
|
15
15
|
}
|
|
16
16
|
export interface UseXChatConfig<Message = ChatMessage, Input = RequestParams<Message>, Output = SSEOutput> {
|
|
17
|
+
conversationKey: string;
|
|
17
18
|
provider: AbstractChatProvider<Message, Input, Output>;
|
|
18
19
|
requestPlaceholder?: (input: Input) => Message;
|
|
19
20
|
requestFallback?: (input: Input, info: {
|
|
@@ -29,8 +30,6 @@ export interface UseXChatReturn<Message = ChatMessage, Input = RequestParams<Mes
|
|
|
29
30
|
onRequest: (input: Input) => void;
|
|
30
31
|
onReload: (id: string, input: Input) => void;
|
|
31
32
|
abort: () => void;
|
|
32
|
-
resetChat: () => void;
|
|
33
|
-
loadSession: (messages: ChatMessage[]) => void;
|
|
34
33
|
clearError: () => void;
|
|
35
34
|
setMessages: (messages: MessageInfo<Message>[] | ((prev: MessageInfo<Message>[]) => MessageInfo<Message>[])) => void;
|
|
36
35
|
setMessage: (id: string, partial: Partial<MessageInfo<Message>> | ((msg: MessageInfo<Message>) => Partial<MessageInfo<Message>>)) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useXChat.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useXChat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,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,QAAQ,EAAE,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACvD,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC;IAC/C,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,OAAO,CAAC;IACpE,UAAU,CAAC,EAAE,MAAM,MAAM,CAAC;CAC3B;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,UAAU,EAAE,OAAO,CAAC;IACpB,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,
|
|
1
|
+
{"version":3,"file":"useXChat.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useXChat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,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,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC;IAC/C,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,OAAO,CAAC;IACpE,UAAU,CAAC,EAAE,MAAM,MAAM,CAAC;CAC3B;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,UAAU,EAAE,OAAO,CAAC;IACpB,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;AAED,wBAAgB,QAAQ,CACtB,OAAO,GAAG,WAAW,EACrB,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,CAuOhC"}
|
|
@@ -13,10 +13,13 @@ export interface UseXConversationsOptions {
|
|
|
13
13
|
export declare function useXConversations(options: UseXConversationsOptions): {
|
|
14
14
|
sessions: import("./useXConversations").SessionSummary[];
|
|
15
15
|
activeId: string;
|
|
16
|
+
setActiveId: (id: string) => void;
|
|
16
17
|
switchSession: (id: string) => Promise<ChatMessage[]>;
|
|
17
18
|
newSession: () => void;
|
|
18
19
|
deleteSession: (id: string) => Promise<void>;
|
|
19
20
|
archiveSession: (id: string, title: string, messages: ChatMessage[]) => Promise<void>;
|
|
21
|
+
saveSession: (id: string, title: string, messages: ChatMessage[]) => Promise<void>;
|
|
22
|
+
loadSessionMessages: (id: string) => Promise<ChatMessage[]>;
|
|
20
23
|
updateSession: (id: string, data: Partial<{
|
|
21
24
|
title: string;
|
|
22
25
|
}>) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useXConversations.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useXConversations.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"useXConversations.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useXConversations.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,WAAW,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB;;;sBAoB5B,MAAM;wBAK9B,MAAM,KAAG,OAAO,CAAC,WAAW,EAAE,CAAC;;wBAY/B,MAAM;yBAWN,MAAM,SAAS,MAAM,YAAY,WAAW,EAAE;sBAQ9C,MAAM,SAAS,MAAM,YAAY,WAAW,EAAE;8BAQ9C,MAAM,KAAG,OAAO,CAAC,WAAW,EAAE,CAAC;wBAarC,MAAM,QAAQ,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;EAsBhD"}
|
|
@@ -16,10 +16,11 @@ export type { OpenAIChatProviderConfig } from './providers/OpenAIChatProvider';
|
|
|
16
16
|
export { DeepSeekChatProvider } from './providers/DeepSeekChatProvider';
|
|
17
17
|
export type { DeepSeekChatProviderConfig } from './providers/DeepSeekChatProvider';
|
|
18
18
|
export type { ChatStorage } from './stores/storage';
|
|
19
|
+
export { getOrCreateChatStore, deleteChatStore, getChatStoreMessages, } from './stores/chatStore';
|
|
19
20
|
export { useXChat } from './hooks/useXChat';
|
|
20
|
-
export type { UseXChatConfig, UseXChatReturn, MessageInfo } from './hooks/useXChat';
|
|
21
|
+
export type { UseXChatConfig, UseXChatReturn, MessageInfo, } from './hooks/useXChat';
|
|
21
22
|
export { useXConversations } from './hooks/useXConversations';
|
|
22
|
-
export type { UseXConversationsOptions, SessionSummary } from './hooks/useXConversations';
|
|
23
|
+
export type { UseXConversationsOptions, SessionSummary, } from './hooks/useXConversations';
|
|
23
24
|
export { useXModel } from './hooks/useXModel';
|
|
24
25
|
export type { UseXModelOptions, ModelInfo } from './hooks/useXModel';
|
|
25
26
|
export { ChatProvider, useChatContext } from './hooks/ChatProvider';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EACV,WAAW,EACX,WAAW,EACX,WAAW,EACX,aAAa,GACd,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EACV,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,WAAW,EACX,cAAc,GACf,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,aAAa,EACb,SAAS,EACT,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EACV,WAAW,EACX,WAAW,EACX,WAAW,EACX,aAAa,GACd,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EACV,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,WAAW,EACX,cAAc,GACf,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,aAAa,EACb,SAAS,EACT,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEvE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1E,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,YAAY,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,YAAY,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAGnF,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,YAAY,EACV,cAAc,EACd,cAAc,EACd,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,YAAY,EACV,wBAAwB,EACxB,cAAc,GACf,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAErE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACpE,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractChatProvider.d.ts","sourceRoot":"","sources":["../../../../src/providers/AbstractChatProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"AbstractChatProvider.d.ts","sourceRoot":"","sources":["../../../../src/providers/AbstractChatProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAqB,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAE3B,8BAAsB,oBAAoB,CACxC,OAAO,GAAG,WAAW,EACrB,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,EAC9B,MAAM,GAAG,SAAS;IAElB,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC;gBAEhB,MAAM,EAAE;QAAE,OAAO,EAAE,QAAQ,CAAA;KAAE;IAIzC;;;OAGG;IACH,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAE/D;;;OAGG;IACH,QAAQ,CAAC,qBAAqB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAErD;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO;IAErE;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,iBAAiB,CAAC,OAAO,CAAC,GAAG,IAAI;IAyBtE;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeepSeekChatProvider.d.ts","sourceRoot":"","sources":["../../../../src/providers/DeepSeekChatProvider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"DeepSeekChatProvider.d.ts","sourceRoot":"","sources":["../../../../src/providers/DeepSeekChatProvider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,WAAW,0BAA0B;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,oBAAqB,SAAQ,kBAAkB;gBAC9C,MAAM,EAAE,0BAA0B;IAS9C;;OAEG;IACM,gBAAgB,CACvB,MAAM,EAAE,SAAS,EACjB,OAAO,CAAC,EAAE,WAAW,GACpB,WAAW;CAmEf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenAIChatProvider.d.ts","sourceRoot":"","sources":["../../../../src/providers/OpenAIChatProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"OpenAIChatProvider.d.ts","sourceRoot":"","sources":["../../../../src/providers/OpenAIChatProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,EAAE,WAAW,EAAiB,MAAM,kBAAkB,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAElE,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAKD,qBAAa,kBAAmB,SAAQ,oBAAoB,CAC1D,WAAW,EACX,aAAa,CAAC,WAAW,CAAC,EAC1B,SAAS,CACV;IACC,OAAO,CAAC,KAAK,CAAS;gBAEV,MAAM,EAAE,wBAAwB;IAiB5C;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAkB3E;;OAEG;IACH,qBAAqB,CAAC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,WAAW;IAYrE;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,WAAW;IAiCvE,OAAO,CAAC,oBAAoB;CAW7B"}
|
|
@@ -22,6 +22,9 @@ interface ChatState {
|
|
|
22
22
|
resetChat: () => void;
|
|
23
23
|
loadSession: (messages: ChatMessage[]) => void;
|
|
24
24
|
}
|
|
25
|
+
export declare function getOrCreateChatStore(key: string): import("zustand").UseBoundStore<import("zustand").StoreApi<ChatState>>;
|
|
26
|
+
export declare function deleteChatStore(key: string): void;
|
|
27
|
+
export declare function getChatStoreMessages(key: string): ChatMessage[] | undefined;
|
|
25
28
|
export declare const createChatStore: () => import("zustand").UseBoundStore<import("zustand").StoreApi<ChatState>>;
|
|
26
29
|
export {};
|
|
27
30
|
//# sourceMappingURL=chatStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chatStore.d.ts","sourceRoot":"","sources":["../../../../src/stores/chatStore.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"chatStore.d.ts","sourceRoot":"","sources":["../../../../src/stores/chatStore.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,UAAU,SAAS;IACjB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAErB,UAAU,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IAC3C,aAAa,EAAE,CACb,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,WAAW,KACvC,IAAI,CAAC;IACV,aAAa,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IAC9C,WAAW,EAAE,CACX,QAAQ,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,CAAC,KAC/D,IAAI,CAAC;IACV,UAAU,EAAE,CACV,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC,KACzE,IAAI,CAAC;IACV,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,cAAc,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,IAAI,CAAC;IAClD,aAAa,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACpC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;CAChD;AAKD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,0EAO/C;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,QAE1C;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,6BAE/C;AAED,eAAO,MAAM,eAAe,8EA2EvB,CAAC"}
|
|
@@ -14,6 +14,7 @@ export interface SessionSummary {
|
|
|
14
14
|
export interface HistoryStore {
|
|
15
15
|
sessions: SessionSummary[];
|
|
16
16
|
archiveSession: (id: string, title: string, messages: ChatMessage[]) => Promise<void>;
|
|
17
|
+
saveSession: (id: string, title: string, messages: ChatMessage[]) => Promise<void>;
|
|
17
18
|
loadSessionMessages: (id: string) => Promise<ChatMessage[]>;
|
|
18
19
|
deleteSession: (id: string) => Promise<void>;
|
|
19
20
|
clearAll: () => Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"historyStore.d.ts","sourceRoot":"","sources":["../../../../src/stores/historyStore.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"historyStore.d.ts","sourceRoot":"","sources":["../../../../src/stores/historyStore.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAK7C,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,cAAc,EAAE,CACd,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,WAAW,EAAE,KACpB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,WAAW,EAAE,CACX,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,WAAW,EAAE,KACpB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5D,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,WAAW,GAAG,YAAY,CAqHrE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SSEParser.d.ts","sourceRoot":"","sources":["../../../../src/tools/SSEParser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"SSEParser.d.ts","sourceRoot":"","sources":["../../../../src/tools/SSEParser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,qBAAa,SAAS;IACpB,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,OAAO,CAAK;IAEpB,KAAK,IAAI,IAAI;IAMb;;;OAGG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,EAAE;CA2BpC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XStream.d.ts","sourceRoot":"","sources":["../../../../src/tools/XStream.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,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;CAC1E;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;
|
|
1
|
+
{"version":3,"file":"XStream.d.ts","sourceRoot":"","sources":["../../../../src/tools/XStream.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,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;CAC1E;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;IA8E1C,KAAK,IAAI,IAAI;IAYb,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,UAAU;CAMnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../../src/types/provider.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../../src/types/provider.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,WAAW;IAC5C,OAAO,EAAE,CAAC,CAAC;IACX,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB,CAAC,OAAO,GAAG,WAAW;IACtD,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAChC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,IAAI,CAAC;CAClD"}
|
package/package.json
CHANGED
|
@@ -23,7 +23,7 @@ import type { AbstractChatProvider } from '../providers/AbstractChatProvider';
|
|
|
23
23
|
export interface ChatProviderProps<
|
|
24
24
|
Message = ChatMessage,
|
|
25
25
|
Input = RequestParams<Message>,
|
|
26
|
-
Output = SSEOutput
|
|
26
|
+
Output = SSEOutput,
|
|
27
27
|
> {
|
|
28
28
|
provider: AbstractChatProvider<Message, Input, Output>;
|
|
29
29
|
storage?: ChatStorage;
|
|
@@ -44,8 +44,6 @@ interface ChatContextValue<Message = ChatMessage> {
|
|
|
44
44
|
onRequest: (input: unknown) => void;
|
|
45
45
|
onReload: (id: string, input: unknown) => void;
|
|
46
46
|
abort: () => void;
|
|
47
|
-
resetChat: () => void;
|
|
48
|
-
loadSession: (messages: ChatMessage[]) => void;
|
|
49
47
|
clearError: () => void;
|
|
50
48
|
setMessages: (
|
|
51
49
|
messages:
|
|
@@ -62,6 +60,7 @@ interface ChatContextValue<Message = ChatMessage> {
|
|
|
62
60
|
// useXConversations
|
|
63
61
|
sessions: SessionSummary[];
|
|
64
62
|
activeId: string;
|
|
63
|
+
setActiveId: (id: string) => void;
|
|
65
64
|
switchSession: (id: string) => Promise<Message[]>;
|
|
66
65
|
newSession: () => void;
|
|
67
66
|
deleteSession: (id: string) => Promise<void>;
|
|
@@ -70,6 +69,12 @@ interface ChatContextValue<Message = ChatMessage> {
|
|
|
70
69
|
title: string,
|
|
71
70
|
messages: Message[]
|
|
72
71
|
) => Promise<void>;
|
|
72
|
+
saveSession: (
|
|
73
|
+
id: string,
|
|
74
|
+
title: string,
|
|
75
|
+
messages: Message[]
|
|
76
|
+
) => Promise<void>;
|
|
77
|
+
loadSessionMessages: (id: string) => Promise<Message[]>;
|
|
73
78
|
updateSession: (id: string, data: Partial<{ title: string }>) => void;
|
|
74
79
|
// useXModel
|
|
75
80
|
selectedModel: string;
|
|
@@ -95,7 +100,7 @@ const memoryStorage: ChatStorage = {
|
|
|
95
100
|
export function ChatProvider<
|
|
96
101
|
Message = ChatMessage,
|
|
97
102
|
Input = RequestParams<Message>,
|
|
98
|
-
Output = SSEOutput
|
|
103
|
+
Output = SSEOutput,
|
|
99
104
|
>(props: ChatProviderProps<Message, Input, Output>) {
|
|
100
105
|
const {
|
|
101
106
|
provider,
|
|
@@ -108,24 +113,31 @@ export function ChatProvider<
|
|
|
108
113
|
children,
|
|
109
114
|
} = props;
|
|
110
115
|
|
|
116
|
+
const convOptions: UseXConversationsOptions = useMemo(
|
|
117
|
+
() => ({ storage: storage ?? memoryStorage }),
|
|
118
|
+
[storage]
|
|
119
|
+
);
|
|
120
|
+
const conversations = useXConversations(convOptions);
|
|
121
|
+
|
|
111
122
|
const chatConfig: UseXChatConfig<Message, Input, Output> = useMemo(
|
|
112
123
|
() => ({
|
|
124
|
+
conversationKey: conversations.activeId,
|
|
113
125
|
provider,
|
|
114
126
|
generateId,
|
|
115
127
|
requestPlaceholder,
|
|
116
128
|
requestFallback,
|
|
117
129
|
}),
|
|
118
|
-
[
|
|
130
|
+
[
|
|
131
|
+
conversations.activeId,
|
|
132
|
+
provider,
|
|
133
|
+
generateId,
|
|
134
|
+
requestPlaceholder,
|
|
135
|
+
requestFallback,
|
|
136
|
+
]
|
|
119
137
|
);
|
|
120
138
|
|
|
121
139
|
const chat = useXChat(chatConfig);
|
|
122
140
|
|
|
123
|
-
const convOptions: UseXConversationsOptions = useMemo(
|
|
124
|
-
() => ({ storage: storage ?? memoryStorage }),
|
|
125
|
-
[storage]
|
|
126
|
-
);
|
|
127
|
-
const conversations = useXConversations(convOptions);
|
|
128
|
-
|
|
129
141
|
const model = useXModel({ models, defaultModel });
|
|
130
142
|
|
|
131
143
|
const value = useMemo(
|
|
@@ -145,7 +157,7 @@ export function ChatProvider<
|
|
|
145
157
|
}
|
|
146
158
|
|
|
147
159
|
export function useChatContext<
|
|
148
|
-
Message = ChatMessage
|
|
160
|
+
Message = ChatMessage,
|
|
149
161
|
>(): ChatContextValue<Message> {
|
|
150
162
|
const ctx = useContext(ChatContext);
|
|
151
163
|
if (!ctx) {
|
package/src/hooks/useXChat.ts
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* 消费 ChatProvider,输出可渲染的 messages 列表
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { useCallback, useEffect,
|
|
8
|
-
import {
|
|
7
|
+
import { useCallback, useEffect, useMemo, useSyncExternalStore } from 'react';
|
|
8
|
+
import { getOrCreateChatStore } from '../stores/chatStore';
|
|
9
9
|
import type { AbstractChatProvider } from '../providers/AbstractChatProvider';
|
|
10
10
|
import type { ChatMessage, MessageStatus } from '../types/message';
|
|
11
11
|
import type { RequestParams, SSEOutput } from '../types/provider';
|
|
@@ -21,8 +21,9 @@ export interface MessageInfo<Message = ChatMessage> {
|
|
|
21
21
|
export interface UseXChatConfig<
|
|
22
22
|
Message = ChatMessage,
|
|
23
23
|
Input = RequestParams<Message>,
|
|
24
|
-
Output = SSEOutput
|
|
24
|
+
Output = SSEOutput,
|
|
25
25
|
> {
|
|
26
|
+
conversationKey: string;
|
|
26
27
|
provider: AbstractChatProvider<Message, Input, Output>;
|
|
27
28
|
requestPlaceholder?: (input: Input) => Message;
|
|
28
29
|
requestFallback?: (input: Input, info: { error: Error }) => Message;
|
|
@@ -31,7 +32,7 @@ export interface UseXChatConfig<
|
|
|
31
32
|
|
|
32
33
|
export interface UseXChatReturn<
|
|
33
34
|
Message = ChatMessage,
|
|
34
|
-
Input = RequestParams<Message
|
|
35
|
+
Input = RequestParams<Message>,
|
|
35
36
|
> {
|
|
36
37
|
messages: MessageInfo<Message>[];
|
|
37
38
|
requesting: boolean;
|
|
@@ -40,8 +41,6 @@ export interface UseXChatReturn<
|
|
|
40
41
|
onRequest: (input: Input) => void;
|
|
41
42
|
onReload: (id: string, input: Input) => void;
|
|
42
43
|
abort: () => void;
|
|
43
|
-
resetChat: () => void;
|
|
44
|
-
loadSession: (messages: ChatMessage[]) => void;
|
|
45
44
|
clearError: () => void;
|
|
46
45
|
setMessages: (
|
|
47
46
|
messages:
|
|
@@ -60,14 +59,16 @@ export interface UseXChatReturn<
|
|
|
60
59
|
export function useXChat<
|
|
61
60
|
Message = ChatMessage,
|
|
62
61
|
Input = RequestParams<Message>,
|
|
63
|
-
Output = SSEOutput
|
|
62
|
+
Output = SSEOutput,
|
|
64
63
|
>(
|
|
65
64
|
config: UseXChatConfig<Message, Input, Output>
|
|
66
65
|
): UseXChatReturn<Message, Input> {
|
|
67
|
-
const { provider } = config;
|
|
66
|
+
const { provider, conversationKey } = config;
|
|
68
67
|
|
|
69
|
-
const
|
|
70
|
-
|
|
68
|
+
const store = useMemo(
|
|
69
|
+
() => getOrCreateChatStore(conversationKey),
|
|
70
|
+
[conversationKey]
|
|
71
|
+
);
|
|
71
72
|
|
|
72
73
|
// 使用 useSyncExternalStore 订阅 zustand store 变化
|
|
73
74
|
const state = useSyncExternalStore(
|
|
@@ -153,17 +154,6 @@ export function useXChat<
|
|
|
153
154
|
store.getState().setRequesting(false);
|
|
154
155
|
}, [provider, store]);
|
|
155
156
|
|
|
156
|
-
const resetChat = useCallback(() => {
|
|
157
|
-
store.getState().resetChat();
|
|
158
|
-
}, [store]);
|
|
159
|
-
|
|
160
|
-
const loadSession = useCallback(
|
|
161
|
-
(messages: ChatMessage[]) => {
|
|
162
|
-
store.getState().loadSession(messages);
|
|
163
|
-
},
|
|
164
|
-
[store]
|
|
165
|
-
);
|
|
166
|
-
|
|
167
157
|
const clearError = useCallback(() => {
|
|
168
158
|
store.getState().setError(null);
|
|
169
159
|
}, [store]);
|
|
@@ -298,8 +288,6 @@ export function useXChat<
|
|
|
298
288
|
onRequest,
|
|
299
289
|
onReload,
|
|
300
290
|
abort,
|
|
301
|
-
resetChat,
|
|
302
|
-
loadSession,
|
|
303
291
|
clearError,
|
|
304
292
|
setMessages,
|
|
305
293
|
setMessage,
|
|
@@ -4,12 +4,13 @@
|
|
|
4
4
|
* 组合 sessionStore + historyStore,管理会话生命周期
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import {useState, useCallback, useEffect, useRef} from 'react';
|
|
8
|
-
import {createHistoryStore} from '../stores/historyStore';
|
|
9
|
-
import
|
|
10
|
-
import type {
|
|
7
|
+
import { useState, useCallback, useEffect, useRef } from 'react';
|
|
8
|
+
import { createHistoryStore } from '../stores/historyStore';
|
|
9
|
+
import { getOrCreateChatStore } from '../stores/chatStore';
|
|
10
|
+
import type { ChatStorage } from '../stores/storage';
|
|
11
|
+
import type { ChatMessage } from '../types/message';
|
|
11
12
|
|
|
12
|
-
export {type SessionSummary} from '../stores/historyStore';
|
|
13
|
+
export { type SessionSummary } from '../stores/historyStore';
|
|
13
14
|
|
|
14
15
|
export interface UseXConversationsOptions {
|
|
15
16
|
storage: ChatStorage;
|
|
@@ -17,13 +18,13 @@ export interface UseXConversationsOptions {
|
|
|
17
18
|
}
|
|
18
19
|
|
|
19
20
|
export function useXConversations(options: UseXConversationsOptions) {
|
|
20
|
-
const {storage} = options;
|
|
21
|
+
const { storage } = options;
|
|
21
22
|
|
|
22
23
|
const historyRef = useRef(createHistoryStore(storage));
|
|
23
24
|
const history = historyRef.current;
|
|
24
25
|
|
|
25
26
|
const [sessions, setSessions] = useState(history.sessions);
|
|
26
|
-
const [activeId,
|
|
27
|
+
const [activeId, setActiveIdState] = useState('');
|
|
27
28
|
|
|
28
29
|
// 初始化加载
|
|
29
30
|
useEffect(() => {
|
|
@@ -36,16 +37,20 @@ export function useXConversations(options: UseXConversationsOptions) {
|
|
|
36
37
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
37
38
|
}, []);
|
|
38
39
|
|
|
40
|
+
const setActiveId = useCallback((id: string) => {
|
|
41
|
+
setActiveIdState(id);
|
|
42
|
+
}, []);
|
|
43
|
+
|
|
39
44
|
const switchSession = useCallback(
|
|
40
45
|
async (id: string): Promise<ChatMessage[]> => {
|
|
41
|
-
|
|
46
|
+
setActiveIdState(id);
|
|
42
47
|
return await history.loadSessionMessages(id);
|
|
43
48
|
},
|
|
44
49
|
[history]
|
|
45
50
|
);
|
|
46
51
|
|
|
47
52
|
const newSession = useCallback(() => {
|
|
48
|
-
|
|
53
|
+
setActiveIdState('');
|
|
49
54
|
}, []);
|
|
50
55
|
|
|
51
56
|
const deleteSession = useCallback(
|
|
@@ -53,7 +58,7 @@ export function useXConversations(options: UseXConversationsOptions) {
|
|
|
53
58
|
await history.deleteSession(id);
|
|
54
59
|
setSessions([...history.sessions]);
|
|
55
60
|
if (activeId === id) {
|
|
56
|
-
|
|
61
|
+
setActiveIdState('');
|
|
57
62
|
}
|
|
58
63
|
},
|
|
59
64
|
[history, activeId]
|
|
@@ -67,6 +72,27 @@ export function useXConversations(options: UseXConversationsOptions) {
|
|
|
67
72
|
[history]
|
|
68
73
|
);
|
|
69
74
|
|
|
75
|
+
const saveSession = useCallback(
|
|
76
|
+
async (id: string, title: string, messages: ChatMessage[]) => {
|
|
77
|
+
await history.saveSession(id, title, messages);
|
|
78
|
+
setSessions([...history.sessions]);
|
|
79
|
+
},
|
|
80
|
+
[history]
|
|
81
|
+
);
|
|
82
|
+
|
|
83
|
+
const loadSessionMessages = useCallback(
|
|
84
|
+
async (id: string): Promise<ChatMessage[]> => {
|
|
85
|
+
const msgs = await history.loadSessionMessages(id);
|
|
86
|
+
// 将消息加载到对应的内存 store
|
|
87
|
+
if (msgs.length > 0) {
|
|
88
|
+
const store = getOrCreateChatStore(id);
|
|
89
|
+
store.getState().loadSession(msgs);
|
|
90
|
+
}
|
|
91
|
+
return msgs;
|
|
92
|
+
},
|
|
93
|
+
[history]
|
|
94
|
+
);
|
|
95
|
+
|
|
70
96
|
const updateSession = useCallback(
|
|
71
97
|
(id: string, data: Partial<{ title: string }>) => {
|
|
72
98
|
const session = history.sessions.find((s) => s.id === id);
|
|
@@ -81,10 +107,13 @@ export function useXConversations(options: UseXConversationsOptions) {
|
|
|
81
107
|
return {
|
|
82
108
|
sessions,
|
|
83
109
|
activeId,
|
|
110
|
+
setActiveId,
|
|
84
111
|
switchSession,
|
|
85
112
|
newSession,
|
|
86
113
|
deleteSession,
|
|
87
114
|
archiveSession,
|
|
115
|
+
saveSession,
|
|
116
|
+
loadSessionMessages,
|
|
88
117
|
updateSession,
|
|
89
118
|
};
|
|
90
119
|
}
|
package/src/hooks/useXModel.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* useXModel — 模型选择 hook
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import {useState, useCallback} from 'react';
|
|
5
|
+
import { useState, useCallback } from 'react';
|
|
6
6
|
|
|
7
7
|
export interface ModelInfo {
|
|
8
8
|
id: string;
|
|
@@ -16,7 +16,7 @@ export interface UseXModelOptions {
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
export function useXModel(options: UseXModelOptions) {
|
|
19
|
-
const {models, defaultModel} = options;
|
|
19
|
+
const { models, defaultModel } = options;
|
|
20
20
|
const [selectedModel, setSelected] = useState(
|
|
21
21
|
defaultModel ?? models[0]?.id ?? ''
|
|
22
22
|
);
|
package/src/index.ts
CHANGED
|
@@ -30,33 +30,45 @@ export type {
|
|
|
30
30
|
} from './types/provider';
|
|
31
31
|
|
|
32
32
|
// Tools
|
|
33
|
-
export {XStream} from './tools/XStream';
|
|
34
|
-
export type {XStreamConfig, XStreamCallbacks} from './tools/XStream';
|
|
33
|
+
export { XStream } from './tools/XStream';
|
|
34
|
+
export type { XStreamConfig, XStreamCallbacks } from './tools/XStream';
|
|
35
35
|
|
|
36
|
-
export {XRequest} from './tools/XRequest';
|
|
37
|
-
export type {XRequestConfig, XRequestCallbacks} from './tools/XRequest';
|
|
36
|
+
export { XRequest } from './tools/XRequest';
|
|
37
|
+
export type { XRequestConfig, XRequestCallbacks } from './tools/XRequest';
|
|
38
38
|
|
|
39
|
-
export {SSEParser} from './tools/SSEParser';
|
|
39
|
+
export { SSEParser } from './tools/SSEParser';
|
|
40
40
|
|
|
41
41
|
// Providers
|
|
42
|
-
export {AbstractChatProvider} from './providers/AbstractChatProvider';
|
|
43
|
-
export {OpenAIChatProvider} from './providers/OpenAIChatProvider';
|
|
44
|
-
export type {OpenAIChatProviderConfig} from './providers/OpenAIChatProvider';
|
|
45
|
-
export {DeepSeekChatProvider} from './providers/DeepSeekChatProvider';
|
|
46
|
-
export type {DeepSeekChatProviderConfig} from './providers/DeepSeekChatProvider';
|
|
42
|
+
export { AbstractChatProvider } from './providers/AbstractChatProvider';
|
|
43
|
+
export { OpenAIChatProvider } from './providers/OpenAIChatProvider';
|
|
44
|
+
export type { OpenAIChatProviderConfig } from './providers/OpenAIChatProvider';
|
|
45
|
+
export { DeepSeekChatProvider } from './providers/DeepSeekChatProvider';
|
|
46
|
+
export type { DeepSeekChatProviderConfig } from './providers/DeepSeekChatProvider';
|
|
47
47
|
|
|
48
48
|
// Stores
|
|
49
|
-
export type {ChatStorage} from './stores/storage';
|
|
49
|
+
export type { ChatStorage } from './stores/storage';
|
|
50
|
+
export {
|
|
51
|
+
getOrCreateChatStore,
|
|
52
|
+
deleteChatStore,
|
|
53
|
+
getChatStoreMessages,
|
|
54
|
+
} from './stores/chatStore';
|
|
50
55
|
|
|
51
56
|
// Hooks
|
|
52
|
-
export {useXChat} from './hooks/useXChat';
|
|
53
|
-
export type {
|
|
57
|
+
export { useXChat } from './hooks/useXChat';
|
|
58
|
+
export type {
|
|
59
|
+
UseXChatConfig,
|
|
60
|
+
UseXChatReturn,
|
|
61
|
+
MessageInfo,
|
|
62
|
+
} from './hooks/useXChat';
|
|
54
63
|
|
|
55
|
-
export {useXConversations} from './hooks/useXConversations';
|
|
56
|
-
export type {
|
|
64
|
+
export { useXConversations } from './hooks/useXConversations';
|
|
65
|
+
export type {
|
|
66
|
+
UseXConversationsOptions,
|
|
67
|
+
SessionSummary,
|
|
68
|
+
} from './hooks/useXConversations';
|
|
57
69
|
|
|
58
|
-
export {useXModel} from './hooks/useXModel';
|
|
59
|
-
export type {UseXModelOptions, ModelInfo} from './hooks/useXModel';
|
|
70
|
+
export { useXModel } from './hooks/useXModel';
|
|
71
|
+
export type { UseXModelOptions, ModelInfo } from './hooks/useXModel';
|
|
60
72
|
|
|
61
|
-
export {ChatProvider, useChatContext} from './hooks/ChatProvider';
|
|
62
|
-
export type {ChatProviderProps} from './hooks/ChatProvider';
|
|
73
|
+
export { ChatProvider, useChatContext } from './hooks/ChatProvider';
|
|
74
|
+
export type { ChatProviderProps } from './hooks/ChatProvider';
|
|
@@ -4,9 +4,13 @@
|
|
|
4
4
|
* 3 个抽象方法:transformParams / transformLocalMessage / transformMessage
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import type {XRequest, XRequestCallbacks} from '../tools/XRequest';
|
|
8
|
-
import type {ChatMessage} from '../types/message';
|
|
9
|
-
import type {
|
|
7
|
+
import type { XRequest, XRequestCallbacks } from '../tools/XRequest';
|
|
8
|
+
import type { ChatMessage } from '../types/message';
|
|
9
|
+
import type {
|
|
10
|
+
RequestParams,
|
|
11
|
+
SSEOutput,
|
|
12
|
+
ProviderCallbacks,
|
|
13
|
+
} from '../types/provider';
|
|
10
14
|
|
|
11
15
|
export abstract class AbstractChatProvider<
|
|
12
16
|
Message = ChatMessage,
|