@mxmweb/aichat 1.1.1 → 1.1.8

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 (523) hide show
  1. package/.editorconfig +38 -0
  2. package/.github/workflows/release.yml +60 -0
  3. package/.prettierignore +16 -0
  4. package/.prettierrc +17 -0
  5. package/.releaserc.json +36 -0
  6. package/CHANGELOG.md +58 -0
  7. package/CONTRIBUTING.md +111 -0
  8. package/NPMREADME.md +215 -0
  9. package/bash.exe.stackdump +40 -0
  10. package/components.json +21 -0
  11. package/demo.txt +134 -0
  12. package/dist/README.md +216 -0
  13. package/{adopters → dist/adopters}/GientechChat/Conversations/Item.d.ts +4 -2
  14. package/{adopters → dist/adopters}/GientechChat/Conversations/List.d.ts +4 -1
  15. package/{adopters → dist/adopters}/GientechChat/Conversations/index.d.ts +1 -0
  16. package/{adopters → dist/adopters}/gientechCommon/components/Messages/ReferenceCard.d.ts +7 -3
  17. package/dist/adopters/gientechCommon/components/Messages/RetriveItem.d.ts +25 -0
  18. package/dist/assets/aichat.css +1 -0
  19. package/{components → dist/components}/AiChat.d.ts +2 -1
  20. package/{index.js → dist/index.js} +13403 -13142
  21. package/dist/package.json +19 -0
  22. package/eslint.config.js +92 -0
  23. package/index.html +14 -0
  24. package/package.json +41 -10
  25. package/postcss.config.cjs +19 -0
  26. package/public/icons/answerAwartar.png +0 -0
  27. package/public/icons/docx-file.png +0 -0
  28. package/public/icons/folder.png +0 -0
  29. package/public/icons/html.png +0 -0
  30. package/public/icons/image.png +0 -0
  31. package/public/icons/jpg-file.png +0 -0
  32. package/public/icons/json.png +0 -0
  33. package/public/icons/md.png +0 -0
  34. package/public/icons/pdf.png +0 -0
  35. package/public/icons/pptx.png +0 -0
  36. package/public/icons/questionAwartar.png +0 -0
  37. package/public/icons/sheets.png +0 -0
  38. package/public/icons/txt.png +0 -0
  39. package/public/icons/xlsx.png +0 -0
  40. package/public/libs/luckysheet/fontAwesome.otf +0 -0
  41. package/public/libs/luckysheet/fontawesome-webfont.eot +0 -0
  42. package/public/libs/luckysheet/fontawesome-webfont.svg +2671 -0
  43. package/public/libs/luckysheet/fontawesome-webfont.ttf +0 -0
  44. package/public/libs/luckysheet/fontawesome-webfont.woff +0 -0
  45. package/public/libs/luckysheet/fontawesome-webfont.woff2 +0 -0
  46. package/public/libs/luckysheet/fonts/fontawesome-webfont.ttf +0 -0
  47. package/public/libs/luckysheet/fonts/fontawesome-webfont.woff +0 -0
  48. package/public/libs/luckysheet/fonts/fontawesome-webfont.woff2 +0 -0
  49. package/public/libs/luckysheet/iconfont.css +461 -0
  50. package/public/libs/luckysheet/jquery.min.js +2 -0
  51. package/public/libs/luckysheet/luckysheet.css +1 -0
  52. package/public/libs/luckysheet/luckysheet.umd.js +27 -0
  53. package/public/libs/luckysheet/plugin.js +1 -0
  54. package/public/libs/luckysheet/plugins.css +10 -0
  55. package/public/libs/luckysheet/pluginsCss.css +1 -0
  56. package/public/vite.svg +1 -0
  57. package/public/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  58. package/public/vs/base/common/worker/simpleWorker.nls.de.js +8 -0
  59. package/public/vs/base/common/worker/simpleWorker.nls.es.js +8 -0
  60. package/public/vs/base/common/worker/simpleWorker.nls.fr.js +8 -0
  61. package/public/vs/base/common/worker/simpleWorker.nls.it.js +8 -0
  62. package/public/vs/base/common/worker/simpleWorker.nls.ja.js +8 -0
  63. package/public/vs/base/common/worker/simpleWorker.nls.js +8 -0
  64. package/public/vs/base/common/worker/simpleWorker.nls.ko.js +8 -0
  65. package/public/vs/base/common/worker/simpleWorker.nls.ru.js +8 -0
  66. package/public/vs/base/common/worker/simpleWorker.nls.zh-cn.js +8 -0
  67. package/public/vs/base/common/worker/simpleWorker.nls.zh-tw.js +8 -0
  68. package/public/vs/base/worker/workerMain.js +27 -0
  69. package/public/vs/basic-languages/abap/abap.js +10 -0
  70. package/public/vs/basic-languages/apex/apex.js +10 -0
  71. package/public/vs/basic-languages/azcli/azcli.js +10 -0
  72. package/public/vs/basic-languages/bat/bat.js +10 -0
  73. package/public/vs/basic-languages/bicep/bicep.js +11 -0
  74. package/public/vs/basic-languages/cameligo/cameligo.js +10 -0
  75. package/public/vs/basic-languages/clojure/clojure.js +10 -0
  76. package/public/vs/basic-languages/coffee/coffee.js +10 -0
  77. package/public/vs/basic-languages/cpp/cpp.js +10 -0
  78. package/public/vs/basic-languages/csharp/csharp.js +10 -0
  79. package/public/vs/basic-languages/csp/csp.js +10 -0
  80. package/public/vs/basic-languages/css/css.js +12 -0
  81. package/public/vs/basic-languages/cypher/cypher.js +10 -0
  82. package/public/vs/basic-languages/dart/dart.js +10 -0
  83. package/public/vs/basic-languages/dockerfile/dockerfile.js +10 -0
  84. package/public/vs/basic-languages/ecl/ecl.js +10 -0
  85. package/public/vs/basic-languages/elixir/elixir.js +10 -0
  86. package/public/vs/basic-languages/flow9/flow9.js +10 -0
  87. package/public/vs/basic-languages/freemarker2/freemarker2.js +12 -0
  88. package/public/vs/basic-languages/fsharp/fsharp.js +10 -0
  89. package/public/vs/basic-languages/go/go.js +10 -0
  90. package/public/vs/basic-languages/graphql/graphql.js +10 -0
  91. package/public/vs/basic-languages/handlebars/handlebars.js +10 -0
  92. package/public/vs/basic-languages/hcl/hcl.js +10 -0
  93. package/public/vs/basic-languages/html/html.js +10 -0
  94. package/public/vs/basic-languages/ini/ini.js +10 -0
  95. package/public/vs/basic-languages/java/java.js +10 -0
  96. package/public/vs/basic-languages/javascript/javascript.js +10 -0
  97. package/public/vs/basic-languages/julia/julia.js +10 -0
  98. package/public/vs/basic-languages/kotlin/kotlin.js +10 -0
  99. package/public/vs/basic-languages/less/less.js +11 -0
  100. package/public/vs/basic-languages/lexon/lexon.js +10 -0
  101. package/public/vs/basic-languages/liquid/liquid.js +10 -0
  102. package/public/vs/basic-languages/lua/lua.js +10 -0
  103. package/public/vs/basic-languages/m3/m3.js +10 -0
  104. package/public/vs/basic-languages/markdown/markdown.js +10 -0
  105. package/public/vs/basic-languages/mdx/mdx.js +10 -0
  106. package/public/vs/basic-languages/mips/mips.js +10 -0
  107. package/public/vs/basic-languages/msdax/msdax.js +10 -0
  108. package/public/vs/basic-languages/mysql/mysql.js +10 -0
  109. package/public/vs/basic-languages/objective-c/objective-c.js +10 -0
  110. package/public/vs/basic-languages/pascal/pascal.js +10 -0
  111. package/public/vs/basic-languages/pascaligo/pascaligo.js +10 -0
  112. package/public/vs/basic-languages/perl/perl.js +10 -0
  113. package/public/vs/basic-languages/pgsql/pgsql.js +10 -0
  114. package/public/vs/basic-languages/php/php.js +10 -0
  115. package/public/vs/basic-languages/pla/pla.js +10 -0
  116. package/public/vs/basic-languages/postiats/postiats.js +10 -0
  117. package/public/vs/basic-languages/powerquery/powerquery.js +10 -0
  118. package/public/vs/basic-languages/powershell/powershell.js +10 -0
  119. package/public/vs/basic-languages/protobuf/protobuf.js +11 -0
  120. package/public/vs/basic-languages/pug/pug.js +10 -0
  121. package/public/vs/basic-languages/python/python.js +10 -0
  122. package/public/vs/basic-languages/qsharp/qsharp.js +10 -0
  123. package/public/vs/basic-languages/r/r.js +10 -0
  124. package/public/vs/basic-languages/razor/razor.js +10 -0
  125. package/public/vs/basic-languages/redis/redis.js +10 -0
  126. package/public/vs/basic-languages/redshift/redshift.js +10 -0
  127. package/public/vs/basic-languages/restructuredtext/restructuredtext.js +10 -0
  128. package/public/vs/basic-languages/ruby/ruby.js +10 -0
  129. package/public/vs/basic-languages/rust/rust.js +10 -0
  130. package/public/vs/basic-languages/sb/sb.js +10 -0
  131. package/public/vs/basic-languages/scala/scala.js +10 -0
  132. package/public/vs/basic-languages/scheme/scheme.js +10 -0
  133. package/public/vs/basic-languages/scss/scss.js +12 -0
  134. package/public/vs/basic-languages/shell/shell.js +10 -0
  135. package/public/vs/basic-languages/solidity/solidity.js +10 -0
  136. package/public/vs/basic-languages/sophia/sophia.js +10 -0
  137. package/public/vs/basic-languages/sparql/sparql.js +10 -0
  138. package/public/vs/basic-languages/sql/sql.js +10 -0
  139. package/public/vs/basic-languages/st/st.js +10 -0
  140. package/public/vs/basic-languages/swift/swift.js +13 -0
  141. package/public/vs/basic-languages/systemverilog/systemverilog.js +10 -0
  142. package/public/vs/basic-languages/tcl/tcl.js +10 -0
  143. package/public/vs/basic-languages/twig/twig.js +10 -0
  144. package/public/vs/basic-languages/typescript/typescript.js +10 -0
  145. package/public/vs/basic-languages/vb/vb.js +10 -0
  146. package/public/vs/basic-languages/wgsl/wgsl.js +307 -0
  147. package/public/vs/basic-languages/xml/xml.js +10 -0
  148. package/public/vs/basic-languages/yaml/yaml.js +10 -0
  149. package/public/vs/editor/editor.main.css +6 -0
  150. package/public/vs/editor/editor.main.js +745 -0
  151. package/public/vs/editor/editor.main.js.gz +0 -0
  152. package/public/vs/editor/editor.main.nls.de.js +31 -0
  153. package/public/vs/editor/editor.main.nls.es.js +31 -0
  154. package/public/vs/editor/editor.main.nls.fr.js +29 -0
  155. package/public/vs/editor/editor.main.nls.it.js +29 -0
  156. package/public/vs/editor/editor.main.nls.ja.js +31 -0
  157. package/public/vs/editor/editor.main.nls.js +29 -0
  158. package/public/vs/editor/editor.main.nls.ko.js +29 -0
  159. package/public/vs/editor/editor.main.nls.ru.js +31 -0
  160. package/public/vs/editor/editor.main.nls.zh-cn.js +31 -0
  161. package/public/vs/editor/editor.main.nls.zh-tw.js +29 -0
  162. package/public/vs/language/css/cssMode.js +13 -0
  163. package/public/vs/language/css/cssWorker.js +81 -0
  164. package/public/vs/language/css/cssWorker.js.gz +0 -0
  165. package/public/vs/language/html/htmlMode.js +13 -0
  166. package/public/vs/language/html/htmlWorker.js +453 -0
  167. package/public/vs/language/json/jsonMode.js +15 -0
  168. package/public/vs/language/json/jsonWorker.js +36 -0
  169. package/public/vs/language/typescript/tsMode.js +20 -0
  170. package/public/vs/language/typescript/tsWorker.js +37016 -0
  171. package/public/vs/language/typescript/tsWorker.js.gz +0 -0
  172. package/public/vs/loader.js +11 -0
  173. package/public/worker/pdf.worker.min.js +32 -0
  174. package/src/HeadlessChat.tsx +250 -0
  175. package/src/LoginPage/components/Login/LoginBox/index.tsx +103 -0
  176. package/src/LoginPage/components/Login/RegisterBox/index.tsx +181 -0
  177. package/src/LoginPage/components/Login/index.tsx +101 -0
  178. package/src/LoginPage/index.tsx +103 -0
  179. package/src/LoginPage/useServices.ts +53 -0
  180. package/src/LoginPage/utils.ts +42 -0
  181. package/src/Preview.tsx +278 -0
  182. package/src/UseLogingHeadless.tsx +238 -0
  183. package/src/adopters/GientechChat/Conversations/Item.tsx +132 -0
  184. package/src/adopters/GientechChat/Conversations/List.tsx +127 -0
  185. package/src/adopters/GientechChat/Conversations/groupByTime.ts +39 -0
  186. package/src/adopters/GientechChat/Conversations/index.tsx +102 -0
  187. package/src/adopters/GientechChat/constants.tsx +33 -0
  188. package/src/adopters/GientechChat/index.tsx +1242 -0
  189. package/src/adopters/GientechChat/types.ts +17 -0
  190. package/src/adopters/HeadLessChat/constants.tsx +32 -0
  191. package/src/adopters/HeadLessChat/index.tsx +1038 -0
  192. package/src/adopters/HeadLessChat/types.ts +23 -0
  193. package/src/adopters/gientechCommon/components/AppError.tsx +32 -0
  194. package/src/adopters/gientechCommon/components/AppLoading.tsx +75 -0
  195. package/src/adopters/gientechCommon/components/DisplayError.tsx +33 -0
  196. package/src/adopters/gientechCommon/components/DisplayLoading.tsx +38 -0
  197. package/src/adopters/gientechCommon/components/FeedBackModal.tsx +310 -0
  198. package/src/adopters/gientechCommon/components/FileManager/index.tsx +381 -0
  199. package/src/adopters/gientechCommon/components/FileManager/style.css +5 -0
  200. package/src/adopters/gientechCommon/components/Messages/AiChatBox.tsx +530 -0
  201. package/src/adopters/gientechCommon/components/Messages/GientechNewChatWelcome.tsx +245 -0
  202. package/src/adopters/gientechCommon/components/Messages/ReferenceCard.tsx +302 -0
  203. package/src/adopters/gientechCommon/components/Messages/RetriveItem.tsx +194 -0
  204. package/src/adopters/gientechCommon/components/Messages/UserChatBox.tsx +211 -0
  205. package/src/adopters/gientechCommon/components/RenameModal.tsx +75 -0
  206. package/src/adopters/gientechCommon/components/style.less +11 -0
  207. package/src/adopters/gientechCommon/configs/commonConfig.ts +2 -0
  208. package/src/adopters/gientechCommon/configs/senderConfig.ts +0 -0
  209. package/src/adopters/gientechCommon/configs/stylesConfig.ts +142 -0
  210. package/src/adopters/gientechCommon/hooks/AichatUseController.tsx +308 -0
  211. package/src/adopters/gientechCommon/slate/converters/deserializers.ts +757 -0
  212. package/src/adopters/gientechCommon/slate/converters/mockData.ts +232 -0
  213. package/src/adopters/gientechCommon/slate/converters/slateConverters.ts +258 -0
  214. package/src/adopters/gientechCommon/slate/richElements/index.tsx +476 -0
  215. package/src/adopters/gientechCommon/utils/request.ts +37 -0
  216. package/src/adopters/gientechCommon/utils/serverFn.ts +143 -0
  217. package/src/assets/img/downArrow.png +0 -0
  218. package/src/assets/img/excel.png +0 -0
  219. package/src/assets/img/img.png +0 -0
  220. package/src/assets/img/pdf.png +0 -0
  221. package/src/assets/img/ppt.png +0 -0
  222. package/src/assets/img/txt.png +0 -0
  223. package/src/assets/img/word.png +0 -0
  224. package/src/assets/login/homeBg.png +0 -0
  225. package/src/assets/login/left.jpg +0 -0
  226. package/src/assets/login/logoImg.png +0 -0
  227. package/src/assets/style.css +1 -0
  228. package/src/components/AiChat.tsx +647 -0
  229. package/src/components/AiChat.types.tsx +110 -0
  230. package/src/components/DefaultAppError.tsx +7 -0
  231. package/src/components/DefaultAppLoading.tsx +7 -0
  232. package/src/components/DefaultDisplayError.tsx +7 -0
  233. package/src/components/DefaultDisplayLoading.tsx +7 -0
  234. package/src/components/DefaultNewChatWelcome.tsx +10 -0
  235. package/src/components/Displayer/DefaultAiChatBox.tsx +64 -0
  236. package/src/components/Displayer/DefaultUserChatBox.tsx +34 -0
  237. package/src/components/Displayer/index.tsx +107 -0
  238. package/src/components/Displayer/slate/converters/deserializers.ts +427 -0
  239. package/src/components/Displayer/slate/converters/mockData.ts +190 -0
  240. package/src/components/Displayer/slate/converters/slateConverters.ts +258 -0
  241. package/src/components/Displayer/slate/richElements/index.tsx +308 -0
  242. package/src/components/DrawerContent.tsx +105 -0
  243. package/src/components/DrawerPreview.tsx +36 -0
  244. package/src/components/DynamicForm.tsx +29 -0
  245. package/src/components/Loading.tsx +0 -0
  246. package/src/components/RetrieveTest/components/ChatInput.tsx +198 -0
  247. package/src/components/RetrieveTest/components/ChatMessage.tsx +894 -0
  248. package/src/components/RetrieveTest/components/ConfigPanel.tsx +472 -0
  249. package/src/components/RetrieveTest/components/RichTextEditor.tsx +97 -0
  250. package/src/components/RetrieveTest/components/VoiceInput.tsx +257 -0
  251. package/src/components/RetrieveTest/components/config/index.ts +0 -0
  252. package/src/components/RetrieveTest/components/converters/deserializers.ts +393 -0
  253. package/src/components/RetrieveTest/components/converters/mockData.ts +190 -0
  254. package/src/components/RetrieveTest/components/converters/slateConverters.ts +164 -0
  255. package/src/components/RetrieveTest/components/richElements/index.tsx +339 -0
  256. package/src/components/RetrieveTest/components/style.css +3 -0
  257. package/src/components/RetrieveTest/index.tsx +679 -0
  258. package/src/components/Sender/FileUpload.tsx +76 -0
  259. package/src/components/Sender/FilesDisplay.tsx +103 -0
  260. package/src/components/Sender/VoiceInput.tsx +81 -0
  261. package/src/components/Sender/contexts/BadgeContext.tsx +36 -0
  262. package/src/components/Sender/index.tsx +545 -0
  263. package/src/components/Sidebar/Loading.tsx +0 -0
  264. package/src/components/Sidebar/RetriveConfigPanel.tsx +41 -0
  265. package/src/components/Sidebar/useDynamicFormItems.tsx +176 -0
  266. package/src/components/SidebarProp.ts +41 -0
  267. package/src/components/common/FileCardCommon.tsx +82 -0
  268. package/src/components/defaultStyleSet.tsx +142 -0
  269. package/src/components/styles.config.ts +4 -0
  270. package/src/lib_enter.ts +12 -0
  271. package/src/main.tsx +12 -0
  272. package/src/mockForm.ts +91 -0
  273. package/src/servers/chatApi.ts +43 -0
  274. package/src/servers/fileApi.ts +12 -0
  275. package/src/servers/modelApi.ts +19 -0
  276. package/src/style.css +22 -0
  277. package/src/testj.js +3 -0
  278. package/src/type.d.ts +0 -0
  279. package/src/utils/commonFn.tsx +111 -0
  280. package/src/utils/index.tsx +94 -0
  281. package/src/vite-env.d.ts +11 -0
  282. package/tailwind.config.js +18 -0
  283. package/tsconfig.app.json +29 -0
  284. package/tsconfig.app.tsbuildinfo +11 -0
  285. package/tsconfig.json +13 -0
  286. package/tsconfig.node.json +22 -0
  287. package/tsconfig.node.tsbuildinfo +1 -0
  288. package/vite.config.ts +138 -0
  289. package/vite.config_mainapp.ts +126 -0
  290. package/assets/aichat.css +0 -1
  291. /package/{HeadlessChat.d.ts → dist/HeadlessChat.d.ts} +0 -0
  292. /package/{LoginPage → dist/LoginPage}/components/Login/LoginBox/index.d.ts +0 -0
  293. /package/{LoginPage → dist/LoginPage}/components/Login/RegisterBox/index.d.ts +0 -0
  294. /package/{LoginPage → dist/LoginPage}/components/Login/index.d.ts +0 -0
  295. /package/{LoginPage → dist/LoginPage}/index.d.ts +0 -0
  296. /package/{LoginPage → dist/LoginPage}/useServices.d.ts +0 -0
  297. /package/{LoginPage → dist/LoginPage}/utils.d.ts +0 -0
  298. /package/{Preview.d.ts → dist/Preview.d.ts} +0 -0
  299. /package/{UseLogingHeadless.d.ts → dist/UseLogingHeadless.d.ts} +0 -0
  300. /package/{adopters → dist/adopters}/GientechChat/Conversations/groupByTime.d.ts +0 -0
  301. /package/{adopters → dist/adopters}/GientechChat/constants.d.ts +0 -0
  302. /package/{adopters → dist/adopters}/GientechChat/index.d.ts +0 -0
  303. /package/{adopters → dist/adopters}/GientechChat/types.d.ts +0 -0
  304. /package/{adopters → dist/adopters}/HeadLessChat/constants.d.ts +0 -0
  305. /package/{adopters → dist/adopters}/HeadLessChat/index.d.ts +0 -0
  306. /package/{adopters → dist/adopters}/HeadLessChat/types.d.ts +0 -0
  307. /package/{adopters → dist/adopters}/gientechCommon/components/AppError.d.ts +0 -0
  308. /package/{adopters → dist/adopters}/gientechCommon/components/AppLoading.d.ts +0 -0
  309. /package/{adopters → dist/adopters}/gientechCommon/components/DisplayError.d.ts +0 -0
  310. /package/{adopters → dist/adopters}/gientechCommon/components/DisplayLoading.d.ts +0 -0
  311. /package/{adopters → dist/adopters}/gientechCommon/components/FeedBackModal.d.ts +0 -0
  312. /package/{adopters → dist/adopters}/gientechCommon/components/FileManager/index.d.ts +0 -0
  313. /package/{adopters → dist/adopters}/gientechCommon/components/Messages/AiChatBox.d.ts +0 -0
  314. /package/{adopters → dist/adopters}/gientechCommon/components/Messages/GientechNewChatWelcome.d.ts +0 -0
  315. /package/{adopters → dist/adopters}/gientechCommon/components/Messages/UserChatBox.d.ts +0 -0
  316. /package/{adopters → dist/adopters}/gientechCommon/components/RenameModal.d.ts +0 -0
  317. /package/{adopters → dist/adopters}/gientechCommon/configs/commonConfig.d.ts +0 -0
  318. /package/{adopters → dist/adopters}/gientechCommon/configs/senderConfig.d.ts +0 -0
  319. /package/{adopters → dist/adopters}/gientechCommon/configs/stylesConfig.d.ts +0 -0
  320. /package/{adopters → dist/adopters}/gientechCommon/hooks/AichatUseController.d.ts +0 -0
  321. /package/{adopters → dist/adopters}/gientechCommon/slate/converters/deserializers.d.ts +0 -0
  322. /package/{adopters → dist/adopters}/gientechCommon/slate/converters/mockData.d.ts +0 -0
  323. /package/{adopters → dist/adopters}/gientechCommon/slate/converters/slateConverters.d.ts +0 -0
  324. /package/{adopters → dist/adopters}/gientechCommon/slate/richElements/index.d.ts +0 -0
  325. /package/{adopters → dist/adopters}/gientechCommon/utils/request.d.ts +0 -0
  326. /package/{adopters → dist/adopters}/gientechCommon/utils/serverFn.d.ts +0 -0
  327. /package/{components → dist/components}/AiChat.types.d.ts +0 -0
  328. /package/{components → dist/components}/DefaultAppError.d.ts +0 -0
  329. /package/{components → dist/components}/DefaultAppLoading.d.ts +0 -0
  330. /package/{components → dist/components}/DefaultDisplayError.d.ts +0 -0
  331. /package/{components → dist/components}/DefaultDisplayLoading.d.ts +0 -0
  332. /package/{components → dist/components}/DefaultNewChatWelcome.d.ts +0 -0
  333. /package/{components → dist/components}/Displayer/DefaultAiChatBox.d.ts +0 -0
  334. /package/{components → dist/components}/Displayer/DefaultUserChatBox.d.ts +0 -0
  335. /package/{components → dist/components}/Displayer/index.d.ts +0 -0
  336. /package/{components → dist/components}/Displayer/slate/converters/deserializers.d.ts +0 -0
  337. /package/{components → dist/components}/Displayer/slate/converters/mockData.d.ts +0 -0
  338. /package/{components → dist/components}/Displayer/slate/converters/slateConverters.d.ts +0 -0
  339. /package/{components → dist/components}/Displayer/slate/richElements/index.d.ts +0 -0
  340. /package/{components → dist/components}/DrawerContent.d.ts +0 -0
  341. /package/{components → dist/components}/DrawerPreview.d.ts +0 -0
  342. /package/{components → dist/components}/DynamicForm.d.ts +0 -0
  343. /package/{components → dist/components}/Loading.d.ts +0 -0
  344. /package/{components → dist/components}/RetrieveTest/components/ChatInput.d.ts +0 -0
  345. /package/{components → dist/components}/RetrieveTest/components/ChatMessage.d.ts +0 -0
  346. /package/{components → dist/components}/RetrieveTest/components/ConfigPanel.d.ts +0 -0
  347. /package/{components → dist/components}/RetrieveTest/components/RichTextEditor.d.ts +0 -0
  348. /package/{components → dist/components}/RetrieveTest/components/VoiceInput.d.ts +0 -0
  349. /package/{components → dist/components}/RetrieveTest/components/config/index.d.ts +0 -0
  350. /package/{components → dist/components}/RetrieveTest/components/converters/deserializers.d.ts +0 -0
  351. /package/{components → dist/components}/RetrieveTest/components/converters/mockData.d.ts +0 -0
  352. /package/{components → dist/components}/RetrieveTest/components/converters/slateConverters.d.ts +0 -0
  353. /package/{components → dist/components}/RetrieveTest/components/richElements/index.d.ts +0 -0
  354. /package/{components → dist/components}/RetrieveTest/index.d.ts +0 -0
  355. /package/{components → dist/components}/Sender/FileUpload.d.ts +0 -0
  356. /package/{components → dist/components}/Sender/FilesDisplay.d.ts +0 -0
  357. /package/{components → dist/components}/Sender/VoiceInput.d.ts +0 -0
  358. /package/{components → dist/components}/Sender/contexts/BadgeContext.d.ts +0 -0
  359. /package/{components → dist/components}/Sender/index.d.ts +0 -0
  360. /package/{components → dist/components}/Sidebar/Loading.d.ts +0 -0
  361. /package/{components → dist/components}/Sidebar/RetriveConfigPanel.d.ts +0 -0
  362. /package/{components → dist/components}/Sidebar/useDynamicFormItems.d.ts +0 -0
  363. /package/{components → dist/components}/SidebarProp.d.ts +0 -0
  364. /package/{components → dist/components}/common/FileCardCommon.d.ts +0 -0
  365. /package/{components → dist/components}/defaultStyleSet.d.ts +0 -0
  366. /package/{components → dist/components}/styles.config.d.ts +0 -0
  367. /package/{icons → dist/icons}/answerAwartar.png +0 -0
  368. /package/{icons → dist/icons}/docx-file.png +0 -0
  369. /package/{icons → dist/icons}/folder.png +0 -0
  370. /package/{icons → dist/icons}/html.png +0 -0
  371. /package/{icons → dist/icons}/image.png +0 -0
  372. /package/{icons → dist/icons}/jpg-file.png +0 -0
  373. /package/{icons → dist/icons}/json.png +0 -0
  374. /package/{icons → dist/icons}/md.png +0 -0
  375. /package/{icons → dist/icons}/pdf.png +0 -0
  376. /package/{icons → dist/icons}/pptx.png +0 -0
  377. /package/{icons → dist/icons}/questionAwartar.png +0 -0
  378. /package/{icons → dist/icons}/sheets.png +0 -0
  379. /package/{icons → dist/icons}/txt.png +0 -0
  380. /package/{icons → dist/icons}/xlsx.png +0 -0
  381. /package/{index.d.ts → dist/index.d.ts} +0 -0
  382. /package/{lib_enter.d.ts → dist/lib_enter.d.ts} +0 -0
  383. /package/{libs → dist/libs}/luckysheet/fontAwesome.otf +0 -0
  384. /package/{libs → dist/libs}/luckysheet/fontawesome-webfont.eot +0 -0
  385. /package/{libs → dist/libs}/luckysheet/fontawesome-webfont.svg +0 -0
  386. /package/{libs → dist/libs}/luckysheet/fontawesome-webfont.ttf +0 -0
  387. /package/{libs → dist/libs}/luckysheet/fontawesome-webfont.woff +0 -0
  388. /package/{libs → dist/libs}/luckysheet/fontawesome-webfont.woff2 +0 -0
  389. /package/{libs → dist/libs}/luckysheet/fonts/fontawesome-webfont.ttf +0 -0
  390. /package/{libs → dist/libs}/luckysheet/fonts/fontawesome-webfont.woff +0 -0
  391. /package/{libs → dist/libs}/luckysheet/fonts/fontawesome-webfont.woff2 +0 -0
  392. /package/{libs → dist/libs}/luckysheet/iconfont.css +0 -0
  393. /package/{libs → dist/libs}/luckysheet/jquery.min.js +0 -0
  394. /package/{libs → dist/libs}/luckysheet/luckysheet.css +0 -0
  395. /package/{libs → dist/libs}/luckysheet/luckysheet.umd.js +0 -0
  396. /package/{libs → dist/libs}/luckysheet/plugin.js +0 -0
  397. /package/{libs → dist/libs}/luckysheet/plugins.css +0 -0
  398. /package/{libs → dist/libs}/luckysheet/pluginsCss.css +0 -0
  399. /package/{main.d.ts → dist/main.d.ts} +0 -0
  400. /package/{mockForm.d.ts → dist/mockForm.d.ts} +0 -0
  401. /package/{servers → dist/servers}/chatApi.d.ts +0 -0
  402. /package/{servers → dist/servers}/fileApi.d.ts +0 -0
  403. /package/{servers → dist/servers}/modelApi.d.ts +0 -0
  404. /package/{utils → dist/utils}/commonFn.d.ts +0 -0
  405. /package/{utils → dist/utils}/index.d.ts +0 -0
  406. /package/{vite.svg → dist/vite.svg} +0 -0
  407. /package/{vs → dist/vs}/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  408. /package/{vs → dist/vs}/base/common/worker/simpleWorker.nls.de.js +0 -0
  409. /package/{vs → dist/vs}/base/common/worker/simpleWorker.nls.es.js +0 -0
  410. /package/{vs → dist/vs}/base/common/worker/simpleWorker.nls.fr.js +0 -0
  411. /package/{vs → dist/vs}/base/common/worker/simpleWorker.nls.it.js +0 -0
  412. /package/{vs → dist/vs}/base/common/worker/simpleWorker.nls.ja.js +0 -0
  413. /package/{vs → dist/vs}/base/common/worker/simpleWorker.nls.js +0 -0
  414. /package/{vs → dist/vs}/base/common/worker/simpleWorker.nls.ko.js +0 -0
  415. /package/{vs → dist/vs}/base/common/worker/simpleWorker.nls.ru.js +0 -0
  416. /package/{vs → dist/vs}/base/common/worker/simpleWorker.nls.zh-cn.js +0 -0
  417. /package/{vs → dist/vs}/base/common/worker/simpleWorker.nls.zh-tw.js +0 -0
  418. /package/{vs → dist/vs}/base/worker/workerMain.js +0 -0
  419. /package/{vs → dist/vs}/basic-languages/abap/abap.js +0 -0
  420. /package/{vs → dist/vs}/basic-languages/apex/apex.js +0 -0
  421. /package/{vs → dist/vs}/basic-languages/azcli/azcli.js +0 -0
  422. /package/{vs → dist/vs}/basic-languages/bat/bat.js +0 -0
  423. /package/{vs → dist/vs}/basic-languages/bicep/bicep.js +0 -0
  424. /package/{vs → dist/vs}/basic-languages/cameligo/cameligo.js +0 -0
  425. /package/{vs → dist/vs}/basic-languages/clojure/clojure.js +0 -0
  426. /package/{vs → dist/vs}/basic-languages/coffee/coffee.js +0 -0
  427. /package/{vs → dist/vs}/basic-languages/cpp/cpp.js +0 -0
  428. /package/{vs → dist/vs}/basic-languages/csharp/csharp.js +0 -0
  429. /package/{vs → dist/vs}/basic-languages/csp/csp.js +0 -0
  430. /package/{vs → dist/vs}/basic-languages/css/css.js +0 -0
  431. /package/{vs → dist/vs}/basic-languages/cypher/cypher.js +0 -0
  432. /package/{vs → dist/vs}/basic-languages/dart/dart.js +0 -0
  433. /package/{vs → dist/vs}/basic-languages/dockerfile/dockerfile.js +0 -0
  434. /package/{vs → dist/vs}/basic-languages/ecl/ecl.js +0 -0
  435. /package/{vs → dist/vs}/basic-languages/elixir/elixir.js +0 -0
  436. /package/{vs → dist/vs}/basic-languages/flow9/flow9.js +0 -0
  437. /package/{vs → dist/vs}/basic-languages/freemarker2/freemarker2.js +0 -0
  438. /package/{vs → dist/vs}/basic-languages/fsharp/fsharp.js +0 -0
  439. /package/{vs → dist/vs}/basic-languages/go/go.js +0 -0
  440. /package/{vs → dist/vs}/basic-languages/graphql/graphql.js +0 -0
  441. /package/{vs → dist/vs}/basic-languages/handlebars/handlebars.js +0 -0
  442. /package/{vs → dist/vs}/basic-languages/hcl/hcl.js +0 -0
  443. /package/{vs → dist/vs}/basic-languages/html/html.js +0 -0
  444. /package/{vs → dist/vs}/basic-languages/ini/ini.js +0 -0
  445. /package/{vs → dist/vs}/basic-languages/java/java.js +0 -0
  446. /package/{vs → dist/vs}/basic-languages/javascript/javascript.js +0 -0
  447. /package/{vs → dist/vs}/basic-languages/julia/julia.js +0 -0
  448. /package/{vs → dist/vs}/basic-languages/kotlin/kotlin.js +0 -0
  449. /package/{vs → dist/vs}/basic-languages/less/less.js +0 -0
  450. /package/{vs → dist/vs}/basic-languages/lexon/lexon.js +0 -0
  451. /package/{vs → dist/vs}/basic-languages/liquid/liquid.js +0 -0
  452. /package/{vs → dist/vs}/basic-languages/lua/lua.js +0 -0
  453. /package/{vs → dist/vs}/basic-languages/m3/m3.js +0 -0
  454. /package/{vs → dist/vs}/basic-languages/markdown/markdown.js +0 -0
  455. /package/{vs → dist/vs}/basic-languages/mdx/mdx.js +0 -0
  456. /package/{vs → dist/vs}/basic-languages/mips/mips.js +0 -0
  457. /package/{vs → dist/vs}/basic-languages/msdax/msdax.js +0 -0
  458. /package/{vs → dist/vs}/basic-languages/mysql/mysql.js +0 -0
  459. /package/{vs → dist/vs}/basic-languages/objective-c/objective-c.js +0 -0
  460. /package/{vs → dist/vs}/basic-languages/pascal/pascal.js +0 -0
  461. /package/{vs → dist/vs}/basic-languages/pascaligo/pascaligo.js +0 -0
  462. /package/{vs → dist/vs}/basic-languages/perl/perl.js +0 -0
  463. /package/{vs → dist/vs}/basic-languages/pgsql/pgsql.js +0 -0
  464. /package/{vs → dist/vs}/basic-languages/php/php.js +0 -0
  465. /package/{vs → dist/vs}/basic-languages/pla/pla.js +0 -0
  466. /package/{vs → dist/vs}/basic-languages/postiats/postiats.js +0 -0
  467. /package/{vs → dist/vs}/basic-languages/powerquery/powerquery.js +0 -0
  468. /package/{vs → dist/vs}/basic-languages/powershell/powershell.js +0 -0
  469. /package/{vs → dist/vs}/basic-languages/protobuf/protobuf.js +0 -0
  470. /package/{vs → dist/vs}/basic-languages/pug/pug.js +0 -0
  471. /package/{vs → dist/vs}/basic-languages/python/python.js +0 -0
  472. /package/{vs → dist/vs}/basic-languages/qsharp/qsharp.js +0 -0
  473. /package/{vs → dist/vs}/basic-languages/r/r.js +0 -0
  474. /package/{vs → dist/vs}/basic-languages/razor/razor.js +0 -0
  475. /package/{vs → dist/vs}/basic-languages/redis/redis.js +0 -0
  476. /package/{vs → dist/vs}/basic-languages/redshift/redshift.js +0 -0
  477. /package/{vs → dist/vs}/basic-languages/restructuredtext/restructuredtext.js +0 -0
  478. /package/{vs → dist/vs}/basic-languages/ruby/ruby.js +0 -0
  479. /package/{vs → dist/vs}/basic-languages/rust/rust.js +0 -0
  480. /package/{vs → dist/vs}/basic-languages/sb/sb.js +0 -0
  481. /package/{vs → dist/vs}/basic-languages/scala/scala.js +0 -0
  482. /package/{vs → dist/vs}/basic-languages/scheme/scheme.js +0 -0
  483. /package/{vs → dist/vs}/basic-languages/scss/scss.js +0 -0
  484. /package/{vs → dist/vs}/basic-languages/shell/shell.js +0 -0
  485. /package/{vs → dist/vs}/basic-languages/solidity/solidity.js +0 -0
  486. /package/{vs → dist/vs}/basic-languages/sophia/sophia.js +0 -0
  487. /package/{vs → dist/vs}/basic-languages/sparql/sparql.js +0 -0
  488. /package/{vs → dist/vs}/basic-languages/sql/sql.js +0 -0
  489. /package/{vs → dist/vs}/basic-languages/st/st.js +0 -0
  490. /package/{vs → dist/vs}/basic-languages/swift/swift.js +0 -0
  491. /package/{vs → dist/vs}/basic-languages/systemverilog/systemverilog.js +0 -0
  492. /package/{vs → dist/vs}/basic-languages/tcl/tcl.js +0 -0
  493. /package/{vs → dist/vs}/basic-languages/twig/twig.js +0 -0
  494. /package/{vs → dist/vs}/basic-languages/typescript/typescript.js +0 -0
  495. /package/{vs → dist/vs}/basic-languages/vb/vb.js +0 -0
  496. /package/{vs → dist/vs}/basic-languages/wgsl/wgsl.js +0 -0
  497. /package/{vs → dist/vs}/basic-languages/xml/xml.js +0 -0
  498. /package/{vs → dist/vs}/basic-languages/yaml/yaml.js +0 -0
  499. /package/{vs → dist/vs}/editor/editor.main.css +0 -0
  500. /package/{vs → dist/vs}/editor/editor.main.js +0 -0
  501. /package/{vs → dist/vs}/editor/editor.main.js.gz +0 -0
  502. /package/{vs → dist/vs}/editor/editor.main.nls.de.js +0 -0
  503. /package/{vs → dist/vs}/editor/editor.main.nls.es.js +0 -0
  504. /package/{vs → dist/vs}/editor/editor.main.nls.fr.js +0 -0
  505. /package/{vs → dist/vs}/editor/editor.main.nls.it.js +0 -0
  506. /package/{vs → dist/vs}/editor/editor.main.nls.ja.js +0 -0
  507. /package/{vs → dist/vs}/editor/editor.main.nls.js +0 -0
  508. /package/{vs → dist/vs}/editor/editor.main.nls.ko.js +0 -0
  509. /package/{vs → dist/vs}/editor/editor.main.nls.ru.js +0 -0
  510. /package/{vs → dist/vs}/editor/editor.main.nls.zh-cn.js +0 -0
  511. /package/{vs → dist/vs}/editor/editor.main.nls.zh-tw.js +0 -0
  512. /package/{vs → dist/vs}/language/css/cssMode.js +0 -0
  513. /package/{vs → dist/vs}/language/css/cssWorker.js +0 -0
  514. /package/{vs → dist/vs}/language/css/cssWorker.js.gz +0 -0
  515. /package/{vs → dist/vs}/language/html/htmlMode.js +0 -0
  516. /package/{vs → dist/vs}/language/html/htmlWorker.js +0 -0
  517. /package/{vs → dist/vs}/language/json/jsonMode.js +0 -0
  518. /package/{vs → dist/vs}/language/json/jsonWorker.js +0 -0
  519. /package/{vs → dist/vs}/language/typescript/tsMode.js +0 -0
  520. /package/{vs → dist/vs}/language/typescript/tsWorker.js +0 -0
  521. /package/{vs → dist/vs}/language/typescript/tsWorker.js.gz +0 -0
  522. /package/{vs → dist/vs}/loader.js +0 -0
  523. /package/{worker → dist/worker}/pdf.worker.min.js +0 -0
@@ -0,0 +1,530 @@
1
+ import React, { useRef, useState, useEffect, useMemo } from 'react';
2
+ import { Slate, Editable, withReact } from 'slate-react';
3
+ import { createEditor, Descendant } from 'slate';
4
+ import { deserializeMarkdown } from '../../slate/converters/deserializers';
5
+ import { renderElement, renderLeaf } from '../../slate/richElements';
6
+ import dayjs from 'dayjs';
7
+ import ReferenceCard from './ReferenceCard';
8
+ import { Copy, RefreshCcw, ThumbsDown, ThumbsUp } from 'lucide-react';
9
+ import { Tooltip } from 'antd';
10
+ import { AiChatStyles, defaultTheme } from '../../configs/stylesConfig';
11
+ import { uid } from 'uid';
12
+ import RetriveItem from './RetriveItem';
13
+
14
+ export interface ReferenceItem {
15
+ name: string;
16
+ file_type: string;
17
+ url: string;
18
+ parse_url?: string;
19
+ retrieve_tags?: any;
20
+ // {
21
+ // id: string;
22
+ // type: string;
23
+ // search_type?: string;
24
+ // chunk_type?: string;
25
+ // position?: any
26
+ // }
27
+ }
28
+
29
+ export interface SessionContext {
30
+ searchConfigDTO?: any;
31
+ sessionId?: string;
32
+ label?: string;
33
+ filePath?: string;
34
+ configId?: string;
35
+ kbId?: string;
36
+ queryId: string;
37
+ }
38
+
39
+ interface AiChatBoxProps {
40
+ time: string;
41
+ content: any;
42
+ reference?: string;
43
+ eventsEmit?: (eventName: string, payload?: any) => void;
44
+ sessionContext?: SessionContext;
45
+ feedbackResult: null | number;
46
+ queryId: string;
47
+ defaultAnswer?: string;
48
+ idx: number;
49
+ isWelcome?: boolean;
50
+ messages: any[];
51
+ respTime: number;
52
+ resultType: number;
53
+ displayStatus?:
54
+ | 'ready'
55
+ | 'processing'
56
+ | 'thinking'
57
+ | 'uploading'
58
+ | 'error'
59
+ | 'initializing'
60
+ | 'analyzing';
61
+ styles?: AiChatStyles;
62
+ tokens?: number;
63
+ }
64
+
65
+ // 工具函数:从 url/path 提取文件后缀(不含点,转小写)
66
+ function getFileTypeFromUrl(url?: string): string | undefined {
67
+ if (!url) return undefined;
68
+ const match = url.match(/\.([a-zA-Z0-9]+)(\?|#|$)/);
69
+ return match ? match[1].toLowerCase() : undefined;
70
+ }
71
+ /**
72
+ * 递归查找所有包含 retrive: true 的节点
73
+ * @param nodes Slate.js 的数据结构(通常是一个数组)
74
+ * @returns 所有包含 retrive: true 的节点数组
75
+ */
76
+ function findRetriveNodes(nodes: any[]): any[] {
77
+ let result: any[] = [];
78
+ for (const node of nodes) {
79
+ if (node.retrive === true) {
80
+ result.push(node);
81
+ }
82
+ if (Array.isArray(node.children)) {
83
+ result = result.concat(findRetriveNodes(node.children));
84
+ }
85
+ }
86
+ return result;
87
+ }
88
+ const createAiChatBoxStyles = (colors: any, icons: any, classId: string) => {
89
+ return `
90
+ .ai-chatbox-${classId} .ai-avatar {
91
+ background: url('${icons.aiAvatar}') center/cover no-repeat;
92
+ border-radius: 50%;
93
+ width: 2rem; height: 2rem;
94
+ box-shadow: 0 2px 8px ${colors.shadow}22;
95
+ }
96
+ .ai-chatbox-${classId} .ai-card {
97
+ background: ${colors.background};
98
+ border: 1px solid ${colors.border};
99
+ border-radius: 0.5rem;
100
+ box-shadow: 0 2px 8px ${colors.shadow}11;
101
+ }
102
+ .ai-chatbox-${classId} .ai-time {
103
+ color: ${colors.disabled};
104
+ }
105
+ .ai-chatbox-${classId} .ai-content {
106
+ color: ${colors.text};
107
+ }
108
+ .ai-chatbox-${classId} .ai-actions-btns button {
109
+ color: ${colors.disabled};
110
+ background: none;
111
+ border: none;
112
+ transition: color 0.2s;
113
+ }
114
+ .ai-chatbox-${classId} .ai-actions-btns button:hover {
115
+ color: ${colors.primary};
116
+ }
117
+ .ai-chatbox-${classId} .ai-actions-btns button.active,
118
+ .ai-chatbox-${classId} .ai-actions-btns button.active span,
119
+ .ai-chatbox-${classId} .ai-actions-btns button.active svg,
120
+ .ai-chatbox-${classId} .ai-actions-btns .icon-active {
121
+ color: ${colors.primary} !important;
122
+ fill: ${colors.primary} !important;
123
+ }
124
+ .ai-chatbox-${classId} .ai-actions-btns button:not(.active) svg {
125
+ color: ${colors.disabled};
126
+ fill: none;
127
+ }
128
+ .ai-chatbox-${classId} .ai-status-processing {
129
+ color: ${colors.info};
130
+ }
131
+ .ai-chatbox-${classId} .ai-status-uploading {
132
+ color: ${colors.warning};
133
+ }
134
+ .ai-chatbox-${classId} .ai-status-error {
135
+ color: ${colors.error};
136
+ }
137
+ .ai-chatbox-${classId} .ai-status-dot-processing {
138
+ background: ${colors.info};
139
+ }
140
+ .ai-chatbox-${classId} .ai-status-dot-uploading {
141
+ background: ${colors.warning};
142
+ }
143
+ .ai-chatbox-${classId} .ai-status-dot-error {
144
+ background: ${colors.error};
145
+ }
146
+ `;
147
+ };
148
+
149
+ export default function AiChatBox({
150
+ time,
151
+ content,
152
+ reference,
153
+ eventsEmit,
154
+ sessionContext,
155
+ feedbackResult,
156
+ queryId,
157
+ defaultAnswer,
158
+ respTime,
159
+ tokens,
160
+ resultType,
161
+ isWelcome,
162
+ displayStatus = 'ready',
163
+ styles,
164
+ }: AiChatBoxProps) {
165
+ const editor = useRef(withReact(createEditor()));
166
+ const classId = useMemo(() => uid(), []);
167
+ const theme = useMemo(
168
+ () => ({
169
+ colors: { ...defaultTheme.colors, ...styles?.theme?.colors },
170
+ icons: { ...defaultTheme.icons, ...styles?.theme?.icons },
171
+ }),
172
+ [styles]
173
+ );
174
+ const { colors, icons } = theme;
175
+ //console.log('isWelcome111111',isWelcome,styles,theme);
176
+ useEffect(() => {
177
+ const styleTag = document.createElement('style');
178
+ styleTag.innerHTML = createAiChatBoxStyles(colors, icons, classId);
179
+ styleTag.id = `ai-chatbox-style-${classId}`;
180
+ document.head.appendChild(styleTag);
181
+ return () => {
182
+ const el = document.getElementById(styleTag.id);
183
+ if (el) el.remove();
184
+ };
185
+ }, [colors, icons, classId]);
186
+
187
+ const slateContent = useMemo(() => {
188
+ let sourceText = '';
189
+ // 优先使用实时或最终的 content
190
+ if (typeof content === 'string' && content) {
191
+ sourceText = content;
192
+ }
193
+ // 仅当流程结束(ready)且内容为空时,才使用兜底回复
194
+ else if (displayStatus === 'ready' && !content) {
195
+ sourceText = defaultAnswer || '';
196
+ }
197
+ // 在处理中,如果还没有任何内容,则显示空,让外部的状态指示器生效
198
+ else if (displayStatus === 'processing' || displayStatus === 'thinking') {
199
+ sourceText = content || '';
200
+ }
201
+ return deserializeMarkdown(sourceText, respTime);
202
+ }, [content, defaultAnswer, displayStatus, respTime]);
203
+
204
+ const parseReference = useMemo(() => {
205
+ if (!reference) return [];
206
+ let refs: any[] = [];
207
+ try {
208
+ refs = JSON.parse(reference);
209
+ } catch (error) {
210
+ return [];
211
+ }
212
+
213
+ // 获取所有retriveNodes
214
+ const retriveNodes = findRetriveNodes(slateContent);
215
+ // 1. 按id去重
216
+ const uniqueRetriveMap = new Map();
217
+ retriveNodes.forEach(node => {
218
+ if (node.id && !uniqueRetriveMap.has(node.id)) {
219
+ uniqueRetriveMap.set(node.id, node);
220
+ }
221
+ });
222
+ const uniqueRetriveNodes = Array.from(uniqueRetriveMap.values());
223
+ // 2. 用去重后的retriveNodes的id,在refs里找到order_num等于该id的文档对象
224
+
225
+ let result = uniqueRetriveNodes.map(node => {
226
+ const refDoc = refs.find(ref => String(ref.order_num) === String(node.id));
227
+ if (!refDoc) return null;
228
+ const meta = refDoc.metadata || {};
229
+ console.log(refs,uniqueRetriveNodes,'node``````````````````',content)
230
+ return {
231
+ file_id: meta.file_id ,
232
+ file_name: meta.source ? meta.source.split('/').pop() : refDoc.file_name || refDoc.order_num,
233
+ file_type: (meta.file_path || refDoc.file_path || '').split('.').pop() || 'pdf',
234
+ path: node.parsedFilePath,
235
+ score: Number(refDoc.score) || 0,
236
+ tags:uniqueRetriveNodes
237
+ .filter(n => n.parsedFilePath === node.parsedFilePath)
238
+ .map(n => ({
239
+ id: n.id || '',
240
+ index: n.indexId || '',
241
+ image_urls: n.imageUrls ? (Array.isArray(n.imageUrls) ? n.imageUrls : [n.imageUrls]) : [],
242
+ })),
243
+ parsedFilePath: refDoc.parsedFilePath,
244
+ ...refDoc // 保留原始字段以便后续扩展
245
+ };
246
+ }).filter(Boolean);
247
+ // 按parsedFilePath去重
248
+ const seen = new Set();
249
+ result = result.filter(item => {
250
+ if (!item.parsedFilePath) return true;
251
+ if (seen.has(item.parsedFilePath)) return false;
252
+ seen.add(item.parsedFilePath);
253
+ return true;
254
+ });
255
+ return result;
256
+ }, [reference, slateContent]);
257
+
258
+ // 新增:原始refs
259
+ const rawRefs = useMemo(() => {
260
+ try {
261
+ return JSON.parse(reference || '[]');
262
+ } catch {
263
+ return [];
264
+ }
265
+ }, [reference]);
266
+
267
+ // 1. 新增 think 展开状态管理
268
+ const [thinkExpandMap, setThinkExpandMap] = useState<Record<string, boolean>>({});
269
+
270
+ // 2. toggle 回调
271
+ const handleThinkToggle = (key: string) => {
272
+ setThinkExpandMap(prev => ({ ...prev, [key]: !prev[key] }));
273
+ };
274
+
275
+ // 3. 传递给 renderElement,带上 index 作为 key
276
+ const customRenderElement = (props: any) => {
277
+ // 传递 index 作为 thinkKey,Slate 没有 index 时 fallback 用 element.key
278
+ return renderElement({
279
+ ...props,
280
+ thinkExpandMap,
281
+ onThinkToggle: handleThinkToggle,
282
+ parentIndex: props.element?.queryId || props.element?.id || props.element?.key || undefined,
283
+ });
284
+ };
285
+
286
+ // 高阶函数传递回调(如需检索tag点击可扩展)
287
+ const customRenderLeaf = (props: any) => renderLeaf(props);
288
+
289
+ // 事件处理
290
+ const handleCopy = (event: any) => {
291
+ eventsEmit?.('action_copy:click', { content, event });
292
+ };
293
+ const handleThumbsup = () => {
294
+ eventsEmit?.('action_thumbsup', { restult: feedbackResult, queryId });
295
+ };
296
+ const handleThumbsdown = () => {
297
+ eventsEmit?.('action_thumbsdown', { restult: feedbackResult, queryId });
298
+ };
299
+
300
+ const handleRetriveTagClick = (tag: any) => {
301
+ // 在原始refs里查找
302
+ function findReferenceByTagId(refs: any[], tagId: any) {
303
+ for (const ref of refs) {
304
+ // 兼容references字段和自身order_num
305
+ if (ref.references && Array.isArray(ref.references)) {
306
+ const found = ref.references.find(
307
+ (r: any) => String(r.order_num) === String(tagId) || String(r.id) === String(tagId)
308
+ );
309
+ if (found) return found;
310
+ }
311
+ // 兼容refs本身就是扁平结构
312
+ if (String(ref.order_num) === String(tagId) || String(ref.id) === String(tagId)) {
313
+ return ref;
314
+ }
315
+ }
316
+ return null;
317
+ }
318
+ const found = findReferenceByTagId(rawRefs, tag.id);
319
+ eventsEmit?.('action_retrive_tag', { tagInfo: found });
320
+ };
321
+
322
+ // 获取所有retriveNodes
323
+ const retriveNodes = findRetriveNodes(slateContent);
324
+ // 收集图片
325
+ const retriveImages = useMemo(() => {
326
+ const imgs = retriveNodes
327
+ .filter(node => node.imageUrls && Array.isArray(node.imageUrls))
328
+ .flatMap(node => node.imageUrls);
329
+ //console.log('[retriveImages]', imgs, retriveNodes);
330
+ return imgs;
331
+ }, [retriveNodes]);
332
+
333
+ return (
334
+ <div className={`ai-chatbox-${classId}`}>
335
+ <div className="flex items-start mb-2 animate-fadeIn w-full text-wrap">
336
+ <div className="ai-avatar mr-3 shadow-sm flex-shrink-0" />
337
+ <div className="flex-1 w-[calc(100%-40px)]">
338
+ <div className="flex flex-col w-full relative">
339
+ <div className="text-xs mb-3 ai-time">{dayjs(time).format('YY-MM-DD HH:mm:ss')}</div>
340
+ <div className="ai-card w-full overflow-hidden">
341
+ <div className="ai-content w-full leading-relaxed">
342
+ <Slate
343
+ editor={editor.current}
344
+ initialValue={slateContent}
345
+ key={JSON.stringify(slateContent)}
346
+ >
347
+ <Editable
348
+ readOnly
349
+ renderElement={customRenderElement}
350
+ renderLeaf={props =>
351
+ customRenderLeaf({ ...props, onRetriveTagClick: handleRetriveTagClick })
352
+ }
353
+ className="min-h-[50px] w-full p-4 rounded-lg "
354
+ />
355
+ </Slate>
356
+ {retriveImages.length > 0 && (
357
+ <div className="mt-4 flex flex-wrap gap-3">
358
+ {retriveImages.map((url, idx) => (
359
+ <div key={url+idx} className="w-32 h-32 bg-gray-100 flex items-center justify-center rounded overflow-hidden relative">
360
+ <img
361
+ src={url}
362
+ alt="retrive-img"
363
+ className="object-contain w-full h-full"
364
+ style={{ display: 'block' }}
365
+ onLoad={e => { e.currentTarget.style.background = 'none'; }}
366
+ onError={e => { e.currentTarget.style.background = '#f00'; }}
367
+ />
368
+ <span className="absolute left-0 right-0 top-0 bottom-0 flex items-center justify-center text-xs text-gray-400" style={{display:'none'}}>加载中...</span>
369
+ </div>
370
+ ))}
371
+ </div>
372
+ )}
373
+ </div>
374
+ {resultType !== 5 && parseReference && parseReference?.length > 0 && (
375
+ <div className="px-4 mb-4" style={{ borderTop: `1px solid ${colors.border}` }}>
376
+ <div className="text-sm mt-4 pb-0 ai-time">知识库文档引用:</div>
377
+ <div className=" pt-2 flex flex-wrap gap-2">
378
+ {/* {parseReference.map((item: any, index: number) => {
379
+ // collection类型需传collectionItems
380
+ if (item.type === 'collection') {
381
+ return (
382
+ <ReferenceCard
383
+ key={index}
384
+ type="collection"
385
+ file_type={item.file_type}
386
+ file_name={item.file_name}
387
+ collectionItems={item.references}
388
+ eventsEmit={eventsEmit}
389
+ styles={styles}
390
+ />
391
+ );
392
+ }
393
+ return (
394
+ <ReferenceCard
395
+ key={index}
396
+ file_type={item.file_type}
397
+ file_name={item.file_name}
398
+ url={item.file_path}
399
+ file_id={item.file_id}
400
+ parse_url={item.parsed_file_url}
401
+ parsed_file_type={item.parsed_file_type}
402
+ references={item.references}
403
+ retrieve_tags={item.retrieve_tags || []}
404
+ eventsEmit={eventsEmit}
405
+ styles={styles}
406
+ />
407
+ );
408
+ })} */}
409
+ </div>
410
+ <RetriveItem files={parseReference} styles={styles} onTagClick={handleRetriveTagClick} eventsEmit={eventsEmit}/>
411
+ </div>
412
+ )}
413
+ <div>
414
+ {(displayStatus === 'processing' || displayStatus === 'thinking') && (
415
+ <div className="px-4 pb-3 flex items-center gap-2 text-sm ai-status-processing">
416
+ <span className="inline-block w-2 h-2 rounded-full animate-pulse ai-status-dot-processing"></span>
417
+ <span>AI 正在思考...</span>
418
+ </div>
419
+ )}
420
+ {displayStatus === 'uploading' && (
421
+ <div className="px-4 pb-3 flex items-center gap-2 text-sm ai-status-uploading">
422
+ <span className="inline-block w-2 h-2 rounded-full animate-pulse ai-status-dot-uploading"></span>
423
+ <span>文件上传中...</span>
424
+ </div>
425
+ )}
426
+ {displayStatus === 'analyzing' && (
427
+ <div className="px-4 pb-3 flex items-center gap-2 text-sm ai-status-uploading">
428
+ <span className="inline-block w-2 h-2 rounded-full animate-pulse ai-status-dot-uploading"></span>
429
+ <span>知识解析中...</span>
430
+ </div>
431
+ )}
432
+ {displayStatus === 'error' && (
433
+ <div className="px-4 pb-3 flex items-center gap-2 text-sm ai-status-error">
434
+ <svg
435
+ xmlns="http://www.w3.org/2000/svg"
436
+ width="14"
437
+ height="14"
438
+ viewBox="0 0 24 24"
439
+ fill="none"
440
+ stroke="currentColor"
441
+ strokeWidth="2"
442
+ strokeLinecap="round"
443
+ strokeLinejoin="round"
444
+ className="lucide lucide-alert-circle"
445
+ >
446
+ <circle cx="12" cy="12" r="10" />
447
+ <line x1="12" x2="12" y1="8" y2="12" />
448
+ <line x1="12" x2="12.01" y1="16" y2="16" />
449
+ </svg>
450
+ <span>抱歉,本次请求出错了,请稍后重试</span>
451
+ </div>
452
+ )}
453
+ {displayStatus === 'ready' && !isWelcome && (
454
+ <div>
455
+ <div
456
+ className="flex border-t pt-3 border-gray-100 items-center px-5 pb-1 justify-center text-xs "
457
+ style={{ color: colors.disabledText }}
458
+ >
459
+ <div>
460
+ 本次回答总计消耗{' '}
461
+ <span
462
+ style={{
463
+ color: colors.primary,
464
+ }}
465
+ >
466
+ {tokens}
467
+ </span>{' '}
468
+ tokens,等待总计耗时{' '}
469
+ <span
470
+ style={{
471
+ color: colors.primary,
472
+ }}
473
+ >
474
+ {Math.round(respTime / 1000)}
475
+ </span>
476
+
477
+ </div>
478
+ </div>
479
+ <div className="ai-card-footer border-dashed text-center text-xs text-gray-300 pb-4 ">
480
+ 免责声明:本回答仅基于大模型知识库数据,不保证100%准确,仅供参考。
481
+ </div>
482
+ </div>
483
+ )}
484
+ </div>
485
+ </div>
486
+ </div>
487
+ </div>
488
+ </div>
489
+ {!isWelcome && (
490
+ <div className="w-full mt-2 ai-actions-btns flex py-2 items-center justify-end gap-2 px-2">
491
+ <button
492
+ className="flex group hover:text-primary cursor-pointer items-center gap-1 text-sm"
493
+ onClick={handleCopy}
494
+ title="复制"
495
+ >
496
+ <Copy
497
+ size={13}
498
+ className="transition-colors text-gray-500! group-hover:text-blue-500!"
499
+ />
500
+ <span className="hidden text-xs sm:inline">复制</span>
501
+ </button>
502
+ <button
503
+ className={`flex group cursor-pointer items-center gap-1 text-sm${feedbackResult === 1 ? ' active' : ''}`}
504
+ onClick={handleThumbsup}
505
+ title="点赞"
506
+ >
507
+ <ThumbsUp
508
+ fill={feedbackResult === 1 ? colors.primary : 'none'}
509
+ size={13}
510
+ className={`transition-colors text-gray-500! group-hover:text-blue-500! ${feedbackResult === 1 ? 'icon-active' : ''}`}
511
+ />
512
+ <span className={`hidden text-xs sm:inline`}>赞</span>
513
+ </button>
514
+ <button
515
+ className={`flex group cursor-pointer items-center gap-1 text-sm${feedbackResult === 0 ? ' active' : ''}`}
516
+ onClick={handleThumbsdown}
517
+ title="点踩"
518
+ >
519
+ <ThumbsDown
520
+ fill={feedbackResult === 0 ? colors.primary : 'none'}
521
+ size={13}
522
+ className={`transition-colors text-gray-500! group-hover:text-blue-500! ${feedbackResult === 0 ? 'icon-active' : ''}`}
523
+ />
524
+ <span className={`hidden text-xs sm:inline`}>踩</span>
525
+ </button>
526
+ </div>
527
+ )}
528
+ </div>
529
+ );
530
+ }