@ai-group/chat-sdk 0.2.7 → 0.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/README.md +93 -214
  2. package/dist/cjs/components/XAiChatbot/index.js +4 -3
  3. package/dist/cjs/components/XAiChatbot/index.js.map +2 -2
  4. package/dist/cjs/components/XAiChatbot/styles.d.ts +2 -0
  5. package/dist/cjs/components/XAiChatbot/styles.js +31 -1
  6. package/dist/cjs/components/XAiChatbot/styles.js.map +2 -2
  7. package/dist/cjs/components/XAiConversations/XAiConversations.stories.d.ts +6 -0
  8. package/dist/cjs/components/XAiConversations/XAiConversations.stories.js +82 -0
  9. package/dist/cjs/components/XAiConversations/XAiConversations.stories.js.map +7 -0
  10. package/dist/cjs/components/XAiConversations/index.d.ts +4 -0
  11. package/dist/cjs/components/XAiConversations/index.js +59 -0
  12. package/dist/cjs/components/XAiConversations/index.js.map +7 -0
  13. package/dist/cjs/components/XAiProvider/XAiProvider.stories.d.ts +2 -2
  14. package/dist/cjs/components/XAiProvider/XAiProvider.stories.js +12 -12
  15. package/dist/cjs/components/XAiProvider/XAiProvider.stories.js.map +2 -2
  16. package/dist/cjs/components/XAiProvider/demo.styles.d.ts +35 -0
  17. package/dist/cjs/components/XAiProvider/demo.styles.js +37 -0
  18. package/dist/cjs/components/XAiProvider/demo.styles.js.map +7 -0
  19. package/dist/cjs/components/XAiProvider/index.js +8 -3
  20. package/dist/cjs/components/XAiProvider/index.js.map +3 -3
  21. package/dist/cjs/components/XAiWebSDKWrapper.js +7 -1
  22. package/dist/cjs/components/XAiWebSDKWrapper.js.map +2 -2
  23. package/dist/cjs/hooks/useAgentGenerator.d.ts +10 -2
  24. package/dist/cjs/hooks/useAgentGenerator.js +132 -7
  25. package/dist/cjs/hooks/useAgentGenerator.js.map +2 -2
  26. package/dist/cjs/services/api.d.ts +65 -3
  27. package/dist/cjs/services/api.js +33 -0
  28. package/dist/cjs/services/api.js.map +2 -2
  29. package/dist/cjs/types/XAiChatbot.d.ts +2 -0
  30. package/dist/cjs/types/XAiChatbot.js.map +1 -1
  31. package/dist/cjs/types/XAiConversations.d.ts +4 -0
  32. package/dist/cjs/types/XAiConversations.js +18 -0
  33. package/dist/cjs/types/XAiConversations.js.map +7 -0
  34. package/dist/cjs/types/XAiProvider.d.ts +14 -0
  35. package/dist/cjs/types/XAiProvider.js +9 -0
  36. package/dist/cjs/types/XAiProvider.js.map +3 -3
  37. package/dist/cjs/types/index.d.ts +1 -0
  38. package/dist/cjs/types/index.js +3 -1
  39. package/dist/cjs/types/index.js.map +2 -2
  40. package/dist/cjs/utils/umdEntry.d.ts +4 -1
  41. package/dist/cjs/utils/umdEntry.js +14 -12
  42. package/dist/cjs/utils/umdEntry.js.map +2 -2
  43. package/dist/esm/components/XAiChatbot/index.js +11 -8
  44. package/dist/esm/components/XAiChatbot/index.js.map +1 -1
  45. package/dist/esm/components/XAiChatbot/styles.d.ts +2 -0
  46. package/dist/esm/components/XAiChatbot/styles.js +38 -38
  47. package/dist/esm/components/XAiChatbot/styles.js.map +1 -1
  48. package/dist/esm/components/XAiConversations/XAiConversations.stories.d.ts +6 -0
  49. package/dist/esm/components/XAiConversations/XAiConversations.stories.js +42 -0
  50. package/dist/esm/components/XAiConversations/XAiConversations.stories.js.map +1 -0
  51. package/dist/esm/components/XAiConversations/index.d.ts +4 -0
  52. package/dist/esm/components/XAiConversations/index.js +27 -0
  53. package/dist/esm/components/XAiConversations/index.js.map +1 -0
  54. package/dist/esm/components/XAiProvider/XAiProvider.stories.d.ts +2 -2
  55. package/dist/esm/components/XAiProvider/XAiProvider.stories.js +38 -180
  56. package/dist/esm/components/XAiProvider/XAiProvider.stories.js.map +1 -1
  57. package/dist/esm/components/XAiProvider/demo.styles.d.ts +35 -0
  58. package/dist/esm/components/XAiProvider/demo.styles.js +12 -0
  59. package/dist/esm/components/XAiProvider/demo.styles.js.map +1 -0
  60. package/dist/esm/components/XAiProvider/index.js +17 -3
  61. package/dist/esm/components/XAiProvider/index.js.map +1 -1
  62. package/dist/esm/components/XAiWebSDKWrapper.js +4 -1
  63. package/dist/esm/components/XAiWebSDKWrapper.js.map +1 -1
  64. package/dist/esm/hooks/useAgentGenerator.d.ts +10 -2
  65. package/dist/esm/hooks/useAgentGenerator.js +215 -30
  66. package/dist/esm/hooks/useAgentGenerator.js.map +1 -1
  67. package/dist/esm/services/api.d.ts +65 -3
  68. package/dist/esm/services/api.js +75 -0
  69. package/dist/esm/services/api.js.map +1 -1
  70. package/dist/esm/types/XAiChatbot.d.ts +2 -0
  71. package/dist/esm/types/XAiChatbot.js.map +1 -1
  72. package/dist/esm/types/XAiConversations.d.ts +4 -0
  73. package/dist/esm/types/XAiConversations.js +2 -0
  74. package/dist/esm/types/XAiConversations.js.map +1 -0
  75. package/dist/esm/types/XAiProvider.d.ts +14 -0
  76. package/dist/esm/types/XAiProvider.js +7 -0
  77. package/dist/esm/types/XAiProvider.js.map +1 -1
  78. package/dist/esm/types/index.d.ts +1 -0
  79. package/dist/esm/types/index.js +1 -0
  80. package/dist/esm/types/index.js.map +1 -1
  81. package/dist/esm/utils/umdEntry.d.ts +4 -1
  82. package/dist/esm/utils/umdEntry.js +22 -18
  83. package/dist/esm/utils/umdEntry.js.map +1 -1
  84. package/dist/umd/chat-sdk.min.js +1 -1
  85. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["React","css","globalCss","Global","withBasicStyles","jsx","_jsx","primaryBlue","lightBlue","darkGray","lightGray","borderGray","useStyles","wrapper","_templateObject","_taggedTemplateLiteral","navbar","_templateObject2","avatar","_templateObject3","title","_templateObject4","subtitle","_templateObject5","messageContainer","_templateObject6","emptyWrapper","_templateObject7","emptyImg","_templateObject8","message","_templateObject9","messageRight","_templateObject10","quickReplies","_templateObject11","replyItem","_templateObject12","highlight","_templateObject13","inputBar","_templateObject14","input","_templateObject15","sendWrapper","_templateObject16","stopButton","_templateObject17","sendButton","_templateObject18","uploadBtn","_templateObject19","clearBtn","_templateObject20","chatFooter","_templateObject21","flexCenterGap2","_templateObject22","iconHuihuarenqun","_templateObject23","popoverFooter","_templateObject24","divider","_templateObject25","flexCenterGap4","_templateObject26","iconZengjiaDisabled","_templateObject27","iconZengjiaNormal","_templateObject28","actionHeaderWrapper","_templateObject29","actionHeaderItem","_templateObject30","actionHeaderIcon","_templateObject31","actionHeaderText","_templateObject32","actionHeaderDetail","_templateObject33","actionDetailTitle","_templateObject34","actionHeaderDetailItem","_templateObject35","actionHeaderCost","_templateObject36","GlobalStyle","styles","_templateObject37"],"sources":["../../../../src/components/XAiChatbot/styles.tsx"],"sourcesContent":["import React from 'react';\nimport { css } from '@emotion/css';\nimport { css as globalCss, Global } from '@emotion/react';\nimport { withBasicStyles } from '@/styles/common';\n\nconst primaryBlue = '#0078FF'; // 主蓝色\nconst lightBlue = '#E6F0FF'; // 浅蓝色气泡背景\nconst darkGray = '#333'; // 深灰色文本\nconst lightGray = '#888'; // 浅灰文本\nconst borderGray = '#ddd'; // 边框灰色\n\nexport const useStyles = withBasicStyles(() => ({\n // 静态样式\n wrapper: css`\n display: flex;\n flex-direction: column;\n max-height: 812px;\n min-height: 300px;\n width: 100%;\n height: 100%;\n min-width: 375px;\n background-color: #fff;\n // border: 1px solid rgba(80,96,122,.15);\n border-radius: 12px;\n overflow: hidden;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen,\n Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;\n `,\n\n navbar: css`\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 12px 16px;\n border-bottom: 1px solid ${borderGray};\n background-color: #fff;\n `,\n\n avatar: css`\n width: 40px;\n height: 40px;\n border-radius: 50%;\n object-fit: cover;\n margin-right: 12px;\n border: 1px solid ${borderGray};\n `,\n\n title: css`\n font-weight: 600;\n font-size: 16px;\n color: ${darkGray};\n `,\n\n subtitle: css`\n font-size: 12px;\n color: ${lightGray};\n margin-top: 2px;\n `,\n\n messageContainer: css`\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n background-color: #fff;\n display: flex;\n flex-direction: column;\n gap: 10px;\n min-height: 0;\n position: relative;\n `,\n\n emptyWrapper: css`\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n color: '#222';\n userSelect: none;\n `,\n\n emptyImg: css`\n width: 60px;\n height: 60px;\n margin-bottom: 16px;\n `,\n\n message: css`\n max-width: 70%;\n padding: 10px 14px;\n border-radius: 20px;\n background-color: ${lightBlue};\n color: ${darkGray};\n font-size: 14px;\n line-height: 1.4;\n word-break: break-word;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n `,\n\n messageRight: css`\n align-self: flex-end;\n background-color: ${primaryBlue};\n color: white;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 20px;\n border-top-left-radius: 20px;\n border-top-right-radius: 20px;\n `,\n\n quickReplies: css`\n display: flex;\n gap: 8px;\n padding: 10px 16px;\n border-top: 1px solid ${borderGray};\n background-color: #fff;\n overflow-x: auto;\n `,\n\n replyItem: css`\n padding: 6px 12px;\n font-size: 13px;\n border: 1px solid ${primaryBlue};\n border-radius: 20px;\n background-color: #fff;\n color: ${primaryBlue};\n cursor: pointer;\n white-space: nowrap;\n user-select: none;\n transition: all 0.2s ease;\n \n &:hover {\n background-color: ${primaryBlue};\n color: #fff;\n }\n `,\n\n highlight: css`\n background-color: ${primaryBlue};\n color: white;\n border-color: ${primaryBlue};\n `,\n\n inputBar: css`\n display: flex;\n align-items: center;\n padding: 10px 16px;\n border-top: 1px solid ${borderGray};\n background-color: #fff;\n `,\n\n input: css`\n flex: 1;\n padding: 8px 12px;\n border: 1px solid ${borderGray};\n border-radius: 20px;\n font-size: 14px;\n outline: none;\n \n &:focus {\n border-color: ${primaryBlue};\n box-shadow: 0 0 3px ${primaryBlue};\n }\n `,\n\n sendWrapper: css`\n flex: 1;\n border-radius: 26px;\n `,\n\n stopButton: css`\n width: 23px !important;\n height: 23px !important;\n padding: 0 !important;\n min-width: 23px !important;\n min-height: 23px !important;\n display: flex;\n align-items: center;\n justify-content: center;\n `,\n\n sendButton: css`\n width: 23px !important;\n height: 23px !important;\n padding: 0 !important;\n min-width: 23px !important;\n min-height: 23px !important;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ${primaryBlue};\n border: none;\n border-radius: 20px;\n color: white;\n font-weight: 600;\n cursor: pointer;\n transition: background-color 0.2s ease;\n box-sizing: border-box;\n &:hover {\n background-color: #005ecb;\n }\n &:disabled {\n background-color: ${lightBlue};\n cursor: not-allowed;\n }\n `,\n\n uploadBtn: css`\n margin-left: 8px;\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background-color: ${primaryBlue};\n color: white;\n font-weight: 700;\n font-size: 22px;\n line-height: 32px;\n text-align: center;\n cursor: pointer;\n border: none;\n user-select: none;\n &:hover {\n background-color: #005ecb;\n }\n `,\n\n clearBtn: css`\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border: 1px solid rgb(228, 231, 236);\n border-radius: 12px;\n width: 45px;\n height: 45px;\n box-sizing: border-box;\n `,\n\n chatFooter: css`\n gap: 8px;\n position: relatative;\n z-index: 10;\n padding: 0 20px 10px 20px;\n `, // todo 后续增加safe-bottom\n\n flexCenterGap2: css`\n display: flex;\n align-items: center;\n gap: 8px;\n `,\n\n iconHuihuarenqun: css`\n font-family: \"iconfont\";\n font-size: 16px;\n font-weight: 300;\n padding: 3px;\n border-radius: 6px;\n color: #181B25;\n cursor: pointer;\n &:hover {\n background: #E1E4EA;\n color: #7F56D9;\n }\n `,\n\n popoverFooter: css`\n display: flex;\n gap: 8px;\n justify-content: end;\n `,\n\n divider: css`\n width: 1px;\n height: 15px;\n margin-left: 3px;\n margin-right: 3px;\n background: #D0D5DD;\n `,\n\n flexCenterGap4: css`\n display: flex;\n align-items: center;\n gap: 4px;\n color: #7F56D9;\n cursor: pointer;\n &:hover {\n opacity: 0.8;\n }\n `,\n\n iconZengjiaDisabled: css`\n font-family: \"iconfont\";\n font-size: 25px;\n font-weight: 300;\n color: #D0D5DD;\n cursor: not-allowed;\n `,\n\n iconZengjiaNormal: css`\n font-family: \"iconfont\";\n font-size: 25px;\n font-weight: 300;\n color: #98A2B3;\n cursor: pointer;\n &:hover {\n color: #7F56D9;\n }\n `,\n actionHeaderWrapper: css`\n margin-bottom: 12px;\n `,\n actionHeaderItem: css`\n display: flex;\n align-items: center;\n height: 40px;\n box-sizing: border-box;\n padding: 10px 16px;\n margin-bottom: 8px;\n background: #f7fafd;\n cursor: pointer;\n border-radius: 8px;\n box-shadow: 0 1px 3px rgba(0,0,0,0.03);\n `,\n actionHeaderIcon: css`\n height: 14px;\n `,\n actionHeaderText: css`\n font-weight: 400;\n font-size: 14px;\n color: #3961F2;\n margin-left: 10px;\n margin-right: 6px;\n `,\n actionHeaderDetail: css`\n background: #F3F5FA;\n border-radius: 8px;\n overflow: hidden;\n `,\n actionDetailTitle: css`\n display: flex;\n align-items: center;\n padding: 0 16px;\n box-sizing: border-box;\n background: #EDEFF5;\n height: 32px;\n margin-bottom: 12px;\n cursor: pointer;\n `,\n actionHeaderDetailItem: css`\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n padding: 0 16px;\n margin-bottom: 12px;\n color: #949494;\n `,\n actionHeaderCost: css`\n margin-left: auto;\n color: #888;\n font-size: 12px;\n min-width: 32px;\n text-align: right;\n `,\n}));\n\nexport const GlobalStyle: React.FC = () => (\n <Global\n styles={globalCss`\n .ant-bubble-footer {\n display: flex;\n align-items: center;\n min-width: 0,\n max-width: 600,\n /* 你想覆盖的其他样式 */\n }\n\n .ant-sender {\n box-shadow: none !important;\n }\n\n .ant-prompts-item {\n padding-block: 8px !important;\n }\n\n /* 用户消息气泡背景色 */\n .ant-bubble .user-content {\n background-color: #D8E0FD;\n }\n\n /* 助手消息气泡背景色 */\n .ant-bubble .assistant-content {\n background-color: #F3F5FA;\n }\n `}\n />\n);\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","css","globalCss","Global","withBasicStyles","jsx","_jsx","primaryBlue","lightBlue","darkGray","lightGray","borderGray","useStyles","wrapper","_templateObject","_taggedTemplateLiteral","navbar","_templateObject2","userAvatar","_templateObject3","avatar","_templateObject4","title","_templateObject5","subtitle","_templateObject6","messageContainer","_templateObject7","emptyWrapper","_templateObject8","emptyImg","_templateObject9","message","_templateObject10","messageRight","_templateObject11","quickReplies","_templateObject12","replyItem","_templateObject13","highlight","_templateObject14","inputBar","_templateObject15","input","_templateObject16","sendWrapper","_templateObject17","stopButton","_templateObject18","sendButton","_templateObject19","uploadBtn","_templateObject20","clearBtn","_templateObject21","chatFooter","_templateObject22","footerTips","_templateObject23","flexCenterGap2","_templateObject24","iconHuihuarenqun","_templateObject25","popoverFooter","_templateObject26","divider","_templateObject27","flexCenterGap4","_templateObject28","iconZengjiaDisabled","_templateObject29","iconZengjiaNormal","_templateObject30","actionHeaderWrapper","_templateObject31","actionHeaderItem","_templateObject32","actionHeaderIcon","_templateObject33","actionHeaderText","_templateObject34","actionHeaderDetail","_templateObject35","actionDetailTitle","_templateObject36","actionHeaderDetailItem","_templateObject37","actionHeaderCost","_templateObject38","GlobalStyle","styles","_templateObject39"],"sources":["../../../../src/components/XAiChatbot/styles.tsx"],"sourcesContent":["import React from 'react';\nimport { css } from '@emotion/css';\nimport { css as globalCss, Global } from '@emotion/react';\nimport { withBasicStyles } from '@/styles/common';\n\nconst primaryBlue = '#0078FF'; // 主蓝色\nconst lightBlue = '#E6F0FF'; // 浅蓝色气泡背景\nconst darkGray = '#333'; // 深灰色文本\nconst lightGray = '#888'; // 浅灰文本\nconst borderGray = '#ddd'; // 边框灰色\n\nexport const useStyles = withBasicStyles(() => ({\n // 静态样式\n wrapper: css`\n display: flex;\n flex-direction: column;\n max-height: 812px;\n min-height: 300px;\n width: 100%;\n height: 100%;\n min-width: 375px;\n background-color: #fff;\n // border: 1px solid rgba(80,96,122,.15);\n border-radius: 12px;\n overflow: hidden;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen,\n Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;\n `,\n\n navbar: css`\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 12px 16px;\n border-bottom: 1px solid ${borderGray};\n background-color: #fff;\n `,\n\n userAvatar: css`\n display: flex;\n align-items: center;\n justify-content: center;\n height: 32px;\n width: 32px;\n border-radius: 50%;\n object-fit: cover;\n margin-right: 12px;\n `,\n\n avatar: css`\n width: 40px;\n height: 40px;\n border-radius: 50%;\n object-fit: cover;\n margin-right: 12px;\n border: 1px solid ${borderGray};\n `,\n\n title: css`\n font-weight: 600;\n font-size: 16px;\n color: ${darkGray};\n `,\n\n subtitle: css`\n font-size: 12px;\n color: ${lightGray};\n margin-top: 2px;\n `,\n\n messageContainer: css`\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n background-color: #fff;\n display: flex;\n flex-direction: column;\n gap: 10px;\n min-height: 0;\n position: relative;\n `,\n\n emptyWrapper: css`\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n color: '#222';\n userSelect: none;\n `,\n\n emptyImg: css`\n width: 60px;\n height: 60px;\n margin-bottom: 16px;\n `,\n\n message: css`\n max-width: 70%;\n padding: 10px 14px;\n border-radius: 20px;\n background-color: ${lightBlue};\n color: ${darkGray};\n font-size: 14px;\n line-height: 1.4;\n word-break: break-word;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n `,\n\n messageRight: css`\n align-self: flex-end;\n background-color: ${primaryBlue};\n color: white;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 20px;\n border-top-left-radius: 20px;\n border-top-right-radius: 20px;\n `,\n\n quickReplies: css`\n display: flex;\n gap: 8px;\n padding: 10px 16px;\n border-top: 1px solid ${borderGray};\n background-color: #fff;\n overflow-x: auto;\n `,\n\n replyItem: css`\n padding: 6px 12px;\n font-size: 13px;\n border: 1px solid ${primaryBlue};\n border-radius: 20px;\n background-color: #fff;\n color: ${primaryBlue};\n cursor: pointer;\n white-space: nowrap;\n user-select: none;\n transition: all 0.2s ease;\n \n &:hover {\n background-color: ${primaryBlue};\n color: #fff;\n }\n `,\n\n highlight: css`\n background-color: ${primaryBlue};\n color: white;\n border-color: ${primaryBlue};\n `,\n\n inputBar: css`\n display: flex;\n align-items: center;\n padding: 10px 16px;\n border-top: 1px solid ${borderGray};\n background-color: #fff;\n `,\n\n input: css`\n flex: 1;\n padding: 8px 12px;\n border: 1px solid ${borderGray};\n border-radius: 20px;\n font-size: 14px;\n outline: none;\n \n &:focus {\n border-color: ${primaryBlue};\n box-shadow: 0 0 3px ${primaryBlue};\n }\n `,\n\n sendWrapper: css`\n flex: 1;\n border-radius: 26px;\n `,\n\n stopButton: css`\n width: 23px !important;\n height: 23px !important;\n padding: 0 !important;\n min-width: 23px !important;\n min-height: 23px !important;\n display: flex;\n align-items: center;\n justify-content: center;\n `,\n\n sendButton: css`\n width: 23px !important;\n height: 23px !important;\n padding: 0 !important;\n min-width: 23px !important;\n min-height: 23px !important;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ${primaryBlue};\n border: none;\n border-radius: 20px;\n color: white;\n font-weight: 600;\n cursor: pointer;\n transition: background-color 0.2s ease;\n box-sizing: border-box;\n &:hover {\n background-color: #005ecb;\n }\n &:disabled {\n background-color: ${lightBlue};\n cursor: not-allowed;\n }\n `,\n\n uploadBtn: css`\n margin-left: 8px;\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background-color: ${primaryBlue};\n color: white;\n font-weight: 700;\n font-size: 22px;\n line-height: 32px;\n text-align: center;\n cursor: pointer;\n border: none;\n user-select: none;\n &:hover {\n background-color: #005ecb;\n }\n `,\n\n clearBtn: css`\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border: 1px solid rgb(228, 231, 236);\n border-radius: 12px;\n width: 45px;\n height: 45px;\n box-sizing: border-box;\n `,\n\n chatFooter: css`\n gap: 8px;\n position: relatative;\n z-index: 10;\n padding: 0 20px 10px 20px;\n `,\n\n footerTips: css`\n display: flex;\n align-items:center;\n justify-content: center;\n font-size: 12px;\n color: rgba(0,0,0,0.4);\n `,\n\n flexCenterGap2: css`\n display: flex;\n align-items: center;\n gap: 8px;\n `,\n\n iconHuihuarenqun: css`\n font-family: \"iconfont\";\n font-size: 16px;\n font-weight: 300;\n padding: 3px;\n border-radius: 6px;\n color: #181B25;\n cursor: pointer;\n &:hover {\n background: #E1E4EA;\n color: #7F56D9;\n }\n `,\n\n popoverFooter: css`\n display: flex;\n gap: 8px;\n justify-content: end;\n `,\n\n divider: css`\n width: 1px;\n height: 15px;\n margin-left: 3px;\n margin-right: 3px;\n background: #D0D5DD;\n `,\n\n flexCenterGap4: css`\n display: flex;\n align-items: center;\n gap: 4px;\n color: #7F56D9;\n cursor: pointer;\n &:hover {\n opacity: 0.8;\n }\n `,\n\n iconZengjiaDisabled: css`\n font-family: \"iconfont\";\n font-size: 25px;\n font-weight: 300;\n color: #D0D5DD;\n cursor: not-allowed;\n `,\n\n iconZengjiaNormal: css`\n font-family: \"iconfont\";\n font-size: 25px;\n font-weight: 300;\n color: #98A2B3;\n cursor: pointer;\n &:hover {\n color: #7F56D9;\n }\n `,\n actionHeaderWrapper: css`\n margin-bottom: 12px;\n `,\n actionHeaderItem: css`\n display: flex;\n align-items: center;\n height: 40px;\n box-sizing: border-box;\n padding: 10px 16px;\n margin-bottom: 8px;\n background: #f7fafd;\n cursor: pointer;\n border-radius: 8px;\n box-shadow: 0 1px 3px rgba(0,0,0,0.03);\n `,\n actionHeaderIcon: css`\n height: 14px;\n `,\n actionHeaderText: css`\n font-weight: 400;\n font-size: 14px;\n color: #3961F2;\n margin-left: 10px;\n margin-right: 6px;\n `,\n actionHeaderDetail: css`\n background: #F3F5FA;\n border-radius: 8px;\n overflow: hidden;\n `,\n actionDetailTitle: css`\n display: flex;\n align-items: center;\n padding: 0 16px;\n box-sizing: border-box;\n background: #EDEFF5;\n height: 32px;\n margin-bottom: 12px;\n cursor: pointer;\n `,\n actionHeaderDetailItem: css`\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n padding: 0 16px;\n margin-bottom: 12px;\n color: #949494;\n `,\n actionHeaderCost: css`\n margin-left: auto;\n color: #888;\n font-size: 12px;\n min-width: 32px;\n text-align: right;\n `,\n}));\n\nexport const GlobalStyle: React.FC = () => (\n <Global\n styles={globalCss`\n .ant-bubble-footer {\n display: flex;\n align-items: center;\n min-width: 0,\n max-width: 600,\n /* 你想覆盖的其他样式 */\n }\n\n .ant-sender-content {\n textarea {\n word-break: break-all;\n }\n }\n\n .ant-avatar {\n background-color: transparent;\n }\n\n .ant-sender-actions-list {\n margin-left: -40px;\n }\n\n .ant-sender {\n box-shadow: none !important;\n }\n\n .ant-prompts-item {\n padding-block: 8px !important;\n }\n\n /* 用户消息气泡背景色 */\n .ant-bubble .user-content {\n background-color: #D8E0FD;\n }\n\n /* 助手消息气泡背景色 */\n .ant-bubble .assistant-content {\n background-color: #F3F5FA;\n }\n `}\n />\n);\n"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ import XAiConversations from '.';
3
+ declare const meta: Meta<typeof XAiConversations>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const 基础用法: Story;
@@ -0,0 +1,42 @@
1
+ import React from 'react';
2
+ import XAiConversations from '.';
3
+ import { jsx as _jsx } from "react/jsx-runtime";
4
+ var meta = {
5
+ title: 'AI组件/XAiConversations 对话记录管理',
6
+ component: XAiConversations,
7
+ parameters: {
8
+ layout: 'centered'
9
+ },
10
+ tags: ['autodocs'],
11
+ argTypes: {}
12
+ };
13
+ export default meta;
14
+ var BasicUsageStory = function BasicUsageStory(args) {
15
+ var items = Array.from({
16
+ length: 4
17
+ }).map(function (_, index) {
18
+ return {
19
+ key: "item".concat(index + 1),
20
+ label: "\u804A\u5929\u8BB0\u5F55 ".concat(index + 1),
21
+ disabled: index === 3
22
+ };
23
+ });
24
+ return /*#__PURE__*/_jsx("div", {
25
+ style: {
26
+ backgroundColor: 'rgb(240, 242, 245)',
27
+ minHeight: '300px',
28
+ minWidth: '700px',
29
+ display: 'flex',
30
+ alignItems: 'center',
31
+ paddingInline: '50px'
32
+ },
33
+ children: /*#__PURE__*/_jsx(XAiConversations, {
34
+ items: items
35
+ })
36
+ });
37
+ };
38
+ export var 基础用法 = {
39
+ render: BasicUsageStory,
40
+ args: {}
41
+ };
42
+ //# sourceMappingURL=XAiConversations.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","XAiConversations","jsx","_jsx","meta","title","component","parameters","layout","tags","argTypes","BasicUsageStory","args","items","Array","from","length","map","_","index","key","concat","label","disabled","style","backgroundColor","minHeight","minWidth","display","alignItems","paddingInline","children","基础用法","render"],"sources":["../../../../src/components/XAiConversations/XAiConversations.stories.tsx"],"sourcesContent":["import React from 'react';\nimport type { ConversationsProps } from '@ant-design/x';\nimport { type GetProp } from 'antd';\nimport type { Meta, StoryObj } from '@storybook/react-vite';\nimport XAiConversations from '.';\n\nconst meta: Meta<typeof XAiConversations> = {\n title: 'AI组件/XAiConversations 对话记录管理',\n component: XAiConversations,\n parameters: {\n layout: 'centered',\n },\n tags: ['autodocs'],\n argTypes: {\n },\n};\n\nexport default meta;\n type Story = StoryObj<typeof meta>;\n\nconst BasicUsageStory = (args: any) => {\n const items: GetProp<ConversationsProps, 'items'> = Array.from({ length: 4 }).map((_, index) => ({\n key: `item${index + 1}`,\n label: `聊天记录 ${index + 1}`,\n disabled: index === 3,\n }));\n\n return (\n <div style={{\n backgroundColor: 'rgb(240, 242, 245)',\n minHeight: '300px',\n minWidth: '700px',\n display: 'flex',\n alignItems: 'center',\n paddingInline: '50px',\n }}\n >\n <XAiConversations\n items={items}\n />\n </div>\n );\n};\n\nexport const 基础用法: Story = {\n render: BasicUsageStory,\n args: {\n },\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAIzB,OAAOC,gBAAgB,MAAM,GAAG;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEjC,IAAMC,IAAmC,GAAG;EAC1CC,KAAK,EAAE,8BAA8B;EACrCC,SAAS,EAAEL,gBAAgB;EAC3BM,UAAU,EAAE;IACVC,MAAM,EAAE;EACV,CAAC;EACDC,IAAI,EAAE,CAAC,UAAU,CAAC;EAClBC,QAAQ,EAAE,CACV;AACF,CAAC;AAED,eAAeN,IAAI;AAGnB,IAAMO,eAAe,GAAG,SAAlBA,eAAeA,CAAIC,IAAS,EAAK;EACrC,IAAMC,KAA2C,GAAGC,KAAK,CAACC,IAAI,CAAC;IAAEC,MAAM,EAAE;EAAE,CAAC,CAAC,CAACC,GAAG,CAAC,UAACC,CAAC,EAAEC,KAAK;IAAA,OAAM;MAC/FC,GAAG,SAAAC,MAAA,CAASF,KAAK,GAAG,CAAC,CAAE;MACvBG,KAAK,8BAAAD,MAAA,CAAUF,KAAK,GAAG,CAAC,CAAE;MAC1BI,QAAQ,EAAEJ,KAAK,KAAK;IACtB,CAAC;EAAA,CAAC,CAAC;EAEH,oBACEhB,IAAA;IAAKqB,KAAK,EAAE;MACVC,eAAe,EAAE,oBAAoB;MACrCC,SAAS,EAAE,OAAO;MAClBC,QAAQ,EAAE,OAAO;MACjBC,OAAO,EAAE,MAAM;MACfC,UAAU,EAAE,QAAQ;MACpBC,aAAa,EAAE;IACjB,CAAE;IAAAC,QAAA,eAEA5B,IAAA,CAACF,gBAAgB;MACfY,KAAK,EAAEA;IAAM,CACd;EAAC,CACC,CAAC;AAEV,CAAC;AAED,OAAO,IAAMmB,IAAW,GAAG;EACzBC,MAAM,EAAEtB,eAAe;EACvBC,IAAI,EAAE,CACN;AACF,CAAC"}
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { type XAiConversationsProps } from "../../types/XAiConversations";
3
+ declare const XAiConversations: React.FC<XAiConversationsProps>;
4
+ export default XAiConversations;
@@ -0,0 +1,27 @@
1
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
+ import React, { useState } from 'react';
4
+ import { Conversations } from '@ant-design/x';
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ var XAiConversations = function XAiConversations(props) {
7
+ var items = props.items,
8
+ style = props.style;
9
+ var _useState = useState(''),
10
+ _useState2 = _slicedToArray(_useState, 2),
11
+ activeKey = _useState2[0],
12
+ setActiveKey = _useState2[1];
13
+ return /*#__PURE__*/_jsx(Conversations, {
14
+ activeKey: activeKey,
15
+ onActiveChange: function onActiveChange(v) {
16
+ return setActiveKey(v);
17
+ },
18
+ items: items,
19
+ style: _objectSpread({
20
+ width: 256,
21
+ background: '#fff',
22
+ borderRadius: '6px'
23
+ }, style)
24
+ });
25
+ };
26
+ export default XAiConversations;
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useState","Conversations","jsx","_jsx","XAiConversations","props","items","style","_useState","_useState2","_slicedToArray","activeKey","setActiveKey","onActiveChange","v","_objectSpread","width","background","borderRadius"],"sources":["../../../../src/components/XAiConversations/index.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Conversations } from '@ant-design/x';\nimport { type XAiConversationsProps } from '@/types/XAiConversations';\n\nconst XAiConversations: React.FC<XAiConversationsProps> = (props) => {\n const {\n items,\n style,\n } = props;\n\n const [activeKey, setActiveKey] = useState('');\n\n return (\n <Conversations\n activeKey={activeKey}\n onActiveChange={(v) => setActiveKey(v)}\n items={items}\n style={{\n width: 256,\n background: '#fff',\n borderRadius: '6px',\n ...style,\n }}\n />\n );\n};\n\nexport default XAiConversations;\n"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AACvC,SAASC,aAAa,QAAQ,eAAe;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAG9C,IAAMC,gBAAiD,GAAG,SAApDA,gBAAiDA,CAAIC,KAAK,EAAK;EACnE,IACEC,KAAK,GAEHD,KAAK,CAFPC,KAAK;IACLC,KAAK,GACHF,KAAK,CADPE,KAAK;EAGP,IAAAC,SAAA,GAAkCR,QAAQ,CAAC,EAAE,CAAC;IAAAS,UAAA,GAAAC,cAAA,CAAAF,SAAA;IAAvCG,SAAS,GAAAF,UAAA;IAAEG,YAAY,GAAAH,UAAA;EAE9B,oBACEN,IAAA,CAACF,aAAa;IACZU,SAAS,EAAEA,SAAU;IACrBE,cAAc,EAAE,SAAAA,eAACC,CAAC;MAAA,OAAKF,YAAY,CAACE,CAAC,CAAC;IAAA,CAAC;IACvCR,KAAK,EAAEA,KAAM;IACbC,KAAK,EAAAQ,aAAA;MACHC,KAAK,EAAE,GAAG;MACVC,UAAU,EAAE,MAAM;MAClBC,YAAY,EAAE;IAAK,GAChBX,KAAK;EACR,CACH,CAAC;AAEN,CAAC;AAED,eAAeH,gBAAgB"}
@@ -3,5 +3,5 @@ import XAiProvider from './index';
3
3
  declare const meta: Meta<typeof XAiProvider>;
4
4
  export default meta;
5
5
  type Story = StoryObj<typeof meta>;
6
- export declare const WithProvider: Story;
7
- export declare const MultipleProviders: Story;
6
+ export declare const 单聊天窗口: Story;
7
+ export declare const 多容器示例: Story;
@@ -42,7 +42,7 @@ var meta = {
42
42
  };
43
43
  export default meta;
44
44
  // 使用 Provider 的 XAiChatbot
45
- export var WithProvider = {
45
+ export var 单聊天窗口 = {
46
46
  render: function render(args) {
47
47
  return /*#__PURE__*/_jsx("div", {
48
48
  style: {
@@ -55,7 +55,7 @@ export var WithProvider = {
55
55
  navbar: {
56
56
  title: 'Provider 聊天机器人',
57
57
  subtitle: '由 Provider 管理消息',
58
- avatar: 'https://via.placeholder.com/40'
58
+ avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg'
59
59
  }
60
60
  })
61
61
  }))
@@ -63,9 +63,9 @@ export var WithProvider = {
63
63
  },
64
64
  args: {
65
65
  url: 'http://ai-platform.xline-dev.test.xinke.biz',
66
- token: 'eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiJjYWIxYjM3Ni03MmZjLTRkNWEtOTIzMC01N2U3NmZiMGI4NmQiLCJzdWIiOiJSZXgiLCJpc3MiOiJodHRwOi8vY2hhdC10ZXN0LnpheGxpbmUuY29tIiwiYXVkIjoiTWFpblN0YXRpb24iLCJpYXQiOjE3NTQzMTc1OTAsImV4cCI6MTc1NDkyMjM5MCwidHlwZSI6InJlZnJlc2giLCJjbGllbnRfaWQiOiJBcHAxOTUwMDIwNTk0NDUyNjYwMjI0Iiwic2NvcGUiOiJhbGwiLCJwbGF0Zm9ybV90eXBlIjoiTWFpblN0YXRpb24ifQ.crZFQRycuHHA1iIIFJ5ak9kS1-04Eqro-QWWG8HZj6Dz7DkLWYuQBPCrUlCtavGu0XW5tqHZ5WW4tdST06FvEA',
66
+ token: 'eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiJkZGUzOTcwOS0wMDdlLTQ5YWItYjIzMy1iMTZmYzRkMDU2N2QiLCJzdWIiOiJSZXgiLCJpc3MiOiJodHRwOi8vY2hhdC10ZXN0LnpheGxpbmUuY29tIiwiYXVkIjoiTWFpblN0YXRpb24iLCJpYXQiOjE3NTQ1Njc4NTMsImV4cCI6MTc1NDU3NTA1MywidHlwZSI6ImFjY2VzcyIsImNsaWVudF9pZCI6IkFwcDE5NTAwMjA1OTQ0NTI2NjAyMjQiLCJzY29wZSI6ImFsbCIsInBsYXRmb3JtX3R5cGUiOiJNYWluU3RhdGlvbiJ9.jH9muK_MWcE9NtWxPJRqeoeGsnRf79B2oOpQjemJ6kY5_UjAT06BWlX3bszHeRbJbk1OM_kfCeugiO3Gokpj2A',
67
67
  config: {
68
- appNo: 'App1952213101022154752',
68
+ appNo: 'App1950020594452660224',
69
69
  pt: 'MainStation',
70
70
  tc: 'ZABX'
71
71
  },
@@ -73,8 +73,39 @@ export var WithProvider = {
73
73
  }
74
74
  };
75
75
 
76
+ // export const 带历史记录聊天窗口: Story = {
77
+ // render: (args) => {
78
+ // function WithStyles(props: any) {
79
+ // const styles = useStyles();
80
+ // return (
81
+ // <XAiProvider {...props}>
82
+ // <div className={styles.wrapper}>
83
+ // <div>
84
+ // <XAiConversations />
85
+ // </div>
86
+ // <div>
87
+ // <XAiChatbot />
88
+ // </div>
89
+ // </div>
90
+ // </XAiProvider>
91
+ // );
92
+ // }
93
+ // return <WithStyles {...args} />;
94
+ // },
95
+ // args: {
96
+ // url: 'http://ai-platform.xline-dev.test.xinke.biz',
97
+ // token: 'eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiJjYWIxYjM3Ni03MmZjLTRkNWEtOTIzMC01N2U3NmZiMGI4NmQiLCJzdWIiOiJSZXgiLCJpc3MiOiJodHRwOi8vY2hhdC10ZXN0LnpheGxpbmUuY29tIiwiYXVkIjoiTWFpblN0YXRpb24iLCJpYXQiOjE3NTQzMTc1OTAsImV4cCI6MTc1NDkyMjM5MCwidHlwZSI6InJlZnJlc2giLCJjbGllbnRfaWQiOiJBcHAxOTUwMDIwNTk0NDUyNjYwMjI0Iiwic2NvcGUiOiJhbGwiLCJwbGF0Zm9ybV90eXBlIjoiTWFpblN0YXRpb24ifQ.crZFQRycuHHA1iIIFJ5ak9kS1-04Eqro-QWWG8HZj6Dz7DkLWYuQBPCrUlCtavGu0XW5tqHZ5WW4tdST06FvEA',
98
+ // config: {
99
+ // appNo: 'App1952213101022154752',
100
+ // pt: 'MainStation',
101
+ // tc: 'ZABX',
102
+ // },
103
+ // providerId: 'demo-provider',
104
+ // },
105
+ // };
106
+
76
107
  // 多个 Provider 示例
77
- export var MultipleProviders = {
108
+ export var 多容器示例 = {
78
109
  render: function render(args) {
79
110
  return /*#__PURE__*/_jsxs("div", {
80
111
  style: {
@@ -93,7 +124,7 @@ export var MultipleProviders = {
93
124
  navbar: {
94
125
  title: 'Provider 1',
95
126
  subtitle: '第一个聊天机器人',
96
- avatar: 'https://via.placeholder.com/40'
127
+ avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg'
97
128
  }
98
129
  })
99
130
  }))
@@ -109,7 +140,7 @@ export var MultipleProviders = {
109
140
  navbar: {
110
141
  title: 'Provider 2',
111
142
  subtitle: '第二个聊天机器人',
112
- avatar: 'https://via.placeholder.com/40'
143
+ avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg'
113
144
  }
114
145
  })
115
146
  }))
@@ -121,177 +152,4 @@ export var MultipleProviders = {
121
152
  token: 'your-token-here'
122
153
  }
123
154
  };
124
-
125
- // // 自定义消息处理示例
126
- // export const CustomMessageHandling: Story = {
127
- // render: (args) => (
128
- // <div style={{ width: '400px', height: '600px' }}>
129
- // <XAiProvider {...args}>
130
- // <XAiChatbot
131
- // navbarShow
132
- // navbar={{
133
- // title: '自定义处理',
134
- // subtitle: '自定义消息处理逻辑',
135
- // avatar: 'https://via.placeholder.com/40',
136
- // }}
137
- // messageActions={[
138
- // {
139
- // key: 'custom',
140
- // icon: <span>🔧</span>,
141
- // tooltip: '自定义操作',
142
- // },
143
- // ]}
144
- // onMessagesActionsCallback={(index, data) => {
145
- // console.log('自定义操作:', index, data);
146
- // }}
147
- // />
148
- // </XAiProvider>
149
- // </div>
150
- // ),
151
- // args: {
152
- // url: 'https://api.example.com/ai',
153
- // token: 'your-token-here',
154
- // providerId: 'custom-provider',
155
- // },
156
- // };
157
-
158
- // // 示例 1: 使用通用 Hook 的组件
159
- // const GenericComponent = React.memo<{ title: string }>(({ title }) => {
160
- // const { isInProvider, getProviderValue } = useProviderContext({
161
- // props: { title },
162
- // });
163
-
164
- // const providerMethods = useProviderMethods();
165
-
166
- // const handleCustomAction = () => {
167
- // if (isInProvider) {
168
- // providerMethods.sendMessage?.('自定义消息');
169
- // } else {
170
- // console.log('独立组件动作');
171
- // }
172
- // };
173
-
174
- // return (
175
- // <div style={{ padding: '20px', border: '1px solid #ccc', marginBottom: '10px' }}>
176
- // <h3>{title}</h3>
177
- // <p>是否在 Provider 中: {isInProvider ? '是' : '否'}</p>
178
- // <p>消息数量: {getProviderValue('messages')?.length || 0}</p>
179
- // <button onClick={handleCustomAction}>
180
- // {isInProvider ? '使用 Provider 方法' : '使用原有回调'}
181
- // </button>
182
- // </div>
183
- // );
184
- // });
185
-
186
- // // 示例 2: 自定义聊天组件
187
- // const CustomChatComponent = React.memo(() => {
188
- // const { isInProvider, getProviderValue } = useProviderContext({
189
- // props: {},
190
- // });
191
-
192
- // const providerMethods = useProviderMethods();
193
-
194
- // const messageCount = getProviderValue('messages')?.length || 0;
195
- // const theme = messageCount > 5 ? 'dark' : 'light';
196
-
197
- // return (
198
- // <div style={{
199
- // padding: '20px',
200
- // backgroundColor: theme === 'dark' ? '#333' : '#fff',
201
- // color: theme === 'dark' ? '#fff' : '#333',
202
- // border: '1px solid #ccc',
203
- // marginBottom: '10px',
204
- // }}
205
- // >
206
- // <h3>自定义聊天组件</h3>
207
- // <p>主题: {theme}</p>
208
- // <p>是否在 Provider 中: {isInProvider ? '是' : '否'}</p>
209
- // <button
210
- // onClick={() => providerMethods.sendMessage?.('Hello from custom component')}
211
- // disabled={!isInProvider}
212
- // >
213
- // 发送消息
214
- // </button>
215
- // </div>
216
- // );
217
- // });
218
-
219
- // // 展示 Hook 灵活性的示例
220
- // export const HookFlexibilityExample: Story = {
221
- // render: (args) => (
222
- // <div style={{ width: '600px', height: '800px' }}>
223
- // <XAiProvider {...args}>
224
- // <div style={{ padding: '20px' }}>
225
- // <h3>Hook 灵活性示例</h3>
226
- // <p>展示不同组件如何使用相同的 Hook</p>
227
-
228
- // {/* 不同的组件使用相同的 Hook */}
229
- // <div style={{ marginBottom: '20px' }}>
230
- // <GenericComponent title="组件 A" />
231
- // <GenericComponent title="组件 B" />
232
- // <CustomChatComponent />
233
- // </div>
234
-
235
- // {/* 聊天机器人 */}
236
- // <XAiChatbot
237
- // navbarShow
238
- // navbar={{
239
- // title: '灵活 Hook 示例',
240
- // subtitle: '所有组件共享 Provider 状态',
241
- // avatar: 'https://via.placeholder.com/40',
242
- // }}
243
- // />
244
- // </div>
245
- // </XAiProvider>
246
- // </div>
247
- // ),
248
- // args: {
249
- // url: 'https://api.example.com/ai',
250
- // token: 'your-token-here',
251
- // providerId: 'flexibility-example',
252
- // },
253
- // parameters: {
254
- // docs: {
255
- // description: {
256
- // story: '展示如何使用 useProviderContext 和 useProviderMethods Hook 来创建可复用的组件。',
257
- // },
258
- // },
259
- // },
260
- // };
261
-
262
- // // 展示独立组件 vs Provider 组件的对比
263
- // export const ComponentComparison: Story = {
264
- // render: (args) => (
265
- // <div style={{ display: 'flex', gap: '20px', padding: '20px' }}>
266
- // {/* 独立使用的组件 */}
267
- // <div style={{ width: '300px' }}>
268
- // <h4>独立组件</h4>
269
- // <GenericComponent title="独立组件" />
270
- // <CustomChatComponent />
271
- // </div>
272
-
273
- // {/* 在 Provider 中的组件 */}
274
- // <div style={{ width: '300px' }}>
275
- // <h4>Provider 中的组件</h4>
276
- // <XAiProvider {...args}>
277
- // <GenericComponent title="Provider 组件" />
278
- // <CustomChatComponent />
279
- // <XAiChatbot
280
- // navbarShow
281
- // navbar={{
282
- // title: '示例聊天机器人',
283
- // subtitle: '在 Provider 中',
284
- // avatar: 'https://via.placeholder.com/40',
285
- // }}
286
- // />
287
- // </XAiProvider>
288
- // </div>
289
- // </div>
290
- // ),
291
- // args: {
292
- // url: 'https://api.example.com/ai',
293
- // token: 'your-token-here',
294
- // providerId: 'comparison-example',
295
- // },
296
- // };
297
155
  //# sourceMappingURL=XAiProvider.stories.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","XAiProvider","XAiChatbot","jsx","_jsx","jsxs","_jsxs","meta","title","component","parameters","layout","docs","description","tags","argTypes","url","control","token","providerId","decorators","Story","style","padding","children","WithProvider","render","args","width","height","_objectSpread","navbarShow","navbar","subtitle","avatar","config","appNo","pt","tc","MultipleProviders","display","gap"],"sources":["../../../../src/components/XAiProvider/XAiProvider.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from '@storybook/react-vite';\nimport React from 'react';\nimport XAiProvider from './index';\nimport XAiChatbot from '../XAiChatbot';\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 url: {\n control: 'text',\n description: 'AI 服务地址',\n },\n token: {\n control: 'text',\n description: '认证 token',\n },\n providerId: {\n control: 'text',\n description: 'Provider 唯一标识',\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 WithProvider: Story = {\n render: (args) => (\n <div style={{ width: '400px', height: '600px' }}>\n <XAiProvider {...args}>\n <XAiChatbot\n navbarShow\n navbar={{\n title: 'Provider 聊天机器人',\n subtitle: '由 Provider 管理消息',\n avatar: 'https://via.placeholder.com/40',\n }}\n />\n </XAiProvider>\n </div>\n ),\n args: {\n url: 'http://ai-platform.xline-dev.test.xinke.biz',\n token: 'eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiJjYWIxYjM3Ni03MmZjLTRkNWEtOTIzMC01N2U3NmZiMGI4NmQiLCJzdWIiOiJSZXgiLCJpc3MiOiJodHRwOi8vY2hhdC10ZXN0LnpheGxpbmUuY29tIiwiYXVkIjoiTWFpblN0YXRpb24iLCJpYXQiOjE3NTQzMTc1OTAsImV4cCI6MTc1NDkyMjM5MCwidHlwZSI6InJlZnJlc2giLCJjbGllbnRfaWQiOiJBcHAxOTUwMDIwNTk0NDUyNjYwMjI0Iiwic2NvcGUiOiJhbGwiLCJwbGF0Zm9ybV90eXBlIjoiTWFpblN0YXRpb24ifQ.crZFQRycuHHA1iIIFJ5ak9kS1-04Eqro-QWWG8HZj6Dz7DkLWYuQBPCrUlCtavGu0XW5tqHZ5WW4tdST06FvEA',\n config: {\n appNo: 'App1952213101022154752',\n pt: 'MainStation',\n tc: 'ZABX',\n },\n providerId: 'demo-provider',\n },\n};\n\n// 多个 Provider 示例\nexport const MultipleProviders: 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://via.placeholder.com/40',\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://via.placeholder.com/40',\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// // 自定义消息处理示例\n// export const CustomMessageHandling: Story = {\n// render: (args) => (\n// <div style={{ width: '400px', height: '600px' }}>\n// <XAiProvider {...args}>\n// <XAiChatbot\n// navbarShow\n// navbar={{\n// title: '自定义处理',\n// subtitle: '自定义消息处理逻辑',\n// avatar: 'https://via.placeholder.com/40',\n// }}\n// messageActions={[\n// {\n// key: 'custom',\n// icon: <span>🔧</span>,\n// tooltip: '自定义操作',\n// },\n// ]}\n// onMessagesActionsCallback={(index, data) => {\n// console.log('自定义操作:', index, data);\n// }}\n// />\n// </XAiProvider>\n// </div>\n// ),\n// args: {\n// url: 'https://api.example.com/ai',\n// token: 'your-token-here',\n// providerId: 'custom-provider',\n// },\n// };\n\n// // 示例 1: 使用通用 Hook 的组件\n// const GenericComponent = React.memo<{ title: string }>(({ title }) => {\n// const { isInProvider, getProviderValue } = useProviderContext({\n// props: { title },\n// });\n\n// const providerMethods = useProviderMethods();\n\n// const handleCustomAction = () => {\n// if (isInProvider) {\n// providerMethods.sendMessage?.('自定义消息');\n// } else {\n// console.log('独立组件动作');\n// }\n// };\n\n// return (\n// <div style={{ padding: '20px', border: '1px solid #ccc', marginBottom: '10px' }}>\n// <h3>{title}</h3>\n// <p>是否在 Provider 中: {isInProvider ? '是' : '否'}</p>\n// <p>消息数量: {getProviderValue('messages')?.length || 0}</p>\n// <button onClick={handleCustomAction}>\n// {isInProvider ? '使用 Provider 方法' : '使用原有回调'}\n// </button>\n// </div>\n// );\n// });\n\n// // 示例 2: 自定义聊天组件\n// const CustomChatComponent = React.memo(() => {\n// const { isInProvider, getProviderValue } = useProviderContext({\n// props: {},\n// });\n\n// const providerMethods = useProviderMethods();\n\n// const messageCount = getProviderValue('messages')?.length || 0;\n// const theme = messageCount > 5 ? 'dark' : 'light';\n\n// return (\n// <div style={{\n// padding: '20px',\n// backgroundColor: theme === 'dark' ? '#333' : '#fff',\n// color: theme === 'dark' ? '#fff' : '#333',\n// border: '1px solid #ccc',\n// marginBottom: '10px',\n// }}\n// >\n// <h3>自定义聊天组件</h3>\n// <p>主题: {theme}</p>\n// <p>是否在 Provider 中: {isInProvider ? '是' : '否'}</p>\n// <button\n// onClick={() => providerMethods.sendMessage?.('Hello from custom component')}\n// disabled={!isInProvider}\n// >\n// 发送消息\n// </button>\n// </div>\n// );\n// });\n\n// // 展示 Hook 灵活性的示例\n// export const HookFlexibilityExample: Story = {\n// render: (args) => (\n// <div style={{ width: '600px', height: '800px' }}>\n// <XAiProvider {...args}>\n// <div style={{ padding: '20px' }}>\n// <h3>Hook 灵活性示例</h3>\n// <p>展示不同组件如何使用相同的 Hook</p>\n\n// {/* 不同的组件使用相同的 Hook */}\n// <div style={{ marginBottom: '20px' }}>\n// <GenericComponent title=\"组件 A\" />\n// <GenericComponent title=\"组件 B\" />\n// <CustomChatComponent />\n// </div>\n\n// {/* 聊天机器人 */}\n// <XAiChatbot\n// navbarShow\n// navbar={{\n// title: '灵活 Hook 示例',\n// subtitle: '所有组件共享 Provider 状态',\n// avatar: 'https://via.placeholder.com/40',\n// }}\n// />\n// </div>\n// </XAiProvider>\n// </div>\n// ),\n// args: {\n// url: 'https://api.example.com/ai',\n// token: 'your-token-here',\n// providerId: 'flexibility-example',\n// },\n// parameters: {\n// docs: {\n// description: {\n// story: '展示如何使用 useProviderContext 和 useProviderMethods Hook 来创建可复用的组件。',\n// },\n// },\n// },\n// };\n\n// // 展示独立组件 vs Provider 组件的对比\n// export const ComponentComparison: Story = {\n// render: (args) => (\n// <div style={{ display: 'flex', gap: '20px', padding: '20px' }}>\n// {/* 独立使用的组件 */}\n// <div style={{ width: '300px' }}>\n// <h4>独立组件</h4>\n// <GenericComponent title=\"独立组件\" />\n// <CustomChatComponent />\n// </div>\n\n// {/* 在 Provider 中的组件 */}\n// <div style={{ width: '300px' }}>\n// <h4>Provider 中的组件</h4>\n// <XAiProvider {...args}>\n// <GenericComponent title=\"Provider 组件\" />\n// <CustomChatComponent />\n// <XAiChatbot\n// navbarShow\n// navbar={{\n// title: '示例聊天机器人',\n// subtitle: '在 Provider 中',\n// avatar: 'https://via.placeholder.com/40',\n// }}\n// />\n// </XAiProvider>\n// </div>\n// </div>\n// ),\n// args: {\n// url: 'https://api.example.com/ai',\n// token: 'your-token-here',\n// providerId: 'comparison-example',\n// },\n// };\n"],"mappings":"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ACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
1
+ {"version":3,"names":["React","XAiProvider","XAiChatbot","jsx","_jsx","jsxs","_jsxs","meta","title","component","parameters","layout","docs","description","tags","argTypes","url","control","token","providerId","decorators","Story","style","padding","children","单聊天窗口","render","args","width","height","_objectSpread","navbarShow","navbar","subtitle","avatar","config","appNo","pt","tc","多容器示例","display","gap"],"sources":["../../../../src/components/XAiProvider/XAiProvider.stories.tsx"],"sourcesContent":["import React from 'react';\nimport type { Meta, StoryObj } from '@storybook/react-vite';\nimport XAiProvider from './index';\nimport XAiChatbot from '../XAiChatbot';\nimport XAiConversations from '../XAiConversations';\nimport useStyles from './demo.styles';\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 url: {\n control: 'text',\n description: 'AI 服务地址',\n },\n token: {\n control: 'text',\n description: '认证 token',\n },\n providerId: {\n control: 'text',\n description: 'Provider 唯一标识',\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 <div style={{ width: '400px', height: '600px' }}>\n <XAiProvider {...args}>\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 ),\n args: {\n url: 'http://ai-platform.xline-dev.test.xinke.biz',\n token: 'eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiJkZGUzOTcwOS0wMDdlLTQ5YWItYjIzMy1iMTZmYzRkMDU2N2QiLCJzdWIiOiJSZXgiLCJpc3MiOiJodHRwOi8vY2hhdC10ZXN0LnpheGxpbmUuY29tIiwiYXVkIjoiTWFpblN0YXRpb24iLCJpYXQiOjE3NTQ1Njc4NTMsImV4cCI6MTc1NDU3NTA1MywidHlwZSI6ImFjY2VzcyIsImNsaWVudF9pZCI6IkFwcDE5NTAwMjA1OTQ0NTI2NjAyMjQiLCJzY29wZSI6ImFsbCIsInBsYXRmb3JtX3R5cGUiOiJNYWluU3RhdGlvbiJ9.jH9muK_MWcE9NtWxPJRqeoeGsnRf79B2oOpQjemJ6kY5_UjAT06BWlX3bszHeRbJbk1OM_kfCeugiO3Gokpj2A',\n config: {\n appNo: 'App1950020594452660224',\n pt: 'MainStation',\n tc: 'ZABX',\n },\n providerId: 'demo-provider',\n },\n};\n\n// export const 带历史记录聊天窗口: Story = {\n// render: (args) => {\n// function WithStyles(props: any) {\n// const styles = useStyles();\n// return (\n// <XAiProvider {...props}>\n// <div className={styles.wrapper}>\n// <div>\n// <XAiConversations />\n// </div>\n// <div>\n// <XAiChatbot />\n// </div>\n// </div>\n// </XAiProvider>\n// );\n// }\n// return <WithStyles {...args} />;\n// },\n// args: {\n// url: 'http://ai-platform.xline-dev.test.xinke.biz',\n// token: 'eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiJjYWIxYjM3Ni03MmZjLTRkNWEtOTIzMC01N2U3NmZiMGI4NmQiLCJzdWIiOiJSZXgiLCJpc3MiOiJodHRwOi8vY2hhdC10ZXN0LnpheGxpbmUuY29tIiwiYXVkIjoiTWFpblN0YXRpb24iLCJpYXQiOjE3NTQzMTc1OTAsImV4cCI6MTc1NDkyMjM5MCwidHlwZSI6InJlZnJlc2giLCJjbGllbnRfaWQiOiJBcHAxOTUwMDIwNTk0NDUyNjYwMjI0Iiwic2NvcGUiOiJhbGwiLCJwbGF0Zm9ybV90eXBlIjoiTWFpblN0YXRpb24ifQ.crZFQRycuHHA1iIIFJ5ak9kS1-04Eqro-QWWG8HZj6Dz7DkLWYuQBPCrUlCtavGu0XW5tqHZ5WW4tdST06FvEA',\n// config: {\n// appNo: 'App1952213101022154752',\n// pt: 'MainStation',\n// tc: 'ZABX',\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"],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ declare const useStyles: () => {
2
+ wrapper: string;
3
+ } & {
4
+ w: (width: string | number) => string;
5
+ h: (height: string | number) => string;
6
+ p: (padding: string) => string;
7
+ pb: (padding: string | number) => string;
8
+ pt: (padding: string | number) => string;
9
+ pl: (padding: string | number) => string;
10
+ pr: (padding: string | number) => string;
11
+ m: (margin: string) => string;
12
+ mb: (margin: string | number) => string;
13
+ mt: (margin: string | number) => string;
14
+ ml: (margin: string | number) => string;
15
+ mr: (margin: string | number) => string;
16
+ text: (size: string | number) => string;
17
+ weight: (size: number) => string;
18
+ textColor: (c: string) => string;
19
+ bg: (c: string) => string;
20
+ rs: (radius: string | number) => string;
21
+ gap: (g: string | number) => string;
22
+ flex: string;
23
+ flexCenter: string;
24
+ flexBetween: string;
25
+ flexColumn: string;
26
+ flex1: string;
27
+ cursor: (type: string) => string;
28
+ border: (color: string, width?: string) => string;
29
+ boxShadow: (shadow: string) => string;
30
+ transition: (property?: string, duration?: string) => string;
31
+ overflow: (type: string) => string;
32
+ position: (type: string) => string;
33
+ zIndex: (index: number) => string;
34
+ };
35
+ export default useStyles;
@@ -0,0 +1,12 @@
1
+ import _taggedTemplateLiteral from "@babel/runtime/helpers/esm/taggedTemplateLiteral";
2
+ var _templateObject;
3
+ import { css } from '@emotion/css';
4
+ import { withBasicStyles } from "../../styles/common";
5
+ var useStyles = withBasicStyles(function () {
6
+ return {
7
+ // 静态样式
8
+ wrapper: css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n width: '100vw';\n height: '100vh';\n backgroundColor: rgb(240, 242, 245);\n display: flex;\n "])))
9
+ };
10
+ });
11
+ export default useStyles;
12
+ //# sourceMappingURL=demo.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["css","withBasicStyles","useStyles","wrapper","_templateObject","_taggedTemplateLiteral"],"sources":["../../../../src/components/XAiProvider/demo.styles.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { withBasicStyles } from '@/styles/common';\n\nconst useStyles = withBasicStyles(() => ({\n // 静态样式\n wrapper: css`\n width: '100vw';\n height: '100vh';\n backgroundColor: rgb(240, 242, 245);\n display: flex;\n `,\n}));\n\nexport default useStyles;\n"],"mappings":";;AAAA,SAASA,GAAG,QAAQ,cAAc;AAClC,SAASC,eAAe;AAExB,IAAMC,SAAS,GAAGD,eAAe,CAAC;EAAA,OAAO;IACvC;IACAE,OAAO,EAAEH,GAAG,CAAAI,eAAA,KAAAA,eAAA,GAAAC,sBAAA;EAMd,CAAC;AAAA,CAAC,CAAC;AAEH,eAAeH,SAAS"}
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import { message, Divider } from 'antd';
3
+ import { v4 as uuidV4 } from 'uuid';
3
4
  import copy from 'copy-to-clipboard';
4
5
  import { XProvider } from '@ant-design/x';
5
6
  import { XAiContext } from "../../context/AiProviderContext";
@@ -13,12 +14,16 @@ var XAiProvider = function XAiProvider(_ref) {
13
14
  config = _ref.config,
14
15
  _ref$providerId = _ref.providerId,
15
16
  providerId = _ref$providerId === void 0 ? 'defaultId' : _ref$providerId,
17
+ onSuccess = _ref.onSuccess,
18
+ onError = _ref.onError,
16
19
  children = _ref.children;
17
20
  // 使用 useAgentGenerator Hook 管理消息状态
18
21
  var _useAgentGenerator = useAgentGenerator({
19
22
  url: url,
20
23
  token: token,
21
- config: config
24
+ config: config,
25
+ onError: onError,
26
+ onSuccess: onSuccess
22
27
  }),
23
28
  appInfo = _useAgentGenerator.appInfo,
24
29
  chat = _useAgentGenerator.chat,
@@ -26,6 +31,7 @@ var XAiProvider = function XAiProvider(_ref) {
26
31
  reChat = _useAgentGenerator.reChat,
27
32
  messages = _useAgentGenerator.messages,
28
33
  loading = _useAgentGenerator.loading,
34
+ setCurrentSession = _useAgentGenerator.setCurrentSession,
29
35
  setMessages = _useAgentGenerator.setMessages;
30
36
  var _ref2 = appInfo || {},
31
37
  appName = _ref2.appName,
@@ -40,6 +46,7 @@ var XAiProvider = function XAiProvider(_ref) {
40
46
  var handleClearMessage = function handleClearMessage() {
41
47
  stopChat();
42
48
  setMessages([]);
49
+ setCurrentSession(uuidV4());
43
50
  };
44
51
 
45
52
  // 工具栏按钮点击
@@ -106,10 +113,17 @@ var XAiProvider = function XAiProvider(_ref) {
106
113
  return /*#__PURE__*/_jsx(XProvider, {
107
114
  children: /*#__PURE__*/_jsx(XAiContext.Provider, {
108
115
  value: {
109
- avatar: icon,
110
- userAvatar: userIcon,
116
+ avatar: /*#__PURE__*/_jsx("img", {
117
+ src: icon,
118
+ alt: "\u667A\u80FD\u4F53\u5934\u50CF"
119
+ }),
120
+ userAvatar: /*#__PURE__*/_jsx("img", {
121
+ src: userIcon,
122
+ alt: "\u7528\u6237\u5934\u50CF"
123
+ }),
111
124
  emptyStateImage: icon,
112
125
  emptyStateText: appName,
126
+ footerTips: '内容由AI生成,无法确保真实准确,仅供参考',
113
127
  providerId: providerId,
114
128
  token: token,
115
129
  messages: messages,