@ai-group/chat-sdk 3.8.0-alpha.1 → 3.8.0-alpha.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.
Files changed (55) hide show
  1. package/README.md +42 -2
  2. package/dist/cjs/components/XAdkChatbot/index.js +240 -68
  3. package/dist/cjs/components/XAdkChatbot/index.js.map +3 -3
  4. package/dist/cjs/components/XAdkChatbot/styles.d.ts +1 -0
  5. package/dist/cjs/components/XAdkChatbot/styles.js +34 -6
  6. package/dist/cjs/components/XAdkChatbot/styles.js.map +2 -2
  7. package/dist/cjs/components/XAdkProvider/compound/Messages.d.ts +7 -1
  8. package/dist/cjs/components/XAdkProvider/compound/Messages.js +10 -0
  9. package/dist/cjs/components/XAdkProvider/compound/Messages.js.map +2 -2
  10. package/dist/cjs/components/XAdkSender/index.js +69 -5
  11. package/dist/cjs/components/XAdkSender/index.js.map +3 -3
  12. package/dist/cjs/components/XAdkThoughtChain/index.js +7 -3
  13. package/dist/cjs/components/XAdkThoughtChain/index.js.map +2 -2
  14. package/dist/cjs/components/XAdkThoughtChain/styles.d.ts +1 -1
  15. package/dist/cjs/components/XAdkThoughtChain/styles.js +25 -32
  16. package/dist/cjs/components/XAdkThoughtChain/styles.js.map +2 -2
  17. package/dist/cjs/components/XAiChatbot/index.js.map +2 -2
  18. package/dist/cjs/components/XAiProvider/index.js.map +2 -2
  19. package/dist/cjs/hooks/useADKMessageQueue.d.ts +4 -2
  20. package/dist/cjs/hooks/useADKMessageQueue.js +13 -11
  21. package/dist/cjs/hooks/useADKMessageQueue.js.map +2 -2
  22. package/dist/cjs/types/XAdkChatbot.d.ts +36 -0
  23. package/dist/cjs/types/XAdkChatbot.js.map +1 -1
  24. package/dist/cjs/types/XAdkSender.d.ts +20 -1
  25. package/dist/cjs/types/XAdkSender.js.map +1 -1
  26. package/dist/cjs/types/antdx.d.ts +4 -1
  27. package/dist/cjs/types/antdx.js.map +1 -1
  28. package/dist/esm/components/XAdkChatbot/index.js +210 -33
  29. package/dist/esm/components/XAdkChatbot/index.js.map +1 -1
  30. package/dist/esm/components/XAdkChatbot/styles.d.ts +1 -0
  31. package/dist/esm/components/XAdkChatbot/styles.js +30 -29
  32. package/dist/esm/components/XAdkChatbot/styles.js.map +1 -1
  33. package/dist/esm/components/XAdkProvider/compound/Messages.d.ts +7 -1
  34. package/dist/esm/components/XAdkProvider/compound/Messages.js +11 -1
  35. package/dist/esm/components/XAdkProvider/compound/Messages.js.map +1 -1
  36. package/dist/esm/components/XAdkSender/index.js +94 -16
  37. package/dist/esm/components/XAdkSender/index.js.map +1 -1
  38. package/dist/esm/components/XAdkThoughtChain/index.js +7 -7
  39. package/dist/esm/components/XAdkThoughtChain/index.js.map +1 -1
  40. package/dist/esm/components/XAdkThoughtChain/styles.d.ts +1 -1
  41. package/dist/esm/components/XAdkThoughtChain/styles.js +14 -14
  42. package/dist/esm/components/XAdkThoughtChain/styles.js.map +1 -1
  43. package/dist/esm/components/XAiChatbot/index.js.map +1 -1
  44. package/dist/esm/components/XAiProvider/index.js.map +1 -1
  45. package/dist/esm/hooks/useADKMessageQueue.d.ts +4 -2
  46. package/dist/esm/hooks/useADKMessageQueue.js +12 -10
  47. package/dist/esm/hooks/useADKMessageQueue.js.map +1 -1
  48. package/dist/esm/types/XAdkChatbot.d.ts +36 -0
  49. package/dist/esm/types/XAdkChatbot.js.map +1 -1
  50. package/dist/esm/types/XAdkSender.d.ts +20 -1
  51. package/dist/esm/types/XAdkSender.js.map +1 -1
  52. package/dist/esm/types/antdx.d.ts +4 -1
  53. package/dist/esm/types/antdx.js.map +1 -1
  54. package/dist/umd/chat-sdk.min.js +1 -1
  55. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","message","Tooltip","Flex","LikeFilled","LikeOutlined","ReloadOutlined","CopyOutlined","copy","XAdkChatbot","DislikeFeedback","useChatState","useChatActions","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","Messages","_ref","actions","actionsExtra","className","style","showFnCallDetail","renderFunctionCall","strategiesProp","strategies","_useChatState","messages","loading","prologue","suggestions","initialized","showFeedback","showUserActions","appInfo","onFileClick","_useChatActions","suggestChat","reChat","likeMessage","confirmFnCall","primaryColor","appTheme","defaultActions","_ref2","_group$isLike","group","isLastBotMsg","lastMsg","msgs","length","invocationId","isLikeVal","isLike","fullText","filter","m","functionCall","functionResponse","map","text","join","gap","align","padding","color","children","title","cursor","onClick","success","_asyncToGenerator","_regeneratorRuntime","mark","_callee","ok","wrap","_callee$","_context","prev","next","warning","abrupt","sent","error","stop","msg","activeColor","onSubmit","_ref4","_callee2","formData","_callee2$","_context2","_x","apply","arguments","onSuggest","onConfirm","enableGrouping","enableProcessParsing","_objectSpread"],"sources":["../../../../../src/components/XAdkProvider/compound/Messages.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { message, Tooltip, Flex } from \"antd\";\nimport {\n LikeFilled,\n LikeOutlined,\n ReloadOutlined,\n CopyOutlined,\n} from \"@ant-design/icons\";\nimport copy from \"copy-to-clipboard\";\nimport XAdkChatbot from \"../../XAdkChatbot\";\nimport DislikeFeedback from \"./DislikeFeedBack\";\nimport { useChatState } from \"../context/ChatStateContext\";\nimport { useChatActions } from \"../context/ChatActionContext\";\nimport type { ActionExtraProps, ActionProps } from \"@/types\";\nimport type { ChatStrategies } from \"@/types\";\n\nexport interface XAdkMessagesProps {\n /** 自定义操作栏渲染 */\n actions?: ActionProps;\n /** 追加在操作栏之后的内容 */\n actionsExtra?: ActionExtraProps;\n /** 类名 */\n className?: string;\n /** 样式 */\n style?: React.CSSProperties;\n /** 是否显示函数调用详情 */\n showFnCallDetail?: boolean;\n /** 自定义工具调用渲染函数,返回 null 则降级使用默认渲染 */\n renderFunctionCall?: (msg: import(\"@/types\").IMessage) => React.ReactNode | null;\n /** 局部策略覆盖,优先级高于 Provider preset/strategies */\n strategies?: ChatStrategies;\n}\n\n/**\n * Messages - XAdkProvider 的消息展示组件\n *\n * 使用 XAdkChatbot 渲染消息列表\n */\nconst Messages: React.FC<XAdkMessagesProps> = ({\n actions,\n actionsExtra,\n className,\n style,\n showFnCallDetail,\n renderFunctionCall,\n strategies: strategiesProp,\n}) => {\n const {\n messages,\n loading,\n prologue,\n suggestions,\n initialized,\n showFeedback,\n showUserActions,\n appInfo,\n onFileClick,\n strategies,\n } = useChatState();\n const { suggestChat, reChat, likeMessage, confirmFnCall } = useChatActions();\n\n const primaryColor = appInfo?.appTheme || \"#1677ff\";\n\n const defaultActions = useCallback<ActionProps>(\n ({ message: group, isLastBotMsg }) => {\n // 取该组最后一条 bot 消息的 invocationId 和 isLike 状态\n const lastMsg = group.msgs[group.msgs.length - 1];\n const invocationId = lastMsg?.invocationId;\n const isLikeVal = group.isLike ?? 0;\n\n const fullText = group.msgs\n .filter((m) => !m.functionCall && !m.functionResponse)\n .map((m) => m.text || \"\")\n .join(\"\");\n\n return (\n <Flex\n gap={16}\n align=\"center\"\n style={{ padding: \"4px 0\", color: \"#81858c\" }}\n >\n {isLastBotMsg && (\n <Tooltip title=\"重新生成\">\n <ReloadOutlined style={{ cursor: \"pointer\" }} onClick={reChat} />\n </Tooltip>\n )}\n <Tooltip title=\"复制内容\">\n <CopyOutlined\n style={{ cursor: \"pointer\" }}\n onClick={() => {\n copy(fullText);\n message.success(\"复制成功\");\n }}\n />\n </Tooltip>\n {showFeedback && invocationId && (\n <>\n <Tooltip title=\"赞\">\n {isLikeVal === 1 ? (\n <LikeFilled\n style={{ color: primaryColor, cursor: \"pointer\" }}\n />\n ) : (\n <LikeOutlined\n style={{ cursor: \"pointer\" }}\n onClick={async () => {\n if (isLikeVal !== 0) {\n message.warning(\"已收到您的反馈,无需重复提交\");\n return;\n }\n const ok = await likeMessage(invocationId, 1);\n if (ok) message.success(\"感谢您的反馈\");\n else message.error(\"反馈失败,请稍后再试\");\n }}\n />\n )}\n </Tooltip>\n <DislikeFeedback\n msg={group}\n activeColor={primaryColor}\n onSubmit={async (formData) => {\n const ok = await likeMessage(invocationId, -1, formData);\n if (ok) message.success(\"已收到您的反馈,我们会努力做得更好\");\n else message.error(\"反馈失败,请稍后再试\");\n return ok;\n }}\n />\n </>\n )}\n </Flex>\n );\n },\n [reChat, likeMessage, showFeedback, primaryColor],\n );\n\n return (\n <XAdkChatbot\n messages={messages}\n loading={loading}\n prologue={prologue}\n suggestions={suggestions}\n onSuggest={suggestChat}\n onConfirm={confirmFnCall}\n // 操作栏:使用外部传入的 actions,否则用内置默认 actions\n actions={actions ?? defaultActions}\n actionsExtra={actionsExtra}\n // 启用分组和解析\n enableGrouping={true}\n enableProcessParsing={true}\n initialized={initialized}\n showFnCallDetail={showFnCallDetail}\n // 文件点击回调\n onFileClick={onFileClick}\n // 样式\n className={className}\n style={style}\n // 自定义工具调用渲染\n renderFunctionCall={renderFunctionCall}\n // 用户消息 hover 操作栏\n showUserActions={showUserActions}\n strategies={{ ...strategies, ...strategiesProp }}\n />\n );\n};\n\nexport default Messages;\n"],"mappings":";;;AAAA,OAAOA,KAAK,IAAIC,WAAW,QAAQ,OAAO;AAC1C,SAASC,OAAO,EAAEC,OAAO,EAAEC,IAAI,QAAQ,MAAM;AAC7C,SACEC,UAAU,EACVC,YAAY,EACZC,cAAc,EACdC,YAAY,QACP,mBAAmB;AAC1B,OAAOC,IAAI,MAAM,mBAAmB;AACpC,OAAOC,WAAW;AAClB,OAAOC,eAAe;AACtB,SAASC,YAAY;AACrB,SAASC,cAAc;AAAuC,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,QAAA,IAAAC,SAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAqB9D;AACA;AACA;AACA;AACA;AACA,IAAMC,QAAqC,GAAG,SAAxCA,QAAqCA,CAAAC,IAAA,EAQrC;EAAA,IAPJC,OAAO,GAAAD,IAAA,CAAPC,OAAO;IACPC,YAAY,GAAAF,IAAA,CAAZE,YAAY;IACZC,SAAS,GAAAH,IAAA,CAATG,SAAS;IACTC,KAAK,GAAAJ,IAAA,CAALI,KAAK;IACLC,gBAAgB,GAAAL,IAAA,CAAhBK,gBAAgB;IAChBC,kBAAkB,GAAAN,IAAA,CAAlBM,kBAAkB;IACNC,cAAc,GAAAP,IAAA,CAA1BQ,UAAU;EAEV,IAAAC,aAAA,GAWIlB,YAAY,CAAC,CAAC;IAVhBmB,QAAQ,GAAAD,aAAA,CAARC,QAAQ;IACRC,OAAO,GAAAF,aAAA,CAAPE,OAAO;IACPC,QAAQ,GAAAH,aAAA,CAARG,QAAQ;IACRC,WAAW,GAAAJ,aAAA,CAAXI,WAAW;IACXC,WAAW,GAAAL,aAAA,CAAXK,WAAW;IACXC,YAAY,GAAAN,aAAA,CAAZM,YAAY;IACZC,eAAe,GAAAP,aAAA,CAAfO,eAAe;IACfC,OAAO,GAAAR,aAAA,CAAPQ,OAAO;IACPC,WAAW,GAAAT,aAAA,CAAXS,WAAW;IACXV,UAAU,GAAAC,aAAA,CAAVD,UAAU;EAEZ,IAAAW,eAAA,GAA4D3B,cAAc,CAAC,CAAC;IAApE4B,WAAW,GAAAD,eAAA,CAAXC,WAAW;IAAEC,MAAM,GAAAF,eAAA,CAANE,MAAM;IAAEC,WAAW,GAAAH,eAAA,CAAXG,WAAW;IAAEC,aAAa,GAAAJ,eAAA,CAAbI,aAAa;EAEvD,IAAMC,YAAY,GAAG,CAAAP,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEQ,QAAQ,KAAI,SAAS;EAEnD,IAAMC,cAAc,GAAG9C,WAAW,CAChC,UAAA+C,KAAA,EAAsC;IAAA,IAAAC,aAAA;IAAA,IAA1BC,KAAK,GAAAF,KAAA,CAAd9C,OAAO;MAASiD,YAAY,GAAAH,KAAA,CAAZG,YAAY;IAC7B;IACA,IAAMC,OAAO,GAAGF,KAAK,CAACG,IAAI,CAACH,KAAK,CAACG,IAAI,CAACC,MAAM,GAAG,CAAC,CAAC;IACjD,IAAMC,YAAY,GAAGH,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEG,YAAY;IAC1C,IAAMC,SAAS,IAAAP,aAAA,GAAGC,KAAK,CAACO,MAAM,cAAAR,aAAA,cAAAA,aAAA,GAAI,CAAC;IAEnC,IAAMS,QAAQ,GAAGR,KAAK,CAACG,IAAI,CACxBM,MAAM,CAAC,UAACC,CAAC;MAAA,OAAK,CAACA,CAAC,CAACC,YAAY,IAAI,CAACD,CAAC,CAACE,gBAAgB;IAAA,EAAC,CACrDC,GAAG,CAAC,UAACH,CAAC;MAAA,OAAKA,CAAC,CAACI,IAAI,IAAI,EAAE;IAAA,EAAC,CACxBC,IAAI,CAAC,EAAE,CAAC;IAEX,oBACE9C,KAAA,CAACf,IAAI;MACH8D,GAAG,EAAE,EAAG;MACRC,KAAK,EAAC,QAAQ;MACd1C,KAAK,EAAE;QAAE2C,OAAO,EAAE,OAAO;QAAEC,KAAK,EAAE;MAAU,CAAE;MAAAC,QAAA,GAE7CnB,YAAY,iBACXpC,IAAA,CAACZ,OAAO;QAACoE,KAAK,EAAC,0BAAM;QAAAD,QAAA,eACnBvD,IAAA,CAACR,cAAc;UAACkB,KAAK,EAAE;YAAE+C,MAAM,EAAE;UAAU,CAAE;UAACC,OAAO,EAAE/B;QAAO,CAAE;MAAC,CAC1D,CACV,eACD3B,IAAA,CAACZ,OAAO;QAACoE,KAAK,EAAC,0BAAM;QAAAD,QAAA,eACnBvD,IAAA,CAACP,YAAY;UACXiB,KAAK,EAAE;YAAE+C,MAAM,EAAE;UAAU,CAAE;UAC7BC,OAAO,EAAE,SAAAA,QAAA,EAAM;YACbhE,IAAI,CAACiD,QAAQ,CAAC;YACdxD,OAAO,CAACwE,OAAO,CAAC,MAAM,CAAC;UACzB;QAAE,CACH;MAAC,CACK,CAAC,EACTtC,YAAY,IAAImB,YAAY,iBAC3BpC,KAAA,CAAAF,SAAA;QAAAqD,QAAA,gBACEvD,IAAA,CAACZ,OAAO;UAACoE,KAAK,EAAC,QAAG;UAAAD,QAAA,EACfd,SAAS,KAAK,CAAC,gBACdzC,IAAA,CAACV,UAAU;YACToB,KAAK,EAAE;cAAE4C,KAAK,EAAExB,YAAY;cAAE2B,MAAM,EAAE;YAAU;UAAE,CACnD,CAAC,gBAEFzD,IAAA,CAACT,YAAY;YACXmB,KAAK,EAAE;cAAE+C,MAAM,EAAE;YAAU,CAAE;YAC7BC,OAAO,eAAAE,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAE,SAAAC,QAAA;cAAA,IAAAC,EAAA;cAAA,OAAAH,mBAAA,GAAAI,IAAA,UAAAC,SAAAC,QAAA;gBAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;kBAAA;oBAAA,MACH5B,SAAS,KAAK,CAAC;sBAAA0B,QAAA,CAAAE,IAAA;sBAAA;oBAAA;oBACjBlF,OAAO,CAACmF,OAAO,CAAC,gBAAgB,CAAC;oBAAC,OAAAH,QAAA,CAAAI,MAAA;kBAAA;oBAAAJ,QAAA,CAAAE,IAAA;oBAAA,OAGnBzC,WAAW,CAACY,YAAY,EAAE,CAAC,CAAC;kBAAA;oBAAvCwB,EAAE,GAAAG,QAAA,CAAAK,IAAA;oBACR,IAAIR,EAAE,EAAE7E,OAAO,CAACwE,OAAO,CAAC,QAAQ,CAAC,CAAC,KAC7BxE,OAAO,CAACsF,KAAK,CAAC,YAAY,CAAC;kBAAC;kBAAA;oBAAA,OAAAN,QAAA,CAAAO,IAAA;gBAAA;cAAA,GAAAX,OAAA;YAAA,CAClC;UAAC,CACH;QACF,CACM,CAAC,eACV/D,IAAA,CAACJ,eAAe;UACd+E,GAAG,EAAExC,KAAM;UACXyC,WAAW,EAAE9C,YAAa;UAC1B+C,QAAQ;YAAA,IAAAC,KAAA,GAAAlB,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAE,SAAAiB,SAAOC,QAAQ;cAAA,IAAAhB,EAAA;cAAA,OAAAH,mBAAA,GAAAI,IAAA,UAAAgB,UAAAC,SAAA;gBAAA,kBAAAA,SAAA,CAAAd,IAAA,GAAAc,SAAA,CAAAb,IAAA;kBAAA;oBAAAa,SAAA,CAAAb,IAAA;oBAAA,OACNzC,WAAW,CAACY,YAAY,EAAE,CAAC,CAAC,EAAEwC,QAAQ,CAAC;kBAAA;oBAAlDhB,EAAE,GAAAkB,SAAA,CAAAV,IAAA;oBACR,IAAIR,EAAE,EAAE7E,OAAO,CAACwE,OAAO,CAAC,mBAAmB,CAAC,CAAC,KACxCxE,OAAO,CAACsF,KAAK,CAAC,YAAY,CAAC;oBAAC,OAAAS,SAAA,CAAAX,MAAA,WAC1BP,EAAE;kBAAA;kBAAA;oBAAA,OAAAkB,SAAA,CAAAR,IAAA;gBAAA;cAAA,GAAAK,QAAA;YAAA,CACV;YAAA,iBAAAI,EAAA;cAAA,OAAAL,KAAA,CAAAM,KAAA,OAAAC,SAAA;YAAA;UAAA;QAAC,CACH,CAAC;MAAA,CACF,CACH;IAAA,CACG,CAAC;EAEX,CAAC,EACD,CAAC1D,MAAM,EAAEC,WAAW,EAAEP,YAAY,EAAES,YAAY,CAClD,CAAC;EAED,oBACE9B,IAAA,CAACL,WAAW;IACVqB,QAAQ,EAAEA,QAAS;IACnBC,OAAO,EAAEA,OAAQ;IACjBC,QAAQ,EAAEA,QAAS;IACnBC,WAAW,EAAEA,WAAY;IACzBmE,SAAS,EAAE5D,WAAY;IACvB6D,SAAS,EAAE1D;IACX;IAAA;IACAtB,OAAO,EAAEA,OAAO,aAAPA,OAAO,cAAPA,OAAO,GAAIyB,cAAe;IACnCxB,YAAY,EAAEA;IACd;IAAA;IACAgF,cAAc,EAAE,IAAK;IACrBC,oBAAoB,EAAE,IAAK;IAC3BrE,WAAW,EAAEA,WAAY;IACzBT,gBAAgB,EAAEA;IAClB;IAAA;IACAa,WAAW,EAAEA;IACb;IAAA;IACAf,SAAS,EAAEA,SAAU;IACrBC,KAAK,EAAEA;IACP;IAAA;IACAE,kBAAkB,EAAEA;IACpB;IAAA;IACAU,eAAe,EAAEA,eAAgB;IACjCR,UAAU,EAAA4E,aAAA,CAAAA,aAAA,KAAO5E,UAAU,GAAKD,cAAc;EAAG,CAClD,CAAC;AAEN,CAAC;AAED,eAAeR,QAAQ"}
1
+ {"version":3,"names":["React","useCallback","message","Tooltip","Flex","LikeFilled","LikeOutlined","ReloadOutlined","CopyOutlined","copy","XAdkChatbot","DislikeFeedback","useChatState","useChatActions","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","Messages","_ref","actions","actionsExtra","renderBeforeGroup","renderAfterGroup","renderGroup","history","className","style","showFnCallDetail","renderFunctionCall","strategiesProp","strategies","_useChatState","messages","loading","prologue","suggestions","initialized","currentSessionId","showFeedback","showUserActions","appInfo","onFileClick","_useChatActions","suggestChat","reChat","likeMessage","confirmFnCall","primaryColor","appTheme","defaultActions","_ref2","_group$isLike","group","isLastBotMsg","lastMsg","msgs","length","invocationId","isLikeVal","isLike","fullText","filter","m","functionCall","functionResponse","map","text","join","gap","align","padding","color","children","title","cursor","onClick","success","_asyncToGenerator","_regeneratorRuntime","mark","_callee","ok","wrap","_callee$","_context","prev","next","warning","abrupt","sent","error","stop","msg","activeColor","onSubmit","_ref4","_callee2","formData","_callee2$","_context2","_x","apply","arguments","onSuggest","onConfirm","sessionId","enableGrouping","enableProcessParsing","_objectSpread"],"sources":["../../../../../src/components/XAdkProvider/compound/Messages.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { message, Tooltip, Flex } from \"antd\";\nimport {\n LikeFilled,\n LikeOutlined,\n ReloadOutlined,\n CopyOutlined,\n} from \"@ant-design/icons\";\nimport copy from \"copy-to-clipboard\";\nimport XAdkChatbot from \"../../XAdkChatbot\";\nimport DislikeFeedback from \"./DislikeFeedBack\";\nimport { useChatState } from \"../context/ChatStateContext\";\nimport { useChatActions } from \"../context/ChatActionContext\";\nimport type { ActionExtraProps, ActionProps, XAdkChatbotProps } from \"@/types\";\nimport type { ChatStrategies } from \"@/types\";\n\nexport interface XAdkMessagesProps {\n /** 自定义操作栏渲染 */\n actions?: ActionProps;\n /** 追加在操作栏之后的内容 */\n actionsExtra?: ActionExtraProps;\n /** 消息流中的业务模块与整组自定义展示。 */\n renderBeforeGroup?: XAdkChatbotProps[\"renderBeforeGroup\"];\n renderAfterGroup?: XAdkChatbotProps[\"renderAfterGroup\"];\n renderGroup?: XAdkChatbotProps[\"renderGroup\"];\n /** 受控历史消息分页;可通过 useChatActions().setMessages 合并新页。 */\n history?: XAdkChatbotProps[\"history\"];\n /** 类名 */\n className?: string;\n /** 样式 */\n style?: React.CSSProperties;\n /** 是否显示函数调用详情 */\n showFnCallDetail?: boolean;\n /** 自定义工具调用渲染函数,返回 null 则降级使用默认渲染 */\n renderFunctionCall?: (msg: import(\"@/types\").IMessage) => React.ReactNode | null;\n /** 局部策略覆盖,优先级高于 Provider preset/strategies */\n strategies?: ChatStrategies;\n}\n\n/**\n * Messages - XAdkProvider 的消息展示组件\n *\n * 使用 XAdkChatbot 渲染消息列表\n */\nconst Messages: React.FC<XAdkMessagesProps> = ({\n actions,\n actionsExtra,\n renderBeforeGroup,\n renderAfterGroup,\n renderGroup,\n history,\n className,\n style,\n showFnCallDetail,\n renderFunctionCall,\n strategies: strategiesProp,\n}) => {\n const {\n messages,\n loading,\n prologue,\n suggestions,\n initialized,\n currentSessionId,\n showFeedback,\n showUserActions,\n appInfo,\n onFileClick,\n strategies,\n } = useChatState();\n const { suggestChat, reChat, likeMessage, confirmFnCall } = useChatActions();\n\n const primaryColor = appInfo?.appTheme || \"#1677ff\";\n\n const defaultActions = useCallback<ActionProps>(\n ({ message: group, isLastBotMsg }) => {\n // 取该组最后一条 bot 消息的 invocationId 和 isLike 状态\n const lastMsg = group.msgs[group.msgs.length - 1];\n const invocationId = lastMsg?.invocationId;\n const isLikeVal = group.isLike ?? 0;\n\n const fullText = group.msgs\n .filter((m) => !m.functionCall && !m.functionResponse)\n .map((m) => m.text || \"\")\n .join(\"\");\n\n return (\n <Flex\n gap={16}\n align=\"center\"\n style={{ padding: \"4px 0\", color: \"#81858c\" }}\n >\n {isLastBotMsg && (\n <Tooltip title=\"重新生成\">\n <ReloadOutlined style={{ cursor: \"pointer\" }} onClick={reChat} />\n </Tooltip>\n )}\n <Tooltip title=\"复制内容\">\n <CopyOutlined\n style={{ cursor: \"pointer\" }}\n onClick={() => {\n copy(fullText);\n message.success(\"复制成功\");\n }}\n />\n </Tooltip>\n {showFeedback && invocationId && (\n <>\n <Tooltip title=\"赞\">\n {isLikeVal === 1 ? (\n <LikeFilled\n style={{ color: primaryColor, cursor: \"pointer\" }}\n />\n ) : (\n <LikeOutlined\n style={{ cursor: \"pointer\" }}\n onClick={async () => {\n if (isLikeVal !== 0) {\n message.warning(\"已收到您的反馈,无需重复提交\");\n return;\n }\n const ok = await likeMessage(invocationId, 1);\n if (ok) message.success(\"感谢您的反馈\");\n else message.error(\"反馈失败,请稍后再试\");\n }}\n />\n )}\n </Tooltip>\n <DislikeFeedback\n msg={group}\n activeColor={primaryColor}\n onSubmit={async (formData) => {\n const ok = await likeMessage(invocationId, -1, formData);\n if (ok) message.success(\"已收到您的反馈,我们会努力做得更好\");\n else message.error(\"反馈失败,请稍后再试\");\n return ok;\n }}\n />\n </>\n )}\n </Flex>\n );\n },\n [reChat, likeMessage, showFeedback, primaryColor],\n );\n\n return (\n <XAdkChatbot\n messages={messages}\n loading={loading}\n prologue={prologue}\n suggestions={suggestions}\n onSuggest={suggestChat}\n onConfirm={confirmFnCall}\n // 操作栏:使用外部传入的 actions,否则用内置默认 actions\n actions={actions ?? defaultActions}\n actionsExtra={actionsExtra}\n renderBeforeGroup={renderBeforeGroup}\n renderAfterGroup={renderAfterGroup}\n renderGroup={renderGroup}\n history={history}\n sessionId={currentSessionId}\n // 启用分组和解析\n enableGrouping={true}\n enableProcessParsing={true}\n initialized={initialized}\n showFnCallDetail={showFnCallDetail}\n // 文件点击回调\n onFileClick={onFileClick}\n // 样式\n className={className}\n style={style}\n // 自定义工具调用渲染\n renderFunctionCall={renderFunctionCall}\n // 用户消息 hover 操作栏\n showUserActions={showUserActions}\n strategies={{ ...strategies, ...strategiesProp }}\n />\n );\n};\n\nexport default Messages;\n"],"mappings":"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"}
@@ -22,6 +22,9 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
22
22
  _ref$draggable = _ref.draggable,
23
23
  draggable = _ref$draggable === void 0 ? false : _ref$draggable,
24
24
  onFileSelect = _ref.onFileSelect,
25
+ _ref$pasteable = _ref.pasteable,
26
+ pasteable = _ref$pasteable === void 0 ? true : _ref$pasteable,
27
+ onFilePaste = _ref.onFilePaste,
25
28
  _ref$loading = _ref.loading,
26
29
  loading = _ref$loading === void 0 ? false : _ref$loading,
27
30
  _ref$disabled = _ref.disabled,
@@ -32,6 +35,7 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
32
35
  _ref$uploadRequest = _ref.uploadRequest,
33
36
  uploadRequest = _ref$uploadRequest === void 0 ? function () {} : _ref$uploadRequest,
34
37
  onClear = _ref.onClear,
38
+ clearConfirm = _ref.clearConfirm,
35
39
  onChange = _ref.onChange,
36
40
  onSubmit = _ref.onSubmit,
37
41
  onStop = _ref.onStop,
@@ -348,12 +352,74 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
348
352
  uploadFiles(validFiles);
349
353
  }
350
354
  }, [files, maxFiles, maxFileSize, allowedFileTypes]);
355
+ var handleExistingFiles = useCallback(function (selectedFiles) {
356
+ if (!selectedFiles.length) return;
357
+ setFiles(function (prev) {
358
+ var next = _toConsumableArray(prev);
359
+ var _iterator2 = _createForOfIteratorHelper(selectedFiles),
360
+ _step2;
361
+ try {
362
+ var _loop = function _loop() {
363
+ var selected = _step2.value;
364
+ if (!selected.fileId || !selected.fileName) return 0; // continue
365
+ if (next.some(function (file) {
366
+ return String(file.fileId) === String(selected.fileId);
367
+ })) return 0; // continue
368
+ if (next.length >= maxFiles) {
369
+ message.error("\u6700\u591A\u53EA\u80FD\u4E0A\u4F20 ".concat(maxFiles, " \u4E2A\u6587\u4EF6"));
370
+ return 1; // break
371
+ }
372
+ var id = generateId();
373
+ var file = new File([], selected.fileName, {
374
+ type: selected.mimeType
375
+ });
376
+ next.push({
377
+ id: id,
378
+ uid: id,
379
+ name: selected.fileName,
380
+ file: file,
381
+ size: selected.size || 0,
382
+ type: selected.mimeType,
383
+ progress: 100,
384
+ status: "success",
385
+ fileId: selected.fileId,
386
+ tempUrl: selected.tempUrl,
387
+ response: _objectSpread(_objectSpread({}, selected.raw), {}, {
388
+ fileName: selected.fileName,
389
+ fileId: selected.fileId,
390
+ tempUrl: selected.tempUrl,
391
+ fileType: selected.type,
392
+ fileSize: selected.size,
393
+ mimeType: selected.mimeType
394
+ })
395
+ });
396
+ },
397
+ _ret;
398
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
399
+ _ret = _loop();
400
+ if (_ret === 0) continue;
401
+ if (_ret === 1) break;
402
+ }
403
+ } catch (err) {
404
+ _iterator2.e(err);
405
+ } finally {
406
+ _iterator2.f();
407
+ }
408
+ if (next.length !== prev.length) onFilesChange === null || onFilesChange === void 0 || onFilesChange(next);
409
+ return next;
410
+ });
411
+ }, [maxFiles, onFilesChange]);
351
412
 
352
413
  // 暴露给业务工具栏调用的命令式能力;外部 Popover 选择标签时可插入到当前光标位置。
353
414
  useImperativeHandle(ref, function () {
354
415
  return {
355
416
  addFiles: function addFiles(rawFiles) {
356
- handleFileSelect(rawFiles);
417
+ handleFileSelect(rawFiles.filter(function (file) {
418
+ return file instanceof File;
419
+ }));
420
+ handleExistingFiles(rawFiles.filter(function (file) {
421
+ return !(file instanceof File);
422
+ }));
357
423
  },
358
424
  insertMention: function insertMention(mention) {
359
425
  if (inlineTags) {
@@ -376,23 +442,23 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
376
442
  inlineTags ? (_inlineInputRef$curre4 = inlineInputRef.current) === null || _inlineInputRef$curre4 === void 0 ? void 0 : _inlineInputRef$curre4.focus() : (_textareaRef$current = textareaRef.current) === null || _textareaRef$current === void 0 ? void 0 : _textareaRef$current.focus();
377
443
  }
378
444
  };
379
- }, [handleFileSelect, inlineTags, setMentions, mentions]);
445
+ }, [handleFileSelect, handleExistingFiles, inlineTags, setMentions, mentions]);
380
446
 
381
447
  // 上传文件
382
448
  var uploadFiles = /*#__PURE__*/function () {
383
449
  var _ref13 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(fileList) {
384
- var _iterator2, _step2, _loop;
450
+ var _iterator3, _step3, _loop2;
385
451
  return _regeneratorRuntime().wrap(function _callee$(_context2) {
386
452
  while (1) switch (_context2.prev = _context2.next) {
387
453
  case 0:
388
- _iterator2 = _createForOfIteratorHelper(fileList);
454
+ _iterator3 = _createForOfIteratorHelper(fileList);
389
455
  _context2.prev = 1;
390
- _loop = /*#__PURE__*/_regeneratorRuntime().mark(function _loop() {
456
+ _loop2 = /*#__PURE__*/_regeneratorRuntime().mark(function _loop2() {
391
457
  var localFile;
392
- return _regeneratorRuntime().wrap(function _loop$(_context) {
458
+ return _regeneratorRuntime().wrap(function _loop2$(_context) {
393
459
  while (1) switch (_context.prev = _context.next) {
394
460
  case 0:
395
- localFile = _step2.value;
461
+ localFile = _step3.value;
396
462
  setFiles(function (prev) {
397
463
  return prev.map(function (f) {
398
464
  return f.id === localFile.id ? _objectSpread(_objectSpread({}, f), {}, {
@@ -465,15 +531,15 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
465
531
  case "end":
466
532
  return _context.stop();
467
533
  }
468
- }, _loop, null, [[2, 7]]);
534
+ }, _loop2, null, [[2, 7]]);
469
535
  });
470
- _iterator2.s();
536
+ _iterator3.s();
471
537
  case 4:
472
- if ((_step2 = _iterator2.n()).done) {
538
+ if ((_step3 = _iterator3.n()).done) {
473
539
  _context2.next = 8;
474
540
  break;
475
541
  }
476
- return _context2.delegateYield(_loop(), "t0", 6);
542
+ return _context2.delegateYield(_loop2(), "t0", 6);
477
543
  case 6:
478
544
  _context2.next = 4;
479
545
  break;
@@ -483,10 +549,10 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
483
549
  case 10:
484
550
  _context2.prev = 10;
485
551
  _context2.t1 = _context2["catch"](1);
486
- _iterator2.e(_context2.t1);
552
+ _iterator3.e(_context2.t1);
487
553
  case 13:
488
554
  _context2.prev = 13;
489
- _iterator2.f();
555
+ _iterator3.f();
490
556
  return _context2.finish(13);
491
557
  case 16:
492
558
  case "end":
@@ -535,6 +601,16 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
535
601
  }
536
602
  }, [draggable, onFileSelect]);
537
603
 
604
+ // 粘贴文件(含截图):仅在剪贴板含文件时拦截默认行为,纯文本粘贴不受影响。
605
+ var handlePaste = useCallback(function (e) {
606
+ var _e$clipboardData;
607
+ if (!pasteable) return;
608
+ var files = (_e$clipboardData = e.clipboardData) === null || _e$clipboardData === void 0 ? void 0 : _e$clipboardData.files;
609
+ if (!files || files.length === 0) return;
610
+ e.preventDefault();
611
+ onFilePaste === null || onFilePaste === void 0 || onFilePaste(Array.from(files));
612
+ }, [pasteable, onFilePaste]);
613
+
538
614
  // 删除标签
539
615
  var handleRemoveMention = useCallback(function (id) {
540
616
  setMentions(mentions.filter(function (item) {
@@ -877,12 +953,13 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
877
953
  });
878
954
  };
879
955
  var ClearButton = function ClearButton(props) {
956
+ var _clearConfirm$title, _clearConfirm$okText, _clearConfirm$cancelT;
880
957
  return /*#__PURE__*/_jsx(Popconfirm, {
881
- title: "\u786E\u5B9A\u8981\u6E05\u7A7A\u804A\u5929\u8BB0\u5F55\u5417?",
958
+ title: (_clearConfirm$title = clearConfirm === null || clearConfirm === void 0 ? void 0 : clearConfirm.title) !== null && _clearConfirm$title !== void 0 ? _clearConfirm$title : "确定要清空聊天记录吗?",
882
959
  onConfirm: onClear,
883
960
  placement: "top",
884
- okText: "\u786E\u5B9A",
885
- cancelText: "\u53D6\u6D88",
961
+ okText: (_clearConfirm$okText = clearConfirm === null || clearConfirm === void 0 ? void 0 : clearConfirm.okText) !== null && _clearConfirm$okText !== void 0 ? _clearConfirm$okText : "确定",
962
+ cancelText: (_clearConfirm$cancelT = clearConfirm === null || clearConfirm === void 0 ? void 0 : clearConfirm.cancelText) !== null && _clearConfirm$cancelT !== void 0 ? _clearConfirm$cancelT : "取消",
886
963
  disabled: controlsDisabled,
887
964
  children: /*#__PURE__*/_jsx("button", _objectSpread(_objectSpread({
888
965
  className: "".concat(styles.iconButton, " ").concat(styles.clearButton),
@@ -958,6 +1035,7 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
958
1035
  onDragOver: draggable ? handleDragOver : undefined,
959
1036
  onDragLeave: draggable ? handleDragLeave : undefined,
960
1037
  onDrop: draggable ? handleDrop : undefined,
1038
+ onPaste: pasteable ? handlePaste : undefined,
961
1039
  children: [/*#__PURE__*/_jsx("div", {
962
1040
  className: styles.mainArea,
963
1041
  children: /*#__PURE__*/_jsxs("div", {