@ai-group/chat-sdk 2.1.10 → 2.1.13

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.
@@ -139,13 +139,14 @@ var 携带历史记录实例 = {
139
139
  ) }) });
140
140
  },
141
141
  args: {
142
- url: "https://m-poc-dev.zaxline.com",
143
- token: "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiZnBRYyt5MjB0VDBwbkl1QWtWamgyQT09Iiwic2NvcGUiOlsiS3BzNDlZbncwMzBBenlsaGRZVXVRNWlUIl0sImV4cCI6MTc2ODM5NDc2MSwianRpIjoiSV85OFRHUmFXSERCWWZrTThBaTZ6LVNHYzI0IiwiY2xpZW50X2lkIjoiS3BzNDlZbncwMzBBenlsaGRZVXVRNWlUIn0.F-ICv68-LxLKRlNgXb30JSO-37Zb0ziOb-pZ1qcYXRN_ArlwU6Y0wkMJL-2ckSjqu1LHHXe-5Rd65jirT4V6zqsd23lRUAlDRGNJmbyzebhaqCe9LsiWm5s4rPMJ85tGzHsl4kHyn5hdkJLFm7VPeCYplHgmGypc1oGdv06iFbObnBiK6sHIWhetlYIaKfTZvmYIMGk2tV4qUc7oUKq-LEBRg6WKuY5gtpXwISZ0pjWr3NXogwv5UAHASv1-KrI-PriR-lfDWq0ghDKmnxZB7OdWF1xX6_2S8Lu7wBW9zNQgT1lmNZiS6irzhHE6iKTFxTXIYITInWRGc6kFSqxEbA",
142
+ url: "https://m-poc.zaxline.com",
143
+ token: "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiU0tUYkp6MDE5bWFVdnFqcC9OUGJEQT09Iiwic2NvcGUiOlsiMGhic2RXYkZVYktZRXkxMEsxNDM3WFhtIl0sImV4cCI6MTc2OTE2MzM1NCwianRpIjoiSlFGN21SSEwyLWFhaVF3Nlh0Q19mcEw3eTEwIiwiY2xpZW50X2lkIjoiMGhic2RXYkZVYktZRXkxMEsxNDM3WFhtIn0.NxxxWuSjnDt6Md79wOJX2AznuZ0sE4vZ8p9Gdva-ncDt-Qz6ghUUlKq47HIgAdrnDxIABU7H0RsHXv43rzFcBTK5GMr-SprF4TqhbMbhhEdTwGPgN76kaJVh4SagfbczWuIVBQl4PIzVZ2yMrYz0M2itYYoaAfvnbGBfRIZ6MJIhM-BCAAjrv86I3qDHnYQedjKmdiS9CXeoOt_lqQWk-GU-wl2FhkTsmo4Xt9PD055PPdEmsGCj5I__lIe4W2jqtGPmq82SNfLuzd0TUU7kmf6maUgLqVIRX7EUv51tW4P9BjnNP6fkG7Gkvte46pcO93OAXSlxd7QZ7jca5Gs62w",
144
144
  config: {
145
- appNo: "Kps49Ynw030AzylhdYUuQ5iT",
145
+ appNo: "0hbsdWbFUbKYEy10K1437XXm",
146
146
  session: {
147
147
  showSessionList: true
148
148
  },
149
+ showFirstSession: true,
149
150
  allowUpload: true
150
151
  },
151
152
  providerId: "demo-provider"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/XAdkWebProvider/XAdkWebProvider.stories.tsx"],
4
- "sourcesContent": ["import React from 'react';\nimport type { Meta, StoryObj } from '@storybook/react-vite';\nimport { Button } from 'antd';\nimport XAdkWebProvider from './index';\n\nconst meta: Meta<typeof XAdkWebProvider> = {\n title: 'AI组件/XAdkWebProvider AI容器',\n component: XAdkWebProvider,\n parameters: {\n layout: 'centered',\n docs: {\n description: {\n component: 'AI 聊天机器人容器组件,提供全局上下文和消息管理功能。',\n },\n },\n },\n tags: ['autodocs'],\n argTypes: {\n config: {\n description: '配置信息',\n table: {\n type: {\n summary: 'XAdkWebProviderConfig',\n detail: `{\n appNo?: string; // 应用唯一编号\n }`,\n },\n category: '配置选项',\n },\n },\n },\n // 添加装饰器,确保组件有必要的上下文\n decorators: [\n (Story) => (\n <div style={{ padding: '20px' }}>\n <Story />\n </div>\n ),\n ],\n};\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\n// 使用 Provider 的 XAiChatbot\nexport const 单聊天窗口实例: Story = {\n render: (args) => {\n const providerRef = React.useRef<any>(null);\n\n const handleSendMessage = () => {\n if (providerRef.current?.chat) {\n providerRef.current.chat({ text: '你好,AI!' });\n } else {\n console.log('XAdkWebProvider ref 未准备好或 chat 方法不存在');\n }\n };\n\n return (\n <div style={{ display: 'flex' }}>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '12px', marginRight: '24px', justifyContent: 'center' }}>\n <Button type=\"primary\" onClick={handleSendMessage}>发送消息</Button>\n </div>\n <div style={{ maxWidth: '350px', height: '600px' }}>\n <XAdkWebProvider\n ref={providerRef}\n {...args}\n // onError={(providerError) => console.log(providerError)}\n // onMessage={(data) => console.log(data)}\n >\n </XAdkWebProvider>\n </div>\n </div>\n );\n },\n args: {\n url: 'https://m-poc-dev.zaxline.com',\n token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiVjRTT0htSm8zWmVhNFJOdWc3WFgyQT09Iiwic2NvcGUiOlsiTUZYNVR4bGhlSUtiZWtaSEtvZU9WTmxvIl0sImV4cCI6MTc2Nzk1MjM0NywianRpIjoiSHpLMll4cVdjSTA3QWtmOHlsQXYwV0w0aE5jIiwiY2xpZW50X2lkIjoiTUZYNVR4bGhlSUtiZWtaSEtvZU9WTmxvIn0.AjABoyZFxAACkfy-ywLlfaJd6YY0Ir3pBGx_-HzW9di9p_4rnptbFI4adk9pktSVtlLB0cs45SU6uzp6VCJUj9-q-MP8QBqL6i7u2HV9e-kuBJgyIZD4t0PsazpJNu4rDlBAymYzw73ptLPjCwsUkckUz4Xhy1WmR8mpmuG0nuSWzlDlWKiaPgeMhA0Cnp4BV47zplvQ-r60VkarCg9JGHQNmIkQfG3llcjc-ZK4UKVkrFZynXhcCsp1ry7TwfRnwtXwQ1kZXDmeQxWFudhVaHwthraFF-fkHmYZpyTDrZQJY2Rn9nWO59ZHNh3I6-KiKdsNzv8Jl5T_dCUVPj7l3w',\n config: {\n appNo: 'MFX5TxlheIKbekZHKoeOVNlo',\n },\n providerId: 'demo-provider',\n },\n};\n\n\n// 使用 Provider 的 XAiChatbot\nexport const 携带历史记录实例: Story = {\n render: (args) => {\n const providerRef = React.useRef<any>(null);\n\n const handleSendMessage = () => {\n if (providerRef.current?.chat) {\n providerRef.current.chat({\n text: '你好,AI!', // 上传文案\n files: [], // 如果需要上传附件\n });\n } else {\n console.log('XAdkWebProvider ref 未准备好或 chat 方法不存在');\n }\n };\n\n const handleOnEvent = (event: any) => {\n const { code, data } = event;\n console.warn(code);\n if (code === 'SESSION_SWITCH') {\n console.log(providerRef.current.getMessages());\n } else if (code === 'APP_MESSAGES_INIT_SUCCESS') {\n console.log(code, data);\n }\n };\n\n return (\n <div style={{ display: 'flex' }}>\n <div style={{ height: '600px', width: '100vw' }}>\n <XAdkWebProvider\n ref={providerRef}\n {...args}\n onError={(providerError) => console.log(providerError)}\n onSuccess={handleOnEvent}\n onStream={(data) => console.log(data)}\n onEvent={handleOnEvent}\n />\n </div>\n </div>\n );\n },\n args: {\n url: 'https://m-poc-dev.zaxline.com',\n token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiZnBRYyt5MjB0VDBwbkl1QWtWamgyQT09Iiwic2NvcGUiOlsiS3BzNDlZbncwMzBBenlsaGRZVXVRNWlUIl0sImV4cCI6MTc2ODM5NDc2MSwianRpIjoiSV85OFRHUmFXSERCWWZrTThBaTZ6LVNHYzI0IiwiY2xpZW50X2lkIjoiS3BzNDlZbncwMzBBenlsaGRZVXVRNWlUIn0.F-ICv68-LxLKRlNgXb30JSO-37Zb0ziOb-pZ1qcYXRN_ArlwU6Y0wkMJL-2ckSjqu1LHHXe-5Rd65jirT4V6zqsd23lRUAlDRGNJmbyzebhaqCe9LsiWm5s4rPMJ85tGzHsl4kHyn5hdkJLFm7VPeCYplHgmGypc1oGdv06iFbObnBiK6sHIWhetlYIaKfTZvmYIMGk2tV4qUc7oUKq-LEBRg6WKuY5gtpXwISZ0pjWr3NXogwv5UAHASv1-KrI-PriR-lfDWq0ghDKmnxZB7OdWF1xX6_2S8Lu7wBW9zNQgT1lmNZiS6irzhHE6iKTFxTXIYITInWRGc6kFSqxEbA',\n config: {\n appNo: 'Kps49Ynw030AzylhdYUuQ5iT',\n session: {\n showSessionList: true,\n },\n allowUpload: true\n },\n providerId: 'demo-provider',\n },\n};"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import React from 'react';\nimport type { Meta, StoryObj } from '@storybook/react-vite';\nimport { Button } from 'antd';\nimport XAdkWebProvider from './index';\n\nconst meta: Meta<typeof XAdkWebProvider> = {\n title: 'AI组件/XAdkWebProvider AI容器',\n component: XAdkWebProvider,\n parameters: {\n layout: 'centered',\n docs: {\n description: {\n component: 'AI 聊天机器人容器组件,提供全局上下文和消息管理功能。',\n },\n },\n },\n tags: ['autodocs'],\n argTypes: {\n config: {\n description: '配置信息',\n table: {\n type: {\n summary: 'XAdkWebProviderConfig',\n detail: `{\n appNo?: string; // 应用唯一编号\n }`,\n },\n category: '配置选项',\n },\n },\n },\n // 添加装饰器,确保组件有必要的上下文\n decorators: [\n (Story) => (\n <div style={{ padding: '20px' }}>\n <Story />\n </div>\n ),\n ],\n};\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\n// 使用 Provider 的 XAiChatbot\nexport const 单聊天窗口实例: Story = {\n render: (args) => {\n const providerRef = React.useRef<any>(null);\n\n const handleSendMessage = () => {\n if (providerRef.current?.chat) {\n providerRef.current.chat({ text: '你好,AI!' });\n } else {\n console.log('XAdkWebProvider ref 未准备好或 chat 方法不存在');\n }\n };\n\n return (\n <div style={{ display: 'flex' }}>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '12px', marginRight: '24px', justifyContent: 'center' }}>\n <Button type=\"primary\" onClick={handleSendMessage}>发送消息</Button>\n </div>\n <div style={{ maxWidth: '350px', height: '600px' }}>\n <XAdkWebProvider\n ref={providerRef}\n {...args}\n // onError={(providerError) => console.log(providerError)}\n // onMessage={(data) => console.log(data)}\n >\n </XAdkWebProvider>\n </div>\n </div>\n );\n },\n args: {\n url: 'https://m-poc-dev.zaxline.com',\n token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiVjRTT0htSm8zWmVhNFJOdWc3WFgyQT09Iiwic2NvcGUiOlsiTUZYNVR4bGhlSUtiZWtaSEtvZU9WTmxvIl0sImV4cCI6MTc2Nzk1MjM0NywianRpIjoiSHpLMll4cVdjSTA3QWtmOHlsQXYwV0w0aE5jIiwiY2xpZW50X2lkIjoiTUZYNVR4bGhlSUtiZWtaSEtvZU9WTmxvIn0.AjABoyZFxAACkfy-ywLlfaJd6YY0Ir3pBGx_-HzW9di9p_4rnptbFI4adk9pktSVtlLB0cs45SU6uzp6VCJUj9-q-MP8QBqL6i7u2HV9e-kuBJgyIZD4t0PsazpJNu4rDlBAymYzw73ptLPjCwsUkckUz4Xhy1WmR8mpmuG0nuSWzlDlWKiaPgeMhA0Cnp4BV47zplvQ-r60VkarCg9JGHQNmIkQfG3llcjc-ZK4UKVkrFZynXhcCsp1ry7TwfRnwtXwQ1kZXDmeQxWFudhVaHwthraFF-fkHmYZpyTDrZQJY2Rn9nWO59ZHNh3I6-KiKdsNzv8Jl5T_dCUVPj7l3w',\n config: {\n appNo: 'MFX5TxlheIKbekZHKoeOVNlo',\n },\n providerId: 'demo-provider',\n },\n};\n\n\n// 使用 Provider 的 XAiChatbot\nexport const 携带历史记录实例: Story = {\n render: (args) => {\n const providerRef = React.useRef<any>(null);\n\n const handleSendMessage = () => {\n if (providerRef.current?.chat) {\n providerRef.current.chat({\n text: '你好,AI!', // 上传文案\n files: [], // 如果需要上传附件\n });\n } else {\n console.log('XAdkWebProvider ref 未准备好或 chat 方法不存在');\n }\n };\n\n const handleOnEvent = (event: any) => {\n const { code, data } = event;\n console.warn(code);\n if (code === 'SESSION_SWITCH') {\n console.log(providerRef.current.getMessages());\n } else if (code === 'APP_MESSAGES_INIT_SUCCESS') {\n console.log(code, data);\n }\n };\n\n return (\n <div style={{ display: 'flex' }}>\n <div style={{ height: '600px', width: '100vw' }}>\n <XAdkWebProvider\n ref={providerRef}\n {...args}\n onError={(providerError) => console.log(providerError)}\n onSuccess={handleOnEvent}\n onStream={(data) => console.log(data)}\n onEvent={handleOnEvent}\n />\n </div>\n </div>\n );\n },\n args: {\n url: 'https://m-poc.zaxline.com',\n token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiU0tUYkp6MDE5bWFVdnFqcC9OUGJEQT09Iiwic2NvcGUiOlsiMGhic2RXYkZVYktZRXkxMEsxNDM3WFhtIl0sImV4cCI6MTc2OTE2MzM1NCwianRpIjoiSlFGN21SSEwyLWFhaVF3Nlh0Q19mcEw3eTEwIiwiY2xpZW50X2lkIjoiMGhic2RXYkZVYktZRXkxMEsxNDM3WFhtIn0.NxxxWuSjnDt6Md79wOJX2AznuZ0sE4vZ8p9Gdva-ncDt-Qz6ghUUlKq47HIgAdrnDxIABU7H0RsHXv43rzFcBTK5GMr-SprF4TqhbMbhhEdTwGPgN76kaJVh4SagfbczWuIVBQl4PIzVZ2yMrYz0M2itYYoaAfvnbGBfRIZ6MJIhM-BCAAjrv86I3qDHnYQedjKmdiS9CXeoOt_lqQWk-GU-wl2FhkTsmo4Xt9PD055PPdEmsGCj5I__lIe4W2jqtGPmq82SNfLuzd0TUU7kmf6maUgLqVIRX7EUv51tW4P9BjnNP6fkG7Gkvte46pcO93OAXSlxd7QZ7jca5Gs62w',\n config: {\n appNo: '0hbsdWbFUbKYEy10K1437XXm',\n session: {\n showSessionList: true,\n },\n showFirstSession: true,\n allowUpload: true\n },\n providerId: 'demo-provider',\n },\n};"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkB;AAElB,kBAAuB;AACvB,mBAA4B;AAgCpB;AA9BR,IAAM,OAAqC;AAAA,EACzC,OAAO;AAAA,EACP,WAAW,aAAAA;AAAA,EACX,YAAY;AAAA,IACV,QAAQ;AAAA,IACR,MAAM;AAAA,MACJ,aAAa;AAAA,QACX,WAAW;AAAA,MACb;AAAA,IACF;AAAA,EACF;AAAA,EACA,MAAM,CAAC,UAAU;AAAA,EACjB,UAAU;AAAA,IACR,QAAQ;AAAA,MACN,aAAa;AAAA,MACb,OAAO;AAAA,QACL,MAAM;AAAA,UACJ,SAAS;AAAA,UACT,QAAQ;AAAA;AAAA;AAAA,QAGV;AAAA,QACA,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AAAA;AAAA,EAEA,YAAY;AAAA,IACV,CAAC,UACC,4CAAC,SAAI,OAAO,EAAE,SAAS,OAAO,GAC5B,sDAAC,SAAM,GACT;AAAA,EAEJ;AACF;AAEA,IAAO,kCAAQ;AAIR,IAAM,UAAiB;AAAA,EAC5B,QAAQ,CAAC,SAAS;AAChB,UAAM,cAAc,aAAAC,QAAM,OAAY,IAAI;AAE1C,UAAM,oBAAoB,MAAM;AAjDpC;AAkDM,WAAI,iBAAY,YAAZ,mBAAqB,MAAM;AAC7B,oBAAY,QAAQ,KAAK,EAAE,MAAM,SAAS,CAAC;AAAA,MAC7C,OAAO;AACL,gBAAQ,IAAI,sCAAsC;AAAA,MACpD;AAAA,IACF;AAEA,WACE,6CAAC,SAAI,OAAO,EAAE,SAAS,OAAO,GAC5B;AAAA,kDAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,eAAe,UAAU,KAAK,QAAQ,aAAa,QAAQ,gBAAgB,SAAS,GACjH,sDAAC,sBAAO,MAAK,WAAU,SAAS,mBAAmB,kBAAI,GACzD;AAAA,MACA,4CAAC,SAAI,OAAO,EAAE,UAAU,SAAS,QAAQ,QAAQ,GAC/C;AAAA,QAAC,aAAAD;AAAA,QAAA;AAAA,UACC,KAAK;AAAA,UACJ,GAAG;AAAA;AAAA,MAIN,GACF;AAAA,OACF;AAAA,EAEJ;AAAA,EACA,MAAM;AAAA,IACJ,KAAK;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA,YAAY;AAAA,EACd;AACF;AAIO,IAAM,WAAkB;AAAA,EAC7B,QAAQ,CAAC,SAAS;AAChB,UAAM,cAAc,aAAAC,QAAM,OAAY,IAAI;AAE1C,UAAM,oBAAoB,MAAM;AA1FpC;AA2FM,WAAI,iBAAY,YAAZ,mBAAqB,MAAM;AAC7B,oBAAY,QAAQ,KAAK;AAAA,UACvB,MAAM;AAAA;AAAA,UACN,OAAO,CAAC;AAAA;AAAA,QACV,CAAC;AAAA,MACH,OAAO;AACL,gBAAQ,IAAI,sCAAsC;AAAA,MACpD;AAAA,IACF;AAEA,UAAM,gBAAgB,CAAC,UAAe;AACpC,YAAM,EAAE,MAAM,KAAK,IAAI;AACvB,cAAQ,KAAK,IAAI;AACjB,UAAI,SAAS,kBAAkB;AAC7B,gBAAQ,IAAI,YAAY,QAAQ,YAAY,CAAC;AAAA,MAC/C,WAAW,SAAS,6BAA6B;AAC/C,gBAAQ,IAAI,MAAM,IAAI;AAAA,MACxB;AAAA,IACF;AAEA,WACE,4CAAC,SAAI,OAAO,EAAE,SAAS,OAAO,GAC5B,sDAAC,SAAI,OAAO,EAAE,QAAQ,SAAS,OAAO,QAAQ,GAC5C;AAAA,MAAC,aAAAD;AAAA,MAAA;AAAA,QACC,KAAK;AAAA,QACJ,GAAG;AAAA,QACJ,SAAS,CAAC,kBAAkB,QAAQ,IAAI,aAAa;AAAA,QACrD,WAAW;AAAA,QACX,UAAU,CAAC,SAAS,QAAQ,IAAI,IAAI;AAAA,QACpC,SAAS;AAAA;AAAA,IACX,GACF,GACF;AAAA,EAEJ;AAAA,EACA,MAAM;AAAA,IACJ,KAAK;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA,MACN,OAAO;AAAA,MACP,SAAS;AAAA,QACP,iBAAiB;AAAA,MACnB;AAAA,MACA,kBAAkB;AAAA,MAClB,aAAa;AAAA,IACf;AAAA,IACA,YAAY;AAAA,EACd;AACF;",
6
6
  "names": ["XAdkWebProvider", "React"]
7
7
  }
@@ -174,10 +174,10 @@ var 携带历史记录示例 = {
174
174
  ) });
175
175
  },
176
176
  args: {
177
- url: "https://m-poc-dev.zaxline.com",
178
- token: "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiVjRTT0htSm8zWmVhNFJOdWc3WFgyQT09Iiwic2NvcGUiOlsicmN4anBibU44VVgxVVRRbTU0b0ZNTEtwIl0sImV4cCI6MTc2NTI3ODg4NiwianRpIjoiNFRTcWdfV3NJOHlqSEdZUmRRVEtuT0dPbjU4IiwiY2xpZW50X2lkIjoicmN4anBibU44VVgxVVRRbTU0b0ZNTEtwIn0.duUIEPpHmyMwaZYtvM5BlAs1e1ZEco_DaD2NI-Ht2m0OE8khQBe284vRSPxgvxKm7aHOcAo_Kla9DE0YBPUxKeN1c0qgRepIacLB7AvTWFZtb59OjdGMfMHQbbZiuy4wu5W81dVoOpZWCjIkOomCtvCsIZpUQY7vdIZBCB9sygmwTJ7S_9oF10iUtK90AdZHX-_9jdlKNJC-Fulg9ab88Z33rnmW8jhhqpEkYYzGnccXNQuomxswMo_MgyplV_B9wpfs90tEnPWC623dcdfJHcRJZBtC-NU6RomkPLewdz3dEM-LaWBkP6FMI60C0VQW-fvwWkWC1GKBrUeaXzbgWg",
177
+ url: "https://m-poc.zaxline.com",
178
+ token: "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiU0tUYkp6MDE5bWFVdnFqcC9OUGJEQT09Iiwic2NvcGUiOlsiMGhic2RXYkZVYktZRXkxMEsxNDM3WFhtIl0sImV4cCI6MTc2OTE2MzE5MCwianRpIjoiV1B4QTJrTzB0dlV5eW84MWdxSVlldlZRWUFRIiwiY2xpZW50X2lkIjoiMGhic2RXYkZVYktZRXkxMEsxNDM3WFhtIn0.f8tEHi-1Gokv09ce2YjO17yD4SL-KFNCiyFmVOLMvHnHltDh9g2BsxSEB9IreaEvqT70-nl9qgWjb8V2As9QTBNPvfdStXmvc1X4HYsWPDdX0YeLWBAgJ0clJufL62SzwRLNb-torvuLvQfqohF3Aqr7QUXt2x_ZOUA1G5jkG8K9_FZPYBBfUMf6JV8CejogqCSe-yjIKPhbh9dDcCGO6ibexTT1x8C1f2LwP-sMyYmPOIdEqelmzk5-m32yy2fINKz9zG8NWMRx8G4Sr1l-pZzxSGOQ3v6EKUe3M_I-W3pZc6G9gzIXb2Wq_lE7q_l91ee5dU8ex1To8X_PtFd8_g",
179
179
  config: {
180
- appNo: "rcxjpbmN8UX1UTQm54oFMLKp",
180
+ appNo: "0hbsdWbFUbKYEy10K1437XXm",
181
181
  chatProps: {
182
182
  clearBtnShow: false
183
183
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/XAiProvider/XAiProvider.stories.tsx"],
4
- "sourcesContent": ["import React from 'react';\nimport type { Meta, StoryObj } from '@storybook/react-vite';\nimport { Button } from 'antd';\nimport XAiProvider from './index';\nimport XAiChatbot from '../XAiChatbot';\nimport XAiConversations from '../XAiConversations';\n\nconst meta: Meta<typeof XAiProvider> = {\n title: 'AI组件/XAiProvider AI容器',\n component: XAiProvider,\n parameters: {\n layout: 'centered',\n docs: {\n description: {\n component: 'AI 聊天机器人容器组件,提供全局上下文和消息管理功能。',\n },\n },\n },\n tags: ['autodocs'],\n argTypes: {\n config: {\n description: '配置信息',\n table: {\n type: {\n summary: 'XAiProviderConfig',\n detail: `{\n appNo?: string; // 应用唯一编号\n }`,\n },\n category: '配置选项',\n },\n },\n },\n // 添加装饰器,确保组件有必要的上下文\n decorators: [\n (Story) => (\n <div style={{ padding: '20px' }}>\n <Story />\n </div>\n ),\n ],\n};\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\n// 使用 Provider 的 XAiChatbot\nexport const 单聊天窗口实例: Story = {\n render: (args) => {\n const providerRef = React.useRef<any>(null);\n\n const handleSendMessage = () => {\n if (providerRef.current?.chat) {\n providerRef.current.chat({ text: '你好,AI!' });\n } else {\n console.log('XAiProvider ref 未准备好或 chat 方法不存在');\n }\n };\n\n return (\n <div style={{ display: 'flex' }}>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '12px', marginRight: '24px', justifyContent: 'center' }}>\n <Button type=\"primary\" onClick={handleSendMessage}>发送消息</Button>\n </div>\n <div style={{ maxWidth: '800px', height: '600px' }}>\n <XAiProvider\n ref={providerRef}\n {...args}\n onError={(providerError) => console.log(providerError)}\n onMessage={(data) => console.log(data)}\n >\n <XAiChatbot\n navbarShow\n navbar={{\n title: 'Provider 聊天机器人',\n subtitle: '由 Provider 管理消息',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </XAiProvider>\n </div>\n </div>\n );\n },\n args: {\n url: 'https://m-poc-dev.zaxline.com',\n token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiVjRTT0htSm8zWmVhNFJOdWc3WFgyQT09Iiwic2NvcGUiOlsiZ2JWemZPVjhTa1oxdGRMT3BYNWZyVXpMIl0sImV4cCI6MTc2NDY3MTc2MSwianRpIjoiRl9Zb0JBXzhIN01XempDZUxQenEzNTBXRnNrIiwiY2xpZW50X2lkIjoiZ2JWemZPVjhTa1oxdGRMT3BYNWZyVXpMIn0.mtGBQfwNtIkhcOumsOvzMj2BdYUxAPwZ9GcvNLuCNGVzFkqkLkfy_LALjYR2B-RaNj11_Cx7DcewtmLceG31KfnCiFY24BD_CbwoahdFh40SYRTFnjDf8XQI22E63h5NxTuldPx0itYLUPaUO6NAubnRON40eQPGZKygM0i72ULsQQAyRpJLYAaTjUxyPIW3JmMzQmYiRx641JeAYAup4-ZNw-Fqmd-8_xK3kN-a832xM-M_eqXgn8yMttn0uFv95lxPdJ1_-mp2zx8N4TBCYVkHo3u_PjM65S3_p4u1dFGXBDAsxtVMgmVGeUvubTLFuDM153rz9MZ7aOuu_c8K7w',\n config: {\n appNo: 'PGlA63A1Gt9oZpxa6YCWMciH',\n },\n providerId: 'demo-provider',\n },\n};\n\n// 多个 Provider 示例\nexport const 多容器示例: Story = {\n render: (args) => (\n <div style={{ display: 'flex', gap: '20px' }}>\n <div style={{ width: '400px', height: '600px' }}>\n <XAiProvider {...args} providerId=\"provider-1\">\n <XAiChatbot\n navbarShow\n navbar={{\n title: 'Provider 1',\n subtitle: '第一个聊天机器人',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </XAiProvider>\n </div>\n\n <div style={{ width: '400px', height: '600px' }}>\n <XAiProvider {...args} providerId=\"provider-2\">\n <XAiChatbot\n navbarShow\n navbar={{\n title: 'Provider 2',\n subtitle: '第二个聊天机器人',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </XAiProvider>\n </div>\n </div>\n ),\n args: {\n url: 'https://api.example.com/ai',\n token: 'your-token-here',\n },\n};\n\n// 使用 Provider 的 XAiChatbot\nexport const 携带历史记录示例: Story = {\n render: (args) => {\n const providerRef = React.useRef<any>(null);\n\n return (\n <div style={{ width: '1080px', height: '600px', overflow: 'hidden' }}>\n <XAiProvider\n ref={providerRef}\n {...args}\n onError={(providerError) => console.log(providerError)}\n onMessage={(data) => console.log(data)}\n >\n <XAiConversations />\n <div style={{ flex: 1, display: 'flex', justifyContent: 'center' }}>\n <XAiChatbot\n navbar={{\n title: 'Provider 聊天机器人',\n subtitle: '由 Provider 管理消息',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </div>\n </XAiProvider>\n </div>\n );\n },\n args: {\n url: 'https://m-poc-dev.zaxline.com',\n token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiVjRTT0htSm8zWmVhNFJOdWc3WFgyQT09Iiwic2NvcGUiOlsicmN4anBibU44VVgxVVRRbTU0b0ZNTEtwIl0sImV4cCI6MTc2NTI3ODg4NiwianRpIjoiNFRTcWdfV3NJOHlqSEdZUmRRVEtuT0dPbjU4IiwiY2xpZW50X2lkIjoicmN4anBibU44VVgxVVRRbTU0b0ZNTEtwIn0.duUIEPpHmyMwaZYtvM5BlAs1e1ZEco_DaD2NI-Ht2m0OE8khQBe284vRSPxgvxKm7aHOcAo_Kla9DE0YBPUxKeN1c0qgRepIacLB7AvTWFZtb59OjdGMfMHQbbZiuy4wu5W81dVoOpZWCjIkOomCtvCsIZpUQY7vdIZBCB9sygmwTJ7S_9oF10iUtK90AdZHX-_9jdlKNJC-Fulg9ab88Z33rnmW8jhhqpEkYYzGnccXNQuomxswMo_MgyplV_B9wpfs90tEnPWC623dcdfJHcRJZBtC-NU6RomkPLewdz3dEM-LaWBkP6FMI60C0VQW-fvwWkWC1GKBrUeaXzbgWg',\n config: {\n appNo: 'rcxjpbmN8UX1UTQm54oFMLKp',\n chatProps: {\n clearBtnShow: false,\n },\n },\n providerId: 'demo-provider',\n },\n};\n"],
4
+ "sourcesContent": ["import React from 'react';\nimport type { Meta, StoryObj } from '@storybook/react-vite';\nimport { Button } from 'antd';\nimport XAiProvider from './index';\nimport XAiChatbot from '../XAiChatbot';\nimport XAiConversations from '../XAiConversations';\n\nconst meta: Meta<typeof XAiProvider> = {\n title: 'AI组件/XAiProvider AI容器',\n component: XAiProvider,\n parameters: {\n layout: 'centered',\n docs: {\n description: {\n component: 'AI 聊天机器人容器组件,提供全局上下文和消息管理功能。',\n },\n },\n },\n tags: ['autodocs'],\n argTypes: {\n config: {\n description: '配置信息',\n table: {\n type: {\n summary: 'XAiProviderConfig',\n detail: `{\n appNo?: string; // 应用唯一编号\n }`,\n },\n category: '配置选项',\n },\n },\n },\n // 添加装饰器,确保组件有必要的上下文\n decorators: [\n (Story) => (\n <div style={{ padding: '20px' }}>\n <Story />\n </div>\n ),\n ],\n};\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\n// 使用 Provider 的 XAiChatbot\nexport const 单聊天窗口实例: Story = {\n render: (args) => {\n const providerRef = React.useRef<any>(null);\n\n const handleSendMessage = () => {\n if (providerRef.current?.chat) {\n providerRef.current.chat({ text: '你好,AI!' });\n } else {\n console.log('XAiProvider ref 未准备好或 chat 方法不存在');\n }\n };\n\n return (\n <div style={{ display: 'flex' }}>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '12px', marginRight: '24px', justifyContent: 'center' }}>\n <Button type=\"primary\" onClick={handleSendMessage}>发送消息</Button>\n </div>\n <div style={{ maxWidth: '800px', height: '600px' }}>\n <XAiProvider\n ref={providerRef}\n {...args}\n onError={(providerError) => console.log(providerError)}\n onMessage={(data) => console.log(data)}\n >\n <XAiChatbot\n navbarShow\n navbar={{\n title: 'Provider 聊天机器人',\n subtitle: '由 Provider 管理消息',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </XAiProvider>\n </div>\n </div>\n );\n },\n args: {\n url: 'https://m-poc-dev.zaxline.com',\n token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiVjRTT0htSm8zWmVhNFJOdWc3WFgyQT09Iiwic2NvcGUiOlsiZ2JWemZPVjhTa1oxdGRMT3BYNWZyVXpMIl0sImV4cCI6MTc2NDY3MTc2MSwianRpIjoiRl9Zb0JBXzhIN01XempDZUxQenEzNTBXRnNrIiwiY2xpZW50X2lkIjoiZ2JWemZPVjhTa1oxdGRMT3BYNWZyVXpMIn0.mtGBQfwNtIkhcOumsOvzMj2BdYUxAPwZ9GcvNLuCNGVzFkqkLkfy_LALjYR2B-RaNj11_Cx7DcewtmLceG31KfnCiFY24BD_CbwoahdFh40SYRTFnjDf8XQI22E63h5NxTuldPx0itYLUPaUO6NAubnRON40eQPGZKygM0i72ULsQQAyRpJLYAaTjUxyPIW3JmMzQmYiRx641JeAYAup4-ZNw-Fqmd-8_xK3kN-a832xM-M_eqXgn8yMttn0uFv95lxPdJ1_-mp2zx8N4TBCYVkHo3u_PjM65S3_p4u1dFGXBDAsxtVMgmVGeUvubTLFuDM153rz9MZ7aOuu_c8K7w',\n config: {\n appNo: 'PGlA63A1Gt9oZpxa6YCWMciH',\n },\n providerId: 'demo-provider',\n },\n};\n\n// 多个 Provider 示例\nexport const 多容器示例: Story = {\n render: (args) => (\n <div style={{ display: 'flex', gap: '20px' }}>\n <div style={{ width: '400px', height: '600px' }}>\n <XAiProvider {...args} providerId=\"provider-1\">\n <XAiChatbot\n navbarShow\n navbar={{\n title: 'Provider 1',\n subtitle: '第一个聊天机器人',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </XAiProvider>\n </div>\n\n <div style={{ width: '400px', height: '600px' }}>\n <XAiProvider {...args} providerId=\"provider-2\">\n <XAiChatbot\n navbarShow\n navbar={{\n title: 'Provider 2',\n subtitle: '第二个聊天机器人',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </XAiProvider>\n </div>\n </div>\n ),\n args: {\n url: 'https://api.example.com/ai',\n token: 'your-token-here',\n },\n};\n\n// 使用 Provider 的 XAiChatbot\nexport const 携带历史记录示例: Story = {\n render: (args) => {\n const providerRef = React.useRef<any>(null);\n\n return (\n <div style={{ width: '1080px', height: '600px', overflow: 'hidden' }}>\n <XAiProvider\n ref={providerRef}\n {...args}\n onError={(providerError) => console.log(providerError)}\n onMessage={(data) => console.log(data)}\n >\n <XAiConversations />\n <div style={{ flex: 1, display: 'flex', justifyContent: 'center' }}>\n <XAiChatbot\n navbar={{\n title: 'Provider 聊天机器人',\n subtitle: '由 Provider 管理消息',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </div>\n </XAiProvider>\n </div>\n );\n },\n args: {\n url: 'https://m-poc.zaxline.com',\n token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiU0tUYkp6MDE5bWFVdnFqcC9OUGJEQT09Iiwic2NvcGUiOlsiMGhic2RXYkZVYktZRXkxMEsxNDM3WFhtIl0sImV4cCI6MTc2OTE2MzE5MCwianRpIjoiV1B4QTJrTzB0dlV5eW84MWdxSVlldlZRWUFRIiwiY2xpZW50X2lkIjoiMGhic2RXYkZVYktZRXkxMEsxNDM3WFhtIn0.f8tEHi-1Gokv09ce2YjO17yD4SL-KFNCiyFmVOLMvHnHltDh9g2BsxSEB9IreaEvqT70-nl9qgWjb8V2As9QTBNPvfdStXmvc1X4HYsWPDdX0YeLWBAgJ0clJufL62SzwRLNb-torvuLvQfqohF3Aqr7QUXt2x_ZOUA1G5jkG8K9_FZPYBBfUMf6JV8CejogqCSe-yjIKPhbh9dDcCGO6ibexTT1x8C1f2LwP-sMyYmPOIdEqelmzk5-m32yy2fINKz9zG8NWMRx8G4Sr1l-pZzxSGOQ3v6EKUe3M_I-W3pZc6G9gzIXb2Wq_lE7q_l91ee5dU8ex1To8X_PtFd8_g',\n config: {\n appNo: '0hbsdWbFUbKYEy10K1437XXm',\n chatProps: {\n clearBtnShow: false,\n },\n },\n providerId: 'demo-provider',\n },\n};\n"],
5
5
  "mappings": "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",
6
6
  "names": ["XAiProvider", "React", "XAiChatbot", "XAiConversations"]
7
7
  }
@@ -60,7 +60,7 @@ function useADKChat({
60
60
  }) {
61
61
  const [loading, setLoading] = (0, import_react.useState)(false);
62
62
  const ctrl = (0, import_react.useRef)(null);
63
- const { appNo } = config || {};
63
+ const { appNo, showFirstSession } = config || {};
64
64
  const [appInfo, setAppInfo] = (0, import_react.useState)(null);
65
65
  const [initialized, setInitialized] = (0, import_react.useState)(false);
66
66
  const [sessionList, setSessionList] = (0, import_react.useState)([]);
@@ -487,8 +487,6 @@ function useADKChat({
487
487
  }
488
488
  if (part.functionCall)
489
489
  msg.functionCall = part.functionCall;
490
- if (part.functionResponse)
491
- msg.functionResponse = part.functionResponse;
492
490
  if (part.fileData) {
493
491
  msg.inlineData = {
494
492
  displayName: part.fileData.displayName || "",
@@ -502,6 +500,16 @@ function useADKChat({
502
500
  msg.codeExecutionResult = part.codeExecutionResult;
503
501
  if (part.errorMessage)
504
502
  msg.text = part.errorMessage;
503
+ if (part.functionResponse) {
504
+ const functionCallMsg = mapped.find((msg2) => {
505
+ var _a, _b;
506
+ return ((_a = msg2.functionCall) == null ? void 0 : _a.id) === ((_b = part.functionResponse) == null ? void 0 : _b.id);
507
+ });
508
+ if (functionCallMsg) {
509
+ functionCallMsg.functionResponse = part.functionResponse;
510
+ }
511
+ return;
512
+ }
505
513
  mapped.push(msg);
506
514
  });
507
515
  });
@@ -533,6 +541,7 @@ function useADKChat({
533
541
  }
534
542
  };
535
543
  const initAppConversations = async (fetchDetail = false) => {
544
+ var _a, _b;
536
545
  try {
537
546
  setLoading(true);
538
547
  const { data = [], pagination, result } = await (0, import_api.fetchSessionList)({
@@ -557,7 +566,12 @@ function useADKChat({
557
566
  setSessionList(formatSessions);
558
567
  setSessionPagination({ pageNum: sessionPagination.pageNum, pageSize: sessionPagination.pageSize, total: (pagination == null ? void 0 : pagination.total) || 0 });
559
568
  const { sessionId } = data == null ? void 0 : data[0];
560
- fetchDetail && setCurrentSessionDetail(sessionId);
569
+ if (showFirstSession) {
570
+ fetchDetail && setCurrentSessionDetail(sessionId);
571
+ } else {
572
+ setPrologue(((_a = appInfo == null ? void 0 : appInfo.onboardingInfo) == null ? void 0 : _a.prologue) || "");
573
+ setSuggestedQuestions(((_b = appInfo == null ? void 0 : appInfo.onboardingInfo) == null ? void 0 : _b.suggested_questions) || []);
574
+ }
561
575
  if (!initialized) {
562
576
  onSuccess == null ? void 0 : onSuccess({
563
577
  code: import_types.SuccessCode.APP_MESSAGES_INIT_SUCCESS,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/hooks/useADKChat.ts"],
4
- "sourcesContent": ["import { useEffect, useCallback, useMemo, useRef, useState } from 'react';\nimport { fetchEventSource, EventStreamContentType } from '@microsoft/fetch-event-source';\nimport { message } from 'antd';\nimport { v4 } from 'uuid';\nimport { SESSION_PAGE_SIZE, API_SUCCESS_CODE } from '@/constants';\nimport {\n SuccessCode,\n ErrorCode,\n DebugOptions,\n FunctionCall,\n SendContent,\n SessionData,\n AgentRunRequest,\n Event,\n FunctionResponse,\n IMessage,\n Part,\n} from '@/types';\nimport {\n fetchAppConfig,\n fetchSessionList,\n fetchSessionDetail,\n closeSession,\n updateSessionTitle,\n type ChatConfig\n} from '@/services/api';\nimport { safeJsonParse } from '@/utils';\n\nconst combineTextParts = (parts: Part[]) => {\n const result: Part[] = [];\n let combinedTextPart: Part|undefined;\n\n // eslint-disable-next-line no-restricted-syntax\n for (const part of parts) {\n if (part.text) {\n // 如果没有 combined 或 combined 思考类型跟当前 part 不同,则创建新的合并引用\n if (!combinedTextPart || combinedTextPart.thought !== part.thought) {\n combinedTextPart = { ...part };\n result.push(combinedTextPart);\n } else {\n combinedTextPart.text += part.text;\n }\n } else {\n combinedTextPart = undefined;\n result.push(part);\n }\n }\n return result;\n};\n\nfunction useADKChat({\n url,\n token,\n config = {},\n type = 'agentDebug',\n onError,\n onMessage,\n onSuccess,\n onStream,\n}: DebugOptions) {\n const [loading, setLoading] = useState(false);\n const ctrl = useRef<AbortController | null>(null);\n // 应用配置\n const { appNo } = config || {};\n // 智能体信息\n // const [appInfo, setAppInfo] = useState<ChatConfig>({\n // appNo,\n // appVersionNo: '',\n // appTheme: '',\n // appName: '',\n // onboardingInfo: {\n // prologue: '',\n // questionFiles: [],\n // suggested_questions: [],\n // },\n // });\n const [appInfo, setAppInfo] = useState<ChatConfig | null>(null);\n // 初始化完成\n const [initialized, setInitialized] = useState(false);\n // 会话记录\n const [sessionList, setSessionList] = useState<SessionData[]>([]);\n // 当前会话\n const [currentSessionId, setCurrentSessionId] = useState<string>('');\n // 会话分页设置\n const [sessionPagination, setSessionPagination] = useState({ total: 0, pageNum: 1, pageSize: SESSION_PAGE_SIZE });\n // 开场白\n const [prologue, setPrologue] = useState<string>('');\n // 建议问题\n const [suggestedQuestions, setSuggestedQuestions] = useState<string[]>([]);\n const [messages, setMessages] = useState<IMessage[]>([]);\n const mergedMessages = useMemo(() => {\n const fnResMap: Record<string, FunctionResponse> = {};\n messages.forEach((msg) => {\n if (msg.functionResponse) {\n fnResMap[msg?.functionResponse?.id || ''] = msg.functionResponse;\n }\n });\n return messages.map((msg) => {\n if (msg.functionCall) {\n return {\n ...msg,\n functionResponse: fnResMap[msg?.functionCall?.id || ''],\n };\n }\n return msg;\n });\n }, [messages]);\n const textMsgRef = useRef<IMessage>(null);\n const eventDataRef = useRef<Map<string, any>>(new Map());\n\n // 插入消息\n const insertMessage = useCallback((msg: IMessage) => {\n setMessages((prev) => {\n const lastMessage = prev[prev.length - 1];\n if (lastMessage?.isLoading) {\n return [...prev.slice(0, -1), msg, lastMessage];\n }\n return [...prev, msg];\n });\n }, []);\n\n // 初始化开场白预设置问题\n const insertSuggestedQuestions = (suggested_questions: string[] = []) => {\n if (!suggested_questions?.length) return;\n // 无消息内容 且 有建议问题时\n if (messages.length === 0 && suggested_questions.length) {\n setSuggestedQuestions(suggested_questions);\n };\n };\n\n // 初始化开场白\n const insertPrologue = (prologue: string) => {\n if (prologue) {\n setPrologue(prologue);\n }\n };\n\n // 更新消息\n const updateMessage = useCallback((msg: IMessage) => {\n setMessages((prev) => {\n return prev.map((m) => {\n if (m.id === msg.id) {\n return msg;\n }\n return m;\n });\n });\n }, []);\n\n // 存储事件\n const storeEvents = useCallback((part: Part | null, event: any) => {\n let title = '';\n\n if (part == null && event.actions?.artifactDelta) {\n title += 'eventAction: artifact';\n } else if (part) {\n if (part.text) {\n title += `text:${part.text}`;\n } else if (part.functionCall) {\n title += `functionCall:${part.functionCall.name}`;\n } else if (part.functionResponse) {\n title += `functionResponse:${part.functionResponse.name}`;\n } else if (part.executableCode) {\n title += `executableCode:${part.executableCode.code?.slice(0, 10)}`;\n } else if (part.codeExecutionResult) {\n title += `codeExecutionResult:${part.codeExecutionResult.outcome}`;\n } else if (part.errorMessage) {\n title += `errorMessage:${part.errorMessage}`;\n }\n }\n\n const updatedEvent = { ...event, title };\n\n const newEventData = new Map(eventDataRef.current);\n newEventData.set(event.id, updatedEvent);\n eventDataRef.current = newEventData;\n }, []);\n\n // 存储消息\n const storeMessage = useCallback((\n part: Part | null,\n event: Event,\n role: 'user' | 'bot',\n ) => {\n const msg: IMessage = {\n id: v4(),\n author: event.author,\n invocationId: event.invocationId,\n eventId: event.id,\n timestamp: event.timestamp,\n role,\n };\n\n if (part) {\n if (part.inlineData) {\n msg.inlineData = {\n displayName: part.inlineData.displayName,\n data: part.inlineData.data,\n mimeType: part.inlineData.mimeType,\n };\n } else if (part.text) {\n msg.text = part.text;\n msg.thought = part.thought;\n\n if (event?.groundingMetadata?.searchEntryPoint?.renderedContent) {\n msg.renderedContent = event.groundingMetadata.searchEntryPoint.renderedContent;\n }\n } else if (part.fileData) {\n msg.fileData = [part.fileData];\n } else if (part.functionCall) {\n msg.functionCall = part.functionCall;\n } else if (part.functionResponse) {\n msg.functionResponse = part.functionResponse;\n } else if (part.executableCode) {\n msg.executableCode = part.executableCode;\n } else if (part.codeExecutionResult) {\n msg.codeExecutionResult = part.codeExecutionResult;\n }\n }\n\n if (part && Object.keys(part).length > 0) {\n insertMessage(msg);\n }\n }, [insertMessage]);\n\n // 处理消息部分(关键更新)\n const processPart = useCallback((event: Event, part: Part) => {\n const renderedContent = event.groundingMetadata?.searchEntryPoint?.renderedContent;\n if (part.text) {\n const newChunk = part.text;\n\n if (!textMsgRef.current || textMsgRef.current.thought !== part.thought) {\n const newMessage: IMessage = {\n id: v4(),\n author: event.author,\n invocationId: event.invocationId,\n eventId: event.id,\n timestamp: event.timestamp,\n role: 'bot',\n text: newChunk,\n thought: part.thought,\n };\n\n if (renderedContent) {\n newMessage.renderedContent = renderedContent;\n }\n\n textMsgRef.current = newMessage;\n // 存储原数据\n storeEvents(part, event);\n // 插入消息\n insertMessage(newMessage);\n } else {\n if (event.partial === false) {\n storeEvents(part, event);\n textMsgRef.current = null;\n return;\n }\n if (renderedContent) {\n textMsgRef.current = {\n ...textMsgRef.current,\n renderedContent,\n };\n }\n textMsgRef.current = {\n ...textMsgRef.current,\n text: (textMsgRef.current.text || '') + newChunk,\n };\n updateMessage(textMsgRef.current);\n }\n } else {\n textMsgRef.current = null;\n storeEvents(part, event);\n storeMessage(\n part,\n event,\n 'bot',\n );\n }\n }, [storeEvents, storeMessage, insertMessage, updateMessage]);\n\n // 处理建议类消息\n const processFollowupPart = useCallback((event: Event) => {\n // 获取建议类消息的文本内容\n const part = event?.content?.parts?.[0] || null;\n const text = part?.text || '';\n storeEvents(part, event);\n if (text) {\n setSuggestedQuestions((prev) => [...prev, text]);\n }\n }, [storeEvents, insertMessage]);\n\n // 处理错误消息\n const processErrorMessage = useCallback((chunkJson: any) => {\n storeEvents(null, chunkJson);\n insertMessage({\n id: v4(),\n text: chunkJson.errorMessage,\n role: 'bot',\n });\n }, [storeEvents, insertMessage]);\n\n // 处理动作和制品\n const processActionArtifact = useCallback((event: any) => {\n if (event.actions && event.actions.artifactDelta) {\n storeEvents(null, event);\n storeMessage(null, event, 'bot');\n }\n }, [storeEvents, storeMessage]);\n\n // 发送消息请求\n const sendMessageRequest = useCallback((values: AgentRunRequest) => {\n return new Promise<void>((resolve) => {\n if (ctrl.current) {\n ctrl.current.abort();\n }\n setLoading(true);\n ctrl.current = new AbortController();\n const requestUrl = `${url}/api/gateway-web/openApi/v1/aizt/app/${appNo}/sendMsgStreaming`;\n\n fetchEventSource(requestUrl, {\n method: 'POST',\n signal: ctrl.current.signal,\n body: JSON.stringify(values),\n openWhenHidden: true,\n headers: {\n 'Content-Type': 'application/json',\n 'Cache-Control': 'no-cache',\n stream: 'true',\n Authorization: `Bearer ${token}`,\n },\n async onopen(response) {\n if (response.ok && response.headers.get('content-type') === EventStreamContentType) {\n // everything's good\n } else if (response.status >= 400 && response.status < 500 && response.status !== 429) {\n resolve();\n } else {\n resolve();\n }\n },\n onmessage: (event) => {\n const chunkJson: Event = safeJsonParse(event.data, {});\n if (chunkJson.error) {\n message.warning(chunkJson.error);\n return;\n }\n onStream?.(chunkJson);\n if (chunkJson.content) {\n // 建议类消息单独处理 \n if (chunkJson.content.role === 'followup') {\n processFollowupPart(chunkJson);\n return;\n }\n // eslint-disable-next-line no-restricted-syntax\n for (const part of combineTextParts(chunkJson.content.parts)) {\n processPart(chunkJson, part);\n }\n } else if (chunkJson.errorMessage) {\n processErrorMessage(chunkJson);\n } else if (chunkJson.actions) {\n processActionArtifact(chunkJson);\n }\n },\n onclose: () => {\n setLoading(false);\n if (textMsgRef.current) {\n onMessage?.(textMsgRef.current?.text || '', textMsgRef.current);\n }\n textMsgRef.current = null;\n resolve();\n },\n onerror: (error) => {\n setLoading(false);\n resolve();\n console.error('EventSource failed:', error);\n throw error;\n },\n });\n });\n }, [type, currentSessionId, processActionArtifact, processErrorMessage, processPart]);\n\n // 发送会话\n const startChat = async ({ text = '', files = [], functionResponse }: SendContent) => {\n if (loading) return;\n if (!text.trim() && !functionResponse) return;\n // 清空建议问题\n setSuggestedQuestions([]);\n // 发送消息\n setMessages((prev) => {\n let temp = [...prev];\n // 如果 text 存在\n if (text.trim()) {\n temp.push({\n id: v4(),\n role: 'user',\n text,\n });\n }\n // 如果file 存在\n if (files.length > 0) {\n temp.push({\n id: v4(),\n role: 'user',\n fileData: files.map(file => ({\n displayName: file.name,\n mimeType: file.response?.mimeType,\n fileUri: file.response?.fileUrl,\n })),\n });\n }\n // 如果 functionResponse 存在\n if (functionResponse) {\n temp.push({\n id: v4(),\n role: 'user',\n functionResponse,\n });\n }\n return temp;\n });\n await sendMessageRequest({\n stream: true,\n sessionId: currentSessionId,\n content: {\n role: 'user',\n parts: functionResponse ? [{ functionResponse }] : [{ text }],\n },\n files: files.map(file => ({\n fileName: file.response?.fileName,\n fileId: file.response?.fileId,\n tempUrl: file.response?.fileUrl,\n type: file.response?.fileType,\n mimeType: file.response?.mimeType,\n })),\n });\n // 获取聊天记录\n initAppConversations();\n };\n\n // 重新发送会话\n const reChat = () => {\n if (loading) return;\n if (messages.length === 0) return;\n setMessages((prev) => {\n const newMessages = [...prev];\n // 删除最后一条 AI 消息\n const lastAIIndex = newMessages.findLastIndex(msg => msg.role === 'bot');\n if (lastAIIndex !== -1) {\n newMessages.splice(lastAIIndex, 1);\n }\n // 清空建议问题\n setSuggestedQuestions([]);\n // 重新发送最后一条用户消息\n const lastUserMessage = newMessages.findLast(msg => msg.role === 'user');\n if (lastUserMessage) {\n const { text = '', fileData = [] } = lastUserMessage;\n sendMessageRequest({\n stream: true,\n sessionId: currentSessionId,\n content: {\n role: 'user',\n parts: [{\n text,\n }],\n },\n files: fileData?.map(file => ({\n fileName: file.displayName,\n tempUrl: file.fileUri,\n mimeType: file.mimeType,\n })),\n });\n }\n\n return newMessages;\n })\n };\n\n // 确认函数调用\n const confirmFnCall = (fnCall: FunctionCall, confirmed: boolean) => {\n const functionResponse = {\n id: fnCall.id,\n name: fnCall.name,\n response: { confirmed },\n };\n startChat({ functionResponse });\n };\n\n // 使用建议问题\n const suggestChat = (text: string) => {\n if (loading) return;\n if (!text.trim()) return;\n setSuggestedQuestions([]);\n startChat({ text });\n };\n // 停止会话\n const stopChat = useCallback(() => {\n ctrl.current?.abort();\n setLoading(false);\n textMsgRef.current = null;\n }, [ctrl]);\n\n // 清除/重置会话\n const clearChat = () => {\n const newSessionId = v4();\n setCurrentSessionId(newSessionId);\n // 重置聊天内容\n stopChat();\n setPrologue(appInfo?.onboardingInfo?.prologue || '');\n setMessages([]);\n setSuggestedQuestions(appInfo?.onboardingInfo?.suggested_questions || []);\n };\n\n // 格式化会话记录\n const formatMessages = (messages: any[], isReplace = false) => {\n const mapped: IMessage[] = [];\n\n messages.forEach((item) => {\n if (!item || !item.content || !Array.isArray(item.content.parts)) return;\n\n const role = (item.content.role || '').toLowerCase() === 'user' ? 'user' : 'bot';\n const parts = Array.isArray(item.content.parts)\n ? item.content.parts.filter((p: any) => {\n if (!p) return false;\n return Boolean(\n p.text || p.inlineData || p.functionCall || p.functionResponse || p.fileData || p.executableCode || p.codeExecutionResult || p.errorMessage\n );\n })\n : [];\n\n if (parts.length === 0) return;\n\n parts.forEach((part: any) => {\n const msg: IMessage = {\n id: v4(),\n author: item.author,\n invocationId: item.invocationId,\n eventId: item.id,\n timestamp: item.timestamp,\n role,\n raw: item,\n } as IMessage;\n\n if (part.inlineData) {\n msg.inlineData = {\n displayName: part.inlineData.displayName,\n data: part.inlineData.data,\n mimeType: part.inlineData.mimeType,\n } as any;\n }\n if (part.text) {\n msg.text = part.text;\n if (typeof part.thought !== 'undefined') msg.thought = part.thought;\n }\n if (part.functionCall) msg.functionCall = part.functionCall;\n if (part.functionResponse) msg.functionResponse = part.functionResponse;\n if (part.fileData) {\n msg.inlineData = {\n displayName: part.fileData.displayName || '',\n data: part.fileData.fileUri,\n mimeType: part.fileData.mimeType,\n } as any;\n }\n if (part.executableCode) msg.executableCode = part.executableCode;\n if (part.codeExecutionResult) msg.codeExecutionResult = part.codeExecutionResult;\n if (part.errorMessage) msg.text = part.errorMessage;\n\n mapped.push(msg);\n });\n });\n\n setMessages((prev) => (isReplace ? mapped : [...prev, ...mapped]));\n };\n\n\n // 设置当前会话详情\n const setCurrentSessionDetail = async (sessionId: string) => {\n if (sessionId) {\n if (sessionId === currentSessionId) {\n return;\n }\n setCurrentSessionId(sessionId); // 设置当前会话 id;\n const { data, result } = await fetchSessionDetail({\n url,\n appNo,\n sessionId,\n token,\n });\n\n if (result?.code === API_SUCCESS_CODE) {\n setPrologue(appInfo?.onboardingInfo?.prologue || '');\n // 新接口直接返回按 event/item 结构的数组,传入 formatMessages 处理\n if (Array.isArray(data) && data.length > 0) {\n formatMessages(data, true);\n } else {\n setSuggestedQuestions(appInfo?.onboardingInfo?.suggested_questions || []);\n }\n }\n\n } else {\n // 兼容 无 session异常\n setCurrentSessionId(v4());\n }\n };\n\n // 获取聊天记录\n const initAppConversations = async (fetchDetail = false) => {\n try {\n setLoading(true);\n\n const { data = [], pagination, result } = await fetchSessionList({\n url,\n appNo,\n token,\n pageSize: sessionPagination.pageSize,\n });\n\n if (result?.code === API_SUCCESS_CODE) {\n if (data.length > 0) {\n const formatSessions = data.map((item) => {\n return {\n key: item.sessionId,\n label: item.title || '新对话',\n timestamp: new Date(item.startTime).getTime(),\n messages: [],\n meta: {\n ...item,\n },\n };\n });\n\n setSessionList(formatSessions);\n // 设置分页信息\n setSessionPagination({ pageNum: sessionPagination.pageNum, pageSize: sessionPagination.pageSize, total: pagination?.total || 0 });\n const { sessionId } = data?.[0];\n fetchDetail && setCurrentSessionDetail(sessionId);\n // 成功回调\n if (!initialized) {\n onSuccess?.({\n code: SuccessCode.APP_MESSAGES_INIT_SUCCESS,\n message: '初始化聊天记录成功',\n data: {\n sessionId\n }\n });\n setInitialized(true);\n }\n } else {\n // 无会话记录时,初始化会话详情\n clearChat();\n }\n } else {\n setSessionList([]);\n setCurrentSessionId(v4());\n setPrologue('');\n setSuggestedQuestions([]);\n }\n } catch {\n //\n } finally {\n setLoading(false);\n }\n };\n\n // 删除会话\n const deleteSession = async (sessionId: string) => {\n if (!sessionId) return;\n const { result } = await closeSession({\n url,\n appNo,\n sessionId,\n token,\n });\n if (result?.code === API_SUCCESS_CODE) {\n // 删除成功后,重新获取会话列表\n initAppConversations();\n // 如果删除的是当前会话,则创建新的会话\n if (sessionId === currentSessionId) {\n clearChat();\n }\n } else {\n message.error('删除会话失败');\n }\n };\n\n // 更新会话名称\n const updateSession = async (sessionId: string, title: string) => {\n if (!sessionId && !title) return;\n const { result } = await updateSessionTitle({\n url,\n appNo,\n title,\n sessionId,\n token,\n });\n if (result?.code === API_SUCCESS_CODE) {\n // 编辑成功后,重新获取会话列表\n initAppConversations();\n } else {\n message.error('更新会话失败');\n }\n };\n\n // 初始化应用\n const initConfig = async () => {\n try {\n setLoading(true);\n const { data, result } = await fetchAppConfig({ url, appNo });\n if (result.code === API_SUCCESS_CODE) {\n setAppInfo(data);\n // 成功回调\n onSuccess?.({\n code: SuccessCode.APP_CONFIG_INIT_SUCCESS,\n message: '初始化配置成功',\n });\n } else {\n onError?.({\n code: (result.code as ErrorCode) || ErrorCode.APP_NOT_FOUND,\n message: result.message || '获取应用配置失败',\n });\n }\n } catch (error) {\n onError?.({\n code: ErrorCode.API_ERROR,\n message: '获取应用配置失败',\n });\n } finally {\n setLoading(false);\n }\n };\n\n // 初始化—获取配置\n useEffect(() => {\n if (url && appNo) {\n initConfig();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [url, appNo]);\n\n // 初始化-聊天记录\n useEffect(() => {\n if (appInfo) {\n initAppConversations(true);\n }\n }, [appInfo]);\n\n return {\n appInfo,\n startChat,\n reChat,\n stopChat,\n clearChat,\n suggestChat,\n confirmFnCall,\n initialized,\n currentSessionId,\n sessionList,\n prologue,\n suggestions: suggestedQuestions,\n loading,\n messages: mergedMessages,\n insertSuggestedQuestions,\n insertPrologue,\n deleteSession,\n updateSession,\n setSuggestedQuestions,\n setCurrentSessionDetail,\n setMessages,\n storeEvents,\n storeMessage,\n };\n}\n\nexport default useADKChat;\n"],
5
- "mappings": "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",
6
- "names": ["prologue", "messages"]
4
+ "sourcesContent": ["import { useEffect, useCallback, useMemo, useRef, useState } from 'react';\nimport { fetchEventSource, EventStreamContentType } from '@microsoft/fetch-event-source';\nimport { message } from 'antd';\nimport { v4 } from 'uuid';\nimport { SESSION_PAGE_SIZE, API_SUCCESS_CODE } from '@/constants';\nimport {\n SuccessCode,\n ErrorCode,\n DebugOptions,\n FunctionCall,\n SendContent,\n SessionData,\n AgentRunRequest,\n Event,\n FunctionResponse,\n IMessage,\n Part,\n} from '@/types';\nimport {\n fetchAppConfig,\n fetchSessionList,\n fetchSessionDetail,\n closeSession,\n updateSessionTitle,\n type ChatConfig\n} from '@/services/api';\nimport { safeJsonParse } from '@/utils';\n\nconst combineTextParts = (parts: Part[]) => {\n const result: Part[] = [];\n let combinedTextPart: Part|undefined;\n\n // eslint-disable-next-line no-restricted-syntax\n for (const part of parts) {\n if (part.text) {\n // 如果没有 combined 或 combined 思考类型跟当前 part 不同,则创建新的合并引用\n if (!combinedTextPart || combinedTextPart.thought !== part.thought) {\n combinedTextPart = { ...part };\n result.push(combinedTextPart);\n } else {\n combinedTextPart.text += part.text;\n }\n } else {\n combinedTextPart = undefined;\n result.push(part);\n }\n }\n return result;\n};\n\nfunction useADKChat({\n url,\n token,\n config = {},\n type = 'agentDebug',\n onError,\n onMessage,\n onSuccess,\n onStream,\n}: DebugOptions) {\n const [loading, setLoading] = useState(false);\n const ctrl = useRef<AbortController | null>(null);\n // 应用配置\n const { appNo, showFirstSession } = config || {};\n const [appInfo, setAppInfo] = useState<ChatConfig | null>(null);\n // 初始化完成\n const [initialized, setInitialized] = useState(false);\n // 会话记录\n const [sessionList, setSessionList] = useState<SessionData[]>([]);\n // 当前会话\n const [currentSessionId, setCurrentSessionId] = useState<string>('');\n // 会话分页设置\n const [sessionPagination, setSessionPagination] = useState({ total: 0, pageNum: 1, pageSize: SESSION_PAGE_SIZE });\n // 开场白\n const [prologue, setPrologue] = useState<string>('');\n // 建议问题\n const [suggestedQuestions, setSuggestedQuestions] = useState<string[]>([]);\n const [messages, setMessages] = useState<IMessage[]>([]);\n const mergedMessages = useMemo(() => {\n const fnResMap: Record<string, FunctionResponse> = {};\n messages.forEach((msg) => {\n if (msg.functionResponse) {\n fnResMap[msg?.functionResponse?.id || ''] = msg.functionResponse;\n }\n });\n return messages.map((msg) => {\n if (msg.functionCall) {\n return {\n ...msg,\n functionResponse: fnResMap[msg?.functionCall?.id || ''],\n };\n }\n return msg;\n });\n }, [messages]);\n const textMsgRef = useRef<IMessage>(null);\n const eventDataRef = useRef<Map<string, any>>(new Map());\n\n // 插入消息\n const insertMessage = useCallback((msg: IMessage) => {\n setMessages((prev) => {\n const lastMessage = prev[prev.length - 1];\n if (lastMessage?.isLoading) {\n return [...prev.slice(0, -1), msg, lastMessage];\n }\n return [...prev, msg];\n });\n }, []);\n\n // 初始化开场白预设置问题\n const insertSuggestedQuestions = (suggested_questions: string[] = []) => {\n if (!suggested_questions?.length) return;\n // 无消息内容 且 有建议问题时\n if (messages.length === 0 && suggested_questions.length) {\n setSuggestedQuestions(suggested_questions);\n };\n };\n\n // 初始化开场白\n const insertPrologue = (prologue: string) => {\n if (prologue) {\n setPrologue(prologue);\n }\n };\n\n // 更新消息\n const updateMessage = useCallback((msg: IMessage) => {\n setMessages((prev) => {\n return prev.map((m) => {\n if (m.id === msg.id) {\n return msg;\n }\n return m;\n });\n });\n }, []);\n\n // 存储事件\n const storeEvents = useCallback((part: Part | null, event: any) => {\n let title = '';\n\n if (part == null && event.actions?.artifactDelta) {\n title += 'eventAction: artifact';\n } else if (part) {\n if (part.text) {\n title += `text:${part.text}`;\n } else if (part.functionCall) {\n title += `functionCall:${part.functionCall.name}`;\n } else if (part.functionResponse) {\n title += `functionResponse:${part.functionResponse.name}`;\n } else if (part.executableCode) {\n title += `executableCode:${part.executableCode.code?.slice(0, 10)}`;\n } else if (part.codeExecutionResult) {\n title += `codeExecutionResult:${part.codeExecutionResult.outcome}`;\n } else if (part.errorMessage) {\n title += `errorMessage:${part.errorMessage}`;\n }\n }\n\n const updatedEvent = { ...event, title };\n\n const newEventData = new Map(eventDataRef.current);\n newEventData.set(event.id, updatedEvent);\n eventDataRef.current = newEventData;\n }, []);\n\n // 存储消息\n const storeMessage = useCallback((\n part: Part | null,\n event: Event,\n role: 'user' | 'bot',\n ) => {\n const msg: IMessage = {\n id: v4(),\n author: event.author,\n invocationId: event.invocationId,\n eventId: event.id,\n timestamp: event.timestamp,\n role,\n };\n\n if (part) {\n if (part.inlineData) {\n msg.inlineData = {\n displayName: part.inlineData.displayName,\n data: part.inlineData.data,\n mimeType: part.inlineData.mimeType,\n };\n } else if (part.text) {\n msg.text = part.text;\n msg.thought = part.thought;\n\n if (event?.groundingMetadata?.searchEntryPoint?.renderedContent) {\n msg.renderedContent = event.groundingMetadata.searchEntryPoint.renderedContent;\n }\n } else if (part.fileData) {\n msg.fileData = [part.fileData];\n } else if (part.functionCall) {\n msg.functionCall = part.functionCall;\n } else if (part.functionResponse) {\n msg.functionResponse = part.functionResponse;\n } else if (part.executableCode) {\n msg.executableCode = part.executableCode;\n } else if (part.codeExecutionResult) {\n msg.codeExecutionResult = part.codeExecutionResult;\n }\n }\n\n if (part && Object.keys(part).length > 0) {\n insertMessage(msg);\n }\n }, [insertMessage]);\n\n // 处理消息部分(关键更新)\n const processPart = useCallback((event: Event, part: Part) => {\n const renderedContent = event.groundingMetadata?.searchEntryPoint?.renderedContent;\n if (part.text) {\n const newChunk = part.text;\n\n if (!textMsgRef.current || textMsgRef.current.thought !== part.thought) {\n const newMessage: IMessage = {\n id: v4(),\n author: event.author,\n invocationId: event.invocationId,\n eventId: event.id,\n timestamp: event.timestamp,\n role: 'bot',\n text: newChunk,\n thought: part.thought,\n };\n\n if (renderedContent) {\n newMessage.renderedContent = renderedContent;\n }\n\n textMsgRef.current = newMessage;\n // 存储原数据\n storeEvents(part, event);\n // 插入消息\n insertMessage(newMessage);\n } else {\n if (event.partial === false) {\n storeEvents(part, event);\n textMsgRef.current = null;\n return;\n }\n if (renderedContent) {\n textMsgRef.current = {\n ...textMsgRef.current,\n renderedContent,\n };\n }\n textMsgRef.current = {\n ...textMsgRef.current,\n text: (textMsgRef.current.text || '') + newChunk,\n };\n updateMessage(textMsgRef.current);\n }\n } else {\n textMsgRef.current = null;\n storeEvents(part, event);\n storeMessage(\n part,\n event,\n 'bot',\n );\n }\n }, [storeEvents, storeMessage, insertMessage, updateMessage]);\n\n // 处理建议类消息\n const processFollowupPart = useCallback((event: Event) => {\n // 获取建议类消息的文本内容\n const part = event?.content?.parts?.[0] || null;\n const text = part?.text || '';\n storeEvents(part, event);\n if (text) {\n setSuggestedQuestions((prev) => [...prev, text]);\n }\n }, [storeEvents, insertMessage]);\n\n // 处理错误消息\n const processErrorMessage = useCallback((chunkJson: any) => {\n storeEvents(null, chunkJson);\n insertMessage({\n id: v4(),\n text: chunkJson.errorMessage,\n role: 'bot',\n });\n }, [storeEvents, insertMessage]);\n\n // 处理动作和制品\n const processActionArtifact = useCallback((event: any) => {\n if (event.actions && event.actions.artifactDelta) {\n storeEvents(null, event);\n storeMessage(null, event, 'bot');\n }\n }, [storeEvents, storeMessage]);\n\n // 发送消息请求\n const sendMessageRequest = useCallback((values: AgentRunRequest) => {\n return new Promise<void>((resolve) => {\n if (ctrl.current) {\n ctrl.current.abort();\n }\n setLoading(true);\n ctrl.current = new AbortController();\n const requestUrl = `${url}/api/gateway-web/openApi/v1/aizt/app/${appNo}/sendMsgStreaming`;\n\n fetchEventSource(requestUrl, {\n method: 'POST',\n signal: ctrl.current.signal,\n body: JSON.stringify(values),\n openWhenHidden: true,\n headers: {\n 'Content-Type': 'application/json',\n 'Cache-Control': 'no-cache',\n stream: 'true',\n Authorization: `Bearer ${token}`,\n },\n async onopen(response) {\n if (response.ok && response.headers.get('content-type') === EventStreamContentType) {\n // everything's good\n } else if (response.status >= 400 && response.status < 500 && response.status !== 429) {\n resolve();\n } else {\n resolve();\n }\n },\n onmessage: (event) => {\n const chunkJson: Event = safeJsonParse(event.data, {});\n if (chunkJson.error) {\n message.warning(chunkJson.error);\n return;\n }\n onStream?.(chunkJson);\n if (chunkJson.content) {\n // 建议类消息单独处理 \n if (chunkJson.content.role === 'followup') {\n processFollowupPart(chunkJson);\n return;\n }\n // eslint-disable-next-line no-restricted-syntax\n for (const part of combineTextParts(chunkJson.content.parts)) {\n processPart(chunkJson, part);\n }\n } else if (chunkJson.errorMessage) {\n processErrorMessage(chunkJson);\n } else if (chunkJson.actions) {\n processActionArtifact(chunkJson);\n }\n },\n onclose: () => {\n setLoading(false);\n if (textMsgRef.current) {\n onMessage?.(textMsgRef.current?.text || '', textMsgRef.current);\n }\n textMsgRef.current = null;\n resolve();\n },\n onerror: (error) => {\n setLoading(false);\n resolve();\n console.error('EventSource failed:', error);\n throw error;\n },\n });\n });\n }, [type, currentSessionId, processActionArtifact, processErrorMessage, processPart]);\n\n // 发送会话\n const startChat = async ({ text = '', files = [], functionResponse }: SendContent) => {\n if (loading) return;\n if (!text.trim() && !functionResponse) return;\n // 清空建议问题\n setSuggestedQuestions([]);\n // 发送消息\n setMessages((prev) => {\n let temp = [...prev];\n // 如果 text 存在\n if (text.trim()) {\n temp.push({\n id: v4(),\n role: 'user',\n text,\n });\n }\n // 如果file 存在\n if (files.length > 0) {\n temp.push({\n id: v4(),\n role: 'user',\n fileData: files.map(file => ({\n displayName: file.name,\n mimeType: file.response?.mimeType,\n fileUri: file.response?.fileUrl,\n })),\n });\n }\n // 如果 functionResponse 存在\n if (functionResponse) {\n temp.push({\n id: v4(),\n role: 'user',\n functionResponse,\n });\n }\n return temp;\n });\n await sendMessageRequest({\n stream: true,\n sessionId: currentSessionId,\n content: {\n role: 'user',\n parts: functionResponse ? [{ functionResponse }] : [{ text }],\n },\n files: files.map(file => ({\n fileName: file.response?.fileName,\n fileId: file.response?.fileId,\n tempUrl: file.response?.fileUrl,\n type: file.response?.fileType,\n mimeType: file.response?.mimeType,\n })),\n });\n // 获取聊天记录\n initAppConversations();\n };\n\n // 重新发送会话\n const reChat = () => {\n if (loading) return;\n if (messages.length === 0) return;\n setMessages((prev) => {\n const newMessages = [...prev];\n // 删除最后一条 AI 消息\n const lastAIIndex = newMessages.findLastIndex(msg => msg.role === 'bot');\n if (lastAIIndex !== -1) {\n newMessages.splice(lastAIIndex, 1);\n }\n // 清空建议问题\n setSuggestedQuestions([]);\n // 重新发送最后一条用户消息\n const lastUserMessage = newMessages.findLast(msg => msg.role === 'user');\n if (lastUserMessage) {\n const { text = '', fileData = [] } = lastUserMessage;\n sendMessageRequest({\n stream: true,\n sessionId: currentSessionId,\n content: {\n role: 'user',\n parts: [{\n text,\n }],\n },\n files: fileData?.map(file => ({\n fileName: file.displayName,\n tempUrl: file.fileUri,\n mimeType: file.mimeType,\n })),\n });\n }\n\n return newMessages;\n })\n };\n\n // 确认函数调用\n const confirmFnCall = (fnCall: FunctionCall, confirmed: boolean) => {\n const functionResponse = {\n id: fnCall.id,\n name: fnCall.name,\n response: { confirmed },\n };\n startChat({ functionResponse });\n };\n\n // 使用建议问题\n const suggestChat = (text: string) => {\n if (loading) return;\n if (!text.trim()) return;\n setSuggestedQuestions([]);\n startChat({ text });\n };\n // 停止会话\n const stopChat = useCallback(() => {\n ctrl.current?.abort();\n setLoading(false);\n textMsgRef.current = null;\n }, [ctrl]);\n\n // 清除/重置会话\n const clearChat = () => {\n const newSessionId = v4();\n setCurrentSessionId(newSessionId);\n // 重置聊天内容\n stopChat();\n setPrologue(appInfo?.onboardingInfo?.prologue || '');\n setMessages([]);\n setSuggestedQuestions(appInfo?.onboardingInfo?.suggested_questions || []);\n };\n\n // 格式化会话记录\n const formatMessages = (messages: any[], isReplace = false) => {\n const mapped: IMessage[] = [];\n messages.forEach((item) => {\n if (!item || !item.content || !Array.isArray(item.content.parts)) return;\n\n const role = (item.content.role || '').toLowerCase() === 'user' ? 'user' : 'bot';\n const parts = Array.isArray(item.content.parts)\n ? item.content.parts.filter((p: any) => {\n if (!p) return false;\n return Boolean(\n p.text || p.inlineData || p.functionCall || p.functionResponse || p.fileData || p.executableCode || p.codeExecutionResult || p.errorMessage\n );\n })\n : [];\n\n if (parts.length === 0) return;\n parts.forEach((part: any) => {\n const msg: IMessage = {\n id: v4(),\n author: item.author,\n invocationId: item.invocationId,\n eventId: item.id,\n timestamp: item.timestamp,\n role,\n raw: item,\n } as IMessage;\n\n if (part.inlineData) {\n msg.inlineData = {\n displayName: part.inlineData.displayName,\n data: part.inlineData.data,\n mimeType: part.inlineData.mimeType,\n } as any;\n }\n if (part.text) {\n msg.text = part.text;\n if (typeof part.thought !== 'undefined') msg.thought = part.thought;\n }\n if (part.functionCall) msg.functionCall = part.functionCall;\n if (part.fileData) {\n msg.inlineData = {\n displayName: part.fileData.displayName || '',\n data: part.fileData.fileUri,\n mimeType: part.fileData.mimeType,\n } as any;\n }\n if (part.executableCode) msg.executableCode = part.executableCode;\n if (part.codeExecutionResult) msg.codeExecutionResult = part.codeExecutionResult;\n if (part.errorMessage) msg.text = part.errorMessage;\n // 补全函数调用结果\n if (part.functionResponse) {\n // 通过 functionCall.id 寻找对应的函数调用消息,在那条消息上添加functionResponse\n const functionCallMsg = mapped.find(msg => msg.functionCall?.id === part.functionResponse?.id);\n if (functionCallMsg) {\n functionCallMsg.functionResponse = part.functionResponse;\n }\n return;\n }\n mapped.push(msg);\n });\n });\n\n setMessages((prev) => (isReplace ? mapped : [...prev, ...mapped]));\n };\n\n\n // 设置当前会话详情\n const setCurrentSessionDetail = async (sessionId: string) => {\n if (sessionId) {\n if (sessionId === currentSessionId) {\n return;\n }\n setCurrentSessionId(sessionId); // 设置当前会话 id;\n const { data, result } = await fetchSessionDetail({\n url,\n appNo,\n sessionId,\n token,\n });\n\n if (result?.code === API_SUCCESS_CODE) {\n setPrologue(appInfo?.onboardingInfo?.prologue || '');\n // 新接口直接返回按 event/item 结构的数组,传入 formatMessages 处理\n if (Array.isArray(data) && data.length > 0) {\n formatMessages(data, true);\n } else {\n setSuggestedQuestions(appInfo?.onboardingInfo?.suggested_questions || []);\n }\n }\n\n } else {\n // 兼容 无 session异常\n setCurrentSessionId(v4());\n }\n };\n\n // 获取聊天记录\n const initAppConversations = async (fetchDetail = false) => {\n try {\n setLoading(true);\n\n const { data = [], pagination, result } = await fetchSessionList({\n url,\n appNo,\n token,\n pageSize: sessionPagination.pageSize,\n });\n\n if (result?.code === API_SUCCESS_CODE) {\n if (data.length > 0) {\n const formatSessions = data.map((item) => {\n return {\n key: item.sessionId,\n label: item.title || '新对话',\n timestamp: new Date(item.startTime).getTime(),\n messages: [],\n meta: {\n ...item,\n },\n };\n });\n\n setSessionList(formatSessions);\n // 设置分页信息\n setSessionPagination({ pageNum: sessionPagination.pageNum, pageSize: sessionPagination.pageSize, total: pagination?.total || 0 });\n const { sessionId } = data?.[0];\n if (showFirstSession) {\n fetchDetail && setCurrentSessionDetail(sessionId);\n } else {\n setPrologue(appInfo?.onboardingInfo?.prologue || '');\n setSuggestedQuestions(appInfo?.onboardingInfo?.suggested_questions || []);\n }\n // 成功回调\n if (!initialized) {\n onSuccess?.({\n code: SuccessCode.APP_MESSAGES_INIT_SUCCESS,\n message: '初始化聊天记录成功',\n data: {\n sessionId,\n }\n });\n setInitialized(true);\n }\n } else {\n // 无会话记录时,初始化会话详情\n clearChat();\n }\n } else {\n setSessionList([]);\n setCurrentSessionId(v4());\n setPrologue('');\n setSuggestedQuestions([]);\n }\n } catch {\n //\n } finally {\n setLoading(false);\n }\n };\n\n // 删除会话\n const deleteSession = async (sessionId: string) => {\n if (!sessionId) return;\n const { result } = await closeSession({\n url,\n appNo,\n sessionId,\n token,\n });\n if (result?.code === API_SUCCESS_CODE) {\n // 删除成功后,重新获取会话列表\n initAppConversations();\n // 如果删除的是当前会话,则创建新的会话\n if (sessionId === currentSessionId) {\n clearChat();\n }\n } else {\n message.error('删除会话失败');\n }\n };\n\n // 更新会话名称\n const updateSession = async (sessionId: string, title: string) => {\n if (!sessionId && !title) return;\n const { result } = await updateSessionTitle({\n url,\n appNo,\n title,\n sessionId,\n token,\n });\n if (result?.code === API_SUCCESS_CODE) {\n // 编辑成功后,重新获取会话列表\n initAppConversations();\n } else {\n message.error('更新会话失败');\n }\n };\n\n // 初始化应用\n const initConfig = async () => {\n try {\n setLoading(true);\n const { data, result } = await fetchAppConfig({ url, appNo });\n if (result.code === API_SUCCESS_CODE) {\n setAppInfo(data);\n // 成功回调\n onSuccess?.({\n code: SuccessCode.APP_CONFIG_INIT_SUCCESS,\n message: '初始化配置成功',\n });\n } else {\n onError?.({\n code: (result.code as ErrorCode) || ErrorCode.APP_NOT_FOUND,\n message: result.message || '获取应用配置失败',\n });\n }\n } catch (error) {\n onError?.({\n code: ErrorCode.API_ERROR,\n message: '获取应用配置失败',\n });\n } finally {\n setLoading(false);\n }\n };\n\n // 初始化—获取配置\n useEffect(() => {\n if (url && appNo) {\n initConfig();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [url, appNo]);\n\n // 初始化-聊天记录\n useEffect(() => {\n if (appInfo) {\n initAppConversations(true);\n }\n }, [appInfo]);\n\n return {\n appInfo,\n startChat,\n reChat,\n stopChat,\n clearChat,\n suggestChat,\n confirmFnCall,\n initialized,\n currentSessionId,\n sessionList,\n prologue,\n suggestions: suggestedQuestions,\n loading,\n messages: mergedMessages,\n insertSuggestedQuestions,\n insertPrologue,\n deleteSession,\n updateSession,\n setSuggestedQuestions,\n setCurrentSessionDetail,\n setMessages,\n storeEvents,\n storeMessage,\n };\n}\n\nexport default useADKChat;\n"],
5
+ "mappings": "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",
6
+ "names": ["prologue", "messages", "msg"]
7
7
  }
@@ -81,6 +81,12 @@ export interface XAdkProviderConfig {
81
81
  session?: {
82
82
  showSessionList?: boolean;
83
83
  };
84
+ /**
85
+ * 初始化后是否默认展示第一条会话内容
86
+ * @type {boolean}
87
+ * @default false
88
+ */
89
+ showFirstSession?: boolean;
84
90
  allowUpload?: boolean;
85
91
  appNo?: string;
86
92
  chatProps?: ChatConfig;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/types/XAdkProvider.ts"],
4
- "sourcesContent": ["import { ReactNode } from 'react';\nimport { IMessage, Success, Event, Error, SendContent, ThemeType } from '@/types';\n\n\nexport interface DebugOptions {\n url: string\n sessionId?: string;\n config: any;\n token: string;\n type?: 'agentDebug' | 'appDebug';\n onError?: (error: Error) => void;\n onSuccess?: (data: Success) => void;\n onStream?: (data: Event) => void;\n onMessage?: (content: string, data: IMessage) => void;\n}\n\n/**\n * 事件状态码枚举\n * @enum {string}\n * @version 1.0.0\n */\nexport enum EventCode {\n /** 切换会话 */\n SESSION_SWITCH = 'SESSION_SWITCH',\n /** 开启新会话 */\n SESSION_CREATE = 'SESSION_CREATE',\n}\n\n\nexport type handleEvent = {\n code: EventCode;\n message: string;\n data?: any;\n}\n/**\n * renderFooter insert 参数说明\n */\nexport interface FooterRenderArgs {\n message: IMessage;\n isLastBotMsg: boolean;\n isLastMsg: boolean;\n}\n\n/**\n * Provider 可通过 ref 暴露的方法句柄\n */\nexport interface XAdkProviderHandle {\n startChat: (content: SendContent) => void;\n stopChat: () => void;\n clearChat: () => void;\n deleteSession: (id: string) => void;\n updateSession: (id: string, title: string) => void;\n getAppInfo: () => any;\n getMessages: () => IMessage[];\n getSessions: () => any[];\n setMessages: (msgs: IMessage[]) => void;\n setCurrentSessionDetail: (id: string) => void;\n}\n\n/**\n * config.chatProps 中的配置\n */\nexport interface ChatConfig {\n /**\n * 是否展示清空按钮\n * @type {boolean}\n * @default false\n */\n clearBtnShow?: boolean;\n /**\n * 是否展示输入框\n * @type {boolean}\n * @default true\n */\n inputShow?: boolean;\n /**\n * 打字机效果速度(单位:毫秒)\n * @type {number}\n * @default 60\n * @version 1.0.0\n */\n textSpeed?: number;\n}\n\n/**\n * Provider config 整体配置结构\n */\nexport interface XAdkProviderConfig {\n session?: {\n showSessionList?: boolean;\n };\n allowUpload?: boolean;\n appNo?: string;\n chatProps?: ChatConfig;\n debug?: boolean;\n}\n\n/**\n * XAdkProvider Props\n */\nexport interface XAdkProviderProps {\n /**\n * AI 服务基础地址\n */\n url?: string;\n /**\n * 认证 token\n */\n token: string;\n /**\n * 组件功能配置\n */\n config?: XAdkProviderConfig;\n /**\n * Provider 唯一标识\n */\n providerId?: string;\n /**\n * 获取应用信息\n * @type {() => any}\n * @version 1.0.0\n */\n getData: () => any;\n\n /**\n * 发送聊天消息\n * @param content - 消息内容\n * @type {(content: string) => void}\n * @version 1.0.0\n */\n chat: (content: SendContent) => void;\n /**\n * 停止聊天\n * @type {() => void}\n * @version 1.0.0\n */\n stop: () => void;\n /**\n * 消息成功回调\n */\n onSuccess?: (success: any) => void;\n /**\n * 流式消息回调\n */\n onStream?: (data: Event) => void;\n /**\n * 错误回调\n */\n onError?: (err: any) => void;\n /**\n * 每条消息回调\n */\n onMessage?: (content: string, data: IMessage) => void;\n /**\n * 事件回调\n */\n onEvent?: (event: handleEvent) => void;\n /**\n * 自定义插槽渲染函数\n */\n footer?: (args: FooterRenderArgs) => ReactNode;\n /**\n * React 子元素\n */\n children?: ReactNode;\n}\n\n// XAiSDKProps 继承 XAdkProviderProps\nexport interface XAdkSDKProps extends XAdkProviderProps {\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}"],
4
+ "sourcesContent": ["import { ReactNode } from 'react';\nimport { IMessage, Success, Event, Error, SendContent, ThemeType } from '@/types';\n\n\nexport interface DebugOptions {\n url: string\n sessionId?: string;\n config: any;\n token: string;\n type?: 'agentDebug' | 'appDebug';\n onError?: (error: Error) => void;\n onSuccess?: (data: Success) => void;\n onStream?: (data: Event) => void;\n onMessage?: (content: string, data: IMessage) => void;\n}\n\n/**\n * 事件状态码枚举\n * @enum {string}\n * @version 1.0.0\n */\nexport enum EventCode {\n /** 切换会话 */\n SESSION_SWITCH = 'SESSION_SWITCH',\n /** 开启新会话 */\n SESSION_CREATE = 'SESSION_CREATE',\n}\n\n\nexport type handleEvent = {\n code: EventCode;\n message: string;\n data?: any;\n}\n/**\n * renderFooter insert 参数说明\n */\nexport interface FooterRenderArgs {\n message: IMessage;\n isLastBotMsg: boolean;\n isLastMsg: boolean;\n}\n\n/**\n * Provider 可通过 ref 暴露的方法句柄\n */\nexport interface XAdkProviderHandle {\n startChat: (content: SendContent) => void;\n stopChat: () => void;\n clearChat: () => void;\n deleteSession: (id: string) => void;\n updateSession: (id: string, title: string) => void;\n getAppInfo: () => any;\n getMessages: () => IMessage[];\n getSessions: () => any[];\n setMessages: (msgs: IMessage[]) => void;\n setCurrentSessionDetail: (id: string) => void;\n}\n\n/**\n * config.chatProps 中的配置\n */\nexport interface ChatConfig {\n /**\n * 是否展示清空按钮\n * @type {boolean}\n * @default false\n */\n clearBtnShow?: boolean;\n /**\n * 是否展示输入框\n * @type {boolean}\n * @default true\n */\n inputShow?: boolean;\n /**\n * 打字机效果速度(单位:毫秒)\n * @type {number}\n * @default 60\n * @version 1.0.0\n */\n textSpeed?: number;\n}\n\n/**\n * Provider config 整体配置结构\n */\nexport interface XAdkProviderConfig {\n session?: {\n showSessionList?: boolean;\n };\n /**\n * 初始化后是否默认展示第一条会话内容\n * @type {boolean}\n * @default false\n */\n showFirstSession?: boolean;\n allowUpload?: boolean;\n appNo?: string;\n chatProps?: ChatConfig;\n debug?: boolean;\n}\n\n/**\n * XAdkProvider Props\n */\nexport interface XAdkProviderProps {\n /**\n * AI 服务基础地址\n */\n url?: string;\n /**\n * 认证 token\n */\n token: string;\n /**\n * 组件功能配置\n */\n config?: XAdkProviderConfig;\n /**\n * Provider 唯一标识\n */\n providerId?: string;\n /**\n * 获取应用信息\n * @type {() => any}\n * @version 1.0.0\n */\n getData: () => any;\n\n /**\n * 发送聊天消息\n * @param content - 消息内容\n * @type {(content: string) => void}\n * @version 1.0.0\n */\n chat: (content: SendContent) => void;\n /**\n * 停止聊天\n * @type {() => void}\n * @version 1.0.0\n */\n stop: () => void;\n /**\n * 消息成功回调\n */\n onSuccess?: (success: any) => void;\n /**\n * 流式消息回调\n */\n onStream?: (data: Event) => void;\n /**\n * 错误回调\n */\n onError?: (err: any) => void;\n /**\n * 每条消息回调\n */\n onMessage?: (content: string, data: IMessage) => void;\n /**\n * 事件回调\n */\n onEvent?: (event: handleEvent) => void;\n /**\n * 自定义插槽渲染函数\n */\n footer?: (args: FooterRenderArgs) => ReactNode;\n /**\n * React 子元素\n */\n children?: ReactNode;\n}\n\n// XAiSDKProps 继承 XAdkProviderProps\nexport interface XAdkSDKProps extends XAdkProviderProps {\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}"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBO,IAAM,YAAN,kBAAMA,eAAN;AAEL,EAAAA,WAAA,oBAAiB;AAEjB,EAAAA,WAAA,oBAAiB;AAJN,SAAAA;AAAA,GAAA;",
6
6
  "names": ["EventCode"]
7
7
  }
@@ -142,13 +142,14 @@ export var 携带历史记录实例 = {
142
142
  });
143
143
  },
144
144
  args: {
145
- url: 'https://m-poc-dev.zaxline.com',
146
- token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiZnBRYyt5MjB0VDBwbkl1QWtWamgyQT09Iiwic2NvcGUiOlsiS3BzNDlZbncwMzBBenlsaGRZVXVRNWlUIl0sImV4cCI6MTc2ODM5NDc2MSwianRpIjoiSV85OFRHUmFXSERCWWZrTThBaTZ6LVNHYzI0IiwiY2xpZW50X2lkIjoiS3BzNDlZbncwMzBBenlsaGRZVXVRNWlUIn0.F-ICv68-LxLKRlNgXb30JSO-37Zb0ziOb-pZ1qcYXRN_ArlwU6Y0wkMJL-2ckSjqu1LHHXe-5Rd65jirT4V6zqsd23lRUAlDRGNJmbyzebhaqCe9LsiWm5s4rPMJ85tGzHsl4kHyn5hdkJLFm7VPeCYplHgmGypc1oGdv06iFbObnBiK6sHIWhetlYIaKfTZvmYIMGk2tV4qUc7oUKq-LEBRg6WKuY5gtpXwISZ0pjWr3NXogwv5UAHASv1-KrI-PriR-lfDWq0ghDKmnxZB7OdWF1xX6_2S8Lu7wBW9zNQgT1lmNZiS6irzhHE6iKTFxTXIYITInWRGc6kFSqxEbA',
145
+ url: 'https://m-poc.zaxline.com',
146
+ token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiU0tUYkp6MDE5bWFVdnFqcC9OUGJEQT09Iiwic2NvcGUiOlsiMGhic2RXYkZVYktZRXkxMEsxNDM3WFhtIl0sImV4cCI6MTc2OTE2MzM1NCwianRpIjoiSlFGN21SSEwyLWFhaVF3Nlh0Q19mcEw3eTEwIiwiY2xpZW50X2lkIjoiMGhic2RXYkZVYktZRXkxMEsxNDM3WFhtIn0.NxxxWuSjnDt6Md79wOJX2AznuZ0sE4vZ8p9Gdva-ncDt-Qz6ghUUlKq47HIgAdrnDxIABU7H0RsHXv43rzFcBTK5GMr-SprF4TqhbMbhhEdTwGPgN76kaJVh4SagfbczWuIVBQl4PIzVZ2yMrYz0M2itYYoaAfvnbGBfRIZ6MJIhM-BCAAjrv86I3qDHnYQedjKmdiS9CXeoOt_lqQWk-GU-wl2FhkTsmo4Xt9PD055PPdEmsGCj5I__lIe4W2jqtGPmq82SNfLuzd0TUU7kmf6maUgLqVIRX7EUv51tW4P9BjnNP6fkG7Gkvte46pcO93OAXSlxd7QZ7jca5Gs62w',
147
147
  config: {
148
- appNo: 'Kps49Ynw030AzylhdYUuQ5iT',
148
+ appNo: '0hbsdWbFUbKYEy10K1437XXm',
149
149
  session: {
150
150
  showSessionList: true
151
151
  },
152
+ showFirstSession: true,
152
153
  allowUpload: true
153
154
  },
154
155
  providerId: 'demo-provider'
@@ -1 +1 @@
1
- {"version":3,"names":["React","Button","XAdkWebProvider","jsx","_jsx","jsxs","_jsxs","meta","title","component","parameters","layout","docs","description","tags","argTypes","config","table","type","summary","detail","category","decorators","Story","style","padding","children","单聊天窗口实例","render","args","providerRef","useRef","handleSendMessage","_providerRef$current","current","chat","text","console","log","display","flexDirection","gap","marginRight","justifyContent","onClick","maxWidth","height","_objectSpread","ref","url","token","appNo","providerId","携带历史记录实例","_providerRef$current2","files","handleOnEvent","event","code","data","warn","getMessages","width","onError","providerError","onSuccess","onStream","onEvent","session","showSessionList","allowUpload"],"sources":["../../../../src/components/XAdkWebProvider/XAdkWebProvider.stories.tsx"],"sourcesContent":["import React from 'react';\nimport type { Meta, StoryObj } from '@storybook/react-vite';\nimport { Button } from 'antd';\nimport XAdkWebProvider from './index';\n\nconst meta: Meta<typeof XAdkWebProvider> = {\n title: 'AI组件/XAdkWebProvider AI容器',\n component: XAdkWebProvider,\n parameters: {\n layout: 'centered',\n docs: {\n description: {\n component: 'AI 聊天机器人容器组件,提供全局上下文和消息管理功能。',\n },\n },\n },\n tags: ['autodocs'],\n argTypes: {\n config: {\n description: '配置信息',\n table: {\n type: {\n summary: 'XAdkWebProviderConfig',\n detail: `{\n appNo?: string; // 应用唯一编号\n }`,\n },\n category: '配置选项',\n },\n },\n },\n // 添加装饰器,确保组件有必要的上下文\n decorators: [\n (Story) => (\n <div style={{ padding: '20px' }}>\n <Story />\n </div>\n ),\n ],\n};\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\n// 使用 Provider 的 XAiChatbot\nexport const 单聊天窗口实例: Story = {\n render: (args) => {\n const providerRef = React.useRef<any>(null);\n\n const handleSendMessage = () => {\n if (providerRef.current?.chat) {\n providerRef.current.chat({ text: '你好,AI!' });\n } else {\n console.log('XAdkWebProvider ref 未准备好或 chat 方法不存在');\n }\n };\n\n return (\n <div style={{ display: 'flex' }}>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '12px', marginRight: '24px', justifyContent: 'center' }}>\n <Button type=\"primary\" onClick={handleSendMessage}>发送消息</Button>\n </div>\n <div style={{ maxWidth: '350px', height: '600px' }}>\n <XAdkWebProvider\n ref={providerRef}\n {...args}\n // onError={(providerError) => console.log(providerError)}\n // onMessage={(data) => console.log(data)}\n >\n </XAdkWebProvider>\n </div>\n </div>\n );\n },\n args: {\n url: 'https://m-poc-dev.zaxline.com',\n token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiVjRTT0htSm8zWmVhNFJOdWc3WFgyQT09Iiwic2NvcGUiOlsiTUZYNVR4bGhlSUtiZWtaSEtvZU9WTmxvIl0sImV4cCI6MTc2Nzk1MjM0NywianRpIjoiSHpLMll4cVdjSTA3QWtmOHlsQXYwV0w0aE5jIiwiY2xpZW50X2lkIjoiTUZYNVR4bGhlSUtiZWtaSEtvZU9WTmxvIn0.AjABoyZFxAACkfy-ywLlfaJd6YY0Ir3pBGx_-HzW9di9p_4rnptbFI4adk9pktSVtlLB0cs45SU6uzp6VCJUj9-q-MP8QBqL6i7u2HV9e-kuBJgyIZD4t0PsazpJNu4rDlBAymYzw73ptLPjCwsUkckUz4Xhy1WmR8mpmuG0nuSWzlDlWKiaPgeMhA0Cnp4BV47zplvQ-r60VkarCg9JGHQNmIkQfG3llcjc-ZK4UKVkrFZynXhcCsp1ry7TwfRnwtXwQ1kZXDmeQxWFudhVaHwthraFF-fkHmYZpyTDrZQJY2Rn9nWO59ZHNh3I6-KiKdsNzv8Jl5T_dCUVPj7l3w',\n config: {\n appNo: 'MFX5TxlheIKbekZHKoeOVNlo',\n },\n providerId: 'demo-provider',\n },\n};\n\n\n// 使用 Provider 的 XAiChatbot\nexport const 携带历史记录实例: Story = {\n render: (args) => {\n const providerRef = React.useRef<any>(null);\n\n const handleSendMessage = () => {\n if (providerRef.current?.chat) {\n providerRef.current.chat({\n text: '你好,AI!', // 上传文案\n files: [], // 如果需要上传附件\n });\n } else {\n console.log('XAdkWebProvider ref 未准备好或 chat 方法不存在');\n }\n };\n\n const handleOnEvent = (event: any) => {\n const { code, data } = event;\n console.warn(code);\n if (code === 'SESSION_SWITCH') {\n console.log(providerRef.current.getMessages());\n } else if (code === 'APP_MESSAGES_INIT_SUCCESS') {\n console.log(code, data);\n }\n };\n\n return (\n <div style={{ display: 'flex' }}>\n <div style={{ height: '600px', width: '100vw' }}>\n <XAdkWebProvider\n ref={providerRef}\n {...args}\n onError={(providerError) => console.log(providerError)}\n onSuccess={handleOnEvent}\n onStream={(data) => console.log(data)}\n onEvent={handleOnEvent}\n />\n </div>\n </div>\n );\n },\n args: {\n url: 'https://m-poc-dev.zaxline.com',\n token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiZnBRYyt5MjB0VDBwbkl1QWtWamgyQT09Iiwic2NvcGUiOlsiS3BzNDlZbncwMzBBenlsaGRZVXVRNWlUIl0sImV4cCI6MTc2ODM5NDc2MSwianRpIjoiSV85OFRHUmFXSERCWWZrTThBaTZ6LVNHYzI0IiwiY2xpZW50X2lkIjoiS3BzNDlZbncwMzBBenlsaGRZVXVRNWlUIn0.F-ICv68-LxLKRlNgXb30JSO-37Zb0ziOb-pZ1qcYXRN_ArlwU6Y0wkMJL-2ckSjqu1LHHXe-5Rd65jirT4V6zqsd23lRUAlDRGNJmbyzebhaqCe9LsiWm5s4rPMJ85tGzHsl4kHyn5hdkJLFm7VPeCYplHgmGypc1oGdv06iFbObnBiK6sHIWhetlYIaKfTZvmYIMGk2tV4qUc7oUKq-LEBRg6WKuY5gtpXwISZ0pjWr3NXogwv5UAHASv1-KrI-PriR-lfDWq0ghDKmnxZB7OdWF1xX6_2S8Lu7wBW9zNQgT1lmNZiS6irzhHE6iKTFxTXIYITInWRGc6kFSqxEbA',\n config: {\n appNo: 'Kps49Ynw030AzylhdYUuQ5iT',\n session: {\n showSessionList: true,\n },\n allowUpload: true\n },\n providerId: 'demo-provider',\n },\n};"],"mappings":"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"}
1
+ {"version":3,"names":["React","Button","XAdkWebProvider","jsx","_jsx","jsxs","_jsxs","meta","title","component","parameters","layout","docs","description","tags","argTypes","config","table","type","summary","detail","category","decorators","Story","style","padding","children","单聊天窗口实例","render","args","providerRef","useRef","handleSendMessage","_providerRef$current","current","chat","text","console","log","display","flexDirection","gap","marginRight","justifyContent","onClick","maxWidth","height","_objectSpread","ref","url","token","appNo","providerId","携带历史记录实例","_providerRef$current2","files","handleOnEvent","event","code","data","warn","getMessages","width","onError","providerError","onSuccess","onStream","onEvent","session","showSessionList","showFirstSession","allowUpload"],"sources":["../../../../src/components/XAdkWebProvider/XAdkWebProvider.stories.tsx"],"sourcesContent":["import React from 'react';\nimport type { Meta, StoryObj } from '@storybook/react-vite';\nimport { Button } from 'antd';\nimport XAdkWebProvider from './index';\n\nconst meta: Meta<typeof XAdkWebProvider> = {\n title: 'AI组件/XAdkWebProvider AI容器',\n component: XAdkWebProvider,\n parameters: {\n layout: 'centered',\n docs: {\n description: {\n component: 'AI 聊天机器人容器组件,提供全局上下文和消息管理功能。',\n },\n },\n },\n tags: ['autodocs'],\n argTypes: {\n config: {\n description: '配置信息',\n table: {\n type: {\n summary: 'XAdkWebProviderConfig',\n detail: `{\n appNo?: string; // 应用唯一编号\n }`,\n },\n category: '配置选项',\n },\n },\n },\n // 添加装饰器,确保组件有必要的上下文\n decorators: [\n (Story) => (\n <div style={{ padding: '20px' }}>\n <Story />\n </div>\n ),\n ],\n};\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\n// 使用 Provider 的 XAiChatbot\nexport const 单聊天窗口实例: Story = {\n render: (args) => {\n const providerRef = React.useRef<any>(null);\n\n const handleSendMessage = () => {\n if (providerRef.current?.chat) {\n providerRef.current.chat({ text: '你好,AI!' });\n } else {\n console.log('XAdkWebProvider ref 未准备好或 chat 方法不存在');\n }\n };\n\n return (\n <div style={{ display: 'flex' }}>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '12px', marginRight: '24px', justifyContent: 'center' }}>\n <Button type=\"primary\" onClick={handleSendMessage}>发送消息</Button>\n </div>\n <div style={{ maxWidth: '350px', height: '600px' }}>\n <XAdkWebProvider\n ref={providerRef}\n {...args}\n // onError={(providerError) => console.log(providerError)}\n // onMessage={(data) => console.log(data)}\n >\n </XAdkWebProvider>\n </div>\n </div>\n );\n },\n args: {\n url: 'https://m-poc-dev.zaxline.com',\n token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiVjRTT0htSm8zWmVhNFJOdWc3WFgyQT09Iiwic2NvcGUiOlsiTUZYNVR4bGhlSUtiZWtaSEtvZU9WTmxvIl0sImV4cCI6MTc2Nzk1MjM0NywianRpIjoiSHpLMll4cVdjSTA3QWtmOHlsQXYwV0w0aE5jIiwiY2xpZW50X2lkIjoiTUZYNVR4bGhlSUtiZWtaSEtvZU9WTmxvIn0.AjABoyZFxAACkfy-ywLlfaJd6YY0Ir3pBGx_-HzW9di9p_4rnptbFI4adk9pktSVtlLB0cs45SU6uzp6VCJUj9-q-MP8QBqL6i7u2HV9e-kuBJgyIZD4t0PsazpJNu4rDlBAymYzw73ptLPjCwsUkckUz4Xhy1WmR8mpmuG0nuSWzlDlWKiaPgeMhA0Cnp4BV47zplvQ-r60VkarCg9JGHQNmIkQfG3llcjc-ZK4UKVkrFZynXhcCsp1ry7TwfRnwtXwQ1kZXDmeQxWFudhVaHwthraFF-fkHmYZpyTDrZQJY2Rn9nWO59ZHNh3I6-KiKdsNzv8Jl5T_dCUVPj7l3w',\n config: {\n appNo: 'MFX5TxlheIKbekZHKoeOVNlo',\n },\n providerId: 'demo-provider',\n },\n};\n\n\n// 使用 Provider 的 XAiChatbot\nexport const 携带历史记录实例: Story = {\n render: (args) => {\n const providerRef = React.useRef<any>(null);\n\n const handleSendMessage = () => {\n if (providerRef.current?.chat) {\n providerRef.current.chat({\n text: '你好,AI!', // 上传文案\n files: [], // 如果需要上传附件\n });\n } else {\n console.log('XAdkWebProvider ref 未准备好或 chat 方法不存在');\n }\n };\n\n const handleOnEvent = (event: any) => {\n const { code, data } = event;\n console.warn(code);\n if (code === 'SESSION_SWITCH') {\n console.log(providerRef.current.getMessages());\n } else if (code === 'APP_MESSAGES_INIT_SUCCESS') {\n console.log(code, data);\n }\n };\n\n return (\n <div style={{ display: 'flex' }}>\n <div style={{ height: '600px', width: '100vw' }}>\n <XAdkWebProvider\n ref={providerRef}\n {...args}\n onError={(providerError) => console.log(providerError)}\n onSuccess={handleOnEvent}\n onStream={(data) => console.log(data)}\n onEvent={handleOnEvent}\n />\n </div>\n </div>\n );\n },\n args: {\n url: 'https://m-poc.zaxline.com',\n token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiU0tUYkp6MDE5bWFVdnFqcC9OUGJEQT09Iiwic2NvcGUiOlsiMGhic2RXYkZVYktZRXkxMEsxNDM3WFhtIl0sImV4cCI6MTc2OTE2MzM1NCwianRpIjoiSlFGN21SSEwyLWFhaVF3Nlh0Q19mcEw3eTEwIiwiY2xpZW50X2lkIjoiMGhic2RXYkZVYktZRXkxMEsxNDM3WFhtIn0.NxxxWuSjnDt6Md79wOJX2AznuZ0sE4vZ8p9Gdva-ncDt-Qz6ghUUlKq47HIgAdrnDxIABU7H0RsHXv43rzFcBTK5GMr-SprF4TqhbMbhhEdTwGPgN76kaJVh4SagfbczWuIVBQl4PIzVZ2yMrYz0M2itYYoaAfvnbGBfRIZ6MJIhM-BCAAjrv86I3qDHnYQedjKmdiS9CXeoOt_lqQWk-GU-wl2FhkTsmo4Xt9PD055PPdEmsGCj5I__lIe4W2jqtGPmq82SNfLuzd0TUU7kmf6maUgLqVIRX7EUv51tW4P9BjnNP6fkG7Gkvte46pcO93OAXSlxd7QZ7jca5Gs62w',\n config: {\n appNo: '0hbsdWbFUbKYEy10K1437XXm',\n session: {\n showSessionList: true,\n },\n showFirstSession: true,\n allowUpload: true\n },\n providerId: 'demo-provider',\n },\n};"],"mappings":"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"}
@@ -194,10 +194,10 @@ export var 携带历史记录示例 = {
194
194
  });
195
195
  },
196
196
  args: {
197
- url: 'https://m-poc-dev.zaxline.com',
198
- token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiVjRTT0htSm8zWmVhNFJOdWc3WFgyQT09Iiwic2NvcGUiOlsicmN4anBibU44VVgxVVRRbTU0b0ZNTEtwIl0sImV4cCI6MTc2NTI3ODg4NiwianRpIjoiNFRTcWdfV3NJOHlqSEdZUmRRVEtuT0dPbjU4IiwiY2xpZW50X2lkIjoicmN4anBibU44VVgxVVRRbTU0b0ZNTEtwIn0.duUIEPpHmyMwaZYtvM5BlAs1e1ZEco_DaD2NI-Ht2m0OE8khQBe284vRSPxgvxKm7aHOcAo_Kla9DE0YBPUxKeN1c0qgRepIacLB7AvTWFZtb59OjdGMfMHQbbZiuy4wu5W81dVoOpZWCjIkOomCtvCsIZpUQY7vdIZBCB9sygmwTJ7S_9oF10iUtK90AdZHX-_9jdlKNJC-Fulg9ab88Z33rnmW8jhhqpEkYYzGnccXNQuomxswMo_MgyplV_B9wpfs90tEnPWC623dcdfJHcRJZBtC-NU6RomkPLewdz3dEM-LaWBkP6FMI60C0VQW-fvwWkWC1GKBrUeaXzbgWg',
197
+ url: 'https://m-poc.zaxline.com',
198
+ token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiU0tUYkp6MDE5bWFVdnFqcC9OUGJEQT09Iiwic2NvcGUiOlsiMGhic2RXYkZVYktZRXkxMEsxNDM3WFhtIl0sImV4cCI6MTc2OTE2MzE5MCwianRpIjoiV1B4QTJrTzB0dlV5eW84MWdxSVlldlZRWUFRIiwiY2xpZW50X2lkIjoiMGhic2RXYkZVYktZRXkxMEsxNDM3WFhtIn0.f8tEHi-1Gokv09ce2YjO17yD4SL-KFNCiyFmVOLMvHnHltDh9g2BsxSEB9IreaEvqT70-nl9qgWjb8V2As9QTBNPvfdStXmvc1X4HYsWPDdX0YeLWBAgJ0clJufL62SzwRLNb-torvuLvQfqohF3Aqr7QUXt2x_ZOUA1G5jkG8K9_FZPYBBfUMf6JV8CejogqCSe-yjIKPhbh9dDcCGO6ibexTT1x8C1f2LwP-sMyYmPOIdEqelmzk5-m32yy2fINKz9zG8NWMRx8G4Sr1l-pZzxSGOQ3v6EKUe3M_I-W3pZc6G9gzIXb2Wq_lE7q_l91ee5dU8ex1To8X_PtFd8_g',
199
199
  config: {
200
- appNo: 'rcxjpbmN8UX1UTQm54oFMLKp',
200
+ appNo: '0hbsdWbFUbKYEy10K1437XXm',
201
201
  chatProps: {
202
202
  clearBtnShow: false
203
203
  }
@@ -1 +1 @@
1
- {"version":3,"names":["React","Button","XAiProvider","XAiChatbot","XAiConversations","jsx","_jsx","jsxs","_jsxs","meta","title","component","parameters","layout","docs","description","tags","argTypes","config","table","type","summary","detail","category","decorators","Story","style","padding","children","单聊天窗口实例","render","args","providerRef","useRef","handleSendMessage","_providerRef$current","current","chat","text","console","log","display","flexDirection","gap","marginRight","justifyContent","onClick","maxWidth","height","_objectSpread","ref","onError","providerError","onMessage","data","navbarShow","navbar","subtitle","avatar","url","token","appNo","providerId","多容器示例","width","携带历史记录示例","overflow","flex","chatProps","clearBtnShow"],"sources":["../../../../src/components/XAiProvider/XAiProvider.stories.tsx"],"sourcesContent":["import React from 'react';\nimport type { Meta, StoryObj } from '@storybook/react-vite';\nimport { Button } from 'antd';\nimport XAiProvider from './index';\nimport XAiChatbot from '../XAiChatbot';\nimport XAiConversations from '../XAiConversations';\n\nconst meta: Meta<typeof XAiProvider> = {\n title: 'AI组件/XAiProvider AI容器',\n component: XAiProvider,\n parameters: {\n layout: 'centered',\n docs: {\n description: {\n component: 'AI 聊天机器人容器组件,提供全局上下文和消息管理功能。',\n },\n },\n },\n tags: ['autodocs'],\n argTypes: {\n config: {\n description: '配置信息',\n table: {\n type: {\n summary: 'XAiProviderConfig',\n detail: `{\n appNo?: string; // 应用唯一编号\n }`,\n },\n category: '配置选项',\n },\n },\n },\n // 添加装饰器,确保组件有必要的上下文\n decorators: [\n (Story) => (\n <div style={{ padding: '20px' }}>\n <Story />\n </div>\n ),\n ],\n};\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\n// 使用 Provider 的 XAiChatbot\nexport const 单聊天窗口实例: Story = {\n render: (args) => {\n const providerRef = React.useRef<any>(null);\n\n const handleSendMessage = () => {\n if (providerRef.current?.chat) {\n providerRef.current.chat({ text: '你好,AI!' });\n } else {\n console.log('XAiProvider ref 未准备好或 chat 方法不存在');\n }\n };\n\n return (\n <div style={{ display: 'flex' }}>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '12px', marginRight: '24px', justifyContent: 'center' }}>\n <Button type=\"primary\" onClick={handleSendMessage}>发送消息</Button>\n </div>\n <div style={{ maxWidth: '800px', height: '600px' }}>\n <XAiProvider\n ref={providerRef}\n {...args}\n onError={(providerError) => console.log(providerError)}\n onMessage={(data) => console.log(data)}\n >\n <XAiChatbot\n navbarShow\n navbar={{\n title: 'Provider 聊天机器人',\n subtitle: '由 Provider 管理消息',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </XAiProvider>\n </div>\n </div>\n );\n },\n args: {\n url: 'https://m-poc-dev.zaxline.com',\n token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiVjRTT0htSm8zWmVhNFJOdWc3WFgyQT09Iiwic2NvcGUiOlsiZ2JWemZPVjhTa1oxdGRMT3BYNWZyVXpMIl0sImV4cCI6MTc2NDY3MTc2MSwianRpIjoiRl9Zb0JBXzhIN01XempDZUxQenEzNTBXRnNrIiwiY2xpZW50X2lkIjoiZ2JWemZPVjhTa1oxdGRMT3BYNWZyVXpMIn0.mtGBQfwNtIkhcOumsOvzMj2BdYUxAPwZ9GcvNLuCNGVzFkqkLkfy_LALjYR2B-RaNj11_Cx7DcewtmLceG31KfnCiFY24BD_CbwoahdFh40SYRTFnjDf8XQI22E63h5NxTuldPx0itYLUPaUO6NAubnRON40eQPGZKygM0i72ULsQQAyRpJLYAaTjUxyPIW3JmMzQmYiRx641JeAYAup4-ZNw-Fqmd-8_xK3kN-a832xM-M_eqXgn8yMttn0uFv95lxPdJ1_-mp2zx8N4TBCYVkHo3u_PjM65S3_p4u1dFGXBDAsxtVMgmVGeUvubTLFuDM153rz9MZ7aOuu_c8K7w',\n config: {\n appNo: 'PGlA63A1Gt9oZpxa6YCWMciH',\n },\n providerId: 'demo-provider',\n },\n};\n\n// 多个 Provider 示例\nexport const 多容器示例: Story = {\n render: (args) => (\n <div style={{ display: 'flex', gap: '20px' }}>\n <div style={{ width: '400px', height: '600px' }}>\n <XAiProvider {...args} providerId=\"provider-1\">\n <XAiChatbot\n navbarShow\n navbar={{\n title: 'Provider 1',\n subtitle: '第一个聊天机器人',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </XAiProvider>\n </div>\n\n <div style={{ width: '400px', height: '600px' }}>\n <XAiProvider {...args} providerId=\"provider-2\">\n <XAiChatbot\n navbarShow\n navbar={{\n title: 'Provider 2',\n subtitle: '第二个聊天机器人',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </XAiProvider>\n </div>\n </div>\n ),\n args: {\n url: 'https://api.example.com/ai',\n token: 'your-token-here',\n },\n};\n\n// 使用 Provider 的 XAiChatbot\nexport const 携带历史记录示例: Story = {\n render: (args) => {\n const providerRef = React.useRef<any>(null);\n\n return (\n <div style={{ width: '1080px', height: '600px', overflow: 'hidden' }}>\n <XAiProvider\n ref={providerRef}\n {...args}\n onError={(providerError) => console.log(providerError)}\n onMessage={(data) => console.log(data)}\n >\n <XAiConversations />\n <div style={{ flex: 1, display: 'flex', justifyContent: 'center' }}>\n <XAiChatbot\n navbar={{\n title: 'Provider 聊天机器人',\n subtitle: '由 Provider 管理消息',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </div>\n </XAiProvider>\n </div>\n );\n },\n args: {\n url: 'https://m-poc-dev.zaxline.com',\n token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiVjRTT0htSm8zWmVhNFJOdWc3WFgyQT09Iiwic2NvcGUiOlsicmN4anBibU44VVgxVVRRbTU0b0ZNTEtwIl0sImV4cCI6MTc2NTI3ODg4NiwianRpIjoiNFRTcWdfV3NJOHlqSEdZUmRRVEtuT0dPbjU4IiwiY2xpZW50X2lkIjoicmN4anBibU44VVgxVVRRbTU0b0ZNTEtwIn0.duUIEPpHmyMwaZYtvM5BlAs1e1ZEco_DaD2NI-Ht2m0OE8khQBe284vRSPxgvxKm7aHOcAo_Kla9DE0YBPUxKeN1c0qgRepIacLB7AvTWFZtb59OjdGMfMHQbbZiuy4wu5W81dVoOpZWCjIkOomCtvCsIZpUQY7vdIZBCB9sygmwTJ7S_9oF10iUtK90AdZHX-_9jdlKNJC-Fulg9ab88Z33rnmW8jhhqpEkYYzGnccXNQuomxswMo_MgyplV_B9wpfs90tEnPWC623dcdfJHcRJZBtC-NU6RomkPLewdz3dEM-LaWBkP6FMI60C0VQW-fvwWkWC1GKBrUeaXzbgWg',\n config: {\n appNo: 'rcxjpbmN8UX1UTQm54oFMLKp',\n chatProps: {\n clearBtnShow: false,\n },\n },\n providerId: 'demo-provider',\n },\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","Button","XAiProvider","XAiChatbot","XAiConversations","jsx","_jsx","jsxs","_jsxs","meta","title","component","parameters","layout","docs","description","tags","argTypes","config","table","type","summary","detail","category","decorators","Story","style","padding","children","单聊天窗口实例","render","args","providerRef","useRef","handleSendMessage","_providerRef$current","current","chat","text","console","log","display","flexDirection","gap","marginRight","justifyContent","onClick","maxWidth","height","_objectSpread","ref","onError","providerError","onMessage","data","navbarShow","navbar","subtitle","avatar","url","token","appNo","providerId","多容器示例","width","携带历史记录示例","overflow","flex","chatProps","clearBtnShow"],"sources":["../../../../src/components/XAiProvider/XAiProvider.stories.tsx"],"sourcesContent":["import React from 'react';\nimport type { Meta, StoryObj } from '@storybook/react-vite';\nimport { Button } from 'antd';\nimport XAiProvider from './index';\nimport XAiChatbot from '../XAiChatbot';\nimport XAiConversations from '../XAiConversations';\n\nconst meta: Meta<typeof XAiProvider> = {\n title: 'AI组件/XAiProvider AI容器',\n component: XAiProvider,\n parameters: {\n layout: 'centered',\n docs: {\n description: {\n component: 'AI 聊天机器人容器组件,提供全局上下文和消息管理功能。',\n },\n },\n },\n tags: ['autodocs'],\n argTypes: {\n config: {\n description: '配置信息',\n table: {\n type: {\n summary: 'XAiProviderConfig',\n detail: `{\n appNo?: string; // 应用唯一编号\n }`,\n },\n category: '配置选项',\n },\n },\n },\n // 添加装饰器,确保组件有必要的上下文\n decorators: [\n (Story) => (\n <div style={{ padding: '20px' }}>\n <Story />\n </div>\n ),\n ],\n};\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\n// 使用 Provider 的 XAiChatbot\nexport const 单聊天窗口实例: Story = {\n render: (args) => {\n const providerRef = React.useRef<any>(null);\n\n const handleSendMessage = () => {\n if (providerRef.current?.chat) {\n providerRef.current.chat({ text: '你好,AI!' });\n } else {\n console.log('XAiProvider ref 未准备好或 chat 方法不存在');\n }\n };\n\n return (\n <div style={{ display: 'flex' }}>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '12px', marginRight: '24px', justifyContent: 'center' }}>\n <Button type=\"primary\" onClick={handleSendMessage}>发送消息</Button>\n </div>\n <div style={{ maxWidth: '800px', height: '600px' }}>\n <XAiProvider\n ref={providerRef}\n {...args}\n onError={(providerError) => console.log(providerError)}\n onMessage={(data) => console.log(data)}\n >\n <XAiChatbot\n navbarShow\n navbar={{\n title: 'Provider 聊天机器人',\n subtitle: '由 Provider 管理消息',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </XAiProvider>\n </div>\n </div>\n );\n },\n args: {\n url: 'https://m-poc-dev.zaxline.com',\n token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiVjRTT0htSm8zWmVhNFJOdWc3WFgyQT09Iiwic2NvcGUiOlsiZ2JWemZPVjhTa1oxdGRMT3BYNWZyVXpMIl0sImV4cCI6MTc2NDY3MTc2MSwianRpIjoiRl9Zb0JBXzhIN01XempDZUxQenEzNTBXRnNrIiwiY2xpZW50X2lkIjoiZ2JWemZPVjhTa1oxdGRMT3BYNWZyVXpMIn0.mtGBQfwNtIkhcOumsOvzMj2BdYUxAPwZ9GcvNLuCNGVzFkqkLkfy_LALjYR2B-RaNj11_Cx7DcewtmLceG31KfnCiFY24BD_CbwoahdFh40SYRTFnjDf8XQI22E63h5NxTuldPx0itYLUPaUO6NAubnRON40eQPGZKygM0i72ULsQQAyRpJLYAaTjUxyPIW3JmMzQmYiRx641JeAYAup4-ZNw-Fqmd-8_xK3kN-a832xM-M_eqXgn8yMttn0uFv95lxPdJ1_-mp2zx8N4TBCYVkHo3u_PjM65S3_p4u1dFGXBDAsxtVMgmVGeUvubTLFuDM153rz9MZ7aOuu_c8K7w',\n config: {\n appNo: 'PGlA63A1Gt9oZpxa6YCWMciH',\n },\n providerId: 'demo-provider',\n },\n};\n\n// 多个 Provider 示例\nexport const 多容器示例: Story = {\n render: (args) => (\n <div style={{ display: 'flex', gap: '20px' }}>\n <div style={{ width: '400px', height: '600px' }}>\n <XAiProvider {...args} providerId=\"provider-1\">\n <XAiChatbot\n navbarShow\n navbar={{\n title: 'Provider 1',\n subtitle: '第一个聊天机器人',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </XAiProvider>\n </div>\n\n <div style={{ width: '400px', height: '600px' }}>\n <XAiProvider {...args} providerId=\"provider-2\">\n <XAiChatbot\n navbarShow\n navbar={{\n title: 'Provider 2',\n subtitle: '第二个聊天机器人',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </XAiProvider>\n </div>\n </div>\n ),\n args: {\n url: 'https://api.example.com/ai',\n token: 'your-token-here',\n },\n};\n\n// 使用 Provider 的 XAiChatbot\nexport const 携带历史记录示例: Story = {\n render: (args) => {\n const providerRef = React.useRef<any>(null);\n\n return (\n <div style={{ width: '1080px', height: '600px', overflow: 'hidden' }}>\n <XAiProvider\n ref={providerRef}\n {...args}\n onError={(providerError) => console.log(providerError)}\n onMessage={(data) => console.log(data)}\n >\n <XAiConversations />\n <div style={{ flex: 1, display: 'flex', justifyContent: 'center' }}>\n <XAiChatbot\n navbar={{\n title: 'Provider 聊天机器人',\n subtitle: '由 Provider 管理消息',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </div>\n </XAiProvider>\n </div>\n );\n },\n args: {\n url: 'https://m-poc.zaxline.com',\n token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiU0tUYkp6MDE5bWFVdnFqcC9OUGJEQT09Iiwic2NvcGUiOlsiMGhic2RXYkZVYktZRXkxMEsxNDM3WFhtIl0sImV4cCI6MTc2OTE2MzE5MCwianRpIjoiV1B4QTJrTzB0dlV5eW84MWdxSVlldlZRWUFRIiwiY2xpZW50X2lkIjoiMGhic2RXYkZVYktZRXkxMEsxNDM3WFhtIn0.f8tEHi-1Gokv09ce2YjO17yD4SL-KFNCiyFmVOLMvHnHltDh9g2BsxSEB9IreaEvqT70-nl9qgWjb8V2As9QTBNPvfdStXmvc1X4HYsWPDdX0YeLWBAgJ0clJufL62SzwRLNb-torvuLvQfqohF3Aqr7QUXt2x_ZOUA1G5jkG8K9_FZPYBBfUMf6JV8CejogqCSe-yjIKPhbh9dDcCGO6ibexTT1x8C1f2LwP-sMyYmPOIdEqelmzk5-m32yy2fINKz9zG8NWMRx8G4Sr1l-pZzxSGOQ3v6EKUe3M_I-W3pZc6G9gzIXb2Wq_lE7q_l91ee5dU8ex1To8X_PtFd8_g',\n config: {\n appNo: '0hbsdWbFUbKYEy10K1437XXm',\n chatProps: {\n clearBtnShow: false,\n },\n },\n providerId: 'demo-provider',\n },\n};\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,MAAM,QAAQ,MAAM;AAC7B,OAAOC,WAAW;AAClB,OAAOC,UAAU;AACjB,OAAOC,gBAAgB;AAA4B,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAEnD,IAAMC,IAA8B,GAAG;EACrCC,KAAK,EAAE,uBAAuB;EAC9BC,SAAS,EAAET,WAAW;EACtBU,UAAU,EAAE;IACVC,MAAM,EAAE,UAAU;IAClBC,IAAI,EAAE;MACJC,WAAW,EAAE;QACXJ,SAAS,EAAE;MACb;IACF;EACF,CAAC;EACDK,IAAI,EAAE,CAAC,UAAU,CAAC;EAClBC,QAAQ,EAAE;IACRC,MAAM,EAAE;MACNH,WAAW,EAAE,MAAM;MACnBI,KAAK,EAAE;QACLC,IAAI,EAAE;UACJC,OAAO,EAAE,mBAAmB;UAC5BC,MAAM;QAGR,CAAC;QACDC,QAAQ,EAAE;MACZ;IACF;EACF,CAAC;EACD;EACAC,UAAU,EAAE,CACV,UAACC,KAAK;IAAA,oBACJnB,IAAA;MAAKoB,KAAK,EAAE;QAAEC,OAAO,EAAE;MAAO,CAAE;MAAAC,QAAA,eAC9BtB,IAAA,CAACmB,KAAK,IAAE;IAAC,CACN,CAAC;EAAA,CACP;AAEL,CAAC;AAED,eAAehB,IAAI;AAGnB;AACA,OAAO,IAAMoB,OAAc,GAAG;EAC5BC,MAAM,EAAE,SAAAA,OAACC,IAAI,EAAK;IAChB,IAAMC,WAAW,GAAGhC,KAAK,CAACiC,MAAM,CAAM,IAAI,CAAC;IAE3C,IAAMC,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAA,EAAS;MAAA,IAAAC,oBAAA;MAC9B,KAAAA,oBAAA,GAAIH,WAAW,CAACI,OAAO,cAAAD,oBAAA,eAAnBA,oBAAA,CAAqBE,IAAI,EAAE;QAC7BL,WAAW,CAACI,OAAO,CAACC,IAAI,CAAC;UAAEC,IAAI,EAAE;QAAS,CAAC,CAAC;MAC9C,CAAC,MAAM;QACLC,OAAO,CAACC,GAAG,CAAC,kCAAkC,CAAC;MACjD;IACF,CAAC;IAED,oBACEhC,KAAA;MAAKkB,KAAK,EAAE;QAAEe,OAAO,EAAE;MAAO,CAAE;MAAAb,QAAA,gBAC9BtB,IAAA;QAAKoB,KAAK,EAAE;UAAEe,OAAO,EAAE,MAAM;UAAEC,aAAa,EAAE,QAAQ;UAAEC,GAAG,EAAE,MAAM;UAAEC,WAAW,EAAE,MAAM;UAAEC,cAAc,EAAE;QAAS,CAAE;QAAAjB,QAAA,eACnHtB,IAAA,CAACL,MAAM;UAACmB,IAAI,EAAC,SAAS;UAAC0B,OAAO,EAAEZ,iBAAkB;UAAAN,QAAA,EAAC;QAAI,CAAQ;MAAC,CAC7D,CAAC,eACNtB,IAAA;QAAKoB,KAAK,EAAE;UAAEqB,QAAQ,EAAE,OAAO;UAAEC,MAAM,EAAE;QAAQ,CAAE;QAAApB,QAAA,eACjDtB,IAAA,CAACJ,WAAW,EAAA+C,aAAA,CAAAA,aAAA;UACVC,GAAG,EAAElB;QAAY,GACbD,IAAI;UACRoB,OAAO,EAAE,SAAAA,QAACC,aAAa;YAAA,OAAKb,OAAO,CAACC,GAAG,CAACY,aAAa,CAAC;UAAA,CAAC;UACvDC,SAAS,EAAE,SAAAA,UAACC,IAAI;YAAA,OAAKf,OAAO,CAACC,GAAG,CAACc,IAAI,CAAC;UAAA,CAAC;UAAA1B,QAAA,eAEvCtB,IAAA,CAACH,UAAU;YACToD,UAAU;YACVC,MAAM,EAAE;cACN9C,KAAK,EAAE,gBAAgB;cACvB+C,QAAQ,EAAE,iBAAiB;cAC3BC,MAAM,EAAE;YACV;UAAE,CACH;QAAC,EACS;MAAC,CACX,CAAC;IAAA,CACH,CAAC;EAEV,CAAC;EACD3B,IAAI,EAAE;IACJ4B,GAAG,EAAE,+BAA+B;IACpCC,KAAK,EAAE,6lBAA6lB;IACpmB1C,MAAM,EAAE;MACN2C,KAAK,EAAE;IACT,CAAC;IACDC,UAAU,EAAE;EACd;AACF,CAAC;;AAED;AACA,OAAO,IAAMC,KAAY,GAAG;EAC1BjC,MAAM,EAAE,SAAAA,OAACC,IAAI;IAAA,oBACXvB,KAAA;MAAKkB,KAAK,EAAE;QAAEe,OAAO,EAAE,MAAM;QAAEE,GAAG,EAAE;MAAO,CAAE;MAAAf,QAAA,gBAC3CtB,IAAA;QAAKoB,KAAK,EAAE;UAAEsC,KAAK,EAAE,OAAO;UAAEhB,MAAM,EAAE;QAAQ,CAAE;QAAApB,QAAA,eAC9CtB,IAAA,CAACJ,WAAW,EAAA+C,aAAA,CAAAA,aAAA,KAAKlB,IAAI;UAAE+B,UAAU,EAAC,YAAY;UAAAlC,QAAA,eAC5CtB,IAAA,CAACH,UAAU;YACToD,UAAU;YACVC,MAAM,EAAE;cACN9C,KAAK,EAAE,YAAY;cACnB+C,QAAQ,EAAE,UAAU;cACpBC,MAAM,EAAE;YACV;UAAE,CACH;QAAC,EACS;MAAC,CACX,CAAC,eAENpD,IAAA;QAAKoB,KAAK,EAAE;UAAEsC,KAAK,EAAE,OAAO;UAAEhB,MAAM,EAAE;QAAQ,CAAE;QAAApB,QAAA,eAC9CtB,IAAA,CAACJ,WAAW,EAAA+C,aAAA,CAAAA,aAAA,KAAKlB,IAAI;UAAE+B,UAAU,EAAC,YAAY;UAAAlC,QAAA,eAC5CtB,IAAA,CAACH,UAAU;YACToD,UAAU;YACVC,MAAM,EAAE;cACN9C,KAAK,EAAE,YAAY;cACnB+C,QAAQ,EAAE,UAAU;cACpBC,MAAM,EAAE;YACV;UAAE,CACH;QAAC,EACS;MAAC,CACX,CAAC;IAAA,CACH,CAAC;EAAA,CACP;EACD3B,IAAI,EAAE;IACJ4B,GAAG,EAAE,4BAA4B;IACjCC,KAAK,EAAE;EACT;AACF,CAAC;;AAED;AACA,OAAO,IAAMK,QAAe,GAAG;EAC7BnC,MAAM,EAAE,SAAAA,OAACC,IAAI,EAAK;IAChB,IAAMC,WAAW,GAAGhC,KAAK,CAACiC,MAAM,CAAM,IAAI,CAAC;IAE3C,oBACE3B,IAAA;MAAKoB,KAAK,EAAE;QAAEsC,KAAK,EAAE,QAAQ;QAAEhB,MAAM,EAAE,OAAO;QAAEkB,QAAQ,EAAE;MAAS,CAAE;MAAAtC,QAAA,eACnEpB,KAAA,CAACN,WAAW,EAAA+C,aAAA,CAAAA,aAAA;QACVC,GAAG,EAAElB;MAAY,GACbD,IAAI;QACRoB,OAAO,EAAE,SAAAA,QAACC,aAAa;UAAA,OAAKb,OAAO,CAACC,GAAG,CAACY,aAAa,CAAC;QAAA,CAAC;QACvDC,SAAS,EAAE,SAAAA,UAACC,IAAI;UAAA,OAAKf,OAAO,CAACC,GAAG,CAACc,IAAI,CAAC;QAAA,CAAC;QAAA1B,QAAA,gBAEvCtB,IAAA,CAACF,gBAAgB,IAAE,CAAC,eACpBE,IAAA;UAAKoB,KAAK,EAAE;YAAEyC,IAAI,EAAE,CAAC;YAAE1B,OAAO,EAAE,MAAM;YAAEI,cAAc,EAAE;UAAS,CAAE;UAAAjB,QAAA,eACjEtB,IAAA,CAACH,UAAU;YACTqD,MAAM,EAAE;cACN9C,KAAK,EAAE,gBAAgB;cACvB+C,QAAQ,EAAE,iBAAiB;cAC3BC,MAAM,EAAE;YACV;UAAE,CACH;QAAC,CACC,CAAC;MAAA,EACK;IAAC,CACX,CAAC;EAEV,CAAC;EACD3B,IAAI,EAAE;IACJ4B,GAAG,EAAE,2BAA2B;IAChCC,KAAK,EAAE,6lBAA6lB;IACpmB1C,MAAM,EAAE;MACN2C,KAAK,EAAE,0BAA0B;MACjCO,SAAS,EAAE;QACTC,YAAY,EAAE;MAChB;IACF,CAAC;IACDP,UAAU,EAAE;EACd;AACF,CAAC"}