@lobehub/ui 1.6.0 → 1.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/es/Chat/const.d.ts +1 -0
  2. package/es/Chat/const.js +1 -0
  3. package/es/Chat/index.d.ts +2 -0
  4. package/es/Chat/index.js +2 -0
  5. package/es/Chat/store/index.d.ts +20 -0
  6. package/es/Chat/store/index.js +16 -0
  7. package/es/Chat/store/initialState.d.ts +28 -0
  8. package/es/Chat/store/initialState.js +9 -0
  9. package/es/Chat/store/messageReducer.d.ts +37 -0
  10. package/es/Chat/store/messageReducer.js +67 -0
  11. package/es/Chat/store/selectors.d.ts +9 -0
  12. package/es/Chat/store/selectors.js +44 -0
  13. package/es/Chat/store/store.d.ts +34 -0
  14. package/es/Chat/store/store.js +240 -0
  15. package/es/Chat/types.d.ts +77 -0
  16. package/es/Chat/types.js +1 -0
  17. package/es/Chat/utils/fetch.d.ts +11 -0
  18. package/es/Chat/utils/fetch.js +100 -0
  19. package/es/Conversation/App.d.ts +13 -0
  20. package/es/Conversation/App.js +43 -0
  21. package/es/Conversation/ChatList/MessageItem/Content.d.ts +8 -0
  22. package/es/Conversation/ChatList/MessageItem/Content.js +103 -0
  23. package/es/Conversation/ChatList/MessageItem/Toolbar.d.ts +10 -0
  24. package/es/Conversation/ChatList/MessageItem/Toolbar.js +94 -0
  25. package/es/Conversation/ChatList/MessageItem/index.d.ts +9 -0
  26. package/es/Conversation/ChatList/MessageItem/index.js +126 -0
  27. package/es/Conversation/ChatList/index.d.ts +14 -0
  28. package/es/Conversation/ChatList/index.js +62 -0
  29. package/es/Conversation/InputArea/ActionBar.d.ts +4 -0
  30. package/es/Conversation/InputArea/ActionBar.js +71 -0
  31. package/es/Conversation/InputArea/index.d.ts +4 -0
  32. package/es/Conversation/InputArea/index.js +101 -0
  33. package/es/Conversation/StoreUpdater.d.ts +7 -0
  34. package/es/Conversation/StoreUpdater.js +27 -0
  35. package/es/Conversation/index.d.ts +8 -0
  36. package/es/Conversation/index.js +28 -0
  37. package/es/EditableMessageList/index.d.ts +9 -0
  38. package/es/EditableMessageList/index.js +101 -0
  39. package/es/EditableText/index.d.ts +1 -1
  40. package/es/EditableText/index.js +1 -1
  41. package/es/Snippet/style.js +1 -1
  42. package/es/index.d.ts +3 -0
  43. package/es/index.js +2 -0
  44. package/lib/Chat/const.d.ts +1 -0
  45. package/lib/Chat/const.js +29 -0
  46. package/lib/Chat/index.d.ts +2 -0
  47. package/lib/Chat/index.js +31 -0
  48. package/lib/Chat/store/index.d.ts +20 -0
  49. package/lib/Chat/store/index.js +44 -0
  50. package/lib/Chat/store/initialState.d.ts +28 -0
  51. package/lib/Chat/store/initialState.js +37 -0
  52. package/lib/Chat/store/messageReducer.d.ts +37 -0
  53. package/lib/Chat/store/messageReducer.js +82 -0
  54. package/lib/Chat/store/selectors.d.ts +9 -0
  55. package/lib/Chat/store/selectors.js +53 -0
  56. package/lib/Chat/store/store.d.ts +34 -0
  57. package/lib/Chat/store/store.js +119 -0
  58. package/lib/Chat/types.d.ts +77 -0
  59. package/lib/Chat/types.js +17 -0
  60. package/lib/Chat/utils/fetch.d.ts +11 -0
  61. package/lib/Chat/utils/fetch.js +72 -0
  62. package/lib/Conversation/App.d.ts +13 -0
  63. package/lib/Conversation/App.js +53 -0
  64. package/lib/Conversation/ChatList/MessageItem/Content.d.ts +8 -0
  65. package/lib/Conversation/ChatList/MessageItem/Content.js +104 -0
  66. package/lib/Conversation/ChatList/MessageItem/Toolbar.d.ts +10 -0
  67. package/lib/Conversation/ChatList/MessageItem/Toolbar.js +110 -0
  68. package/lib/Conversation/ChatList/MessageItem/index.d.ts +9 -0
  69. package/lib/Conversation/ChatList/MessageItem/index.js +164 -0
  70. package/lib/Conversation/ChatList/index.d.ts +14 -0
  71. package/lib/Conversation/ChatList/index.js +61 -0
  72. package/lib/Conversation/InputArea/ActionBar.d.ts +4 -0
  73. package/lib/Conversation/InputArea/ActionBar.js +97 -0
  74. package/lib/Conversation/InputArea/index.d.ts +4 -0
  75. package/lib/Conversation/InputArea/index.js +149 -0
  76. package/lib/Conversation/StoreUpdater.d.ts +7 -0
  77. package/lib/Conversation/StoreUpdater.js +54 -0
  78. package/lib/Conversation/index.d.ts +8 -0
  79. package/lib/Conversation/index.js +45 -0
  80. package/lib/EditableMessageList/index.d.ts +9 -0
  81. package/lib/EditableMessageList/index.js +124 -0
  82. package/lib/EditableText/index.d.ts +1 -1
  83. package/lib/EditableText/index.js +1 -1
  84. package/lib/Snippet/style.js +1 -1
  85. package/lib/{EditableText → components}/ControlInput.js +1 -1
  86. package/lib/index.d.ts +3 -0
  87. package/lib/index.js +6 -0
  88. package/package.json +7 -2
  89. /package/es/{EditableText → components}/ControlInput.d.ts +0 -0
  90. /package/es/{EditableText → components}/ControlInput.js +0 -0
  91. /package/lib/{EditableText → components}/ControlInput.d.ts +0 -0
@@ -0,0 +1,28 @@
1
+ import { ChatMessage, InternalChatContext, OpenAIRequestParams } from '../types';
2
+ export interface ChatState extends InternalChatContext {
3
+ /**
4
+ * @title 消息
5
+ * @type {string}
6
+ */
7
+ message: string;
8
+ /**
9
+ * @title 加载状态
10
+ * @type {boolean}
11
+ */
12
+ loading: boolean;
13
+ /**
14
+ * @title 改变系统角色状态
15
+ * @type {boolean}
16
+ */
17
+ changingSystemRole: boolean;
18
+ /**
19
+ * 编辑中的消息 id
20
+ */
21
+ editingMessageId?: number | null;
22
+ onMessagesChange?: (messages: ChatMessage[]) => void;
23
+ onResponseStart?: (messages: ChatMessage[]) => Promise<void>;
24
+ onResponseFinished?: (session: any) => void;
25
+ onAgentChange?: (agent: any, type: 'update' | 'remove') => void;
26
+ request?: (params: OpenAIRequestParams) => Promise<Response>;
27
+ }
28
+ export declare const initialState: ChatState;
@@ -0,0 +1,37 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // src/Chat/store/initialState.ts
20
+ var initialState_exports = {};
21
+ __export(initialState_exports, {
22
+ initialState: () => initialState
23
+ });
24
+ module.exports = __toCommonJS(initialState_exports);
25
+ var initialState = {
26
+ message: "",
27
+ messages: [],
28
+ loading: false,
29
+ changingSystemRole: false,
30
+ editingMessageId: null,
31
+ createAt: -1,
32
+ updateAt: -1
33
+ };
34
+ // Annotate the CommonJS export names for ESM import in node:
35
+ 0 && (module.exports = {
36
+ initialState
37
+ });
@@ -0,0 +1,37 @@
1
+ import { ChatMessage, ChatMessageError, MessageRoleType } from '../types';
2
+ export declare type MessageDispatch = {
3
+ type: 'addMessage';
4
+ message: ChatMessage;
5
+ } | {
6
+ type: 'insertMessage';
7
+ message: ChatMessage;
8
+ index: number;
9
+ } | {
10
+ type: 'deleteMessage';
11
+ index: number;
12
+ } | {
13
+ type: 'resetMessages';
14
+ } | {
15
+ type: 'updateMessage';
16
+ index: number;
17
+ message: string;
18
+ } | {
19
+ type: 'updateMessageRole';
20
+ index: number;
21
+ role: MessageRoleType;
22
+ } | {
23
+ type: 'addUserMessage';
24
+ message: string;
25
+ } | {
26
+ type: 'updateLatestBotMessage';
27
+ responseStream: string[];
28
+ } | {
29
+ type: 'updateMessageChoice';
30
+ message: string;
31
+ index: number;
32
+ } | {
33
+ type: 'setErrorMessage';
34
+ index: number;
35
+ error: ChatMessageError | undefined;
36
+ };
37
+ export declare const messagesReducer: (state: ChatMessage[], payload: MessageDispatch) => ChatMessage[];
@@ -0,0 +1,82 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // src/Chat/store/messageReducer.ts
20
+ var messageReducer_exports = {};
21
+ __export(messageReducer_exports, {
22
+ messagesReducer: () => messagesReducer
23
+ });
24
+ module.exports = __toCommonJS(messageReducer_exports);
25
+ var import_immer = require("immer");
26
+ var messagesReducer = (state, payload) => {
27
+ switch (payload.type) {
28
+ case "addMessage":
29
+ return [...state, payload.message];
30
+ case "insertMessage":
31
+ return (0, import_immer.produce)(state, (draftState) => {
32
+ draftState.splice(payload.index, 0, payload.message);
33
+ });
34
+ case "deleteMessage":
35
+ return state.filter((_, i) => i !== payload.index);
36
+ case "resetMessages":
37
+ return [];
38
+ case "updateMessage":
39
+ return (0, import_immer.produce)(state, (draftState) => {
40
+ const { index, message } = payload;
41
+ draftState[index].content = message;
42
+ });
43
+ case "updateMessageRole":
44
+ return (0, import_immer.produce)(state, (draftState) => {
45
+ const { index, role } = payload;
46
+ draftState[index].role = role;
47
+ });
48
+ case "addUserMessage":
49
+ return (0, import_immer.produce)(state, (draftState) => {
50
+ draftState.push({ role: "user", content: payload.message });
51
+ });
52
+ case "updateLatestBotMessage":
53
+ return (0, import_immer.produce)(state, () => {
54
+ const { responseStream } = payload;
55
+ const newMessage = { role: "assistant", content: responseStream.join("") };
56
+ return [...state.slice(0, -1), newMessage];
57
+ });
58
+ case "setErrorMessage":
59
+ return (0, import_immer.produce)(state, (draftState) => {
60
+ const { index, error } = payload;
61
+ draftState[index].error = error;
62
+ });
63
+ case "updateMessageChoice":
64
+ return (0, import_immer.produce)(state, (draftState) => {
65
+ const { index, message } = payload;
66
+ const botMessage = draftState[index];
67
+ const prevMsg = botMessage.content;
68
+ botMessage.content = message;
69
+ if (botMessage.choices) {
70
+ botMessage.choices.push(prevMsg);
71
+ } else {
72
+ botMessage.choices = [prevMsg];
73
+ }
74
+ });
75
+ default:
76
+ throw Error("暂未实现的 type,请检查 reducer");
77
+ }
78
+ };
79
+ // Annotate the CommonJS export names for ESM import in node:
80
+ 0 && (module.exports = {
81
+ messagesReducer
82
+ });
@@ -0,0 +1,9 @@
1
+ import type { ChatStore } from './store';
2
+ export declare const chatSelectors: {
3
+ totalTokenCount: (s: ChatStore) => number;
4
+ agentTokenCount: (s: ChatStore) => number;
5
+ messagesTokenCount: (s: ChatStore) => number;
6
+ totalTokens: (s: ChatStore) => number[];
7
+ messagesTokens: (s: ChatStore) => number[];
8
+ disableInput: (s: ChatStore) => boolean;
9
+ };
@@ -0,0 +1,53 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // src/Chat/store/selectors.ts
20
+ var selectors_exports = {};
21
+ __export(selectors_exports, {
22
+ chatSelectors: () => chatSelectors
23
+ });
24
+ module.exports = __toCommonJS(selectors_exports);
25
+ var import_tiktoken = require("@dqbd/tiktoken");
26
+ var tiktoken = (0, import_tiktoken.get_encoding)("cl100k_base");
27
+ var encode = (text) => {
28
+ if (!text)
29
+ return [];
30
+ const tokens = tiktoken.encode(text);
31
+ return tokens;
32
+ };
33
+ var disableInputSel = (s) => s.changingSystemRole;
34
+ var messagesTokens = (s) => encode(s.messages.map((m) => m.content).join(""));
35
+ var agentContentTokens = (s) => encode(
36
+ s.messages.filter((s2) => s2.role === "system").map((c) => c.content).join("") || ""
37
+ );
38
+ var totalTokens = (s) => encode(s.messages.map((m) => m.content).join(""));
39
+ var totalTokenCount = (s) => totalTokens(s).length;
40
+ var agentTokenCount = (s) => agentContentTokens(s).length;
41
+ var messagesTokenCount = (s) => messagesTokens(s).length;
42
+ var chatSelectors = {
43
+ totalTokenCount,
44
+ agentTokenCount,
45
+ messagesTokenCount,
46
+ totalTokens,
47
+ messagesTokens,
48
+ disableInput: disableInputSel
49
+ };
50
+ // Annotate the CommonJS export names for ESM import in node:
51
+ 0 && (module.exports = {
52
+ chatSelectors
53
+ });
@@ -0,0 +1,34 @@
1
+ import { StateCreator } from 'zustand/vanilla';
2
+ import { ChatMessage } from '../types';
3
+ import { FetchSSEOptions } from '../utils/fetch';
4
+ import { ChatState } from './initialState';
5
+ import { MessageDispatch } from './messageReducer';
6
+ interface ChatAction {
7
+ /**
8
+ * @title 发送消息
9
+ * @returns Promise<void>
10
+ */
11
+ sendMessage: () => Promise<void>;
12
+ /**
13
+ * @title 重发消息
14
+ * @param index - 消息索引
15
+ * @returns Promise<void>
16
+ */
17
+ resendMessage: (index: number) => Promise<void>;
18
+ generateMessage: (message: string, messages: ChatMessage[], options: FetchSSEOptions) => Promise<void>;
19
+ /**
20
+ * @title 派发消息
21
+ * @param payload - 消息分发
22
+ * @returns void
23
+ */
24
+ dispatchMessage: (payload: MessageDispatch) => void;
25
+ /**
26
+ * @title 处理消息编辑
27
+ * @param index - 消息索引或空
28
+ * @returns void
29
+ */
30
+ handleMessageEditing: (index?: number | null) => void;
31
+ }
32
+ export declare type ChatStore = ChatAction & ChatState;
33
+ export declare const createStore: StateCreator<ChatStore, [['zustand/devtools', never]]>;
34
+ export {};
@@ -0,0 +1,119 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // src/Chat/store/store.ts
20
+ var store_exports = {};
21
+ __export(store_exports, {
22
+ createStore: () => createStore
23
+ });
24
+ module.exports = __toCommonJS(store_exports);
25
+ var import_fetch = require("../utils/fetch");
26
+ var import_const = require("../const");
27
+ var import_initialState = require("./initialState");
28
+ var import_messageReducer = require("./messageReducer");
29
+ var createStore = (set, get) => ({
30
+ ...import_initialState.initialState,
31
+ dispatchMessage: (payload) => {
32
+ var _a, _b;
33
+ const { type, ...res } = payload;
34
+ const messages = (0, import_messageReducer.messagesReducer)(get().messages, payload);
35
+ set({ messages }, false, {
36
+ type: `dispatchMessage/${type}`,
37
+ payload: res
38
+ });
39
+ (_b = (_a = get()).onMessagesChange) == null ? void 0 : _b.call(_a, messages);
40
+ },
41
+ handleMessageEditing: (index) => {
42
+ set({ editingMessageId: index });
43
+ },
44
+ generateMessage: async (message, messages, options) => {
45
+ const { onResponseStart, request, onResponseFinished } = get();
46
+ if (!request)
47
+ return;
48
+ await (onResponseStart == null ? void 0 : onResponseStart(get().messages));
49
+ set({ loading: true });
50
+ const fetcher = () => request({ messages });
51
+ await (0, import_fetch.fetchSSE)(fetcher, options);
52
+ set({ loading: false });
53
+ onResponseFinished == null ? void 0 : onResponseFinished({ messages: get().messages });
54
+ },
55
+ sendMessage: async () => {
56
+ const { message, dispatchMessage, generateMessage, messages } = get();
57
+ if (!message)
58
+ return;
59
+ set({ message: "" });
60
+ dispatchMessage({ type: "addUserMessage", message });
61
+ dispatchMessage({ type: "addMessage", message: { role: "assistant", content: import_const.LOADING_FLAT } });
62
+ let currentResponse = [];
63
+ await generateMessage(message, messages, {
64
+ onMessageHandle: (text) => {
65
+ currentResponse = [...currentResponse, text];
66
+ dispatchMessage({ type: "updateLatestBotMessage", responseStream: currentResponse });
67
+ const item = document.getElementById("for-loading");
68
+ if (!item)
69
+ return;
70
+ item.scrollIntoView({ behavior: "smooth" });
71
+ },
72
+ onErrorHandle: (error) => {
73
+ dispatchMessage({ type: "setErrorMessage", error, index: get().messages.length - 1 });
74
+ }
75
+ });
76
+ },
77
+ resendMessage: async (index) => {
78
+ var _a;
79
+ const { dispatchMessage, sendMessage, generateMessage, messages } = get();
80
+ const lastMessage = messages.at(-1);
81
+ if (messages.length === index && (lastMessage == null ? void 0 : lastMessage.role) === "user") {
82
+ dispatchMessage({ type: "deleteMessage", index: index - 1 });
83
+ set({ message: lastMessage.content });
84
+ await sendMessage();
85
+ return;
86
+ }
87
+ const contextMessages = get().messages.slice(0, index);
88
+ const userMessage = (_a = contextMessages.at(-1)) == null ? void 0 : _a.content;
89
+ if (!userMessage)
90
+ return;
91
+ const targetMsg = messages[index];
92
+ if (targetMsg.role !== "assistant") {
93
+ dispatchMessage({
94
+ type: "insertMessage",
95
+ index,
96
+ message: { role: "assistant", content: import_const.LOADING_FLAT }
97
+ });
98
+ } else {
99
+ const botPrevMsg = targetMsg.content;
100
+ dispatchMessage({ type: "updateMessageChoice", message: botPrevMsg, index });
101
+ dispatchMessage({ type: "updateMessage", message: import_const.LOADING_FLAT, index });
102
+ }
103
+ dispatchMessage({ type: "setErrorMessage", error: void 0, index });
104
+ let currentResponse = [];
105
+ await generateMessage(userMessage, contextMessages, {
106
+ onMessageHandle: (text) => {
107
+ currentResponse = [...currentResponse, text];
108
+ dispatchMessage({ type: "updateMessage", message: currentResponse.join(""), index });
109
+ },
110
+ onErrorHandle: (error) => {
111
+ dispatchMessage({ type: "setErrorMessage", error, index });
112
+ }
113
+ });
114
+ }
115
+ });
116
+ // Annotate the CommonJS export names for ESM import in node:
117
+ 0 && (module.exports = {
118
+ createStore
119
+ });
@@ -0,0 +1,77 @@
1
+ export declare type InternalChatContext = Omit<ChatContext, 'id'>;
2
+ export declare type MessageRoleType = 'user' | 'system' | 'assistant';
3
+ /**
4
+ * 聊天消息错误对象
5
+ */
6
+ export interface ChatMessageError {
7
+ /**
8
+ * 错误信息
9
+ */
10
+ message: string;
11
+ /**
12
+ * 错误状态码
13
+ */
14
+ status: number;
15
+ /**
16
+ * 错误类型
17
+ * @enum ["chatbot", "openai"]
18
+ * @enumNames ["聊天机器人", "开放AI"]
19
+ */
20
+ type: 'chatbot' | 'openai';
21
+ }
22
+ /**
23
+ * @title ChatGPTMessage 聊天消息
24
+ * @category Model
25
+ */
26
+ export interface ChatMessage {
27
+ /**
28
+ * @title 角色
29
+ * @description 消息发送者的角色
30
+ * @enum {MessageRoleType} ChatGPTAgent
31
+ */
32
+ role: MessageRoleType;
33
+ /**
34
+ * @title 内容
35
+ * @description 消息内容
36
+ */
37
+ content: string;
38
+ /**
39
+ * 其余生成项
40
+ */
41
+ choices?: string[];
42
+ /**
43
+ * 如果存在错误消息
44
+ */
45
+ error?: ChatMessageError;
46
+ }
47
+ export interface ChatContext {
48
+ id: string;
49
+ /**
50
+ * @title 会话标题
51
+ */
52
+ title?: string;
53
+ /**
54
+ * @title 会话描述
55
+ * @description 用户设置的会话描述
56
+ * @type {string}
57
+ */
58
+ description?: string;
59
+ /**
60
+ * @title 消息列表
61
+ * @description 聊天室中的所有消息
62
+ * @type {ChatMessage[]}
63
+ */
64
+ messages: ChatMessage[];
65
+ createAt: number;
66
+ updateAt: number;
67
+ }
68
+ export declare type ChatContextMap = Record<string, Omit<ChatContext, 'systemRole'>>;
69
+ /**
70
+ * 请求数据类型
71
+ */
72
+ export interface OpenAIRequestParams {
73
+ /**
74
+ * 中间的聊天记录
75
+ */
76
+ messages?: ChatMessage[];
77
+ }
@@ -0,0 +1,17 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __copyProps = (to, from, except, desc) => {
6
+ if (from && typeof from === "object" || typeof from === "function") {
7
+ for (let key of __getOwnPropNames(from))
8
+ if (!__hasOwnProp.call(to, key) && key !== except)
9
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
10
+ }
11
+ return to;
12
+ };
13
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
14
+
15
+ // src/Chat/types.ts
16
+ var types_exports = {};
17
+ module.exports = __toCommonJS(types_exports);
@@ -0,0 +1,11 @@
1
+ import { ChatMessageError } from '../types';
2
+ export interface FetchSSEOptions {
3
+ onMessageHandle?: (text: string) => void;
4
+ onErrorHandle?: (error: ChatMessageError) => void;
5
+ }
6
+ /**
7
+ * 使用流式方法获取数据
8
+ * @param fetchFn
9
+ * @param options
10
+ */
11
+ export declare const fetchSSE: (fetchFn: () => Promise<Response>, options?: FetchSSEOptions) => Promise<Response | undefined>;
@@ -0,0 +1,72 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // src/Chat/utils/fetch.ts
20
+ var fetch_exports = {};
21
+ __export(fetch_exports, {
22
+ fetchSSE: () => fetchSSE
23
+ });
24
+ module.exports = __toCommonJS(fetch_exports);
25
+ var codeMessage = {
26
+ 200: "成功获取数据,服务已响应",
27
+ 201: "操作成功,数据已保存",
28
+ 202: "您的请求已进入后台排队,请耐心等待异步任务完成",
29
+ 204: "数据已成功删除",
30
+ 400: "很抱歉,您的请求出错,服务器未执行任何数据的创建或修改操作",
31
+ 401: "很抱歉,您的权限不足。请确认用户名或密码是否正确",
32
+ 403: "很抱歉,您无权访问此内容",
33
+ 404: "很抱歉,您请求的记录不存在,服务器未能执行任何操作",
34
+ 406: "很抱歉,服务器不支持该请求格式",
35
+ 410: "很抱歉,你所请求的资源已永久删除",
36
+ 422: "很抱歉,在创建对象时遇到验证错误,请稍后再试",
37
+ 500: "很抱歉,服务器出现了问题,请稍后再试",
38
+ 502: "很抱歉,您遇到了网关错误。这可能是由于网络故障或服务器问题导致的。请稍后再试,或联系管理员以获取更多帮助",
39
+ 503: "很抱歉,我们的服务器过载或处在维护中,服务暂时不可用",
40
+ 504: "很抱歉,网关请求超时,请稍后再试"
41
+ };
42
+ var fetchSSE = async (fetchFn, options = {}) => {
43
+ var _a, _b;
44
+ const response = await fetchFn();
45
+ if (!response.ok) {
46
+ const chatMessageError = {
47
+ type: "chatbot",
48
+ message: codeMessage[response.status],
49
+ status: response.status
50
+ };
51
+ (_a = options.onErrorHandle) == null ? void 0 : _a.call(options, chatMessageError);
52
+ return;
53
+ }
54
+ const returnRes = response.clone();
55
+ const data = response.body;
56
+ if (!data)
57
+ return;
58
+ const reader = data.getReader();
59
+ const decoder = new TextDecoder();
60
+ let done = false;
61
+ while (!done) {
62
+ const { value, done: doneReading } = await reader.read();
63
+ done = doneReading;
64
+ const chunkValue = decoder.decode(value);
65
+ (_b = options.onMessageHandle) == null ? void 0 : _b.call(options, chunkValue);
66
+ }
67
+ return returnRes;
68
+ };
69
+ // Annotate the CommonJS export names for ESM import in node:
70
+ 0 && (module.exports = {
71
+ fetchSSE
72
+ });
@@ -0,0 +1,13 @@
1
+ /// <reference types="react" />
2
+ export interface AppProps {
3
+ /**
4
+ * @title 是否只读
5
+ */
6
+ readonly?: boolean;
7
+ /**
8
+ * @title 是否包含系统消息
9
+ */
10
+ includeSystem?: boolean;
11
+ }
12
+ declare const _default: import("react").NamedExoticComponent<AppProps>;
13
+ export default _default;
@@ -0,0 +1,53 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // src/Conversation/App.tsx
30
+ var App_exports = {};
31
+ __export(App_exports, {
32
+ default: () => App_default
33
+ });
34
+ module.exports = __toCommonJS(App_exports);
35
+ var import_antd = require("antd");
36
+ var import_fast_deep_equal = __toESM(require("fast-deep-equal"));
37
+ var import_react = require("react");
38
+ var import_react_layout_kit = require("react-layout-kit");
39
+ var import_ChatList = __toESM(require("./ChatList"));
40
+ var import_InputArea = __toESM(require("./InputArea"));
41
+ var import_store = require("../Chat/store");
42
+ var ChatContainer = ({ readonly, includeSystem = true }) => {
43
+ const [showInput, title, description] = (0, import_store.useStore)(
44
+ (s) => [!s.changingSystemRole, s.title, s.description],
45
+ import_fast_deep_equal.default
46
+ );
47
+ if (readonly)
48
+ return /* @__PURE__ */ React.createElement(import_ChatList.default, { readonly: true, includeSystem });
49
+ return /* @__PURE__ */ React.createElement(import_react_layout_kit.Flexbox, { width: "100%", height: "100%", gap: 24 }, title || description ? /* @__PURE__ */ React.createElement(import_react_layout_kit.Flexbox, null, /* @__PURE__ */ React.createElement(import_antd.Typography.Title, { level: 4 }, title), /* @__PURE__ */ React.createElement(import_antd.Typography.Text, { type: "secondary" }, description)) : null, /* @__PURE__ */ React.createElement(import_ChatList.default, { includeSystem }), showInput ? /* @__PURE__ */ React.createElement(import_InputArea.default, null) : null);
50
+ };
51
+ var App_default = (0, import_react.memo)(ChatContainer);
52
+ // Annotate the CommonJS export names for ESM import in node:
53
+ 0 && (module.exports = {});
@@ -0,0 +1,8 @@
1
+ import { FC } from 'react';
2
+ import { ChatMessage } from "../../../Chat/types";
3
+ export interface ContentProps extends Pick<ChatMessage, 'content' | 'role' | 'error'> {
4
+ index: number;
5
+ loading: boolean;
6
+ }
7
+ declare const Content: FC<ContentProps>;
8
+ export default Content;