@ai-group/chat-sdk 3.2.0 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/README.md +89 -60
  2. package/dist/cjs/components/XAdkChatbot/components/FunctionCallRender/index.d.ts +1 -6
  3. package/dist/cjs/components/XAdkChatbot/components/FunctionCallRender/index.js +19 -3
  4. package/dist/cjs/components/XAdkChatbot/components/FunctionCallRender/index.js.map +2 -2
  5. package/dist/cjs/components/XAdkChatbot/index.js +36 -8
  6. package/dist/cjs/components/XAdkChatbot/index.js.map +3 -3
  7. package/dist/cjs/components/XAdkProvider/compound/DefaultLayout.d.ts +5 -0
  8. package/dist/cjs/components/XAdkProvider/compound/DefaultLayout.js +8 -3
  9. package/dist/cjs/components/XAdkProvider/compound/DefaultLayout.js.map +2 -2
  10. package/dist/cjs/components/XAdkProvider/compound/Messages.d.ts +7 -0
  11. package/dist/cjs/components/XAdkProvider/compound/Messages.js +88 -56
  12. package/dist/cjs/components/XAdkProvider/compound/Messages.js.map +2 -2
  13. package/dist/cjs/components/XAdkProvider/context/ChatStateContext.d.ts +4 -1
  14. package/dist/cjs/components/XAdkProvider/context/ChatStateContext.js.map +2 -2
  15. package/dist/cjs/components/XAdkProvider/index.js +27 -3
  16. package/dist/cjs/components/XAdkProvider/index.js.map +2 -2
  17. package/dist/cjs/components/XAdkSender/index.js +18 -13
  18. package/dist/cjs/components/XAdkSender/index.js.map +2 -2
  19. package/dist/cjs/components/XAdkThoughtChain/index.js +29 -8
  20. package/dist/cjs/components/XAdkThoughtChain/index.js.map +3 -3
  21. package/dist/cjs/hooks/useADKChat.d.ts +1 -1
  22. package/dist/cjs/hooks/useADKChat.js +3 -1
  23. package/dist/cjs/hooks/useADKChat.js.map +2 -2
  24. package/dist/cjs/index.d.ts +3 -2
  25. package/dist/cjs/index.js +20 -1
  26. package/dist/cjs/index.js.map +2 -2
  27. package/dist/cjs/presets/xGroupAdk.d.ts +20 -0
  28. package/dist/cjs/presets/xGroupAdk.js +130 -0
  29. package/dist/cjs/presets/xGroupAdk.js.map +7 -0
  30. package/dist/cjs/types/ChatStrategies.d.ts +45 -0
  31. package/dist/cjs/types/ChatStrategies.js +18 -0
  32. package/dist/cjs/types/ChatStrategies.js.map +7 -0
  33. package/dist/cjs/types/FunctionCallRender.d.ts +35 -0
  34. package/dist/cjs/types/FunctionCallRender.js +32 -0
  35. package/dist/cjs/types/FunctionCallRender.js.map +7 -0
  36. package/dist/cjs/types/XAdkChatbot.d.ts +32 -0
  37. package/dist/cjs/types/XAdkChatbot.js.map +1 -1
  38. package/dist/cjs/types/XAdkProvider.d.ts +19 -0
  39. package/dist/cjs/types/XAdkProvider.js.map +2 -2
  40. package/dist/cjs/types/XAdkSender.d.ts +20 -4
  41. package/dist/cjs/types/XAdkSender.js.map +1 -1
  42. package/dist/cjs/types/XAdkThoughtChain.d.ts +10 -2
  43. package/dist/cjs/types/XAdkThoughtChain.js.map +1 -1
  44. package/dist/cjs/types/XAiChatbot.d.ts +1 -1
  45. package/dist/cjs/types/XAiChatbot.js.map +1 -1
  46. package/dist/cjs/types/XAiProvider.d.ts +1 -1
  47. package/dist/cjs/types/XAiProvider.js.map +1 -1
  48. package/dist/cjs/types/index.d.ts +2 -0
  49. package/dist/cjs/types/index.js +5 -1
  50. package/dist/cjs/types/index.js.map +2 -2
  51. package/dist/cjs/utils/providerManager.d.ts +1 -1
  52. package/dist/cjs/utils/providerManager.js.map +1 -1
  53. package/dist/esm/components/XAdkChatbot/components/FunctionCallRender/index.d.ts +1 -6
  54. package/dist/esm/components/XAdkChatbot/components/FunctionCallRender/index.js +25 -5
  55. package/dist/esm/components/XAdkChatbot/components/FunctionCallRender/index.js.map +1 -1
  56. package/dist/esm/components/XAdkChatbot/index.js +35 -8
  57. package/dist/esm/components/XAdkChatbot/index.js.map +1 -1
  58. package/dist/esm/components/XAdkProvider/compound/DefaultLayout.d.ts +5 -0
  59. package/dist/esm/components/XAdkProvider/compound/DefaultLayout.js +8 -4
  60. package/dist/esm/components/XAdkProvider/compound/DefaultLayout.js.map +1 -1
  61. package/dist/esm/components/XAdkProvider/compound/Messages.d.ts +7 -0
  62. package/dist/esm/components/XAdkProvider/compound/Messages.js +18 -11
  63. package/dist/esm/components/XAdkProvider/compound/Messages.js.map +1 -1
  64. package/dist/esm/components/XAdkProvider/context/ChatStateContext.d.ts +4 -1
  65. package/dist/esm/components/XAdkProvider/context/ChatStateContext.js.map +1 -1
  66. package/dist/esm/components/XAdkProvider/index.js +21 -4
  67. package/dist/esm/components/XAdkProvider/index.js.map +1 -1
  68. package/dist/esm/components/XAdkSender/index.js +25 -17
  69. package/dist/esm/components/XAdkSender/index.js.map +1 -1
  70. package/dist/esm/components/XAdkThoughtChain/index.js +23 -7
  71. package/dist/esm/components/XAdkThoughtChain/index.js.map +1 -1
  72. package/dist/esm/hooks/useADKChat.d.ts +1 -1
  73. package/dist/esm/hooks/useADKChat.js +3 -1
  74. package/dist/esm/hooks/useADKChat.js.map +1 -1
  75. package/dist/esm/index.d.ts +3 -2
  76. package/dist/esm/index.js +2 -1
  77. package/dist/esm/index.js.map +1 -1
  78. package/dist/esm/presets/xGroupAdk.d.ts +20 -0
  79. package/dist/esm/presets/xGroupAdk.js +122 -0
  80. package/dist/esm/presets/xGroupAdk.js.map +1 -0
  81. package/dist/esm/types/ChatStrategies.d.ts +45 -0
  82. package/dist/esm/types/ChatStrategies.js +2 -0
  83. package/dist/esm/types/ChatStrategies.js.map +1 -0
  84. package/dist/esm/types/FunctionCallRender.d.ts +35 -0
  85. package/dist/esm/types/FunctionCallRender.js +14 -0
  86. package/dist/esm/types/FunctionCallRender.js.map +1 -0
  87. package/dist/esm/types/XAdkChatbot.d.ts +32 -0
  88. package/dist/esm/types/XAdkChatbot.js.map +1 -1
  89. package/dist/esm/types/XAdkProvider.d.ts +19 -0
  90. package/dist/esm/types/XAdkProvider.js.map +1 -1
  91. package/dist/esm/types/XAdkSender.d.ts +20 -4
  92. package/dist/esm/types/XAdkSender.js.map +1 -1
  93. package/dist/esm/types/XAdkThoughtChain.d.ts +10 -2
  94. package/dist/esm/types/XAdkThoughtChain.js.map +1 -1
  95. package/dist/esm/types/XAiChatbot.d.ts +1 -1
  96. package/dist/esm/types/XAiChatbot.js.map +1 -1
  97. package/dist/esm/types/XAiProvider.d.ts +1 -1
  98. package/dist/esm/types/XAiProvider.js.map +1 -1
  99. package/dist/esm/types/index.d.ts +2 -0
  100. package/dist/esm/types/index.js +2 -0
  101. package/dist/esm/types/index.js.map +1 -1
  102. package/dist/esm/utils/providerManager.d.ts +1 -1
  103. package/dist/esm/utils/providerManager.js.map +1 -1
  104. package/dist/umd/chat-sdk.min.js +1 -1
  105. package/package.json +12 -14
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/types/XAdkThoughtChain.ts"],
4
- "sourcesContent": ["import React, { type ReactNode } from \"react\";\nimport { IMessage } from \"./XAdkChatbot\";\n\nexport interface XAdkThoughtChainProps {\n defaultOpen?: boolean;\n loading?: boolean;\n title?: ReactNode;\n items: ThoughtChainItemType[];\n showFnCallDetail?: boolean; // 是否可查看调用方法入参\n onConfirm?: (fnCall: any, confirmed: boolean) => void;\n blink?: boolean; // 加载中是否开启闪动效果,默认 false\n}\n\nexport interface TimelineItemProps {\n icon: React.ReactNode;\n title: React.ReactNode;\n children: React.ReactNode;\n collapsible?: boolean; // 是否可展示\n defaultOpen?: boolean; // 是否默认展开\n blink?: boolean; // 是否开启闪动效果\n}\n\nexport interface ThoughtChainItemType {\n type: \"tool\" | \"text\"; // 思维节点类型,目前仅支持 tool | text\n key: string; // 思维节点唯一标识符\n content: string; // 思维节点内容\n title?: React.ReactNode; // 思维节点标题\n collapsible?: boolean; // 思维节点是否可折叠\n msg?: IMessage; // 思维节点信息,tool 类型必传\n}\n"],
4
+ "sourcesContent": ["import React, { type ReactNode } from \"react\";\nimport {\n IMessage,\n RenderFunctionCall,\n ToolRenderKind,\n ChatStrategies,\n} from \"@/types\";\n\nexport interface XAdkThoughtChainProps {\n defaultOpen?: boolean;\n loading?: boolean;\n title?: ReactNode;\n items: ThoughtChainItemType[];\n showFnCallDetail?: boolean;\n onConfirm?: (fnCall: any, confirmed: boolean) => void;\n blink?: boolean;\n /** 自定义工具调用渲染函数,返回 null 则使用默认渲染 */\n renderFunctionCall?: RenderFunctionCall;\n /**\n * 工具名 → 渲染类型的解析策略,默认使用 defaultToolKindResolver\n */\n toolKindResolver?: (name: string | undefined) => ToolRenderKind;\n /** 聊天策略,可由 Provider preset 自动下发,也可在组件局部覆盖。 */\n strategies?: ChatStrategies;\n}\n\nexport interface TimelineItemProps {\n icon: React.ReactNode;\n title: React.ReactNode;\n children: React.ReactNode;\n collapsible?: boolean;\n defaultOpen?: boolean;\n blink?: boolean;\n}\n\nexport interface ThoughtChainItemType {\n type: \"tool\" | \"text\";\n key: string;\n content: string;\n title?: ReactNode;\n collapsible?: boolean;\n msg?: IMessage;\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;",
6
6
  "names": []
7
7
  }
@@ -1,6 +1,6 @@
1
1
  import React, { ReactNode, RefObject, MouseEvent, ReactElement } from 'react';
2
2
  import type { PromptsItemType } from '@ant-design/x';
3
- import type { MessageType } from 'src/client/base';
3
+ import type { MessageType } from '../client/base';
4
4
  import type { UploadProps } from 'antd';
5
5
  import type { Messages } from './XAiMessage';
6
6
  import type { SendContent } from './XAiSender';
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/types/XAiChatbot.ts"],
4
- "sourcesContent": ["import React, { ReactNode, RefObject, MouseEvent, ReactElement } from 'react';\nimport type { PromptsItemType } from '@ant-design/x';\nimport type { MessageType } from 'src/client/base';\nimport type { UploadProps } from 'antd';\nimport type { Messages } from './XAiMessage';\nimport type { SendContent } from './XAiSender';\n\n// 类型定义\nexport interface User {\n id: string;\n name: string;\n avatar?: string;\n }\n\nexport interface MessageProps {\n _id: string;\n type: string;\n content: Record<string, any>;\n createdAt: number;\n user: User;\n position?: 'left' | 'right' | 'center' | 'pop';\n hasTime?: boolean;\n status?: 'pending' | 'sent' | 'fail';\n }\n\nexport interface QuickReplyItemProps {\n name: string;\n code: string;\n icon?: string;\n img?: string;\n isNew?: boolean;\n isHighlight?: boolean;\n }\n\nexport interface ComposerHandle {\n setText: (text: string) => void;\n }\n\nexport interface ScrollToEndOptions {\n animated?: boolean;\n force?: boolean;\n }\n\nexport interface MessageContainerHandle {\n scrollToEnd: (options?: ScrollToEndOptions) => void;\n }\n\nexport interface NavbarProps {\n title?: string;\n subtitle?: string;\n avatar?: string;\n}\n\nexport interface ToolbarItemProps {\n id: string;\n icon: string;\n label: string;\n disabled?: boolean;\n }\n\nexport interface IconButtonProps {\n icon: string;\n onClick: () => void;\n disabled?: boolean;\n }\n\nexport interface RecorderProps {\n onStart?: () => void;\n onStop?: (audioBlob: Blob) => void;\n onError?: (error: Error) => void;\n }\n\nexport type InputType = 'text' | 'voice';\n\n// chatbot 会话字段\nexport interface ChatbotMessageFields {\n messages?: MessageType[];\n setMessages?: React.Dispatch<React.SetStateAction<MessageType[]>>;\n /** 发送消息回调 */\n onSend?: (content: SendContent) => void;\n /** 清空消息回调 */\n onClear?: () => void;\n /** 停止生成回调 */\n onStop?: () => void;\n}\n\nexport interface ActionItem {\n key?: string;\n icon?: React.ReactNode;\n render?: (index: number, msg: any) => React.ReactNode;\n tooltip?: string;\n}\n\n/**\n * AI 聊天机器人组件\n */\nexport interface XAiChatbotProps extends ChatbotMessageFields {\n /** 宽屏断点 */\n wideBreakpoint?: string;\n /** 导航栏展示 */\n navbarShow?: boolean;\n /** 导航栏配置 */\n navbar?: NavbarProps;\n /** 导航栏渲染函数,会覆盖 navbar */\n renderNavbar?: () => ReactNode;\n /** 是否加载中 */\n loading?: boolean;\n /** 加载更多文案 */\n loadMoreText?: string;\n /** 在消息列表上面的渲染函数 */\n renderBeforeMessageList?: () => ReactNode;\n /** 消息列表 ref */\n messagesRef?: RefObject<MessageContainerHandle>;\n /** 下拉加载回调 */\n onRefresh?: () => Promise<any>;\n /** 滚动消息列表回调 */\n onScroll?: (event: React.UIEvent<HTMLDivElement, UIEvent>) => void;\n /** 消息内容渲染函数 */\n renderMessageContent?: (message: MessageProps) => ReactNode;\n /** 快捷短语列表 */\n quickReplies?: QuickReplyItemProps[];\n /** 快捷短语是否可见 */\n quickRepliesVisible?: boolean;\n // /** 点击快速回复回调 */\n // onQuickReplyClick?: (item: QuickReplyItemProps, index: number) => void;\n // /** 快捷短语的滚动回调 */\n // onQuickReplyScroll?: () => void;\n // /** 快捷短语渲染函数,会覆盖 quickReplies */\n // renderQuickReplies?: () => ReactNode;\n /** 输入框初始内容 */\n text?: string;\n /** 空状态渲染插槽 */\n empty?: ReactElement;\n /** 空状态图片 */\n emptyStateImage?: string;\n /** 空状态文案 */\n emptyStateText?: string;\n /** 输入框占位符 */\n placeholder?: string;\n /** 输入方式 */\n inputType?: InputType;\n // /** 输入方式切换回调 */\n // onInputTypeChange?: (inputType: InputType) => void;\n /** 语音输入配置 */\n recorder?: RecorderProps;\n /** 工具栏配置 */\n toolbar?: ToolbarItemProps[];\n /** AI头像 */\n avatar?: ReactNode;\n /** 用户头像 */\n userAvatar?: ReactNode;\n /** 发送按钮 */\n sendBtn?: ReactNode;\n /** 是否展示清空按钮 */\n clearBtnShow? : boolean;\n /** 工具栏点击回调 */\n onToolbarClick?: (item: ToolbarItemProps, event: MouseEvent) => void;\n /** 工具栏打开/关闭回调 */\n onAccessoryToggle?: (isAccessoryOpen: boolean) => void;\n /** 输入框右边图标按钮配置 */\n rightAction?: IconButtonProps;\n /** 底部文案 */\n footerTips?: string;\n /** 帮助消息点击回调 */\n onSuggestMessageClick?: (item: PromptsItemType, id: string) => void;\n /** 消息左下角展示字段 */\n messageTooltip?: (msg: Messages) => React.ReactNode;\n /** 消息右下角功能区 */\n messageActions?: ActionItem[];\n /** 消息右下角功能区点击回调 */\n onMessagesActionsCallback?: (index: number, data: Messages) => void; // 点击回调\n /** 输入组件 */\n Composer?: React.ElementType;\n /** 是否展示输入框 */\n inputShow?: boolean;\n /** 多个chatbot唯一键 */\n providerId?: string;\n /** 消息顶部 */\n messageTop?: ReactNode;\n enableUpload?: boolean;\n uploadRequest?: UploadProps['customRequest'];\n }\n"],
4
+ "sourcesContent": ["import React, { ReactNode, RefObject, MouseEvent, ReactElement } from 'react';\nimport type { PromptsItemType } from '@ant-design/x';\nimport type { MessageType } from '../client/base';\nimport type { UploadProps } from 'antd';\nimport type { Messages } from './XAiMessage';\nimport type { SendContent } from './XAiSender';\n\n// 类型定义\nexport interface User {\n id: string;\n name: string;\n avatar?: string;\n }\n\nexport interface MessageProps {\n _id: string;\n type: string;\n content: Record<string, any>;\n createdAt: number;\n user: User;\n position?: 'left' | 'right' | 'center' | 'pop';\n hasTime?: boolean;\n status?: 'pending' | 'sent' | 'fail';\n }\n\nexport interface QuickReplyItemProps {\n name: string;\n code: string;\n icon?: string;\n img?: string;\n isNew?: boolean;\n isHighlight?: boolean;\n }\n\nexport interface ComposerHandle {\n setText: (text: string) => void;\n }\n\nexport interface ScrollToEndOptions {\n animated?: boolean;\n force?: boolean;\n }\n\nexport interface MessageContainerHandle {\n scrollToEnd: (options?: ScrollToEndOptions) => void;\n }\n\nexport interface NavbarProps {\n title?: string;\n subtitle?: string;\n avatar?: string;\n}\n\nexport interface ToolbarItemProps {\n id: string;\n icon: string;\n label: string;\n disabled?: boolean;\n }\n\nexport interface IconButtonProps {\n icon: string;\n onClick: () => void;\n disabled?: boolean;\n }\n\nexport interface RecorderProps {\n onStart?: () => void;\n onStop?: (audioBlob: Blob) => void;\n onError?: (error: Error) => void;\n }\n\nexport type InputType = 'text' | 'voice';\n\n// chatbot 会话字段\nexport interface ChatbotMessageFields {\n messages?: MessageType[];\n setMessages?: React.Dispatch<React.SetStateAction<MessageType[]>>;\n /** 发送消息回调 */\n onSend?: (content: SendContent) => void;\n /** 清空消息回调 */\n onClear?: () => void;\n /** 停止生成回调 */\n onStop?: () => void;\n}\n\nexport interface ActionItem {\n key?: string;\n icon?: React.ReactNode;\n render?: (index: number, msg: any) => React.ReactNode;\n tooltip?: string;\n}\n\n/**\n * AI 聊天机器人组件\n */\nexport interface XAiChatbotProps extends ChatbotMessageFields {\n /** 宽屏断点 */\n wideBreakpoint?: string;\n /** 导航栏展示 */\n navbarShow?: boolean;\n /** 导航栏配置 */\n navbar?: NavbarProps;\n /** 导航栏渲染函数,会覆盖 navbar */\n renderNavbar?: () => ReactNode;\n /** 是否加载中 */\n loading?: boolean;\n /** 加载更多文案 */\n loadMoreText?: string;\n /** 在消息列表上面的渲染函数 */\n renderBeforeMessageList?: () => ReactNode;\n /** 消息列表 ref */\n messagesRef?: RefObject<MessageContainerHandle>;\n /** 下拉加载回调 */\n onRefresh?: () => Promise<any>;\n /** 滚动消息列表回调 */\n onScroll?: (event: React.UIEvent<HTMLDivElement, UIEvent>) => void;\n /** 消息内容渲染函数 */\n renderMessageContent?: (message: MessageProps) => ReactNode;\n /** 快捷短语列表 */\n quickReplies?: QuickReplyItemProps[];\n /** 快捷短语是否可见 */\n quickRepliesVisible?: boolean;\n // /** 点击快速回复回调 */\n // onQuickReplyClick?: (item: QuickReplyItemProps, index: number) => void;\n // /** 快捷短语的滚动回调 */\n // onQuickReplyScroll?: () => void;\n // /** 快捷短语渲染函数,会覆盖 quickReplies */\n // renderQuickReplies?: () => ReactNode;\n /** 输入框初始内容 */\n text?: string;\n /** 空状态渲染插槽 */\n empty?: ReactElement;\n /** 空状态图片 */\n emptyStateImage?: string;\n /** 空状态文案 */\n emptyStateText?: string;\n /** 输入框占位符 */\n placeholder?: string;\n /** 输入方式 */\n inputType?: InputType;\n // /** 输入方式切换回调 */\n // onInputTypeChange?: (inputType: InputType) => void;\n /** 语音输入配置 */\n recorder?: RecorderProps;\n /** 工具栏配置 */\n toolbar?: ToolbarItemProps[];\n /** AI头像 */\n avatar?: ReactNode;\n /** 用户头像 */\n userAvatar?: ReactNode;\n /** 发送按钮 */\n sendBtn?: ReactNode;\n /** 是否展示清空按钮 */\n clearBtnShow? : boolean;\n /** 工具栏点击回调 */\n onToolbarClick?: (item: ToolbarItemProps, event: MouseEvent) => void;\n /** 工具栏打开/关闭回调 */\n onAccessoryToggle?: (isAccessoryOpen: boolean) => void;\n /** 输入框右边图标按钮配置 */\n rightAction?: IconButtonProps;\n /** 底部文案 */\n footerTips?: string;\n /** 帮助消息点击回调 */\n onSuggestMessageClick?: (item: PromptsItemType, id: string) => void;\n /** 消息左下角展示字段 */\n messageTooltip?: (msg: Messages) => React.ReactNode;\n /** 消息右下角功能区 */\n messageActions?: ActionItem[];\n /** 消息右下角功能区点击回调 */\n onMessagesActionsCallback?: (index: number, data: Messages) => void; // 点击回调\n /** 输入组件 */\n Composer?: React.ElementType;\n /** 是否展示输入框 */\n inputShow?: boolean;\n /** 多个chatbot唯一键 */\n providerId?: string;\n /** 消息顶部 */\n messageTop?: ReactNode;\n enableUpload?: boolean;\n uploadRequest?: UploadProps['customRequest'];\n }\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;",
6
6
  "names": []
7
7
  }
@@ -1,5 +1,5 @@
1
1
  import React, { ReactNode } from 'react';
2
- import { AiClient } from 'src/client/base';
2
+ import { AiClient } from '../client/base';
3
3
  import type { ChatbotMessageFields } from './XAiChatbot';
4
4
  import type { Messages, SendContent, SessionData, ChatConfig, ThemeType } from "./";
5
5
  /**
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/types/XAiProvider.ts"],
4
- "sourcesContent": ["// context/ProviderContext.ts\nimport React, { ReactNode } from 'react';\nimport { AiClient } from 'src/client/base';\nimport type { ChatbotMessageFields } from './XAiChatbot';\nimport type { Messages, SendContent, SessionData, ChatConfig, ThemeType } from '@/types';\n\n/**\n * 错误码枚举(数字格式)\n * @enum {string}\n * @version 1.0.0\n */\nexport enum ErrorCodeNum {\n /** 应用下架 */\n APP_NOT_ENABLE = 'client_50017',\n /** 应用删除 */\n APP_DELETED = 'client_50017',\n /** 无该应用 */\n APP_NOT_FOUND = 'client_59999',\n /** 接口报错 */\n API_ERROR = 'client_50054',\n}\n\n/**\n * 错误码枚举\n * @enum {string}\n * @version 1.0.0\n */\nexport enum ErrorCode {\n /** 应用未启用 */\n APP_NOT_ENABLE = 'APP_NOT_ENABLE',\n /** 应用已删除 */\n APP_DELETED = 'APP_DELETED',\n /** 应用未找到 */\n APP_NOT_FOUND = 'APP_NOT_FOUND',\n /** API 错误 */\n API_ERROR = 'API_ERROR',\n}\n\n/**\n * 错误码映射表\n * @type {Record<string, {code: ErrorCode, message: string}>}\n * @version 1.0.0\n */\nexport const ErrorCodeMap = {\n client_50017: {\n code: ErrorCode.APP_NOT_ENABLE,\n message: '该应用已删除或已下架',\n },\n client_50054: {\n code: ErrorCode.API_ERROR,\n message: '应用服务端出错',\n },\n};\n\n/**\n * 成功状态码枚举\n * @enum {string}\n * @version 1.0.0\n */\nexport enum SuccessCode {\n /** 应用配置初始化成功 */\n APP_CONFIG_INIT_SUCCESS = 'APP_CONFIG_INIT_SUCCESS',\n /** 应用消息初始化成功 */\n APP_MESSAGES_INIT_SUCCESS = 'APP_MESSAGES_INIT_SUCCESS',\n}\n\n/**\n * 错误信息接口\n * @interface Error\n * @version 1.0.0\n */\nexport interface Error {\n /** 错误码 */\n code: ErrorCode;\n /** 错误信息 */\n message: string;\n}\n\n/**\n * 成功信息接口\n * @interface Success\n * @version 1.0.0\n */\nexport interface Success {\n /** 成功状态码 */\n code: SuccessCode;\n /** 成功信息 */\n message: string;\n /** 成功数据 */\n data?: any;\n}\n\n/**\n * XAiProvider 操作句柄接口\n * @interface XAiProviderHandle\n * @version 1.0.0\n */\nexport interface XAiProviderHandle {\n /**\n * 发送聊天消息\n * @param content - 消息内容\n * @type {(content: string) => void}\n * @version 1.0.0\n */\n chat: (content: SendContent) => void;\n\n /**\n * 停止聊天\n * @type {() => void}\n * @version 1.0.0\n */\n stopChat: () => void;\n\n /**\n * 重新发送聊天\n * @type {() => void}\n * @version 1.0.0\n */\n reChat: () => void;\n\n /**\n * 获取应用信息\n * @returns {any} 应用信息对象\n * @type {() => any}\n * @version 1.0.0\n */\n getAppInfo: () => any;\n\n /**\n * 获取消息列表\n * @returns {Messages[]} 消息数组\n * @type {() => Messages[]}\n * @version 1.0.0\n */\n getMessages: () => Messages[];\n\n /**\n * 获取会话列表\n * @returns {}\n */\n getSessions: () => SessionData[];\n\n /**\n * 重新设置当前会话\n * @param id - 会话ID\n * @type {(id: string) => void}\n * @version 1.0.0\n */\n setCurrentSession: (id: string) => void;\n}\n\nexport interface sessionConfig {\n /**\n * 是否展示会话列表\n * @type {boolean}\n * @default false\n */\n showSessionList?: boolean;\n}\n\n\n/**\n * XAiProvider 配置接口\n * @interface XAiProviderConfig\n * @version 1.0.0\n */\nexport interface XAiProviderConfig {\n /**\n * 应用唯一编号\n * @type {string}\n * @default undefined\n * @version 1.0.0\n */\n appNo?: string;\n\n /**\n * 会话配置\n * @type {sessionConfig}\n */\n session?: sessionConfig;\n\n /**\n * 对话框配置\n * @type {ChatConfig}\n */\n chatProps?: ChatConfig;\n\n /**\n * 是否启用调试模式\n * @type {boolean}\n * @default false\n * @version 1.0.0\n */\n debug?: boolean;\n}\n\n/**\n * XAiProvider 组件属性接口\n * @interface XAiProviderProps\n * @version 1.0.0\n */\nexport interface XAiProviderProps {\n /**\n * AI 服务地址\n * @type {string}\n * @version 1.0.0\n */\n url: string;\n\n /**\n * 认证 token\n * @type {string}\n * @version 1.0.0\n */\n token: string;\n\n /**\n * 配置信息\n * @type {XAiProviderConfig}\n * @default undefined\n * @version 1.0.0\n */\n config?: XAiProviderConfig;\n\n /**\n * Provider 唯一标识,用于区分多个 Provider 实例\n * @type {string}\n * @default undefined\n * @version 1.0.0\n */\n providerId?: string;\n\n /**\n * Token 刷新回调\n * @type {() => Promise<string>}\n * @default undefined\n * @version 1.0.0\n */\n onRefreshToken?: () => Promise<string>;\n\n /**\n * 应用无法正常渲染回调\n * @type {(error: Error) => void}\n * @default undefined\n * @version 1.0.0\n */\n onError?: (error: Error) => void;\n\n /**\n * 应用正常渲染回调\n * @type {(success: Success) => void}\n * @default undefined\n * @version 1.0.0\n */\n onSuccess?: (success: Success) => void;\n\n /**\n * 消息返回回调\n * @type {(data: Messages) => void}\n * @default undefined\n * @version 1.0.0\n */\n onMessage?: (content: string, data: Messages) => void;\n\n /**\n * 子组件\n * @type {ReactNode}\n * @version 1.0.0\n */\n children: ReactNode;\n}\n\n/**\n * XAiSDK 组件属性接口\n * @interface XAiSDKProps\n * @extends XAiProviderProps\n * @version 1.0.0\n */\nexport interface XAiSDKProps extends XAiProviderProps {\n /**\n * 主题类型\n * @type {ThemeType}\n * @default 'default'\n * @version 1.0.0\n */\n theme?: ThemeType;\n\n /**\n * 组件属性配置\n * @type {object}\n * @default undefined\n * @version 1.0.0\n */\n componentProps?: {\n /**\n * 组件ID\n * @type {string}\n * @default undefined\n * @version 1.0.0\n */\n id?: string;\n /** 支持任意 CSS 属性 */\n [key: string]: any;\n };\n}\n\n/**\n * XAi 上下文类型接口\n * @interface XAiContextType\n * @extends Required<ChatbotMessageFields>\n * @version 1.0.0\n */\nexport interface XAiContextType extends Required<ChatbotMessageFields> {\n /**\n * AI 客户端实例\n * @type {AiClient | null}\n * @default null\n * @version 1.0.0\n */\n client: AiClient | null;\n\n /**\n * 认证令牌\n * @type {string}\n * @version 1.0.0\n */\n token: string;\n\n /**\n * 加载状态\n * @type {boolean}\n * @default false\n * @version 1.0.0\n */\n loading: boolean;\n\n /**\n * 错误信息\n * @type {string | null}\n * @default null\n * @version 1.0.0\n */\n error: string | null;\n}\n\n/**\n * XAi 上下文对象\n * @type {React.Context<XAiContextType | null>}\n * @version 1.0.0\n */\nexport const XAiContext = React.createContext<XAiContextType | null>(null);\n"],
4
+ "sourcesContent": ["// context/ProviderContext.ts\nimport React, { ReactNode } from 'react';\nimport { AiClient } from '../client/base';\nimport type { ChatbotMessageFields } from './XAiChatbot';\nimport type { Messages, SendContent, SessionData, ChatConfig, ThemeType } from '@/types';\n\n/**\n * 错误码枚举(数字格式)\n * @enum {string}\n * @version 1.0.0\n */\nexport enum ErrorCodeNum {\n /** 应用下架 */\n APP_NOT_ENABLE = 'client_50017',\n /** 应用删除 */\n APP_DELETED = 'client_50017',\n /** 无该应用 */\n APP_NOT_FOUND = 'client_59999',\n /** 接口报错 */\n API_ERROR = 'client_50054',\n}\n\n/**\n * 错误码枚举\n * @enum {string}\n * @version 1.0.0\n */\nexport enum ErrorCode {\n /** 应用未启用 */\n APP_NOT_ENABLE = 'APP_NOT_ENABLE',\n /** 应用已删除 */\n APP_DELETED = 'APP_DELETED',\n /** 应用未找到 */\n APP_NOT_FOUND = 'APP_NOT_FOUND',\n /** API 错误 */\n API_ERROR = 'API_ERROR',\n}\n\n/**\n * 错误码映射表\n * @type {Record<string, {code: ErrorCode, message: string}>}\n * @version 1.0.0\n */\nexport const ErrorCodeMap = {\n client_50017: {\n code: ErrorCode.APP_NOT_ENABLE,\n message: '该应用已删除或已下架',\n },\n client_50054: {\n code: ErrorCode.API_ERROR,\n message: '应用服务端出错',\n },\n};\n\n/**\n * 成功状态码枚举\n * @enum {string}\n * @version 1.0.0\n */\nexport enum SuccessCode {\n /** 应用配置初始化成功 */\n APP_CONFIG_INIT_SUCCESS = 'APP_CONFIG_INIT_SUCCESS',\n /** 应用消息初始化成功 */\n APP_MESSAGES_INIT_SUCCESS = 'APP_MESSAGES_INIT_SUCCESS',\n}\n\n/**\n * 错误信息接口\n * @interface Error\n * @version 1.0.0\n */\nexport interface Error {\n /** 错误码 */\n code: ErrorCode;\n /** 错误信息 */\n message: string;\n}\n\n/**\n * 成功信息接口\n * @interface Success\n * @version 1.0.0\n */\nexport interface Success {\n /** 成功状态码 */\n code: SuccessCode;\n /** 成功信息 */\n message: string;\n /** 成功数据 */\n data?: any;\n}\n\n/**\n * XAiProvider 操作句柄接口\n * @interface XAiProviderHandle\n * @version 1.0.0\n */\nexport interface XAiProviderHandle {\n /**\n * 发送聊天消息\n * @param content - 消息内容\n * @type {(content: string) => void}\n * @version 1.0.0\n */\n chat: (content: SendContent) => void;\n\n /**\n * 停止聊天\n * @type {() => void}\n * @version 1.0.0\n */\n stopChat: () => void;\n\n /**\n * 重新发送聊天\n * @type {() => void}\n * @version 1.0.0\n */\n reChat: () => void;\n\n /**\n * 获取应用信息\n * @returns {any} 应用信息对象\n * @type {() => any}\n * @version 1.0.0\n */\n getAppInfo: () => any;\n\n /**\n * 获取消息列表\n * @returns {Messages[]} 消息数组\n * @type {() => Messages[]}\n * @version 1.0.0\n */\n getMessages: () => Messages[];\n\n /**\n * 获取会话列表\n * @returns {}\n */\n getSessions: () => SessionData[];\n\n /**\n * 重新设置当前会话\n * @param id - 会话ID\n * @type {(id: string) => void}\n * @version 1.0.0\n */\n setCurrentSession: (id: string) => void;\n}\n\nexport interface sessionConfig {\n /**\n * 是否展示会话列表\n * @type {boolean}\n * @default false\n */\n showSessionList?: boolean;\n}\n\n\n/**\n * XAiProvider 配置接口\n * @interface XAiProviderConfig\n * @version 1.0.0\n */\nexport interface XAiProviderConfig {\n /**\n * 应用唯一编号\n * @type {string}\n * @default undefined\n * @version 1.0.0\n */\n appNo?: string;\n\n /**\n * 会话配置\n * @type {sessionConfig}\n */\n session?: sessionConfig;\n\n /**\n * 对话框配置\n * @type {ChatConfig}\n */\n chatProps?: ChatConfig;\n\n /**\n * 是否启用调试模式\n * @type {boolean}\n * @default false\n * @version 1.0.0\n */\n debug?: boolean;\n}\n\n/**\n * XAiProvider 组件属性接口\n * @interface XAiProviderProps\n * @version 1.0.0\n */\nexport interface XAiProviderProps {\n /**\n * AI 服务地址\n * @type {string}\n * @version 1.0.0\n */\n url: string;\n\n /**\n * 认证 token\n * @type {string}\n * @version 1.0.0\n */\n token: string;\n\n /**\n * 配置信息\n * @type {XAiProviderConfig}\n * @default undefined\n * @version 1.0.0\n */\n config?: XAiProviderConfig;\n\n /**\n * Provider 唯一标识,用于区分多个 Provider 实例\n * @type {string}\n * @default undefined\n * @version 1.0.0\n */\n providerId?: string;\n\n /**\n * Token 刷新回调\n * @type {() => Promise<string>}\n * @default undefined\n * @version 1.0.0\n */\n onRefreshToken?: () => Promise<string>;\n\n /**\n * 应用无法正常渲染回调\n * @type {(error: Error) => void}\n * @default undefined\n * @version 1.0.0\n */\n onError?: (error: Error) => void;\n\n /**\n * 应用正常渲染回调\n * @type {(success: Success) => void}\n * @default undefined\n * @version 1.0.0\n */\n onSuccess?: (success: Success) => void;\n\n /**\n * 消息返回回调\n * @type {(data: Messages) => void}\n * @default undefined\n * @version 1.0.0\n */\n onMessage?: (content: string, data: Messages) => void;\n\n /**\n * 子组件\n * @type {ReactNode}\n * @version 1.0.0\n */\n children: ReactNode;\n}\n\n/**\n * XAiSDK 组件属性接口\n * @interface XAiSDKProps\n * @extends XAiProviderProps\n * @version 1.0.0\n */\nexport interface XAiSDKProps extends XAiProviderProps {\n /**\n * 主题类型\n * @type {ThemeType}\n * @default 'default'\n * @version 1.0.0\n */\n theme?: ThemeType;\n\n /**\n * 组件属性配置\n * @type {object}\n * @default undefined\n * @version 1.0.0\n */\n componentProps?: {\n /**\n * 组件ID\n * @type {string}\n * @default undefined\n * @version 1.0.0\n */\n id?: string;\n /** 支持任意 CSS 属性 */\n [key: string]: any;\n };\n}\n\n/**\n * XAi 上下文类型接口\n * @interface XAiContextType\n * @extends Required<ChatbotMessageFields>\n * @version 1.0.0\n */\nexport interface XAiContextType extends Required<ChatbotMessageFields> {\n /**\n * AI 客户端实例\n * @type {AiClient | null}\n * @default null\n * @version 1.0.0\n */\n client: AiClient | null;\n\n /**\n * 认证令牌\n * @type {string}\n * @version 1.0.0\n */\n token: string;\n\n /**\n * 加载状态\n * @type {boolean}\n * @default false\n * @version 1.0.0\n */\n loading: boolean;\n\n /**\n * 错误信息\n * @type {string | null}\n * @default null\n * @version 1.0.0\n */\n error: string | null;\n}\n\n/**\n * XAi 上下文对象\n * @type {React.Context<XAiContextType | null>}\n * @version 1.0.0\n */\nexport const XAiContext = React.createContext<XAiContextType | null>(null);\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAAiC;AAU1B,IAAK,eAAL,kBAAKA,kBAAL;AAEL,EAAAA,cAAA,oBAAiB;AAEjB,EAAAA,cAAA,iBAAc;AAEd,EAAAA,cAAA,mBAAgB;AAEhB,EAAAA,cAAA,eAAY;AARF,SAAAA;AAAA,GAAA;AAgBL,IAAK,YAAL,kBAAKC,eAAL;AAEL,EAAAA,WAAA,oBAAiB;AAEjB,EAAAA,WAAA,iBAAc;AAEd,EAAAA,WAAA,mBAAgB;AAEhB,EAAAA,WAAA,eAAY;AARF,SAAAA;AAAA,GAAA;AAgBL,IAAM,eAAe;AAAA,EAC1B,cAAc;AAAA,IACZ,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AAAA,EACA,cAAc;AAAA,IACZ,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AACF;AAOO,IAAK,cAAL,kBAAKC,iBAAL;AAEL,EAAAA,aAAA,6BAA0B;AAE1B,EAAAA,aAAA,+BAA4B;AAJlB,SAAAA;AAAA,GAAA;AAmSL,IAAM,aAAa,aAAAC,QAAM,cAAqC,IAAI;",
6
6
  "names": ["ErrorCodeNum", "ErrorCode", "SuccessCode", "React"]
7
7
  }
@@ -9,3 +9,5 @@ export * from "./XAdkSender";
9
9
  export * from "./XAdkThoughtChain";
10
10
  export * from "./FileGallery";
11
11
  export * from "./common";
12
+ export * from "./FunctionCallRender";
13
+ export * from "./ChatStrategies";
@@ -27,6 +27,8 @@ __reExport(types_exports, require("./XAdkSender"), module.exports);
27
27
  __reExport(types_exports, require("./XAdkThoughtChain"), module.exports);
28
28
  __reExport(types_exports, require("./FileGallery"), module.exports);
29
29
  __reExport(types_exports, require("./common"), module.exports);
30
+ __reExport(types_exports, require("./FunctionCallRender"), module.exports);
31
+ __reExport(types_exports, require("./ChatStrategies"), module.exports);
30
32
  // Annotate the CommonJS export names for ESM import in node:
31
33
  0 && (module.exports = {
32
34
  ...require("./XAiChatbot"),
@@ -39,6 +41,8 @@ __reExport(types_exports, require("./common"), module.exports);
39
41
  ...require("./XAdkSender"),
40
42
  ...require("./XAdkThoughtChain"),
41
43
  ...require("./FileGallery"),
42
- ...require("./common")
44
+ ...require("./common"),
45
+ ...require("./FunctionCallRender"),
46
+ ...require("./ChatStrategies")
43
47
  });
44
48
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/types/index.ts"],
4
- "sourcesContent": ["export * from \"./XAiChatbot\";\nexport * from \"./XAiMessage\";\nexport * from \"./XAiProvider\";\nexport * from \"./XAiSender\";\nexport * from \"./XAiConversations\";\nexport * from \"./XAdkProvider\";\nexport * from \"./XAdkChatbot\";\nexport * from \"./XAdkSender\";\nexport * from \"./XAdkThoughtChain\";\nexport * from \"./FileGallery\";\nexport * from \"./common\";\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,0BAAc,yBAAd;AACA,0BAAc,yBADd;AAEA,0BAAc,0BAFd;AAGA,0BAAc,wBAHd;AAIA,0BAAc,+BAJd;AAKA,0BAAc,2BALd;AAMA,0BAAc,0BANd;AAOA,0BAAc,yBAPd;AAQA,0BAAc,+BARd;AASA,0BAAc,0BATd;AAUA,0BAAc,qBAVd;",
4
+ "sourcesContent": ["export * from \"./XAiChatbot\";\nexport * from \"./XAiMessage\";\nexport * from \"./XAiProvider\";\nexport * from \"./XAiSender\";\nexport * from \"./XAiConversations\";\nexport * from \"./XAdkProvider\";\nexport * from \"./XAdkChatbot\";\nexport * from \"./XAdkSender\";\nexport * from \"./XAdkThoughtChain\";\nexport * from \"./FileGallery\";\nexport * from \"./common\";\nexport * from \"./FunctionCallRender\";\nexport * from \"./ChatStrategies\";\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,0BAAc,yBAAd;AACA,0BAAc,yBADd;AAEA,0BAAc,0BAFd;AAGA,0BAAc,wBAHd;AAIA,0BAAc,+BAJd;AAKA,0BAAc,2BALd;AAMA,0BAAc,0BANd;AAOA,0BAAc,yBAPd;AAQA,0BAAc,+BARd;AASA,0BAAc,0BATd;AAUA,0BAAc,qBAVd;AAWA,0BAAc,iCAXd;AAYA,0BAAc,6BAZd;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,4 @@
1
- import { MessageType } from 'src/client/base';
1
+ import { MessageType } from '../client/base';
2
2
  export interface ProviderState {
3
3
  client: any;
4
4
  messages: MessageType[];
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/utils/providerManager.ts"],
4
- "sourcesContent": ["import { MessageType } from 'src/client/base';\nexport interface ProviderState {\n client: any;\n messages: MessageType[];\n token: string;\n url: string;\n}\n// Provider 实例管理\nclass ProviderManager {\n private providers = new Map<string, ProviderState>();\n\n // 注册 Provider\n register(providerId: string, data: {\n client: any;\n token: string;\n url: string;\n }) {\n this.providers.set(providerId, {\n ...data,\n messages: [],\n });\n }\n\n // 注销 Provider\n unregister(providerId: string) {\n this.providers.delete(providerId);\n }\n\n // 获取 Provider 数据\n getProvider(providerId: string): ProviderState | undefined {\n return this.providers.get(providerId);\n }\n\n // 添加消息到指定 Provider\n addMessage(providerId: string, message: MessageType) {\n const provider = this.providers.get(providerId);\n if (provider) {\n provider.messages.push(message);\n }\n }\n\n // 清空指定 Provider 的消息\n clearMessages(providerId: string) {\n const provider = this.providers.get(providerId);\n if (provider) {\n provider.messages = [];\n }\n }\n\n // 获取所有 Provider ID\n getProviderIds() {\n return Array.from(this.providers.keys());\n }\n}\n\n// 全局单例\nexport const providerManager = new ProviderManager();\n\n// Hook 用于在组件中使用\nexport const useProviderManager = () => {\n return providerManager;\n};\n"],
4
+ "sourcesContent": ["import { MessageType } from '../client/base';\nexport interface ProviderState {\n client: any;\n messages: MessageType[];\n token: string;\n url: string;\n}\n// Provider 实例管理\nclass ProviderManager {\n private providers = new Map<string, ProviderState>();\n\n // 注册 Provider\n register(providerId: string, data: {\n client: any;\n token: string;\n url: string;\n }) {\n this.providers.set(providerId, {\n ...data,\n messages: [],\n });\n }\n\n // 注销 Provider\n unregister(providerId: string) {\n this.providers.delete(providerId);\n }\n\n // 获取 Provider 数据\n getProvider(providerId: string): ProviderState | undefined {\n return this.providers.get(providerId);\n }\n\n // 添加消息到指定 Provider\n addMessage(providerId: string, message: MessageType) {\n const provider = this.providers.get(providerId);\n if (provider) {\n provider.messages.push(message);\n }\n }\n\n // 清空指定 Provider 的消息\n clearMessages(providerId: string) {\n const provider = this.providers.get(providerId);\n if (provider) {\n provider.messages = [];\n }\n }\n\n // 获取所有 Provider ID\n getProviderIds() {\n return Array.from(this.providers.keys());\n }\n}\n\n// 全局单例\nexport const providerManager = new ProviderManager();\n\n// Hook 用于在组件中使用\nexport const useProviderManager = () => {\n return providerManager;\n};\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,IAAM,kBAAN,MAAsB;AAAA,EAAtB;AACE,SAAQ,YAAY,oBAAI,IAA2B;AAAA;AAAA;AAAA,EAGnD,SAAS,YAAoB,MAI1B;AACD,SAAK,UAAU,IAAI,YAAY;AAAA,MAC7B,GAAG;AAAA,MACH,UAAU,CAAC;AAAA,IACb,CAAC;AAAA,EACH;AAAA;AAAA,EAGA,WAAW,YAAoB;AAC7B,SAAK,UAAU,OAAO,UAAU;AAAA,EAClC;AAAA;AAAA,EAGA,YAAY,YAA+C;AACzD,WAAO,KAAK,UAAU,IAAI,UAAU;AAAA,EACtC;AAAA;AAAA,EAGA,WAAW,YAAoB,SAAsB;AACnD,UAAM,WAAW,KAAK,UAAU,IAAI,UAAU;AAC9C,QAAI,UAAU;AACZ,eAAS,SAAS,KAAK,OAAO;AAAA,IAChC;AAAA,EACF;AAAA;AAAA,EAGA,cAAc,YAAoB;AAChC,UAAM,WAAW,KAAK,UAAU,IAAI,UAAU;AAC9C,QAAI,UAAU;AACZ,eAAS,WAAW,CAAC;AAAA,IACvB;AAAA,EACF;AAAA;AAAA,EAGA,iBAAiB;AACf,WAAO,MAAM,KAAK,KAAK,UAAU,KAAK,CAAC;AAAA,EACzC;AACF;AAGO,IAAM,kBAAkB,IAAI,gBAAgB;AAG5C,IAAM,qBAAqB,MAAM;AACtC,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -1,9 +1,4 @@
1
1
  import React from "react";
2
- import type { IMessage, FunctionCall } from "../../../../types";
3
- export interface FunctionCallRenderProps {
4
- msg: IMessage;
5
- showDetail?: boolean;
6
- onConfirm?: (fnCall: FunctionCall, confirmed: boolean) => void;
7
- }
2
+ import type { FunctionCallRenderProps } from "../../../../types";
8
3
  declare const FunctionCallRender: React.FC<FunctionCallRenderProps>;
9
4
  export default FunctionCallRender;
@@ -2,27 +2,41 @@ import React from "react";
2
2
  import { Alert, Button, Flex, Form, Popover, Tooltip, Typography } from "antd";
3
3
  import { CopyOutlined, ToolOutlined, CheckCircleTwoTone, LoadingOutlined, UserSwitchOutlined, InfoCircleOutlined } from "@ant-design/icons";
4
4
  import { useStyles } from "./styles";
5
+ import { defaultToolKindResolver } from "../../../../types/FunctionCallRender";
5
6
  import JsonView from "../../../XAiJsonView";
7
+ import { Fragment as _Fragment } from "react/jsx-runtime";
6
8
  import { jsx as _jsx } from "react/jsx-runtime";
7
9
  import { jsxs as _jsxs } from "react/jsx-runtime";
8
10
  var FunctionCallRender = function FunctionCallRender(_ref) {
9
11
  var _msg$functionResponse;
10
12
  var msg = _ref.msg,
11
13
  showDetail = _ref.showDetail,
12
- onConfirm = _ref.onConfirm;
14
+ onConfirm = _ref.onConfirm,
15
+ kindProp = _ref.kind,
16
+ _ref$toolKindResolver = _ref.toolKindResolver,
17
+ toolKindResolver = _ref$toolKindResolver === void 0 ? defaultToolKindResolver : _ref$toolKindResolver,
18
+ renderApproval = _ref.renderApproval,
19
+ renderHandoff = _ref.renderHandoff;
13
20
  var styles = useStyles();
14
21
  var fnCall = msg.functionCall;
15
22
  var fnRes = msg.functionResponse;
16
23
  var name = (fnCall === null || fnCall === void 0 ? void 0 : fnCall.name) || (fnRes === null || fnRes === void 0 ? void 0 : fnRes.name);
17
- if (name === "adk_request_confirmation") {
24
+ var kind = kindProp !== null && kindProp !== void 0 ? kindProp : toolKindResolver(name);
25
+ if (kind === "approval") {
18
26
  var _msg$functionCall;
27
+ if (renderApproval) {
28
+ var custom = renderApproval(msg, onConfirm);
29
+ if (custom !== null && custom !== undefined) return /*#__PURE__*/_jsx(_Fragment, {
30
+ children: custom
31
+ });
32
+ }
19
33
  if (fnRes) {
20
34
  var _fnRes$response;
21
35
  if (msg.role === "bot") return null;
22
- var _confirmed = (_fnRes$response = fnRes.response) === null || _fnRes$response === void 0 ? void 0 : _fnRes$response.confirmed;
36
+ var confirmed = (_fnRes$response = fnRes.response) === null || _fnRes$response === void 0 ? void 0 : _fnRes$response.confirmed;
23
37
  return /*#__PURE__*/_jsx("div", {
24
38
  className: styles.wrapper,
25
- children: _confirmed ? /*#__PURE__*/_jsx(Alert, {
39
+ children: confirmed ? /*#__PURE__*/_jsx(Alert, {
26
40
  message: "\u5DF2\u786E\u8BA4",
27
41
  type: "success",
28
42
  showIcon: true,
@@ -68,8 +82,14 @@ var FunctionCallRender = function FunctionCallRender(_ref) {
68
82
  })
69
83
  }, msg.id);
70
84
  }
71
- if (name === "transferToAgent") {
85
+ if (kind === "handoff") {
72
86
  var _fnCall$args;
87
+ if (renderHandoff) {
88
+ var _custom = renderHandoff(msg);
89
+ if (_custom !== null && _custom !== undefined) return /*#__PURE__*/_jsx(_Fragment, {
90
+ children: _custom
91
+ });
92
+ }
73
93
  var agentName = fnCall === null || fnCall === void 0 || (_fnCall$args = fnCall.args) === null || _fnCall$args === void 0 ? void 0 : _fnCall$args.agentName;
74
94
  return /*#__PURE__*/_jsx("div", {
75
95
  className: styles.wrapper,
@@ -1 +1 @@
1
- {"version":3,"names":["React","Alert","Button","Flex","Form","Popover","Tooltip","Typography","CopyOutlined","ToolOutlined","CheckCircleTwoTone","LoadingOutlined","UserSwitchOutlined","InfoCircleOutlined","useStyles","JsonView","jsx","_jsx","jsxs","_jsxs","FunctionCallRender","_ref","_msg$functionResponse","msg","showDetail","onConfirm","styles","fnCall","functionCall","fnRes","functionResponse","name","_msg$functionCall","_fnRes$response","role","confirmed","response","className","wrapper","children","message","type","showIcon","alert","id","originalFn","args","originalFunctionCall","style","justifyContent","confirm","confirmText","justify","gap","size","onClick","_fnCall$args","agentName","color","Text","ellipsis","tooltip","maxWidth","lineHeight","twoToneColor","renderItem","obj","text","str","JSON","stringify","Item","label","align","copyable","icon","marginBottom","value","renderResponse","res","_res$response","error","title","placement","content","width","layout"],"sources":["../../../../../../src/components/XAdkChatbot/components/FunctionCallRender/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { Alert, Button, Flex, Form, Popover, Tooltip, Typography } from \"antd\";\nimport {\n CopyOutlined,\n ToolOutlined,\n CheckCircleTwoTone,\n LoadingOutlined,\n UserSwitchOutlined,\n InfoCircleOutlined,\n} from \"@ant-design/icons\";\nimport type { IMessage, FunctionCall } from \"@/types\";\nimport { useStyles } from \"./styles\";\nimport JsonView from \"@/components/XAiJsonView\";\n\nexport interface FunctionCallRenderProps {\n msg: IMessage;\n showDetail?: boolean;\n onConfirm?: (fnCall: FunctionCall, confirmed: boolean) => void;\n}\n\nconst FunctionCallRender: React.FC<FunctionCallRenderProps> = ({\n msg,\n showDetail,\n onConfirm,\n}) => {\n const styles = useStyles();\n const fnCall = msg.functionCall as FunctionCall;\n const fnRes = msg.functionResponse;\n const name = fnCall?.name || fnRes?.name;\n if (name === \"adk_request_confirmation\") {\n if (fnRes) {\n if (msg.role === \"bot\") return null;\n const confirmed = fnRes.response?.confirmed;\n return (\n <div key={msg.id} className={styles.wrapper}>\n {confirmed ? (\n <Alert\n message=\"已确认\"\n type=\"success\"\n showIcon\n className={styles.alert}\n />\n ) : (\n <Alert\n message=\"已取消\"\n type=\"error\"\n showIcon\n className={styles.alert}\n />\n )}\n </div>\n );\n }\n const originalFn = msg?.functionCall?.args?.originalFunctionCall;\n return (\n <div\n key={msg.id}\n className={styles.wrapper}\n style={{ justifyContent: \"flex-end\" }}\n >\n <div className={styles.confirm}>\n <div className={styles.confirmText}>\n 请确认是否执行工具:{originalFn?.name}\n </div>\n <Flex justify=\"end\" gap={8}>\n <Button\n type=\"default\"\n size=\"small\"\n onClick={() => onConfirm?.(fnCall, false)}\n >\n 取消\n </Button>\n <Button\n type=\"primary\"\n size=\"small\"\n onClick={() => onConfirm?.(fnCall, true)}\n >\n 确认\n </Button>\n </Flex>\n </div>\n </div>\n );\n }\n if (name === \"transferToAgent\") {\n const agentName = fnCall?.args?.agentName;\n return (\n <div key={msg.id} className={styles.wrapper}>\n <div className={styles.fnCall}>\n <UserSwitchOutlined style={{ color: \"#888\" }} />\n <Typography.Text\n ellipsis={{ tooltip: agentName }}\n style={{ maxWidth: 300, lineHeight: \"16px\" }}\n >\n 任务转交:{agentName}\n </Typography.Text>\n {msg.functionResponse ? (\n <CheckCircleTwoTone twoToneColor=\"#52c41a\" />\n ) : (\n <LoadingOutlined />\n )}\n </div>\n </div>\n );\n }\n const renderItem = (obj: any, text: string) => {\n const str = JSON.stringify(obj, null, 2);\n return (\n <Form.Item\n label={\n <Flex align=\"center\">\n <span className=\"mr-2\">{text}</span>\n <Typography.Text\n copyable={{\n text: str,\n icon: <CopyOutlined />,\n }}\n />\n </Flex>\n }\n style={{ marginBottom: 12 }}\n >\n <JsonView value={str} />\n </Form.Item>\n );\n };\n const renderResponse = () => {\n const res = msg.functionResponse;\n if (res) {\n if (res.response?.error) {\n return (\n <Tooltip title={res.response.error}>\n <InfoCircleOutlined style={{ color: \"#faad14\" }} />\n </Tooltip>\n );\n }\n return <CheckCircleTwoTone twoToneColor=\"#52c41a\" />;\n }\n return <LoadingOutlined />;\n };\n return (\n <div key={msg.id} className={styles.wrapper}>\n {showDetail ? (\n <Popover\n placement=\"left\"\n content={\n <Form style={{ width: 400 }} layout=\"vertical\">\n {renderItem(fnCall?.args, \"工具参数\")}\n {renderItem(msg.functionResponse?.response, \"工具响应\")}\n </Form>\n }\n >\n <div className={styles.fnCall}>\n <ToolOutlined style={{ color: \"#888\" }} />\n <Typography.Text\n ellipsis={{ tooltip: name }}\n style={{ maxWidth: 300, lineHeight: \"16px\" }}\n >\n 调用工具:{name}\n </Typography.Text>\n {renderResponse()}\n </div>\n </Popover>\n ) : (\n <div className={styles.fnCall}>\n <ToolOutlined style={{ color: \"#888\" }} />\n <Typography.Text\n ellipsis={{ tooltip: name }}\n style={{ maxWidth: 300, lineHeight: \"16px\" }}\n >\n 调用工具:{name}\n </Typography.Text>\n {renderResponse()}\n </div>\n )}\n </div>\n );\n};\n\nexport default FunctionCallRender;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","Alert","Button","Flex","Form","Popover","Tooltip","Typography","CopyOutlined","ToolOutlined","CheckCircleTwoTone","LoadingOutlined","UserSwitchOutlined","InfoCircleOutlined","useStyles","defaultToolKindResolver","JsonView","Fragment","_Fragment","jsx","_jsx","jsxs","_jsxs","FunctionCallRender","_ref","_msg$functionResponse","msg","showDetail","onConfirm","kindProp","kind","_ref$toolKindResolver","toolKindResolver","renderApproval","renderHandoff","styles","fnCall","functionCall","fnRes","functionResponse","name","_msg$functionCall","custom","undefined","children","_fnRes$response","role","confirmed","response","className","wrapper","message","type","showIcon","alert","id","originalFn","args","originalFunctionCall","style","justifyContent","confirm","confirmText","justify","gap","size","onClick","_fnCall$args","agentName","color","Text","ellipsis","tooltip","maxWidth","lineHeight","twoToneColor","renderItem","obj","text","str","JSON","stringify","Item","label","align","copyable","icon","marginBottom","value","renderResponse","res","_res$response","error","title","placement","content","width","layout"],"sources":["../../../../../../src/components/XAdkChatbot/components/FunctionCallRender/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { Alert, Button, Flex, Form, Popover, Tooltip, Typography } from \"antd\";\nimport {\n CopyOutlined,\n ToolOutlined,\n CheckCircleTwoTone,\n LoadingOutlined,\n UserSwitchOutlined,\n InfoCircleOutlined,\n} from \"@ant-design/icons\";\nimport type { FunctionCallRenderProps, FunctionCall } from \"@/types\";\nimport { useStyles } from \"./styles\";\nimport { defaultToolKindResolver } from \"@/types/FunctionCallRender\";\nimport JsonView from \"@/components/XAiJsonView\";\n\nconst FunctionCallRender: React.FC<FunctionCallRenderProps> = ({\n msg,\n showDetail,\n onConfirm,\n kind: kindProp,\n toolKindResolver = defaultToolKindResolver,\n renderApproval,\n renderHandoff,\n}) => {\n const styles = useStyles();\n const fnCall = msg.functionCall as FunctionCall;\n const fnRes = msg.functionResponse;\n const name = fnCall?.name || fnRes?.name;\n const kind = kindProp ?? toolKindResolver(name);\n\n if (kind === \"approval\") {\n if (renderApproval) {\n const custom = renderApproval(msg, onConfirm);\n if (custom !== null && custom !== undefined) return <>{custom}</>;\n }\n if (fnRes) {\n if (msg.role === \"bot\") return null;\n const confirmed = fnRes.response?.confirmed;\n return (\n <div key={msg.id} className={styles.wrapper}>\n {confirmed ? (\n <Alert\n message=\"已确认\"\n type=\"success\"\n showIcon\n className={styles.alert}\n />\n ) : (\n <Alert\n message=\"已取消\"\n type=\"error\"\n showIcon\n className={styles.alert}\n />\n )}\n </div>\n );\n }\n const originalFn = msg?.functionCall?.args?.originalFunctionCall;\n return (\n <div\n key={msg.id}\n className={styles.wrapper}\n style={{ justifyContent: \"flex-end\" }}\n >\n <div className={styles.confirm}>\n <div className={styles.confirmText}>\n 请确认是否执行工具:{originalFn?.name}\n </div>\n <Flex justify=\"end\" gap={8}>\n <Button\n type=\"default\"\n size=\"small\"\n onClick={() => onConfirm?.(fnCall, false)}\n >\n 取消\n </Button>\n <Button\n type=\"primary\"\n size=\"small\"\n onClick={() => onConfirm?.(fnCall, true)}\n >\n 确认\n </Button>\n </Flex>\n </div>\n </div>\n );\n }\n if (kind === \"handoff\") {\n if (renderHandoff) {\n const custom = renderHandoff(msg);\n if (custom !== null && custom !== undefined) return <>{custom}</>;\n }\n const agentName = fnCall?.args?.agentName;\n return (\n <div key={msg.id} className={styles.wrapper}>\n <div className={styles.fnCall}>\n <UserSwitchOutlined style={{ color: \"#888\" }} />\n <Typography.Text\n ellipsis={{ tooltip: agentName }}\n style={{ maxWidth: 300, lineHeight: \"16px\" }}\n >\n 任务转交:{agentName}\n </Typography.Text>\n {msg.functionResponse ? (\n <CheckCircleTwoTone twoToneColor=\"#52c41a\" />\n ) : (\n <LoadingOutlined />\n )}\n </div>\n </div>\n );\n }\n const renderItem = (obj: any, text: string) => {\n const str = JSON.stringify(obj, null, 2);\n return (\n <Form.Item\n label={\n <Flex align=\"center\">\n <span className=\"mr-2\">{text}</span>\n <Typography.Text\n copyable={{\n text: str,\n icon: <CopyOutlined />,\n }}\n />\n </Flex>\n }\n style={{ marginBottom: 12 }}\n >\n <JsonView value={str} />\n </Form.Item>\n );\n };\n const renderResponse = () => {\n const res = msg.functionResponse;\n if (res) {\n if (res.response?.error) {\n return (\n <Tooltip title={res.response.error}>\n <InfoCircleOutlined style={{ color: \"#faad14\" }} />\n </Tooltip>\n );\n }\n return <CheckCircleTwoTone twoToneColor=\"#52c41a\" />;\n }\n return <LoadingOutlined />;\n };\n return (\n <div key={msg.id} className={styles.wrapper}>\n {showDetail ? (\n <Popover\n placement=\"left\"\n content={\n <Form style={{ width: 400 }} layout=\"vertical\">\n {renderItem(fnCall?.args, \"工具参数\")}\n {renderItem(msg.functionResponse?.response, \"工具响应\")}\n </Form>\n }\n >\n <div className={styles.fnCall}>\n <ToolOutlined style={{ color: \"#888\" }} />\n <Typography.Text\n ellipsis={{ tooltip: name }}\n style={{ maxWidth: 300, lineHeight: \"16px\" }}\n >\n 调用工具:{name}\n </Typography.Text>\n {renderResponse()}\n </div>\n </Popover>\n ) : (\n <div className={styles.fnCall}>\n <ToolOutlined style={{ color: \"#888\" }} />\n <Typography.Text\n ellipsis={{ tooltip: name }}\n style={{ maxWidth: 300, lineHeight: \"16px\" }}\n >\n 调用工具:{name}\n </Typography.Text>\n {renderResponse()}\n </div>\n )}\n </div>\n );\n};\n\nexport default FunctionCallRender;\n"],"mappings":"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"}
@@ -11,6 +11,8 @@ import FunctionCallRender from "./components/FunctionCallRender";
11
11
  import FileGallery from "../FileGallery";
12
12
  import XAdkThoughtChain from "../XAdkThoughtChain";
13
13
  import { parseAgentMessage } from "../../utils";
14
+ import { mergeChatStrategies } from "../../presets/xGroupAdk";
15
+ import { defaultToolKindResolver } from "../../types/FunctionCallRender";
14
16
  import { jsx as _jsx } from "react/jsx-runtime";
15
17
  import { jsxs as _jsxs } from "react/jsx-runtime";
16
18
  import { Fragment as _Fragment } from "react/jsx-runtime";
@@ -27,6 +29,7 @@ var scrollThreshold = 10;
27
29
  * - ✅ 欢迎页面 (agentName/agentIcon/description)
28
30
  */
29
31
  var XAdkChatbot = function XAdkChatbot(_ref) {
32
+ var _mergedStrategies$par;
30
33
  var _ref$loading = _ref.loading,
31
34
  loading = _ref$loading === void 0 ? false : _ref$loading,
32
35
  prologue = _ref.prologue,
@@ -51,13 +54,28 @@ var XAdkChatbot = function XAdkChatbot(_ref) {
51
54
  parseOptions = _ref.parseOptions,
52
55
  _ref$initialized = _ref.initialized,
53
56
  initialized = _ref$initialized === void 0 ? false : _ref$initialized,
54
- onFileClick = _ref.onFileClick;
57
+ onFileClick = _ref.onFileClick,
58
+ renderFunctionCall = _ref.renderFunctionCall,
59
+ toolKindResolver = _ref.toolKindResolver,
60
+ strategies = _ref.strategies,
61
+ preset = _ref.preset;
55
62
  var styles = useStyles();
56
63
  var listRef = useRef(null);
57
64
  var lastScrollTopRef = useRef(0);
58
65
  var userHasScrolledRef = useRef(false);
59
66
  var messagesEndRef = useRef(null);
60
67
  var prevInitializedRef = useRef(false);
68
+ var mergedStrategies = useMemo(function () {
69
+ return mergeChatStrategies(preset, strategies);
70
+ }, [preset, strategies]);
71
+ var resolveToolKind = useCallback(function (name, msg) {
72
+ var _ref2, _toolKindResolver, _mergedStrategies$res;
73
+ return (_ref2 = (_toolKindResolver = toolKindResolver === null || toolKindResolver === void 0 ? void 0 : toolKindResolver(name)) !== null && _toolKindResolver !== void 0 ? _toolKindResolver : (_mergedStrategies$res = mergedStrategies.resolveToolKind) === null || _mergedStrategies$res === void 0 ? void 0 : _mergedStrategies$res.call(mergedStrategies, {
74
+ name: name,
75
+ msg: msg
76
+ })) !== null && _ref2 !== void 0 ? _ref2 : defaultToolKindResolver(name);
77
+ }, [toolKindResolver, mergedStrategies]);
78
+ var parseProcessMessage = (_mergedStrategies$par = mergedStrategies.parseProcessMessage) !== null && _mergedStrategies$par !== void 0 ? _mergedStrategies$par : parseAgentMessage;
61
79
 
62
80
  // 初始化完成时滚动到底部
63
81
  useEffect(function () {
@@ -165,7 +183,7 @@ var XAdkChatbot = function XAdkChatbot(_ref) {
165
183
  }, [messages, enableGrouping]);
166
184
 
167
185
  // ========== 渲染 Bot 消息组 ==========
168
- var renderBotGroup = useCallback(function (group, isLastGroup) {
186
+ var renderBotGroup = useCallback(function (group, isLastGroup, renderFunctionCall) {
169
187
  var msgs = group.msgs,
170
188
  allFiles = group.allFiles;
171
189
  if (!enableProcessParsing) {
@@ -180,10 +198,14 @@ var XAdkChatbot = function XAdkChatbot(_ref) {
180
198
  }, "".concat(msg.id, "-").concat(i));
181
199
  }
182
200
  if (msg.functionCall) {
183
- return /*#__PURE__*/_jsx(FunctionCallRender, {
201
+ var _renderFunctionCall, _msg$functionCall;
202
+ return (_renderFunctionCall = renderFunctionCall === null || renderFunctionCall === void 0 ? void 0 : renderFunctionCall(msg)) !== null && _renderFunctionCall !== void 0 ? _renderFunctionCall : /*#__PURE__*/_jsx(FunctionCallRender, {
184
203
  msg: msg,
185
204
  showDetail: showFnCallDetail,
186
- onConfirm: onConfirm
205
+ onConfirm: onConfirm,
206
+ kind: resolveToolKind((_msg$functionCall = msg.functionCall) === null || _msg$functionCall === void 0 ? void 0 : _msg$functionCall.name, msg),
207
+ renderApproval: mergedStrategies.renderApproval,
208
+ renderHandoff: mergedStrategies.renderHandoff
187
209
  }, "".concat(msg.id, "-").concat(i));
188
210
  }
189
211
  return null;
@@ -255,7 +277,7 @@ var XAdkChatbot = function XAdkChatbot(_ref) {
255
277
  }
256
278
  // 处理文本消息
257
279
  else if (msg.text && !msg.functionResponse) {
258
- var parts = parseAgentMessage(msg.text, parseOptions);
280
+ var parts = parseProcessMessage(msg.text, parseOptions);
259
281
  parts.forEach(function (part, partIdx) {
260
282
  // process 内容放入 currentProcessItems
261
283
  if (["planning", "replanning", "reasoning", "action_log", "process_text"].includes(part.type)) {
@@ -320,7 +342,12 @@ var XAdkChatbot = function XAdkChatbot(_ref) {
320
342
  items: node.items,
321
343
  showFnCallDetail: showFnCallDetail,
322
344
  onConfirm: onConfirm,
323
- defaultOpen: isGroupLoading
345
+ defaultOpen: isGroupLoading,
346
+ renderFunctionCall: renderFunctionCall,
347
+ toolKindResolver: function toolKindResolver(name) {
348
+ return resolveToolKind(name);
349
+ },
350
+ strategies: mergedStrategies
324
351
  }, node.key);
325
352
  }
326
353
 
@@ -390,7 +417,7 @@ var XAdkChatbot = function XAdkChatbot(_ref) {
390
417
  })
391
418
  }))]
392
419
  }, group.id);
393
- }, [enableProcessParsing, parseOptions, showFnCallDetail, onConfirm, loading, showRetry, showCopy, showLog, onRetry, onCopy, onShowLog, actions, onFileClick, styles]);
420
+ }, [enableProcessParsing, parseOptions, parseProcessMessage, showFnCallDetail, onConfirm, loading, showRetry, showCopy, showLog, onRetry, onCopy, onShowLog, actions, onFileClick, styles, resolveToolKind, mergedStrategies]);
394
421
 
395
422
  // ========== 渲染用户消息组 ==========
396
423
  var renderUserGroup = useCallback(function (group) {
@@ -493,7 +520,7 @@ var XAdkChatbot = function XAdkChatbot(_ref) {
493
520
  onFileClick: onFileClick
494
521
  })
495
522
  }), chatGroups.map(function (group, idx) {
496
- return group.role === "user" ? renderUserGroup(group) : renderBotGroup(group, idx === chatGroups.length - 1);
523
+ return group.role === "user" ? renderUserGroup(group) : renderBotGroup(group, idx === chatGroups.length - 1, renderFunctionCall);
497
524
  }), renderSuggestions(), /*#__PURE__*/_jsx("div", {
498
525
  ref: messagesEndRef
499
526
  })]