@lobehub/lobehub 2.0.0-next.2 → 2.0.0-next.21

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 (603) hide show
  1. package/.env.desktop +1 -2
  2. package/.env.example +0 -3
  3. package/.env.example.development +0 -2
  4. package/.github/workflows/claude-auto-testing.yml +73 -0
  5. package/.github/workflows/claude-translate-comments.yml +67 -0
  6. package/.github/workflows/desktop-pr-build.yml +18 -16
  7. package/.github/workflows/docker.yml +25 -20
  8. package/.github/workflows/e2e.yml +17 -3
  9. package/.github/workflows/release-desktop-beta.yml +12 -12
  10. package/.github/workflows/release.yml +3 -5
  11. package/.github/workflows/test.yml +47 -12
  12. package/.nvmrc +1 -1
  13. package/CHANGELOG.md +484 -0
  14. package/Dockerfile +1 -3
  15. package/README.md +2 -45
  16. package/README.zh-CN.md +2 -45
  17. package/apps/desktop/src/main/controllers/AuthCtr.ts +53 -39
  18. package/apps/desktop/src/main/controllers/__tests__/AuthCtr.test.ts +706 -0
  19. package/apps/desktop/src/main/utils/next-electron-rsc.ts +7 -5
  20. package/apps/desktop/tsconfig.json +0 -1
  21. package/changelog/v1.json +159 -0
  22. package/docs/development/database-schema.dbml +11 -1
  23. package/docs/self-hosting/advanced/auth/next-auth/auth0.mdx +2 -2
  24. package/docs/self-hosting/advanced/auth/next-auth/auth0.zh-CN.mdx +2 -2
  25. package/docs/self-hosting/advanced/auth/next-auth/authelia.mdx +2 -2
  26. package/docs/self-hosting/advanced/auth/next-auth/authelia.zh-CN.mdx +2 -2
  27. package/docs/self-hosting/advanced/auth/next-auth/authentik.mdx +2 -2
  28. package/docs/self-hosting/advanced/auth/next-auth/authentik.zh-CN.mdx +2 -2
  29. package/docs/self-hosting/advanced/auth/next-auth/casdoor.mdx +2 -2
  30. package/docs/self-hosting/advanced/auth/next-auth/casdoor.zh-CN.mdx +2 -2
  31. package/docs/self-hosting/advanced/auth/next-auth/cloudflare-zero-trust.mdx +2 -2
  32. package/docs/self-hosting/advanced/auth/next-auth/cloudflare-zero-trust.zh-CN.mdx +2 -2
  33. package/docs/self-hosting/advanced/auth/next-auth/github.mdx +2 -2
  34. package/docs/self-hosting/advanced/auth/next-auth/github.zh-CN.mdx +2 -2
  35. package/docs/self-hosting/advanced/auth/next-auth/google.mdx +32 -29
  36. package/docs/self-hosting/advanced/auth/next-auth/keycloak.mdx +2 -2
  37. package/docs/self-hosting/advanced/auth/next-auth/keycloak.zh-CN.mdx +2 -2
  38. package/docs/self-hosting/advanced/auth/next-auth/logto.mdx +5 -3
  39. package/docs/self-hosting/advanced/auth/next-auth/logto.zh-CN.mdx +5 -3
  40. package/docs/self-hosting/advanced/auth/next-auth/microsoft-entra-id.mdx +2 -2
  41. package/docs/self-hosting/advanced/auth/next-auth/microsoft-entra-id.zh-CN.mdx +2 -2
  42. package/docs/self-hosting/advanced/auth/next-auth/okta.mdx +2 -2
  43. package/docs/self-hosting/advanced/auth/next-auth/okta.zh-CN.mdx +2 -2
  44. package/docs/self-hosting/advanced/auth/next-auth/wechat.mdx +2 -2
  45. package/docs/self-hosting/advanced/auth/next-auth/wechat.zh-CN.mdx +2 -2
  46. package/docs/self-hosting/advanced/auth/next-auth/zitadel.mdx +2 -2
  47. package/docs/self-hosting/advanced/auth/next-auth/zitadel.zh-CN.mdx +2 -2
  48. package/docs/self-hosting/advanced/auth.mdx +32 -21
  49. package/docs/self-hosting/advanced/auth.zh-CN.mdx +30 -19
  50. package/docs/self-hosting/advanced/feature-flags.mdx +0 -1
  51. package/docs/self-hosting/advanced/feature-flags.zh-CN.mdx +0 -1
  52. package/docs/self-hosting/advanced/online-search.mdx +30 -25
  53. package/docs/self-hosting/advanced/online-search.zh-CN.mdx +25 -23
  54. package/e2e/src/features/discover/smoke.feature +34 -1
  55. package/e2e/src/steps/discover/smoke.steps.ts +116 -4
  56. package/e2e/tsconfig.json +0 -1
  57. package/locales/ar/models.json +15 -6
  58. package/locales/ar/oauth.json +1 -0
  59. package/locales/bg-BG/models.json +15 -6
  60. package/locales/bg-BG/oauth.json +1 -0
  61. package/locales/de-DE/models.json +15 -6
  62. package/locales/de-DE/oauth.json +1 -0
  63. package/locales/en-US/models.json +15 -6
  64. package/locales/en-US/oauth.json +1 -0
  65. package/locales/es-ES/models.json +15 -6
  66. package/locales/es-ES/oauth.json +1 -0
  67. package/locales/fa-IR/models.json +15 -6
  68. package/locales/fa-IR/oauth.json +1 -0
  69. package/locales/fr-FR/models.json +15 -6
  70. package/locales/fr-FR/oauth.json +1 -0
  71. package/locales/it-IT/models.json +15 -6
  72. package/locales/it-IT/oauth.json +1 -0
  73. package/locales/ja-JP/models.json +15 -6
  74. package/locales/ja-JP/oauth.json +1 -0
  75. package/locales/ko-KR/models.json +21 -12
  76. package/locales/ko-KR/oauth.json +1 -0
  77. package/locales/nl-NL/models.json +15 -6
  78. package/locales/nl-NL/oauth.json +1 -0
  79. package/locales/pl-PL/models.json +15 -6
  80. package/locales/pl-PL/oauth.json +1 -0
  81. package/locales/pt-BR/models.json +15 -6
  82. package/locales/pt-BR/oauth.json +1 -0
  83. package/locales/ru-RU/models.json +15 -6
  84. package/locales/ru-RU/oauth.json +1 -0
  85. package/locales/tr-TR/models.json +15 -6
  86. package/locales/tr-TR/oauth.json +1 -0
  87. package/locales/vi-VN/models.json +15 -6
  88. package/locales/vi-VN/oauth.json +1 -0
  89. package/locales/zh-CN/models.json +15 -6
  90. package/locales/zh-CN/oauth.json +1 -0
  91. package/locales/zh-TW/models.json +15 -6
  92. package/locales/zh-TW/oauth.json +1 -0
  93. package/next.config.ts +2 -3
  94. package/package.json +74 -80
  95. package/packages/const/src/index.ts +0 -1
  96. package/packages/const/src/models.ts +13 -0
  97. package/packages/const/src/url.ts +1 -4
  98. package/packages/const/src/version.ts +3 -3
  99. package/packages/context-engine/src/index.ts +1 -6
  100. package/packages/context-engine/src/processors/GroupMessageFlatten.ts +12 -2
  101. package/packages/context-engine/src/processors/__tests__/GroupMessageFlatten.test.ts +73 -9
  102. package/packages/context-engine/src/providers/index.ts +0 -2
  103. package/packages/database/migrations/0041_improve_index.sql +10 -0
  104. package/packages/database/migrations/meta/0041_snapshot.json +7784 -0
  105. package/packages/database/migrations/meta/_journal.json +7 -0
  106. package/packages/database/package.json +1 -1
  107. package/packages/database/src/core/migrations.json +17 -0
  108. package/packages/database/src/core/web-server.ts +2 -1
  109. package/packages/database/src/models/__tests__/message.grouping.test.ts +812 -0
  110. package/packages/database/src/models/__tests__/message.test.ts +322 -170
  111. package/packages/database/src/models/message.ts +62 -24
  112. package/packages/database/src/models/session.ts +60 -19
  113. package/packages/database/src/repositories/dataImporter/deprecated/__tests__/index.test.ts +2 -1
  114. package/packages/database/src/repositories/dataImporter/deprecated/index.ts +7 -1
  115. package/packages/database/src/schemas/agent.ts +10 -11
  116. package/packages/database/src/schemas/message.ts +5 -1
  117. package/packages/database/src/schemas/relations.ts +6 -4
  118. package/packages/database/src/schemas/session.ts +2 -0
  119. package/packages/database/src/schemas/topic.ts +6 -1
  120. package/packages/database/src/utils/__tests__/groupMessages.test.ts +145 -2
  121. package/packages/database/src/utils/groupMessages.ts +7 -5
  122. package/packages/electron-client-ipc/package.json +4 -1
  123. package/packages/file-loaders/package.json +1 -0
  124. package/packages/memory-extract/package.json +1 -1
  125. package/packages/model-bank/src/aiModels/anthropic.ts +0 -63
  126. package/packages/model-bank/src/aiModels/azure.ts +155 -0
  127. package/packages/model-bank/src/aiModels/bedrock.ts +44 -0
  128. package/packages/model-bank/src/aiModels/higress.ts +0 -55
  129. package/packages/model-bank/src/aiModels/infiniai.ts +21 -0
  130. package/packages/model-bank/src/aiModels/ollamacloud.ts +13 -0
  131. package/packages/model-bank/src/aiModels/siliconcloud.ts +19 -0
  132. package/packages/model-runtime/src/core/parameterResolver.ts +3 -0
  133. package/packages/model-runtime/src/core/streams/openai/__snapshots__/responsesStream.test.ts.snap +0 -38
  134. package/packages/model-runtime/src/providers/azureOpenai/index.ts +2 -1
  135. package/packages/model-runtime/src/providers/minimax/index.ts +5 -5
  136. package/packages/model-runtime/src/providers/search1api/index.test.ts +2 -2
  137. package/packages/model-runtime/src/utils/googleErrorParser.test.ts +125 -0
  138. package/packages/model-runtime/src/utils/googleErrorParser.ts +103 -77
  139. package/packages/types/src/message/common/base.ts +13 -0
  140. package/packages/types/src/message/common/image.ts +8 -0
  141. package/packages/types/src/message/common/metadata.ts +39 -0
  142. package/packages/types/src/message/common/tools.ts +10 -0
  143. package/packages/types/src/message/db/params.ts +47 -1
  144. package/packages/types/src/message/ui/chat.ts +4 -1
  145. package/packages/types/src/message/ui/params.ts +98 -4
  146. package/packages/types/src/search.ts +16 -0
  147. package/packages/types/src/serverConfig.ts +2 -6
  148. package/packages/types/src/user/index.ts +13 -1
  149. package/packages/types/src/user/settings/index.ts +22 -0
  150. package/packages/utils/src/apiKey.test.ts +139 -0
  151. package/packages/utils/src/client/clipboard.ts +2 -2
  152. package/packages/utils/src/client/exportFile.ts +10 -10
  153. package/packages/utils/src/client/parserPlaceholder.ts +18 -18
  154. package/packages/utils/src/client/topic.ts +10 -10
  155. package/packages/utils/src/client/xor-obfuscation.ts +11 -11
  156. package/packages/web-crawler/src/crawImpl/firecrawl.ts +39 -12
  157. package/packages/web-crawler/tsconfig.json +0 -1
  158. package/renovate.json +20 -3
  159. package/scripts/migrateServerDB/errorHint.js +1 -7
  160. package/scripts/migrateServerDB/index.ts +2 -1
  161. package/src/app/(backend)/webapi/revalidate/route.ts +1 -1
  162. package/src/app/[variants]/(auth)/signup/[[...signup]]/page.tsx +1 -8
  163. package/src/app/[variants]/(main)/(mobile)/me/(home)/__tests__/useCategory.test.tsx +9 -0
  164. package/src/app/[variants]/(main)/(mobile)/me/(home)/features/UserBanner.tsx +3 -6
  165. package/src/app/[variants]/(main)/(mobile)/me/(home)/layout.tsx +0 -2
  166. package/src/app/[variants]/(main)/_layout/Desktop/SideBar/TopActions.tsx +1 -4
  167. package/src/app/[variants]/(main)/chat/(workspace)/@conversation/features/ChatInput/V1Mobile/index.tsx +2 -2
  168. package/src/app/[variants]/(main)/chat/(workspace)/@conversation/features/ChatInput/V1Mobile/useSend.ts +6 -4
  169. package/src/app/[variants]/(main)/chat/(workspace)/@conversation/features/ChatInput/useSend.ts +15 -10
  170. package/src/app/[variants]/(main)/chat/@session/features/SessionListContent/List/Item/Actions.tsx +3 -28
  171. package/src/app/[variants]/(main)/chat/@session/features/SessionListContent/List/Item/index.tsx +4 -2
  172. package/src/app/[variants]/(main)/chat/_layout/Desktop/index.tsx +0 -2
  173. package/src/app/[variants]/(main)/chat/_layout/Mobile.tsx +1 -5
  174. package/src/app/[variants]/(main)/chat/settings/features/HeaderContent.tsx +2 -62
  175. package/src/app/[variants]/(main)/discover/(list)/features/Pagination.tsx +1 -0
  176. package/src/app/[variants]/(main)/discover/(list)/features/SortButton/index.tsx +1 -1
  177. package/src/app/[variants]/(main)/discover/(list)/mcp/features/List/Item.tsx +1 -0
  178. package/src/app/[variants]/(main)/discover/(list)/model/features/List/Item.tsx +1 -0
  179. package/src/app/[variants]/(main)/discover/(list)/provider/features/List/Item.tsx +1 -0
  180. package/src/app/[variants]/(main)/discover/components/CategoryMenu.tsx +9 -1
  181. package/src/app/[variants]/(main)/image/@topic/features/Topics/TopicList.tsx +1 -0
  182. package/src/app/[variants]/(main)/image/features/PromptInput/index.tsx +1 -1
  183. package/src/app/[variants]/(main)/image/page.tsx +0 -2
  184. package/src/app/[variants]/(main)/labs/components/LabCard.tsx +3 -1
  185. package/src/app/[variants]/(main)/profile/_layout/Desktop/index.tsx +23 -24
  186. package/src/app/[variants]/(main)/profile/_layout/Mobile/index.tsx +5 -9
  187. package/src/app/[variants]/(main)/settings/_layout/Desktop/index.tsx +0 -2
  188. package/src/app/[variants]/(main)/settings/_layout/Mobile/index.tsx +0 -2
  189. package/src/app/[variants]/(main)/settings/_layout/SettingsContent.tsx +0 -3
  190. package/src/app/[variants]/(main)/settings/provider/(list)/ProviderGrid/Card.tsx +1 -1
  191. package/src/app/[variants]/(main)/settings/provider/detail/azure/index.tsx +5 -7
  192. package/src/app/[variants]/layout.tsx +1 -0
  193. package/src/app/[variants]/loading/index.tsx +1 -10
  194. package/src/app/[variants]/oauth/ResultLayout.tsx +47 -0
  195. package/src/app/[variants]/oauth/callback/error/page.tsx +20 -33
  196. package/src/app/[variants]/oauth/callback/layout.tsx +1 -0
  197. package/src/app/[variants]/oauth/callback/success/page.tsx +8 -22
  198. package/src/app/[variants]/oauth/consent/[uid]/Consent/BuiltinConsent.tsx +47 -0
  199. package/src/app/[variants]/oauth/consent/[uid]/{Consent.tsx → Consent/index.tsx} +12 -1
  200. package/src/app/[variants]/oauth/consent/[uid]/Login.tsx +19 -2
  201. package/src/app/sitemap.tsx +7 -1
  202. package/src/components/InvalidAPIKey/APIKeyForm/Bedrock.tsx +8 -13
  203. package/src/components/Link.tsx +12 -0
  204. package/src/components/Thinking/index.tsx +4 -3
  205. package/src/config/db.ts +0 -5
  206. package/src/config/featureFlags/schema.test.ts +0 -2
  207. package/src/config/featureFlags/schema.ts +0 -6
  208. package/src/config/modelProviders/ai21.ts +1 -16
  209. package/src/config/modelProviders/ai302.ts +1 -128
  210. package/src/config/modelProviders/ai360.ts +1 -32
  211. package/src/config/modelProviders/anthropic.ts +1 -94
  212. package/src/config/modelProviders/azure.ts +1 -51
  213. package/src/config/modelProviders/baichuan.ts +1 -57
  214. package/src/config/modelProviders/bedrock.ts +1 -276
  215. package/src/config/modelProviders/cloudflare.ts +1 -64
  216. package/src/config/modelProviders/deepseek.ts +1 -19
  217. package/src/config/modelProviders/fireworksai.ts +1 -174
  218. package/src/config/modelProviders/giteeai.ts +1 -135
  219. package/src/config/modelProviders/github.ts +1 -254
  220. package/src/config/modelProviders/google.ts +1 -130
  221. package/src/config/modelProviders/groq.ts +1 -119
  222. package/src/config/modelProviders/higress.ts +1 -1736
  223. package/src/config/modelProviders/huggingface.ts +1 -54
  224. package/src/config/modelProviders/hunyuan.ts +1 -83
  225. package/src/config/modelProviders/infiniai.ts +1 -74
  226. package/src/config/modelProviders/internlm.ts +1 -20
  227. package/src/config/modelProviders/minimax.ts +1 -1
  228. package/src/config/modelProviders/mistral.ts +1 -95
  229. package/src/config/modelProviders/modelscope.ts +1 -27
  230. package/src/config/modelProviders/moonshot.ts +1 -29
  231. package/src/config/modelProviders/novita.ts +1 -105
  232. package/src/config/modelProviders/ollama.ts +1 -325
  233. package/src/config/modelProviders/openai.ts +1 -242
  234. package/src/config/modelProviders/openrouter.ts +1 -240
  235. package/src/config/modelProviders/perplexity.ts +1 -45
  236. package/src/config/modelProviders/ppio.ts +1 -152
  237. package/src/config/modelProviders/qiniu.ts +2 -19
  238. package/src/config/modelProviders/qwen.ts +1 -245
  239. package/src/config/modelProviders/search1api.ts +1 -34
  240. package/src/config/modelProviders/sensenova.ts +1 -69
  241. package/src/config/modelProviders/siliconcloud.ts +1 -417
  242. package/src/config/modelProviders/spark.ts +1 -59
  243. package/src/config/modelProviders/stepfun.ts +1 -98
  244. package/src/config/modelProviders/taichu.ts +1 -18
  245. package/src/config/modelProviders/togetherai.ts +1 -274
  246. package/src/config/modelProviders/upstage.ts +1 -28
  247. package/src/config/modelProviders/wenxin.ts +1 -140
  248. package/src/config/modelProviders/xai.ts +1 -38
  249. package/src/config/modelProviders/zeroone.ts +1 -81
  250. package/src/config/modelProviders/zhipu.ts +1 -108
  251. package/src/envs/app.ts +5 -8
  252. package/src/envs/auth.ts +0 -179
  253. package/src/features/AgentSetting/AgentPlugin/index.tsx +2 -2
  254. package/src/features/ChatInput/ActionBar/STT/browser.tsx +2 -2
  255. package/src/features/ChatInput/ActionBar/STT/openai.tsx +2 -2
  256. package/src/features/ChatInput/ActionBar/Tools/useControls.tsx +1 -3
  257. package/src/features/Conversation/Error/ErrorJsonViewer.tsx +4 -3
  258. package/src/features/Conversation/Error/OllamaBizError/index.tsx +7 -2
  259. package/src/features/Conversation/Error/index.tsx +15 -5
  260. package/src/features/Conversation/MarkdownElements/LobeArtifact/Render/index.tsx +2 -2
  261. package/src/features/Conversation/Messages/Assistant/Extra/index.tsx +2 -2
  262. package/src/features/Conversation/Messages/Assistant/MessageContent.tsx +5 -3
  263. package/src/features/Conversation/Messages/Assistant/Tool/Inspector/BuiltinPluginTitle.tsx +2 -2
  264. package/src/features/Conversation/Messages/Assistant/Tool/Inspector/ToolTitle.tsx +4 -2
  265. package/src/features/Conversation/Messages/Assistant/Tool/Render/CustomRender.tsx +2 -2
  266. package/src/features/Conversation/Messages/Assistant/Tool/Render/index.tsx +2 -2
  267. package/src/features/Conversation/Messages/Assistant/Tool/index.tsx +2 -2
  268. package/src/features/Conversation/Messages/Assistant/index.tsx +4 -4
  269. package/src/features/Conversation/Messages/Default.tsx +2 -2
  270. package/src/features/Conversation/Messages/User/Extra.tsx +2 -2
  271. package/src/features/Conversation/Messages/User/index.tsx +4 -4
  272. package/src/features/Conversation/Messages/index.tsx +3 -3
  273. package/src/features/Conversation/components/AutoScroll.tsx +2 -2
  274. package/src/features/Conversation/components/Extras/Usage/UsageDetail/index.tsx +9 -6
  275. package/src/features/DataImporter/index.tsx +15 -60
  276. package/src/features/DevPanel/PostgresViewer/usePgTable.ts +3 -2
  277. package/src/features/PluginTag/index.tsx +1 -3
  278. package/src/features/PluginsUI/Render/BuiltinType/index.test.tsx +37 -28
  279. package/src/features/Portal/Artifacts/Body/index.tsx +2 -2
  280. package/src/helpers/isCanUseFC.ts +0 -8
  281. package/src/hooks/useEnabledChatModels.ts +0 -8
  282. package/src/hooks/useInterceptingRoutes.test.ts +21 -3
  283. package/src/hooks/useModelContextWindowTokens.ts +0 -8
  284. package/src/hooks/useModelHasContextWindowToken.ts +1 -10
  285. package/src/hooks/useModelSupportFiles.ts +1 -11
  286. package/src/hooks/useModelSupportReasoning.ts +1 -11
  287. package/src/hooks/useModelSupportToolUse.ts +1 -11
  288. package/src/hooks/useModelSupportVision.ts +1 -11
  289. package/src/layout/AuthProvider/Clerk/index.tsx +2 -16
  290. package/src/libs/next-auth/auth.config.ts +3 -6
  291. package/src/libs/next-auth/sso-providers/auth0.ts +0 -7
  292. package/src/libs/next-auth/sso-providers/authelia.ts +3 -5
  293. package/src/libs/next-auth/sso-providers/authentik.ts +0 -7
  294. package/src/libs/next-auth/sso-providers/cloudflare-zero-trust.ts +3 -6
  295. package/src/libs/next-auth/sso-providers/cognito.ts +1 -5
  296. package/src/libs/next-auth/sso-providers/generic-oidc.ts +3 -5
  297. package/src/libs/next-auth/sso-providers/github.ts +0 -6
  298. package/src/libs/next-auth/sso-providers/google.ts +0 -2
  299. package/src/libs/next-auth/sso-providers/index.ts +0 -2
  300. package/src/libs/next-auth/sso-providers/keycloak.ts +0 -3
  301. package/src/libs/next-auth/sso-providers/logto.ts +3 -5
  302. package/src/libs/next-auth/sso-providers/okta.ts +0 -4
  303. package/src/libs/next-auth/sso-providers/zitadel.ts +0 -7
  304. package/src/libs/oidc-provider/provider.ts +1 -1
  305. package/src/libs/trpc/client/index.ts +0 -1
  306. package/src/libs/trpc/client/lambda.ts +8 -5
  307. package/src/libs/trpc/lambda/context.ts +4 -1
  308. package/src/locales/default/oauth.ts +1 -0
  309. package/src/server/globalConfig/index.ts +0 -23
  310. package/src/server/modules/AssistantStore/index.ts +1 -1
  311. package/src/server/modules/ModelRuntime/trace.ts +11 -4
  312. package/src/server/routers/desktop/mcp.ts +1 -3
  313. package/src/server/routers/lambda/__tests__/integration/message.integration.test.ts +0 -41
  314. package/src/server/routers/lambda/config/__snapshots__/index.test.ts.snap +175 -12
  315. package/src/server/routers/lambda/config/index.test.ts +38 -30
  316. package/src/server/routers/lambda/message.ts +17 -13
  317. package/src/server/routers/lambda/session.ts +8 -5
  318. package/src/server/routers/lambda/user.ts +24 -25
  319. package/src/server/routers/tools/mcp.ts +2 -3
  320. package/src/server/routers/tools/search.test.ts +1 -7
  321. package/src/server/routers/tools/search.ts +1 -4
  322. package/src/server/services/search/impls/firecrawl/index.ts +51 -11
  323. package/src/server/services/search/impls/firecrawl/type.ts +60 -9
  324. package/src/services/__tests__/tool.test.ts +0 -3
  325. package/src/services/aiModel/index.test.ts +0 -3
  326. package/src/services/aiModel/index.ts +1 -7
  327. package/src/services/aiProvider/index.test.ts +0 -3
  328. package/src/services/aiProvider/index.ts +1 -7
  329. package/src/services/chat/chat.test.ts +13 -40
  330. package/src/services/chat/contextEngineering.test.ts +0 -30
  331. package/src/services/chat/contextEngineering.ts +1 -12
  332. package/src/services/chat/helper.ts +7 -31
  333. package/src/services/chat/index.ts +5 -10
  334. package/src/services/chat/types.ts +1 -1
  335. package/src/services/chatGroup/index.ts +1 -10
  336. package/src/services/config.ts +1 -65
  337. package/src/services/export/index.ts +1 -4
  338. package/src/services/file/index.ts +1 -11
  339. package/src/services/import/index.ts +1 -7
  340. package/src/services/mcp.test.ts +777 -0
  341. package/src/services/message/index.ts +1 -11
  342. package/src/services/message/server.ts +7 -6
  343. package/src/services/message/type.ts +6 -3
  344. package/src/services/models.ts +2 -11
  345. package/src/services/plugin/index.ts +1 -11
  346. package/src/services/session/index.ts +1 -11
  347. package/src/services/tableViewer/client.ts +12 -15
  348. package/src/services/thread/index.ts +1 -7
  349. package/src/services/topic/index.ts +1 -11
  350. package/src/services/user/index.ts +1 -13
  351. package/src/store/chat/helpers.test.ts +99 -0
  352. package/src/store/chat/helpers.ts +21 -2
  353. package/src/store/chat/selectors.ts +1 -1
  354. package/src/store/chat/slices/aiChat/actions/__tests__/generateAIChat.test.ts +0 -241
  355. package/src/store/chat/slices/aiChat/actions/__tests__/generateAIChatV2.test.ts +26 -1
  356. package/src/store/chat/slices/aiChat/actions/__tests__/helpers.ts +3 -1
  357. package/src/store/chat/slices/aiChat/actions/generateAIChat.ts +45 -155
  358. package/src/store/chat/slices/builtinTool/actions/index.ts +1 -4
  359. package/src/store/chat/slices/message/action.test.ts +5 -1
  360. package/src/store/chat/slices/message/action.ts +102 -14
  361. package/src/store/chat/slices/message/reducer.test.ts +363 -5
  362. package/src/store/chat/slices/message/reducer.ts +87 -3
  363. package/src/store/chat/slices/message/{selectors.test.ts → selectors/chat.test.ts} +266 -30
  364. package/src/store/chat/slices/message/{selectors.ts → selectors/chat.ts} +29 -79
  365. package/src/store/chat/slices/message/selectors/index.ts +2 -0
  366. package/src/store/chat/slices/message/selectors/messageState.test.ts +36 -0
  367. package/src/store/chat/slices/message/selectors/messageState.ts +80 -0
  368. package/src/store/chat/slices/plugin/action.test.ts +34 -132
  369. package/src/store/chat/slices/plugin/action.ts +1 -44
  370. package/src/store/global/store.ts +1 -7
  371. package/src/store/tool/selectors/tool.test.ts +1 -1
  372. package/src/store/tool/selectors/tool.ts +6 -8
  373. package/src/store/tool/slices/builtin/action.test.ts +83 -35
  374. package/src/store/tool/slices/builtin/action.ts +0 -9
  375. package/src/store/tool/slices/builtin/selectors.test.ts +4 -30
  376. package/src/store/tool/slices/builtin/selectors.ts +15 -21
  377. package/src/store/user/initialState.ts +1 -7
  378. package/src/store/user/selectors.ts +1 -5
  379. package/src/store/user/slices/common/action.test.ts +1 -4
  380. package/src/store/user/slices/common/action.ts +5 -4
  381. package/src/store/user/slices/settings/selectors/index.ts +1 -0
  382. package/src/store/user/slices/settings/selectors/keyVaults.ts +21 -0
  383. package/src/store/user/store.ts +0 -3
  384. package/src/tools/index.ts +0 -6
  385. package/src/tools/renders.ts +0 -3
  386. package/src/tools/web-browsing/Portal/Search/Footer.tsx +2 -2
  387. package/src/tools/web-browsing/Render/Search/ConfigForm/Form.tsx +1 -1
  388. package/tsconfig.json +9 -3
  389. package/packages/const/src/guide.ts +0 -89
  390. package/packages/context-engine/src/providers/InboxGuide.ts +0 -102
  391. package/packages/context-engine/src/providers/__tests__/InboxGuideProvider.test.ts +0 -121
  392. package/packages/utils/src/_deprecated/__snapshots__/parseModels.test.ts.snap +0 -104
  393. package/packages/utils/src/_deprecated/parseModels.test.ts +0 -287
  394. package/packages/utils/src/_deprecated/parseModels.ts +0 -165
  395. package/src/app/(backend)/trpc/edge/[trpc]/route.ts +0 -26
  396. package/src/app/[variants]/(main)/(mobile)/me/data/features/Category.tsx +0 -48
  397. package/src/app/[variants]/(main)/(mobile)/me/data/features/Header.tsx +0 -33
  398. package/src/app/[variants]/(main)/(mobile)/me/data/layout.tsx +0 -13
  399. package/src/app/[variants]/(main)/(mobile)/me/data/loading.tsx +0 -5
  400. package/src/app/[variants]/(main)/(mobile)/me/data/page.tsx +0 -29
  401. package/src/app/[variants]/(main)/chat/features/Migration/DBReader.ts +0 -290
  402. package/src/app/[variants]/(main)/chat/features/Migration/ExportConfigButton.tsx +0 -35
  403. package/src/app/[variants]/(main)/chat/features/Migration/Failed.tsx +0 -120
  404. package/src/app/[variants]/(main)/chat/features/Migration/Modal.tsx +0 -81
  405. package/src/app/[variants]/(main)/chat/features/Migration/Start.tsx +0 -108
  406. package/src/app/[variants]/(main)/chat/features/Migration/UpgradeButton.tsx +0 -71
  407. package/src/app/[variants]/(main)/chat/features/Migration/const.ts +0 -15
  408. package/src/app/[variants]/(main)/chat/features/Migration/index.tsx +0 -50
  409. package/src/app/[variants]/(main)/settings/llm/ProviderList/Azure/index.tsx +0 -93
  410. package/src/app/[variants]/(main)/settings/llm/ProviderList/Bedrock/index.tsx +0 -70
  411. package/src/app/[variants]/(main)/settings/llm/ProviderList/Cloudflare/index.tsx +0 -39
  412. package/src/app/[variants]/(main)/settings/llm/ProviderList/Github/index.tsx +0 -52
  413. package/src/app/[variants]/(main)/settings/llm/ProviderList/HuggingFace/index.tsx +0 -52
  414. package/src/app/[variants]/(main)/settings/llm/ProviderList/Ollama/index.tsx +0 -20
  415. package/src/app/[variants]/(main)/settings/llm/ProviderList/OpenAI/index.tsx +0 -17
  416. package/src/app/[variants]/(main)/settings/llm/ProviderList/providers.tsx +0 -132
  417. package/src/app/[variants]/(main)/settings/llm/components/Checker.tsx +0 -118
  418. package/src/app/[variants]/(main)/settings/llm/components/ProviderConfig/index.tsx +0 -303
  419. package/src/app/[variants]/(main)/settings/llm/components/ProviderModelList/CustomModelOption.tsx +0 -98
  420. package/src/app/[variants]/(main)/settings/llm/components/ProviderModelList/ModelConfigModal/Form.tsx +0 -104
  421. package/src/app/[variants]/(main)/settings/llm/components/ProviderModelList/ModelConfigModal/index.tsx +0 -77
  422. package/src/app/[variants]/(main)/settings/llm/components/ProviderModelList/ModelFetcher.tsx +0 -105
  423. package/src/app/[variants]/(main)/settings/llm/components/ProviderModelList/Option.tsx +0 -68
  424. package/src/app/[variants]/(main)/settings/llm/components/ProviderModelList/index.tsx +0 -146
  425. package/src/app/[variants]/(main)/settings/llm/const.ts +0 -20
  426. package/src/app/[variants]/(main)/settings/llm/features/Footer.tsx +0 -35
  427. package/src/app/[variants]/(main)/settings/llm/index.tsx +0 -30
  428. package/src/app/[variants]/(main)/settings/llm/type.ts +0 -5
  429. package/src/app/[variants]/loading/Client/Content.tsx +0 -48
  430. package/src/app/[variants]/loading/Client/Error.tsx +0 -27
  431. package/src/app/[variants]/loading/Client/Redirect.tsx +0 -47
  432. package/src/app/[variants]/loading/Client/index.tsx +0 -22
  433. package/src/components/InnerLink.tsx +0 -20
  434. package/src/database/_deprecated/core/__tests__/db-upgrade.test.ts +0 -42
  435. package/src/database/_deprecated/core/__tests__/db.test.ts +0 -79
  436. package/src/database/_deprecated/core/__tests__/model.test.ts +0 -55
  437. package/src/database/_deprecated/core/db.ts +0 -246
  438. package/src/database/_deprecated/core/index.ts +0 -2
  439. package/src/database/_deprecated/core/migrations/migrateSettingsToUser/fixtures/input.json +0 -55
  440. package/src/database/_deprecated/core/migrations/migrateSettingsToUser/fixtures/output.json +0 -60
  441. package/src/database/_deprecated/core/migrations/migrateSettingsToUser/index.test.ts +0 -14
  442. package/src/database/_deprecated/core/migrations/migrateSettingsToUser/index.ts +0 -22
  443. package/src/database/_deprecated/core/migrations/migrateSettingsToUser/type.ts +0 -105
  444. package/src/database/_deprecated/core/model.ts +0 -218
  445. package/src/database/_deprecated/core/schemas.ts +0 -88
  446. package/src/database/_deprecated/core/types/db.ts +0 -15
  447. package/src/database/_deprecated/models/__DEBUG.ts +0 -124
  448. package/src/database/_deprecated/models/__tests__/file.test.ts +0 -83
  449. package/src/database/_deprecated/models/__tests__/message.test.ts +0 -426
  450. package/src/database/_deprecated/models/__tests__/plugin.test.ts +0 -81
  451. package/src/database/_deprecated/models/__tests__/session.test.ts +0 -253
  452. package/src/database/_deprecated/models/__tests__/sessionGroup.test.ts +0 -220
  453. package/src/database/_deprecated/models/__tests__/topic.test.ts +0 -523
  454. package/src/database/_deprecated/models/__tests__/user.test.ts +0 -82
  455. package/src/database/_deprecated/models/file.ts +0 -51
  456. package/src/database/_deprecated/models/message.ts +0 -277
  457. package/src/database/_deprecated/models/plugin.ts +0 -62
  458. package/src/database/_deprecated/models/session.ts +0 -271
  459. package/src/database/_deprecated/models/sessionGroup.ts +0 -93
  460. package/src/database/_deprecated/models/topic.ts +0 -250
  461. package/src/database/_deprecated/models/user.ts +0 -69
  462. package/src/database/_deprecated/schemas/files.ts +0 -39
  463. package/src/database/_deprecated/schemas/message.ts +0 -50
  464. package/src/database/_deprecated/schemas/plugin.ts +0 -12
  465. package/src/database/_deprecated/schemas/session.ts +0 -54
  466. package/src/database/_deprecated/schemas/sessionGroup.ts +0 -8
  467. package/src/database/_deprecated/schemas/topic.ts +0 -12
  468. package/src/database/_deprecated/schemas/user.ts +0 -40
  469. package/src/envs/__tests__/auth.test.ts +0 -200
  470. package/src/features/DataImporter/_deprecated.ts +0 -43
  471. package/src/features/InitClientDB/EnableModal.tsx +0 -118
  472. package/src/features/InitClientDB/ErrorResult.tsx +0 -143
  473. package/src/features/InitClientDB/InitIndicator.tsx +0 -124
  474. package/src/features/InitClientDB/PGliteIcon.tsx +0 -28
  475. package/src/features/InitClientDB/features/DatabaseRepair/Backup.tsx +0 -75
  476. package/src/features/InitClientDB/features/DatabaseRepair/Diagnosis.tsx +0 -98
  477. package/src/features/InitClientDB/features/DatabaseRepair/Repair.tsx +0 -218
  478. package/src/features/InitClientDB/features/DatabaseRepair/index.tsx +0 -91
  479. package/src/features/InitClientDB/index.tsx +0 -37
  480. package/src/hooks/_header.ts +0 -23
  481. package/src/libs/next-auth/sso-providers/azure-ad.ts +0 -33
  482. package/src/libs/trpc/client/edge.ts +0 -26
  483. package/src/libs/trpc/edge/context.ts +0 -71
  484. package/src/libs/trpc/edge/index.ts +0 -45
  485. package/src/libs/trpc/edge/init.ts +0 -26
  486. package/src/libs/trpc/edge/middleware/jwtPayload.test.ts +0 -75
  487. package/src/libs/trpc/edge/middleware/jwtPayload.ts +0 -14
  488. package/src/migrations/FromV0ToV1.ts +0 -10
  489. package/src/migrations/FromV1ToV2/fixtures/input-v1-session.json +0 -191
  490. package/src/migrations/FromV1ToV2/fixtures/output-v2.json +0 -202
  491. package/src/migrations/FromV1ToV2/index.ts +0 -82
  492. package/src/migrations/FromV1ToV2/migrations.test.ts +0 -224
  493. package/src/migrations/FromV1ToV2/types/v1.ts +0 -78
  494. package/src/migrations/FromV1ToV2/types/v2.ts +0 -52
  495. package/src/migrations/FromV2ToV3/fixtures/input-v2-session.json +0 -72
  496. package/src/migrations/FromV2ToV3/fixtures/output-v3-from-v1.json +0 -203
  497. package/src/migrations/FromV2ToV3/fixtures/output-v3.json +0 -74
  498. package/src/migrations/FromV2ToV3/index.ts +0 -30
  499. package/src/migrations/FromV2ToV3/migrations.test.ts +0 -42
  500. package/src/migrations/FromV2ToV3/types/v3.ts +0 -27
  501. package/src/migrations/FromV3ToV4/fixtures/azure-input-v3.json +0 -79
  502. package/src/migrations/FromV3ToV4/fixtures/azure-output-v4.json +0 -75
  503. package/src/migrations/FromV3ToV4/fixtures/ollama-input-v3.json +0 -85
  504. package/src/migrations/FromV3ToV4/fixtures/ollama-output-v4.json +0 -86
  505. package/src/migrations/FromV3ToV4/fixtures/openai-input-v3.json +0 -77
  506. package/src/migrations/FromV3ToV4/fixtures/openai-output-v4.json +0 -77
  507. package/src/migrations/FromV3ToV4/fixtures/openrouter-input-v3.json +0 -82
  508. package/src/migrations/FromV3ToV4/fixtures/openrouter-output-v4.json +0 -85
  509. package/src/migrations/FromV3ToV4/fixtures/output-v4-from-v1.json +0 -203
  510. package/src/migrations/FromV3ToV4/index.ts +0 -102
  511. package/src/migrations/FromV3ToV4/migrations.test.ts +0 -195
  512. package/src/migrations/FromV3ToV4/types/v3.ts +0 -52
  513. package/src/migrations/FromV3ToV4/types/v4.ts +0 -37
  514. package/src/migrations/FromV4ToV5/fixtures/from-v1-to-v5-output.json +0 -245
  515. package/src/migrations/FromV4ToV5/fixtures/function-input-v4.json +0 -96
  516. package/src/migrations/FromV4ToV5/fixtures/function-output-v5.json +0 -120
  517. package/src/migrations/FromV4ToV5/index.ts +0 -58
  518. package/src/migrations/FromV4ToV5/migrations.test.ts +0 -49
  519. package/src/migrations/FromV4ToV5/types/v4.ts +0 -21
  520. package/src/migrations/FromV4ToV5/types/v5.ts +0 -27
  521. package/src/migrations/FromV5ToV6/fixtures/from-v1-to-v6-output.json +0 -247
  522. package/src/migrations/FromV5ToV6/fixtures/session-input-v5.json +0 -81
  523. package/src/migrations/FromV5ToV6/fixtures/session-output-v6.json +0 -85
  524. package/src/migrations/FromV5ToV6/index.ts +0 -61
  525. package/src/migrations/FromV5ToV6/migrations.test.ts +0 -50
  526. package/src/migrations/FromV5ToV6/types/v5.ts +0 -48
  527. package/src/migrations/FromV5ToV6/types/v6.ts +0 -63
  528. package/src/migrations/FromV6ToV7/fixtures/output-v7-from-v1.json +0 -203
  529. package/src/migrations/FromV6ToV7/fixtures/provider-input-v6.json +0 -103
  530. package/src/migrations/FromV6ToV7/fixtures/provider-output-v7.json +0 -118
  531. package/src/migrations/FromV6ToV7/index.ts +0 -101
  532. package/src/migrations/FromV6ToV7/migrations.test.ts +0 -64
  533. package/src/migrations/FromV6ToV7/types/v6.ts +0 -61
  534. package/src/migrations/FromV6ToV7/types/v7.ts +0 -69
  535. package/src/migrations/VersionController.test.ts +0 -88
  536. package/src/migrations/VersionController.ts +0 -67
  537. package/src/migrations/index.ts +0 -61
  538. package/src/server/globalConfig/_deprecated.test.ts +0 -92
  539. package/src/server/globalConfig/_deprecated.ts +0 -41
  540. package/src/server/routers/edge/appStatus.ts +0 -3
  541. package/src/server/routers/edge/index.ts +0 -14
  542. package/src/server/routers/edge/upload.ts +0 -16
  543. package/src/services/aiModel/client.ts +0 -70
  544. package/src/services/aiProvider/client.ts +0 -58
  545. package/src/services/baseClientService/index.ts +0 -9
  546. package/src/services/chat/__snapshots__/chat.test.ts.snap +0 -110
  547. package/src/services/chatGroup/client.ts +0 -63
  548. package/src/services/export/_deprecated.ts +0 -155
  549. package/src/services/export/client.ts +0 -15
  550. package/src/services/file/_deprecated.test.ts +0 -119
  551. package/src/services/file/_deprecated.ts +0 -80
  552. package/src/services/file/client.test.ts +0 -199
  553. package/src/services/file/client.ts +0 -85
  554. package/src/services/import/_deprecated.ts +0 -115
  555. package/src/services/import/client.test.ts +0 -1015
  556. package/src/services/import/client.ts +0 -64
  557. package/src/services/message/_deprecated.test.ts +0 -398
  558. package/src/services/message/_deprecated.ts +0 -168
  559. package/src/services/message/client.test.ts +0 -410
  560. package/src/services/message/client.ts +0 -186
  561. package/src/services/plugin/_deprecated.test.ts +0 -162
  562. package/src/services/plugin/_deprecated.ts +0 -42
  563. package/src/services/plugin/client.test.ts +0 -177
  564. package/src/services/plugin/client.ts +0 -46
  565. package/src/services/session/_deprecated.test.ts +0 -440
  566. package/src/services/session/_deprecated.ts +0 -190
  567. package/src/services/session/client.test.ts +0 -413
  568. package/src/services/session/client.ts +0 -193
  569. package/src/services/thread/client.ts +0 -51
  570. package/src/services/topic/_deprecated.test.ts +0 -245
  571. package/src/services/topic/_deprecated.ts +0 -75
  572. package/src/services/topic/client.ts +0 -89
  573. package/src/services/topic/pglite.test.ts +0 -212
  574. package/src/services/user/_deprecated.test.ts +0 -101
  575. package/src/services/user/_deprecated.ts +0 -70
  576. package/src/services/user/client.test.ts +0 -108
  577. package/src/services/user/client.ts +0 -104
  578. package/src/store/chat/slices/builtinTool/actions/__tests__/dalle.test.ts +0 -121
  579. package/src/store/chat/slices/builtinTool/actions/dalle.ts +0 -124
  580. package/src/store/global/actions/clientDb.ts +0 -67
  581. package/src/store/user/slices/modelList/__snapshots__/action.test.ts.snap +0 -12
  582. package/src/store/user/slices/modelList/action.test.ts +0 -359
  583. package/src/store/user/slices/modelList/action.ts +0 -223
  584. package/src/store/user/slices/modelList/initialState.ts +0 -15
  585. package/src/store/user/slices/modelList/reducers/customModelCard.test.ts +0 -204
  586. package/src/store/user/slices/modelList/reducers/customModelCard.ts +0 -64
  587. package/src/store/user/slices/modelList/selectors/index.ts +0 -3
  588. package/src/store/user/slices/modelList/selectors/keyVaults.test.ts +0 -201
  589. package/src/store/user/slices/modelList/selectors/keyVaults.ts +0 -50
  590. package/src/store/user/slices/modelList/selectors/modelConfig.test.ts +0 -219
  591. package/src/store/user/slices/modelList/selectors/modelConfig.ts +0 -95
  592. package/src/store/user/slices/modelList/selectors/modelProvider.test.ts +0 -138
  593. package/src/store/user/slices/modelList/selectors/modelProvider.ts +0 -170
  594. package/src/tools/dalle/Render/GalleyGrid.tsx +0 -60
  595. package/src/tools/dalle/Render/Item/EditMode.tsx +0 -66
  596. package/src/tools/dalle/Render/Item/Error.tsx +0 -49
  597. package/src/tools/dalle/Render/Item/Image.tsx +0 -44
  598. package/src/tools/dalle/Render/Item/ImageFileItem.tsx +0 -57
  599. package/src/tools/dalle/Render/Item/index.tsx +0 -88
  600. package/src/tools/dalle/Render/ToolBar.tsx +0 -56
  601. package/src/tools/dalle/Render/index.tsx +0 -52
  602. package/src/tools/dalle/index.ts +0 -92
  603. /package/src/{middleware.ts → proxy.ts} +0 -0
@@ -50,7 +50,9 @@ If you are using Logto Cloud, assume its endpoint domain is `https://example.log
50
50
  Go to `Webhooks`, create a Webhook, and fill in the following fields:
51
51
 
52
52
  - Endpoint URL: `https://lobe.example.com/api/webhooks/logto`
53
- - Events: `User.Data.Updated`
53
+ - Events:
54
+ - `User.Data.Updated`: Allow LobeChat to synchronize user profile information updates from Logto.
55
+ - `User.SuspensionStatus.Updated`: Allow LobeChat to remove the active session from suspended users from logging in, only available when database session strategy is `database`.
54
56
 
55
57
  After successful creation, copy the Webhook's `Signing Key` and fill it in the `LOGTO_WEBHOOK_SIGNING_KEY` environment variable.
56
58
 
@@ -69,12 +71,12 @@ If you are using Logto Cloud, assume its endpoint domain is `https://example.log
69
71
 
70
72
  | Environment Variable | Type | Description |
71
73
  | --------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
72
- | `NEXT_AUTH_SECRET` | Required | The key used to encrypt Auth.js session tokens. You can generate a key using the command: `openssl rand -base64 32` |
74
+ | `AUTH_SECRET` | Required | The key used to encrypt Auth.js session tokens. You can generate a key using the command: `openssl rand -base64 32` |
73
75
  | `NEXT_AUTH_SSO_PROVIDERS` | Required | Select the single sign-on provider for LobeChat. For Logto, enter `logto`. |
74
76
  | `AUTH_LOGTO_ID` | Required | The Client ID from the Logto App details page |
75
77
  | `AUTH_LOGTO_SECRET` | Required | The Client Secret from the Logto App details page |
76
78
  | `AUTH_LOGTO_ISSUER` | Required | OpenID Connect issuer of the Logto provider |
77
- | `NEXTAUTH_URL` | Required | This URL specifies the callback address for Auth.js during OAuth verification, needed only if the default generated redirect address is incorrect. `https://lobe.example.com/api/auth` |
79
+ | `AUTH_URL` | Required | This URL specifies the callback address for Auth.js during OAuth verification, needed only if the default generated redirect address is incorrect. `https://lobe.example.com/api/auth` |
78
80
  | `LOGTO_WEBHOOK_SIGNING_KEY` | Optional | The key used to verify the legality of Webhook requests sent by Logto. |
79
81
 
80
82
  <Callout type={'tip'}>
@@ -47,7 +47,9 @@ tags:
47
47
  前往 `Webhooks` ,创建一个 Webhook,填写以下字段:
48
48
 
49
49
  - 端点 URL: `https://lobe.example.com/api/webhooks/logto`
50
- - 事件: `User.Data.Updated`
50
+ - 事件:
51
+ - `User.Data.Updated`: 允许 LobeChat 同步 Logto 中用户资料信息的更新。
52
+ - `User.SuspensionStatus.Updated`: 允许 LobeChat 将被暂停的用户移除登录会话,仅在数据库会话策略为 `database` 时可用。
51
53
 
52
54
  创建成功后,复制 Webhook 的 `签名密钥`。填写到环境变量中的 `LOGTO_WEBHOOK_SIGNING_KEY`。
53
55
 
@@ -66,12 +68,12 @@ tags:
66
68
 
67
69
  | 环境变量 | 类型 | 描述 |
68
70
  | --------------------------- | -- | ------------------------------------------------------------------------------------------------ |
69
- | `NEXT_AUTH_SECRET` | 必选 | 用于加密 Auth.js 会话令牌的密钥。您可以使用以下命令生成秘钥: `openssl rand -base64 32` |
71
+ | `AUTH_SECRET` | 必选 | 用于加密 Auth.js 会话令牌的密钥。您可以使用以下命令生成秘钥: `openssl rand -base64 32` |
70
72
  | `NEXT_AUTH_SSO_PROVIDERS` | 必选 | 选择 LoboChat 的单点登录提供商。使用 Logto 请填写 `logto`。 |
71
73
  | `AUTH_LOGTO_ID` | 必选 | Logto App 详情页的 Client ID |
72
74
  | `AUTH_LOGTO_SECRET` | 必选 | Logto App 详情页的 Client Secret |
73
75
  | `AUTH_LOGTO_ISSUER` | 必选 | Logto 提供程序的 OpenID Connect 颁发者 |
74
- | `NEXTAUTH_URL` | 必选 | 该 URL 用于指定 Auth.js 在执行 OAuth 验证时的回调地址,当默认生成的重定向地址发生不正确时才需要设置。`https://lobe.example.com/api/auth` |
76
+ | `AUTH_URL` | 必选 | 该 URL 用于指定 Auth.js 在执行 OAuth 验证时的回调地址,当默认生成的重定向地址发生不正确时才需要设置。`https://lobe.example.com/api/auth` |
75
77
  | `LOGTO_WEBHOOK_SIGNING_KEY` | 可选 | 用于验证 Logto 发送的 Webhook 请求是否合法的密钥。 |
76
78
 
77
79
  <Callout type={'tip'}>
@@ -58,12 +58,12 @@ tags:
58
58
 
59
59
  | Environment Variable | Type | Description |
60
60
  | ----------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
61
- | `NEXT_AUTH_SECRET` | Required | Key used to encrypt Auth.js session tokens. You can generate the key using the following command: `openssl rand -base64 32` |
61
+ | `AUTH_SECRET` | Required | Key used to encrypt Auth.js session tokens. You can generate the key using the following command: `openssl rand -base64 32` |
62
62
  | `NEXT_AUTH_SSO_PROVIDERS` | Required | Select the single sign-on provider for LoboChat. Use `microsoft-entra-id` for Microsoft Entra ID. |
63
63
  | `AUTH_MICROSOFT_ENTRA_ID_ID` | Required | Client ID of the Microsoft Entra ID application. |
64
64
  | `AUTH_MICROSOFT_ENTRA_ID_SECRET` | Required | Client Secret of the Microsoft Entra ID application. |
65
65
  | `AUTH_MICROSOFT_ENTRA_ID_TENANT_ID` | Required | Tenant ID of the Microsoft Entra ID application. |
66
- | `NEXTAUTH_URL` | Required | This URL is used to specify the callback address for Auth.js when performing OAuth authentication. It is only necessary to set it when the default generated redirect address is incorrect. `https://example.com/api/auth` |
66
+ | `AUTH_URL` | Required | This URL is used to specify the callback address for Auth.js when performing OAuth authentication. It is only necessary to set it when the default generated redirect address is incorrect. `https://example.com/api/auth` |
67
67
 
68
68
  <Callout type={'tip'}>
69
69
  You can refer to [📘 environment
@@ -56,12 +56,12 @@ tags:
56
56
 
57
57
  | 环境变量 | 类型 | 描述 |
58
58
  | ----------------------------------- | -- | ------------------------------------------------------------------------------------------- |
59
- | `NEXT_AUTH_SECRET` | 必选 | 用于加密 Auth.js 会话令牌的密钥。您可以使用以下命令生成秘钥: `openssl rand -base64 32` |
59
+ | `AUTH_SECRET` | 必选 | 用于加密 Auth.js 会话令牌的密钥。您可以使用以下命令生成秘钥: `openssl rand -base64 32` |
60
60
  | `NEXT_AUTH_SSO_PROVIDERS` | 必选 | 选择 LoboChat 的单点登录提供商。使用 Microsoft Entra ID 请填写 `microsoft-entra-id`。 |
61
61
  | `AUTH_MICROSOFT_ENTRA_ID_ID` | 必选 | Microsoft Entra ID 应用程序的 Client ID |
62
62
  | `AUTH_MICROSOFT_ENTRA_ID_SECRET` | 必选 | Microsoft Entra ID 应用程序的 Client Secret |
63
63
  | `AUTH_MICROSOFT_ENTRA_ID_TENANT_ID` | 必选 | Microsoft Entra ID 应用程序的 Tenant ID |
64
- | `NEXTAUTH_URL` | 必选 | 该 URL 用于指定 Auth.js 在执行 OAuth 验证时的回调地址,当默认生成的重定向地址发生不正确时才需要设置。`https://example.com/api/auth` |
64
+ | `AUTH_URL` | 必选 | 该 URL 用于指定 Auth.js 在执行 OAuth 验证时的回调地址,当默认生成的重定向地址发生不正确时才需要设置。`https://example.com/api/auth` |
65
65
 
66
66
  <Callout type={'tip'}>
67
67
  前往 [📘 环境变量](/zh/docs/self-hosting/environment-variable#microsoft-entra-id) 可查阅相关变量详情。
@@ -45,12 +45,12 @@ tags:
45
45
 
46
46
  | Environment Variable | Type | Description |
47
47
  | ------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
48
- | `NEXT_AUTH_SECRET` | Required | Key used to encrypt Auth.js session tokens. You can generate a key using the following command: `openssl rand -base64 32` |
48
+ | `AUTH_SECRET` | Required | Key used to encrypt Auth.js session tokens. You can generate a key using the following command: `openssl rand -base64 32` |
49
49
  | `NEXT_AUTH_SSO_PROVIDERS` | Required | Select the single sign-on provider for LoboChat. Use `okta` for Okta. |
50
50
  | `AUTH_OKTA_ID` | Required | Client ID of the Okta application |
51
51
  | `AUTH_OKTA_SECRET` | Required | Client Secret of the Okta application |
52
52
  | `AUTH_OKTA_ISSUER` | Required | Domain of the Okta application, `https://example.oktapreview.com` |
53
- | `NEXTAUTH_URL` | Optional | The URL is used to specify the callback address for the execution of OAuth authentication in Auth.js. It needs to be set only when the default address is incorrect. `https://example.com/api/auth` |
53
+ | `AUTH_URL` | Optional | The URL is used to specify the callback address for the execution of OAuth authentication in Auth.js. It needs to be set only when the default address is incorrect. `https://example.com/api/auth` |
54
54
 
55
55
  <Callout type={'tip'}>
56
56
  You can refer to the related variable details at [📘Environment Variables](/docs/self-hosting/environment-variable/auth#okta).
@@ -44,12 +44,12 @@ tags:
44
44
 
45
45
  | 环境变量 | 类型 | 描述 |
46
46
  | ------------------------- | -- | ------------------------------------------------------------------------------------ |
47
- | `NEXT_AUTH_SECRET` | 必选 | 用于加密 Auth.js 会话令牌的密钥。您可以使用以下命令生成密钥:`openssl rand -base64 32` |
47
+ | `AUTH_SECRET` | 必选 | 用于加密 Auth.js 会话令牌的密钥。您可以使用以下命令生成密钥:`openssl rand -base64 32` |
48
48
  | `NEXT_AUTH_SSO_PROVIDERS` | 必选 | 选择 LoboChat 的单点登录提供商。使用 Okta 请填写 `okta`。 |
49
49
  | `AUTH_OKTA_ID` | 必选 | Okta 应用程序的客户端 ID |
50
50
  | `AUTH_OKTA_SECRET` | 必选 | Okta 应用程序的客户端密钥 |
51
51
  | `AUTH_OKTA_ISSUER` | 必选 | Okta 应用程序的域名,`https://example.oktapreview.com` |
52
- | `NEXTAUTH_URL` | 可选 | 该 URL 用于指定 Auth.js 在执行 OAuth 认证时的回调地址。仅当默认地址不正确时才需要设置。`https://example.com/api/auth` |
52
+ | `AUTH_URL` | 可选 | 该 URL 用于指定 Auth.js 在执行 OAuth 认证时的回调地址。仅当默认地址不正确时才需要设置。`https://example.com/api/auth` |
53
53
 
54
54
  <Callout type={'tip'}>
55
55
  您可以在 [📘环境变量](/zh/docs/self-hosting/environment-variables/auth#okta) 查阅相关变量详情。
@@ -30,11 +30,11 @@ tags:
30
30
 
31
31
  | Environment Variable | Type | Description |
32
32
  | ------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
33
- | `NEXT_AUTH_SECRET` | Required | Key used to encrypt Auth.js session tokens. You can generate the key using the command: `openssl rand -base64 32` |
33
+ | `AUTH_SECRET` | Required | Key used to encrypt Auth.js session tokens. You can generate the key using the command: `openssl rand -base64 32` |
34
34
  | `NEXT_AUTH_SSO_PROVIDERS` | Required | Select the Single Sign-On provider for LobeChat. Use `github` for Github. |
35
35
  | `WECHAT_CLIENT_ID` | Required | Client ID from the Wechat website application details page |
36
36
  | `WECHAT_CLIENT_SECRET` | Required | Client Secret from the Wechat website application details page |
37
- | `NEXTAUTH_URL` | Required | This URL is used to specify the callback address for Auth.js when performing OAuth authentication. Only set it if the default generated redirect address is incorrect. `https://example.com/api/auth` |
37
+ | `AUTH_URL` | Required | This URL is used to specify the callback address for Auth.js when performing OAuth authentication. Only set it if the default generated redirect address is incorrect. `https://example.com/api/auth` |
38
38
 
39
39
  <Callout type={'tip'}>
40
40
  Go to [📘 Environment Variables](/en/docs/self-hosting/environment-variables/auth#wechat) for more details about related variables.
@@ -28,11 +28,11 @@ tags:
28
28
 
29
29
  | 环境变量 | 类型 | 描述 |
30
30
  | ------------------------- | -- | ------------------------------------------------------------------------------------------- |
31
- | `NEXT_AUTH_SECRET` | 必选 | 用于加密 Auth.js 会话令牌的密钥。您可以使用以下命令生成秘钥: `openssl rand -base64 32` |
31
+ | `AUTH_SECRET` | 必选 | 用于加密 Auth.js 会话令牌的密钥。您可以使用以下命令生成秘钥: `openssl rand -base64 32` |
32
32
  | `NEXT_AUTH_SSO_PROVIDERS` | 必选 | 选择 LoboChat 的单点登录提供商。使用 Github 请填写 `github`。 |
33
33
  | `WECHAT_CLIENT_ID` | 必选 | 微信网站应用详情页的 客户端 ID |
34
34
  | `WECHAT_CLIENT_SECRET` | 必选 | 微信网站应用详情页的 客户端 Secret |
35
- | `NEXTAUTH_URL` | 必选 | 该 URL 用于指定 Auth.js 在执行 OAuth 验证时的回调地址,当默认生成的重定向地址发生不正确时才需要设置。`https://example.com/api/auth` |
35
+ | `AUTH_URL` | 必选 | 该 URL 用于指定 Auth.js 在执行 OAuth 验证时的回调地址,当默认生成的重定向地址发生不正确时才需要设置。`https://example.com/api/auth` |
36
36
 
37
37
  <Callout type={'tip'}>
38
38
  前往 [📘 环境变量](/zh/docs/self-hosting/environment-variables/auth#wechat) 可查阅相关变量详情。
@@ -65,12 +65,12 @@ tags:
65
65
 
66
66
  | Environment Variable | Type | Description |
67
67
  | ------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
68
- | `NEXT_AUTH_SECRET` | Required | Key used to encrypt Auth.js session tokens. You can generate a key using the following command: `openssl rand -base64 32` |
68
+ | `AUTH_SECRET` | Required | Key used to encrypt Auth.js session tokens. You can generate a key using the following command: `openssl rand -base64 32` |
69
69
  | `NEXT_AUTH_SSO_PROVIDERS` | Required | Select the single sign-on provider for LoboChat. Use `zitadel` for ZITADEL. |
70
70
  | `AUTH_ZITADEL_ID` | Required | Client ID (`ClientId` as shown in ZITADEL) of the ZITADEL application |
71
71
  | `AUTH_ZITADEL_SECRET` | Required | Client Secret (`ClientSecret` as shown in ZITADEL) of the ZITADEL application |
72
72
  | `AUTH_ZITADEL_ISSUER` | Required | Issuer URL of the ZITADEL application |
73
- | `NEXTAUTH_URL` | Required | The URL is used to specify the callback address for the execution of OAuth authentication in Auth.js. It needs to be set only when the default address is incorrect. `https://example.com/api/auth` |
73
+ | `AUTH_URL` | Required | The URL is used to specify the callback address for the execution of OAuth authentication in Auth.js. It needs to be set only when the default address is incorrect. `https://example.com/api/auth` |
74
74
 
75
75
  <Callout type={'tip'}>
76
76
  You can refer to the related variable details at [📘Environment Variables](/docs/self-hosting/environment-variables/auth#zitadel).
@@ -62,12 +62,12 @@ tags:
62
62
 
63
63
  | 环境变量 | 类型 | 描述 |
64
64
  | ------------------------- | -- | ----------------------------------------------------------------------------------- |
65
- | `NEXT_AUTH_SECRET` | 必选 | 用于加密 Auth.js 会话令牌的密钥。您可以使用以下命令生成密钥:`openssl rand -base64 32` |
65
+ | `AUTH_SECRET` | 必选 | 用于加密 Auth.js 会话令牌的密钥。您可以使用以下命令生成密钥:`openssl rand -base64 32` |
66
66
  | `NEXT_AUTH_SSO_PROVIDERS` | 必选 | 为 LobeChat 选择单点登录提供程序。对于 ZITADEL,请填写 `zitadel`。 |
67
67
  | `AUTH_ZITADEL_ID` | 必选 | ZITADEL 应用的 Client ID(`ClientId`)。 |
68
68
  | `AUTH_ZITADEL_SECRET` | 必选 | ZITADEL 应用的 Client Secret(`ClientSecret`)。 |
69
69
  | `AUTH_ZITADEL_ISSUER` | 必选 | ZITADEL 应用的 OpenID Connect 颁发者(issuer)URL。 |
70
- | `NEXTAUTH_URL` | 必选 | 该 URL 用于指定 Auth.js 中执行 OAuth 认证的回调地址。仅当默认地址不正确时才需要设置。`https://example.com/api/auth` |
70
+ | `AUTH_URL` | 必选 | 该 URL 用于指定 Auth.js 中执行 OAuth 认证的回调地址。仅当默认地址不正确时才需要设置。`https://example.com/api/auth` |
71
71
 
72
72
  <Callout type={'tip'}>
73
73
  您可以在 [📘 环境变量](/zh/docs/self-hosting/environment-variables/auth#zitadel) 中查看相关变量的详细信息。
@@ -26,12 +26,13 @@ By setting the environment variables `NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY` and `CL
26
26
 
27
27
  Before using NextAuth, please set the following variables in LobeChat's environment variables:
28
28
 
29
- | Environment Variable | Type | Description |
30
- | ------------------------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
31
- | `NEXT_PUBLIC_ENABLE_NEXT_AUTH` | Required | This is used to enable the NextAuth service. Set it to `1` to enable it; changing this setting requires recompiling the application. Users deploying with the `lobehub/lobe-chat-database` image have this configuration added by default. |
32
- | `NEXT_AUTH_SECRET` | Required | The key used to encrypt Auth.js session tokens. You can use the following command: `openssl rand -base64 32`, or visit `https://generate-secret.vercel.app/32` to generate the key. |
33
- | `NEXTAUTH_URL` | Required | This URL specifies the callback address for Auth.js when performing OAuth verification. Set this only if the default generated redirect address is incorrect. `https://example.com/api/auth` |
34
- | `NEXT_AUTH_SSO_PROVIDERS` | Optional | This environment variable is used to enable multiple identity verification sources simultaneously, separated by commas, for example, `auth0,microsoft-entra-id,authentik`. |
29
+ | Environment Variable | Type | Description |
30
+ | -------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
31
+ | `NEXT_PUBLIC_ENABLE_NEXT_AUTH` | Required | This is used to enable the NextAuth service. Set it to `1` to enable it; changing this setting requires recompiling the application. Users deploying with the `lobehub/lobe-chat-database` image have this configuration added by default. |
32
+ | `AUTH_SECRET` | Required | The key used to encrypt Auth.js session tokens. You can use the following command: `openssl rand -base64 32`, or visit `https://generate-secret.vercel.app/32` to generate the key. |
33
+ | `AUTH_URL` | Required | This URL specifies the callback address for Auth.js when performing OAuth verification. Set this only if the default generated redirect address is incorrect. `https://example.com/api/auth` |
34
+ | `NEXT_AUTH_SSO_PROVIDERS` | Optional | This environment variable is used to enable multiple identity verification sources simultaneously, separated by commas, for example, `auth0,microsoft-entra-id,authentik`. |
35
+ | `NEXT_AUTH_SSO_SESSION_STRATEGY` | Optional | The session strategy for Auth.js. Options are `jwt` or `database`. Default is `jwt`. |
35
36
 
36
37
  Currently supported identity verification services include:
37
38
 
@@ -67,21 +68,31 @@ To simultaneously enable multiple identity verification sources, please set the
67
68
 
68
69
  The order corresponds to the display order of the SSO providers.
69
70
 
70
- | SSO Provider | Value |
71
- | --------------------- | ----------------------- |
72
- | Auth0 | `auth0` |
73
- | Authenlia | `authenlia` |
74
- | Authentik | `authentik` |
75
- | Casdoor | `casdoor` |
76
- | Cloudflare Zero Trust | `cloudflare-zero-trust` |
77
- | Github | `github` |
78
- | Logto | `logto` |
79
- | Microsoft Entra ID | `microsoft-entra-id` |
80
- | ZITADEL | `zitadel` |
81
- | Keycloak | `keycloak` |
82
- | Google | `google` |
83
- | Okta | `okta` |
71
+ | SSO Provider | Value | Additional Features |
72
+ | --------------------- | ----------------------- | ------------------- |
73
+ | Auth0 | `auth0` | |
74
+ | Authenlia | `authenlia` | |
75
+ | Authentik | `authentik` | |
76
+ | Casdoor | `casdoor` | `Webhook` |
77
+ | Cloudflare Zero Trust | `cloudflare-zero-trust` | |
78
+ | Github | `github` | |
79
+ | Logto | `logto` | `Webhook` |
80
+ | Microsoft Entra ID | `microsoft-entra-id` | |
81
+ | ZITADEL | `zitadel` | |
82
+ | Keycloak | `keycloak` | |
83
+ | Google | `google` | |
84
+ | Okta | `okta` | |
85
+
86
+ ## Additional Features
87
+
88
+ ### Webhook Support
89
+
90
+ Allow LobeChat to receive notifications when user information is updated in the identity provider. Supported providers include Casdoor and Logto. Please refer to the specific provider documentation for configuration details.
91
+
92
+ ### Database Session
93
+
94
+ Allow the session store in database, see also the [Auth.js Session Documentation](https://authjs.dev/concepts/session-strategies#database-session).
84
95
 
85
96
  ## Other SSO Providers
86
97
 
87
- Please refer to the [NextAuth.js](https://next-auth.js.org/providers) documentation and feel free to submit a Pull Request.
98
+ Please refer to the [Auth.js](https://authjs.dev/getting-started/authentication/oauth) documentation and feel free to submit a Pull Request.
@@ -24,12 +24,13 @@ LobeChat 与 Clerk 做了深度集成,能够为用户提供一个更加安全
24
24
 
25
25
  在使用 NextAuth 之前,请先在 LobeChat 的环境变量中设置以下变量:
26
26
 
27
- | 环境变量 | 类型 | 描述 |
28
- | ------------------------------ | -- | ------------------------------------------------------------------------------------------------------------ |
29
- | `NEXT_PUBLIC_ENABLE_NEXT_AUTH` | 必选 | 用于启用 NextAuth 服务,设置为 `1` 以启用,更改此项需要重新编译应用。使用 `lobehub/lobe-chat-database` 镜像部署的用户已经默认添加了该项配置。 |
30
- | `NEXT_AUTH_SECRET` | 必选 | 用于加密 Auth.js 会话令牌的密钥。您可以使用以下命令: `openssl rand -base64 32`,或者访问 `https://generate-secret.vercel.app/32` 生成秘钥。 |
31
- | `NEXTAUTH_URL` | 必选 | 该 URL 用于指定 Auth.js 在执行 OAuth 验证时的回调地址,当默认生成的重定向地址发生不正确时才需要设置。`https://example.com/api/auth` |
32
- | `NEXT_AUTH_SSO_PROVIDERS` | 可选 | 该环境变量用于同时启用多个身份验证源,以逗号 `,` 分割,例如 `auth0,microsoft-entra-id,authentik`。 |
27
+ | 环境变量 | 类型 | 描述 |
28
+ | -------------------------------- | -- | ------------------------------------------------------------------------------------------------------------ |
29
+ | `NEXT_PUBLIC_ENABLE_NEXT_AUTH` | 必选 | 用于启用 NextAuth 服务,设置为 `1` 以启用,更改此项需要重新编译应用。使用 `lobehub/lobe-chat-database` 镜像部署的用户已经默认添加了该项配置。 |
30
+ | `NEXT_AUTH_SECRET` | 必选 | 用于加密 Auth.js 会话令牌的密钥。您可以使用以下命令: `openssl rand -base64 32`,或者访问 `https://generate-secret.vercel.app/32` 生成秘钥。 |
31
+ | `AUTH_URL` | 必选 | 该 URL 用于指定 Auth.js 在执行 OAuth 验证时的回调地址,当默认生成的重定向地址发生不正确时才需要设置。`https://example.com/api/auth` |
32
+ | `NEXT_AUTH_SSO_PROVIDERS` | 可选 | 该环境变量用于同时启用多个身份验证源,以逗号 `,` 分割,例如 `auth0,microsoft-entra-id,authentik`。 |
33
+ | `NEXT_AUTH_SSO_SESSION_STRATEGY` | 可选 | Auth.js 的会话策略。选项为 `jwt` 或 `database`。默认值为 `jwt`。 |
33
34
 
34
35
  目前支持的身份验证服务有:
35
36
 
@@ -63,19 +64,29 @@ LobeChat 与 Clerk 做了深度集成,能够为用户提供一个更加安全
63
64
 
64
65
  顺序为 SSO 提供商的显示顺序。
65
66
 
66
- | SSO 提供商 | 值 |
67
- | --------------------- | ----------------------- |
68
- | Auth0 | `auth0` |
69
- | Authenlia | `authenlia` |
70
- | Authentik | `authentik` |
71
- | Casdoor | `casdoor` |
72
- | Cloudflare Zero Trust | `cloudflare-zero-trust` |
73
- | Github | `github` |
74
- | Logto | `logto` |
75
- | Microsoft Entra ID | `microsoft-entra-id` |
76
- | ZITADEL | `zitadel` |
77
- | Keycloak | `keycloak` |
78
- | Okta | `okta` |
67
+ | SSO 提供商 | 值 | 额外功能 |
68
+ | --------------------- | ----------------------- | --------- |
69
+ | Auth0 | `auth0` | |
70
+ | Authenlia | `authenlia` | |
71
+ | Authentik | `authentik` | |
72
+ | Casdoor | `casdoor` | `Webhook` |
73
+ | Cloudflare Zero Trust | `cloudflare-zero-trust` | |
74
+ | Github | `github` | |
75
+ | Logto | `logto` | `Webhook` |
76
+ | Microsoft Entra ID | `microsoft-entra-id` | |
77
+ | ZITADEL | `zitadel` | |
78
+ | Keycloak | `keycloak` | |
79
+ | Okta | `okta` | |
80
+
81
+ ## 额外功能
82
+
83
+ ### Webhook 支持
84
+
85
+ 允许 LobeChat 在身份提供商中用户信息更新时接收通知。支持的提供商包括 Casdoor 和 Logto。请参考具体提供商文档进行配置。
86
+
87
+ ### 数据库会话
88
+
89
+ 允许会话存储在数据库中,详情请参阅 [Auth.js 会话文档](https://authjs.dev/concepts/session-strategies#database-session)。
79
90
 
80
91
  ## 其他 SSO 提供商
81
92
 
@@ -49,7 +49,6 @@ You can achieve various feature combinations using the above configuration synta
49
49
  | `token_counter` | Reserved for token counter display. | Enabled |
50
50
  | `welcome_suggest` | Displays welcome suggestions. | Enabled |
51
51
  | `changelog` | Controls changelog modal/page display. | Enabled |
52
- | `clerk_sign_up` | Enables the Clerk SignUp functionality. | Enabled |
53
52
  | `market` | Enables the assistant market functionality. | Enabled |
54
53
  | `knowledge_base` | Enables the knowledge base functionality. | Enabled |
55
54
  | `rag_eval` | Controls RAG evaluation feature (/repos/\[id]/evals). | Disabled |
@@ -46,7 +46,6 @@ tags:
46
46
  | `token_counter` | 保留用于令牌计数器显示。 | 开启 |
47
47
  | `welcome_suggest` | 显示欢迎建议。 | 开启 |
48
48
  | `changelog` | 控制更新日志弹窗 / 页面的显示。 | 开启 |
49
- | `clerk_sign_up` | 启用 Clerk 注册功能。 | 开启 |
50
49
  | `market` | 启用助手市场功能。 | 开启 |
51
50
  | `knowledge_base` | 启用知识库功能。 | 开启 |
52
51
  | `rag_eval` | 控制 RAG 评估功能 (/repos/\[id]/evals)。 | 关闭 |
@@ -2,9 +2,11 @@
2
2
  title: >-
3
3
  Configuring Online Search Functionality - Enhancing AI's Ability to Access Web Information
4
4
 
5
+
5
6
  description: >-
6
7
  Learn how to configure the SearXNG online search functionality for LobeChat, enabling AI to access the latest web information.
7
8
 
9
+
8
10
  tags:
9
11
  - Online Search
10
12
  - SearXNG
@@ -17,7 +19,10 @@ tags:
17
19
  LobeChat supports configuring **web search functionality** for AI, enabling it to retrieve real-time information from the internet to provide more accurate and up-to-date responses. Web search supports multiple search engine providers, including [SearXNG](https://github.com/searxng/searxng), [Search1API](https://www.search1api.com), [Google](https://programmablesearchengine.google.com), and [Brave](https://brave.com/search/api), among others.
18
20
 
19
21
  <Callout type="info">
20
- Web search allows AI to access time-sensitive content, such as the latest news, technology trends, or product information. You can deploy the open-source SearXNG yourself, or choose to integrate mainstream search services like Search1API, Google, Brave, etc., combining them freely based on your use case.
22
+ Web search allows AI to access time-sensitive content, such as the latest news, technology trends,
23
+ or product information. You can deploy the open-source SearXNG yourself, or choose to integrate
24
+ mainstream search services like Search1API, Google, Brave, etc., combining them freely based on
25
+ your use case.
21
26
  </Callout>
22
27
 
23
28
  By setting the search service environment variable `SEARCH_PROVIDERS` and the corresponding API Keys, LobeChat will query multiple sources and return the results. You can also configure crawler service environment variables such as `CRAWLER_IMPLS` (e.g., `browserless`, `firecrawl`, `tavily`, etc.) to extract webpage content, enhancing the capability of search + reading.
@@ -29,20 +34,20 @@ By setting the search service environment variable `SEARCH_PROVIDERS` and the co
29
34
  Configure available web crawlers for structured extraction of webpage content.
30
35
 
31
36
  ```env
32
- CRAWLER_IMPLS="native,search1api"
37
+ CRAWLER_IMPLS="naive,search1api"
33
38
  ```
34
39
 
35
40
  Supported crawler types are listed below:
36
41
 
37
- | Value | Description | Environment Variable |
38
- | ------------- | ------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
39
- | `browserless` | Headless browser crawler based on [Browserless](https://www.browserless.io/), suitable for rendering complex pages. | `BROWSERLESS_TOKEN` |
40
- | `exa` | Crawler capabilities provided by [Exa](https://exa.ai/), API required. | `EXA_API_KEY` |
41
- | `firecrawl` | [Firecrawl](https://firecrawl.dev/) headless browser API, ideal for modern websites. | `FIRECRAWL_API_KEY` |
42
- | `jina` | Crawler service from [Jina AI](https://jina.ai/), supports fast content summarization. | `JINA_READER_API_KEY` |
43
- | `native` | Built-in general-purpose crawler for standard web structures. | |
44
- | `search1api` | Page crawling capabilities from [Search1API](https://www.search1api.com), great for structured content extraction. | `SEARCH1API_API_KEY` `SEARCH1API_CRAWL_API_KEY` `SEARCH1API_SEARCH_API_KEY` |
45
- | `tavily` | Web scraping and summarization API from [Tavily](https://www.tavily.com/). | `TAVILY_API_KEY` |
42
+ | Value | Description | Environment Variable |
43
+ | ------------- | ------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
44
+ | `browserless` | Headless browser crawler based on [Browserless](https://www.browserless.io/), suitable for rendering complex pages. | `BROWSERLESS_TOKEN` |
45
+ | `exa` | Crawler capabilities provided by [Exa](https://exa.ai/), API required. | `EXA_API_KEY` |
46
+ | `firecrawl` | [Firecrawl](https://firecrawl.dev/) headless browser API, ideal for modern websites. | `FIRECRAWL_API_KEY` |
47
+ | `jina` | Crawler service from [Jina AI](https://jina.ai/), supports fast content summarization. | `JINA_READER_API_KEY` |
48
+ | `naive` | Built-in general-purpose crawler for standard web structures. | |
49
+ | `search1api` | Page crawling capabilities from [Search1API](https://www.search1api.com), great for structured content extraction. | `SEARCH1API_API_KEY` `SEARCH1API_CRAWL_API_KEY` `SEARCH1API_SEARCH_API_KEY` |
50
+ | `tavily` | Web scraping and summarization API from [Tavily](https://www.tavily.com/). | `TAVILY_API_KEY` |
46
51
 
47
52
  > 💡 Setting multiple crawlers increases success rate; the system will try different ones based on priority.
48
53
 
@@ -58,19 +63,19 @@ SEARCH_PROVIDERS="searxng"
58
63
 
59
64
  Supported search engines include:
60
65
 
61
- | Value | Description | Environment Variable |
62
- | ------------ | --------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
63
- | `anspire` | Search service provided by [Anspire](https://anspire.ai/). | `ANSPIRE_API_KEY` |
64
- | `bocha` | Search service from [Bocha](https://open.bochaai.com/). | `BOCHA_API_KEY` |
65
- | `brave` | [Brave](https://search.brave.com/help/api), a privacy-friendly search source. | `BRAVE_API_KEY` |
66
- | `exa` | [Exa](https://exa.ai/), a search API designed for AI. | `EXA_API_KEY` |
67
- | `firecrawl` | Search capabilities via [Firecrawl](https://firecrawl.dev/). | `FIRECRAWL_API_KEY` |
68
- | `google` | Uses [Google Programmable Search Engine](https://programmablesearchengine.google.com/). | `GOOGLE_PSE_API_KEY` `GOOGLE_PSE_ENGINE_ID` |
69
- | `jina` | Semantic search provided by [Jina AI](https://jina.ai/). | `JINA_READER_API_KEY` |
70
- | `kagi` | Premium search API by [Kagi](https://kagi.com/), requires a subscription key. | `KAGI_API_KEY` |
71
- | `search1api` | Aggregated search capabilities from [Search1API](https://www.search1api.com). | `SEARCH1API_API_KEY` `SEARCH1API_CRAWL_API_KEY` `SEARCH1API_SEARCH_API_KEY` |
72
- | `searxng` | Use a self-hosted or public [SearXNG](https://searx.space/) instance. | `SEARXNG_URL` |
73
- | `tavily` | [Tavily](https://www.tavily.com/), offers fast web summaries and answers. | `TAVILY_API_KEY` |
66
+ | Value | Description | Environment Variable |
67
+ | ------------ | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
68
+ | `anspire` | Search service provided by [Anspire](https://anspire.ai/). | `ANSPIRE_API_KEY` |
69
+ | `bocha` | Search service from [Bocha](https://open.bochaai.com/). | `BOCHA_API_KEY` |
70
+ | `brave` | [Brave](https://search.brave.com/help/api), a privacy-friendly search source. | `BRAVE_API_KEY` |
71
+ | `exa` | [Exa](https://exa.ai/), a search API designed for AI. | `EXA_API_KEY` |
72
+ | `firecrawl` | Search capabilities via [Firecrawl](https://firecrawl.dev/). | `FIRECRAWL_API_KEY` |
73
+ | `google` | Uses [Google Programmable Search Engine](https://programmablesearchengine.google.com/). | `GOOGLE_PSE_API_KEY` `GOOGLE_PSE_ENGINE_ID` |
74
+ | `jina` | Semantic search provided by [Jina AI](https://jina.ai/). | `JINA_READER_API_KEY` |
75
+ | `kagi` | Premium search API by [Kagi](https://kagi.com/), requires a subscription key. | `KAGI_API_KEY` |
76
+ | `search1api` | Aggregated search capabilities from [Search1API](https://www.search1api.com). | `SEARCH1API_API_KEY` `SEARCH1API_CRAWL_API_KEY` `SEARCH1API_SEARCH_API_KEY` |
77
+ | `searxng` | Use a self-hosted or public [SearXNG](https://searx.space/) instance. | `SEARXNG_URL` |
78
+ | `tavily` | [Tavily](https://www.tavily.com/), offers fast web summaries and answers. | `TAVILY_API_KEY` |
74
79
 
75
80
  > ⚠️ Some search providers require you to apply for an API Key and configure it in your `.env` file.
76
81
 
@@ -139,7 +144,7 @@ GOOGLE_PSE_ENGINE_ID=your-google-cx-id
139
144
  Sets the access URL for the [Firecrawl](https://firecrawl.dev/) API, used for web content scraping. Default value:
140
145
 
141
146
  ```env
142
- FIRECRAWL_URL=https://api.firecrawl.dev/v1
147
+ FIRECRAWL_URL=https://api.firecrawl.dev/v2
143
148
  ```
144
149
 
145
150
  > ⚙️ Usually does not need to be changed unless you’re using a self-hosted version or a proxy service.
@@ -13,7 +13,9 @@ tags:
13
13
  LobeChat 支持为 AI 配置**联网搜索功能**,使其能够实时获取互联网信息,从而提供更准确、最新的回答。联网搜索支持多个搜索引擎提供商,包括 [SearXNG](https://github.com/searxng/searxng)、[Search1API](https://www.search1api.com)、[Google](https://programmablesearchengine.google.com)、[Brave](https://brave.com/search/api) 等。
14
14
 
15
15
  <Callout type="info">
16
- 联网搜索可以让 AI 获取时效性内容,如最新新闻、技术动态或产品信息。你可以使用开源的 SearXNG 自行部署,也可以选择集成主流搜索引擎服务,如 Search1API、Google、Brave 等,根据你的使用场景自由组合。
16
+ 联网搜索可以让 AI 获取时效性内容,如最新新闻、技术动态或产品信息。你可以使用开源的 SearXNG
17
+ 自行部署,也可以选择集成主流搜索引擎服务,如 Search1API、Google、Brave
18
+ 等,根据你的使用场景自由组合。
17
19
  </Callout>
18
20
 
19
21
  通过设置搜索服务环境变量 `SEARCH_PROVIDERS` 和对应的 API Key,LobeChat 将在多个搜索源中查询并返回结果。你还可以搭配配置爬虫服务环境变量 `CRAWLER_IMPLS`(如 `browserless`、`firecrawl`、`tavily` 等)以提取网页内容,实现搜索 + 阅读的增强能力。
@@ -25,20 +27,20 @@ LobeChat 支持为 AI 配置**联网搜索功能**,使其能够实时获取互
25
27
  配置可用的网页爬虫,用于对网页进行结构化内容提取。
26
28
 
27
29
  ```env
28
- CRAWLER_IMPLS="native,search1api"
30
+ CRAWLER_IMPLS="naive,search1api"
29
31
  ```
30
32
 
31
33
  支持的爬虫类型如下:
32
34
 
33
- | 值 | 说明 | 环境变量 |
34
- | ------------- | ---------------------------------------------------------------- | -------------------------- |
35
- | `browserless` | 基于 [Browserless](https://www.browserless.io/) 的无头浏览器爬虫,适合渲染复杂页面。 | `BROWSERLESS_TOKEN` |
36
- | `exa` | 使用 [Exa](https://exa.ai/) 提供的爬虫能力,需申请 API。 | `EXA_API_KEY` |
37
- | `firecrawl` | [Firecrawl](https://firecrawl.dev/) 无头浏览器 API,适合现代网站抓取。 | `FIRECRAWL_API_KEY` |
38
- | `jina` | 使用 [Jina AI](https://jina.ai/) 的爬虫服务,支持快速提取摘要信息。 | `JINA_READER_API_KEY` |
39
- | `native` | 内置通用爬虫,适用于标准网页结构。 | |
35
+ | 值 | 说明 | 环境变量 |
36
+ | ------------- | ---------------------------------------------------------------- | --------------------------------------------------------------------------- |
37
+ | `browserless` | 基于 [Browserless](https://www.browserless.io/) 的无头浏览器爬虫,适合渲染复杂页面。 | `BROWSERLESS_TOKEN` |
38
+ | `exa` | 使用 [Exa](https://exa.ai/) 提供的爬虫能力,需申请 API。 | `EXA_API_KEY` |
39
+ | `firecrawl` | [Firecrawl](https://firecrawl.dev/) 无头浏览器 API,适合现代网站抓取。 | `FIRECRAWL_API_KEY` |
40
+ | `jina` | 使用 [Jina AI](https://jina.ai/) 的爬虫服务,支持快速提取摘要信息。 | `JINA_READER_API_KEY` |
41
+ | `naive` | 内置简易通用爬虫,适用于标准网页结构。 | |
40
42
  | `search1api` | 利用 [Search1API](https://www.search1api.com) 提供的页面抓取能力,适合结构化内容提取。 | `SEARCH1API_API_KEY` `SEARCH1API_CRAWL_API_KEY` `SEARCH1API_SEARCH_API_KEY` |
41
- | `tavily` | 使用 [Tavily](https://www.tavily.com/) 的网页抓取与摘要 API。 | `TAVILY_API_KEY` |
43
+ | `tavily` | 使用 [Tavily](https://www.tavily.com/) 的网页抓取与摘要 API。 | `TAVILY_API_KEY` |
42
44
 
43
45
  > 💡 设置多个爬虫可提升成功率,系统将根据优先级尝试不同爬虫。
44
46
 
@@ -54,19 +56,19 @@ SEARCH_PROVIDERS="searxng"
54
56
 
55
57
  支持的搜索引擎如下:
56
58
 
57
- | 值 | 说明 | 环境变量 |
58
- | ------------ | ------------------------------------------------------------------------------------- | ------------------------------------------- |
59
- | `anspire` | 基于 [Anspire(安思派)](https://anspire.ai/) 提供的搜索服务。 | `ANSPIRE_API_KEY` |
60
- | `bocha` | 基于 [Bocha(博查)](https://open.bochaai.com/) 提供的搜索服务。 | `BOCHA_API_KEY` |
61
- | `brave` | [Brave](https://search.brave.com/help/api),隐私友好的搜索源。 | `BRAVE_API_KEY` |
62
- | `exa` | [Exa](https://exa.ai/),面向 AI 的搜索 API。 | `EXA_API_KEY` |
63
- | `firecrawl` | 支持 [Firecrawl](https://firecrawl.dev/) 提供的搜索服务。 | `FIRECRAWL_API_KEY` |
64
- | `google` | 使用 [Google Programmable Search Engine](https://programmablesearchengine.google.com/)。 | `GOOGLE_PSE_API_KEY` `GOOGLE_PSE_ENGINE_ID` |
65
- | `jina` | 使用 [Jina AI](https://jina.ai/) 提供的语义搜索服务。 | `JINA_READER_API_KEY` |
66
- | `kagi` | [Kagi](https://kagi.com/) 提供的高级搜索 API,需订阅 Key。 | `KAGI_API_KEY` |
59
+ | 值 | 说明 | 环境变量 |
60
+ | ------------ | ------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
61
+ | `anspire` | 基于 [Anspire(安思派)](https://anspire.ai/) 提供的搜索服务。 | `ANSPIRE_API_KEY` |
62
+ | `bocha` | 基于 [Bocha(博查)](https://open.bochaai.com/) 提供的搜索服务。 | `BOCHA_API_KEY` |
63
+ | `brave` | [Brave](https://search.brave.com/help/api),隐私友好的搜索源。 | `BRAVE_API_KEY` |
64
+ | `exa` | [Exa](https://exa.ai/),面向 AI 的搜索 API。 | `EXA_API_KEY` |
65
+ | `firecrawl` | 支持 [Firecrawl](https://firecrawl.dev/) 提供的搜索服务。 | `FIRECRAWL_API_KEY` |
66
+ | `google` | 使用 [Google Programmable Search Engine](https://programmablesearchengine.google.com/)。 | `GOOGLE_PSE_API_KEY` `GOOGLE_PSE_ENGINE_ID` |
67
+ | `jina` | 使用 [Jina AI](https://jina.ai/) 提供的语义搜索服务。 | `JINA_READER_API_KEY` |
68
+ | `kagi` | [Kagi](https://kagi.com/) 提供的高级搜索 API,需订阅 Key。 | `KAGI_API_KEY` |
67
69
  | `search1api` | 使用 [Search1API](https://www.search1api.com) 聚合搜索能力。 | `SEARCH1API_API_KEY` `SEARCH1API_CRAWL_API_KEY` `SEARCH1API_SEARCH_API_KEY` |
68
- | `searxng` | 使用自托管或公共 [SearXNG](https://searx.space/) 实例。 | `SEARXNG_URL` |
69
- | `tavily` | [Tavily](https://www.tavily.com/),快速网页摘要与答案返回。 | `TAVILY_API_KEY` |
70
+ | `searxng` | 使用自托管或公共 [SearXNG](https://searx.space/) 实例。 | `SEARXNG_URL` |
71
+ | `tavily` | [Tavily](https://www.tavily.com/),快速网页摘要与答案返回。 | `TAVILY_API_KEY` |
70
72
 
71
73
  > ⚠️ 某些搜索提供商需要单独申请 API Key,并在 `.env` 中配置相关凭证。
72
74
 
@@ -135,7 +137,7 @@ GOOGLE_PSE_ENGINE_ID=your-google-cx-id
135
137
  设置 [Firecrawl](https://firecrawl.dev/) API 的访问地址。用于网页内容抓取,默认值如下:
136
138
 
137
139
  ```env
138
- FIRECRAWL_URL=https://api.firecrawl.dev/v1
140
+ FIRECRAWL_URL=https://api.firecrawl.dev/v2
139
141
  ```
140
142
 
141
143
  > ⚙️ 一般无需修改,除非你使用的是自托管版本或代理服务。
@@ -3,9 +3,42 @@ Feature: Discover Smoke Tests
3
3
  Critical path tests to ensure the discover module is functional
4
4
 
5
5
  @DISCOVER-SMOKE-001 @P0
6
- Scenario: Load discover assistant list page
6
+ Scenario: Load Discover Home Page
7
+ Given I navigate to "/discover"
8
+ Then the page should load without errors
9
+ And I should see the page body
10
+ And I should see the featured assistants section
11
+ And I should see the featured MCP tools section
12
+
13
+ @DISCOVER-SMOKE-002 @P0
14
+ Scenario: Load Assistant List Page
7
15
  Given I navigate to "/discover/assistant"
8
16
  Then the page should load without errors
9
17
  And I should see the page body
10
18
  And I should see the search bar
19
+ And I should see the category menu
11
20
  And I should see assistant cards
21
+ And I should see pagination controls
22
+
23
+ @DISCOVER-SMOKE-003 @P0
24
+ Scenario: Load Model List Page
25
+ Given I navigate to "/discover/model"
26
+ Then the page should load without errors
27
+ And I should see the page body
28
+ And I should see model cards
29
+ And I should see the sort dropdown
30
+
31
+ @DISCOVER-SMOKE-004 @P0
32
+ Scenario: Load Provider List Page
33
+ Given I navigate to "/discover/provider"
34
+ Then the page should load without errors
35
+ And I should see the page body
36
+ And I should see provider cards
37
+
38
+ @DISCOVER-SMOKE-005 @P0
39
+ Scenario: Load MCP List Page
40
+ Given I navigate to "/discover/mcp"
41
+ Then the page should load without errors
42
+ And I should see the page body
43
+ And I should see MCP cards
44
+ And I should see the category filter