@kweaver-ai/chatkit 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/README.md +528 -0
  2. package/dist/chatkit.cjs.js +66 -0
  3. package/dist/chatkit.es.js +2966 -0
  4. package/dist/components/base/ChatKitBase.d.ts +261 -0
  5. package/dist/components/base/assistant/AssistantBase.d.ts +17 -0
  6. package/dist/components/base/assistant/Header.d.ts +20 -0
  7. package/dist/components/base/assistant/InputArea.d.ts +29 -0
  8. package/dist/components/base/assistant/MessageItem.d.ts +15 -0
  9. package/dist/components/base/assistant/MessageList.d.ts +15 -0
  10. package/dist/components/base/assistant/Prologue.d.ts +18 -0
  11. package/dist/components/base/assistant/blocks/MarkdownBlock.d.ts +15 -0
  12. package/dist/components/base/assistant/blocks/TextBlock.d.ts +15 -0
  13. package/dist/components/base/assistant/blocks/ToolBlock.d.ts +16 -0
  14. package/dist/components/base/assistant/blocks/ToolDrawer.d.ts +26 -0
  15. package/dist/components/base/assistant/blocks/WebSearchBlock.d.ts +16 -0
  16. package/dist/components/base/assistant/blocks/index.d.ts +9 -0
  17. package/dist/components/base/copilot/CopilotBase.d.ts +16 -0
  18. package/dist/components/base/copilot/Header.d.ts +22 -0
  19. package/dist/components/base/copilot/InputArea.d.ts +29 -0
  20. package/dist/components/base/copilot/MessageItem.d.ts +15 -0
  21. package/dist/components/base/copilot/MessageList.d.ts +15 -0
  22. package/dist/components/base/copilot/Prologue.d.ts +18 -0
  23. package/dist/components/base/copilot/blocks/MarkdownBlock.d.ts +15 -0
  24. package/dist/components/base/copilot/blocks/TextBlock.d.ts +15 -0
  25. package/dist/components/base/copilot/blocks/ToolBlock.d.ts +16 -0
  26. package/dist/components/base/copilot/blocks/ToolDrawer.d.ts +26 -0
  27. package/dist/components/base/copilot/blocks/WebSearchBlock.d.ts +16 -0
  28. package/dist/components/base/copilot/blocks/index.d.ts +9 -0
  29. package/dist/components/coze/Copilot.d.ts +102 -0
  30. package/dist/components/dip/Assistant.d.ts +22 -0
  31. package/dist/components/dip/Copilot.d.ts +22 -0
  32. package/dist/components/dip/DIPBase.d.ts +310 -0
  33. package/dist/components/icons/ClockIcon.d.ts +6 -0
  34. package/dist/components/icons/CloseIcon.d.ts +6 -0
  35. package/dist/components/icons/SendIcon.d.ts +13 -0
  36. package/dist/components/icons/StopIcon.d.ts +6 -0
  37. package/dist/components/icons/index.d.ts +7 -0
  38. package/dist/icons/assistant.svg +14 -0
  39. package/dist/icons/close.svg +6 -0
  40. package/dist/icons/expand.svg +3 -0
  41. package/dist/icons/more.svg +3 -0
  42. package/dist/icons/new.svg +10 -0
  43. package/dist/icons/send.svg +4 -0
  44. package/dist/index.d.ts +20 -0
  45. package/dist/types/index.d.ts +285 -0
  46. package/dist/utils/mixins.d.ts +18 -0
  47. package/package.json +66 -0
@@ -0,0 +1,261 @@
1
+ import { Component } from 'react';
2
+ import { ChatMessage, ApplicationContext, ChatKitInterface, OnboardingInfo, WebSearchQuery, ExecuteCodeResult } from '../../types';
3
+ /**
4
+ * ChatKitBase 组件的属性接口
5
+ */
6
+ export interface ChatKitBaseProps {
7
+ /** 会话 ID,每次新建会话时由后端返回新的会话唯一标识 */
8
+ conversationID?: string;
9
+ /** 当没有指定的 inputContext 时的默认输入上下文 */
10
+ defaultApplicationContext?: ApplicationContext;
11
+ /** 组件标题 */
12
+ title?: string;
13
+ /** 是否显示组件 */
14
+ visible?: boolean;
15
+ /** 关闭组件的回调函数 */
16
+ onClose?: () => void;
17
+ /** 调用接口时携带的令牌,放置到请求头:Authorization:Bearer {token} */
18
+ token?: string;
19
+ /** 刷新 token 的方法,由集成方传入 */
20
+ refreshToken?: () => Promise<string>;
21
+ }
22
+ /**
23
+ * ChatKitBase 组件的状态接口
24
+ */
25
+ export interface ChatKitBaseState {
26
+ /** 会话 ID,每次新建会话时由后端返回新的会话唯一标识 */
27
+ conversationID: string;
28
+ /** 消息列表,这里仅记录渲染到界面上的对话消息 */
29
+ messages: ChatMessage[];
30
+ /** 用户输入的文本 */
31
+ textInput: string;
32
+ /** 和用户输入文本相关的上下文 */
33
+ applicationContext?: ApplicationContext;
34
+ /** 是否正在发送消息 */
35
+ isSending: boolean;
36
+ /** 当前正在流式更新的消息 ID */
37
+ streamingMessageId: string | null;
38
+ /** 开场白信息,包含开场白文案和预置问题 */
39
+ onboardingInfo?: OnboardingInfo;
40
+ /** 是否正在加载开场白信息 */
41
+ isLoadingOnboarding: boolean;
42
+ }
43
+ /**
44
+ * ChatKitBase 基础组件
45
+ * AI 对话组件的核心类。该类是一个 React 组件,包含标准的交互界面和交互逻辑。
46
+ *
47
+ * 注意:开发者不能够直接挂载 ChatKitBase 到 Web 应用,而是需要创建一个子类继承
48
+ * ChatKitBase 和 ChatKitInterface,并实现 ChatKitInterface 中定义的方法。
49
+ *
50
+ * 该类实现了 ChatKitInterface 接口,子类需要实现 sendMessage 和 reduceEventStreamMessage 方法
51
+ */
52
+ export declare abstract class ChatKitBase<P extends ChatKitBaseProps = ChatKitBaseProps> extends Component<P, ChatKitBaseState> implements ChatKitInterface {
53
+ /**
54
+ * 标记是否正在初始化或已经初始化
55
+ * 用于防止重复初始化(特别是在 React.StrictMode 下)
56
+ */
57
+ private isInitializing;
58
+ private hasInitialized;
59
+ /**
60
+ * 调用接口时携带的令牌
61
+ */
62
+ protected token: string;
63
+ /**
64
+ * 刷新 token 的方法,由集成方传入
65
+ */
66
+ protected refreshToken?: () => Promise<string>;
67
+ constructor(props: P);
68
+ /**
69
+ * 组件挂载后自动创建会话
70
+ * 根据设计文档要求:组件被初始化的时候会自动新建会话
71
+ */
72
+ componentDidMount(): Promise<void>;
73
+ /**
74
+ * 组件更新时检查是否需要初始化会话
75
+ * 当 visible 从 false 变为 true 时,如果还未初始化,则初始化会话
76
+ */
77
+ componentDidUpdate(prevProps: P): Promise<void>;
78
+ /**
79
+ * 初始化会话的内部方法
80
+ * 仅在组件首次可见时调用,防止重复初始化
81
+ */
82
+ private initializeConversation;
83
+ /**
84
+ * 获取开场白和预置问题 (抽象方法,由子类实现)
85
+ * 该方法需要由子类继承并重写,以适配扣子、Dify 等 LLMOps 平台的接口
86
+ * 返回开场白信息结构体
87
+ * 注意:该方法是一个无状态无副作用的函数,不允许修改 state
88
+ * @returns 返回开场白信息,包含开场白文案和预置问题
89
+ */
90
+ abstract getOnboardingInfo(): Promise<OnboardingInfo>;
91
+ /**
92
+ * 新建会话 (抽象方法,由子类实现)
93
+ * 该方法需要由开发者实现,以适配扣子、Dify 等 LLMOps 平台的接口
94
+ * 成功返回会话 ID
95
+ * 注意:该方法是一个无状态无副作用的函数,不允许修改 state
96
+ * @returns 返回新创建的会话 ID
97
+ */
98
+ abstract generateConversation(): Promise<string>;
99
+ /**
100
+ * 向后端发送消息 (抽象方法,由子类实现)
101
+ * 该方法需要由开发者实现,以适配扣子、Dify等 LLMOps 平台的接口
102
+ * 发送成功后,返回发送的消息结构
103
+ * 注意:该方法是一个无状态无副作用的函数,不允许修改 state
104
+ * @param text 发送给后端的用户输入的文本
105
+ * @param ctx 随用户输入文本一起发送的应用上下文
106
+ * @param conversationID 发送的对话消息所属的会话 ID
107
+ * @returns 返回发送的消息结构
108
+ */
109
+ abstract sendMessage(text: string, ctx: ApplicationContext, conversationID?: string): Promise<ChatMessage>;
110
+ /**
111
+ * 将 API 接口返回的 EventStream 增量解析成完整的 AssistantMessage 对象 (抽象方法,由子类实现)
112
+ * 当接收到 SSE 消息时触发,该方法需要由子类实现
113
+ * 子类在该方法中应该调用以下方法来更新消息内容:
114
+ * - appendMarkdownBlock(): 添加 Markdown 文本块
115
+ * - appendWebSearchBlock(): 添加 Web 搜索结果块
116
+ * - appendExecuteCodeBlock(): 添加代码执行结果块
117
+ * 注意:该方法应该只处理数据解析逻辑,通过调用 append*Block 方法来更新界面
118
+ * @param eventMessage 接收到的一条 Event Message
119
+ * @param prev 上一次增量更新后的 AssistantMessage 对象
120
+ * @param messageId 当前正在更新的消息 ID,用于调用 append*Block 方法
121
+ * @returns 返回更新后的 AssistantMessage 对象
122
+ */
123
+ abstract reduceAssistantMessage<T = any, K = any>(eventMessage: T, prev: K, messageId: string): K;
124
+ /**
125
+ * 检查是否需要刷新 token (抽象方法,由子类实现)
126
+ * 当发生异常时检查是否需要刷新 token。返回 true 表示需要刷新 token,返回 false 表示无需刷新 token。
127
+ * 该方法需要由子类继承并重写,以适配扣子、Dify 等 LLMOps 平台的接口。
128
+ * 注意:该方法是一个无状态无副作用的函数,不允许修改 state。
129
+ * @param status HTTP 状态码
130
+ * @param error 错误响应体
131
+ * @returns 返回是否需要刷新 token
132
+ */
133
+ abstract shouldRefreshToken(status: number, error: any): boolean;
134
+ /**
135
+ * 终止会话 (抽象方法,由子类实现)
136
+ * 该方法需要由子类继承并重写,以适配扣子、Dify 等 LLMOps 平台的接口。
137
+ * 注意:该方法是一个无状态无副作用的函数,不允许修改 state。
138
+ * @param conversationId 要终止的会话 ID
139
+ * @returns 返回 Promise,成功时 resolve,失败时 reject
140
+ */
141
+ abstract terminateConversation(conversationId: string): Promise<void>;
142
+ /**
143
+ * 获取历史会话列表 (抽象方法,由子类实现)
144
+ * 该方法需要由子类继承并重写,以适配扣子、Dify 等 LLMOps 平台的接口。
145
+ * 注意:该方法是一个无状态无副作用的函数,不允许修改 state。
146
+ * @param page 分页页码,默认为 1
147
+ * @param size 每页返回条数,默认为 10
148
+ * @returns 返回历史会话列表
149
+ */
150
+ abstract getConversations(page?: number, size?: number): Promise<import('../../types').ConversationHistory[]>;
151
+ /**
152
+ * 获取指定会话 ID 的对话消息列表 (抽象方法,由子类实现)
153
+ * 该方法需要由子类继承并重写,以适配扣子、Dify 等 LLMOps 平台的接口。
154
+ * 如果对话消息是 AI 助手消息,则需要调用 reduceAssistantMessage() 解析消息。
155
+ * 注意:该方法是一个无状态无副作用的函数,不允许修改 state。
156
+ * @param conversationId 会话 ID
157
+ * @returns 返回对话消息列表
158
+ */
159
+ abstract getConversationMessages(conversationId: string): Promise<ChatMessage[]>;
160
+ /**
161
+ * 删除指定 ID 的会话 (抽象方法,由子类实现)
162
+ * 该方法需要由子类继承并重写,以适配扣子、Dify 等 LLMOps 平台的接口。
163
+ * 注意:该方法是一个无状态无副作用的函数,不允许修改 state。
164
+ * @param conversationID 会话 ID
165
+ * @returns 返回 Promise,成功时 resolve,失败时 reject
166
+ */
167
+ abstract deleteConversation(conversationID: string): Promise<void>;
168
+ /**
169
+ * 向 ChatKit 注入应用上下文
170
+ * @param ctx 要注入的应用上下文
171
+ */
172
+ injectApplicationContext: (ctx: ApplicationContext) => void;
173
+ /**
174
+ * 移除注入的应用上下文
175
+ */
176
+ removeApplicationContext: () => void;
177
+ /**
178
+ * 添加或更新 Markdown 类型的消息块
179
+ * 该方法由子类调用,用于在消息中添加或更新 Markdown 内容块
180
+ * 如果最后一个块是 Markdown 块且内容为空或是 text 的前缀,则更新它(流式更新场景)
181
+ * 否则添加新的 Markdown 块(新阶段场景)
182
+ * @param messageId 消息 ID
183
+ * @param text 要添加或更新的 Markdown 文本,每次都传完整的文本
184
+ */
185
+ protected appendMarkdownBlock(messageId: string, text: string): void;
186
+ /**
187
+ * 添加 Web 搜索类型的消息块
188
+ * 该方法由子类调用,用于在消息中添加 Web 搜索结果
189
+ * @param messageId 消息 ID
190
+ * @param query Web 搜索的执行详情
191
+ */
192
+ protected appendWebSearchBlock(messageId: string, query: WebSearchQuery): void;
193
+ /**
194
+ * 添加代码执行工具类型的消息块
195
+ * 该方法由子类调用,用于在消息中添加代码执行结果
196
+ * @param messageId 消息 ID
197
+ * @param result 代码执行的输入和输出结果
198
+ */
199
+ protected appendExecuteCodeBlock(messageId: string, result: ExecuteCodeResult): void;
200
+ /**
201
+ * 创建新的会话
202
+ * 内部会调用子类实现的 generateConversation() 和 getOnboardingInfo() 方法
203
+ */
204
+ createConversation: () => Promise<void>;
205
+ /**
206
+ * 加载历史会话
207
+ * 该方法从后端加载指定 ID 的历史会话消息,并更新到组件状态中
208
+ * @param conversationId 要加载的会话 ID
209
+ */
210
+ loadConversation: (conversationId: string) => Promise<void>;
211
+ /**
212
+ * 清除会话中的对话消息及会话 ID
213
+ */
214
+ private clearConversation;
215
+ /**
216
+ * 发送消息的核心方法
217
+ * 该方法是暴露给集成方进行调用的接口,内部会调用子类实现的 sendMessage() 方法
218
+ * @param text 用户输入的文本
219
+ * @param ctx 应用上下文
220
+ * @param conversationID 发送的对话消息所属的会话 ID(可选)
221
+ * @returns 返回发送的消息结构
222
+ */
223
+ send: (text: string, ctx?: ApplicationContext, conversationID?: string) => Promise<ChatMessage>;
224
+ /**
225
+ * 处理流式响应
226
+ * 在闭包中处理 EventStream,并在处理完成后丢弃闭包
227
+ * @param reader ReadableStreamDefaultReader
228
+ * @param assistantMessageId 助手消息 ID
229
+ */
230
+ protected handleStreamResponse<T = any>(reader: ReadableStreamDefaultReader<Uint8Array>, assistantMessageId: string): Promise<T>;
231
+ /**
232
+ * 执行 API 调用,并在需要时自动刷新 token 并重试一次
233
+ * @param apiCall API 调用函数
234
+ * @returns API 调用结果
235
+ */
236
+ protected executeWithTokenRefresh<T>(apiCall: () => Promise<T>): Promise<T>;
237
+ /**
238
+ * 处理发送按钮点击
239
+ */
240
+ protected handleSend: () => Promise<void>;
241
+ /**
242
+ * 处理停止流式响应
243
+ * 调用子类实现的 terminateConversation 方法终止当前会话
244
+ */
245
+ protected handleStop: () => Promise<void>;
246
+ /**
247
+ * 更新用户输入
248
+ */
249
+ protected setTextInput: (value: string) => void;
250
+ /**
251
+ * 处理推荐问题点击
252
+ */
253
+ protected handleQuestionClick: (question: string) => void;
254
+ /**
255
+ * 渲染组件 (抽象方法,由子类实现)
256
+ * 子类需要实现该方法以渲染不同的界面
257
+ * CopilotBase 和 AssistantBase 会分别实现各自的渲染逻辑
258
+ */
259
+ abstract render(): React.ReactNode;
260
+ }
261
+ export default ChatKitBase;
@@ -0,0 +1,17 @@
1
+ import { ChatKitBase, ChatKitBaseProps } from '../ChatKitBase';
2
+ /**
3
+ * AssistantBase 基础组件
4
+ * 作为主交互入口,是应用的主体
5
+ *
6
+ * 该类继承自 ChatKitBase,实现了 Assistant 模式的交互界面和交互逻辑
7
+ * 区别于 CopilotBase,AssistantBase 是全屏主对话界面,不包含 Header
8
+ * Header(历史对话、新对话等按钮)应由外部应用的侧边栏提供
9
+ */
10
+ export declare abstract class AssistantBase<P extends ChatKitBaseProps = ChatKitBaseProps> extends ChatKitBase<P> {
11
+ /**
12
+ * 实现 React.Component.render() 方法
13
+ * 渲染 Assistant 模式的界面
14
+ */
15
+ render(): import("react/jsx-runtime").JSX.Element | null;
16
+ }
17
+ export default AssistantBase;
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ /**
3
+ * Header 组件的属性接口
4
+ */
5
+ interface HeaderProps {
6
+ /** 组件标题 */
7
+ title?: string;
8
+ /** 关闭组件的回调函数 */
9
+ onClose?: () => void;
10
+ /** 新建会话的回调函数 */
11
+ onNewChat?: () => void;
12
+ /** 查看历史对话的回调函数 */
13
+ onHistory?: () => void;
14
+ }
15
+ /**
16
+ * Header 组件
17
+ * Assistant 的头部组件,右侧显示历史对话和新对话按钮
18
+ */
19
+ declare const Header: React.FC<HeaderProps>;
20
+ export default Header;
@@ -0,0 +1,29 @@
1
+ import React from 'react';
2
+ import { ApplicationContext } from '../../../types';
3
+ /**
4
+ * InputArea 组件的属性接口
5
+ */
6
+ interface InputAreaProps {
7
+ /** 输入框的值 */
8
+ value: string;
9
+ /** 输入框值变化的回调 */
10
+ onChange: (value: string) => void;
11
+ /** 发送消息的回调 */
12
+ onSend: () => void;
13
+ /** 当前的应用上下文 */
14
+ context?: ApplicationContext;
15
+ /** 移除上下文的回调 */
16
+ onRemoveContext: () => void;
17
+ /** 是否禁用输入 */
18
+ disabled?: boolean;
19
+ /** 是否正在接收 AI 助手的流式响应 */
20
+ isStreaming?: boolean;
21
+ /** 停止当前流式响应的回调 */
22
+ onStop?: () => void;
23
+ }
24
+ /**
25
+ * InputArea 组件
26
+ * 用户输入区域,包括上下文显示和输入框
27
+ */
28
+ declare const InputArea: React.FC<InputAreaProps>;
29
+ export default InputArea;
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { ChatMessage } from '../../../types';
3
+ /**
4
+ * MessageItem 组件的属性接口
5
+ */
6
+ interface MessageItemProps {
7
+ /** 消息对象 */
8
+ message: ChatMessage;
9
+ }
10
+ /**
11
+ * MessageItem 组件
12
+ * 显示单条消息
13
+ */
14
+ declare const MessageItem: React.FC<MessageItemProps>;
15
+ export default MessageItem;
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { ChatMessage } from '../../../types';
3
+ /**
4
+ * MessageList 组件的属性接口
5
+ */
6
+ interface MessageListProps {
7
+ /** 消息列表 */
8
+ messages: ChatMessage[];
9
+ }
10
+ /**
11
+ * MessageList 组件
12
+ * 显示对话消息列表
13
+ */
14
+ declare const MessageList: React.FC<MessageListProps>;
15
+ export default MessageList;
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ /**
3
+ * Prologue 组件的属性接口
4
+ */
5
+ interface PrologueProps {
6
+ /** 点击推荐问题时的回调函数 */
7
+ onQuestionClick?: (question: string) => void;
8
+ /** 开场白文案 */
9
+ prologue?: string;
10
+ /** 预置问题列表 */
11
+ predefinedQuestions?: string[];
12
+ }
13
+ /**
14
+ * Prologue 组件
15
+ * Assistant 的欢迎界面,显示开场白和预设问题
16
+ */
17
+ declare const Prologue: React.FC<PrologueProps>;
18
+ export default Prologue;
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { MarkdownBlock as MarkdownBlockType } from '../../../../types';
3
+ /**
4
+ * MarkdownBlock 组件的属性接口
5
+ */
6
+ export interface MarkdownBlockProps {
7
+ /** Markdown 块数据 */
8
+ block: MarkdownBlockType;
9
+ }
10
+ /**
11
+ * MarkdownBlock 组件
12
+ * 用于渲染 Markdown 类型的消息块
13
+ */
14
+ declare const MarkdownBlock: React.FC<MarkdownBlockProps>;
15
+ export default MarkdownBlock;
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { TextBlock as TextBlockType } from '../../../../types';
3
+ /**
4
+ * TextBlock 组件的属性接口
5
+ */
6
+ export interface TextBlockProps {
7
+ /** 文本块数据 */
8
+ block: TextBlockType;
9
+ }
10
+ /**
11
+ * TextBlock 组件
12
+ * 用于渲染文本类型的消息块
13
+ */
14
+ declare const TextBlock: React.FC<TextBlockProps>;
15
+ export default TextBlock;
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ import { ToolBlock as ToolBlockType } from '../../../../types';
3
+ /**
4
+ * ToolBlock 组件的属性接口
5
+ */
6
+ export interface ToolBlockProps {
7
+ /** 工具块数据 */
8
+ block: ToolBlockType;
9
+ }
10
+ /**
11
+ * ToolBlock 组件
12
+ * 用于在消息流中渲染工具调用块的通用组件
13
+ * 支持传入自定义图标和标题,并可点击右侧箭头查看详情
14
+ */
15
+ declare const ToolBlock: React.FC<ToolBlockProps>;
16
+ export default ToolBlock;
@@ -0,0 +1,26 @@
1
+ import React from 'react';
2
+ /**
3
+ * ToolDrawer 组件的属性接口
4
+ */
5
+ export interface ToolDrawerProps {
6
+ /** 抽屉是否打开 */
7
+ isOpen: boolean;
8
+ /** 关闭抽屉的回调函数 */
9
+ onClose: () => void;
10
+ /** 工具名称 */
11
+ toolName: string;
12
+ /** 工具标题 */
13
+ toolTitle: string;
14
+ /** 工具图标 */
15
+ toolIcon?: string | React.ReactNode;
16
+ /** 工具输入参数 */
17
+ input?: any;
18
+ /** 工具输出结果 */
19
+ output?: any;
20
+ }
21
+ /**
22
+ * ToolDrawer 组件
23
+ * 用于展示工具调用的详细信息(输入和输出)的抽屉组件
24
+ */
25
+ declare const ToolDrawer: React.FC<ToolDrawerProps>;
26
+ export default ToolDrawer;
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ import { WebSearchBlock as WebSearchBlockType } from '../../../../types';
3
+ /**
4
+ * WebSearchBlock 组件的属性接口
5
+ */
6
+ export interface WebSearchBlockProps {
7
+ /** Web 搜索块数据 */
8
+ block: WebSearchBlockType;
9
+ }
10
+ /**
11
+ * WebSearchBlock 组件
12
+ * 用于渲染 Web 搜索类型的消息块
13
+ * 现在使用通用的 ToolBlock 组件来展示工具调用信息
14
+ */
15
+ declare const WebSearchBlock: React.FC<WebSearchBlockProps>;
16
+ export default WebSearchBlock;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Block 组件导出文件
3
+ * 导出所有类型的 Block 组件
4
+ */
5
+ export { default as TextBlock } from './TextBlock';
6
+ export { default as MarkdownBlock } from './MarkdownBlock';
7
+ export { default as WebSearchBlock } from './WebSearchBlock';
8
+ export { default as ToolBlock } from './ToolBlock';
9
+ export { default as ToolDrawer } from './ToolDrawer';
@@ -0,0 +1,16 @@
1
+ import { ChatKitBase, ChatKitBaseProps } from '../ChatKitBase';
2
+ /**
3
+ * CopilotBase 基础组件
4
+ * 右侧跟随的 AI 助手,为应用提供辅助对话
5
+ *
6
+ * 该类继承自 ChatKitBase,实现了 Copilot 模式的交互界面和交互逻辑
7
+ * 区别于 AssistantBase,CopilotBase 在 render() 函数中渲染 Copilot 模式的界面
8
+ */
9
+ export declare abstract class CopilotBase<P extends ChatKitBaseProps = ChatKitBaseProps> extends ChatKitBase<P> {
10
+ /**
11
+ * 实现 React.Component.render() 方法
12
+ * 渲染 Copilot 模式的界面
13
+ */
14
+ render(): import("react/jsx-runtime").JSX.Element | null;
15
+ }
16
+ export default CopilotBase;
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ /**
3
+ * Header 组件的属性接口
4
+ */
5
+ interface HeaderProps {
6
+ /** 组件标题 */
7
+ title?: string;
8
+ /** 关闭组件的回调函数 */
9
+ onClose?: () => void;
10
+ /** 新建会话的回调函数 */
11
+ onNewChat?: () => void;
12
+ /** 展开/收起的回调函数 */
13
+ onExpand?: () => void;
14
+ /** 更多选项的回调函数 */
15
+ onMore?: () => void;
16
+ }
17
+ /**
18
+ * Header 组件
19
+ * ChatKit 的头部组件,包含 Logo、标题和操作按钮
20
+ */
21
+ declare const Header: React.FC<HeaderProps>;
22
+ export default Header;
@@ -0,0 +1,29 @@
1
+ import React from 'react';
2
+ import { ApplicationContext } from '../../../types';
3
+ /**
4
+ * InputArea 组件的属性接口
5
+ */
6
+ interface InputAreaProps {
7
+ /** 输入框的值 */
8
+ value: string;
9
+ /** 输入框值变化的回调 */
10
+ onChange: (value: string) => void;
11
+ /** 发送消息的回调 */
12
+ onSend: () => void;
13
+ /** 当前的应用上下文 */
14
+ context?: ApplicationContext;
15
+ /** 移除上下文的回调 */
16
+ onRemoveContext: () => void;
17
+ /** 是否禁用输入 */
18
+ disabled?: boolean;
19
+ /** 是否正在接收 AI 助手的流式响应 */
20
+ isStreaming?: boolean;
21
+ /** 停止当前流式响应的回调 */
22
+ onStop?: () => void;
23
+ }
24
+ /**
25
+ * InputArea 组件
26
+ * 用户输入区域,包括上下文显示和输入框
27
+ */
28
+ declare const InputArea: React.FC<InputAreaProps>;
29
+ export default InputArea;
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { ChatMessage } from '../../../types';
3
+ /**
4
+ * MessageItem 组件的属性接口
5
+ */
6
+ interface MessageItemProps {
7
+ /** 消息对象 */
8
+ message: ChatMessage;
9
+ }
10
+ /**
11
+ * MessageItem 组件
12
+ * 显示单条消息
13
+ */
14
+ declare const MessageItem: React.FC<MessageItemProps>;
15
+ export default MessageItem;
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { ChatMessage } from '../../../types';
3
+ /**
4
+ * MessageList 组件的属性接口
5
+ */
6
+ interface MessageListProps {
7
+ /** 消息列表 */
8
+ messages: ChatMessage[];
9
+ }
10
+ /**
11
+ * MessageList 组件
12
+ * 显示对话消息列表
13
+ */
14
+ declare const MessageList: React.FC<MessageListProps>;
15
+ export default MessageList;
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ /**
3
+ * Prologue 组件的属性接口
4
+ */
5
+ interface PrologueProps {
6
+ /** 点击推荐问题时的回调函数 */
7
+ onQuestionClick?: (question: string) => void;
8
+ /** 开场白文案 */
9
+ prologue?: string;
10
+ /** 预置问题列表 */
11
+ predefinedQuestions?: string[];
12
+ }
13
+ /**
14
+ * Prologue 组件
15
+ * ChatKit 的欢迎界面,显示欢迎语和推荐问题
16
+ */
17
+ declare const Prologue: React.FC<PrologueProps>;
18
+ export default Prologue;
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { MarkdownBlock as MarkdownBlockType } from '../../../../types';
3
+ /**
4
+ * MarkdownBlock 组件的属性接口
5
+ */
6
+ export interface MarkdownBlockProps {
7
+ /** Markdown 块数据 */
8
+ block: MarkdownBlockType;
9
+ }
10
+ /**
11
+ * MarkdownBlock 组件
12
+ * 用于渲染 Markdown 类型的消息块
13
+ */
14
+ declare const MarkdownBlock: React.FC<MarkdownBlockProps>;
15
+ export default MarkdownBlock;
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { TextBlock as TextBlockType } from '../../../../types';
3
+ /**
4
+ * TextBlock 组件的属性接口
5
+ */
6
+ export interface TextBlockProps {
7
+ /** 文本块数据 */
8
+ block: TextBlockType;
9
+ }
10
+ /**
11
+ * TextBlock 组件
12
+ * 用于渲染文本类型的消息块
13
+ */
14
+ declare const TextBlock: React.FC<TextBlockProps>;
15
+ export default TextBlock;
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ import { ToolBlock as ToolBlockType } from '../../../../types';
3
+ /**
4
+ * ToolBlock 组件的属性接口
5
+ */
6
+ export interface ToolBlockProps {
7
+ /** 工具块数据 */
8
+ block: ToolBlockType;
9
+ }
10
+ /**
11
+ * ToolBlock 组件
12
+ * 用于在消息流中渲染工具调用块的通用组件
13
+ * 支持传入自定义图标和标题,并可点击右侧箭头查看详情
14
+ */
15
+ declare const ToolBlock: React.FC<ToolBlockProps>;
16
+ export default ToolBlock;