@ai-group/chat-sdk 3.1.1 → 3.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/dist/cjs/components/XAdkProvider/compound/DefaultLayout.js +2 -2
  2. package/dist/cjs/components/XAdkProvider/compound/DefaultLayout.js.map +2 -2
  3. package/dist/cjs/components/XAdkProvider/compound/Messages.js +79 -53
  4. package/dist/cjs/components/XAdkProvider/compound/Messages.js.map +2 -2
  5. package/dist/cjs/components/XAdkProvider/compound/Sidebar.js +3 -3
  6. package/dist/cjs/components/XAdkProvider/compound/Sidebar.js.map +2 -2
  7. package/dist/cjs/components/XAdkProvider/context/ChatActionContext.d.ts +6 -0
  8. package/dist/cjs/components/XAdkProvider/context/ChatActionContext.js.map +2 -2
  9. package/dist/cjs/components/XAdkProvider/context/ChatStateContext.d.ts +1 -0
  10. package/dist/cjs/components/XAdkProvider/context/ChatStateContext.js.map +2 -2
  11. package/dist/cjs/components/XAdkProvider/context/SessionContext.d.ts +1 -1
  12. package/dist/cjs/components/XAdkProvider/context/SessionContext.js.map +1 -1
  13. package/dist/cjs/components/XAdkProvider/index.d.ts +2 -2
  14. package/dist/cjs/components/XAdkProvider/index.js +14 -8
  15. package/dist/cjs/components/XAdkProvider/index.js.map +2 -2
  16. package/dist/cjs/components/XAdkSender/index.js +1 -1
  17. package/dist/cjs/components/XAdkSender/index.js.map +1 -1
  18. package/dist/cjs/components/XAiProvider/index.js +4 -4
  19. package/dist/cjs/components/XAiProvider/index.js.map +2 -2
  20. package/dist/cjs/hooks/useADKChat.d.ts +2 -1
  21. package/dist/cjs/hooks/useADKChat.js +23 -6
  22. package/dist/cjs/hooks/useADKChat.js.map +2 -2
  23. package/dist/cjs/hooks/useAgentGenerator.d.ts +1 -1
  24. package/dist/cjs/hooks/useAgentGenerator.js +3 -3
  25. package/dist/cjs/hooks/useAgentGenerator.js.map +2 -2
  26. package/dist/cjs/types/ChatHook.d.ts +7 -1
  27. package/dist/cjs/types/ChatHook.js.map +1 -1
  28. package/dist/cjs/types/XAdkProvider.d.ts +16 -1
  29. package/dist/cjs/types/XAdkProvider.js.map +1 -1
  30. package/dist/cjs/types/XAiProvider.d.ts +1 -1
  31. package/dist/cjs/types/XAiProvider.js.map +1 -1
  32. package/dist/cjs/utils/umdEntry.d.ts +38 -8
  33. package/dist/cjs/utils/umdEntry.js +57 -9
  34. package/dist/cjs/utils/umdEntry.js.map +2 -2
  35. package/dist/esm/components/XAdkProvider/compound/DefaultLayout.js +1 -2
  36. package/dist/esm/components/XAdkProvider/compound/DefaultLayout.js.map +1 -1
  37. package/dist/esm/components/XAdkProvider/compound/Messages.js +4 -2
  38. package/dist/esm/components/XAdkProvider/compound/Messages.js.map +1 -1
  39. package/dist/esm/components/XAdkProvider/compound/Sidebar.js +3 -3
  40. package/dist/esm/components/XAdkProvider/compound/Sidebar.js.map +1 -1
  41. package/dist/esm/components/XAdkProvider/context/ChatActionContext.d.ts +6 -0
  42. package/dist/esm/components/XAdkProvider/context/ChatActionContext.js.map +1 -1
  43. package/dist/esm/components/XAdkProvider/context/ChatStateContext.d.ts +1 -0
  44. package/dist/esm/components/XAdkProvider/context/ChatStateContext.js.map +1 -1
  45. package/dist/esm/components/XAdkProvider/context/SessionContext.d.ts +1 -1
  46. package/dist/esm/components/XAdkProvider/context/SessionContext.js.map +1 -1
  47. package/dist/esm/components/XAdkProvider/index.d.ts +2 -2
  48. package/dist/esm/components/XAdkProvider/index.js +12 -8
  49. package/dist/esm/components/XAdkProvider/index.js.map +1 -1
  50. package/dist/esm/components/XAdkSender/index.js +1 -1
  51. package/dist/esm/components/XAdkSender/index.js.map +1 -1
  52. package/dist/esm/components/XAiProvider/index.js +4 -4
  53. package/dist/esm/components/XAiProvider/index.js.map +1 -1
  54. package/dist/esm/hooks/useADKChat.d.ts +2 -1
  55. package/dist/esm/hooks/useADKChat.js +35 -15
  56. package/dist/esm/hooks/useADKChat.js.map +1 -1
  57. package/dist/esm/hooks/useAgentGenerator.d.ts +1 -1
  58. package/dist/esm/hooks/useAgentGenerator.js +4 -4
  59. package/dist/esm/hooks/useAgentGenerator.js.map +1 -1
  60. package/dist/esm/types/ChatHook.d.ts +7 -1
  61. package/dist/esm/types/ChatHook.js.map +1 -1
  62. package/dist/esm/types/XAdkProvider.d.ts +16 -1
  63. package/dist/esm/types/XAdkProvider.js.map +1 -1
  64. package/dist/esm/types/XAiProvider.d.ts +1 -1
  65. package/dist/esm/types/XAiProvider.js.map +1 -1
  66. package/dist/esm/utils/umdEntry.d.ts +38 -8
  67. package/dist/esm/utils/umdEntry.js +90 -24
  68. package/dist/esm/utils/umdEntry.js.map +1 -1
  69. package/dist/umd/chat-sdk.min.js +1 -1
  70. package/package.json +1 -1
@@ -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
  }
@@ -22,8 +22,7 @@ var DefaultLayout = function DefaultLayout(_ref) {
22
22
  _ref$allowUpload = _ref.allowUpload,
23
23
  allowUpload = _ref$allowUpload === void 0 ? false : _ref$allowUpload,
24
24
  _ref$clearBtnShow = _ref.clearBtnShow,
25
- clearBtnShow = _ref$clearBtnShow === void 0 ? true : _ref$clearBtnShow,
26
- messagesFooter = _ref.messagesFooter;
25
+ clearBtnShow = _ref$clearBtnShow === void 0 ? true : _ref$clearBtnShow;
27
26
  var _useChatState = useChatState(),
28
27
  appInfo = _useChatState.appInfo,
29
28
  messages = _useChatState.messages,
@@ -1 +1 @@
1
- {"version":3,"names":["React","useChatState","Sidebar","Messages","Welcome","Sender","jsx","_jsx","jsxs","_jsxs","DefaultLayout","_ref","_ref$showSessionList","showSessionList","header","footer","_ref$allowUpload","allowUpload","_ref$clearBtnShow","clearBtnShow","messagesFooter","_useChatState","appInfo","messages","prologue","suggestions","isEmpty","length","style","display","height","width","position","overflow","children","isNarrow","flex","justifyContent","alignItems","flexDirection","maxWidth","padding","background","gap","appName","fontSize","fontWeight","color","transition","marginBottom","alignSelf","displayName"],"sources":["../../../../../src/components/XAdkProvider/compound/DefaultLayout.tsx"],"sourcesContent":["import React from \"react\";\nimport { useChatState } from \"../context/ChatStateContext\";\nimport Sidebar from \"./Sidebar\";\nimport Messages from \"./Messages\";\nimport Welcome from \"./Welcome\";\nimport Sender from \"./Sender\";\n\n/**\n * XAdkProvider 默认布局\n *\n * 提供类似 ChatGPT/DeepSeek 的默认布局:\n * - 左侧: 会话列表侧边栏 (可选,支持展开/收起)\n * - 右侧: 聊天区域 (标题 + 消息 + 输入框,居中显示,最大宽度800px)\n */\nexport interface DefaultLayoutProps {\n /** 是否显示会话列表 */\n showSessionList?: boolean;\n /** 自定义头部 */\n header?: React.ReactNode;\n /** 自定义底部 (替代默认 Sender) */\n footer?: React.ReactNode;\n /** 是否允许上传文件 */\n allowUpload?: boolean;\n /** 是否显示清空按钮 */\n clearBtnShow?: boolean;\n /** 是否显示函数调用详情 */\n showFnCallDetail?: boolean;\n /** 自定义消息 Footer */\n messagesFooter?: (msg: any) => React.ReactNode;\n}\n\nconst DefaultLayout: React.FC<DefaultLayoutProps> = ({\n showSessionList = false,\n header,\n footer,\n allowUpload = false,\n clearBtnShow = true,\n // showFnCallDetail = false,\n messagesFooter,\n}) => {\n const { appInfo, messages, prologue, suggestions } = useChatState();\n\n // 判断是否为空状态(展示Welcome)\n const isEmpty =\n messages.length === 0 &&\n !prologue &&\n (!suggestions || suggestions.length === 0);\n\n return (\n <div\n style={{\n display: \"flex\",\n height: \"100%\",\n width: \"100%\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n {/* 左侧会话列表 - XAiConversations 组件会处理展开/收起 */}\n {showSessionList && <Sidebar isNarrow={false} />}\n\n {/* 右侧聊天区域 - 使用 flex: 1 自动占据剩余空间 */}\n <div\n style={{\n flex: 1,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n flexDirection: \"column\",\n overflow: \"hidden\",\n }}\n >\n {/* 居中容器 - 最大宽度 800px */}\n <div\n style={{\n width: \"100%\",\n maxWidth: \"800px\",\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n }}\n >\n {/* 头部 */}\n {header ||\n (appInfo && (\n <div\n style={{\n padding: \"16px 24px\",\n display: \"flex\",\n justifyContent: \"center\",\n background: \"white\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"12px\",\n }}\n >\n {/* {appInfo.icon && (\n <img\n src={appInfo.icon}\n alt=\"应用图标\"\n style={{\n width: 32,\n height: 32,\n borderRadius: \"6px\",\n }}\n />\n )} */}\n {appInfo.appName && (\n <div>\n <div\n style={{\n fontSize: \"16px\",\n fontWeight: 500,\n color: \"#000\",\n }}\n >\n {appInfo.appName}\n </div>\n {/* {appInfo.description && (\n <div\n style={{\n fontSize: \"12px\",\n color: \"#999\",\n marginTop: \"2px\",\n }}\n >\n {appInfo.description}\n </div>\n )} */}\n </div>\n )}\n </div>\n </div>\n ))}\n\n {/* 消息区域或Welcome区域 */}\n <div\n style={{\n flex: 1,\n overflow: \"hidden\",\n display: \"flex\",\n flexDirection: \"column\",\n }}\n >\n {/* 上方弹性占位 - Welcome状态时占据空间 */}\n <div\n style={{\n flex: isEmpty ? 1 : 0,\n transition: \"flex 0.4s cubic-bezier(0.4, 0, 0.2, 1)\",\n }}\n />\n\n {/* Welcome 组件 - 只在空状态显示 */}\n {isEmpty && (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n padding: \"0 24px\",\n marginBottom: \"24px\",\n }}\n >\n <Welcome />\n </div>\n )}\n\n {/* Messages 组件 - 只在非空状态显示 */}\n {!isEmpty && (\n <div\n style={{\n flex: 1,\n overflow: \"hidden\",\n }}\n >\n <Messages\n // footer={messagesFooter}\n />\n </div>\n )}\n\n {/* 输入区域 - 始终存在,通过样式控制位置 */}\n <div\n style={{\n width: \"100%\",\n maxWidth: isEmpty ? \"600px\" : \"100%\",\n alignSelf: \"center\",\n padding: isEmpty ? \"0 24px\" : \"0\",\n transition: \"all 0.4s cubic-bezier(0.4, 0, 0.2, 1)\",\n }}\n >\n {footer || (\n <Sender allowUpload={allowUpload} clearBtnShow={clearBtnShow} />\n )}\n </div>\n\n {/* 下方弹性占位 - Welcome状态时占据更多空间,让内容偏上 */}\n <div\n style={{\n flex: isEmpty ? 1.5 : 0,\n transition: \"flex 0.4s cubic-bezier(0.4, 0, 0.2, 1)\",\n }}\n />\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nDefaultLayout.displayName = \"XAdkProvider.DefaultLayout\";\n\nexport default DefaultLayout;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useChatState","Sidebar","Messages","Welcome","Sender","jsx","_jsx","jsxs","_jsxs","DefaultLayout","_ref","_ref$showSessionList","showSessionList","header","footer","_ref$allowUpload","allowUpload","_ref$clearBtnShow","clearBtnShow","_useChatState","appInfo","messages","prologue","suggestions","isEmpty","length","style","display","height","width","position","overflow","children","isNarrow","flex","justifyContent","alignItems","flexDirection","maxWidth","padding","background","gap","appName","fontSize","fontWeight","color","transition","marginBottom","alignSelf","displayName"],"sources":["../../../../../src/components/XAdkProvider/compound/DefaultLayout.tsx"],"sourcesContent":["import React from \"react\";\nimport { useChatState } from \"../context/ChatStateContext\";\nimport Sidebar from \"./Sidebar\";\nimport Messages from \"./Messages\";\nimport Welcome from \"./Welcome\";\nimport Sender from \"./Sender\";\n\n/**\n * XAdkProvider 默认布局\n *\n * 提供类似 ChatGPT/DeepSeek 的默认布局:\n * - 左侧: 会话列表侧边栏 (可选,支持展开/收起)\n * - 右侧: 聊天区域 (标题 + 消息 + 输入框,居中显示,最大宽度800px)\n */\nexport interface DefaultLayoutProps {\n /** 是否显示会话列表 */\n showSessionList?: boolean;\n /** 自定义头部 */\n header?: React.ReactNode;\n /** 自定义底部 (替代默认 Sender) */\n footer?: React.ReactNode;\n /** 是否允许上传文件 */\n allowUpload?: boolean;\n /** 是否显示清空按钮 */\n clearBtnShow?: boolean;\n /** 是否显示函数调用详情 */\n showFnCallDetail?: boolean;\n /** 自定义消息 Footer */\n messagesFooter?: (msg: any) => React.ReactNode;\n}\n\nconst DefaultLayout: React.FC<DefaultLayoutProps> = ({\n showSessionList = false,\n header,\n footer,\n allowUpload = false,\n clearBtnShow = true,\n // showFnCallDetail = false,\n // messagesFooter,\n}) => {\n const { appInfo, messages, prologue, suggestions } = useChatState();\n\n // 判断是否为空状态(展示Welcome)\n const isEmpty =\n messages.length === 0 &&\n !prologue &&\n (!suggestions || suggestions.length === 0);\n\n return (\n <div\n style={{\n display: \"flex\",\n height: \"100%\",\n width: \"100%\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n {/* 左侧会话列表 - XAiConversations 组件会处理展开/收起 */}\n {showSessionList && <Sidebar isNarrow={false} />}\n\n {/* 右侧聊天区域 - 使用 flex: 1 自动占据剩余空间 */}\n <div\n style={{\n flex: 1,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n flexDirection: \"column\",\n overflow: \"hidden\",\n }}\n >\n {/* 居中容器 - 最大宽度 800px */}\n <div\n style={{\n width: \"100%\",\n maxWidth: \"800px\",\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n }}\n >\n {/* 头部 */}\n {header ||\n (appInfo && (\n <div\n style={{\n padding: \"16px 24px\",\n display: \"flex\",\n justifyContent: \"center\",\n background: \"white\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"12px\",\n }}\n >\n {/* {appInfo.icon && (\n <img\n src={appInfo.icon}\n alt=\"应用图标\"\n style={{\n width: 32,\n height: 32,\n borderRadius: \"6px\",\n }}\n />\n )} */}\n {appInfo.appName && (\n <div>\n <div\n style={{\n fontSize: \"16px\",\n fontWeight: 500,\n color: \"#000\",\n }}\n >\n {appInfo.appName}\n </div>\n {/* {appInfo.description && (\n <div\n style={{\n fontSize: \"12px\",\n color: \"#999\",\n marginTop: \"2px\",\n }}\n >\n {appInfo.description}\n </div>\n )} */}\n </div>\n )}\n </div>\n </div>\n ))}\n\n {/* 消息区域或Welcome区域 */}\n <div\n style={{\n flex: 1,\n overflow: \"hidden\",\n display: \"flex\",\n flexDirection: \"column\",\n }}\n >\n {/* 上方弹性占位 - Welcome状态时占据空间 */}\n <div\n style={{\n flex: isEmpty ? 1 : 0,\n transition: \"flex 0.4s cubic-bezier(0.4, 0, 0.2, 1)\",\n }}\n />\n\n {/* Welcome 组件 - 只在空状态显示 */}\n {isEmpty && (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n padding: \"0 24px\",\n marginBottom: \"24px\",\n }}\n >\n <Welcome />\n </div>\n )}\n\n {/* Messages 组件 - 只在非空状态显示 */}\n {!isEmpty && (\n <div\n style={{\n flex: 1,\n overflow: \"hidden\",\n }}\n >\n <Messages\n // footer={messagesFooter}\n />\n </div>\n )}\n\n {/* 输入区域 - 始终存在,通过样式控制位置 */}\n <div\n style={{\n width: \"100%\",\n maxWidth: isEmpty ? \"600px\" : \"100%\",\n alignSelf: \"center\",\n padding: isEmpty ? \"0 24px\" : \"0\",\n transition: \"all 0.4s cubic-bezier(0.4, 0, 0.2, 1)\",\n }}\n >\n {footer || (\n <Sender allowUpload={allowUpload} clearBtnShow={clearBtnShow} />\n )}\n </div>\n\n {/* 下方弹性占位 - Welcome状态时占据更多空间,让内容偏上 */}\n <div\n style={{\n flex: isEmpty ? 1.5 : 0,\n transition: \"flex 0.4s cubic-bezier(0.4, 0, 0.2, 1)\",\n }}\n />\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nDefaultLayout.displayName = \"XAdkProvider.DefaultLayout\";\n\nexport default DefaultLayout;\n"],"mappings":"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"}
@@ -32,7 +32,8 @@ var Messages = function Messages(_ref) {
32
32
  var _useChatActions = useChatActions(),
33
33
  suggestChat = _useChatActions.suggestChat,
34
34
  reChat = _useChatActions.reChat,
35
- likeMessage = _useChatActions.likeMessage;
35
+ likeMessage = _useChatActions.likeMessage,
36
+ confirmFnCall = _useChatActions.confirmFnCall;
36
37
  var primaryColor = (appInfo === null || appInfo === void 0 ? void 0 : appInfo.appTheme) || "#1677ff";
37
38
  var defaultActions = useCallback(function (_ref2) {
38
39
  var _group$isLike;
@@ -143,7 +144,8 @@ var Messages = function Messages(_ref) {
143
144
  loading: loading,
144
145
  prologue: prologue,
145
146
  suggestions: suggestions,
146
- onSuggest: suggestChat
147
+ onSuggest: suggestChat,
148
+ onConfirm: confirmFnCall
147
149
  // 操作栏:使用外部传入的 actions,否则用内置默认 actions
148
150
  ,
149
151
  actions: actions !== null && actions !== void 0 ? actions : defaultActions
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","message","Tooltip","Flex","LikeFilled","LikeOutlined","ReloadOutlined","CopyOutlined","copy","XAdkChatbot","DislikeFeedback","useChatState","useChatActions","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","Messages","_ref","actions","className","style","_useChatState","messages","loading","prologue","suggestions","initialized","showFeedback","appInfo","onFileClick","_useChatActions","suggestChat","reChat","likeMessage","primaryColor","appTheme","defaultActions","_ref2","_group$isLike","group","isLastBotMsg","lastMsg","msgs","length","invocationId","isLikeVal","isLike","fullText","filter","m","functionCall","functionResponse","map","text","join","gap","align","padding","color","children","title","cursor","onClick","success","_asyncToGenerator","_regeneratorRuntime","mark","_callee","ok","wrap","_callee$","_context","prev","next","warning","abrupt","sent","error","stop","msg","activeColor","onSubmit","_ref4","_callee2","formData","_callee2$","_context2","_x","apply","arguments","onSuggest","enableGrouping","enableProcessParsing","parseOptions","mode"],"sources":["../../../../../src/components/XAdkProvider/compound/Messages.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { message, Tooltip, Flex } from \"antd\";\nimport { LikeFilled, LikeOutlined, ReloadOutlined, CopyOutlined } from \"@ant-design/icons\";\nimport copy from \"copy-to-clipboard\";\nimport XAdkChatbot from \"../../XAdkChatbot\";\nimport DislikeFeedback from \"./DislikeFeedBack\";\nimport { useChatState } from \"../context/ChatStateContext\";\nimport { useChatActions } from \"../context/ChatActionContext\";\nimport type { ActionProps } from \"@/types\";\n\nexport interface XAdkMessagesProps {\n /** 自定义操作栏渲染 */\n actions?: ActionProps;\n /** 类名 */\n className?: string;\n /** 样式 */\n style?: React.CSSProperties;\n}\n\n/**\n * Messages - XAdkProvider 的消息展示组件\n *\n * 使用 XAdkChatbot 渲染消息列表\n */\nconst Messages: React.FC<XAdkMessagesProps> = ({\n actions,\n className,\n style,\n}) => {\n const { messages, loading, prologue, suggestions, initialized, showFeedback, appInfo, onFileClick } = useChatState();\n const { suggestChat, reChat, likeMessage } = useChatActions();\n\n const primaryColor = appInfo?.appTheme || \"#1677ff\";\n\n const defaultActions = useCallback<ActionProps>(({ message: group, isLastBotMsg }) => {\n // 取该组最后一条 bot 消息的 invocationId 和 isLike 状态\n const lastMsg = group.msgs[group.msgs.length - 1];\n const invocationId = lastMsg?.invocationId;\n const isLikeVal = group.isLike ?? 0;\n\n const fullText = group.msgs\n .filter((m) => !m.functionCall && !m.functionResponse)\n .map((m) => m.text || \"\")\n .join(\"\");\n\n return (\n <Flex gap={16} align=\"center\" style={{ padding: \"4px 0\", color: \"#81858c\" }}>\n {isLastBotMsg && (\n <Tooltip title=\"重新生成\">\n <ReloadOutlined style={{ cursor: \"pointer\" }} onClick={reChat} />\n </Tooltip>\n )}\n <Tooltip title=\"复制内容\">\n <CopyOutlined\n style={{ cursor: \"pointer\" }}\n onClick={() => {\n copy(fullText);\n message.success(\"复制成功\");\n }}\n />\n </Tooltip>\n {showFeedback && invocationId && (\n <>\n <Tooltip title=\"赞\">\n {isLikeVal === 1 ? (\n <LikeFilled style={{ color: primaryColor, cursor: \"pointer\" }} />\n ) : (\n <LikeOutlined\n style={{ cursor: \"pointer\" }}\n onClick={async () => {\n if (isLikeVal !== 0) {\n message.warning(\"已收到您的反馈,无需重复提交\");\n return;\n }\n const ok = await likeMessage(invocationId, 1);\n if (ok) message.success(\"感谢您的反馈\");\n else message.error(\"反馈失败,请稍后再试\");\n }}\n />\n )}\n </Tooltip>\n <DislikeFeedback\n msg={group}\n activeColor={primaryColor}\n onSubmit={async (formData) => {\n const ok = await likeMessage(invocationId, -1, formData);\n if (ok) message.success(\"已收到您的反馈,我们会努力做得更好\");\n else message.error(\"反馈失败,请稍后再试\");\n return ok;\n }}\n />\n </>\n )}\n </Flex>\n );\n }, [reChat, likeMessage, showFeedback, primaryColor]);\n\n return (\n <XAdkChatbot\n messages={messages}\n loading={loading}\n prologue={prologue}\n suggestions={suggestions}\n onSuggest={suggestChat}\n // 操作栏:使用外部传入的 actions,否则用内置默认 actions\n actions={actions ?? defaultActions}\n // 启用分组和解析\n enableGrouping={true}\n enableProcessParsing={true}\n // 使用注释模式解析\n parseOptions={{ mode: \"comment\" }}\n initialized={initialized}\n // 文件点击回调\n onFileClick={onFileClick}\n // 样式\n className={className}\n style={style}\n />\n );\n};\n\nexport default Messages;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useCallback","message","Tooltip","Flex","LikeFilled","LikeOutlined","ReloadOutlined","CopyOutlined","copy","XAdkChatbot","DislikeFeedback","useChatState","useChatActions","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","Messages","_ref","actions","className","style","_useChatState","messages","loading","prologue","suggestions","initialized","showFeedback","appInfo","onFileClick","_useChatActions","suggestChat","reChat","likeMessage","confirmFnCall","primaryColor","appTheme","defaultActions","_ref2","_group$isLike","group","isLastBotMsg","lastMsg","msgs","length","invocationId","isLikeVal","isLike","fullText","filter","m","functionCall","functionResponse","map","text","join","gap","align","padding","color","children","title","cursor","onClick","success","_asyncToGenerator","_regeneratorRuntime","mark","_callee","ok","wrap","_callee$","_context","prev","next","warning","abrupt","sent","error","stop","msg","activeColor","onSubmit","_ref4","_callee2","formData","_callee2$","_context2","_x","apply","arguments","onSuggest","onConfirm","enableGrouping","enableProcessParsing","parseOptions","mode"],"sources":["../../../../../src/components/XAdkProvider/compound/Messages.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { message, Tooltip, Flex } from \"antd\";\nimport {\n LikeFilled,\n LikeOutlined,\n ReloadOutlined,\n CopyOutlined,\n} from \"@ant-design/icons\";\nimport copy from \"copy-to-clipboard\";\nimport XAdkChatbot from \"../../XAdkChatbot\";\nimport DislikeFeedback from \"./DislikeFeedBack\";\nimport { useChatState } from \"../context/ChatStateContext\";\nimport { useChatActions } from \"../context/ChatActionContext\";\nimport type { ActionProps } from \"@/types\";\n\nexport interface XAdkMessagesProps {\n /** 自定义操作栏渲染 */\n actions?: ActionProps;\n /** 类名 */\n className?: string;\n /** 样式 */\n style?: React.CSSProperties;\n}\n\n/**\n * Messages - XAdkProvider 的消息展示组件\n *\n * 使用 XAdkChatbot 渲染消息列表\n */\nconst Messages: React.FC<XAdkMessagesProps> = ({\n actions,\n className,\n style,\n}) => {\n const {\n messages,\n loading,\n prologue,\n suggestions,\n initialized,\n showFeedback,\n appInfo,\n onFileClick,\n } = useChatState();\n const { suggestChat, reChat, likeMessage, confirmFnCall } = useChatActions();\n\n const primaryColor = appInfo?.appTheme || \"#1677ff\";\n\n const defaultActions = useCallback<ActionProps>(\n ({ message: group, isLastBotMsg }) => {\n // 取该组最后一条 bot 消息的 invocationId 和 isLike 状态\n const lastMsg = group.msgs[group.msgs.length - 1];\n const invocationId = lastMsg?.invocationId;\n const isLikeVal = group.isLike ?? 0;\n\n const fullText = group.msgs\n .filter((m) => !m.functionCall && !m.functionResponse)\n .map((m) => m.text || \"\")\n .join(\"\");\n\n return (\n <Flex\n gap={16}\n align=\"center\"\n style={{ padding: \"4px 0\", color: \"#81858c\" }}\n >\n {isLastBotMsg && (\n <Tooltip title=\"重新生成\">\n <ReloadOutlined style={{ cursor: \"pointer\" }} onClick={reChat} />\n </Tooltip>\n )}\n <Tooltip title=\"复制内容\">\n <CopyOutlined\n style={{ cursor: \"pointer\" }}\n onClick={() => {\n copy(fullText);\n message.success(\"复制成功\");\n }}\n />\n </Tooltip>\n {showFeedback && invocationId && (\n <>\n <Tooltip title=\"赞\">\n {isLikeVal === 1 ? (\n <LikeFilled\n style={{ color: primaryColor, cursor: \"pointer\" }}\n />\n ) : (\n <LikeOutlined\n style={{ cursor: \"pointer\" }}\n onClick={async () => {\n if (isLikeVal !== 0) {\n message.warning(\"已收到您的反馈,无需重复提交\");\n return;\n }\n const ok = await likeMessage(invocationId, 1);\n if (ok) message.success(\"感谢您的反馈\");\n else message.error(\"反馈失败,请稍后再试\");\n }}\n />\n )}\n </Tooltip>\n <DislikeFeedback\n msg={group}\n activeColor={primaryColor}\n onSubmit={async (formData) => {\n const ok = await likeMessage(invocationId, -1, formData);\n if (ok) message.success(\"已收到您的反馈,我们会努力做得更好\");\n else message.error(\"反馈失败,请稍后再试\");\n return ok;\n }}\n />\n </>\n )}\n </Flex>\n );\n },\n [reChat, likeMessage, showFeedback, primaryColor],\n );\n\n return (\n <XAdkChatbot\n messages={messages}\n loading={loading}\n prologue={prologue}\n suggestions={suggestions}\n onSuggest={suggestChat}\n onConfirm={confirmFnCall}\n // 操作栏:使用外部传入的 actions,否则用内置默认 actions\n actions={actions ?? defaultActions}\n // 启用分组和解析\n enableGrouping={true}\n enableProcessParsing={true}\n // 使用注释模式解析\n parseOptions={{ mode: \"comment\" }}\n initialized={initialized}\n // 文件点击回调\n onFileClick={onFileClick}\n // 样式\n className={className}\n style={style}\n />\n );\n};\n\nexport default Messages;\n"],"mappings":"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"}
@@ -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"}
@@ -29,6 +29,7 @@ export interface ChatStateContextType {
29
29
  showFeedback: boolean;
30
30
  /** 点击附件回调 */
31
31
  onFileClick?: (file: FileItem) => void;
32
+ onConfirm?: () => void;
32
33
  /** 自定义上传函数 */
33
34
  uploadRequest?: UploadRequestFn;
34
35
  }
@@ -1 +1 @@
1
- {"version":3,"names":["createContext","useContext","ChatStateContext","useChatState","context","Error"],"sources":["../../../../../src/components/XAdkProvider/context/ChatStateContext.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { IMessage, FileItem, UploadRequestFn } from \"@/types\";\nimport type { ChatConfig } from \"@/services/api\";\n\n/**\n * 聊天状态 Context\n * 只包含状态数据,不包含操作方法\n * 这样可以避免不必要的 rerender\n */\nexport interface ChatStateContextType {\n /** 请求地址 */\n url: string;\n /** 会话令牌 */\n token: string;\n /** 消息列表 */\n messages: IMessage[];\n /** 加载状态 */\n loading: boolean;\n /** 当前会话 ID */\n currentSessionId: string;\n /** 开场白 */\n prologue: string;\n /** 建议问题列表 */\n suggestions: string[];\n /** 应用配置信息 */\n appInfo: ChatConfig | null;\n /** 是否已初始化 */\n initialized: boolean;\n /** 是否展示点赞/点踩 */\n showFeedback: boolean;\n /** 点击附件回调 */\n onFileClick?: (file: FileItem) => void;\n /** 自定义上传函数 */\n uploadRequest?: UploadRequestFn;\n}\n\nexport const ChatStateContext = createContext<ChatStateContextType | null>(\n null,\n);\n\n/**\n * 使用聊天状态 Hook\n * @returns ChatStateContextType\n * @throws Error 如果在 XAdkProvider 外部使用\n */\nexport const useChatState = () => {\n const context = useContext(ChatStateContext);\n if (!context) {\n throw new Error(\"useChatState must be used within XAdkProvider\");\n }\n return context;\n};\n"],"mappings":"AAAA,SAASA,aAAa,EAAEC,UAAU,QAAQ,OAAO;;AAIjD;AACA;AACA;AACA;AACA;;AA4BA,OAAO,IAAMC,gBAAgB,gBAAGF,aAAa,CAC3C,IACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMG,YAAY,GAAG,SAAfA,YAAYA,CAAA,EAAS;EAChC,IAAMC,OAAO,GAAGH,UAAU,CAACC,gBAAgB,CAAC;EAC5C,IAAI,CAACE,OAAO,EAAE;IACZ,MAAM,IAAIC,KAAK,CAAC,+CAA+C,CAAC;EAClE;EACA,OAAOD,OAAO;AAChB,CAAC"}
1
+ {"version":3,"names":["createContext","useContext","ChatStateContext","useChatState","context","Error"],"sources":["../../../../../src/components/XAdkProvider/context/ChatStateContext.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { IMessage, FileItem, UploadRequestFn } from \"@/types\";\nimport type { ChatConfig } from \"@/services/api\";\n\n/**\n * 聊天状态 Context\n * 只包含状态数据,不包含操作方法\n * 这样可以避免不必要的 rerender\n */\nexport interface ChatStateContextType {\n /** 请求地址 */\n url: string;\n /** 会话令牌 */\n token: string;\n /** 消息列表 */\n messages: IMessage[];\n /** 加载状态 */\n loading: boolean;\n /** 当前会话 ID */\n currentSessionId: string;\n /** 开场白 */\n prologue: string;\n /** 建议问题列表 */\n suggestions: string[];\n /** 应用配置信息 */\n appInfo: ChatConfig | null;\n /** 是否已初始化 */\n initialized: boolean;\n /** 是否展示点赞/点踩 */\n showFeedback: boolean;\n /** 点击附件回调 */\n onFileClick?: (file: FileItem) => void;\n // 确认工具执行回调 */\n onConfirm?: () => void;\n /** 自定义上传函数 */\n uploadRequest?: UploadRequestFn;\n}\n\nexport const ChatStateContext = createContext<ChatStateContextType | null>(\n null,\n);\n\n/**\n * 使用聊天状态 Hook\n * @returns ChatStateContextType\n * @throws Error 如果在 XAdkProvider 外部使用\n */\nexport const useChatState = () => {\n const context = useContext(ChatStateContext);\n if (!context) {\n throw new Error(\"useChatState must be used within XAdkProvider\");\n }\n return context;\n};\n"],"mappings":"AAAA,SAASA,aAAa,EAAEC,UAAU,QAAQ,OAAO;;AAIjD;AACA;AACA;AACA;AACA;;AA8BA,OAAO,IAAMC,gBAAgB,gBAAGF,aAAa,CAC3C,IACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMG,YAAY,GAAG,SAAfA,YAAYA,CAAA,EAAS;EAChC,IAAMC,OAAO,GAAGH,UAAU,CAACC,gBAAgB,CAAC;EAC5C,IAAI,CAACE,OAAO,EAAE;IACZ,MAAM,IAAIC,KAAK,CAAC,+CAA+C,CAAC;EAClE;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":"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"}
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,