@ai-group/chat-sdk 3.1.1 → 3.2.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 (58) hide show
  1. package/dist/cjs/components/XAdkProvider/compound/Sidebar.js +3 -3
  2. package/dist/cjs/components/XAdkProvider/compound/Sidebar.js.map +2 -2
  3. package/dist/cjs/components/XAdkProvider/context/ChatActionContext.d.ts +6 -0
  4. package/dist/cjs/components/XAdkProvider/context/ChatActionContext.js.map +2 -2
  5. package/dist/cjs/components/XAdkProvider/context/SessionContext.d.ts +1 -1
  6. package/dist/cjs/components/XAdkProvider/context/SessionContext.js.map +1 -1
  7. package/dist/cjs/components/XAdkProvider/index.d.ts +2 -2
  8. package/dist/cjs/components/XAdkProvider/index.js +14 -8
  9. package/dist/cjs/components/XAdkProvider/index.js.map +2 -2
  10. package/dist/cjs/components/XAdkSender/index.js +1 -1
  11. package/dist/cjs/components/XAdkSender/index.js.map +1 -1
  12. package/dist/cjs/components/XAiProvider/index.js +4 -4
  13. package/dist/cjs/components/XAiProvider/index.js.map +2 -2
  14. package/dist/cjs/hooks/useADKChat.d.ts +2 -1
  15. package/dist/cjs/hooks/useADKChat.js +23 -6
  16. package/dist/cjs/hooks/useADKChat.js.map +2 -2
  17. package/dist/cjs/hooks/useAgentGenerator.d.ts +1 -1
  18. package/dist/cjs/hooks/useAgentGenerator.js +3 -3
  19. package/dist/cjs/hooks/useAgentGenerator.js.map +2 -2
  20. package/dist/cjs/types/ChatHook.d.ts +7 -1
  21. package/dist/cjs/types/ChatHook.js.map +1 -1
  22. package/dist/cjs/types/XAdkProvider.d.ts +16 -1
  23. package/dist/cjs/types/XAdkProvider.js.map +1 -1
  24. package/dist/cjs/types/XAiProvider.d.ts +1 -1
  25. package/dist/cjs/types/XAiProvider.js.map +1 -1
  26. package/dist/cjs/utils/umdEntry.d.ts +38 -8
  27. package/dist/cjs/utils/umdEntry.js +57 -9
  28. package/dist/cjs/utils/umdEntry.js.map +2 -2
  29. package/dist/esm/components/XAdkProvider/compound/Sidebar.js +3 -3
  30. package/dist/esm/components/XAdkProvider/compound/Sidebar.js.map +1 -1
  31. package/dist/esm/components/XAdkProvider/context/ChatActionContext.d.ts +6 -0
  32. package/dist/esm/components/XAdkProvider/context/ChatActionContext.js.map +1 -1
  33. package/dist/esm/components/XAdkProvider/context/SessionContext.d.ts +1 -1
  34. package/dist/esm/components/XAdkProvider/context/SessionContext.js.map +1 -1
  35. package/dist/esm/components/XAdkProvider/index.d.ts +2 -2
  36. package/dist/esm/components/XAdkProvider/index.js +12 -8
  37. package/dist/esm/components/XAdkProvider/index.js.map +1 -1
  38. package/dist/esm/components/XAdkSender/index.js +1 -1
  39. package/dist/esm/components/XAdkSender/index.js.map +1 -1
  40. package/dist/esm/components/XAiProvider/index.js +4 -4
  41. package/dist/esm/components/XAiProvider/index.js.map +1 -1
  42. package/dist/esm/hooks/useADKChat.d.ts +2 -1
  43. package/dist/esm/hooks/useADKChat.js +35 -15
  44. package/dist/esm/hooks/useADKChat.js.map +1 -1
  45. package/dist/esm/hooks/useAgentGenerator.d.ts +1 -1
  46. package/dist/esm/hooks/useAgentGenerator.js +4 -4
  47. package/dist/esm/hooks/useAgentGenerator.js.map +1 -1
  48. package/dist/esm/types/ChatHook.d.ts +7 -1
  49. package/dist/esm/types/ChatHook.js.map +1 -1
  50. package/dist/esm/types/XAdkProvider.d.ts +16 -1
  51. package/dist/esm/types/XAdkProvider.js.map +1 -1
  52. package/dist/esm/types/XAiProvider.d.ts +1 -1
  53. package/dist/esm/types/XAiProvider.js.map +1 -1
  54. package/dist/esm/utils/umdEntry.d.ts +38 -8
  55. package/dist/esm/utils/umdEntry.js +90 -24
  56. package/dist/esm/utils/umdEntry.js.map +1 -1
  57. package/dist/umd/chat-sdk.min.js +1 -1
  58. package/package.json +14 -12
@@ -132,7 +132,7 @@ export interface XAiProviderHandle {
132
132
  * @type {(id: string) => void}
133
133
  * @version 1.0.0
134
134
  */
135
- setCurrentSessionDetail: (id: string) => void;
135
+ setCurrentSession: (id: string) => void;
136
136
  }
137
137
  export interface sessionConfig {
138
138
  /**
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/types/XAiProvider.ts"],
4
- "sourcesContent": ["// context/ProviderContext.ts\nimport React, { ReactNode } from 'react';\nimport { AiClient } from 'src/client/base';\nimport type { ChatbotMessageFields } from './XAiChatbot';\nimport type { Messages, SendContent, SessionData, ChatConfig, ThemeType } from '@/types';\n\n/**\n * 错误码枚举(数字格式)\n * @enum {string}\n * @version 1.0.0\n */\nexport enum ErrorCodeNum {\n /** 应用下架 */\n APP_NOT_ENABLE = 'client_50017',\n /** 应用删除 */\n APP_DELETED = 'client_50017',\n /** 无该应用 */\n APP_NOT_FOUND = 'client_59999',\n /** 接口报错 */\n API_ERROR = 'client_50054',\n}\n\n/**\n * 错误码枚举\n * @enum {string}\n * @version 1.0.0\n */\nexport enum ErrorCode {\n /** 应用未启用 */\n APP_NOT_ENABLE = 'APP_NOT_ENABLE',\n /** 应用已删除 */\n APP_DELETED = 'APP_DELETED',\n /** 应用未找到 */\n APP_NOT_FOUND = 'APP_NOT_FOUND',\n /** API 错误 */\n API_ERROR = 'API_ERROR',\n}\n\n/**\n * 错误码映射表\n * @type {Record<string, {code: ErrorCode, message: string}>}\n * @version 1.0.0\n */\nexport const ErrorCodeMap = {\n client_50017: {\n code: ErrorCode.APP_NOT_ENABLE,\n message: '该应用已删除或已下架',\n },\n client_50054: {\n code: ErrorCode.API_ERROR,\n message: '应用服务端出错',\n },\n};\n\n/**\n * 成功状态码枚举\n * @enum {string}\n * @version 1.0.0\n */\nexport enum SuccessCode {\n /** 应用配置初始化成功 */\n APP_CONFIG_INIT_SUCCESS = 'APP_CONFIG_INIT_SUCCESS',\n /** 应用消息初始化成功 */\n APP_MESSAGES_INIT_SUCCESS = 'APP_MESSAGES_INIT_SUCCESS',\n}\n\n/**\n * 错误信息接口\n * @interface Error\n * @version 1.0.0\n */\nexport interface Error {\n /** 错误码 */\n code: ErrorCode;\n /** 错误信息 */\n message: string;\n}\n\n/**\n * 成功信息接口\n * @interface Success\n * @version 1.0.0\n */\nexport interface Success {\n /** 成功状态码 */\n code: SuccessCode;\n /** 成功信息 */\n message: string;\n /** 成功数据 */\n data?: any;\n}\n\n/**\n * XAiProvider 操作句柄接口\n * @interface XAiProviderHandle\n * @version 1.0.0\n */\nexport interface XAiProviderHandle {\n /**\n * 发送聊天消息\n * @param content - 消息内容\n * @type {(content: string) => void}\n * @version 1.0.0\n */\n chat: (content: SendContent) => void;\n\n /**\n * 停止聊天\n * @type {() => void}\n * @version 1.0.0\n */\n stopChat: () => void;\n\n /**\n * 重新发送聊天\n * @type {() => void}\n * @version 1.0.0\n */\n reChat: () => void;\n\n /**\n * 获取应用信息\n * @returns {any} 应用信息对象\n * @type {() => any}\n * @version 1.0.0\n */\n getAppInfo: () => any;\n\n /**\n * 获取消息列表\n * @returns {Messages[]} 消息数组\n * @type {() => Messages[]}\n * @version 1.0.0\n */\n getMessages: () => Messages[];\n\n /**\n * 获取会话列表\n * @returns {}\n */\n getSessions: () => SessionData[];\n\n /**\n * 重新设置当前会话\n * @param id - 会话ID\n * @type {(id: string) => void}\n * @version 1.0.0\n */\n setCurrentSessionDetail: (id: string) => void;\n}\n\nexport interface sessionConfig {\n /**\n * 是否展示会话列表\n * @type {boolean}\n * @default false\n */\n showSessionList?: boolean;\n}\n\n\n/**\n * XAiProvider 配置接口\n * @interface XAiProviderConfig\n * @version 1.0.0\n */\nexport interface XAiProviderConfig {\n /**\n * 应用唯一编号\n * @type {string}\n * @default undefined\n * @version 1.0.0\n */\n appNo?: string;\n\n /**\n * 会话配置\n * @type {sessionConfig}\n */\n session?: sessionConfig;\n\n /**\n * 对话框配置\n * @type {ChatConfig}\n */\n chatProps?: ChatConfig;\n\n /**\n * 是否启用调试模式\n * @type {boolean}\n * @default false\n * @version 1.0.0\n */\n debug?: boolean;\n}\n\n/**\n * XAiProvider 组件属性接口\n * @interface XAiProviderProps\n * @version 1.0.0\n */\nexport interface XAiProviderProps {\n /**\n * AI 服务地址\n * @type {string}\n * @version 1.0.0\n */\n url: string;\n\n /**\n * 认证 token\n * @type {string}\n * @version 1.0.0\n */\n token: string;\n\n /**\n * 配置信息\n * @type {XAiProviderConfig}\n * @default undefined\n * @version 1.0.0\n */\n config?: XAiProviderConfig;\n\n /**\n * Provider 唯一标识,用于区分多个 Provider 实例\n * @type {string}\n * @default undefined\n * @version 1.0.0\n */\n providerId?: string;\n\n /**\n * Token 刷新回调\n * @type {() => Promise<string>}\n * @default undefined\n * @version 1.0.0\n */\n onRefreshToken?: () => Promise<string>;\n\n /**\n * 应用无法正常渲染回调\n * @type {(error: Error) => void}\n * @default undefined\n * @version 1.0.0\n */\n onError?: (error: Error) => void;\n\n /**\n * 应用正常渲染回调\n * @type {(success: Success) => void}\n * @default undefined\n * @version 1.0.0\n */\n onSuccess?: (success: Success) => void;\n\n /**\n * 消息返回回调\n * @type {(data: Messages) => void}\n * @default undefined\n * @version 1.0.0\n */\n onMessage?: (content: string, data: Messages) => void;\n\n /**\n * 子组件\n * @type {ReactNode}\n * @version 1.0.0\n */\n children: ReactNode;\n}\n\n/**\n * XAiSDK 组件属性接口\n * @interface XAiSDKProps\n * @extends XAiProviderProps\n * @version 1.0.0\n */\nexport interface XAiSDKProps extends XAiProviderProps {\n /**\n * 主题类型\n * @type {ThemeType}\n * @default 'default'\n * @version 1.0.0\n */\n theme?: ThemeType;\n\n /**\n * 组件属性配置\n * @type {object}\n * @default undefined\n * @version 1.0.0\n */\n componentProps?: {\n /**\n * 组件ID\n * @type {string}\n * @default undefined\n * @version 1.0.0\n */\n id?: string;\n /** 支持任意 CSS 属性 */\n [key: string]: any;\n };\n}\n\n/**\n * XAi 上下文类型接口\n * @interface XAiContextType\n * @extends Required<ChatbotMessageFields>\n * @version 1.0.0\n */\nexport interface XAiContextType extends Required<ChatbotMessageFields> {\n /**\n * AI 客户端实例\n * @type {AiClient | null}\n * @default null\n * @version 1.0.0\n */\n client: AiClient | null;\n\n /**\n * 认证令牌\n * @type {string}\n * @version 1.0.0\n */\n token: string;\n\n /**\n * 加载状态\n * @type {boolean}\n * @default false\n * @version 1.0.0\n */\n loading: boolean;\n\n /**\n * 错误信息\n * @type {string | null}\n * @default null\n * @version 1.0.0\n */\n error: string | null;\n}\n\n/**\n * XAi 上下文对象\n * @type {React.Context<XAiContextType | null>}\n * @version 1.0.0\n */\nexport const XAiContext = React.createContext<XAiContextType | null>(null);\n"],
4
+ "sourcesContent": ["// context/ProviderContext.ts\nimport React, { ReactNode } from 'react';\nimport { AiClient } from 'src/client/base';\nimport type { ChatbotMessageFields } from './XAiChatbot';\nimport type { Messages, SendContent, SessionData, ChatConfig, ThemeType } from '@/types';\n\n/**\n * 错误码枚举(数字格式)\n * @enum {string}\n * @version 1.0.0\n */\nexport enum ErrorCodeNum {\n /** 应用下架 */\n APP_NOT_ENABLE = 'client_50017',\n /** 应用删除 */\n APP_DELETED = 'client_50017',\n /** 无该应用 */\n APP_NOT_FOUND = 'client_59999',\n /** 接口报错 */\n API_ERROR = 'client_50054',\n}\n\n/**\n * 错误码枚举\n * @enum {string}\n * @version 1.0.0\n */\nexport enum ErrorCode {\n /** 应用未启用 */\n APP_NOT_ENABLE = 'APP_NOT_ENABLE',\n /** 应用已删除 */\n APP_DELETED = 'APP_DELETED',\n /** 应用未找到 */\n APP_NOT_FOUND = 'APP_NOT_FOUND',\n /** API 错误 */\n API_ERROR = 'API_ERROR',\n}\n\n/**\n * 错误码映射表\n * @type {Record<string, {code: ErrorCode, message: string}>}\n * @version 1.0.0\n */\nexport const ErrorCodeMap = {\n client_50017: {\n code: ErrorCode.APP_NOT_ENABLE,\n message: '该应用已删除或已下架',\n },\n client_50054: {\n code: ErrorCode.API_ERROR,\n message: '应用服务端出错',\n },\n};\n\n/**\n * 成功状态码枚举\n * @enum {string}\n * @version 1.0.0\n */\nexport enum SuccessCode {\n /** 应用配置初始化成功 */\n APP_CONFIG_INIT_SUCCESS = 'APP_CONFIG_INIT_SUCCESS',\n /** 应用消息初始化成功 */\n APP_MESSAGES_INIT_SUCCESS = 'APP_MESSAGES_INIT_SUCCESS',\n}\n\n/**\n * 错误信息接口\n * @interface Error\n * @version 1.0.0\n */\nexport interface Error {\n /** 错误码 */\n code: ErrorCode;\n /** 错误信息 */\n message: string;\n}\n\n/**\n * 成功信息接口\n * @interface Success\n * @version 1.0.0\n */\nexport interface Success {\n /** 成功状态码 */\n code: SuccessCode;\n /** 成功信息 */\n message: string;\n /** 成功数据 */\n data?: any;\n}\n\n/**\n * XAiProvider 操作句柄接口\n * @interface XAiProviderHandle\n * @version 1.0.0\n */\nexport interface XAiProviderHandle {\n /**\n * 发送聊天消息\n * @param content - 消息内容\n * @type {(content: string) => void}\n * @version 1.0.0\n */\n chat: (content: SendContent) => void;\n\n /**\n * 停止聊天\n * @type {() => void}\n * @version 1.0.0\n */\n stopChat: () => void;\n\n /**\n * 重新发送聊天\n * @type {() => void}\n * @version 1.0.0\n */\n reChat: () => void;\n\n /**\n * 获取应用信息\n * @returns {any} 应用信息对象\n * @type {() => any}\n * @version 1.0.0\n */\n getAppInfo: () => any;\n\n /**\n * 获取消息列表\n * @returns {Messages[]} 消息数组\n * @type {() => Messages[]}\n * @version 1.0.0\n */\n getMessages: () => Messages[];\n\n /**\n * 获取会话列表\n * @returns {}\n */\n getSessions: () => SessionData[];\n\n /**\n * 重新设置当前会话\n * @param id - 会话ID\n * @type {(id: string) => void}\n * @version 1.0.0\n */\n setCurrentSession: (id: string) => void;\n}\n\nexport interface sessionConfig {\n /**\n * 是否展示会话列表\n * @type {boolean}\n * @default false\n */\n showSessionList?: boolean;\n}\n\n\n/**\n * XAiProvider 配置接口\n * @interface XAiProviderConfig\n * @version 1.0.0\n */\nexport interface XAiProviderConfig {\n /**\n * 应用唯一编号\n * @type {string}\n * @default undefined\n * @version 1.0.0\n */\n appNo?: string;\n\n /**\n * 会话配置\n * @type {sessionConfig}\n */\n session?: sessionConfig;\n\n /**\n * 对话框配置\n * @type {ChatConfig}\n */\n chatProps?: ChatConfig;\n\n /**\n * 是否启用调试模式\n * @type {boolean}\n * @default false\n * @version 1.0.0\n */\n debug?: boolean;\n}\n\n/**\n * XAiProvider 组件属性接口\n * @interface XAiProviderProps\n * @version 1.0.0\n */\nexport interface XAiProviderProps {\n /**\n * AI 服务地址\n * @type {string}\n * @version 1.0.0\n */\n url: string;\n\n /**\n * 认证 token\n * @type {string}\n * @version 1.0.0\n */\n token: string;\n\n /**\n * 配置信息\n * @type {XAiProviderConfig}\n * @default undefined\n * @version 1.0.0\n */\n config?: XAiProviderConfig;\n\n /**\n * Provider 唯一标识,用于区分多个 Provider 实例\n * @type {string}\n * @default undefined\n * @version 1.0.0\n */\n providerId?: string;\n\n /**\n * Token 刷新回调\n * @type {() => Promise<string>}\n * @default undefined\n * @version 1.0.0\n */\n onRefreshToken?: () => Promise<string>;\n\n /**\n * 应用无法正常渲染回调\n * @type {(error: Error) => void}\n * @default undefined\n * @version 1.0.0\n */\n onError?: (error: Error) => void;\n\n /**\n * 应用正常渲染回调\n * @type {(success: Success) => void}\n * @default undefined\n * @version 1.0.0\n */\n onSuccess?: (success: Success) => void;\n\n /**\n * 消息返回回调\n * @type {(data: Messages) => void}\n * @default undefined\n * @version 1.0.0\n */\n onMessage?: (content: string, data: Messages) => void;\n\n /**\n * 子组件\n * @type {ReactNode}\n * @version 1.0.0\n */\n children: ReactNode;\n}\n\n/**\n * XAiSDK 组件属性接口\n * @interface XAiSDKProps\n * @extends XAiProviderProps\n * @version 1.0.0\n */\nexport interface XAiSDKProps extends XAiProviderProps {\n /**\n * 主题类型\n * @type {ThemeType}\n * @default 'default'\n * @version 1.0.0\n */\n theme?: ThemeType;\n\n /**\n * 组件属性配置\n * @type {object}\n * @default undefined\n * @version 1.0.0\n */\n componentProps?: {\n /**\n * 组件ID\n * @type {string}\n * @default undefined\n * @version 1.0.0\n */\n id?: string;\n /** 支持任意 CSS 属性 */\n [key: string]: any;\n };\n}\n\n/**\n * XAi 上下文类型接口\n * @interface XAiContextType\n * @extends Required<ChatbotMessageFields>\n * @version 1.0.0\n */\nexport interface XAiContextType extends Required<ChatbotMessageFields> {\n /**\n * AI 客户端实例\n * @type {AiClient | null}\n * @default null\n * @version 1.0.0\n */\n client: AiClient | null;\n\n /**\n * 认证令牌\n * @type {string}\n * @version 1.0.0\n */\n token: string;\n\n /**\n * 加载状态\n * @type {boolean}\n * @default false\n * @version 1.0.0\n */\n loading: boolean;\n\n /**\n * 错误信息\n * @type {string | null}\n * @default null\n * @version 1.0.0\n */\n error: string | null;\n}\n\n/**\n * XAi 上下文对象\n * @type {React.Context<XAiContextType | null>}\n * @version 1.0.0\n */\nexport const XAiContext = React.createContext<XAiContextType | null>(null);\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAAiC;AAU1B,IAAK,eAAL,kBAAKA,kBAAL;AAEL,EAAAA,cAAA,oBAAiB;AAEjB,EAAAA,cAAA,iBAAc;AAEd,EAAAA,cAAA,mBAAgB;AAEhB,EAAAA,cAAA,eAAY;AARF,SAAAA;AAAA,GAAA;AAgBL,IAAK,YAAL,kBAAKC,eAAL;AAEL,EAAAA,WAAA,oBAAiB;AAEjB,EAAAA,WAAA,iBAAc;AAEd,EAAAA,WAAA,mBAAgB;AAEhB,EAAAA,WAAA,eAAY;AARF,SAAAA;AAAA,GAAA;AAgBL,IAAM,eAAe;AAAA,EAC1B,cAAc;AAAA,IACZ,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AAAA,EACA,cAAc;AAAA,IACZ,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AACF;AAOO,IAAK,cAAL,kBAAKC,iBAAL;AAEL,EAAAA,aAAA,6BAA0B;AAE1B,EAAAA,aAAA,+BAA4B;AAJlB,SAAAA;AAAA,GAAA;AAmSL,IAAM,aAAa,aAAAC,QAAM,cAAqC,IAAI;",
6
6
  "names": ["ErrorCodeNum", "ErrorCode", "SuccessCode", "React"]
7
7
  }
@@ -70,7 +70,7 @@ declare class XAiWebSDK {
70
70
  */
71
71
  static create(props: XAdkSDKProps): XAiWebSDK;
72
72
  /**
73
- * 获取当前数据
73
+ * 获取当前数据(聚合方法)
74
74
  * @returns 应用信息、消息列表、会话列表
75
75
  */
76
76
  getData(): {
@@ -78,24 +78,53 @@ declare class XAiWebSDK {
78
78
  messages: IMessage[] | undefined;
79
79
  sessions: any[] | undefined;
80
80
  };
81
+ /**
82
+ * 获取应用信息
83
+ * @returns 应用信息
84
+ */
85
+ getAppInfo(): any;
86
+ /**
87
+ * 获取当前会话的消息列表
88
+ * @returns 消息列表
89
+ */
90
+ getMessages(): IMessage[] | undefined;
91
+ /**
92
+ * 获取会话列表
93
+ * @returns 会话列表
94
+ */
95
+ getSessions(): any[] | undefined;
96
+ /**
97
+ * 设置消息列表
98
+ * @param msgs - 要设置的消息数组
99
+ */
100
+ setMessages(msgs: IMessage[]): void;
81
101
  /**
82
102
  * 发送消息
83
103
  * @param content - 消息内容
84
104
  *
85
105
  * @example
86
106
  * ```javascript
87
- * sdk.chat({ text: 'Hello!' });
107
+ * sdk.startChat({ text: 'Hello!' });
88
108
  * ```
89
109
  */
90
- chat(content: SendContent): void;
110
+ startChat(content: SendContent): void;
91
111
  /**
92
112
  * 停止当前消息生成
93
113
  */
94
- stop(): void;
114
+ stopChat(): void;
115
+ /**
116
+ * 重新生成最后一条回复
117
+ */
118
+ reChat(): void;
95
119
  /**
96
120
  * 清空当前会话
97
121
  */
98
- clear(): void;
122
+ clearChat(): void;
123
+ /**
124
+ * 切换到指定会话
125
+ * @param sessionId - 会话 ID
126
+ */
127
+ setCurrentSession(sessionId: string): void;
99
128
  /**
100
129
  * 删除指定会话
101
130
  * @param sessionId - 会话 ID
@@ -108,9 +137,10 @@ declare class XAiWebSDK {
108
137
  */
109
138
  updateSession(sessionId: string, title: string): void;
110
139
  /**
111
- * 切换到指定会话
112
- * @param sessionId - 会话 ID
140
+ * 设置自定义业务参数 (stateDelta)
141
+ * 设置后每次发送消息时会自动携带至后端
142
+ * @param delta - 自定义参数,传入 undefined 可清除
113
143
  */
114
- switchSession(sessionId: string): void;
144
+ setStateDelta(delta: Record<string, any> | undefined): void;
115
145
  }
116
146
  export default XAiWebSDK;
@@ -149,7 +149,7 @@ var XAiWebSDK = class {
149
149
  }
150
150
  // ————对外暴露的方法————
151
151
  /**
152
- * 获取当前数据
152
+ * 获取当前数据(聚合方法)
153
153
  * @returns 应用信息、消息列表、会话列表
154
154
  */
155
155
  getData() {
@@ -160,33 +160,80 @@ var XAiWebSDK = class {
160
160
  sessions: (_c = this.providerRef.current) == null ? void 0 : _c.getSessions()
161
161
  };
162
162
  }
163
+ /**
164
+ * 获取应用信息
165
+ * @returns 应用信息
166
+ */
167
+ getAppInfo() {
168
+ var _a;
169
+ return (_a = this.providerRef.current) == null ? void 0 : _a.getAppInfo();
170
+ }
171
+ /**
172
+ * 获取当前会话的消息列表
173
+ * @returns 消息列表
174
+ */
175
+ getMessages() {
176
+ var _a;
177
+ return (_a = this.providerRef.current) == null ? void 0 : _a.getMessages();
178
+ }
179
+ /**
180
+ * 获取会话列表
181
+ * @returns 会话列表
182
+ */
183
+ getSessions() {
184
+ var _a;
185
+ return (_a = this.providerRef.current) == null ? void 0 : _a.getSessions();
186
+ }
187
+ /**
188
+ * 设置消息列表
189
+ * @param msgs - 要设置的消息数组
190
+ */
191
+ setMessages(msgs) {
192
+ var _a;
193
+ (_a = this.providerRef.current) == null ? void 0 : _a.setMessages(msgs);
194
+ }
163
195
  /**
164
196
  * 发送消息
165
197
  * @param content - 消息内容
166
198
  *
167
199
  * @example
168
200
  * ```javascript
169
- * sdk.chat({ text: 'Hello!' });
201
+ * sdk.startChat({ text: 'Hello!' });
170
202
  * ```
171
203
  */
172
- chat(content) {
204
+ startChat(content) {
173
205
  var _a;
174
206
  (_a = this.providerRef.current) == null ? void 0 : _a.startChat(content);
175
207
  }
176
208
  /**
177
209
  * 停止当前消息生成
178
210
  */
179
- stop() {
211
+ stopChat() {
180
212
  var _a;
181
213
  (_a = this.providerRef.current) == null ? void 0 : _a.stopChat();
182
214
  }
215
+ /**
216
+ * 重新生成最后一条回复
217
+ */
218
+ reChat() {
219
+ var _a;
220
+ (_a = this.providerRef.current) == null ? void 0 : _a.reChat();
221
+ }
183
222
  /**
184
223
  * 清空当前会话
185
224
  */
186
- clear() {
225
+ clearChat() {
187
226
  var _a;
188
227
  (_a = this.providerRef.current) == null ? void 0 : _a.clearChat();
189
228
  }
229
+ /**
230
+ * 切换到指定会话
231
+ * @param sessionId - 会话 ID
232
+ */
233
+ setCurrentSession(sessionId) {
234
+ var _a;
235
+ (_a = this.providerRef.current) == null ? void 0 : _a.setCurrentSession(sessionId);
236
+ }
190
237
  /**
191
238
  * 删除指定会话
192
239
  * @param sessionId - 会话 ID
@@ -205,12 +252,13 @@ var XAiWebSDK = class {
205
252
  (_a = this.providerRef.current) == null ? void 0 : _a.updateSession(sessionId, title);
206
253
  }
207
254
  /**
208
- * 切换到指定会话
209
- * @param sessionId - 会话 ID
255
+ * 设置自定义业务参数 (stateDelta)
256
+ * 设置后每次发送消息时会自动携带至后端
257
+ * @param delta - 自定义参数,传入 undefined 可清除
210
258
  */
211
- switchSession(sessionId) {
259
+ setStateDelta(delta) {
212
260
  var _a;
213
- (_a = this.providerRef.current) == null ? void 0 : _a.setCurrentSessionDetail(sessionId);
261
+ (_a = this.providerRef.current) == null ? void 0 : _a.setStateDelta(delta);
214
262
  }
215
263
  };
216
264
  window.XAiWebSDK = XAiWebSDK;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/utils/umdEntry.tsx"],
4
- "sourcesContent": ["import { createRef } from \"react\";\nimport ReactDOM from \"react-dom/client\";\nimport { XAdkSDKProps, XAdkProviderHandle, IMessage } from \"@/types\";\nimport XAdkProvider from \"@/components/XAdkProvider\";\nimport { SendContent } from \"@/types\";\n\n/**\n * XAiWebSDK - UMD 入口类\n *\n * 用于通过 <script> 标签引入 SDK 的场景\n *\n * @example\n * ```html\n * <script src=\"chat-sdk.min.js\"></script>\n * <script>\n * const sdk = XAiWebSDK.initChatbot({\n * url: 'https://api.example.com',\n * token: 'your-token',\n * config: {\n * appNo: 'your-app-no',\n * session: {\n * showSessionList: true\n * }\n * }\n * });\n * </script>\n * ```\n */\nclass XAiWebSDK {\n container: HTMLElement;\n\n props: XAdkSDKProps;\n\n root: any;\n\n providerRef = createRef<XAdkProviderHandle>();\n\n // ———— hook ————\n onError?: (error: any) => void;\n\n onSuccess?: (appInfo: any) => void;\n\n onMessage?: (content: string, data: IMessage) => void;\n\n constructor(container: HTMLElement, props: XAdkSDKProps) {\n this.container = container;\n this.props = props;\n this.onError = props.onError;\n this.onSuccess = props.onSuccess;\n this.onMessage = props.onMessage;\n this.mount();\n }\n\n mount() {\n // 提取配置\n const { config = {} } = this.props;\n const showSessionList = config.session?.showSessionList ?? false;\n const allowUpload = config.allowUpload ?? false;\n const clearBtnShow = config.chatProps?.clearBtnShow ?? true;\n\n if (ReactDOM.createRoot) {\n this.root = ReactDOM.createRoot(this.container);\n this.root.render(\n <div style={{ width: \"100%\", height: \"100%\" }}>\n <XAdkProvider ref={this.providerRef} {...this.props}>\n {/* 使用 DefaultLayout 作为默认布局 */}\n <XAdkProvider.DefaultLayout\n showSessionList={showSessionList}\n allowUpload={allowUpload}\n clearBtnShow={clearBtnShow}\n showFnCallDetail={true}\n />\n </XAdkProvider>\n </div>,\n );\n } else {\n // 兼容 React 17\n // @ts-ignore\n ReactDOM.render(\n <div style={{ width: \"100%\", height: \"100%\" }}>\n <XAdkProvider ref={this.providerRef} {...this.props}>\n <XAdkProvider.DefaultLayout\n showSessionList={showSessionList}\n allowUpload={allowUpload}\n clearBtnShow={clearBtnShow}\n showFnCallDetail={true}\n />\n </XAdkProvider>\n </div>,\n this.container,\n );\n }\n }\n\n unmount() {\n if (this.root && this.root.unmount) {\n this.root.unmount();\n }\n }\n\n /**\n * 初始化聊天机器人(推荐方式)\n *\n * @param props - SDK 配置参数\n * @returns XAiWebSDK 实例\n *\n * @example\n * ```javascript\n * const sdk = XAiWebSDK.initChatbot({\n * url: 'https://api.example.com',\n * token: 'your-token',\n * config: {\n * appNo: 'your-app-no',\n * session: {\n * showSessionList: true // 显示会话列表\n * },\n * allowUpload: true, // 允许文件上传\n * chatProps: {\n * clearBtnShow: false // 隐藏清空按钮\n * }\n * },\n * componentProps: {\n * id: 'my-chatbot', // 容器 ID\n * width: '100%',\n * height: '600px'\n * }\n * });\n * ```\n */\n static initChatbot(props: XAdkSDKProps): XAiWebSDK {\n let container: HTMLElement;\n\n // 检查是否有指定的 componentProps.id\n if (props.componentProps?.id) {\n const existingContainer = document.getElementById(\n props.componentProps.id,\n );\n if (existingContainer) {\n container = existingContainer;\n } else {\n // 如果指定的 ID 不存在,创建新元素\n container = document.createElement(\"div\");\n container.id = props.componentProps.id;\n }\n } else {\n // 没有指定 ID,创建默认容器\n container = document.createElement(\"div\");\n container.id = \"xai-chatbot-container\";\n }\n\n // 设置容器样式 - 将除了 id 以外的所有属性都应用到容器\n if (props.componentProps) {\n const { id, ...styleProps } = props.componentProps;\n Object.assign(container.style, styleProps);\n }\n\n // 如果容器不在 DOM 中,添加到 body\n if (!container.parentNode) {\n document.body.appendChild(container);\n }\n\n return new XAiWebSDK(container, props);\n }\n\n /**\n * 兼容旧版本的静态方法\n * @deprecated 使用 initChatbot 替代\n */\n static create(props: XAdkSDKProps): XAiWebSDK {\n return this.initChatbot(props);\n }\n\n // ————对外暴露的方法————\n\n /**\n * 获取当前数据\n * @returns 应用信息、消息列表、会话列表\n */\n getData() {\n return {\n appInfo: this.providerRef.current?.getAppInfo(),\n messages: this.providerRef.current?.getMessages(),\n sessions: this.providerRef.current?.getSessions(),\n };\n }\n\n /**\n * 发送消息\n * @param content - 消息内容\n *\n * @example\n * ```javascript\n * sdk.chat({ text: 'Hello!' });\n * ```\n */\n chat(content: SendContent) {\n this.providerRef.current?.startChat(content);\n }\n\n /**\n * 停止当前消息生成\n */\n stop() {\n this.providerRef.current?.stopChat();\n }\n\n /**\n * 清空当前会话\n */\n clear() {\n this.providerRef.current?.clearChat();\n }\n\n /**\n * 删除指定会话\n * @param sessionId - 会话 ID\n */\n deleteSession(sessionId: string) {\n this.providerRef.current?.deleteSession(sessionId);\n }\n\n /**\n * 更新会话标题\n * @param sessionId - 会话 ID\n * @param title - 新标题\n */\n updateSession(sessionId: string, title: string) {\n this.providerRef.current?.updateSession(sessionId, title);\n }\n\n /**\n * 切换到指定会话\n * @param sessionId - 会话 ID\n */\n switchSession(sessionId: string) {\n this.providerRef.current?.setCurrentSessionDetail(sessionId);\n }\n}\n\n// 兼容 window 方式,也支持 new\n// @ts-ignore\nwindow.XAiWebSDK = XAiWebSDK;\n\n// 支持 ESModule/UMD 直接 import\nexport default XAiWebSDK;\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { createRef } from \"react\";\nimport ReactDOM from \"react-dom/client\";\nimport { XAdkSDKProps, XAdkProviderHandle, IMessage } from \"@/types\";\nimport XAdkProvider from \"@/components/XAdkProvider\";\nimport { SendContent } from \"@/types\";\n\n/**\n * XAiWebSDK - UMD 入口类\n *\n * 用于通过 <script> 标签引入 SDK 的场景\n *\n * @example\n * ```html\n * <script src=\"chat-sdk.min.js\"></script>\n * <script>\n * const sdk = XAiWebSDK.initChatbot({\n * url: 'https://api.example.com',\n * token: 'your-token',\n * config: {\n * appNo: 'your-app-no',\n * session: {\n * showSessionList: true\n * }\n * }\n * });\n * </script>\n * ```\n */\nclass XAiWebSDK {\n container: HTMLElement;\n\n props: XAdkSDKProps;\n\n root: any;\n\n providerRef = createRef<XAdkProviderHandle>();\n\n // ———— hook ————\n onError?: (error: any) => void;\n\n onSuccess?: (appInfo: any) => void;\n\n onMessage?: (content: string, data: IMessage) => void;\n\n constructor(container: HTMLElement, props: XAdkSDKProps) {\n this.container = container;\n this.props = props;\n this.onError = props.onError;\n this.onSuccess = props.onSuccess;\n this.onMessage = props.onMessage;\n this.mount();\n }\n\n mount() {\n // 提取配置\n const { config = {} } = this.props;\n const showSessionList = config.session?.showSessionList ?? false;\n const allowUpload = config.allowUpload ?? false;\n const clearBtnShow = config.chatProps?.clearBtnShow ?? true;\n\n if (ReactDOM.createRoot) {\n this.root = ReactDOM.createRoot(this.container);\n this.root.render(\n <div style={{ width: \"100%\", height: \"100%\" }}>\n <XAdkProvider ref={this.providerRef} {...this.props}>\n {/* 使用 DefaultLayout 作为默认布局 */}\n <XAdkProvider.DefaultLayout\n showSessionList={showSessionList}\n allowUpload={allowUpload}\n clearBtnShow={clearBtnShow}\n showFnCallDetail={true}\n />\n </XAdkProvider>\n </div>,\n );\n } else {\n // 兼容 React 17\n // @ts-ignore\n ReactDOM.render(\n <div style={{ width: \"100%\", height: \"100%\" }}>\n <XAdkProvider ref={this.providerRef} {...this.props}>\n <XAdkProvider.DefaultLayout\n showSessionList={showSessionList}\n allowUpload={allowUpload}\n clearBtnShow={clearBtnShow}\n showFnCallDetail={true}\n />\n </XAdkProvider>\n </div>,\n this.container,\n );\n }\n }\n\n unmount() {\n if (this.root && this.root.unmount) {\n this.root.unmount();\n }\n }\n\n /**\n * 初始化聊天机器人(推荐方式)\n *\n * @param props - SDK 配置参数\n * @returns XAiWebSDK 实例\n *\n * @example\n * ```javascript\n * const sdk = XAiWebSDK.initChatbot({\n * url: 'https://api.example.com',\n * token: 'your-token',\n * config: {\n * appNo: 'your-app-no',\n * session: {\n * showSessionList: true // 显示会话列表\n * },\n * allowUpload: true, // 允许文件上传\n * chatProps: {\n * clearBtnShow: false // 隐藏清空按钮\n * }\n * },\n * componentProps: {\n * id: 'my-chatbot', // 容器 ID\n * width: '100%',\n * height: '600px'\n * }\n * });\n * ```\n */\n static initChatbot(props: XAdkSDKProps): XAiWebSDK {\n let container: HTMLElement;\n\n // 检查是否有指定的 componentProps.id\n if (props.componentProps?.id) {\n const existingContainer = document.getElementById(\n props.componentProps.id,\n );\n if (existingContainer) {\n container = existingContainer;\n } else {\n // 如果指定的 ID 不存在,创建新元素\n container = document.createElement(\"div\");\n container.id = props.componentProps.id;\n }\n } else {\n // 没有指定 ID,创建默认容器\n container = document.createElement(\"div\");\n container.id = \"xai-chatbot-container\";\n }\n\n // 设置容器样式 - 将除了 id 以外的所有属性都应用到容器\n if (props.componentProps) {\n const { id, ...styleProps } = props.componentProps;\n Object.assign(container.style, styleProps);\n }\n\n // 如果容器不在 DOM 中,添加到 body\n if (!container.parentNode) {\n document.body.appendChild(container);\n }\n\n return new XAiWebSDK(container, props);\n }\n\n /**\n * 兼容旧版本的静态方法\n * @deprecated 使用 initChatbot 替代\n */\n static create(props: XAdkSDKProps): XAiWebSDK {\n return this.initChatbot(props);\n }\n\n // ————对外暴露的方法————\n\n /**\n * 获取当前数据(聚合方法)\n * @returns 应用信息、消息列表、会话列表\n */\n getData() {\n return {\n appInfo: this.providerRef.current?.getAppInfo(),\n messages: this.providerRef.current?.getMessages(),\n sessions: this.providerRef.current?.getSessions(),\n };\n }\n\n /**\n * 获取应用信息\n * @returns 应用信息\n */\n getAppInfo() {\n return this.providerRef.current?.getAppInfo();\n }\n\n /**\n * 获取当前会话的消息列表\n * @returns 消息列表\n */\n getMessages() {\n return this.providerRef.current?.getMessages();\n }\n\n /**\n * 获取会话列表\n * @returns 会话列表\n */\n getSessions() {\n return this.providerRef.current?.getSessions();\n }\n\n /**\n * 设置消息列表\n * @param msgs - 要设置的消息数组\n */\n setMessages(msgs: IMessage[]) {\n this.providerRef.current?.setMessages(msgs);\n }\n\n /**\n * 发送消息\n * @param content - 消息内容\n *\n * @example\n * ```javascript\n * sdk.startChat({ text: 'Hello!' });\n * ```\n */\n startChat(content: SendContent) {\n this.providerRef.current?.startChat(content);\n }\n\n /**\n * 停止当前消息生成\n */\n stopChat() {\n this.providerRef.current?.stopChat();\n }\n\n /**\n * 重新生成最后一条回复\n */\n reChat() {\n this.providerRef.current?.reChat();\n }\n\n /**\n * 清空当前会话\n */\n clearChat() {\n this.providerRef.current?.clearChat();\n }\n\n /**\n * 切换到指定会话\n * @param sessionId - 会话 ID\n */\n setCurrentSession(sessionId: string) {\n this.providerRef.current?.setCurrentSession(sessionId);\n }\n\n /**\n * 删除指定会话\n * @param sessionId - 会话 ID\n */\n deleteSession(sessionId: string) {\n this.providerRef.current?.deleteSession(sessionId);\n }\n\n /**\n * 更新会话标题\n * @param sessionId - 会话 ID\n * @param title - 新标题\n */\n updateSession(sessionId: string, title: string) {\n this.providerRef.current?.updateSession(sessionId, title);\n }\n\n /**\n * 设置自定义业务参数 (stateDelta)\n * 设置后每次发送消息时会自动携带至后端\n * @param delta - 自定义参数,传入 undefined 可清除\n */\n setStateDelta(delta: Record<string, any> | undefined) {\n this.providerRef.current?.setStateDelta(delta);\n }\n}\n\n// 兼容 window 方式,也支持 new\n// @ts-ignore\nwindow.XAiWebSDK = XAiWebSDK;\n\n// 支持 ESModule/UMD 直接 import\nexport default XAiWebSDK;\n"],
5
+ "mappings": "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",
6
6
  "names": ["ReactDOM", "XAdkProvider"]
7
7
  }
@@ -35,12 +35,12 @@ var Sidebar = function Sidebar(_ref) {
35
35
  sessionList = _useSession.sessionList,
36
36
  deleteSession = _useSession.deleteSession,
37
37
  updateSession = _useSession.updateSession,
38
- setCurrentSessionDetail = _useSession.setCurrentSessionDetail;
38
+ setCurrentSession = _useSession.setCurrentSession;
39
39
 
40
40
  // 切换会话
41
41
  var handleActiveChange = useCallback(function (key) {
42
- setCurrentSessionDetail(key);
43
- }, [setCurrentSessionDetail]);
42
+ setCurrentSession(key);
43
+ }, [setCurrentSession]);
44
44
 
45
45
  // 新建对话
46
46
  var handleNewChat = useCallback(function () {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","message","Modal","Input","ExclamationCircleFilled","XAiConversations","useChatState","useChatActions","useSession","jsx","_jsx","confirm","Sidebar","_ref","_ref$isNarrow","isNarrow","style","className","_useChatState","currentSessionId","_useChatActions","clearChat","_useSession","sessionList","deleteSession","updateSession","setCurrentSessionDetail","handleActiveChange","key","handleNewChat","defaultMenuConfig","conversation","items","label","danger","onClick","menuInfo","domEvent","stopPropagation","inputValue","title","icon","content","defaultValue","autoFocus","width","onChange","e","target","value","okText","cancelText","okButtonProps","background","borderColor","color","onOk","trim","error","Promise","reject","onCancel","okType","activeKey","onActiveChange","onNewChat","menu","displayName"],"sources":["../../../../../src/components/XAdkProvider/compound/Sidebar.tsx"],"sourcesContent":["import React, { useCallback } from 'react';\nimport { message, Modal, Input } from 'antd';\nimport { ExclamationCircleFilled } from '@ant-design/icons';\nimport type { ConversationsProps } from '@ant-design/x';\nimport XAiConversations from '@/components/XAiConversations';\nimport { useChatState } from '../context/ChatStateContext';\nimport { useChatActions } from '../context/ChatActionContext';\nimport { useSession } from '../context/SessionContext';\n\nconst { confirm } = Modal;\n\n/**\n * XAdkProvider.Sidebar - 会话列表侧边栏组件\n *\n * 从 Context 获取会话数据并提供会话管理界面\n * 基于 XAiConversations 组件实现(带展开/收起功能)\n *\n * @example\n * ```tsx\n * <XAdkProvider url=\"...\" token=\"...\">\n * <XAdkProvider.Sidebar isNarrow={false} />\n * </XAdkProvider>\n * ```\n */\nexport interface XAdkSidebarProps {\n /** 额外的样式 */\n style?: React.CSSProperties;\n /** 额外的类名 */\n className?: string;\n /** 是否为窄屏模式 */\n isNarrow?: boolean;\n}\n\nconst Sidebar: React.FC<XAdkSidebarProps> = ({\n isNarrow = false,\n style,\n className,\n}) => {\n const { currentSessionId } = useChatState();\n const { clearChat } = useChatActions();\n const { sessionList, deleteSession, updateSession, setCurrentSessionDetail } = useSession();\n\n // 切换会话\n const handleActiveChange = useCallback((key: string) => {\n setCurrentSessionDetail(key);\n }, [setCurrentSessionDetail]);\n\n // 新建对话\n const handleNewChat = useCallback(() => {\n clearChat();\n }, [clearChat]);\n\n // 默认会话菜单配置\n const defaultMenuConfig: ConversationsProps['menu'] = useCallback((conversation: any) => ({\n items: [\n {\n label: '重命名',\n key: 'edit',\n },\n {\n label: '删除',\n key: 'delete',\n danger: true,\n },\n ],\n onClick: (menuInfo: any) => {\n menuInfo.domEvent.stopPropagation();\n const { key } = menuInfo;\n switch (key) {\n case 'edit': {\n let inputValue = (conversation.label as string) || '';\n confirm({\n title: '编辑对话名称',\n icon: null,\n content: (\n <Input\n defaultValue={inputValue}\n autoFocus\n style={{ width: '100%' }}\n onChange={(e) => {\n inputValue = e.target.value;\n }}\n />\n ),\n okText: '确认',\n cancelText: '取消',\n okButtonProps: {\n style: {\n background: '#000',\n borderColor: '#000',\n color: '#fff',\n },\n },\n onOk: () => {\n if (!inputValue.trim()) {\n message.error('对话名称不能为空');\n return Promise.reject();\n }\n updateSession(conversation.key, inputValue);\n },\n onCancel: () => {\n // 静默处理\n },\n });\n break;\n }\n case 'delete':\n confirm({\n title: '确认删除?',\n icon: <ExclamationCircleFilled />,\n content: '该对话内容将被删除无法恢复。',\n okText: '确认删除',\n okType: 'danger',\n cancelText: '取消',\n okButtonProps: {\n style: {\n background: '#ff4d4f',\n borderColor: '#ff4d4f',\n color: '#fff',\n },\n },\n onOk() {\n deleteSession(conversation.key);\n },\n onCancel() {\n //\n },\n });\n break;\n }\n },\n }), [deleteSession, updateSession]);\n\n return (\n <XAiConversations\n isNarrow={isNarrow}\n sessionList={sessionList}\n activeKey={currentSessionId}\n onActiveChange={handleActiveChange}\n onNewChat={handleNewChat}\n menu={defaultMenuConfig}\n style={style}\n />\n );\n};\n\nSidebar.displayName = 'XAdkProvider.Sidebar';\n\nexport default Sidebar;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useCallback","message","Modal","Input","ExclamationCircleFilled","XAiConversations","useChatState","useChatActions","useSession","jsx","_jsx","confirm","Sidebar","_ref","_ref$isNarrow","isNarrow","style","className","_useChatState","currentSessionId","_useChatActions","clearChat","_useSession","sessionList","deleteSession","updateSession","setCurrentSession","handleActiveChange","key","handleNewChat","defaultMenuConfig","conversation","items","label","danger","onClick","menuInfo","domEvent","stopPropagation","inputValue","title","icon","content","defaultValue","autoFocus","width","onChange","e","target","value","okText","cancelText","okButtonProps","background","borderColor","color","onOk","trim","error","Promise","reject","onCancel","okType","activeKey","onActiveChange","onNewChat","menu","displayName"],"sources":["../../../../../src/components/XAdkProvider/compound/Sidebar.tsx"],"sourcesContent":["import React, { useCallback } from 'react';\nimport { message, Modal, Input } from 'antd';\nimport { ExclamationCircleFilled } from '@ant-design/icons';\nimport type { ConversationsProps } from '@ant-design/x';\nimport XAiConversations from '@/components/XAiConversations';\nimport { useChatState } from '../context/ChatStateContext';\nimport { useChatActions } from '../context/ChatActionContext';\nimport { useSession } from '../context/SessionContext';\n\nconst { confirm } = Modal;\n\n/**\n * XAdkProvider.Sidebar - 会话列表侧边栏组件\n *\n * 从 Context 获取会话数据并提供会话管理界面\n * 基于 XAiConversations 组件实现(带展开/收起功能)\n *\n * @example\n * ```tsx\n * <XAdkProvider url=\"...\" token=\"...\">\n * <XAdkProvider.Sidebar isNarrow={false} />\n * </XAdkProvider>\n * ```\n */\nexport interface XAdkSidebarProps {\n /** 额外的样式 */\n style?: React.CSSProperties;\n /** 额外的类名 */\n className?: string;\n /** 是否为窄屏模式 */\n isNarrow?: boolean;\n}\n\nconst Sidebar: React.FC<XAdkSidebarProps> = ({\n isNarrow = false,\n style,\n className,\n}) => {\n const { currentSessionId } = useChatState();\n const { clearChat } = useChatActions();\n const { sessionList, deleteSession, updateSession, setCurrentSession } = useSession();\n\n // 切换会话\n const handleActiveChange = useCallback((key: string) => {\n setCurrentSession(key);\n }, [setCurrentSession]);\n\n // 新建对话\n const handleNewChat = useCallback(() => {\n clearChat();\n }, [clearChat]);\n\n // 默认会话菜单配置\n const defaultMenuConfig: ConversationsProps['menu'] = useCallback((conversation: any) => ({\n items: [\n {\n label: '重命名',\n key: 'edit',\n },\n {\n label: '删除',\n key: 'delete',\n danger: true,\n },\n ],\n onClick: (menuInfo: any) => {\n menuInfo.domEvent.stopPropagation();\n const { key } = menuInfo;\n switch (key) {\n case 'edit': {\n let inputValue = (conversation.label as string) || '';\n confirm({\n title: '编辑对话名称',\n icon: null,\n content: (\n <Input\n defaultValue={inputValue}\n autoFocus\n style={{ width: '100%' }}\n onChange={(e) => {\n inputValue = e.target.value;\n }}\n />\n ),\n okText: '确认',\n cancelText: '取消',\n okButtonProps: {\n style: {\n background: '#000',\n borderColor: '#000',\n color: '#fff',\n },\n },\n onOk: () => {\n if (!inputValue.trim()) {\n message.error('对话名称不能为空');\n return Promise.reject();\n }\n updateSession(conversation.key, inputValue);\n },\n onCancel: () => {\n // 静默处理\n },\n });\n break;\n }\n case 'delete':\n confirm({\n title: '确认删除?',\n icon: <ExclamationCircleFilled />,\n content: '该对话内容将被删除无法恢复。',\n okText: '确认删除',\n okType: 'danger',\n cancelText: '取消',\n okButtonProps: {\n style: {\n background: '#ff4d4f',\n borderColor: '#ff4d4f',\n color: '#fff',\n },\n },\n onOk() {\n deleteSession(conversation.key);\n },\n onCancel() {\n //\n },\n });\n break;\n }\n },\n }), [deleteSession, updateSession]);\n\n return (\n <XAiConversations\n isNarrow={isNarrow}\n sessionList={sessionList}\n activeKey={currentSessionId}\n onActiveChange={handleActiveChange}\n onNewChat={handleNewChat}\n menu={defaultMenuConfig}\n style={style}\n />\n );\n};\n\nSidebar.displayName = 'XAdkProvider.Sidebar';\n\nexport default Sidebar;\n"],"mappings":"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"}
@@ -25,6 +25,12 @@ export interface ChatActionContextType {
25
25
  feedbackTags?: string;
26
26
  feedbackDescription?: string;
27
27
  }) => Promise<boolean>;
28
+ /**
29
+ * 设置自定义业务参数 (stateDelta)
30
+ * 设置后每次发送消息时会自动携带该参数
31
+ * 传入 undefined 可清除已设置的参数
32
+ */
33
+ setStateDelta: (delta: Record<string, any> | undefined) => void;
28
34
  }
29
35
  export declare const ChatActionContext: import("react").Context<ChatActionContextType | null>;
30
36
  /**
@@ -1 +1 @@
1
- {"version":3,"names":["createContext","useContext","ChatActionContext","useChatActions","context","Error"],"sources":["../../../../../src/components/XAdkProvider/context/ChatActionContext.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { SendContent, FunctionCall, IMessage } from '@/types';\n\n/**\n * 聊天动作 Context\n * 只包含操作方法,不包含状态数据\n * 与 ChatStateContext 分离可以优化性能\n */\nexport interface ChatActionContextType {\n /** 发送消息 */\n chat: (content: SendContent) => void;\n /** 停止聊天 */\n stopChat: () => void;\n /** 清空/重置聊天 */\n clearChat: () => void;\n /** 重新发送 */\n reChat: () => void;\n /** 使用建议问题 */\n suggestChat: (text: string) => void;\n /** 确认函数调用 */\n confirmFnCall: (fnCall: FunctionCall, confirmed: boolean) => void;\n /** 设置消息列表 */\n setMessages: React.Dispatch<React.SetStateAction<IMessage[]>>;\n /** 点赞/点踩消息 */\n likeMessage: (\n invocationId: string,\n isLike: 1 | -1,\n feedbackData?: { feedbackTags?: string; feedbackDescription?: string },\n ) => Promise<boolean>;\n}\n\nexport const ChatActionContext = createContext<ChatActionContextType | null>(null);\n\n/**\n * 使用聊天动作 Hook\n * @returns ChatActionContextType\n * @throws Error 如果在 XAdkProvider 外部使用\n */\nexport const useChatActions = () => {\n const context = useContext(ChatActionContext);\n if (!context) {\n throw new Error('useChatActions must be used within XAdkProvider');\n }\n return context;\n};\n"],"mappings":"AAAA,SAASA,aAAa,EAAEC,UAAU,QAAQ,OAAO;;AAGjD;AACA;AACA;AACA;AACA;;AAwBA,OAAO,IAAMC,iBAAiB,gBAAGF,aAAa,CAA+B,IAAI,CAAC;;AAElF;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMG,cAAc,GAAG,SAAjBA,cAAcA,CAAA,EAAS;EAClC,IAAMC,OAAO,GAAGH,UAAU,CAACC,iBAAiB,CAAC;EAC7C,IAAI,CAACE,OAAO,EAAE;IACZ,MAAM,IAAIC,KAAK,CAAC,iDAAiD,CAAC;EACpE;EACA,OAAOD,OAAO;AAChB,CAAC"}
1
+ {"version":3,"names":["createContext","useContext","ChatActionContext","useChatActions","context","Error"],"sources":["../../../../../src/components/XAdkProvider/context/ChatActionContext.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { SendContent, FunctionCall, IMessage } from '@/types';\n\n/**\n * 聊天动作 Context\n * 只包含操作方法,不包含状态数据\n * 与 ChatStateContext 分离可以优化性能\n */\nexport interface ChatActionContextType {\n /** 发送消息 */\n chat: (content: SendContent) => void;\n /** 停止聊天 */\n stopChat: () => void;\n /** 清空/重置聊天 */\n clearChat: () => void;\n /** 重新发送 */\n reChat: () => void;\n /** 使用建议问题 */\n suggestChat: (text: string) => void;\n /** 确认函数调用 */\n confirmFnCall: (fnCall: FunctionCall, confirmed: boolean) => void;\n /** 设置消息列表 */\n setMessages: React.Dispatch<React.SetStateAction<IMessage[]>>;\n /** 点赞/点踩消息 */\n likeMessage: (\n invocationId: string,\n isLike: 1 | -1,\n feedbackData?: { feedbackTags?: string; feedbackDescription?: string },\n ) => Promise<boolean>;\n /**\n * 设置自定义业务参数 (stateDelta)\n * 设置后每次发送消息时会自动携带该参数\n * 传入 undefined 可清除已设置的参数\n */\n setStateDelta: (delta: Record<string, any> | undefined) => void;\n}\n\nexport const ChatActionContext = createContext<ChatActionContextType | null>(null);\n\n/**\n * 使用聊天动作 Hook\n * @returns ChatActionContextType\n * @throws Error 如果在 XAdkProvider 外部使用\n */\nexport const useChatActions = () => {\n const context = useContext(ChatActionContext);\n if (!context) {\n throw new Error('useChatActions must be used within XAdkProvider');\n }\n return context;\n};\n"],"mappings":"AAAA,SAASA,aAAa,EAAEC,UAAU,QAAQ,OAAO;;AAGjD;AACA;AACA;AACA;AACA;;AA8BA,OAAO,IAAMC,iBAAiB,gBAAGF,aAAa,CAA+B,IAAI,CAAC;;AAElF;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMG,cAAc,GAAG,SAAjBA,cAAcA,CAAA,EAAS;EAClC,IAAMC,OAAO,GAAGH,UAAU,CAACC,iBAAiB,CAAC;EAC7C,IAAI,CAACE,OAAO,EAAE;IACZ,MAAM,IAAIC,KAAK,CAAC,iDAAiD,CAAC;EACpE;EACA,OAAOD,OAAO;AAChB,CAAC"}
@@ -18,7 +18,7 @@ export interface SessionContextType {
18
18
  /** 更新会话标题 */
19
19
  updateSession: (sessionId: string, title: string) => void;
20
20
  /** 设置当前会话详情 */
21
- setCurrentSessionDetail: (sessionId: string) => void;
21
+ setCurrentSession: (sessionId: string) => void;
22
22
  }
23
23
  export declare const SessionContext: import("react").Context<SessionContextType | null>;
24
24
  /**
@@ -1 +1 @@
1
- {"version":3,"names":["createContext","useContext","SessionContext","useSession","context","Error"],"sources":["../../../../../src/components/XAdkProvider/context/SessionContext.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { SessionData } from '@/types';\n\n/**\n * 会话管理 Context\n * 管理会话列表和会话操作\n */\nexport interface SessionContextType {\n /** 会话列表 */\n sessionList: SessionData[];\n /** 会话分页信息 */\n sessionPagination: {\n total: number;\n pageNum: number;\n pageSize: number;\n };\n /** 删除会话 */\n deleteSession: (sessionId: string) => void;\n /** 更新会话标题 */\n updateSession: (sessionId: string, title: string) => void;\n /** 设置当前会话详情 */\n setCurrentSessionDetail: (sessionId: string) => void;\n}\n\nexport const SessionContext = createContext<SessionContextType | null>(null);\n\n/**\n * 使用会话管理 Hook\n * @returns SessionContextType\n * @throws Error 如果在 XAdkProvider 外部使用\n */\nexport const useSession = () => {\n const context = useContext(SessionContext);\n if (!context) {\n throw new Error('useSession must be used within XAdkProvider');\n }\n return context;\n};\n"],"mappings":"AAAA,SAASA,aAAa,EAAEC,UAAU,QAAQ,OAAO;;AAGjD;AACA;AACA;AACA;;AAkBA,OAAO,IAAMC,cAAc,gBAAGF,aAAa,CAA4B,IAAI,CAAC;;AAE5E;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMG,UAAU,GAAG,SAAbA,UAAUA,CAAA,EAAS;EAC9B,IAAMC,OAAO,GAAGH,UAAU,CAACC,cAAc,CAAC;EAC1C,IAAI,CAACE,OAAO,EAAE;IACZ,MAAM,IAAIC,KAAK,CAAC,6CAA6C,CAAC;EAChE;EACA,OAAOD,OAAO;AAChB,CAAC"}
1
+ {"version":3,"names":["createContext","useContext","SessionContext","useSession","context","Error"],"sources":["../../../../../src/components/XAdkProvider/context/SessionContext.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { SessionData } from '@/types';\n\n/**\n * 会话管理 Context\n * 管理会话列表和会话操作\n */\nexport interface SessionContextType {\n /** 会话列表 */\n sessionList: SessionData[];\n /** 会话分页信息 */\n sessionPagination: {\n total: number;\n pageNum: number;\n pageSize: number;\n };\n /** 删除会话 */\n deleteSession: (sessionId: string) => void;\n /** 更新会话标题 */\n updateSession: (sessionId: string, title: string) => void;\n /** 设置当前会话详情 */\n setCurrentSession: (sessionId: string) => void;\n}\n\nexport const SessionContext = createContext<SessionContextType | null>(null);\n\n/**\n * 使用会话管理 Hook\n * @returns SessionContextType\n * @throws Error 如果在 XAdkProvider 外部使用\n */\nexport const useSession = () => {\n const context = useContext(SessionContext);\n if (!context) {\n throw new Error('useSession must be used within XAdkProvider');\n }\n return context;\n};\n"],"mappings":"AAAA,SAASA,aAAa,EAAEC,UAAU,QAAQ,OAAO;;AAGjD;AACA;AACA;AACA;;AAkBA,OAAO,IAAMC,cAAc,gBAAGF,aAAa,CAA4B,IAAI,CAAC;;AAE5E;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMG,UAAU,GAAG,SAAbA,UAAUA,CAAA,EAAS;EAC9B,IAAMC,OAAO,GAAGH,UAAU,CAACC,cAAc,CAAC;EAC1C,IAAI,CAACE,OAAO,EAAE;IACZ,MAAM,IAAIC,KAAK,CAAC,6CAA6C,CAAC;EAChE;EACA,OAAOD,OAAO;AAChB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import type { XAdkProviderProps, XAdkProviderHandle } from "../../types/XAdkProvider";
2
+ import type { XAdkProviderProps, XAdkProviderHandle, XAdkProviderConfig } from "../../types/XAdkProvider";
3
3
  import type { ChatHookResult } from "../../types/ChatHook";
4
4
  /**
5
5
  * XAdkProvider Props (扩展版)
@@ -14,7 +14,7 @@ export interface XAdkProviderPropsExtended extends Omit<XAdkProviderProps, "url"
14
14
  */
15
15
  url?: string;
16
16
  token: string;
17
- config?: any;
17
+ config?: XAdkProviderConfig;
18
18
  /**
19
19
  * 选项 B: 使用自定义 Hook 数据
20
20
  * 如果提供此参数,将忽略 url/token/config
@@ -104,7 +104,7 @@ var XAdkProviderComponent = /*#__PURE__*/forwardRef(function (_ref, ref) {
104
104
  prologue = data.prologue,
105
105
  suggestions = data.suggestions,
106
106
  initialized = data.initialized,
107
- setCurrentSessionDetail = data.setCurrentSessionDetail,
107
+ setCurrentSession = data.setCurrentSession,
108
108
  setMessages = data.setMessages,
109
109
  _data$likeMessage = data.likeMessage,
110
110
  likeMessage = _data$likeMessage === void 0 ? /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
@@ -117,7 +117,9 @@ var XAdkProviderComponent = /*#__PURE__*/forwardRef(function (_ref, ref) {
117
117
  return _context.stop();
118
118
  }
119
119
  }, _callee);
120
- })) : _data$likeMessage;
120
+ })) : _data$likeMessage,
121
+ _data$setStateDelta = data.setStateDelta,
122
+ setStateDelta = _data$setStateDelta === void 0 ? function () {} : _data$setStateDelta;
121
123
  var showFeedback = (_config$showFeedback = config === null || config === void 0 ? void 0 : config.showFeedback) !== null && _config$showFeedback !== void 0 ? _config$showFeedback : true;
122
124
  var onFileClick = config === null || config === void 0 ? void 0 : config.onFileClick;
123
125
  var uploadRequest = config === null || config === void 0 ? void 0 : config.uploadRequest;
@@ -142,9 +144,10 @@ var XAdkProviderComponent = /*#__PURE__*/forwardRef(function (_ref, ref) {
142
144
  return sessionList;
143
145
  },
144
146
  setMessages: setMessages,
145
- setCurrentSessionDetail: setCurrentSessionDetail
147
+ setCurrentSession: setCurrentSession,
148
+ setStateDelta: setStateDelta
146
149
  };
147
- }, [appInfo, messages, sessionList, startChat, stopChat, reChat, clearChat, suggestChat, deleteSession, updateSession, setMessages, setCurrentSessionDetail]);
150
+ }, [appInfo, messages, sessionList, startChat, stopChat, reChat, clearChat, suggestChat, deleteSession, updateSession, setMessages, setCurrentSession, setStateDelta]);
148
151
 
149
152
  // 状态 Context Value - 使用 useMemo 避免不必要的 rerender
150
153
  var chatStateValue = useMemo(function () {
@@ -174,9 +177,10 @@ var XAdkProviderComponent = /*#__PURE__*/forwardRef(function (_ref, ref) {
174
177
  suggestChat: suggestChat,
175
178
  confirmFnCall: confirmFnCall,
176
179
  setMessages: setMessages,
177
- likeMessage: likeMessage
180
+ likeMessage: likeMessage,
181
+ setStateDelta: setStateDelta
178
182
  };
179
- }, [startChat, stopChat, clearChat, reChat, suggestChat, confirmFnCall, setMessages, likeMessage]);
183
+ }, [startChat, stopChat, clearChat, reChat, suggestChat, confirmFnCall, setMessages, likeMessage, setStateDelta]);
180
184
 
181
185
  // 会话 Context Value
182
186
  var sessionValue = useMemo(function () {
@@ -185,9 +189,9 @@ var XAdkProviderComponent = /*#__PURE__*/forwardRef(function (_ref, ref) {
185
189
  sessionPagination: sessionPagination,
186
190
  deleteSession: deleteSession,
187
191
  updateSession: updateSession,
188
- setCurrentSessionDetail: setCurrentSessionDetail
192
+ setCurrentSession: setCurrentSession
189
193
  };
190
- }, [sessionList, sessionPagination, deleteSession, updateSession, setCurrentSessionDetail]);
194
+ }, [sessionList, sessionPagination, deleteSession, updateSession, setCurrentSession]);
191
195
  return /*#__PURE__*/_jsx(ConfigProvider, {
192
196
  theme: {
193
197
  token: {
@@ -1 +1 @@
1
- {"version":3,"names":["React","forwardRef","useImperativeHandle","useMemo","ConfigProvider","XProvider","ChatStateContext","ChatActionContext","SessionContext","useADKChat","primaryBlue","XAdkProviderComponent","_ref","ref","_config$showFeedback","_ref$url","url","window","location","origin","token","config","chatData","_ref$providerId","providerId","onSuccess","onError","onMessage","onStream","children","internalData","enabled","data","appInfo","startChat","stopChat","reChat","clearChat","suggestChat","confirmFnCall","deleteSession","updateSession","currentSessionId","sessionPagination","sessionList","messages","loading","prologue","suggestions","initialized","setCurrentSessionDetail","setMessages","_data$likeMessage","likeMessage","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","abrupt","stop","showFeedback","onFileClick","uploadRequest","getAppInfo","getMessages","getSessions","chatStateValue","chatActionValue","chat","sessionValue","_jsx","theme","colorPrimary","appTheme","Provider","value","style","display","height","width","position","displayName","Header","Sidebar","Messages","Sender","Chatbot","Welcome","DefaultLayout","jsx","XAdkProvider"],"sources":["../../../../src/components/XAdkProvider/index.tsx"],"sourcesContent":["import React, { forwardRef, useImperativeHandle, useMemo } from \"react\";\nimport { ConfigProvider } from \"antd\";\nimport { XProvider } from \"@ant-design/x\";\nimport { ChatStateContext } from \"./context/ChatStateContext\";\nimport { ChatActionContext } from \"./context/ChatActionContext\";\nimport { SessionContext } from \"./context/SessionContext\";\nimport useADKChat from \"@/hooks/useADKChat\";\nimport { primaryBlue } from \"@/styles/common\";\nimport type {\n XAdkProviderProps,\n XAdkProviderHandle,\n} from \"@/types/XAdkProvider\";\nimport type { ChatHookResult } from \"@/types/ChatHook\";\n\n/**\n * XAdkProvider Props (扩展版)\n *\n * 支持两种使用方式:\n * 1. 标准协议: 提供 url/token/config,使用内置 useADKChat\n * 2. 自定义协议: 提供 chatData,使用自己的 Hook\n */\nexport interface XAdkProviderPropsExtended extends Omit<\n XAdkProviderProps,\n \"url\" | \"token\" | \"config\"\n> {\n /**\n * 选项 A: 使用标准协议 (内置 useADKChat)\n */\n url?: string;\n token: string;\n config?: any;\n\n /**\n * 选项 B: 使用自定义 Hook 数据\n * 如果提供此参数,将忽略 url/token/config\n *\n * @example\n * // GraphQL 协议\n * const chatData = useMyGraphQLChat({ endpoint: '...' });\n * <XAdkProvider chatData={chatData}>\n * <XAdkProvider.DefaultLayout />\n * </XAdkProvider>\n *\n * @example\n * // WebSocket 协议\n * const chatData = useWebSocketChat({ url: 'ws://...' });\n * <XAdkProvider chatData={chatData}>\n * <XAdkProvider.DefaultLayout />\n * </XAdkProvider>\n */\n chatData?: ChatHookResult;\n\n children: React.ReactNode;\n}\n\n/**\n * XAdkProvider - AI 聊天 SDK 核心 Provider\n *\n * 采用 Compound Components 架构:\n * - 只负责数据和状态管理\n * - 不包含 UI 布局\n * - 通过 Context 向子组件提供数据\n * - 支持完全自定义的组件组合\n * - 支持协议解耦,可使用自定义 Hook\n *\n * @example\n * // 基础用法 - 标准协议\n * <XAdkProvider url=\"...\" token=\"...\" config={...}>\n * <XAdkProvider.Chatbot />\n * </XAdkProvider>\n *\n * @example\n * // 自定义协议 - GraphQL\n * function App() {\n * const chatData = useMyGraphQLChat({ endpoint: '...' });\n * return (\n * <XAdkProvider chatData={chatData}>\n * <XAdkProvider.DefaultLayout />\n * </XAdkProvider>\n * );\n * }\n *\n * @example\n * // 自定义布局\n * <XAdkProvider url=\"...\" token=\"...\">\n * <div style={{ display: 'flex' }}>\n * <XAdkProvider.Sidebar />\n * <div>\n * <XAdkProvider.Messages />\n * <XAdkProvider.Sender />\n * </div>\n * </div>\n * </XAdkProvider>\n */\nconst XAdkProviderComponent = forwardRef<\n XAdkProviderHandle,\n XAdkProviderPropsExtended\n>(\n (\n {\n url = window.location.origin,\n token,\n config,\n chatData, // 自定义 Hook 数据\n providerId = \"defaultId\",\n onSuccess,\n onError,\n onMessage,\n onStream,\n children,\n },\n ref,\n ) => {\n // 内置 Hook 数据 (仅在没有提供 chatData 时调用)\n const internalData = useADKChat({\n url,\n token: token || \"\",\n config: config || {},\n onError,\n onSuccess,\n onMessage,\n onStream,\n // 仅在提供了 url 和 token 时才初始化\n enabled: !chatData && !!url && !!token,\n });\n\n // 使用外部数据或内部数据\n const data = chatData || internalData;\n\n // 解构数据\n const {\n appInfo,\n startChat,\n stopChat,\n reChat,\n clearChat,\n suggestChat,\n confirmFnCall,\n deleteSession,\n updateSession,\n currentSessionId,\n sessionPagination,\n sessionList,\n messages,\n loading,\n prologue,\n suggestions,\n initialized,\n setCurrentSessionDetail,\n setMessages,\n likeMessage = async () => false,\n } = data;\n\n const showFeedback = config?.showFeedback ?? true;\n const onFileClick = config?.onFileClick;\n const uploadRequest = config?.uploadRequest;\n\n // 暴露 API 给 ref\n useImperativeHandle(\n ref,\n () => ({\n startChat,\n stopChat,\n reChat,\n clearChat,\n suggestChat,\n deleteSession,\n updateSession,\n getAppInfo: () => appInfo,\n getMessages: () => messages,\n getSessions: () => sessionList,\n setMessages,\n setCurrentSessionDetail,\n }),\n [\n appInfo,\n messages,\n sessionList,\n startChat,\n stopChat,\n reChat,\n clearChat,\n suggestChat,\n deleteSession,\n updateSession,\n setMessages,\n setCurrentSessionDetail,\n ],\n );\n\n // 状态 Context Value - 使用 useMemo 避免不必要的 rerender\n const chatStateValue = useMemo(\n () => ({\n messages,\n loading,\n currentSessionId,\n prologue,\n suggestions,\n appInfo,\n initialized,\n url,\n token,\n showFeedback,\n onFileClick,\n uploadRequest,\n }),\n [\n messages,\n loading,\n currentSessionId,\n prologue,\n suggestions,\n appInfo,\n initialized,\n showFeedback,\n onFileClick,\n uploadRequest,\n ],\n );\n\n // 动作 Context Value - 函数引用稳定,不需要每次都创建新对象\n const chatActionValue = useMemo(\n () => ({\n chat: startChat,\n stopChat,\n clearChat,\n reChat,\n suggestChat,\n confirmFnCall,\n setMessages,\n likeMessage,\n }),\n [\n startChat,\n stopChat,\n clearChat,\n reChat,\n suggestChat,\n confirmFnCall,\n setMessages,\n likeMessage,\n ],\n );\n\n // 会话 Context Value\n const sessionValue = useMemo(\n () => ({\n sessionList,\n sessionPagination,\n deleteSession,\n updateSession,\n setCurrentSessionDetail,\n }),\n [\n sessionList,\n sessionPagination,\n deleteSession,\n updateSession,\n setCurrentSessionDetail,\n ],\n );\n\n return (\n <ConfigProvider\n theme={{\n token: {\n colorPrimary: appInfo?.appTheme || primaryBlue,\n },\n }}\n >\n <XProvider>\n <ChatStateContext.Provider value={chatStateValue}>\n <ChatActionContext.Provider value={chatActionValue}>\n <SessionContext.Provider value={sessionValue}>\n <div\n style={{\n display: \"flex\",\n height: \"100%\",\n width: \"100%\",\n position: \"relative\",\n }}\n >\n {children}\n </div>\n </SessionContext.Provider>\n </ChatActionContext.Provider>\n </ChatStateContext.Provider>\n </XProvider>\n </ConfigProvider>\n );\n },\n);\n\nXAdkProviderComponent.displayName = \"XAdkProvider\";\n\n// 导入 Compound Components\nimport Header from \"./compound/Header\";\nimport Sidebar from \"./compound/Sidebar\";\nimport Messages from \"./compound/Messages\";\nimport Sender from \"./compound/Sender\";\nimport Chatbot from \"./compound/Chatbot\";\nimport Welcome from \"./compound/Welcome\";\nimport DefaultLayout from \"./compound/DefaultLayout\";\n\n// 导出时会挂载 Compound Components\nconst XAdkProvider = XAdkProviderComponent as typeof XAdkProviderComponent & {\n Header: typeof Header;\n Sidebar: typeof Sidebar;\n Messages: typeof Messages;\n Sender: typeof Sender;\n Chatbot: typeof Chatbot;\n Welcome: typeof Welcome;\n DefaultLayout: typeof DefaultLayout;\n};\n\n// 挂载 Compound Components\nXAdkProvider.Header = Header;\nXAdkProvider.Sidebar = Sidebar;\nXAdkProvider.Messages = Messages;\nXAdkProvider.Sender = Sender;\nXAdkProvider.Chatbot = Chatbot;\nXAdkProvider.DefaultLayout = DefaultLayout;\nXAdkProvider.Welcome = Welcome;\n\nexport default XAdkProvider;\n"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,UAAU,EAAEC,mBAAmB,EAAEC,OAAO,QAAQ,OAAO;AACvE,SAASC,cAAc,QAAQ,MAAM;AACrC,SAASC,SAAS,QAAQ,eAAe;AACzC,SAASC,gBAAgB;AACzB,SAASC,iBAAiB;AAC1B,SAASC,cAAc;AACvB,OAAOC,UAAU;AACjB,SAASC,WAAW;;AAOpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAmCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMC,qBAAqB,gBAAGV,UAAU,CAItC,UAAAW,IAAA,EAaEC,GAAG,EACA;EAAA,IAAAC,oBAAA;EAAA,IAAAC,QAAA,GAAAH,IAAA,CAZDI,GAAG;IAAHA,GAAG,GAAAD,QAAA,cAAGE,MAAM,CAACC,QAAQ,CAACC,MAAM,GAAAJ,QAAA;IAC5BK,KAAK,GAAAR,IAAA,CAALQ,KAAK;IACLC,MAAM,GAAAT,IAAA,CAANS,MAAM;IACNC,QAAQ,GAAAV,IAAA,CAARU,QAAQ;IAAAC,eAAA,GAAAX,IAAA,CACRY,UAAU;IAAVA,UAAU,GAAAD,eAAA,cAAG,WAAW,GAAAA,eAAA;IACxBE,SAAS,GAAAb,IAAA,CAATa,SAAS;IACTC,OAAO,GAAAd,IAAA,CAAPc,OAAO;IACPC,SAAS,GAAAf,IAAA,CAATe,SAAS;IACTC,QAAQ,GAAAhB,IAAA,CAARgB,QAAQ;IACRC,QAAQ,GAAAjB,IAAA,CAARiB,QAAQ;EAIV;EACA,IAAMC,YAAY,GAAGrB,UAAU,CAAC;IAC9BO,GAAG,EAAHA,GAAG;IACHI,KAAK,EAAEA,KAAK,IAAI,EAAE;IAClBC,MAAM,EAAEA,MAAM,IAAI,CAAC,CAAC;IACpBK,OAAO,EAAPA,OAAO;IACPD,SAAS,EAATA,SAAS;IACTE,SAAS,EAATA,SAAS;IACTC,QAAQ,EAARA,QAAQ;IACR;IACAG,OAAO,EAAE,CAACT,QAAQ,IAAI,CAAC,CAACN,GAAG,IAAI,CAAC,CAACI;EACnC,CAAC,CAAC;;EAEF;EACA,IAAMY,IAAI,GAAGV,QAAQ,IAAIQ,YAAY;;EAErC;EACA,IACEG,OAAO,GAoBLD,IAAI,CApBNC,OAAO;IACPC,SAAS,GAmBPF,IAAI,CAnBNE,SAAS;IACTC,QAAQ,GAkBNH,IAAI,CAlBNG,QAAQ;IACRC,MAAM,GAiBJJ,IAAI,CAjBNI,MAAM;IACNC,SAAS,GAgBPL,IAAI,CAhBNK,SAAS;IACTC,WAAW,GAeTN,IAAI,CAfNM,WAAW;IACXC,aAAa,GAcXP,IAAI,CAdNO,aAAa;IACbC,aAAa,GAaXR,IAAI,CAbNQ,aAAa;IACbC,aAAa,GAYXT,IAAI,CAZNS,aAAa;IACbC,gBAAgB,GAWdV,IAAI,CAXNU,gBAAgB;IAChBC,iBAAiB,GAUfX,IAAI,CAVNW,iBAAiB;IACjBC,WAAW,GASTZ,IAAI,CATNY,WAAW;IACXC,QAAQ,GAQNb,IAAI,CARNa,QAAQ;IACRC,OAAO,GAOLd,IAAI,CAPNc,OAAO;IACPC,QAAQ,GAMNf,IAAI,CANNe,QAAQ;IACRC,WAAW,GAKThB,IAAI,CALNgB,WAAW;IACXC,WAAW,GAITjB,IAAI,CAJNiB,WAAW;IACXC,uBAAuB,GAGrBlB,IAAI,CAHNkB,uBAAuB;IACvBC,WAAW,GAETnB,IAAI,CAFNmB,WAAW;IAAAC,iBAAA,GAETpB,IAAI,CADNqB,WAAW;IAAXA,WAAW,GAAAD,iBAAA,2BAAAE,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAC,QAAA;MAAA,OAAAF,mBAAA,GAAAG,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YAAA,OAAAF,QAAA,CAAAG,MAAA,WAAY,KAAK;UAAA;UAAA;YAAA,OAAAH,QAAA,CAAAI,IAAA;QAAA;MAAA,GAAAP,OAAA;IAAA,MAAAL,iBAAA;EAGjC,IAAMa,YAAY,IAAAnD,oBAAA,GAAGO,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAE4C,YAAY,cAAAnD,oBAAA,cAAAA,oBAAA,GAAI,IAAI;EACjD,IAAMoD,WAAW,GAAG7C,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAE6C,WAAW;EACvC,IAAMC,aAAa,GAAG9C,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAE8C,aAAa;;EAE3C;EACAjE,mBAAmB,CACjBW,GAAG,EACH;IAAA,OAAO;MACLqB,SAAS,EAATA,SAAS;MACTC,QAAQ,EAARA,QAAQ;MACRC,MAAM,EAANA,MAAM;MACNC,SAAS,EAATA,SAAS;MACTC,WAAW,EAAXA,WAAW;MACXE,aAAa,EAAbA,aAAa;MACbC,aAAa,EAAbA,aAAa;MACb2B,UAAU,EAAE,SAAAA,WAAA;QAAA,OAAMnC,OAAO;MAAA;MACzBoC,WAAW,EAAE,SAAAA,YAAA;QAAA,OAAMxB,QAAQ;MAAA;MAC3ByB,WAAW,EAAE,SAAAA,YAAA;QAAA,OAAM1B,WAAW;MAAA;MAC9BO,WAAW,EAAXA,WAAW;MACXD,uBAAuB,EAAvBA;IACF,CAAC;EAAA,CAAC,EACF,CACEjB,OAAO,EACPY,QAAQ,EACRD,WAAW,EACXV,SAAS,EACTC,QAAQ,EACRC,MAAM,EACNC,SAAS,EACTC,WAAW,EACXE,aAAa,EACbC,aAAa,EACbU,WAAW,EACXD,uBAAuB,CAE3B,CAAC;;EAED;EACA,IAAMqB,cAAc,GAAGpE,OAAO,CAC5B;IAAA,OAAO;MACL0C,QAAQ,EAARA,QAAQ;MACRC,OAAO,EAAPA,OAAO;MACPJ,gBAAgB,EAAhBA,gBAAgB;MAChBK,QAAQ,EAARA,QAAQ;MACRC,WAAW,EAAXA,WAAW;MACXf,OAAO,EAAPA,OAAO;MACPgB,WAAW,EAAXA,WAAW;MACXjC,GAAG,EAAHA,GAAG;MACHI,KAAK,EAALA,KAAK;MACL6C,YAAY,EAAZA,YAAY;MACZC,WAAW,EAAXA,WAAW;MACXC,aAAa,EAAbA;IACF,CAAC;EAAA,CAAC,EACF,CACEtB,QAAQ,EACRC,OAAO,EACPJ,gBAAgB,EAChBK,QAAQ,EACRC,WAAW,EACXf,OAAO,EACPgB,WAAW,EACXgB,YAAY,EACZC,WAAW,EACXC,aAAa,CAEjB,CAAC;;EAED;EACA,IAAMK,eAAe,GAAGrE,OAAO,CAC7B;IAAA,OAAO;MACLsE,IAAI,EAAEvC,SAAS;MACfC,QAAQ,EAARA,QAAQ;MACRE,SAAS,EAATA,SAAS;MACTD,MAAM,EAANA,MAAM;MACNE,WAAW,EAAXA,WAAW;MACXC,aAAa,EAAbA,aAAa;MACbY,WAAW,EAAXA,WAAW;MACXE,WAAW,EAAXA;IACF,CAAC;EAAA,CAAC,EACF,CACEnB,SAAS,EACTC,QAAQ,EACRE,SAAS,EACTD,MAAM,EACNE,WAAW,EACXC,aAAa,EACbY,WAAW,EACXE,WAAW,CAEf,CAAC;;EAED;EACA,IAAMqB,YAAY,GAAGvE,OAAO,CAC1B;IAAA,OAAO;MACLyC,WAAW,EAAXA,WAAW;MACXD,iBAAiB,EAAjBA,iBAAiB;MACjBH,aAAa,EAAbA,aAAa;MACbC,aAAa,EAAbA,aAAa;MACbS,uBAAuB,EAAvBA;IACF,CAAC;EAAA,CAAC,EACF,CACEN,WAAW,EACXD,iBAAiB,EACjBH,aAAa,EACbC,aAAa,EACbS,uBAAuB,CAE3B,CAAC;EAED,oBACEyB,IAAA,CAACvE,cAAc;IACbwE,KAAK,EAAE;MACLxD,KAAK,EAAE;QACLyD,YAAY,EAAE,CAAA5C,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE6C,QAAQ,KAAIpE;MACrC;IACF,CAAE;IAAAmB,QAAA,eAEF8C,IAAA,CAACtE,SAAS;MAAAwB,QAAA,eACR8C,IAAA,CAACrE,gBAAgB,CAACyE,QAAQ;QAACC,KAAK,EAAET,cAAe;QAAA1C,QAAA,eAC/C8C,IAAA,CAACpE,iBAAiB,CAACwE,QAAQ;UAACC,KAAK,EAAER,eAAgB;UAAA3C,QAAA,eACjD8C,IAAA,CAACnE,cAAc,CAACuE,QAAQ;YAACC,KAAK,EAAEN,YAAa;YAAA7C,QAAA,eAC3C8C,IAAA;cACEM,KAAK,EAAE;gBACLC,OAAO,EAAE,MAAM;gBACfC,MAAM,EAAE,MAAM;gBACdC,KAAK,EAAE,MAAM;gBACbC,QAAQ,EAAE;cACZ,CAAE;cAAAxD,QAAA,EAEDA;YAAQ,CACN;UAAC,CACiB;QAAC,CACA;MAAC,CACJ;IAAC,CACnB;EAAC,CACE,CAAC;AAErB,CACF,CAAC;AAEDlB,qBAAqB,CAAC2E,WAAW,GAAG,cAAc;;AAElD;AACA,OAAOC,MAAM;AACb,OAAOC,OAAO;AACd,OAAOC,QAAQ;AACf,OAAOC,MAAM;AACb,OAAOC,OAAO;AACd,OAAOC,OAAO;AACd,OAAOC,aAAa;;AAEpB;AAAA,SAAAC,GAAA,IAAAnB,IAAA;AACA,IAAMoB,YAAY,GAAGpF,qBAQpB;;AAED;AACAoF,YAAY,CAACR,MAAM,GAAGA,MAAM;AAC5BQ,YAAY,CAACP,OAAO,GAAGA,OAAO;AAC9BO,YAAY,CAACN,QAAQ,GAAGA,QAAQ;AAChCM,YAAY,CAACL,MAAM,GAAGA,MAAM;AAC5BK,YAAY,CAACJ,OAAO,GAAGA,OAAO;AAC9BI,YAAY,CAACF,aAAa,GAAGA,aAAa;AAC1CE,YAAY,CAACH,OAAO,GAAGA,OAAO;AAE9B,eAAeG,YAAY"}
1
+ {"version":3,"names":["React","forwardRef","useImperativeHandle","useMemo","ConfigProvider","XProvider","ChatStateContext","ChatActionContext","SessionContext","useADKChat","primaryBlue","XAdkProviderComponent","_ref","ref","_config$showFeedback","_ref$url","url","window","location","origin","token","config","chatData","_ref$providerId","providerId","onSuccess","onError","onMessage","onStream","children","internalData","enabled","data","appInfo","startChat","stopChat","reChat","clearChat","suggestChat","confirmFnCall","deleteSession","updateSession","currentSessionId","sessionPagination","sessionList","messages","loading","prologue","suggestions","initialized","setCurrentSession","setMessages","_data$likeMessage","likeMessage","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","abrupt","stop","_data$setStateDelta","setStateDelta","showFeedback","onFileClick","uploadRequest","getAppInfo","getMessages","getSessions","chatStateValue","chatActionValue","chat","sessionValue","_jsx","theme","colorPrimary","appTheme","Provider","value","style","display","height","width","position","displayName","Header","Sidebar","Messages","Sender","Chatbot","Welcome","DefaultLayout","jsx","XAdkProvider"],"sources":["../../../../src/components/XAdkProvider/index.tsx"],"sourcesContent":["import React, { forwardRef, useImperativeHandle, useMemo } from \"react\";\nimport { ConfigProvider } from \"antd\";\nimport { XProvider } from \"@ant-design/x\";\nimport { ChatStateContext } from \"./context/ChatStateContext\";\nimport { ChatActionContext } from \"./context/ChatActionContext\";\nimport { SessionContext } from \"./context/SessionContext\";\nimport useADKChat from \"@/hooks/useADKChat\";\nimport { primaryBlue } from \"@/styles/common\";\nimport type {\n XAdkProviderProps,\n XAdkProviderHandle,\n XAdkProviderConfig,\n} from \"@/types/XAdkProvider\";\nimport type { ChatHookResult } from \"@/types/ChatHook\";\n\n/**\n * XAdkProvider Props (扩展版)\n *\n * 支持两种使用方式:\n * 1. 标准协议: 提供 url/token/config,使用内置 useADKChat\n * 2. 自定义协议: 提供 chatData,使用自己的 Hook\n */\nexport interface XAdkProviderPropsExtended extends Omit<\n XAdkProviderProps,\n \"url\" | \"token\" | \"config\"\n> {\n /**\n * 选项 A: 使用标准协议 (内置 useADKChat)\n */\n url?: string;\n token: string;\n config?: XAdkProviderConfig;\n\n /**\n * 选项 B: 使用自定义 Hook 数据\n * 如果提供此参数,将忽略 url/token/config\n *\n * @example\n * // GraphQL 协议\n * const chatData = useMyGraphQLChat({ endpoint: '...' });\n * <XAdkProvider chatData={chatData}>\n * <XAdkProvider.DefaultLayout />\n * </XAdkProvider>\n *\n * @example\n * // WebSocket 协议\n * const chatData = useWebSocketChat({ url: 'ws://...' });\n * <XAdkProvider chatData={chatData}>\n * <XAdkProvider.DefaultLayout />\n * </XAdkProvider>\n */\n chatData?: ChatHookResult;\n\n children: React.ReactNode;\n}\n\n/**\n * XAdkProvider - AI 聊天 SDK 核心 Provider\n *\n * 采用 Compound Components 架构:\n * - 只负责数据和状态管理\n * - 不包含 UI 布局\n * - 通过 Context 向子组件提供数据\n * - 支持完全自定义的组件组合\n * - 支持协议解耦,可使用自定义 Hook\n *\n * @example\n * // 基础用法 - 标准协议\n * <XAdkProvider url=\"...\" token=\"...\" config={...}>\n * <XAdkProvider.Chatbot />\n * </XAdkProvider>\n *\n * @example\n * // 自定义协议 - GraphQL\n * function App() {\n * const chatData = useMyGraphQLChat({ endpoint: '...' });\n * return (\n * <XAdkProvider chatData={chatData}>\n * <XAdkProvider.DefaultLayout />\n * </XAdkProvider>\n * );\n * }\n *\n * @example\n * // 自定义布局\n * <XAdkProvider url=\"...\" token=\"...\">\n * <div style={{ display: 'flex' }}>\n * <XAdkProvider.Sidebar />\n * <div>\n * <XAdkProvider.Messages />\n * <XAdkProvider.Sender />\n * </div>\n * </div>\n * </XAdkProvider>\n */\nconst XAdkProviderComponent = forwardRef<\n XAdkProviderHandle,\n XAdkProviderPropsExtended\n>(\n (\n {\n url = window.location.origin,\n token,\n config,\n chatData, // 自定义 Hook 数据\n providerId = \"defaultId\",\n onSuccess,\n onError,\n onMessage,\n onStream,\n children,\n },\n ref,\n ) => {\n // 内置 Hook 数据 (仅在没有提供 chatData 时调用)\n const internalData = useADKChat({\n url,\n token: token || \"\",\n config: config || {},\n onError,\n onSuccess,\n onMessage,\n onStream,\n // 仅在提供了 url 和 token 时才初始化\n enabled: !chatData && !!url && !!token,\n });\n\n // 使用外部数据或内部数据\n const data = chatData || internalData;\n\n // 解构数据\n const {\n appInfo,\n startChat,\n stopChat,\n reChat,\n clearChat,\n suggestChat,\n confirmFnCall,\n deleteSession,\n updateSession,\n currentSessionId,\n sessionPagination,\n sessionList,\n messages,\n loading,\n prologue,\n suggestions,\n initialized,\n setCurrentSession,\n setMessages,\n likeMessage = async () => false,\n setStateDelta = () => {},\n } = data;\n\n const showFeedback = config?.showFeedback ?? true;\n const onFileClick = config?.onFileClick;\n const uploadRequest = config?.uploadRequest;\n\n // 暴露 API 给 ref\n useImperativeHandle(\n ref,\n () => ({\n startChat,\n stopChat,\n reChat,\n clearChat,\n suggestChat,\n deleteSession,\n updateSession,\n getAppInfo: () => appInfo,\n getMessages: () => messages,\n getSessions: () => sessionList,\n setMessages,\n setCurrentSession,\n setStateDelta,\n }),\n [\n appInfo,\n messages,\n sessionList,\n startChat,\n stopChat,\n reChat,\n clearChat,\n suggestChat,\n deleteSession,\n updateSession,\n setMessages,\n setCurrentSession,\n setStateDelta,\n ],\n );\n\n // 状态 Context Value - 使用 useMemo 避免不必要的 rerender\n const chatStateValue = useMemo(\n () => ({\n messages,\n loading,\n currentSessionId,\n prologue,\n suggestions,\n appInfo,\n initialized,\n url,\n token,\n showFeedback,\n onFileClick,\n uploadRequest,\n }),\n [\n messages,\n loading,\n currentSessionId,\n prologue,\n suggestions,\n appInfo,\n initialized,\n showFeedback,\n onFileClick,\n uploadRequest,\n ],\n );\n\n // 动作 Context Value - 函数引用稳定,不需要每次都创建新对象\n const chatActionValue = useMemo(\n () => ({\n chat: startChat,\n stopChat,\n clearChat,\n reChat,\n suggestChat,\n confirmFnCall,\n setMessages,\n likeMessage,\n setStateDelta,\n }),\n [\n startChat,\n stopChat,\n clearChat,\n reChat,\n suggestChat,\n confirmFnCall,\n setMessages,\n likeMessage,\n setStateDelta,\n ],\n );\n\n // 会话 Context Value\n const sessionValue = useMemo(\n () => ({\n sessionList,\n sessionPagination,\n deleteSession,\n updateSession,\n setCurrentSession,\n }),\n [\n sessionList,\n sessionPagination,\n deleteSession,\n updateSession,\n setCurrentSession,\n ],\n );\n\n return (\n <ConfigProvider\n theme={{\n token: {\n colorPrimary: appInfo?.appTheme || primaryBlue,\n },\n }}\n >\n <XProvider>\n <ChatStateContext.Provider value={chatStateValue}>\n <ChatActionContext.Provider value={chatActionValue}>\n <SessionContext.Provider value={sessionValue}>\n <div\n style={{\n display: \"flex\",\n height: \"100%\",\n width: \"100%\",\n position: \"relative\",\n }}\n >\n {children}\n </div>\n </SessionContext.Provider>\n </ChatActionContext.Provider>\n </ChatStateContext.Provider>\n </XProvider>\n </ConfigProvider>\n );\n },\n);\n\nXAdkProviderComponent.displayName = \"XAdkProvider\";\n\n// 导入 Compound Components\nimport Header from \"./compound/Header\";\nimport Sidebar from \"./compound/Sidebar\";\nimport Messages from \"./compound/Messages\";\nimport Sender from \"./compound/Sender\";\nimport Chatbot from \"./compound/Chatbot\";\nimport Welcome from \"./compound/Welcome\";\nimport DefaultLayout from \"./compound/DefaultLayout\";\n\n// 导出时会挂载 Compound Components\nconst XAdkProvider = XAdkProviderComponent as typeof XAdkProviderComponent & {\n Header: typeof Header;\n Sidebar: typeof Sidebar;\n Messages: typeof Messages;\n Sender: typeof Sender;\n Chatbot: typeof Chatbot;\n Welcome: typeof Welcome;\n DefaultLayout: typeof DefaultLayout;\n};\n\n// 挂载 Compound Components\nXAdkProvider.Header = Header;\nXAdkProvider.Sidebar = Sidebar;\nXAdkProvider.Messages = Messages;\nXAdkProvider.Sender = Sender;\nXAdkProvider.Chatbot = Chatbot;\nXAdkProvider.DefaultLayout = DefaultLayout;\nXAdkProvider.Welcome = Welcome;\n\nexport default XAdkProvider;\n"],"mappings":"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"}
@@ -37,7 +37,7 @@ var XAdkSender = function XAdkSender(_ref) {
37
37
  _ref$allowedFileTypes = _ref.allowedFileTypes,
38
38
  allowedFileTypes = _ref$allowedFileTypes === void 0 ? [] : _ref$allowedFileTypes,
39
39
  _ref$maxFiles = _ref.maxFiles,
40
- maxFiles = _ref$maxFiles === void 0 ? 5 : _ref$maxFiles,
40
+ maxFiles = _ref$maxFiles === void 0 ? Infinity : _ref$maxFiles,
41
41
  suffix = _ref.suffix,
42
42
  header = _ref.header,
43
43
  prefix = _ref.prefix,