@lobehub/chat 1.44.2 → 1.45.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 (324) hide show
  1. package/.remarkrc.mdx.js +6 -0
  2. package/CHANGELOG.md +50 -0
  3. package/changelog/v1.json +18 -0
  4. package/docs/changelog/2023-09-09-plugin-system.mdx +5 -0
  5. package/docs/changelog/2023-09-09-plugin-system.zh-CN.mdx +5 -0
  6. package/docs/changelog/2023-11-14-gpt4-vision.mdx +6 -0
  7. package/docs/changelog/2023-11-14-gpt4-vision.zh-CN.mdx +6 -0
  8. package/docs/changelog/2023-11-19-tts-stt.mdx +6 -0
  9. package/docs/changelog/2023-11-19-tts-stt.zh-CN.mdx +7 -0
  10. package/docs/changelog/2023-12-22-dalle-3.mdx +6 -0
  11. package/docs/changelog/2023-12-22-dalle-3.zh-CN.mdx +4 -0
  12. package/docs/changelog/2024-02-08-sso-oauth.mdx +6 -0
  13. package/docs/changelog/2024-02-08-sso-oauth.zh-CN.mdx +6 -0
  14. package/docs/changelog/2024-02-14-ollama.mdx +6 -0
  15. package/docs/changelog/2024-02-14-ollama.zh-CN.mdx +5 -0
  16. package/docs/changelog/2024-06-19-lobe-chat-v1.mdx +6 -0
  17. package/docs/changelog/2024-06-19-lobe-chat-v1.zh-CN.mdx +5 -0
  18. package/docs/changelog/2024-07-19-gpt-4o-mini.mdx +5 -0
  19. package/docs/changelog/2024-07-19-gpt-4o-mini.zh-CN.mdx +4 -0
  20. package/docs/changelog/2024-08-02-lobe-chat-database-docker.mdx +6 -0
  21. package/docs/changelog/2024-08-02-lobe-chat-database-docker.zh-CN.mdx +5 -0
  22. package/docs/changelog/2024-08-21-file-upload-and-knowledge-base.mdx +6 -0
  23. package/docs/changelog/2024-08-21-file-upload-and-knowledge-base.zh-CN.mdx +5 -0
  24. package/docs/changelog/2024-09-13-openai-o1-models.mdx +6 -0
  25. package/docs/changelog/2024-09-13-openai-o1-models.zh-CN.mdx +6 -0
  26. package/docs/changelog/2024-09-20-artifacts.mdx +6 -0
  27. package/docs/changelog/2024-09-20-artifacts.zh-CN.mdx +6 -0
  28. package/docs/changelog/2024-10-27-pin-assistant.mdx +5 -0
  29. package/docs/changelog/2024-10-27-pin-assistant.zh-CN.mdx +4 -0
  30. package/docs/changelog/2024-11-06-share-text-json.mdx +4 -0
  31. package/docs/changelog/2024-11-06-share-text-json.zh-CN.mdx +4 -0
  32. package/docs/changelog/2024-11-25-november-providers.mdx +7 -0
  33. package/docs/changelog/2024-11-25-november-providers.zh-CN.mdx +7 -0
  34. package/docs/changelog/2024-11-27-forkable-chat.mdx +4 -0
  35. package/docs/changelog/2024-11-27-forkable-chat.zh-CN.mdx +5 -0
  36. package/docs/changelog/2025-01-03-user-profile.mdx +5 -0
  37. package/docs/changelog/2025-01-03-user-profile.zh-CN.mdx +4 -1
  38. package/docs/self-hosting/advanced/auth/clerk.mdx +25 -41
  39. package/docs/self-hosting/advanced/auth/clerk.zh-CN.mdx +23 -37
  40. package/docs/self-hosting/advanced/auth/next-auth/auth0.mdx +31 -58
  41. package/docs/self-hosting/advanced/auth/next-auth/auth0.zh-CN.mdx +30 -57
  42. package/docs/self-hosting/advanced/auth/next-auth/authelia.mdx +38 -38
  43. package/docs/self-hosting/advanced/auth/next-auth/authelia.zh-CN.mdx +37 -38
  44. package/docs/self-hosting/advanced/auth/next-auth/authentik.mdx +26 -31
  45. package/docs/self-hosting/advanced/auth/next-auth/authentik.zh-CN.mdx +25 -30
  46. package/docs/self-hosting/advanced/auth/next-auth/casdoor.mdx +74 -75
  47. package/docs/self-hosting/advanced/auth/next-auth/casdoor.zh-CN.mdx +72 -73
  48. package/docs/self-hosting/advanced/auth/next-auth/cloudflare-zero-trust.mdx +24 -25
  49. package/docs/self-hosting/advanced/auth/next-auth/cloudflare-zero-trust.zh-CN.mdx +23 -24
  50. package/docs/self-hosting/advanced/auth/next-auth/github.mdx +46 -73
  51. package/docs/self-hosting/advanced/auth/next-auth/github.zh-CN.mdx +43 -70
  52. package/docs/self-hosting/advanced/auth/next-auth/logto.mdx +28 -37
  53. package/docs/self-hosting/advanced/auth/next-auth/logto.zh-CN.mdx +28 -37
  54. package/docs/self-hosting/advanced/auth/next-auth/microsoft-entra-id.mdx +36 -49
  55. package/docs/self-hosting/advanced/auth/next-auth/microsoft-entra-id.zh-CN.mdx +30 -43
  56. package/docs/self-hosting/advanced/auth/next-auth/wechat.mdx +13 -14
  57. package/docs/self-hosting/advanced/auth/next-auth/wechat.zh-CN.mdx +14 -15
  58. package/docs/self-hosting/advanced/auth/next-auth/zitadel.mdx +35 -69
  59. package/docs/self-hosting/advanced/auth/next-auth/zitadel.zh-CN.mdx +34 -68
  60. package/docs/self-hosting/advanced/auth.mdx +14 -13
  61. package/docs/self-hosting/advanced/auth.zh-CN.mdx +15 -14
  62. package/docs/self-hosting/advanced/feature-flags.zh-CN.mdx +15 -15
  63. package/docs/self-hosting/advanced/knowledge-base.mdx +14 -3
  64. package/docs/self-hosting/advanced/knowledge-base.zh-CN.mdx +12 -3
  65. package/docs/self-hosting/advanced/model-list.zh-CN.mdx +5 -5
  66. package/docs/self-hosting/advanced/s3/cloudflare-r2.mdx +52 -81
  67. package/docs/self-hosting/advanced/s3/cloudflare-r2.zh-CN.mdx +51 -80
  68. package/docs/self-hosting/advanced/s3/tencent-cloud.mdx +20 -34
  69. package/docs/self-hosting/advanced/s3/tencent-cloud.zh-CN.mdx +28 -43
  70. package/docs/self-hosting/advanced/s3.mdx +30 -34
  71. package/docs/self-hosting/advanced/s3.zh-CN.mdx +28 -33
  72. package/docs/self-hosting/advanced/settings-url-share.mdx +6 -6
  73. package/docs/self-hosting/advanced/settings-url-share.zh-CN.mdx +19 -19
  74. package/docs/self-hosting/advanced/upstream-sync.mdx +73 -89
  75. package/docs/self-hosting/advanced/upstream-sync.zh-CN.mdx +71 -87
  76. package/docs/self-hosting/advanced/webrtc.mdx +14 -21
  77. package/docs/self-hosting/advanced/webrtc.zh-CN.mdx +19 -26
  78. package/docs/self-hosting/environment-variables/analytics.zh-CN.mdx +0 -3
  79. package/docs/self-hosting/environment-variables/auth.zh-CN.mdx +1 -1
  80. package/docs/self-hosting/environment-variables/basic.mdx +13 -13
  81. package/docs/self-hosting/environment-variables/basic.zh-CN.mdx +15 -15
  82. package/docs/self-hosting/environment-variables/model-provider.mdx +1 -1
  83. package/docs/self-hosting/environment-variables/model-provider.zh-CN.mdx +1 -1
  84. package/docs/self-hosting/environment-variables/s3.mdx +3 -4
  85. package/docs/self-hosting/environment-variables/s3.zh-CN.mdx +5 -7
  86. package/docs/self-hosting/environment-variables.mdx +8 -4
  87. package/docs/self-hosting/environment-variables.zh-CN.mdx +4 -0
  88. package/docs/self-hosting/examples/azure-openai.mdx +9 -12
  89. package/docs/self-hosting/examples/azure-openai.zh-CN.mdx +8 -11
  90. package/docs/self-hosting/examples/ollama.mdx +8 -7
  91. package/docs/self-hosting/examples/ollama.zh-CN.mdx +8 -7
  92. package/docs/self-hosting/platform/alibaba-cloud.mdx +5 -7
  93. package/docs/self-hosting/platform/alibaba-cloud.zh-CN.mdx +5 -7
  94. package/docs/self-hosting/platform/btpanel.mdx +3 -2
  95. package/docs/self-hosting/platform/btpanel.zh-CN.mdx +3 -3
  96. package/docs/self-hosting/platform/docker-compose.mdx +75 -85
  97. package/docs/self-hosting/platform/docker-compose.zh-CN.mdx +75 -85
  98. package/docs/self-hosting/platform/docker.mdx +87 -92
  99. package/docs/self-hosting/platform/docker.zh-CN.mdx +96 -115
  100. package/docs/self-hosting/platform/netlify.mdx +44 -94
  101. package/docs/self-hosting/platform/netlify.zh-CN.mdx +40 -90
  102. package/docs/self-hosting/platform/railway.mdx +6 -7
  103. package/docs/self-hosting/platform/railway.zh-CN.mdx +6 -7
  104. package/docs/self-hosting/platform/repocloud.mdx +6 -7
  105. package/docs/self-hosting/platform/repocloud.zh-CN.mdx +6 -7
  106. package/docs/self-hosting/platform/sealos.mdx +6 -7
  107. package/docs/self-hosting/platform/sealos.zh-CN.mdx +6 -7
  108. package/docs/self-hosting/platform/vercel.mdx +7 -8
  109. package/docs/self-hosting/platform/vercel.zh-CN.mdx +7 -8
  110. package/docs/self-hosting/platform/zeabur.mdx +29 -32
  111. package/docs/self-hosting/platform/zeabur.zh-CN.mdx +29 -32
  112. package/docs/self-hosting/server-database/docker-compose.mdx +44 -71
  113. package/docs/self-hosting/server-database/docker-compose.zh-CN.mdx +44 -71
  114. package/docs/self-hosting/server-database/docker.mdx +84 -88
  115. package/docs/self-hosting/server-database/docker.zh-CN.mdx +87 -91
  116. package/docs/self-hosting/server-database/dokploy.mdx +18 -1
  117. package/docs/self-hosting/server-database/dokploy.zh-CN.mdx +84 -68
  118. package/docs/self-hosting/server-database/repocloud.mdx +7 -9
  119. package/docs/self-hosting/server-database/repocloud.zh-CN.mdx +9 -11
  120. package/docs/self-hosting/server-database/vercel.mdx +158 -243
  121. package/docs/self-hosting/server-database/vercel.zh-CN.mdx +137 -205
  122. package/docs/self-hosting/server-database/zeabur.mdx +21 -23
  123. package/docs/self-hosting/server-database/zeabur.zh-CN.mdx +20 -22
  124. package/docs/self-hosting/server-database.mdx +34 -36
  125. package/docs/self-hosting/server-database.zh-CN.mdx +34 -37
  126. package/docs/self-hosting/start.mdx +1 -4
  127. package/docs/self-hosting/start.zh-CN.mdx +1 -1
  128. package/docs/usage/agents/agent-organization.mdx +5 -21
  129. package/docs/usage/agents/agent-organization.zh-CN.mdx +5 -21
  130. package/docs/usage/agents/concepts.mdx +4 -4
  131. package/docs/usage/agents/concepts.zh-CN.mdx +4 -4
  132. package/docs/usage/agents/custom-agent.mdx +2 -2
  133. package/docs/usage/agents/custom-agent.zh-CN.mdx +2 -2
  134. package/docs/usage/agents/model.mdx +4 -4
  135. package/docs/usage/agents/model.zh-CN.mdx +6 -6
  136. package/docs/usage/agents/prompt.mdx +5 -6
  137. package/docs/usage/agents/prompt.zh-CN.mdx +5 -6
  138. package/docs/usage/agents/topics.mdx +2 -2
  139. package/docs/usage/agents/topics.zh-CN.mdx +2 -2
  140. package/docs/usage/features/agent-market.mdx +2 -2
  141. package/docs/usage/features/agent-market.zh-CN.mdx +2 -2
  142. package/docs/usage/features/auth.mdx +1 -5
  143. package/docs/usage/features/auth.zh-CN.mdx +1 -5
  144. package/docs/usage/features/database.mdx +1 -5
  145. package/docs/usage/features/database.zh-CN.mdx +1 -5
  146. package/docs/usage/features/local-llm.mdx +2 -6
  147. package/docs/usage/features/local-llm.zh-CN.mdx +2 -6
  148. package/docs/usage/features/mobile.mdx +1 -5
  149. package/docs/usage/features/mobile.zh-CN.mdx +1 -5
  150. package/docs/usage/features/multi-ai-providers.mdx +3 -11
  151. package/docs/usage/features/multi-ai-providers.zh-CN.mdx +3 -11
  152. package/docs/usage/features/plugin-system.mdx +9 -10
  153. package/docs/usage/features/plugin-system.zh-CN.mdx +9 -10
  154. package/docs/usage/features/pwa.mdx +11 -25
  155. package/docs/usage/features/pwa.zh-CN.mdx +11 -25
  156. package/docs/usage/features/text-to-image.mdx +2 -2
  157. package/docs/usage/features/text-to-image.zh-CN.mdx +2 -2
  158. package/docs/usage/features/theme.mdx +1 -6
  159. package/docs/usage/features/theme.zh-CN.mdx +1 -6
  160. package/docs/usage/features/tts.mdx +3 -7
  161. package/docs/usage/features/tts.zh-CN.mdx +3 -7
  162. package/docs/usage/features/vision.mdx +2 -2
  163. package/docs/usage/features/vision.zh-CN.mdx +2 -2
  164. package/docs/usage/foundation/basic.mdx +7 -18
  165. package/docs/usage/foundation/basic.zh-CN.mdx +6 -16
  166. package/docs/usage/foundation/share.mdx +3 -13
  167. package/docs/usage/foundation/share.zh-CN.mdx +3 -13
  168. package/docs/usage/foundation/text2image.mdx +3 -12
  169. package/docs/usage/foundation/text2image.zh-CN.mdx +3 -12
  170. package/docs/usage/foundation/translate.mdx +3 -13
  171. package/docs/usage/foundation/translate.zh-CN.mdx +3 -13
  172. package/docs/usage/foundation/tts-stt.mdx +3 -12
  173. package/docs/usage/foundation/tts-stt.zh-CN.mdx +3 -12
  174. package/docs/usage/foundation/vision.mdx +4 -16
  175. package/docs/usage/foundation/vision.zh-CN.mdx +4 -16
  176. package/docs/usage/plugins/basic-usage.mdx +7 -30
  177. package/docs/usage/plugins/basic-usage.zh-CN.mdx +7 -30
  178. package/docs/usage/plugins/development.mdx +30 -78
  179. package/docs/usage/plugins/development.zh-CN.mdx +31 -79
  180. package/docs/usage/plugins/store.mdx +2 -10
  181. package/docs/usage/plugins/store.zh-CN.mdx +2 -10
  182. package/docs/usage/providers/ai21.mdx +17 -33
  183. package/docs/usage/providers/ai21.zh-CN.mdx +17 -33
  184. package/docs/usage/providers/ai360.mdx +17 -33
  185. package/docs/usage/providers/ai360.zh-CN.mdx +20 -36
  186. package/docs/usage/providers/anthropic.mdx +23 -45
  187. package/docs/usage/providers/anthropic.zh-CN.mdx +22 -44
  188. package/docs/usage/providers/azure.mdx +21 -51
  189. package/docs/usage/providers/azure.zh-CN.mdx +19 -48
  190. package/docs/usage/providers/baichuan.mdx +16 -34
  191. package/docs/usage/providers/baichuan.zh-CN.mdx +15 -33
  192. package/docs/usage/providers/bedrock.mdx +38 -87
  193. package/docs/usage/providers/bedrock.zh-CN.mdx +37 -86
  194. package/docs/usage/providers/cloudflare.mdx +25 -48
  195. package/docs/usage/providers/cloudflare.zh-CN.mdx +24 -45
  196. package/docs/usage/providers/deepseek.mdx +25 -51
  197. package/docs/usage/providers/deepseek.zh-CN.mdx +24 -50
  198. package/docs/usage/providers/fireworksai.mdx +23 -43
  199. package/docs/usage/providers/fireworksai.zh-CN.mdx +21 -41
  200. package/docs/usage/providers/gemini.mdx +20 -46
  201. package/docs/usage/providers/gemini.zh-CN.mdx +20 -46
  202. package/docs/usage/providers/giteeai.mdx +24 -45
  203. package/docs/usage/providers/giteeai.zh-CN.mdx +22 -43
  204. package/docs/usage/providers/github.mdx +19 -45
  205. package/docs/usage/providers/github.zh-CN.mdx +19 -44
  206. package/docs/usage/providers/groq.mdx +12 -29
  207. package/docs/usage/providers/groq.zh-CN.mdx +11 -28
  208. package/docs/usage/providers/hunyuan.mdx +19 -39
  209. package/docs/usage/providers/hunyuan.zh-CN.mdx +18 -38
  210. package/docs/usage/providers/internlm.mdx +21 -38
  211. package/docs/usage/providers/internlm.zh-CN.mdx +19 -36
  212. package/docs/usage/providers/minimax.mdx +24 -50
  213. package/docs/usage/providers/minimax.zh-CN.mdx +22 -48
  214. package/docs/usage/providers/mistral.mdx +21 -39
  215. package/docs/usage/providers/mistral.zh-CN.mdx +20 -38
  216. package/docs/usage/providers/moonshot.mdx +20 -38
  217. package/docs/usage/providers/moonshot.zh-CN.mdx +19 -37
  218. package/docs/usage/providers/novita.mdx +20 -43
  219. package/docs/usage/providers/novita.zh-CN.mdx +19 -42
  220. package/docs/usage/providers/ollama/gemma.mdx +12 -29
  221. package/docs/usage/providers/ollama/gemma.zh-CN.mdx +12 -30
  222. package/docs/usage/providers/ollama/qwen.mdx +17 -32
  223. package/docs/usage/providers/ollama/qwen.zh-CN.mdx +12 -27
  224. package/docs/usage/providers/ollama.mdx +67 -99
  225. package/docs/usage/providers/ollama.zh-CN.mdx +67 -99
  226. package/docs/usage/providers/openai.mdx +42 -56
  227. package/docs/usage/providers/openai.zh-CN.mdx +39 -52
  228. package/docs/usage/providers/openrouter.mdx +48 -84
  229. package/docs/usage/providers/openrouter.zh-CN.mdx +31 -67
  230. package/docs/usage/providers/perplexity.mdx +16 -34
  231. package/docs/usage/providers/perplexity.zh-CN.mdx +16 -34
  232. package/docs/usage/providers/qwen.mdx +26 -52
  233. package/docs/usage/providers/qwen.zh-CN.mdx +25 -51
  234. package/docs/usage/providers/sensenova.mdx +24 -45
  235. package/docs/usage/providers/sensenova.zh-CN.mdx +22 -43
  236. package/docs/usage/providers/siliconcloud.mdx +17 -33
  237. package/docs/usage/providers/siliconcloud.zh-CN.mdx +17 -33
  238. package/docs/usage/providers/spark.mdx +20 -40
  239. package/docs/usage/providers/spark.zh-CN.mdx +19 -39
  240. package/docs/usage/providers/stepfun.mdx +17 -35
  241. package/docs/usage/providers/stepfun.zh-CN.mdx +17 -35
  242. package/docs/usage/providers/taichu.mdx +16 -34
  243. package/docs/usage/providers/taichu.zh-CN.mdx +15 -33
  244. package/docs/usage/providers/togetherai.mdx +18 -40
  245. package/docs/usage/providers/togetherai.zh-CN.mdx +18 -40
  246. package/docs/usage/providers/upstage.mdx +18 -34
  247. package/docs/usage/providers/upstage.zh-CN.mdx +17 -33
  248. package/docs/usage/providers/wenxin.mdx +22 -42
  249. package/docs/usage/providers/wenxin.zh-CN.mdx +20 -40
  250. package/docs/usage/providers/xai.mdx +21 -38
  251. package/docs/usage/providers/xai.zh-CN.mdx +20 -37
  252. package/docs/usage/providers/zeroone.mdx +22 -48
  253. package/docs/usage/providers/zeroone.zh-CN.mdx +22 -48
  254. package/docs/usage/providers/zhipu.mdx +17 -35
  255. package/docs/usage/providers/zhipu.zh-CN.mdx +18 -34
  256. package/docs/usage/providers.mdx +1 -6
  257. package/docs/usage/providers.zh-CN.mdx +1 -6
  258. package/docs/usage/start.mdx +4 -18
  259. package/docs/usage/start.zh-CN.mdx +2 -19
  260. package/docs/usage/tools-calling/anthropic.mdx +18 -51
  261. package/docs/usage/tools-calling/anthropic.zh-CN.mdx +22 -55
  262. package/docs/usage/tools-calling/google.mdx +16 -23
  263. package/docs/usage/tools-calling/google.zh-CN.mdx +17 -24
  264. package/docs/usage/tools-calling/groq.mdx +9 -0
  265. package/docs/usage/tools-calling/groq.zh-CN.mdx +44 -70
  266. package/docs/usage/tools-calling/moonshot.mdx +9 -0
  267. package/docs/usage/tools-calling/openai.mdx +19 -44
  268. package/docs/usage/tools-calling/openai.zh-CN.mdx +20 -45
  269. package/docs/usage/tools-calling.mdx +9 -0
  270. package/docs/usage/tools-calling.zh-CN.mdx +60 -68
  271. package/package.json +42 -41
  272. package/scripts/mdxWorkflow/index.ts +7 -0
  273. package/src/app/(main)/(mobile)/me/(home)/features/Header.tsx +2 -1
  274. package/src/app/(main)/(mobile)/me/data/features/Header.tsx +1 -1
  275. package/src/app/(main)/(mobile)/me/profile/features/Header.tsx +1 -1
  276. package/src/app/(main)/(mobile)/me/settings/features/Header.tsx +1 -1
  277. package/src/app/(main)/@nav/_layout/Mobile.tsx +2 -1
  278. package/src/app/(main)/chat/(workspace)/@topic/features/SystemRole/SystemRoleContent.tsx +2 -1
  279. package/src/app/(main)/chat/(workspace)/@topic/features/TopicListContent/ByTimeMode/GroupItem.tsx +2 -2
  280. package/src/app/(main)/chat/(workspace)/_layout/Desktop/ChatHeader/Main.tsx +2 -1
  281. package/src/app/(main)/chat/(workspace)/_layout/Desktop/ChatHeader/index.tsx +1 -1
  282. package/src/app/(main)/chat/(workspace)/_layout/Mobile/ChatHeader/ChatHeaderTitle.tsx +2 -1
  283. package/src/app/(main)/chat/(workspace)/_layout/Mobile/ChatHeader/index.tsx +1 -1
  284. package/src/app/(main)/chat/@session/_layout/Mobile/SessionHeader.tsx +2 -1
  285. package/src/app/(main)/chat/settings/_layout/Desktop/Header.tsx +1 -1
  286. package/src/app/(main)/chat/settings/_layout/Mobile/Header.tsx +1 -1
  287. package/src/app/(main)/discover/(detail)/provider/[slug]/features/InfoSidebar/SuggestionItem.tsx +8 -6
  288. package/src/app/(main)/discover/(list)/_layout/Desktop/Nav.tsx +1 -1
  289. package/src/app/(main)/discover/(list)/_layout/Mobile/Header.tsx +2 -1
  290. package/src/app/(main)/discover/_layout/Desktop/Header.tsx +1 -1
  291. package/src/app/(main)/discover/components/VirtuosoGridList/index.tsx +9 -5
  292. package/src/app/(main)/discover/search/_layout/Mobile/Header.tsx +1 -1
  293. package/src/app/(main)/files/(content)/@menu/features/KnowledgeBase/EmptyStatus.tsx +21 -13
  294. package/src/app/(main)/repos/[id]/evals/evaluation/EvaluationList/index.tsx +1 -1
  295. package/src/app/(main)/settings/sync/features/DeviceInfo/SystemIcon.tsx +2 -0
  296. package/src/components/Branding/ProductLogo/Custom.tsx +19 -20
  297. package/src/components/BrowserIcon/index.tsx +19 -30
  298. package/src/components/BubblesLoading/index.tsx +31 -23
  299. package/src/components/FunctionModal/createModalHooks.ts +6 -3
  300. package/src/components/StopLoading.tsx +10 -7
  301. package/src/database/repositories/aiInfra/index.ts +19 -7
  302. package/src/database/server/models/__tests__/aiModel.test.ts +4 -6
  303. package/src/database/server/models/aiModel.ts +6 -3
  304. package/src/features/ChatInput/Desktop/InputArea/index.tsx +2 -2
  305. package/src/features/InitClientDB/EnableModal.tsx +2 -2
  306. package/src/features/InitClientDB/{PGliteSVG.tsx → PGliteIcon.tsx} +17 -11
  307. package/src/features/ShareModal/ShareImage/index.tsx +32 -22
  308. package/src/features/ShareModal/ShareJSON/Preview.tsx +2 -2
  309. package/src/features/ShareModal/ShareJSON/index.tsx +49 -37
  310. package/src/features/ShareModal/ShareText/Preview.tsx +4 -1
  311. package/src/features/ShareModal/ShareText/index.tsx +49 -38
  312. package/src/features/ShareModal/index.tsx +1 -1
  313. package/src/features/ShareModal/style.ts +30 -0
  314. package/src/store/aiInfra/slices/aiProvider/action.ts +1 -1
  315. package/src/types/aiProvider.ts +1 -0
  316. package/src/utils/colorUtils.ts +1 -1
  317. package/src/components/BrowserIcon/components/Brave.tsx +0 -56
  318. package/src/components/BrowserIcon/components/Chrome.tsx +0 -14
  319. package/src/components/BrowserIcon/components/Chromium.tsx +0 -14
  320. package/src/components/BrowserIcon/components/Edge.tsx +0 -36
  321. package/src/components/BrowserIcon/components/Firefox.tsx +0 -38
  322. package/src/components/BrowserIcon/components/Opera.tsx +0 -19
  323. package/src/components/BrowserIcon/components/Safari.tsx +0 -23
  324. package/src/components/BrowserIcon/components/Samsung.tsx +0 -21
@@ -27,76 +27,71 @@ LobeChat 的插件实现基于模型的 Tools Calling 能力,模型本身的 T
27
27
  我们基于实际真实的用户场景出发构建了两大组测试任务,第一组为简单的调用指令(天气查询),第二组为复杂调用指令(文生图)。这两组指令的系统描述如下:
28
28
 
29
29
  <Tabs items={["简单指令(天气查询)", "复杂指令(文生图)"]}>
30
- <Tab>
31
-
32
- ```md
33
- ## Tools
34
-
35
- You can use these tools below:
36
-
37
- ### Realtime Weather
38
-
39
- Get realtime weather information
40
-
41
- The APIs you can use:
30
+ <Tab>
31
+ ```md
32
+ ## Tools
42
33
 
43
- #### `realtime-weather____fetchCurrentWeather`
34
+ You can use these tools below:
44
35
 
45
- 获取当前天气情况
46
- ```
36
+ ### Realtime Weather
47
37
 
48
- </Tab>
38
+ Get realtime weather information
49
39
 
50
- <Tab>
40
+ The APIs you can use:
51
41
 
52
- ```md
53
- ## Tools
42
+ #### `realtime-weather____fetchCurrentWeather`
54
43
 
55
- You can use these tools below:
44
+ 获取当前天气情况
45
+ ```
46
+ </Tab>
56
47
 
57
- ### DALL·E 3
48
+ <Tab>
49
+ ```md
50
+ ## Tools
58
51
 
59
- Whenever a description of an image is given, use lobe-image-designer to create the images and then summarize the prompts used to generate the images in plain text. If the user does not ask for a specific number of images, default to creating four captions to send to lobe-image-designer that are written to be as diverse as possible.
52
+ You can use these tools below:
60
53
 
61
- All captions sent to lobe-image-designer must abide by the following policies:
54
+ ### DALL·E 3
62
55
 
63
- 1. If the description is not in English, then translate it.
64
- 2. Do not create more than 4 images, even if the user requests more.
65
- 3. Don't create images of politicians or other public figures. Recommend other ideas instead.
66
- 4. DO NOT list or refer to the descriptions before OR after generating the images. They should ONLY ever be written out ONCE, in the `prompts` field of the request. You do not need to ask for permission to generate, just do it!
67
- 5. Always mention the image type (photo, oil painting, watercolor painting, illustration, cartoon, drawing, vector, render, etc.) at the beginning of the caption. Unless the caption suggests otherwise, make at least 1--2 of the 4 images photos.
68
- 6. Diversify depictions of ALL images with people to include DESCENT and GENDER for EACH person using direct terms. Adjust only human descriptions.
56
+ Whenever a description of an image is given, use lobe-image-designer to create the images and then summarize the prompts used to generate the images in plain text. If the user does not ask for a specific number of images, default to creating four captions to send to lobe-image-designer that are written to be as diverse as possible.
69
57
 
70
- - EXPLICITLY specify these attributes, not abstractly reference them. The attributes should be specified in a minimal way and should directly describe their physical form.
71
- - Your choices should be grounded in reality. For example, all of a given OCCUPATION should not be the same gender or race. Additionally, focus on creating diverse, inclusive, and exploratory scenes via the properties you choose during rewrites. Make choices that may be insightful or unique sometimes.
72
- - Use "various" or "diverse" ONLY IF the description refers to groups of more than 3 people. Do not change the number of people requested in the original description.
73
- - Don't alter memes, fictional character origins, or unseen people. Maintain the original prompt's intent and prioritize quality.
74
- - Do not create any imagery that would be offensive.
58
+ All captions sent to lobe-image-designer must abide by the following policies:
75
59
 
76
- 8. Silently modify descriptions that include names or hints or references of specific people or celebrities by carefully selecting a few minimal modifications to substitute references to the people with generic descriptions that don't divulge any information about their identities, except for their genders and physiques. Do this EVEN WHEN the instructions ask for the prompt to not be changed. Some special cases:
60
+ 1. If the description is not in English, then translate it.
61
+ 2. Do not create more than 4 images, even if the user requests more.
62
+ 3. Don't create images of politicians or other public figures. Recommend other ideas instead.
63
+ 4. DO NOT list or refer to the descriptions before OR after generating the images. They should ONLY ever be written out ONCE, in the `prompts` field of the request. You do not need to ask for permission to generate, just do it!
64
+ 5. Always mention the image type (photo, oil painting, watercolor painting, illustration, cartoon, drawing, vector, render, etc.) at the beginning of the caption. Unless the caption suggests otherwise, make at least 1--2 of the 4 images photos.
65
+ 6. Diversify depictions of ALL images with people to include DESCENT and GENDER for EACH person using direct terms. Adjust only human descriptions.
77
66
 
78
- - Modify such prompts even if you don't know who the person is, or if their name is misspelled (e.g. "Barake Obema")
79
- - If the reference to the person will only appear as TEXT out in the image, then use the reference as is and do not modify it.
80
- - When making the substitutions, don't use prominent titles that could give away the person's identity. E.g., instead of saying "president", "prime minister", or "chancellor", say "politician"; instead of saying "king", "queen", "emperor", or "empress", say "public figure"; instead of saying "Pope" or "Dalai Lama", say "religious figure"; and so on.
81
- - If any creative professional or studio is named, substitute the name with a description of their style that does not reference any specific people, or delete the reference if they are unknown. DO NOT refer to the artist or studio's style.
67
+ - EXPLICITLY specify these attributes, not abstractly reference them. The attributes should be specified in a minimal way and should directly describe their physical form.
68
+ - Your choices should be grounded in reality. For example, all of a given OCCUPATION should not be the same gender or race. Additionally, focus on creating diverse, inclusive, and exploratory scenes via the properties you choose during rewrites. Make choices that may be insightful or unique sometimes.
69
+ - Use "various" or "diverse" ONLY IF the description refers to groups of more than 3 people. Do not change the number of people requested in the original description.
70
+ - Don't alter memes, fictional character origins, or unseen people. Maintain the original prompt's intent and prioritize quality.
71
+ - Do not create any imagery that would be offensive.
82
72
 
83
- The prompt must intricately describe every part of the image in concrete, objective detail. THINK about what the end goal of the description is, and extrapolate that to what would make satisfying images. All descriptions sent to lobe-image-designer should be a paragraph of text that is extremely descriptive and detailed. Each should be more than 3 sentences long.
73
+ 8. Silently modify descriptions that include names or hints or references of specific people or celebrities by carefully selecting a few minimal modifications to substitute references to the people with generic descriptions that don't divulge any information about their identities, except for their genders and physiques. Do this EVEN WHEN the instructions ask for the prompt to not be changed. Some special cases:
84
74
 
85
- The APIs you can use:
75
+ - Modify such prompts even if you don't know who the person is, or if their name is misspelled (e.g. "Barake Obema")
76
+ - If the reference to the person will only appear as TEXT out in the image, then use the reference as is and do not modify it.
77
+ - When making the substitutions, don't use prominent titles that could give away the person's identity. E.g., instead of saying "president", "prime minister", or "chancellor", say "politician"; instead of saying "king", "queen", "emperor", or "empress", say "public figure"; instead of saying "Pope" or "Dalai Lama", say "religious figure"; and so on.
78
+ - If any creative professional or studio is named, substitute the name with a description of their style that does not reference any specific people, or delete the reference if they are unknown. DO NOT refer to the artist or studio's style.
86
79
 
87
- #### `lobe-image-designer____text2image____builtin`
80
+ The prompt must intricately describe every part of the image in concrete, objective detail. THINK about what the end goal of the description is, and extrapolate that to what would make satisfying images. All descriptions sent to lobe-image-designer should be a paragraph of text that is extremely descriptive and detailed. Each should be more than 3 sentences long.
88
81
 
89
- Create images from a text-only prompt.
90
- ```
82
+ The APIs you can use:
91
83
 
92
- </Tab>
84
+ #### `lobe-image-designer____text2image____builtin`
93
85
 
86
+ Create images from a text-only prompt.
87
+ ```
88
+ </Tab>
94
89
  </Tabs>
95
90
 
96
- 如上所示,简单调用指令在插件调用时它的系统描述(system role)相对简单,复杂调用指令的系统描述会复杂很多。这两组不同复杂度的指令可以比较好地区分出模型对于系统指令的遵循能力:
91
+ 如上所示,简单调用指令在插件调用时它的系统描述 (system role) 相对简单,复杂调用指令的系统描述会复杂很多。这两组不同复杂度的指令可以比较好地区分出模型对于系统指令的遵循能力:
97
92
 
98
93
  - **天气查询可以测试模型的基础 Tools Calling 能力,确认模型是否存在「虚假宣传」的情况。** 就我们实际的测试来看,的确存在一些模型号称具有 Tools Calling 能力,但是处于完全不可用的状态;
99
- - **文生图可以测试模型指令跟随能力的上限。** 例如基础模型(例如 GPT-3.5)可能只能生成 1 张图片的 prompt,而高级模型(例如 GPT-4o)则能够生成 1~4 张图片的 prompt。
94
+ - **文生图可以测试模型指令跟随能力的上限。** 例如基础模型(例如 GPT-3.5)可能只能生成 1 张图片的 prompt,而高级模型(例如 GPT-4o)则能够生成 1\~4 张图片的 prompt。
100
95
 
101
96
  ### 简单调用指令:天气查询
102
97
 
@@ -126,11 +121,11 @@ Create images from a text-only prompt.
126
121
 
127
122
  针对这一个工具,我们构建的测试组中包含了三个指令:
128
123
 
129
- | 指令编号 | 指令内容 | 基础 Tools Calling 调用 | 并发调用 | 复合指令跟随 |
130
- | --- | --- | --- | --- | --- |
131
- | 指令 ① | 告诉我杭州和北京的天气,先回答我好的 | 🟢 | 🟢 | 🟢 |
132
- | 指令 ② | 告诉我杭州和北京的天气 | 🟢 | 🟢 | - |
133
- | 指令 ③ | 告诉我杭州的天气 | 🟢 | - | - |
124
+ | 指令编号 | 指令内容 | 基础 Tools Calling 调用 | 并发调用 | 复合指令跟随 |
125
+ | ---- | ------------------ | ------------------- | ---- | ------ |
126
+ | 指令 ① | 告诉我杭州和北京的天气,先回答我好的 | 🟢 | 🟢 | 🟢 |
127
+ | 指令 ② | 告诉我杭州和北京的天气 | 🟢 | 🟢 | - |
128
+ | 指令 ③ | 告诉我杭州的天气 | 🟢 | - | - |
134
129
 
135
130
  上述三个指令的复杂度逐渐递减,我们可以通过这三个指令来测试模型对于简单指令的处理能力。
136
131
 
@@ -147,30 +142,26 @@ Create images from a text-only prompt.
147
142
 
148
143
  <Tabs items={["复合指令跟随","并发工具调用","基础工具调用"]}>
149
144
  <Tab>
150
-
151
145
  根据我们实际的日常使用,工具调用往往会和普通文本生成结合在一起回答。例如比较经典的 Code Interpreter 插件,ChatGPT 往往会先回复一些代码生成的思路,然后再调用 Code Interpreter 插件生成代码。
152
146
 
153
147
  这种情况下,我们需要模型能够正确地识别出用户的意图,然后调用对应的工具。
154
148
 
155
149
  因此, 指令 ① 中的「告诉我杭州和北京的天气,先回答我好的」就是一个复合指令跟随的例子。前半句期望模型调用天气查询工具,后半句期望模型回答「好的」。并且理想的顺序应该是先回答「好的」,然后再调用天气查询工具。
150
+ </Tab>
156
151
 
157
- </Tab>
158
152
  <Tab>
159
-
160
153
  并发工具调用(Parallel function calling)是指模型能够同时调用多个工具,或同时调用一个工具多次,这在对话中可以大大降低用户等待的时间,提升用户体验。
161
154
 
162
- 并发工具调用能力由 OpenAI 于 2023年11月率先提出,目前支持并发工具调用的模型并不算多,属于是 Tools Calling 的进阶能力。
155
+ 并发工具调用能力由 OpenAI 于 2023 11 月率先提出,目前支持并发工具调用的模型并不算多,属于是 Tools Calling 的进阶能力。
163
156
 
164
157
  指令 ② 中的「告诉我杭州和北京的天气」就是一个期望执行并发调用的例子。理想的情况下,单个模型的返回应该存在两个工具的调用返回。
158
+ </Tab>
165
159
 
166
- </Tab>
167
160
  <Tab>
168
-
169
161
  基础工具调用不必再赘述,这是 Tools Calling 的基础能力。
170
162
 
171
163
  指令 ③ 中的「告诉我杭州的天气」就是最基本的工具调用的例子。
172
-
173
- </Tab>
164
+ </Tab>
174
165
  </Tabs>
175
166
 
176
167
  ### 复杂调用指令:文生图
@@ -229,10 +220,10 @@ Create images from a text-only prompt.
229
220
 
230
221
  针对这一个工具,我们构建的测试组中包含了两个指令:
231
222
 
232
- | 指令编号 | 指令内容 | 流式调用 | 复杂 Tools Calling 调用 | 并发调用 | 复合指令跟随 |
233
- | --- | --- | --- | --- | --- | --- |
234
- | 指令 ① | 我要画 3 幅画,第一幅画的主体为一只达芬奇风格的小狗,第二幅是毕加索风格的大雁,最后一幅是莫奈风格的狮子。每一幅都需要产出 2 个 prompts。请先说明你的构思,然后开始生成相应的图片。 | 🟢 | 🟢 | 🟢 | 🟢 |
235
- | 指令 ② | 画一只小狗 | 🟢 | 🟢 | - | - |
223
+ | 指令编号 | 指令内容 | 流式调用 | 复杂 Tools Calling 调用 | 并发调用 | 复合指令跟随 |
224
+ | ---- | ------------------------------------------------------------------------------------------------ | ---- | ------------------- | ---- | ------ |
225
+ | 指令 ① | 我要画 3 幅画,第一幅画的主体为一只达芬奇风格的小狗,第二幅是毕加索风格的大雁,最后一幅是莫奈风格的狮子。每一幅都需要产出 2 个 prompts。请先说明你的构思,然后开始生成相应的图片。 | 🟢 | 🟢 | 🟢 | 🟢 |
226
+ | 指令 ② | 画一只小狗 | 🟢 | 🟢 | - | - |
236
227
 
237
228
  此外,由于文生图的 prompts 的生成时间较长,这一组指令也可以清晰地测试出模型的 API 是否支持流式 Tools Calling。
238
229
 
@@ -242,12 +233,13 @@ Create images from a text-only prompt.
242
233
 
243
234
  <Cards>
244
235
  <Card href={'/docs/usage/tools-calling/openai'} title={'OpenAI GPT 系列'} />
236
+
245
237
  <Card href={'/docs/usage/tools-calling/anthropic'} title={'Anthropic Claude 系列'} />
238
+
246
239
  <Card href={'/docs/usage/tools-calling/google'} title={'Google Gemini 系列'} />
247
- <Card
248
- href={'/docs/usage/tools-calling/groq'}
249
- title={'【TODO】Groq 部署的开源模型(Llama 3/Qwen2/Mistral/...)'}
250
- />
240
+
241
+ <Card href={'/docs/usage/tools-calling/groq'} title={'【TODO】Groq 部署的开源模型(Llama 3/Qwen2/Mistral/...)'} />
242
+
251
243
  <Card href={'/docs/usage/tools-calling/moonshot'} title={'【TODO】Moonshot 系列'} />
252
244
  </Cards>
253
245
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lobehub/chat",
3
- "version": "1.44.2",
3
+ "version": "1.45.0",
4
4
  "description": "Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.",
5
5
  "keywords": [
6
6
  "framework",
@@ -40,13 +40,13 @@
40
40
  "db:studio": "drizzle-kit studio",
41
41
  "db:z-pull": "drizzle-kit introspect",
42
42
  "dev": "next dev --turbo -p 3010",
43
- "docs:i18n": "lobe-i18n md && npm run lint:mdx",
43
+ "docs:i18n": "lobe-i18n md && npm run lint:md && npm run lint:mdx",
44
44
  "docs:seo": "lobe-seo && npm run lint:mdx",
45
45
  "i18n": "npm run workflow:i18n && lobe-i18n",
46
46
  "lint": "npm run lint:ts && npm run lint:style && npm run type-check && npm run lint:circular",
47
47
  "lint:circular": "dpdm src/**/*.ts --no-warning --no-tree --exit-code circular:1 --no-progress -T true --skip-dynamic-imports circular",
48
- "lint:md": "remark . --quiet --frail --output",
49
- "lint:mdx": "npm run workflow:mdx-with-lint && prettier -c --write \"{src,docs}/**/*.mdx\" && npm run workflow:mdx-with-lint",
48
+ "lint:md": "remark . --silent --output",
49
+ "lint:mdx": "npm run workflow:mdx && remark \"docs/**/*.mdx\" -r ./.remarkrc.mdx.js --silent --output && eslint \"docs/**/*.mdx\" --quiet --fix",
50
50
  "lint:style": "stylelint \"{src,tests}/**/*.{js,jsx,ts,tsx}\" --fix",
51
51
  "lint:ts": "eslint \"{src,tests}/**/*.{js,jsx,ts,tsx}\" --fix",
52
52
  "prepare": "husky",
@@ -72,16 +72,15 @@
72
72
  "workflow:docs": "tsx ./scripts/docsWorkflow/index.ts",
73
73
  "workflow:i18n": "tsx ./scripts/i18nWorkflow/index.ts",
74
74
  "workflow:mdx": "tsx ./scripts/mdxWorkflow/index.ts",
75
- "workflow:mdx-with-lint": "tsx ./scripts/mdxWorkflow/index.ts && eslint \"docs/**/*.mdx\" --quiet --fix",
76
75
  "workflow:readme": "tsx ./scripts/readmeWorkflow/index.ts"
77
76
  },
78
77
  "lint-staged": {
79
78
  "*.md": [
80
- "remark --quiet --output --",
79
+ "remark --silent --output --",
81
80
  "prettier --write --no-error-on-unmatched-pattern"
82
81
  ],
83
82
  "*.mdx": [
84
- "npm run workflow:mdx",
83
+ "remark -r ./.remarkrc.mdx.js --silent --output --",
85
84
  "eslint --quiet --fix"
86
85
  ],
87
86
  "*.json": [
@@ -114,25 +113,25 @@
114
113
  "@azure/openai": "1.0.0-beta.12",
115
114
  "@baiducloud/qianfan": "^0.1.9",
116
115
  "@cfworker/json-schema": "^4.1.0",
117
- "@clerk/localizations": "^3.9.5",
118
- "@clerk/nextjs": "^6.9.6",
119
- "@clerk/themes": "^2.2.3",
116
+ "@clerk/localizations": "^3.9.6",
117
+ "@clerk/nextjs": "^6.9.7",
118
+ "@clerk/themes": "^2.2.4",
120
119
  "@codesandbox/sandpack-react": "^2.19.10",
121
120
  "@cyntler/react-doc-viewer": "^1.17.0",
122
121
  "@electric-sql/pglite": "0.2.13",
123
122
  "@google/generative-ai": "^0.21.0",
124
123
  "@huggingface/inference": "^2.8.1",
125
124
  "@icons-pack/react-simple-icons": "9.6.0",
126
- "@khmyznikov/pwa-install": "^0.3.9",
125
+ "@khmyznikov/pwa-install": "0.3.9",
127
126
  "@langchain/community": "^0.3.22",
128
- "@lobehub/charts": "^1.11.1",
127
+ "@lobehub/charts": "^1.12.0",
129
128
  "@lobehub/chat-plugin-sdk": "^1.32.4",
130
129
  "@lobehub/chat-plugins-gateway": "^1.9.0",
131
130
  "@lobehub/icons": "^1.61.1",
132
- "@lobehub/tts": "^1.27.0",
133
- "@lobehub/ui": "^1.162.0",
131
+ "@lobehub/tts": "^1.28.0",
132
+ "@lobehub/ui": "^1.163.0",
134
133
  "@neondatabase/serverless": "^0.10.4",
135
- "@next/third-parties": "^15.1.3",
134
+ "@next/third-parties": "^15.1.4",
136
135
  "@react-spring/web": "^9.7.5",
137
136
  "@sentry/nextjs": "^7.120.2",
138
137
  "@serwist/next": "^9.0.11",
@@ -154,15 +153,15 @@
154
153
  "dayjs": "^1.11.13",
155
154
  "debug": "^4.4.0",
156
155
  "dexie": "^3.2.7",
157
- "diff": "^5.2.0",
156
+ "diff": "^7.0.0",
158
157
  "drizzle-orm": "^0.38.3",
159
158
  "drizzle-zod": "^0.5.1",
160
159
  "fast-deep-equal": "^3.1.3",
161
160
  "file-type": "^19.6.0",
162
161
  "framer-motion": "^11.16.0",
163
162
  "gpt-tokenizer": "^2.8.1",
164
- "i18next": "^23.16.8",
165
- "i18next-browser-languagedetector": "^7.2.2",
163
+ "i18next": "^24.2.1",
164
+ "i18next-browser-languagedetector": "^8.0.2",
166
165
  "i18next-resources-to-backend": "^1.2.1",
167
166
  "idb-keyval": "^6.2.1",
168
167
  "immer": "^10.1.1",
@@ -173,20 +172,20 @@
173
172
  "langfuse": "3.29.1",
174
173
  "langfuse-core": "3.29.1",
175
174
  "lodash-es": "^4.17.21",
176
- "lucide-react": "latest",
175
+ "lucide-react": "^0.469.0",
177
176
  "mammoth": "^1.9.0",
178
177
  "modern-screenshot": "^4.5.5",
179
178
  "nanoid": "^5.0.9",
180
- "next": "^15.1.3",
179
+ "next": "^15.1.4",
181
180
  "next-auth": "beta",
182
- "next-mdx-remote": "^4.4.1",
181
+ "next-mdx-remote": "^5.0.0",
183
182
  "nextjs-toploader": "^3.7.15",
184
183
  "numeral": "^2.0.6",
185
184
  "nuqs": "^1.20.0",
186
- "officeparser": "^4.2.0",
185
+ "officeparser": "^5.1.1",
187
186
  "ollama": "^0.5.11",
188
187
  "openai": "^4.77.3",
189
- "openapi-fetch": "^0.9.8",
188
+ "openapi-fetch": "^0.13.4",
190
189
  "partial-json": "^0.1.7",
191
190
  "pdf-parse": "^1.1.1",
192
191
  "pdfjs-dist": "4.8.69",
@@ -194,7 +193,7 @@
194
193
  "pino": "^9.6.0",
195
194
  "plaiceholder": "^3.0.0",
196
195
  "polished": "^4.3.1",
197
- "posthog-js": "^1.204.0",
196
+ "posthog-js": "^1.205.0",
198
197
  "pwa-install-handler": "^2.6.2",
199
198
  "query-string": "^9.1.1",
200
199
  "random-words": "^2.0.1",
@@ -207,17 +206,18 @@
207
206
  "react-layout-kit": "^1.9.1",
208
207
  "react-lazy-load": "^4.0.1",
209
208
  "react-pdf": "^9.2.1",
210
- "react-scan": "^0.0.51",
209
+ "react-scan": "^0.0.54",
211
210
  "react-virtuoso": "^4.12.3",
212
211
  "react-wrap-balancer": "^1.1.1",
213
- "remark": "^14.0.3",
214
- "remark-gfm": "^3.0.1",
215
- "remark-html": "^15.0.2",
212
+ "remark": "^15.0.1",
213
+ "remark-gfm": "^4.0.0",
214
+ "remark-html": "^16.0.1",
216
215
  "request-filtering-agent": "^2.0.1",
217
216
  "resolve-accept-language": "^3.1.10",
218
217
  "rtl-detect": "^1.1.2",
219
218
  "semver": "^7.6.3",
220
219
  "sharp": "^0.33.5",
220
+ "shiki": "^1.26.1",
221
221
  "stripe": "^15.12.0",
222
222
  "superjson": "^2.2.2",
223
223
  "svix": "^1.45.1",
@@ -242,29 +242,29 @@
242
242
  "devDependencies": {
243
243
  "@commitlint/cli": "^19.6.1",
244
244
  "@edge-runtime/vm": "^5.0.0",
245
- "@huggingface/tasks": "^0.12.30",
245
+ "@huggingface/tasks": "^0.13.13",
246
246
  "@lobehub/i18n-cli": "^1.20.3",
247
247
  "@lobehub/lint": "^1.25.3",
248
248
  "@lobehub/seo-cli": "^1.4.3",
249
- "@next/bundle-analyzer": "^15.1.3",
250
- "@next/eslint-plugin-next": "^15.1.3",
249
+ "@next/bundle-analyzer": "^15.1.4",
250
+ "@next/eslint-plugin-next": "^15.1.4",
251
251
  "@peculiar/webcrypto": "^1.5.0",
252
252
  "@semantic-release/exec": "^6.0.3",
253
253
  "@testing-library/jest-dom": "^6.6.3",
254
254
  "@testing-library/react": "^16.1.0",
255
- "@types/chroma-js": "^2.4.5",
255
+ "@types/chroma-js": "^3.1.0",
256
256
  "@types/crypto-js": "^4.2.2",
257
257
  "@types/debug": "^4.1.12",
258
- "@types/diff": "^6.0.0",
258
+ "@types/diff": "^7.0.0",
259
259
  "@types/fs-extra": "^11.0.4",
260
260
  "@types/ip": "^1.1.3",
261
261
  "@types/json-schema": "^7.0.15",
262
262
  "@types/lodash": "^4.17.14",
263
263
  "@types/lodash-es": "^4.17.12",
264
- "@types/node": "^20.17.12",
264
+ "@types/node": "^22.10.5",
265
265
  "@types/numeral": "^2.0.5",
266
266
  "@types/pg": "^8.11.10",
267
- "@types/react": "18.3.13",
267
+ "@types/react": "^19.0.3",
268
268
  "@types/react-dom": "^19.0.2",
269
269
  "@types/rtl-detect": "^1.0.3",
270
270
  "@types/semver": "^7.5.8",
@@ -282,13 +282,12 @@
282
282
  "dpdm-fast": "^1.0.7",
283
283
  "drizzle-kit": "^0.30.1",
284
284
  "eslint": "^8.57.1",
285
- "eslint-plugin-mdx": "^2.3.4",
286
- "eslint-plugin-unused-imports": "4.0.1",
285
+ "eslint-plugin-mdx": "^3.1.5",
287
286
  "fake-indexeddb": "^6.0.0",
288
287
  "fs-extra": "^11.2.0",
289
288
  "glob": "^11.0.0",
290
289
  "gray-matter": "^4.0.3",
291
- "happy-dom": "^15.11.7",
290
+ "happy-dom": "^16.5.2",
292
291
  "husky": "^9.1.7",
293
292
  "just-diff": "^6.0.2",
294
293
  "lint-staged": "^15.3.0",
@@ -298,11 +297,13 @@
298
297
  "mime": "^4.0.6",
299
298
  "node-fetch": "^3.3.2",
300
299
  "node-gyp": "^11.0.0",
301
- "openapi-typescript": "^6.7.6",
300
+ "openapi-typescript": "^7.5.2",
302
301
  "p-map": "^7.0.3",
303
302
  "prettier": "^3.4.2",
304
- "remark-cli": "^11.0.0",
305
- "remark-parse": "^10.0.2",
303
+ "remark-cli": "^12.0.1",
304
+ "remark-frontmatter": "^5.0.0",
305
+ "remark-mdx": "^3.1.0",
306
+ "remark-parse": "^11.0.0",
306
307
  "semantic-release": "^21.1.2",
307
308
  "serwist": "^9.0.11",
308
309
  "stylelint": "^15.11.0",
@@ -37,6 +37,13 @@ const run = () => {
37
37
  .replaceAll(` \\*\\*`, ' **')
38
38
  .replaceAll(/\n{2,}/g, '\n\n');
39
39
 
40
+ if (!data?.title) {
41
+ const regex = /^#\s(.+)/;
42
+ const match = regex.exec(formatedContent.trim());
43
+ const title = match ? match[1] : '';
44
+ data.title = title;
45
+ }
46
+
40
47
  writeFileSync(post, matter.stringify(formatedContent, data));
41
48
  } catch (error) {
42
49
  consola.error(post);
@@ -1,6 +1,7 @@
1
1
  'use client';
2
2
 
3
- import { ActionIcon, MobileNavBar } from '@lobehub/ui';
3
+ import { ActionIcon } from '@lobehub/ui';
4
+ import { MobileNavBar } from '@lobehub/ui/mobile';
4
5
  import { useTheme } from 'antd-style';
5
6
  import { Moon, Sun } from 'lucide-react';
6
7
  import { memo } from 'react';
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
 
3
- import { MobileNavBar, MobileNavBarTitle } from '@lobehub/ui';
3
+ import { MobileNavBar, MobileNavBarTitle } from '@lobehub/ui/mobile';
4
4
  import { useRouter } from 'next/navigation';
5
5
  import { memo } from 'react';
6
6
  import { useTranslation } from 'react-i18next';
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
 
3
- import { MobileNavBar, MobileNavBarTitle } from '@lobehub/ui';
3
+ import { MobileNavBar, MobileNavBarTitle } from '@lobehub/ui/mobile';
4
4
  import { useRouter } from 'next/navigation';
5
5
  import { memo } from 'react';
6
6
  import { useTranslation } from 'react-i18next';
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
 
3
- import { MobileNavBar, MobileNavBarTitle } from '@lobehub/ui';
3
+ import { MobileNavBar, MobileNavBarTitle } from '@lobehub/ui/mobile';
4
4
  import { useRouter } from 'next/navigation';
5
5
  import { memo } from 'react';
6
6
  import { useTranslation } from 'react-i18next';
@@ -1,6 +1,7 @@
1
1
  'use client';
2
2
 
3
- import { Icon, MobileTabBar, type MobileTabBarProps } from '@lobehub/ui';
3
+ import { Icon } from '@lobehub/ui';
4
+ import { MobileTabBar, type MobileTabBarProps } from '@lobehub/ui/mobile';
4
5
  import { createStyles } from 'antd-style';
5
6
  import { Compass, MessageSquare, User } from 'lucide-react';
6
7
  import { useRouter } from 'next/navigation';
@@ -1,6 +1,7 @@
1
1
  'use client';
2
2
 
3
- import { ActionIcon, EditableMessage } from '@lobehub/ui';
3
+ import { ActionIcon } from '@lobehub/ui';
4
+ import { EditableMessage } from '@lobehub/ui/chat';
4
5
  import { Skeleton } from 'antd';
5
6
  import { Edit } from 'lucide-react';
6
7
  import { memo, useState } from 'react';
@@ -16,8 +16,8 @@ const useStyles = createStyles(({ css, token, responsive }) => ({
16
16
  box-shadow: 0 3px 4px -2px ${token.colorBgLayout};
17
17
 
18
18
  ${responsive.mobile} {
19
- background: ${token.colorBgElevated};
20
- box-shadow: 0 3px 4px -2px ${token.colorBgElevated};
19
+ background: ${token.colorBgContainer};
20
+ box-shadow: 0 3px 4px -2px ${token.colorBgContainer};
21
21
  }
22
22
  `,
23
23
  }));
@@ -1,6 +1,7 @@
1
1
  'use client';
2
2
 
3
- import { ActionIcon, Avatar, ChatHeaderTitle } from '@lobehub/ui';
3
+ import { ActionIcon, Avatar } from '@lobehub/ui';
4
+ import { ChatHeaderTitle } from '@lobehub/ui/chat';
4
5
  import { Skeleton } from 'antd';
5
6
  import { PanelLeftClose, PanelLeftOpen } from 'lucide-react';
6
7
  import { parseAsBoolean, useQueryState } from 'nuqs';
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
 
3
- import { ChatHeader } from '@lobehub/ui';
3
+ import { ChatHeader } from '@lobehub/ui/chat';
4
4
 
5
5
  import { useGlobalStore } from '@/store/global';
6
6
  import { systemStatusSelectors } from '@/store/global/selectors';
@@ -1,4 +1,5 @@
1
- import { ActionIcon, MobileNavBarTitle } from '@lobehub/ui';
1
+ import { ActionIcon } from '@lobehub/ui';
2
+ import { MobileNavBarTitle } from '@lobehub/ui/mobile';
2
3
  import { useTheme } from 'antd-style';
3
4
  import { ChevronDown } from 'lucide-react';
4
5
  import { memo } from 'react';
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
 
3
- import { MobileNavBar } from '@lobehub/ui';
3
+ import { MobileNavBar } from '@lobehub/ui/mobile';
4
4
  import { memo, useState } from 'react';
5
5
 
6
6
  import { useInitAgentConfig } from '@/app/(main)/chat/(workspace)/_layout/useInitAgentConfig';
@@ -1,6 +1,7 @@
1
1
  'use client';
2
2
 
3
- import { ActionIcon, MobileNavBar } from '@lobehub/ui';
3
+ import { ActionIcon } from '@lobehub/ui';
4
+ import { MobileNavBar } from '@lobehub/ui/mobile';
4
5
  import { MessageSquarePlus } from 'lucide-react';
5
6
  import { useRouter } from 'next/navigation';
6
7
  import { memo } from 'react';
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
 
3
- import { ChatHeader, ChatHeaderTitle } from '@lobehub/ui';
3
+ import { ChatHeader, ChatHeaderTitle } from '@lobehub/ui/chat';
4
4
  import { useRouter } from 'next/navigation';
5
5
  import { memo } from 'react';
6
6
  import { useTranslation } from 'react-i18next';
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
 
3
- import { MobileNavBar, MobileNavBarTitle } from '@lobehub/ui';
3
+ import { MobileNavBar, MobileNavBarTitle } from '@lobehub/ui/mobile';
4
4
  import { memo } from 'react';
5
5
  import { useTranslation } from 'react-i18next';
6
6
 
@@ -1,9 +1,9 @@
1
1
  import { ProviderCombine } from '@lobehub/icons';
2
2
  import { Typography } from 'antd';
3
3
  import { createStyles } from 'antd-style';
4
- import { memo } from 'react';
4
+ import { CSSProperties, memo } from 'react';
5
5
  import { useTranslation } from 'react-i18next';
6
- import { Flexbox, FlexboxProps } from 'react-layout-kit';
6
+ import { Flexbox } from 'react-layout-kit';
7
7
 
8
8
  import { DiscoverProviderItem } from '@/types/discover';
9
9
 
@@ -44,17 +44,19 @@ const useStyles = createStyles(({ css, token, isDarkMode }) => ({
44
44
  }));
45
45
 
46
46
  export interface SuggestionItemProps
47
- extends Omit<DiscoverProviderItem, 'suggestions' | 'socialData'>,
48
- FlexboxProps {}
47
+ extends Omit<DiscoverProviderItem, 'suggestions' | 'socialData'> {
48
+ className?: string;
49
+ style?: CSSProperties;
50
+ }
49
51
 
50
52
  const SuggestionItem = memo<SuggestionItemProps>(
51
- ({ className, meta, identifier, models, ...rest }) => {
53
+ ({ className, meta, identifier, models, style }) => {
52
54
  const { title, description } = meta;
53
55
  const { t } = useTranslation(['discover', 'providers']);
54
56
  const { cx, styles, theme } = useStyles();
55
57
 
56
58
  return (
57
- <Flexbox className={cx(styles.container, className)} gap={12} key={identifier} {...rest}>
59
+ <Flexbox className={cx(styles.container, className)} gap={12} key={identifier} style={style}>
58
60
  <ProviderCombine provider={identifier} size={24} title={title} />
59
61
  <Flexbox gap={8} horizontal style={{ fontSize: 12, marginTop: -8 }}>
60
62
  <div style={{ color: theme.colorTextSecondary }}>@{meta.title}</div>