@ai-group/chat-sdk 2.0.2 → 2.0.3
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.
- package/dist/cjs/components/XAiChatbot/XAiChatbot.stories.js +44 -4
- package/dist/cjs/components/XAiChatbot/XAiChatbot.stories.js.map +2 -2
- package/dist/cjs/components/XAiChatbot/index.js +15 -9
- package/dist/cjs/components/XAiChatbot/index.js.map +2 -2
- package/dist/cjs/components/XAiProvider/XAiProvider.stories.js +1 -1
- package/dist/cjs/components/XAiProvider/XAiProvider.stories.js.map +2 -2
- package/dist/cjs/components/XAiProvider/index.js +1 -1
- package/dist/cjs/components/XAiProvider/index.js.map +2 -2
- package/dist/cjs/components/XAiSender/XAiSender.stories.js +3 -2
- package/dist/cjs/components/XAiSender/XAiSender.stories.js.map +2 -2
- package/dist/cjs/components/XAiSender/index.js +13 -3
- package/dist/cjs/components/XAiSender/index.js.map +2 -2
- package/dist/cjs/hooks/useAgentGenerator.d.ts +3 -3
- package/dist/cjs/hooks/useAgentGenerator.js +5 -5
- package/dist/cjs/hooks/useAgentGenerator.js.map +2 -2
- package/dist/cjs/hooks/useProviderContext.d.ts +2 -1
- package/dist/cjs/hooks/useProviderContext.js.map +2 -2
- package/dist/cjs/types/XAiChatbot.d.ts +8 -6
- package/dist/cjs/types/XAiChatbot.js.map +1 -1
- package/dist/cjs/types/XAiConversations.d.ts +2 -2
- package/dist/cjs/types/XAiConversations.js.map +1 -1
- package/dist/cjs/types/XAiMessage.d.ts +2 -1
- package/dist/cjs/types/XAiMessage.js.map +2 -2
- package/dist/cjs/types/XAiProvider.d.ts +3 -3
- package/dist/cjs/types/XAiProvider.js.map +2 -2
- package/dist/cjs/types/XAiSender.d.ts +5 -1
- package/dist/cjs/types/XAiSender.js.map +1 -1
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/utils/umdEntry.d.ts +3 -2
- package/dist/cjs/utils/umdEntry.js +2 -2
- package/dist/cjs/utils/umdEntry.js.map +2 -2
- package/dist/esm/components/XAiChatbot/XAiChatbot.stories.js +60 -6
- package/dist/esm/components/XAiChatbot/XAiChatbot.stories.js.map +1 -1
- package/dist/esm/components/XAiChatbot/index.js +76 -64
- package/dist/esm/components/XAiChatbot/index.js.map +1 -1
- package/dist/esm/components/XAiProvider/XAiProvider.stories.js +3 -1
- package/dist/esm/components/XAiProvider/XAiProvider.stories.js.map +1 -1
- package/dist/esm/components/XAiProvider/index.js +1 -1
- package/dist/esm/components/XAiProvider/index.js.map +1 -1
- package/dist/esm/components/XAiSender/XAiSender.stories.js +3 -2
- package/dist/esm/components/XAiSender/XAiSender.stories.js.map +1 -1
- package/dist/esm/components/XAiSender/index.js +16 -4
- package/dist/esm/components/XAiSender/index.js.map +1 -1
- package/dist/esm/hooks/useAgentGenerator.d.ts +3 -3
- package/dist/esm/hooks/useAgentGenerator.js +7 -8
- package/dist/esm/hooks/useAgentGenerator.js.map +1 -1
- package/dist/esm/hooks/useProviderContext.d.ts +2 -1
- package/dist/esm/hooks/useProviderContext.js.map +1 -1
- package/dist/esm/types/XAiChatbot.d.ts +8 -6
- package/dist/esm/types/XAiChatbot.js.map +1 -1
- package/dist/esm/types/XAiConversations.d.ts +2 -2
- package/dist/esm/types/XAiConversations.js.map +1 -1
- package/dist/esm/types/XAiMessage.d.ts +2 -1
- package/dist/esm/types/XAiMessage.js.map +1 -1
- package/dist/esm/types/XAiProvider.d.ts +3 -3
- package/dist/esm/types/XAiProvider.js.map +1 -1
- package/dist/esm/types/XAiSender.d.ts +5 -1
- package/dist/esm/types/XAiSender.js.map +1 -1
- package/dist/esm/types/index.js.map +1 -1
- package/dist/esm/utils/umdEntry.d.ts +3 -2
- package/dist/esm/utils/umdEntry.js +2 -2
- package/dist/esm/utils/umdEntry.js.map +1 -1
- package/dist/umd/chat-sdk.min.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useState","Divider","MessageRole","MessageStatus","documentIcon","XAiProvider","XAiChatbot","useProviderContext","useProviderMethods","jsxs","_jsxs","jsx","_jsx","meta","title","component","parameters","layout","tags","argTypes","navbar","description","messages","mockMessages","id","type","createdAt","Date","status","done","role","assistant","content","text","user","parentMessageId","thinks","extra","noFooter","suggestion","key","BasicUsageStory","args","_useState","_useState2","_slicedToArray","setMessages","_useState3","_useState4","loading","setLoading","handleSendMessage","stream","forEach","chunk","idx","setTimeout","prev","updated","_toConsumableArray","targetIndex","targetMsg","_objectSpread","Math","random","toString","slice","pending","length","_updated$targetIndex$","execute","push","icon","name","handleClear","handleActions","index","data","console","log","handleSuggestMessageClick","_item","filter","m","ToolTip","_ref","cost","token","style","display","alignItems","fontSize","color","flex","paddingRight","children","height","width","border","borderRadius","inputShow","messageTooltip","onClear","onSuggestMessageClick","onSend","onMessagesActionsCallback","基础用法","render","emptyStateText","在Provider中使用","decorators","Story","url","多个Provider实例","gap","providerId","marginRight","ArchitectureDemoComponent","_ref2","_getProviderValue","_useProviderContext","props","mergeLogic","context","_context$messages","isInProvider","customData","mergedProps","getProviderValue","providerMethods","padding","marginBottom","backgroundColor","margin","onClick","_providerMethods$send","sendMessage","call","disabled","cursor","新架构演示","navbarShow","subtitle","架构对比演示"],"sources":["../../../../src/components/XAiChatbot/XAiChatbot.stories.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport type { Meta, StoryObj } from '@storybook/react-vite';\nimport { Divider } from 'antd';\nimport { MessageRole, MessageStatus } from '@/types/XAiMessage';\nimport type { Messages } from '@/types/XAiMessage';\nimport documentIcon from '@/assets/document.svg';\nimport XAiProvider from '../XAiProvider';\nimport XAiChatbot from '.';\nimport { useProviderContext, useProviderMethods } from '@/hooks/useProviderContext';\n\nconst meta: Meta<typeof XAiChatbot> = {\n title: 'AI组件/XAiChatbot 聊天框',\n component: XAiChatbot,\n parameters: {\n layout: 'centered',\n },\n tags: ['autodocs'],\n argTypes: {\n navbar: {\n description: '导航栏配置',\n },\n messages: {\n description: '消息列表',\n },\n },\n};\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\n// mock 消息数据,严格符合 Messages 类型\nconst mockMessages: Messages[] = [\n {\n id: '1',\n type: 'TextMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.assistant,\n content: {\n text: '你好,有什么我能帮助你的吗?',\n },\n },\n {\n id: '2',\n type: 'TextMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.user,\n content: {\n text: '检索从北京到上海的车票数据给我',\n },\n parentMessageId: '1',\n },\n {\n id: '22',\n type: 'TextMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.assistant,\n content: {\n text: '',\n },\n thinks: '',\n // execute: [\n // // 工具库调用(MCP_TOOL)\n // {\n // type: 'ActionExecutionMessage',\n // createdAt: new Date(),\n // id: 'tool-1',\n // name: '已调用MCP智能工具',\n // arguments: { param1: 'foo' },\n // extra: {\n // action: 'INVOKE_AGENT_TOOL_START',\n // icon: documentIcon,\n // type: 'MCP_TOOL',\n // cost: '3.9',\n // },\n // },\n // // // 工具库调用(PLUGIN_TOOL)\n // {\n // type: 'ActionExecutionMessage',\n // createdAt: new Date(),\n // id: 'tool-2',\n // name: '已调用插件工具',\n // arguments: { param1: 'foo' },\n // extra: {\n // action: 'INVOKE_AGENT_TOOL_START',\n // icon: documentIcon,\n // type: 'MCP_TOOL',\n // cost: '3.9',\n // },\n // },\n // // // 工具库调用(SKILL)\n // // {\n // // action: 'INVOKE_AGENT_TOOL_START',\n // // id: 'tool-3',\n // // toolType: 'SKILL',\n // // agentToolName: '技能工具',\n // // args: { param3: 'baz' },\n\n // // },\n // // // 知识库调用(FAQ)\n // // {\n // // action: 'RECALL_KNOWLEDGE_START',\n // // uniqueId: 'kb-1',\n // // processStatus: 'START',\n // // args: { question: '什么是FAQ?' },\n // // knowledgeType: 'FAQ',\n // // },\n // {\n // type: 'ActionExecutionMessage',\n // createdAt: new Date(),\n // id: 'tool-3',\n // name: '已调用文档知识库',\n // arguments: { param1: 'foo' },\n // extra: {\n // action: 'RECALL_KNOWLEDGE_START',\n // icon: documentIcon,\n // type: 'MCP_TOOL',\n // cost: '3.9',\n // },\n // },\n // // // 知识库调用(DOCUMENT)\n // // {\n // // action: 'RECALL_KNOWLEDGE_START',\n // // uniqueId: 'kb-2',\n // // processStatus: 'START',\n // // args: { question: '文档库介绍' },\n // // knowledgeType: 'DOCUMENT',\n // // },\n // // 运行完毕\n // ],\n extra: {\n noFooter: true,\n },\n },\n {\n id: '4',\n type: 'TextMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.user,\n content: {\n text: '能否生成一段明年的产品计划开发计划文档给我',\n },\n },\n {\n id: '0',\n type: 'TextMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.assistant,\n content: {\n text: `\n# 项目开发计划\n\n本文档概述了 2025 年第三季度的产品开发计划,包括目标、里程碑、团队分工和风险预案。\n\n---\n\n## 🎯 核心目标\n\n- 提升用户留存率至 **45%**\n- 完成 Web 端新版上线\n- 建立 AI 推荐模块 MVP\n- 优化数据库访问性能\n\n---\n\n## 📅 关键时间节点\n\n| 里程碑 | 截止日期 | 负责人 | 代理人 | 截止日期 | 负责人 |\n|------------------|--------------|----------|------------------|--------------|----------|\n| 产品需求冻结 | 2025-08-01 | Alice | 产品需求冻结 | 2025-08-01 | Alice |\n| UI 设计定稿 | 2025-08-10 | Bob | 产品需求冻结 | 2025-08-01 | Alice |\n| 开发完成(内测) | 2025-09-15 | Charlie | 产品需求冻结 | 2025-08-01 | Alice |\n| 正式上线 | 2025-09-30 | Diana | 产品需求冻结 | 2025-08-01 | Alice |\n\n---\n\n## 🛠️ 技术方案简述\n\n我们将使用以下技术栈:\n\n- 前端:React + Vite + Zustand\n- 后端:Node.js + PostgreSQL\n- 数据分析:Python + Pandas\n- 部署环境:Kubernetes on AWS\n\n---\n\n## 💡 示例代码片段\n\n以下是一个用于生成唯一 ID 的函数示例:\n\n~~~ts\nimport { nanoid } from 'nanoid'\n\nexport function generateSessionId() {\n return \\`sess-\\${nanoid()}\\`\n}\n~~~\n`,\n },\n extra: {\n noFooter: true,\n },\n },\n {\n id: '11',\n type: 'SuggestionMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.suggestion,\n content: [\n {\n key: '1',\n description: '我要查看 AI 文档',\n },\n {\n key: '2',\n description: '我如何看待 AI',\n },\n {\n key: '3',\n description: '你是谁?',\n },\n ],\n },\n];\n\n// 基础用法\nconst BasicUsageStory = (args: any) => {\n const [messages, setMessages] = useState<Messages[]>(mockMessages);\n const [loading, setLoading] = useState<boolean>(false);\n\n // 模拟随机字符串流式返回\n const handleSendMessage = () => {\n setLoading(true);\n\n // 模拟流式输出(向 mockMessages 第二条消息 content.text 追加)\n const stream = ['我', '正在', '为', '你', '生成', '内容','我', '正在', '为', '你', '生成', '内容','我', '正在', '为', '你', '生成', '内容','我', '正在', '为', '你', '生成', '内容','我', '正在', '为', '你', '生成', '内容','我', '正在', '为', '你', '生成', '内容','我', '正在', '为', '你', '生成', '内容','我', '正在', '为', '你', '生成', '内容','我', '正在', '为', '你', '生成', '内容','我', '正在', '为', '你', '生成', '内容','我', '正在', '为', '你', '生成', '内容', '好','多', '好','多', '好','多', '好','多', '好','多', '好','多', '好','多', '好','多', '好','多', '好','多', '好','多', '……'];\n\n stream.forEach((chunk, idx) => {\n setTimeout(() => {\n setMessages((prev) => {\n const updated = [...prev];\n const targetIndex = 2; // mockMessages 的第二条(索引 1)\n const targetMsg = updated[targetIndex];\n\n // 确保该消息存在且是 TextMessage\n if (targetMsg && targetMsg.type === 'TextMessage') {\n // content 可能是多种类型,这里做类型守卫\n if ('text' in targetMsg.content) {\n updated[targetIndex] = {\n ...targetMsg,\n content: {\n ...targetMsg.content,\n // 模拟随机字符串流式拼接\n // text: targetMsg.content.text + chunk + Math.random().toString(36).slice(2, 5),\n },\n thinks: targetMsg.thinks + chunk + Math.random().toString(36).slice(2, 5),\n status: MessageStatus.pending,\n };\n }\n }\n\n // 最后一个流块时,标记完成\n if (idx === stream.length - 1) {\n updated[targetIndex].execute?.push(\n {\n id: '5',\n type: 'ActionExecutionMessage',\n extra: {\n icon: documentIcon,\n },\n name: '运行完毕',\n createdAt: new Date(),\n });\n setLoading(false);\n updated[targetIndex] = {\n ...updated[targetIndex],\n status: MessageStatus.done,\n };\n }\n\n return updated;\n });\n }, 200 * (idx + 1)); // 每个片段延迟 600ms 模拟流\n });\n };\n\n useEffect(() => {\n if (messages) {\n handleSendMessage();\n }\n }, []);\n\n // 清空消息\n const handleClear = () => {\n setMessages([]);\n };\n\n // 模拟按钮回调\n const handleActions = (index: number, data: any) => {\n console.log(index, data);\n };\n\n // 模拟快捷短语点击\n const handleSuggestMessageClick = (_item: any, id: string) => {\n setMessages((prev) => prev.filter((m) => m.id !== id));\n };\n\n // tooltip\n const ToolTip = (data: any) => {\n const { cost, token } = data?.extra || {};\n if (!cost && !token) return null;\n return (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n fontSize: '12px',\n color: '#949494',\n flex: 1,\n paddingRight: '40px',\n }}\n >\n {cost && <div>{cost}s</div>}\n {token && <Divider type=\"vertical\" />}\n {token && <div>{token} tokens</div>}\n </div>\n );\n };\n\n return (\n <div\n style={{\n height: '600px',\n width: '400px',\n border: '1px solid #e7e7e7',\n borderRadius: '8px',\n }}\n >\n <XAiChatbot\n {...args}\n inputShow={false}\n messages={messages}\n loading={loading}\n messageTooltip={ToolTip}\n onClear={handleClear}\n onSuggestMessageClick={handleSuggestMessageClick}\n onSend={handleSendMessage}\n onMessagesActionsCallback={handleActions}\n />\n </div>\n );\n};\n\nexport const 基础用法: Story = {\n render: BasicUsageStory,\n args: {\n navbar: {\n title: '智能助手',\n },\n // messages: mockMessages,\n emptyStateText: '众安智能体',\n },\n};\n\n// 在 Provider 中使用\nexport const 在Provider中使用: Story = {\n decorators: [\n (Story) => (\n <XAiProvider token=\"test-token\" url=\"https://api.example.com\">\n <Story />\n </XAiProvider>\n ),\n ],\n args: {\n navbar: {\n title: '智能助手',\n },\n },\n};\n\n// 多个 Provider 实例\nexport const 多个Provider实例: Story = {\n decorators: [\n (Story) => (\n <div style={{ display: 'flex', gap: '50px', height: '600px' }}>\n <XAiProvider providerId=\"chat1\" token=\"token1\" url=\"https://api1.example.com\">\n <div style={{ width: '300px', marginRight: '40px' }}>\n <Story />\n </div>\n </XAiProvider>\n <XAiProvider providerId=\"chat2\" token=\"token2\" url=\"https://api2.example.com\">\n <div style={{ width: '300px' }}>\n <Story />\n </div>\n </XAiProvider>\n </div>\n ),\n ],\n args: {\n navbar: {\n title: '智能助手',\n },\n },\n};\n\n// 展示新架构的示例组件\nconst ArchitectureDemoComponent: React.FC<{ title: string }> = ({ title }) => {\n const { mergedProps, isInProvider, getProviderValue } = useProviderContext({\n props: { title },\n mergeLogic: (props, context) => {\n if (!context?.isInProvider) {\n return props;\n }\n\n return {\n ...props,\n messages: context.messages,\n loading: context.loading,\n customData: context.messages?.length || 0,\n };\n },\n });\n\n const providerMethods = useProviderMethods();\n\n return (\n <div style={{\n padding: '15px',\n border: '1px solid #e7e7e7',\n borderRadius: '8px',\n marginBottom: '10px',\n backgroundColor: '#fafafa',\n }}\n >\n <h4 style={{ margin: '0 0 10px 0' }}>{mergedProps.title}</h4>\n <div style={{ fontSize: '12px', color: '#666' }}>\n <p>Provider 状态: {isInProvider ? '✅ 已连接' : '❌ 未连接'}</p>\n <p>消息数量: {getProviderValue('messages')?.length || 0}</p>\n <p>加载状态: {getProviderValue('loading') ? '🔄 加载中' : '✅ 就绪'}</p>\n <button\n onClick={() => providerMethods.sendMessage?.('来自架构演示组件的消息')}\n disabled={!isInProvider}\n style={{\n fontSize: '12px',\n padding: '4px 8px',\n backgroundColor: isInProvider ? '#1890ff' : '#d9d9d9',\n color: 'white',\n border: 'none',\n borderRadius: '4px',\n cursor: isInProvider ? 'pointer' : 'not-allowed',\n }}\n >\n {isInProvider ? '发送消息' : '需要 Provider'}\n </button>\n </div>\n </div>\n );\n};\n\n// 展示新架构的示例\nexport const 新架构演示: Story = {\n render: (args) => (\n <div style={{ width: '500px', height: '700px' }}>\n <XAiProvider token=\"demo-token\" url=\"https://api.example.com\" providerId=\"architecture-demo\">\n <div style={{ padding: '20px' }}>\n <h3 style={{ marginBottom: '20px' }}>新架构演示</h3>\n <p style={{ marginBottom: '20px', color: '#666' }}>\n 展示如何使用 useProviderContext 和 useProviderMethods Hook\n </p>\n\n {/* 演示组件 */}\n <div style={{ marginBottom: '20px' }}>\n <ArchitectureDemoComponent title=\"演示组件 A\" />\n <ArchitectureDemoComponent title=\"演示组件 B\" />\n <ArchitectureDemoComponent title=\"演示组件 C\" />\n </div>\n\n {/* 聊天机器人 */}\n <XAiChatbot\n {...args}\n navbarShow\n navbar={{\n title: '架构演示聊天机器人',\n subtitle: '展示新 Hook 的使用',\n }}\n />\n </div>\n </XAiProvider>\n </div>\n ),\n args: {\n navbar: {\n title: '智能助手',\n },\n },\n};\n\n// 对比示例:独立使用 vs Provider 模式\nexport const 架构对比演示: Story = {\n render: (args) => (\n <div style={{ display: 'flex', gap: '20px', padding: '20px' }}>\n {/* 独立使用 */}\n <div style={{ width: '300px' }}>\n <h4>独立使用模式</h4>\n <div style={{ border: '1px solid #e7e7e7', borderRadius: '8px', padding: '15px' }}>\n <ArchitectureDemoComponent title=\"独立组件\" />\n <XAiChatbot\n {...args}\n navbarShow\n navbar={{\n title: '独立聊天机器人',\n subtitle: '不依赖 Provider',\n }}\n onSend={(type, content) => {\n console.log('独立模式发送:', type, content);\n }}\n onClear={() => {\n console.log('独立模式清空');\n }}\n />\n </div>\n </div>\n\n {/* Provider 模式 */}\n <div style={{ width: '300px' }}>\n <h4>Provider 模式</h4>\n <XAiProvider token=\"demo-token\" url=\"https://api.example.com\" providerId=\"comparison-demo\">\n <div style={{ border: '1px solid #e7e7e7', borderRadius: '8px', padding: '15px' }}>\n <ArchitectureDemoComponent title=\"Provider 组件\" />\n <XAiChatbot\n {...args}\n navbarShow\n navbar={{\n title: 'Provider 聊天机器人',\n subtitle: '由 Provider 管理',\n }}\n />\n </div>\n </XAiProvider>\n </div>\n </div>\n ),\n args: {\n navbar: {\n title: '智能助手',\n },\n },\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","useEffect","useState","Divider","MessageRole","MessageStatus","documentIcon","XAiProvider","XAiChatbot","useProviderContext","useProviderMethods","jsxs","_jsxs","jsx","_jsx","meta","title","component","parameters","layout","tags","argTypes","navbar","description","messages","mockMessages","id","type","createdAt","Date","status","done","role","assistant","content","text","user","parentMessageId","thinks","extra","noFooter","suggestion","key","BasicUsageStory","args","_useState","_useState2","_slicedToArray","setMessages","_useState3","_useState4","loading","setLoading","handleSendMessage","stream","forEach","chunk","idx","setTimeout","prev","updated","_toConsumableArray","targetIndex","targetMsg","_objectSpread","Math","random","toString","slice","pending","length","_updated$targetIndex$","execute","push","icon","name","handleClear","handleActions","index","data","console","log","handleSuggestMessageClick","_item","filter","m","ToolTip","_ref","cost","token","style","display","alignItems","fontSize","color","flex","paddingRight","children","height","width","border","borderRadius","inputShow","messageTooltip","onClear","onSuggestMessageClick","onSend","onMessagesActionsCallback","enableUpload","uploadRequest","_ref2","file","onProgress","onSuccess","info","percent","基础用法","render","emptyStateText","在Provider中使用","decorators","Story","url","多个Provider实例","gap","providerId","marginRight","ArchitectureDemoComponent","_ref3","_getProviderValue","_useProviderContext","props","mergeLogic","context","_context$messages","isInProvider","customData","mergedProps","getProviderValue","providerMethods","padding","marginBottom","backgroundColor","margin","onClick","_providerMethods$send","sendMessage","call","disabled","cursor","新架构演示","navbarShow","subtitle","_ref4","架构对比演示","_ref5","_ref6"],"sources":["../../../../src/components/XAiChatbot/XAiChatbot.stories.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport type { Meta, StoryObj } from '@storybook/react-vite';\nimport { Divider } from 'antd';\nimport { MessageRole, MessageStatus } from '@/types/XAiMessage';\nimport type { Messages } from '@/types/XAiMessage';\nimport documentIcon from '@/assets/document.svg';\nimport XAiProvider from '../XAiProvider';\nimport XAiChatbot from '.';\nimport { useProviderContext, useProviderMethods } from '@/hooks/useProviderContext';\n\nconst meta: Meta<typeof XAiChatbot> = {\n title: 'AI组件/XAiChatbot 聊天框',\n component: XAiChatbot,\n parameters: {\n layout: 'centered',\n },\n tags: ['autodocs'],\n argTypes: {\n navbar: {\n description: '导航栏配置',\n },\n messages: {\n description: '消息列表',\n },\n },\n};\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\n// mock 消息数据,严格符合 Messages 类型\nconst mockMessages: Messages[] = [\n {\n id: '1',\n type: 'TextMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.assistant,\n content: {\n text: '你好,有什么我能帮助你的吗?',\n },\n },\n {\n id: '2',\n type: 'TextMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.user,\n content: {\n text: '检索从北京到上海的车票数据给我',\n },\n parentMessageId: '1',\n },\n {\n id: '22',\n type: 'TextMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.assistant,\n content: {\n text: '',\n },\n thinks: '',\n // execute: [\n // // 工具库调用(MCP_TOOL)\n // {\n // type: 'ActionExecutionMessage',\n // createdAt: new Date(),\n // id: 'tool-1',\n // name: '已调用MCP智能工具',\n // arguments: { param1: 'foo' },\n // extra: {\n // action: 'INVOKE_AGENT_TOOL_START',\n // icon: documentIcon,\n // type: 'MCP_TOOL',\n // cost: '3.9',\n // },\n // },\n // // // 工具库调用(PLUGIN_TOOL)\n // {\n // type: 'ActionExecutionMessage',\n // createdAt: new Date(),\n // id: 'tool-2',\n // name: '已调用插件工具',\n // arguments: { param1: 'foo' },\n // extra: {\n // action: 'INVOKE_AGENT_TOOL_START',\n // icon: documentIcon,\n // type: 'MCP_TOOL',\n // cost: '3.9',\n // },\n // },\n // // // 工具库调用(SKILL)\n // // {\n // // action: 'INVOKE_AGENT_TOOL_START',\n // // id: 'tool-3',\n // // toolType: 'SKILL',\n // // agentToolName: '技能工具',\n // // args: { param3: 'baz' },\n\n // // },\n // // // 知识库调用(FAQ)\n // // {\n // // action: 'RECALL_KNOWLEDGE_START',\n // // uniqueId: 'kb-1',\n // // processStatus: 'START',\n // // args: { question: '什么是FAQ?' },\n // // knowledgeType: 'FAQ',\n // // },\n // {\n // type: 'ActionExecutionMessage',\n // createdAt: new Date(),\n // id: 'tool-3',\n // name: '已调用文档知识库',\n // arguments: { param1: 'foo' },\n // extra: {\n // action: 'RECALL_KNOWLEDGE_START',\n // icon: documentIcon,\n // type: 'MCP_TOOL',\n // cost: '3.9',\n // },\n // },\n // // // 知识库调用(DOCUMENT)\n // // {\n // // action: 'RECALL_KNOWLEDGE_START',\n // // uniqueId: 'kb-2',\n // // processStatus: 'START',\n // // args: { question: '文档库介绍' },\n // // knowledgeType: 'DOCUMENT',\n // // },\n // // 运行完毕\n // ],\n extra: {\n noFooter: true,\n },\n },\n {\n id: '4',\n type: 'TextMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.user,\n content: {\n text: '能否生成一段明年的产品计划开发计划文档给我',\n },\n },\n {\n id: '0',\n type: 'TextMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.assistant,\n content: {\n text: `\n# 项目开发计划\n\n本文档概述了 2025 年第三季度的产品开发计划,包括目标、里程碑、团队分工和风险预案。\n\n---\n\n## 🎯 核心目标\n\n- 提升用户留存率至 **45%**\n- 完成 Web 端新版上线\n- 建立 AI 推荐模块 MVP\n- 优化数据库访问性能\n\n---\n\n## 📅 关键时间节点\n\n| 里程碑 | 截止日期 | 负责人 | 代理人 | 截止日期 | 负责人 |\n|------------------|--------------|----------|------------------|--------------|----------|\n| 产品需求冻结 | 2025-08-01 | Alice | 产品需求冻结 | 2025-08-01 | Alice |\n| UI 设计定稿 | 2025-08-10 | Bob | 产品需求冻结 | 2025-08-01 | Alice |\n| 开发完成(内测) | 2025-09-15 | Charlie | 产品需求冻结 | 2025-08-01 | Alice |\n| 正式上线 | 2025-09-30 | Diana | 产品需求冻结 | 2025-08-01 | Alice |\n\n---\n\n## 🛠️ 技术方案简述\n\n我们将使用以下技术栈:\n\n- 前端:React + Vite + Zustand\n- 后端:Node.js + PostgreSQL\n- 数据分析:Python + Pandas\n- 部署环境:Kubernetes on AWS\n\n---\n\n## 💡 示例代码片段\n\n以下是一个用于生成唯一 ID 的函数示例:\n\n~~~ts\nimport { nanoid } from 'nanoid'\n\nexport function generateSessionId() {\n return \\`sess-\\${nanoid()}\\`\n}\n~~~\n`,\n },\n extra: {\n noFooter: true,\n },\n },\n {\n id: '11',\n type: 'SuggestionMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.suggestion,\n content: [\n {\n key: '1',\n description: '我要查看 AI 文档',\n },\n {\n key: '2',\n description: '我如何看待 AI',\n },\n {\n key: '3',\n description: '你是谁?',\n },\n ],\n },\n];\n\n// 基础用法\nconst BasicUsageStory = (args: any) => {\n const [messages, setMessages] = useState<Messages[]>(mockMessages);\n const [loading, setLoading] = useState<boolean>(false);\n\n // 模拟随机字符串流式返回\n const handleSendMessage = () => {\n setLoading(true);\n\n // 模拟流式输出(向 mockMessages 第二条消息 content.text 追加)\n const stream = ['我', '正在', '为', '你', '生成', '内容', '我', '正在', '为', '你', '生成', '内容', '我', '正在', '为', '你', '生成', '内容', '我', '正在', '为', '你', '生成', '内容', '我', '正在', '为', '你', '生成', '内容', '我', '正在', '为', '你', '生成', '内容', '我', '正在', '为', '你', '生成', '内容', '我', '正在', '为', '你', '生成', '内容', '我', '正在', '为', '你', '生成', '内容', '我', '正在', '为', '你', '生成', '内容', '我', '正在', '为', '你', '生成', '内容', '好', '多', '好', '多', '好', '多', '好', '多', '好', '多', '好', '多', '好', '多', '好', '多', '好', '多', '好', '多', '好', '多', '……'];\n\n stream.forEach((chunk, idx) => {\n setTimeout(() => {\n setMessages((prev) => {\n const updated = [...prev];\n const targetIndex = 2; // mockMessages 的第二条(索引 1)\n const targetMsg = updated[targetIndex];\n\n // 确保该消息存在且是 TextMessage\n if (targetMsg && targetMsg.type === 'TextMessage') {\n // content 可能是多种类型,这里做类型守卫\n if ('text' in targetMsg.content) {\n updated[targetIndex] = {\n ...targetMsg,\n content: {\n ...targetMsg.content,\n // 模拟随机字符串流式拼接\n // text: targetMsg.content.text + chunk + Math.random().toString(36).slice(2, 5),\n },\n thinks: targetMsg.thinks + chunk + Math.random().toString(36).slice(2, 5),\n status: MessageStatus.pending,\n };\n }\n }\n\n // 最后一个流块时,标记完成\n if (idx === stream.length - 1) {\n updated[targetIndex].execute?.push(\n {\n id: '5',\n type: 'ActionExecutionMessage',\n extra: {\n icon: documentIcon,\n },\n name: '运行完毕',\n createdAt: new Date(),\n });\n setLoading(false);\n updated[targetIndex] = {\n ...updated[targetIndex],\n status: MessageStatus.done,\n };\n }\n\n return updated;\n });\n }, 200 * (idx + 1)); // 每个片段延迟 600ms 模拟流\n });\n };\n\n useEffect(() => {\n if (messages) {\n handleSendMessage();\n }\n }, []);\n\n // 清空消息\n const handleClear = () => {\n setMessages([]);\n };\n\n // 模拟按钮回调\n const handleActions = (index: number, data: any) => {\n console.log(index, data);\n };\n\n // 模拟快捷短语点击\n const handleSuggestMessageClick = (_item: any, id: string) => {\n setMessages((prev) => prev.filter((m) => m.id !== id));\n };\n\n // tooltip\n const ToolTip = (data: any) => {\n const { cost, token } = data?.extra || {};\n if (!cost && !token) return null;\n return (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n fontSize: '12px',\n color: '#949494',\n flex: 1,\n paddingRight: '40px',\n }}\n >\n {cost && <div>{cost}s</div>}\n {token && <Divider type=\"vertical\" />}\n {token && <div>{token} tokens</div>}\n </div>\n );\n };\n\n return (\n <div\n style={{\n height: '600px',\n width: '400px',\n border: '1px solid #e7e7e7',\n borderRadius: '8px',\n }}\n >\n <XAiChatbot\n {...args}\n inputShow={false}\n messages={messages}\n loading={loading}\n messageTooltip={ToolTip}\n onClear={handleClear}\n onSuggestMessageClick={handleSuggestMessageClick}\n onSend={handleSendMessage}\n onMessagesActionsCallback={handleActions}\n enableUpload\n uploadRequest={({ file, onProgress, onSuccess }) => {\n console.info(file);\n onProgress?.({\n percent: 50,\n });\n setTimeout(() => {\n onSuccess?.({});\n }, 1000);\n }}\n />\n </div>\n );\n};\n\nexport const 基础用法: Story = {\n render: BasicUsageStory,\n args: {\n navbar: {\n title: '智能助手',\n },\n // messages: mockMessages,\n emptyStateText: '众安智能体',\n },\n};\n\n// 在 Provider 中使用\nexport const 在Provider中使用: Story = {\n decorators: [\n (Story) => (\n <XAiProvider token=\"test-token\" url=\"https://api.example.com\">\n <Story />\n </XAiProvider>\n ),\n ],\n args: {\n navbar: {\n title: '智能助手',\n },\n },\n};\n\n// 多个 Provider 实例\nexport const 多个Provider实例: Story = {\n decorators: [\n (Story) => (\n <div style={{ display: 'flex', gap: '50px', height: '600px' }}>\n <XAiProvider providerId=\"chat1\" token=\"token1\" url=\"https://api1.example.com\">\n <div style={{ width: '300px', marginRight: '40px' }}>\n <Story />\n </div>\n </XAiProvider>\n <XAiProvider providerId=\"chat2\" token=\"token2\" url=\"https://api2.example.com\">\n <div style={{ width: '300px' }}>\n <Story />\n </div>\n </XAiProvider>\n </div>\n ),\n ],\n args: {\n navbar: {\n title: '智能助手',\n },\n },\n};\n\n// 展示新架构的示例组件\nconst ArchitectureDemoComponent: React.FC<{ title: string }> = ({ title }) => {\n const { mergedProps, isInProvider, getProviderValue } = useProviderContext({\n props: { title },\n mergeLogic: (props, context) => {\n if (!context?.isInProvider) {\n return props;\n }\n\n return {\n ...props,\n messages: context.messages,\n loading: context.loading,\n customData: context.messages?.length || 0,\n };\n },\n });\n\n const providerMethods = useProviderMethods();\n\n return (\n <div style={{\n padding: '15px',\n border: '1px solid #e7e7e7',\n borderRadius: '8px',\n marginBottom: '10px',\n backgroundColor: '#fafafa',\n }}\n >\n <h4 style={{ margin: '0 0 10px 0' }}>{mergedProps.title}</h4>\n <div style={{ fontSize: '12px', color: '#666' }}>\n <p>Provider 状态: {isInProvider ? '✅ 已连接' : '❌ 未连接'}</p>\n <p>消息数量: {getProviderValue('messages')?.length || 0}</p>\n <p>加载状态: {getProviderValue('loading') ? '🔄 加载中' : '✅ 就绪'}</p>\n <button\n onClick={() => providerMethods.sendMessage?.({ text: '来自架构演示组件的消息' })}\n disabled={!isInProvider}\n style={{\n fontSize: '12px',\n padding: '4px 8px',\n backgroundColor: isInProvider ? '#1890ff' : '#d9d9d9',\n color: 'white',\n border: 'none',\n borderRadius: '4px',\n cursor: isInProvider ? 'pointer' : 'not-allowed',\n }}\n >\n {isInProvider ? '发送消息' : '需要 Provider'}\n </button>\n </div>\n </div>\n );\n};\n\n// 展示新架构的示例\nexport const 新架构演示: Story = {\n render: (args) => (\n <div style={{ width: '500px', height: '700px' }}>\n <XAiProvider token=\"demo-token\" url=\"https://api.example.com\" providerId=\"architecture-demo\">\n <div style={{ padding: '20px' }}>\n <h3 style={{ marginBottom: '20px' }}>新架构演示</h3>\n <p style={{ marginBottom: '20px', color: '#666' }}>\n 展示如何使用 useProviderContext 和 useProviderMethods Hook\n </p>\n\n {/* 演示组件 */}\n <div style={{ marginBottom: '20px' }}>\n <ArchitectureDemoComponent title=\"演示组件 A\" />\n <ArchitectureDemoComponent title=\"演示组件 B\" />\n <ArchitectureDemoComponent title=\"演示组件 C\" />\n </div>\n\n {/* 聊天机器人 */}\n <XAiChatbot\n {...args}\n navbarShow\n navbar={{\n title: '架构演示聊天机器人',\n subtitle: '展示新 Hook 的使用',\n }}\n enableUpload\n uploadRequest={({ file, onProgress, onSuccess }) => {\n console.info(file);\n onProgress?.({\n percent: 50,\n });\n setTimeout(() => {\n onSuccess?.({});\n }, 1000);\n }}\n />\n </div>\n </XAiProvider>\n </div>\n ),\n args: {\n navbar: {\n title: '智能助手',\n },\n },\n};\n\n// 对比示例:独立使用 vs Provider 模式\nexport const 架构对比演示: Story = {\n render: (args) => (\n <div style={{ display: 'flex', gap: '20px', padding: '20px' }}>\n {/* 独立使用 */}\n <div style={{ width: '300px' }}>\n <h4>独立使用模式</h4>\n <div style={{ border: '1px solid #e7e7e7', borderRadius: '8px', padding: '15px' }}>\n <ArchitectureDemoComponent title=\"独立组件\" />\n <XAiChatbot\n {...args}\n navbarShow\n navbar={{\n title: '独立聊天机器人',\n subtitle: '不依赖 Provider',\n }}\n onSend={(content) => {\n console.log('独立模式发送:', content);\n }}\n onClear={() => {\n console.log('独立模式清空');\n }}\n enableUpload\n uploadRequest={({ file, onProgress, onSuccess }) => {\n console.info(file);\n onProgress?.({\n percent: 50,\n });\n setTimeout(() => {\n onSuccess?.({});\n }, 1000);\n }}\n />\n </div>\n </div>\n\n {/* Provider 模式 */}\n <div style={{ width: '300px' }}>\n <h4>Provider 模式</h4>\n <XAiProvider token=\"demo-token\" url=\"https://api.example.com\" providerId=\"comparison-demo\">\n <div style={{ border: '1px solid #e7e7e7', borderRadius: '8px', padding: '15px' }}>\n <ArchitectureDemoComponent title=\"Provider 组件\" />\n <XAiChatbot\n {...args}\n navbarShow\n navbar={{\n title: 'Provider 聊天机器人',\n subtitle: '由 Provider 管理',\n }}\n enableUpload\n uploadRequest={({ file, onProgress, onSuccess }) => {\n console.info(file);\n onProgress?.({\n percent: 50,\n });\n setTimeout(() => {\n onSuccess?.({});\n }, 1000);\n }}\n />\n </div>\n </XAiProvider>\n </div>\n </div>\n ),\n args: {\n navbar: {\n title: '智能助手',\n },\n },\n};\n"],"mappings":"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"}
|
|
@@ -208,40 +208,43 @@ var XAiChatbot = function XAiChatbot(props) {
|
|
|
208
208
|
// 使用新的 Hook 来处理 Provider 上下文
|
|
209
209
|
var _useChatbotContext = useChatbotContext(props),
|
|
210
210
|
mergedProps = _useChatbotContext.mergedProps;
|
|
211
|
-
var
|
|
212
|
-
navbarShow =
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
renderNavbar =
|
|
216
|
-
|
|
217
|
-
clearBtnShow =
|
|
218
|
-
|
|
219
|
-
inputShow =
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
text =
|
|
228
|
-
|
|
229
|
-
footerTips =
|
|
230
|
-
|
|
231
|
-
empty =
|
|
232
|
-
|
|
233
|
-
emptyStateImage =
|
|
234
|
-
|
|
235
|
-
emptyStateText =
|
|
236
|
-
|
|
237
|
-
messageActions =
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
211
|
+
var _ref2 = mergedProps,
|
|
212
|
+
_ref2$navbarShow = _ref2.navbarShow,
|
|
213
|
+
navbarShow = _ref2$navbarShow === void 0 ? false : _ref2$navbarShow,
|
|
214
|
+
navbar = _ref2.navbar,
|
|
215
|
+
_ref2$renderNavbar = _ref2.renderNavbar,
|
|
216
|
+
renderNavbar = _ref2$renderNavbar === void 0 ? null : _ref2$renderNavbar,
|
|
217
|
+
_ref2$clearBtnShow = _ref2.clearBtnShow,
|
|
218
|
+
clearBtnShow = _ref2$clearBtnShow === void 0 ? true : _ref2$clearBtnShow,
|
|
219
|
+
_ref2$inputShow = _ref2.inputShow,
|
|
220
|
+
inputShow = _ref2$inputShow === void 0 ? true : _ref2$inputShow,
|
|
221
|
+
_ref2$loading = _ref2.loading,
|
|
222
|
+
propLoading = _ref2$loading === void 0 ? false : _ref2$loading,
|
|
223
|
+
messageTooltip = _ref2.messageTooltip,
|
|
224
|
+
avatar = _ref2.avatar,
|
|
225
|
+
userAvatar = _ref2.userAvatar,
|
|
226
|
+
propMessages = _ref2.messages,
|
|
227
|
+
_ref2$text = _ref2.text,
|
|
228
|
+
text = _ref2$text === void 0 ? '' : _ref2$text,
|
|
229
|
+
_ref2$footerTips = _ref2.footerTips,
|
|
230
|
+
footerTips = _ref2$footerTips === void 0 ? '' : _ref2$footerTips,
|
|
231
|
+
_ref2$empty = _ref2.empty,
|
|
232
|
+
empty = _ref2$empty === void 0 ? null : _ref2$empty,
|
|
233
|
+
_ref2$emptyStateImage = _ref2.emptyStateImage,
|
|
234
|
+
emptyStateImage = _ref2$emptyStateImage === void 0 ? emptyIcon : _ref2$emptyStateImage,
|
|
235
|
+
_ref2$emptyStateText = _ref2.emptyStateText,
|
|
236
|
+
emptyStateText = _ref2$emptyStateText === void 0 ? '我的智能体' : _ref2$emptyStateText,
|
|
237
|
+
_ref2$messageActions = _ref2.messageActions,
|
|
238
|
+
messageActions = _ref2$messageActions === void 0 ? defaultActions : _ref2$messageActions,
|
|
239
|
+
onMessagesActionsCallback = _ref2.onMessagesActionsCallback,
|
|
240
|
+
onSuggestMessageClick = _ref2.onSuggestMessageClick,
|
|
241
|
+
onSend = _ref2.onSend,
|
|
242
|
+
onClear = _ref2.onClear,
|
|
243
|
+
onStop = _ref2.onStop,
|
|
244
|
+
providerId = _ref2.providerId,
|
|
245
|
+
messageTop = _ref2.messageTop,
|
|
246
|
+
enableUpload = _ref2.enableUpload,
|
|
247
|
+
uploadRequest = _ref2.uploadRequest;
|
|
245
248
|
|
|
246
249
|
// 如果在 Provider 中,使用 Provider 的状态
|
|
247
250
|
var messages = mergedProps.messages || propMessages || [];
|
|
@@ -250,6 +253,10 @@ var XAiChatbot = function XAiChatbot(props) {
|
|
|
250
253
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
251
254
|
content = _useState6[0],
|
|
252
255
|
setContent = _useState6[1]; // 输入框文本
|
|
256
|
+
var _useState7 = useState([]),
|
|
257
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
258
|
+
files = _useState8[0],
|
|
259
|
+
setFiles = _useState8[1];
|
|
253
260
|
var lastMessageId = useRef('');
|
|
254
261
|
var isScriptScrolling = useRef(false);
|
|
255
262
|
var chatId = providerId ? "za-chatbot-container-".concat(providerId) : 'za-chatbot-container';
|
|
@@ -267,10 +274,10 @@ var XAiChatbot = function XAiChatbot(props) {
|
|
|
267
274
|
};
|
|
268
275
|
|
|
269
276
|
// 消息功能区组件
|
|
270
|
-
var FooterActions = function FooterActions(
|
|
271
|
-
var data =
|
|
272
|
-
|
|
273
|
-
lastMessage =
|
|
277
|
+
var FooterActions = function FooterActions(_ref3) {
|
|
278
|
+
var data = _ref3.data,
|
|
279
|
+
_ref3$lastMessage = _ref3.lastMessage,
|
|
280
|
+
lastMessage = _ref3$lastMessage === void 0 ? false : _ref3$lastMessage;
|
|
274
281
|
return /*#__PURE__*/_jsx("div", {
|
|
275
282
|
className: clsx(styles.flex, styles.gap(13)),
|
|
276
283
|
children: messageActions.map(function (action, index) {
|
|
@@ -291,10 +298,10 @@ var XAiChatbot = function XAiChatbot(props) {
|
|
|
291
298
|
};
|
|
292
299
|
|
|
293
300
|
// 消息底部区域
|
|
294
|
-
var MessageFooter = function MessageFooter(
|
|
295
|
-
var data =
|
|
296
|
-
|
|
297
|
-
lastMessage =
|
|
301
|
+
var MessageFooter = function MessageFooter(_ref4) {
|
|
302
|
+
var data = _ref4.data,
|
|
303
|
+
_ref4$lastMessage = _ref4.lastMessage,
|
|
304
|
+
lastMessage = _ref4$lastMessage === void 0 ? false : _ref4$lastMessage;
|
|
298
305
|
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
299
306
|
children: [messageTooltip === null || messageTooltip === void 0 ? void 0 : messageTooltip(data), /*#__PURE__*/_jsx(FooterActions, {
|
|
300
307
|
data: data,
|
|
@@ -347,13 +354,12 @@ var XAiChatbot = function XAiChatbot(props) {
|
|
|
347
354
|
};
|
|
348
355
|
|
|
349
356
|
// 触发发送
|
|
350
|
-
var handleSend = function handleSend(
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
}
|
|
357
|
+
var handleSend = function handleSend(obj) {
|
|
358
|
+
// 直接使用合并后的 onSend,自动处理 Provider 和独立模式
|
|
359
|
+
onSend === null || onSend === void 0 || onSend(obj);
|
|
360
|
+
setContent(''); // 发送后清空输入框内容
|
|
361
|
+
setFiles([]); // 发送后清空文件
|
|
362
|
+
scrollToBottom();
|
|
357
363
|
};
|
|
358
364
|
|
|
359
365
|
// 输出内容
|
|
@@ -426,20 +432,20 @@ var XAiChatbot = function XAiChatbot(props) {
|
|
|
426
432
|
roles: rolesObject,
|
|
427
433
|
className: styles.messageList,
|
|
428
434
|
items: messages.map(function (msg) {
|
|
429
|
-
var
|
|
430
|
-
id =
|
|
431
|
-
role =
|
|
432
|
-
status =
|
|
433
|
-
type =
|
|
434
|
-
|
|
435
|
-
execute =
|
|
436
|
-
|
|
437
|
-
thinks =
|
|
438
|
-
|
|
439
|
-
extra =
|
|
435
|
+
var _ref5 = msg,
|
|
436
|
+
id = _ref5.id,
|
|
437
|
+
role = _ref5.role,
|
|
438
|
+
status = _ref5.status,
|
|
439
|
+
type = _ref5.type,
|
|
440
|
+
_ref5$execute = _ref5.execute,
|
|
441
|
+
execute = _ref5$execute === void 0 ? [] : _ref5$execute,
|
|
442
|
+
_ref5$thinks = _ref5.thinks,
|
|
443
|
+
thinks = _ref5$thinks === void 0 ? '' : _ref5$thinks,
|
|
444
|
+
_ref5$extra = _ref5.extra,
|
|
445
|
+
extra = _ref5$extra === void 0 ? {
|
|
440
446
|
noFooter: false
|
|
441
|
-
} :
|
|
442
|
-
stepContent =
|
|
447
|
+
} : _ref5$extra,
|
|
448
|
+
stepContent = _ref5.stepContent;
|
|
443
449
|
// 最后一条 AI消息标识
|
|
444
450
|
if (role === MessageRole.assistant) {
|
|
445
451
|
lastMessageId.current = id;
|
|
@@ -510,9 +516,11 @@ var XAiChatbot = function XAiChatbot(props) {
|
|
|
510
516
|
vertical: true,
|
|
511
517
|
items: msg.content,
|
|
512
518
|
onItemClick: function onItemClick(info) {
|
|
513
|
-
onSuggestMessageClick === null || onSuggestMessageClick === void 0 || onSuggestMessageClick(info.data, id
|
|
519
|
+
onSuggestMessageClick === null || onSuggestMessageClick === void 0 || onSuggestMessageClick(info.data, id);
|
|
514
520
|
if (info.data.description) {
|
|
515
|
-
onSend === null || onSend === void 0 || onSend(
|
|
521
|
+
onSend === null || onSend === void 0 || onSend({
|
|
522
|
+
text: info.data.description
|
|
523
|
+
});
|
|
516
524
|
}
|
|
517
525
|
}
|
|
518
526
|
});
|
|
@@ -539,6 +547,10 @@ var XAiChatbot = function XAiChatbot(props) {
|
|
|
539
547
|
loading: loading,
|
|
540
548
|
footerTips: footerTips,
|
|
541
549
|
clearBtnShow: clearBtnShow,
|
|
550
|
+
enableUpload: enableUpload,
|
|
551
|
+
files: files,
|
|
552
|
+
onChangeFiles: setFiles,
|
|
553
|
+
uploadRequest: uploadRequest,
|
|
542
554
|
onChange: handleChange,
|
|
543
555
|
onSubmit: handleSend,
|
|
544
556
|
onStop: handleStop,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useRef","useState","useMemo","Tooltip","Bubble","Prompts","UserOutlined","RedoOutlined","CopyOutlined","DeleteOutlined","clsx","MarkdownIt","reactHtmlParser","MarkdownGlobalStyle","MessageStatus","MessageRole","emptyIcon","arrowUp","arrowDown","thinkIcon","groupIcon","arrowDownBlue","useChatbotContext","useStyles","GlobalStyle","XAiSender","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","md","html","linkify","typographer","defaultRender","renderer","rules","link_open","tokens","idx","options","env","self","renderToken","aIndex","attrIndex","attrPush","attrs","relIndex","ActionHeader","_ref","_last$extra","_ref$execute","execute","_ref$thinks","thinks","styles","_useState","_useState2","_slicedToArray","expanded","setExpanded","_useState3","_useState4","executeExpanded","setExecuteExpanded","length","last","name","icon","extra","className","actionHeaderWrapper","children","actionTitle","onClick","v","src","alt","actionHeaderIcon","flex1","w","actionHeaderDetail","actionDetailTitle","pl","actionDetailContent","style","whiteSpace","executeHiddenWrapper","h","executeWrapper","executeTitle","executeHeaderIcon","executeContent","map","action","_action$extra","_action$extra2","_action$extra3","thinkIcon2","expandIcon","thinkCost","cost","actionHeaderDetailItem","actionHeaderCost","concat","uniqueId","defaultActions","key","tooltip","XAiChatbot","props","_useChatbotContext","mergedProps","_mergedProps$navbarSh","navbarShow","navbar","_mergedProps$renderNa","renderNavbar","_mergedProps$clearBtn","clearBtnShow","_mergedProps$inputSho","inputShow","_mergedProps$loading","loading","propLoading","messageTooltip","avatar","userAvatar","propMessages","messages","_mergedProps$text","text","_mergedProps$footerTi","footerTips","_mergedProps$empty","empty","_mergedProps$emptySta","emptyStateImage","_mergedProps$emptySta2","emptyStateText","_mergedProps$messageA","messageActions","onMessagesActionsCallback","onSuggestMessageClick","onSend","onClear","onStop","providerId","messageTop","_useState5","_useState6","content","setContent","lastMessageId","isScriptScrolling","chatId","scrollToBottom","current","setTimeout","mainChatWrapper","document","getElementById","scrollTop","scrollHeight","FooterActions","_ref2","data","_ref2$lastMessage","lastMessage","flex","gap","index","_action$render","title","cursor","render","call","MessageFooter","_ref3","_ref3$lastMessage","rolesObject","assistant","placement","bg","typing","step","interval","maxWidth","classNames","user","suggestion","visibility","variant","handleSend","type","str","trim","handleChange","handleStop","NavBar","subtitle","confirmClear","EmptyState","emptyWrapper","emptyImg","weight","textColor","id","wrapper","messageContainer","List","roles","messageList","items","msg","_ref4","role","status","_ref4$execute","_ref4$thinks","_ref4$extra","noFooter","stepContent","bubbleContent","init","header","_msg$content2","_msg$content","minWidth","htmlString","item","html2","stepHtmlString","stepLine","vertical","onItemClick","info","description","footer","failed","value","onChange","onSubmit"],"sources":["../../../../src/components/XAiChatbot/index.tsx"],"sourcesContent":["// 文件: components/XAiChatbot/index.tsx\n\nimport React, {\n useRef,\n useState,\n useMemo,\n} from 'react';\nimport {\n Tooltip,\n GetProp,\n} from 'antd';\nimport {\n Bubble,\n Prompts,\n} from '@ant-design/x';\nimport {\n UserOutlined,\n RedoOutlined,\n CopyOutlined,\n DeleteOutlined,\n} from '@ant-design/icons';\nimport clsx from 'clsx';\nimport MarkdownIt from 'markdown-it';\nimport reactHtmlParser from 'react-html-parser';\nimport MarkdownGlobalStyle from '@/styles/markdown';\nimport {\n MessageStatus,\n MessageRole,\n Messages,\n} from '@/types/XAiMessage';\nimport {\n XAiChatbotProps,\n ActionItem,\n} from '@/types/XAiChatbot';\nimport emptyIcon from '@/assets/empty.png';\nimport arrowUp from '@/assets/arrow-up.png';\nimport arrowDown from '@/assets/arrow-down.png';\nimport thinkIcon from '@/assets/think.png';\nimport groupIcon from '@/assets/group.png';\nimport arrowDownBlue from '@/assets/arrow-down-blue.png';\nimport { useChatbotContext } from '@/hooks/useProviderContext';\nimport { useStyles, GlobalStyle } from './styles';\nimport XAiSender from '../XAiSender';\n\nconst md = new MarkdownIt({\n html: true,\n linkify: true,\n typographer: true,\n});\n\n// 自定义 link_open 渲染规则\nconst defaultRender = md.renderer.rules.link_open || ((tokens, idx, options, env, self) => {\n return self.renderToken(tokens, idx, options);\n});\n\n// a 标签打开规则\nmd.renderer.rules.link_open = (tokens, idx, options, env, self) => {\n // 添加 target=\"_blank\"\n const aIndex = tokens[idx].attrIndex('target');\n if (aIndex < 0) {\n tokens[idx].attrPush(['target', '_blank']);\n } else {\n tokens[idx].attrs![aIndex][1] = '_blank';\n }\n // 添加 rel=\"noopener noreferrer\"\n const relIndex = tokens[idx].attrIndex('rel');\n if (relIndex < 0) {\n tokens[idx].attrPush(['rel', 'noopener noreferrer']);\n } else {\n tokens[idx].attrs![relIndex][1] = 'noopener noreferrer';\n }\n return defaultRender(tokens, idx, options, env, self);\n};\n\nexport interface ActionHeaderProps {\n execute: any[];\n thinks: string;\n}\n\n// ActionHeader 组件\nexport const ActionHeader: React.FC<ActionHeaderProps> = ({ execute = [], thinks = '' }) => {\n const styles = useStyles();\n const [expanded, setExpanded] = useState(true);\n const [executeExpanded, setExecuteExpanded] = useState(false);\n\n // 关键修复:只要有思考内容或执行过程就显示,不要同时要求两者都有\n if (!thinks && (!execute || execute.length === 0)) return null;\n\n const last = execute[execute.length - 1] || {};\n const { name } = last;\n const icon = last?.icon || last?.extra?.icon;\n\n return (\n <div className={styles.actionHeaderWrapper}>\n {!expanded && (\n <div className={styles.actionTitle} onClick={() => setExpanded((v) => !v)}>\n <img src={thinkIcon} alt=\"icon\" className={styles.actionHeaderIcon} />\n <span className={styles.flex1}>运行过程</span>\n <img alt=\"展开icon\" src={arrowDown} className={styles.w('16px')} />\n </div>\n )}\n {expanded && (\n <div className={styles.actionHeaderDetail}>\n <div className={styles.actionDetailTitle} onClick={() => setExpanded((v) => !v)}>\n <img src={thinkIcon} alt=\"\" className={clsx(styles.w(14))} />\n <div className={clsx(styles.flex1, styles.pl(10))}>隐藏运行过程</div>\n <img alt=\"收起icon\" src={arrowUp} className={styles.w('16px')} />\n </div>\n\n {thinks && (\n <div className={styles.actionDetailContent} style={{ whiteSpace: 'pre-line' }}>\n {thinks}\n </div>\n )}\n\n {execute && execute.length > 0 && (\n <>\n {!executeExpanded && (\n <div className={styles.executeHiddenWrapper} onClick={() => setExecuteExpanded((v) => !v)}>\n {icon && <img src={icon} alt=\"icon\" className={styles.h(15)} />}\n <span className={styles.flex1}>{name}</span>\n <img alt=\"工具icon\" src={arrowDownBlue} className={styles.w('16px')} />\n </div>\n )}\n {executeExpanded && (\n <div className={styles.executeWrapper}>\n <div className={styles.executeTitle} onClick={() => setExecuteExpanded((v) => !v)}>\n <img src={groupIcon} alt=\"icon\" className={styles.executeHeaderIcon} />\n <span className={styles.flex1}>隐藏运行详情</span>\n <img alt=\"展开详情icon\" src={arrowUp} className={styles.w('16px')} />\n </div>\n <div className={styles.executeContent}>\n {execute.map((action: any, idx: number) => {\n const thinkIcon2 = action?.expandIcon || action?.extra?.expandIcon || action?.extra?.icon || action?.icon;\n const thinkCost = action?.cost || action?.extra?.cost;\n return (\n <div key={action.uniqueId || idx} className={styles.actionHeaderDetailItem}>\n {thinkIcon2 && <img src={thinkIcon2} alt=\"icon\" className={styles.actionHeaderIcon} />}\n <span>{action?.name}</span>\n <span className={styles.actionHeaderCost}>{thinkCost ? `${thinkCost}s` : ''}</span>\n </div>\n );\n })}\n </div>\n </div>\n )}\n </>\n )}\n </div>\n )}\n </div>\n );\n};\n\n// 默认消息功能区\nexport const defaultActions: ActionItem[] = [\n {\n key: 'redo',\n icon: <RedoOutlined />,\n tooltip: '重新生成',\n },\n {\n key: 'copy',\n icon: <CopyOutlined />,\n tooltip: '复制',\n },\n {\n key: 'delete',\n icon: <DeleteOutlined />,\n tooltip: '删除',\n },\n];\n\nconst XAiChatbot: React.FC<XAiChatbotProps> = (props) => {\n const styles = useStyles();\n // 使用新的 Hook 来处理 Provider 上下文\n const { mergedProps } = useChatbotContext(props);\n\n const {\n navbarShow = false,\n navbar,\n renderNavbar = null,\n clearBtnShow = true,\n inputShow = true,\n // renderMessageContent,\n // quickReplies = [],\n // quickRepliesVisible = true,\n // onQuickReplyClick,\n loading: propLoading = false,\n messageTooltip,\n avatar,\n userAvatar,\n messages: propMessages,\n text = '',\n footerTips = '',\n empty = null,\n emptyStateImage = emptyIcon,\n emptyStateText = '我的智能体',\n messageActions = defaultActions,\n onMessagesActionsCallback,\n // 点击帮助消息\n onSuggestMessageClick,\n onSend,\n onClear,\n onStop,\n providerId,\n // 消息顶部\n messageTop,\n } = mergedProps;\n\n // 如果在 Provider 中,使用 Provider 的状态\n const messages = mergedProps.messages || propMessages || [];\n const loading = mergedProps.loading || propLoading;\n\n const [content, setContent] = useState<string>(text); // 输入框文本\n const lastMessageId = useRef<string>('');\n const isScriptScrolling = useRef<boolean>(false);\n const chatId = providerId ? `za-chatbot-container-${providerId}` : 'za-chatbot-container';\n\n // 滚动到最底部\n const scrollToBottom = () => {\n isScriptScrolling.current = true;\n setTimeout(() => {\n const mainChatWrapper = document.getElementById(chatId);\n if (mainChatWrapper) {\n mainChatWrapper.scrollTop = mainChatWrapper?.scrollHeight;\n }\n isScriptScrolling.current = false;\n }, 0);\n };\n\n // 消息功能区组件\n const FooterActions: React.FC<{ data: Messages; lastMessage: boolean }> = ({ data, lastMessage = false }) => (\n <div className={clsx(styles.flex, styles.gap(13))}>\n {messageActions.map((action: ActionItem, index: number) => {\n if (!lastMessage && action.key === 'redo') return null;\n return (\n <Tooltip key={action.key} title={action.tooltip}>\n <span className={styles.cursor('pointer')} onClick={() => onMessagesActionsCallback?.(index, data)}>\n {action.icon}\n {action.render?.(index, data)}\n </span>\n </Tooltip>\n );\n })}\n </div>\n );\n\n // 消息底部区域\n const MessageFooter: React.FC<{ data: Messages; lastMessage: boolean }> = ({ data, lastMessage = false }) => (\n <>\n {messageTooltip?.(data)}\n <FooterActions data={data} lastMessage={lastMessage} />\n </>\n );\n\n // 聊天角色\n const rolesObject: GetProp<typeof Bubble.List, 'roles'> = {\n assistant: {\n placement: 'start',\n avatar: { icon: avatar || <UserOutlined className={clsx(styles.bg('#fde3cf'), styles.userAvatar)} /> },\n typing: { step: 5, interval: 20 },\n style: {\n maxWidth: 600,\n },\n classNames: {\n content: 'assistant-content',\n },\n },\n user: {\n placement: 'end',\n avatar: { icon: userAvatar || <UserOutlined className={clsx(styles.bg('#87d068'), styles.userAvatar)} /> },\n classNames: {\n content: 'user-content',\n },\n },\n suggestion: {\n placement: 'start',\n avatar: { icon: <UserOutlined />, style: { visibility: 'hidden' } },\n variant: 'borderless',\n },\n };\n\n // 触发发送\n const handleSend = (type: string, str: string) => {\n if (str.trim()) {\n // 直接使用合并后的 onSend,自动处理 Provider 和独立模式\n onSend?.(type, str);\n setContent(''); // 发送后清空输入框内容\n scrollToBottom();\n }\n };\n\n // 输出内容\n const handleChange = (str: string) => {\n setContent(str);\n };\n\n // 停止生成\n const handleStop = () => {\n onStop?.();\n };\n\n // 导航栏\n const NavBar: React.FC = () => {\n if (renderNavbar) {\n return renderNavbar();\n } if (navbar?.title) {\n return (\n <header className={styles.navbar}>\n {navbar.avatar && <img src={navbar.avatar} className={styles.avatar} alt=\"\" />}\n <div>\n <div className={styles.title}>{navbar.title}</div>\n <div className={styles.subtitle}>{navbar.subtitle}</div>\n </div>\n </header>\n );\n }\n return <></>;\n };\n\n // 确认清除\n const confirmClear = () => {\n onClear?.();\n };\n\n // 空状态\n const EmptyState = useMemo(() => () => (\n empty || (\n <div className={styles.emptyWrapper}>\n <img src={emptyStateImage} alt=\"空状态图标\" className={styles.emptyImg} />\n <div className={clsx(styles.text(16), styles.weight(600), styles.textColor('#343434'))}>{emptyStateText}</div>\n </div>\n )\n // eslint-disable-next-line react-hooks/exhaustive-deps\n ), [emptyStateImage, emptyStateText]);\n\n return (\n <>\n <GlobalStyle />\n <MarkdownGlobalStyle />\n <div id=\"x-ai-chatbot\" className={styles.wrapper}>\n { navbarShow && <NavBar /> }\n {/** 消息容器 */}\n <div className={styles.messageContainer}>\n {/* 消息列表主体 */}\n {\n messages?.length\n ? (\n <Bubble.List\n id={chatId}\n roles={rolesObject}\n className={styles.messageList}\n items={messages.map((msg: any) => {\n const { id, role, status, type, execute = [], thinks = '', extra = { noFooter: false }, stepContent } = msg as Messages;\n // 最后一条 AI消息标识\n if (role === MessageRole.assistant) {\n lastMessageId.current = id;\n }\n // 会话内容\n const bubbleContent: any = {\n key: id,\n role,\n loading: status === MessageStatus.init,\n header: (() => messageTop\n || (\n <ActionHeader\n execute={execute}\n thinks={thinks}\n />\n )),\n content: (() => {\n // 文本消息\n if (type === 'TextMessage') {\n // 用户消息\n if (role === 'user') {\n return (\n <div\n className=\"ai-markdown-body\"\n style={{\n minWidth: 0,\n maxWidth: 600,\n }}\n >\n {msg.content?.text}\n </div>\n );\n }\n\n // 输出html字符串\n const html = md.render(msg.content?.text || '');\n // 生成React节点\n const htmlString = reactHtmlParser(html);\n return (\n <>\n {/* 输出阶段性回答内容 */}\n {stepContent?.length && stepContent.map((item) => {\n // 输出html字符串\n const html2 = md.render(item.content || '');\n // 生成React节点\n const stepHtmlString = reactHtmlParser(html2);\n return (\n <div\n key={item.id}\n className=\"ai-markdown-body step-content\"\n style={{\n minWidth: 0,\n maxWidth: 600,\n }}\n >\n <div>\n {stepHtmlString}\n </div>\n <div className={styles.stepLine} />\n </div>\n );\n })}\n {/** 输出最终回答内容 */}\n <div\n className=\"ai-markdown-body\"\n style={{\n minWidth: 0,\n maxWidth: 600,\n }}\n >\n {htmlString}\n </div>\n </>\n );\n }\n // 提示类型\n if (type === 'SuggestionMessage') {\n return (\n <Prompts\n vertical\n items={msg.content as any}\n onItemClick={(info) => {\n onSuggestMessageClick?.(info.data, id, 'text');\n if (info.data.description) {\n onSend?.('text', info.data.description as string);\n }\n }}\n />\n );\n }\n // 其他类型...\n return null;\n })(),\n };\n\n if (!extra.noFooter) {\n bubbleContent.footer = (() => {\n return (\n role === MessageRole.assistant && status !== MessageStatus.failed && (\n <>\n <MessageFooter data={msg as Messages} lastMessage={lastMessageId.current === id} />\n </>\n )\n );\n });\n }\n\n return bubbleContent;\n })}\n />\n )\n : (\n <EmptyState />\n )\n }\n </div>\n {/* 输入框 */}\n { inputShow && (\n <XAiSender\n value={content}\n loading={loading}\n footerTips={footerTips}\n clearBtnShow={clearBtnShow}\n onChange={handleChange}\n onSubmit={handleSend}\n onStop={handleStop}\n onClear={confirmClear}\n />\n ) }\n </div>\n </>\n );\n};\n\nexport default XAiChatbot;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","useRef","useState","useMemo","Tooltip","Bubble","Prompts","UserOutlined","RedoOutlined","CopyOutlined","DeleteOutlined","clsx","MarkdownIt","reactHtmlParser","MarkdownGlobalStyle","MessageStatus","MessageRole","emptyIcon","arrowUp","arrowDown","thinkIcon","groupIcon","arrowDownBlue","useChatbotContext","useStyles","GlobalStyle","XAiSender","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","md","html","linkify","typographer","defaultRender","renderer","rules","link_open","tokens","idx","options","env","self","renderToken","aIndex","attrIndex","attrPush","attrs","relIndex","ActionHeader","_ref","_last$extra","_ref$execute","execute","_ref$thinks","thinks","styles","_useState","_useState2","_slicedToArray","expanded","setExpanded","_useState3","_useState4","executeExpanded","setExecuteExpanded","length","last","name","icon","extra","className","actionHeaderWrapper","children","actionTitle","onClick","v","src","alt","actionHeaderIcon","flex1","w","actionHeaderDetail","actionDetailTitle","pl","actionDetailContent","style","whiteSpace","executeHiddenWrapper","h","executeWrapper","executeTitle","executeHeaderIcon","executeContent","map","action","_action$extra","_action$extra2","_action$extra3","thinkIcon2","expandIcon","thinkCost","cost","actionHeaderDetailItem","actionHeaderCost","concat","uniqueId","defaultActions","key","tooltip","XAiChatbot","props","_useChatbotContext","mergedProps","_ref2","_ref2$navbarShow","navbarShow","navbar","_ref2$renderNavbar","renderNavbar","_ref2$clearBtnShow","clearBtnShow","_ref2$inputShow","inputShow","_ref2$loading","loading","propLoading","messageTooltip","avatar","userAvatar","propMessages","messages","_ref2$text","text","_ref2$footerTips","footerTips","_ref2$empty","empty","_ref2$emptyStateImage","emptyStateImage","_ref2$emptyStateText","emptyStateText","_ref2$messageActions","messageActions","onMessagesActionsCallback","onSuggestMessageClick","onSend","onClear","onStop","providerId","messageTop","enableUpload","uploadRequest","_useState5","_useState6","content","setContent","_useState7","_useState8","files","setFiles","lastMessageId","isScriptScrolling","chatId","scrollToBottom","current","setTimeout","mainChatWrapper","document","getElementById","scrollTop","scrollHeight","FooterActions","_ref3","data","_ref3$lastMessage","lastMessage","flex","gap","index","_action$render","title","cursor","render","call","MessageFooter","_ref4","_ref4$lastMessage","rolesObject","assistant","placement","bg","typing","step","interval","maxWidth","classNames","user","suggestion","visibility","variant","handleSend","obj","handleChange","str","handleStop","NavBar","subtitle","confirmClear","EmptyState","emptyWrapper","emptyImg","weight","textColor","id","wrapper","messageContainer","List","roles","messageList","items","msg","_ref5","role","status","type","_ref5$execute","_ref5$thinks","_ref5$extra","noFooter","stepContent","bubbleContent","init","header","_msg$content2","_msg$content","minWidth","htmlString","item","html2","stepHtmlString","stepLine","vertical","onItemClick","info","description","footer","failed","value","onChangeFiles","onChange","onSubmit"],"sources":["../../../../src/components/XAiChatbot/index.tsx"],"sourcesContent":["// 文件: components/XAiChatbot/index.tsx\n\nimport React, {\n useRef,\n useState,\n useMemo,\n} from 'react';\nimport {\n Tooltip,\n GetProp,\n} from 'antd';\nimport {\n Bubble,\n Prompts,\n} from '@ant-design/x';\nimport {\n UserOutlined,\n RedoOutlined,\n CopyOutlined,\n DeleteOutlined,\n} from '@ant-design/icons';\nimport clsx from 'clsx';\nimport MarkdownIt from 'markdown-it';\nimport reactHtmlParser from 'react-html-parser';\nimport type { Attachment } from '@ant-design/x/es/attachments';\nimport MarkdownGlobalStyle from '@/styles/markdown';\nimport {\n MessageStatus,\n MessageRole,\n Messages,\n} from '@/types/XAiMessage';\nimport {\n XAiChatbotProps,\n ActionItem,\n} from '@/types/XAiChatbot';\nimport emptyIcon from '@/assets/empty.png';\nimport arrowUp from '@/assets/arrow-up.png';\nimport arrowDown from '@/assets/arrow-down.png';\nimport thinkIcon from '@/assets/think.png';\nimport groupIcon from '@/assets/group.png';\nimport arrowDownBlue from '@/assets/arrow-down-blue.png';\nimport { useChatbotContext } from '@/hooks/useProviderContext';\nimport { useStyles, GlobalStyle } from './styles';\nimport XAiSender from '../XAiSender';\nimport type { SendContent } from '@/types';\n\nconst md = new MarkdownIt({\n html: true,\n linkify: true,\n typographer: true,\n});\n\n// 自定义 link_open 渲染规则\nconst defaultRender = md.renderer.rules.link_open || ((tokens, idx, options, env, self) => {\n return self.renderToken(tokens, idx, options);\n});\n\n// a 标签打开规则\nmd.renderer.rules.link_open = (tokens, idx, options, env, self) => {\n // 添加 target=\"_blank\"\n const aIndex = tokens[idx].attrIndex('target');\n if (aIndex < 0) {\n tokens[idx].attrPush(['target', '_blank']);\n } else {\n tokens[idx].attrs![aIndex][1] = '_blank';\n }\n // 添加 rel=\"noopener noreferrer\"\n const relIndex = tokens[idx].attrIndex('rel');\n if (relIndex < 0) {\n tokens[idx].attrPush(['rel', 'noopener noreferrer']);\n } else {\n tokens[idx].attrs![relIndex][1] = 'noopener noreferrer';\n }\n return defaultRender(tokens, idx, options, env, self);\n};\n\nexport interface ActionHeaderProps {\n execute: any[];\n thinks: string;\n}\n\n// ActionHeader 组件\nexport const ActionHeader: React.FC<ActionHeaderProps> = ({ execute = [], thinks = '' }) => {\n const styles = useStyles();\n const [expanded, setExpanded] = useState(true);\n const [executeExpanded, setExecuteExpanded] = useState(false);\n\n // 关键修复:只要有思考内容或执行过程就显示,不要同时要求两者都有\n if (!thinks && (!execute || execute.length === 0)) return null;\n\n const last = execute[execute.length - 1] || {};\n const { name } = last;\n const icon = last?.icon || last?.extra?.icon;\n\n return (\n <div className={styles.actionHeaderWrapper}>\n {!expanded && (\n <div className={styles.actionTitle} onClick={() => setExpanded((v) => !v)}>\n <img src={thinkIcon} alt=\"icon\" className={styles.actionHeaderIcon} />\n <span className={styles.flex1}>运行过程</span>\n <img alt=\"展开icon\" src={arrowDown} className={styles.w('16px')} />\n </div>\n )}\n {expanded && (\n <div className={styles.actionHeaderDetail}>\n <div className={styles.actionDetailTitle} onClick={() => setExpanded((v) => !v)}>\n <img src={thinkIcon} alt=\"\" className={clsx(styles.w(14))} />\n <div className={clsx(styles.flex1, styles.pl(10))}>隐藏运行过程</div>\n <img alt=\"收起icon\" src={arrowUp} className={styles.w('16px')} />\n </div>\n\n {thinks && (\n <div className={styles.actionDetailContent} style={{ whiteSpace: 'pre-line' }}>\n {thinks}\n </div>\n )}\n\n {execute && execute.length > 0 && (\n <>\n {!executeExpanded && (\n <div className={styles.executeHiddenWrapper} onClick={() => setExecuteExpanded((v) => !v)}>\n {icon && <img src={icon} alt=\"icon\" className={styles.h(15)} />}\n <span className={styles.flex1}>{name}</span>\n <img alt=\"工具icon\" src={arrowDownBlue} className={styles.w('16px')} />\n </div>\n )}\n {executeExpanded && (\n <div className={styles.executeWrapper}>\n <div className={styles.executeTitle} onClick={() => setExecuteExpanded((v) => !v)}>\n <img src={groupIcon} alt=\"icon\" className={styles.executeHeaderIcon} />\n <span className={styles.flex1}>隐藏运行详情</span>\n <img alt=\"展开详情icon\" src={arrowUp} className={styles.w('16px')} />\n </div>\n <div className={styles.executeContent}>\n {execute.map((action: any, idx: number) => {\n const thinkIcon2 = action?.expandIcon || action?.extra?.expandIcon || action?.extra?.icon || action?.icon;\n const thinkCost = action?.cost || action?.extra?.cost;\n return (\n <div key={action.uniqueId || idx} className={styles.actionHeaderDetailItem}>\n {thinkIcon2 && <img src={thinkIcon2} alt=\"icon\" className={styles.actionHeaderIcon} />}\n <span>{action?.name}</span>\n <span className={styles.actionHeaderCost}>{thinkCost ? `${thinkCost}s` : ''}</span>\n </div>\n );\n })}\n </div>\n </div>\n )}\n </>\n )}\n </div>\n )}\n </div>\n );\n};\n\n// 默认消息功能区\nexport const defaultActions: ActionItem[] = [\n {\n key: 'redo',\n icon: <RedoOutlined />,\n tooltip: '重新生成',\n },\n {\n key: 'copy',\n icon: <CopyOutlined />,\n tooltip: '复制',\n },\n {\n key: 'delete',\n icon: <DeleteOutlined />,\n tooltip: '删除',\n },\n];\n\nconst XAiChatbot: React.FC<XAiChatbotProps> = (props) => {\n const styles = useStyles();\n // 使用新的 Hook 来处理 Provider 上下文\n const { mergedProps } = useChatbotContext(props);\n\n const {\n navbarShow = false,\n navbar,\n renderNavbar = null,\n clearBtnShow = true,\n inputShow = true,\n // renderMessageContent,\n // quickReplies = [],\n // quickRepliesVisible = true,\n // onQuickReplyClick,\n loading: propLoading = false,\n messageTooltip,\n avatar,\n userAvatar,\n messages: propMessages,\n text = '',\n footerTips = '',\n empty = null,\n emptyStateImage = emptyIcon,\n emptyStateText = '我的智能体',\n messageActions = defaultActions,\n onMessagesActionsCallback,\n // 点击帮助消息\n onSuggestMessageClick,\n onSend,\n onClear,\n onStop,\n providerId,\n // 消息顶部\n messageTop,\n enableUpload,\n uploadRequest,\n } = mergedProps as XAiChatbotProps;\n\n // 如果在 Provider 中,使用 Provider 的状态\n const messages = mergedProps.messages || propMessages || [];\n const loading = mergedProps.loading || propLoading;\n\n const [content, setContent] = useState<string>(text); // 输入框文本\n const [files, setFiles] = useState<Attachment[]>([]);\n const lastMessageId = useRef<string>('');\n const isScriptScrolling = useRef<boolean>(false);\n const chatId = providerId ? `za-chatbot-container-${providerId}` : 'za-chatbot-container';\n\n // 滚动到最底部\n const scrollToBottom = () => {\n isScriptScrolling.current = true;\n setTimeout(() => {\n const mainChatWrapper = document.getElementById(chatId);\n if (mainChatWrapper) {\n mainChatWrapper.scrollTop = mainChatWrapper?.scrollHeight;\n }\n isScriptScrolling.current = false;\n }, 0);\n };\n\n // 消息功能区组件\n const FooterActions: React.FC<{ data: Messages; lastMessage: boolean }> = ({ data, lastMessage = false }) => (\n <div className={clsx(styles.flex, styles.gap(13))}>\n {messageActions.map((action: ActionItem, index: number) => {\n if (!lastMessage && action.key === 'redo') return null;\n return (\n <Tooltip key={action.key} title={action.tooltip}>\n <span className={styles.cursor('pointer')} onClick={() => onMessagesActionsCallback?.(index, data)}>\n {action.icon}\n {action.render?.(index, data)}\n </span>\n </Tooltip>\n );\n })}\n </div>\n );\n\n // 消息底部区域\n const MessageFooter: React.FC<{ data: Messages; lastMessage: boolean }> = ({ data, lastMessage = false }) => (\n <>\n {messageTooltip?.(data)}\n <FooterActions data={data} lastMessage={lastMessage} />\n </>\n );\n\n // 聊天角色\n const rolesObject: GetProp<typeof Bubble.List, 'roles'> = {\n assistant: {\n placement: 'start',\n avatar: { icon: avatar || <UserOutlined className={clsx(styles.bg('#fde3cf'), styles.userAvatar)} /> },\n typing: { step: 5, interval: 20 },\n style: {\n maxWidth: 600,\n },\n classNames: {\n content: 'assistant-content',\n },\n },\n user: {\n placement: 'end',\n avatar: { icon: userAvatar || <UserOutlined className={clsx(styles.bg('#87d068'), styles.userAvatar)} /> },\n classNames: {\n content: 'user-content',\n },\n },\n suggestion: {\n placement: 'start',\n avatar: { icon: <UserOutlined />, style: { visibility: 'hidden' } },\n variant: 'borderless',\n },\n };\n\n // 触发发送\n const handleSend = (obj: SendContent) => {\n // 直接使用合并后的 onSend,自动处理 Provider 和独立模式\n onSend?.(obj);\n setContent(''); // 发送后清空输入框内容\n setFiles([]); // 发送后清空文件\n scrollToBottom();\n };\n\n // 输出内容\n const handleChange = (str: string) => {\n setContent(str);\n };\n\n // 停止生成\n const handleStop = () => {\n onStop?.();\n };\n\n // 导航栏\n const NavBar: React.FC = () => {\n if (renderNavbar) {\n return renderNavbar();\n } if (navbar?.title) {\n return (\n <header className={styles.navbar}>\n {navbar.avatar && <img src={navbar.avatar} className={styles.avatar} alt=\"\" />}\n <div>\n <div className={styles.title}>{navbar.title}</div>\n <div className={styles.subtitle}>{navbar.subtitle}</div>\n </div>\n </header>\n );\n }\n return <></>;\n };\n\n // 确认清除\n const confirmClear = () => {\n onClear?.();\n };\n\n // 空状态\n const EmptyState = useMemo(() => () => (\n empty || (\n <div className={styles.emptyWrapper}>\n <img src={emptyStateImage} alt=\"空状态图标\" className={styles.emptyImg} />\n <div className={clsx(styles.text(16), styles.weight(600), styles.textColor('#343434'))}>{emptyStateText}</div>\n </div>\n )\n // eslint-disable-next-line react-hooks/exhaustive-deps\n ), [emptyStateImage, emptyStateText]);\n\n return (\n <>\n <GlobalStyle />\n <MarkdownGlobalStyle />\n <div id=\"x-ai-chatbot\" className={styles.wrapper}>\n { navbarShow && <NavBar /> }\n {/** 消息容器 */}\n <div className={styles.messageContainer}>\n {/* 消息列表主体 */}\n {\n messages?.length\n ? (\n <Bubble.List\n id={chatId}\n roles={rolesObject}\n className={styles.messageList}\n items={messages.map((msg: any) => {\n const { id, role, status, type, execute = [], thinks = '', extra = { noFooter: false }, stepContent } = msg as Messages;\n // 最后一条 AI消息标识\n if (role === MessageRole.assistant) {\n lastMessageId.current = id;\n }\n // 会话内容\n const bubbleContent: any = {\n key: id,\n role,\n loading: status === MessageStatus.init,\n header: (() => messageTop\n || (\n <ActionHeader\n execute={execute}\n thinks={thinks}\n />\n )),\n content: (() => {\n // 文本消息\n if (type === 'TextMessage') {\n // 用户消息\n if (role === 'user') {\n return (\n <div\n className=\"ai-markdown-body\"\n style={{\n minWidth: 0,\n maxWidth: 600,\n }}\n >\n {msg.content?.text}\n </div>\n );\n }\n\n // 输出html字符串\n const html = md.render(msg.content?.text || '');\n // 生成React节点\n const htmlString = reactHtmlParser(html);\n return (\n <>\n {/* 输出阶段性回答内容 */}\n {stepContent?.length && stepContent.map((item) => {\n // 输出html字符串\n const html2 = md.render(item.content || '');\n // 生成React节点\n const stepHtmlString = reactHtmlParser(html2);\n return (\n <div\n key={item.id}\n className=\"ai-markdown-body step-content\"\n style={{\n minWidth: 0,\n maxWidth: 600,\n }}\n >\n <div>\n {stepHtmlString}\n </div>\n <div className={styles.stepLine} />\n </div>\n );\n })}\n {/** 输出最终回答内容 */}\n <div\n className=\"ai-markdown-body\"\n style={{\n minWidth: 0,\n maxWidth: 600,\n }}\n >\n {htmlString}\n </div>\n </>\n );\n }\n // 提示类型\n if (type === 'SuggestionMessage') {\n return (\n <Prompts\n vertical\n items={msg.content as any}\n onItemClick={(info) => {\n onSuggestMessageClick?.(info.data, id);\n if (info.data.description) {\n onSend?.({ text: info.data.description as string });\n }\n }}\n />\n );\n }\n // 其他类型...\n return null;\n })(),\n };\n\n if (!extra.noFooter) {\n bubbleContent.footer = (() => {\n return (\n role === MessageRole.assistant && status !== MessageStatus.failed && (\n <>\n <MessageFooter data={msg as Messages} lastMessage={lastMessageId.current === id} />\n </>\n )\n );\n });\n }\n\n return bubbleContent;\n })}\n />\n )\n : (\n <EmptyState />\n )\n }\n </div>\n {/* 输入框 */}\n { inputShow && (\n <XAiSender\n value={content}\n loading={loading}\n footerTips={footerTips}\n clearBtnShow={clearBtnShow}\n enableUpload={enableUpload}\n files={files}\n onChangeFiles={setFiles}\n uploadRequest={uploadRequest}\n onChange={handleChange}\n onSubmit={handleSend}\n onStop={handleStop}\n onClear={confirmClear}\n />\n ) }\n </div>\n </>\n );\n};\n\nexport default XAiChatbot;\n"],"mappings":"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"}
|
|
@@ -48,7 +48,9 @@ export var 单聊天窗口实例 = {
|
|
|
48
48
|
var handleSendMessage = function handleSendMessage() {
|
|
49
49
|
var _providerRef$current;
|
|
50
50
|
if ((_providerRef$current = providerRef.current) !== null && _providerRef$current !== void 0 && _providerRef$current.chat) {
|
|
51
|
-
providerRef.current.chat(
|
|
51
|
+
providerRef.current.chat({
|
|
52
|
+
text: '你好,AI!'
|
|
53
|
+
});
|
|
52
54
|
} else {
|
|
53
55
|
console.log('XAiProvider ref 未准备好或 chat 方法不存在');
|
|
54
56
|
}
|