@lobehub/chat 1.114.2 → 1.114.4

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 (331) hide show
  1. package/.github/scripts/docker-pr-comment.js +89 -0
  2. package/.github/workflows/desktop-pr-build.yml +8 -0
  3. package/.github/workflows/docker-database.yml +21 -0
  4. package/.github/workflows/release-desktop-beta.yml +8 -0
  5. package/.github/workflows/release.yml +7 -5
  6. package/.github/workflows/test.yml +9 -7
  7. package/CHANGELOG.md +42 -0
  8. package/Dockerfile.database +1 -1
  9. package/apps/desktop/electron-builder.js +1 -1
  10. package/changelog/v1.json +14 -0
  11. package/codecov.yml +30 -2
  12. package/docs/development/basic/image-generation-setup.mdx +190 -0
  13. package/docs/development/basic/image-generation-setup.zh-CN.mdx +190 -0
  14. package/docs/development/database-schema.dbml +14 -0
  15. package/drizzle.config.ts +2 -2
  16. package/package.json +5 -5
  17. package/packages/const/src/index.ts +2 -0
  18. package/{src/utils → packages/const/src/settings}/genUserLLMConfig.test.ts +1 -1
  19. package/{src/utils → packages/const/src/settings}/genUserLLMConfig.ts +1 -1
  20. package/packages/const/src/settings/index.ts +0 -2
  21. package/packages/const/src/settings/llm.ts +1 -1
  22. package/{src → packages}/database/migrations/0028_oauth_handoffs.sql +1 -1
  23. package/{src → packages}/database/migrations/0029_add_apikey_manage.sql +1 -1
  24. package/packages/database/package.json +24 -0
  25. package/{src/database → packages/database/src}/client/db.ts +2 -2
  26. package/{src/database → packages/database/src}/core/db-adaptor.ts +3 -3
  27. package/{src/database → packages/database/src}/core/dbForTest.ts +1 -1
  28. package/{src/database → packages/database/src}/core/electron.ts +3 -3
  29. package/{src/database/client → packages/database/src/core}/migrations.json +12 -2
  30. package/{src/database → packages/database/src}/core/web-server.ts +2 -3
  31. package/{src/database → packages/database/src}/models/__tests__/_test_template.ts +1 -2
  32. package/{src/database → packages/database/src}/models/__tests__/_util.ts +3 -3
  33. package/{src/database → packages/database/src}/models/__tests__/agent.test.ts +1 -2
  34. package/{src/database → packages/database/src}/models/__tests__/aiModel.test.ts +1 -1
  35. package/{src/database → packages/database/src}/models/__tests__/aiProvider.test.ts +1 -1
  36. package/{src/database → packages/database/src}/models/__tests__/asyncTask.test.ts +1 -1
  37. package/{src/database → packages/database/src}/models/__tests__/chunk.test.ts +1 -2
  38. package/{src/database → packages/database/src}/models/__tests__/file.test.ts +1 -1
  39. package/{src/database → packages/database/src}/models/__tests__/generation.test.ts +1 -2
  40. package/{src/database → packages/database/src}/models/__tests__/generationBatch.test.ts +1 -2
  41. package/{src/database → packages/database/src}/models/__tests__/generationTopic.test.ts +1 -2
  42. package/{src/database → packages/database/src}/models/__tests__/knowledgeBase.test.ts +1 -2
  43. package/{src/database → packages/database/src}/models/__tests__/message.test.ts +2 -2
  44. package/{src/database → packages/database/src}/models/__tests__/plugin.test.ts +1 -2
  45. package/{src/database → packages/database/src}/models/__tests__/session.test.ts +2 -2
  46. package/{src/database → packages/database/src}/models/__tests__/sessionGroup.test.ts +1 -2
  47. package/{src/database → packages/database/src}/models/__tests__/topic.test.ts +1 -2
  48. package/{src/database → packages/database/src}/models/_template.ts +1 -2
  49. package/{src/database → packages/database/src}/models/agent.ts +2 -2
  50. package/{src/database → packages/database/src}/models/aiModel.ts +1 -1
  51. package/{src/database → packages/database/src}/models/aiProvider.ts +1 -1
  52. package/{src/database → packages/database/src}/models/apiKey.ts +1 -1
  53. package/{src/database → packages/database/src}/models/asyncTask.ts +1 -1
  54. package/{src/database → packages/database/src}/models/chunk.ts +1 -1
  55. package/{src/database → packages/database/src}/models/document.ts +1 -1
  56. package/{src/database → packages/database/src}/models/drizzleMigration.ts +1 -1
  57. package/{src/database → packages/database/src}/models/embedding.ts +1 -1
  58. package/{src/database → packages/database/src}/models/file.ts +1 -1
  59. package/{src/database → packages/database/src}/models/generation.ts +1 -1
  60. package/{src/database → packages/database/src}/models/generationBatch.ts +1 -1
  61. package/{src/database → packages/database/src}/models/generationTopic.ts +1 -1
  62. package/{src/database → packages/database/src}/models/knowledgeBase.ts +1 -1
  63. package/{src/database → packages/database/src}/models/message.ts +3 -3
  64. package/{src/database → packages/database/src}/models/oauthHandoff.ts +1 -1
  65. package/{src/database → packages/database/src}/models/plugin.ts +1 -1
  66. package/{src/database → packages/database/src}/models/session.ts +3 -3
  67. package/{src/database → packages/database/src}/models/sessionGroup.ts +2 -2
  68. package/{src/database → packages/database/src}/models/thread.ts +1 -1
  69. package/{src/database → packages/database/src}/models/topic.ts +3 -3
  70. package/{src/database → packages/database/src}/models/user.ts +1 -1
  71. package/{src/database → packages/database/src}/repositories/aiInfra/index.ts +4 -3
  72. package/{src/database → packages/database/src}/repositories/dataExporter/index.ts +2 -2
  73. package/{src/database → packages/database/src}/repositories/dataImporter/__tests__/index.test.ts +2 -2
  74. package/{src/database → packages/database/src}/repositories/dataImporter/deprecated/index.ts +6 -5
  75. package/{src/database → packages/database/src}/repositories/dataImporter/index.ts +2 -2
  76. package/{src/database → packages/database/src}/repositories/tableViewer/index.test.ts +1 -1
  77. package/{src/database → packages/database/src}/repositories/tableViewer/index.ts +2 -1
  78. package/{src/database → packages/database/src}/schemas/agent.ts +1 -1
  79. package/{src/database → packages/database/src}/schemas/aiInfra.ts +3 -2
  80. package/{src/database → packages/database/src}/schemas/document.ts +2 -2
  81. package/{src/database → packages/database/src}/schemas/file.ts +1 -1
  82. package/{src/database → packages/database/src}/schemas/generation.ts +1 -1
  83. package/{src/database → packages/database/src}/schemas/message.ts +1 -1
  84. package/{src/database → packages/database/src}/schemas/ragEvals.ts +1 -1
  85. package/{src/database → packages/database/src}/schemas/relations.ts +1 -2
  86. package/{src/database → packages/database/src}/schemas/session.ts +1 -2
  87. package/{src/database → packages/database/src}/schemas/topic.ts +2 -2
  88. package/{src/database → packages/database/src}/server/models/__tests__/adapter.test.ts +5 -4
  89. package/{src/database → packages/database/src}/server/models/__tests__/nextauth.test.ts +4 -4
  90. package/{src/database → packages/database/src}/server/models/__tests__/user.test.ts +1 -2
  91. package/{src/database → packages/database/src}/server/models/ragEval/dataset.ts +3 -3
  92. package/{src/database → packages/database/src}/server/models/ragEval/datasetRecord.ts +3 -3
  93. package/{src/database → packages/database/src}/server/models/ragEval/evaluation.ts +3 -3
  94. package/{src/database → packages/database/src}/server/models/ragEval/evaluationRecord.ts +2 -2
  95. package/{src/database → packages/database/src}/utils/idGenerator.ts +4 -1
  96. package/{vitest.config.server.ts → packages/database/vitest.config.ts} +8 -7
  97. package/packages/model-runtime/package.json +1 -0
  98. package/packages/model-runtime/src/bfl/createImage.test.ts +4 -4
  99. package/packages/model-runtime/src/bfl/createImage.ts +1 -1
  100. package/packages/model-runtime/src/google/index.test.ts +1 -1
  101. package/packages/model-runtime/src/google/index.ts +1 -3
  102. package/packages/model-runtime/src/ollama/index.ts +3 -2
  103. package/packages/model-runtime/src/utils/anthropicHelpers.test.ts +2 -3
  104. package/packages/model-runtime/src/utils/anthropicHelpers.ts +1 -2
  105. package/packages/model-runtime/src/utils/openaiCompatibleFactory/index.ts +1 -1
  106. package/packages/model-runtime/src/utils/openaiHelpers.test.ts +2 -3
  107. package/packages/model-runtime/src/utils/openaiHelpers.ts +2 -2
  108. package/packages/model-runtime/src/utils/streams/bedrock/claude.ts +1 -2
  109. package/packages/model-runtime/src/utils/streams/bedrock/llama.test.ts +1 -2
  110. package/packages/model-runtime/src/utils/streams/bedrock/llama.ts +1 -2
  111. package/packages/model-runtime/src/utils/streams/google-ai.test.ts +1 -2
  112. package/packages/model-runtime/src/utils/streams/google-ai.ts +1 -1
  113. package/packages/model-runtime/src/utils/streams/ollama.test.ts +1 -2
  114. package/packages/model-runtime/src/utils/streams/ollama.ts +1 -1
  115. package/packages/model-runtime/src/utils/streams/protocol.ts +2 -2
  116. package/packages/model-runtime/src/utils/streams/vertex-ai.test.ts +1 -2
  117. package/packages/model-runtime/src/utils/streams/vertex-ai.ts +1 -1
  118. package/packages/model-runtime/vitest.config.ts +2 -0
  119. package/packages/types/src/index.ts +5 -0
  120. package/packages/utils/package.json +17 -0
  121. package/{src/utils → packages/utils/src}/client/cookie.test.ts +1 -3
  122. package/{src/utils → packages/utils/src}/client/cookie.ts +1 -1
  123. package/{src/utils → packages/utils/src}/client/parserPlaceholder.test.ts +2 -2
  124. package/{src/utils → packages/utils/src}/client/parserPlaceholder.ts +77 -73
  125. package/{src/utils → packages/utils/src}/client/topic.test.ts +1 -1
  126. package/{src/utils → packages/utils/src}/compressImage.test.ts +2 -0
  127. package/{src/utils → packages/utils/src}/fetch/__tests__/fetchSSE.test.ts +3 -4
  128. package/{src/utils → packages/utils/src}/fetch/fetchSSE.ts +1 -1
  129. package/{src/utils → packages/utils/src}/getFallbackModelProperty.test.ts +1 -1
  130. package/packages/utils/src/index.ts +5 -0
  131. package/{src/utils → packages/utils/src}/locale.ts +2 -1
  132. package/{src/utils → packages/utils/src}/merge.test.ts +1 -3
  133. package/{src/utils → packages/utils/src}/parseModels.ts +3 -2
  134. package/{src/utils → packages/utils/src}/platform.test.ts +1 -1
  135. package/{src/utils → packages/utils/src}/platform.ts +1 -1
  136. package/{src/utils → packages/utils/src}/sanitizeUTF8.test.ts +2 -0
  137. package/{src/utils → packages/utils/src}/server/__tests__/geo.test.ts +1 -1
  138. package/{src/utils → packages/utils/src}/server/xor.test.ts +1 -2
  139. package/{src/utils → packages/utils/src}/url.test.ts +1 -1
  140. package/packages/utils/tests/setup.ts +10 -0
  141. package/packages/utils/vitest.config.ts +16 -0
  142. package/scripts/dbmlWorkflow/index.ts +1 -1
  143. package/scripts/migrateClientDB/compile-migrations.ts +2 -2
  144. package/scripts/migrateServerDB/index.ts +2 -2
  145. package/scripts/setup-image-generation-dev.sh +81 -0
  146. package/src/app/[variants]/(main)/repos/[id]/evals/dataset/CreateDataset/CreateForm.tsx +1 -1
  147. package/src/app/[variants]/(main)/repos/[id]/evals/dataset/DatasetDetail/index.tsx +1 -1
  148. package/src/app/[variants]/(main)/repos/[id]/evals/dataset/DatasetList/Item.tsx +1 -2
  149. package/src/app/[variants]/(main)/repos/[id]/evals/dataset/DatasetList/index.tsx +1 -2
  150. package/src/app/[variants]/(main)/repos/[id]/evals/evaluation/CreateEvaluation/CreateForm.tsx +1 -1
  151. package/src/app/[variants]/(main)/repos/[id]/evals/evaluation/EvaluationList/index.tsx +1 -1
  152. package/src/features/AgentSetting/store/index.ts +1 -2
  153. package/src/server/routers/async/ragEval.ts +1 -1
  154. package/src/server/routers/lambda/ragEval.ts +9 -9
  155. package/src/services/config.ts +1 -1
  156. package/src/services/ragEval.ts +4 -3
  157. package/src/store/knowledgeBase/slices/ragEval/actions/dataset.ts +6 -6
  158. package/src/store/knowledgeBase/slices/ragEval/actions/evaluation.ts +1 -1
  159. package/src/store/serverConfig/store.ts +1 -1
  160. package/src/utils/client/switchLang.test.ts +2 -2
  161. package/src/utils/client/switchLang.ts +2 -3
  162. package/tests/setup.ts +0 -11
  163. package/tsconfig.json +2 -0
  164. package/vitest.config.ts +6 -2
  165. /package/{src → packages}/database/migrations/0000_init.sql +0 -0
  166. /package/{src → packages}/database/migrations/0001_add_client_id.sql +0 -0
  167. /package/{src → packages}/database/migrations/0002_amusing_puma.sql +0 -0
  168. /package/{src → packages}/database/migrations/0003_naive_echo.sql +0 -0
  169. /package/{src → packages}/database/migrations/0004_add_next_auth.sql +0 -0
  170. /package/{src → packages}/database/migrations/0005_pgvector.sql +0 -0
  171. /package/{src → packages}/database/migrations/0006_add_knowledge_base.sql +0 -0
  172. /package/{src → packages}/database/migrations/0007_fix_embedding_table.sql +0 -0
  173. /package/{src → packages}/database/migrations/0008_add_rag_evals.sql +0 -0
  174. /package/{src → packages}/database/migrations/0009_remove_unused_user_tables.sql +0 -0
  175. /package/{src → packages}/database/migrations/0010_add_accessed_at_and_clean_tables.sql +0 -0
  176. /package/{src → packages}/database/migrations/0011_add_topic_history_summary.sql +0 -0
  177. /package/{src → packages}/database/migrations/0012_add_thread.sql +0 -0
  178. /package/{src → packages}/database/migrations/0013_add_ai_infra.sql +0 -0
  179. /package/{src → packages}/database/migrations/0014_add_message_reasoning.sql +0 -0
  180. /package/{src → packages}/database/migrations/0015_add_message_search_metadata.sql +0 -0
  181. /package/{src → packages}/database/migrations/0016_add_message_index.sql +0 -0
  182. /package/{src → packages}/database/migrations/0017_add_user_id_to_tables.sql +0 -0
  183. /package/{src → packages}/database/migrations/0018_add_client_id_for_entities.sql +0 -0
  184. /package/{src → packages}/database/migrations/0019_add_hotkey_user_settings.sql +0 -0
  185. /package/{src → packages}/database/migrations/0020_add_oidc.sql +0 -0
  186. /package/{src → packages}/database/migrations/0021_add_agent_opening_settings.sql +0 -0
  187. /package/{src → packages}/database/migrations/0022_add_documents.sql +0 -0
  188. /package/{src → packages}/database/migrations/0023_remove_param_and_doubao.sql +0 -0
  189. /package/{src → packages}/database/migrations/0024_add_rbac_tables.sql +0 -0
  190. /package/{src → packages}/database/migrations/0025_add_provider_config.sql +0 -0
  191. /package/{src → packages}/database/migrations/0026_add_autovacuum_tuning.sql +0 -0
  192. /package/{src → packages}/database/migrations/0027_ai_image.sql +0 -0
  193. /package/{src → packages}/database/migrations/meta/0000_snapshot.json +0 -0
  194. /package/{src → packages}/database/migrations/meta/0001_snapshot.json +0 -0
  195. /package/{src → packages}/database/migrations/meta/0002_snapshot.json +0 -0
  196. /package/{src → packages}/database/migrations/meta/0003_snapshot.json +0 -0
  197. /package/{src → packages}/database/migrations/meta/0004_snapshot.json +0 -0
  198. /package/{src → packages}/database/migrations/meta/0005_snapshot.json +0 -0
  199. /package/{src → packages}/database/migrations/meta/0006_snapshot.json +0 -0
  200. /package/{src → packages}/database/migrations/meta/0007_snapshot.json +0 -0
  201. /package/{src → packages}/database/migrations/meta/0008_snapshot.json +0 -0
  202. /package/{src → packages}/database/migrations/meta/0009_snapshot.json +0 -0
  203. /package/{src → packages}/database/migrations/meta/0010_snapshot.json +0 -0
  204. /package/{src → packages}/database/migrations/meta/0011_snapshot.json +0 -0
  205. /package/{src → packages}/database/migrations/meta/0012_snapshot.json +0 -0
  206. /package/{src → packages}/database/migrations/meta/0013_snapshot.json +0 -0
  207. /package/{src → packages}/database/migrations/meta/0014_snapshot.json +0 -0
  208. /package/{src → packages}/database/migrations/meta/0015_snapshot.json +0 -0
  209. /package/{src → packages}/database/migrations/meta/0016_snapshot.json +0 -0
  210. /package/{src → packages}/database/migrations/meta/0017_snapshot.json +0 -0
  211. /package/{src → packages}/database/migrations/meta/0018_snapshot.json +0 -0
  212. /package/{src → packages}/database/migrations/meta/0019_snapshot.json +0 -0
  213. /package/{src → packages}/database/migrations/meta/0020_snapshot.json +0 -0
  214. /package/{src → packages}/database/migrations/meta/0021_snapshot.json +0 -0
  215. /package/{src → packages}/database/migrations/meta/0022_snapshot.json +0 -0
  216. /package/{src → packages}/database/migrations/meta/0023_snapshot.json +0 -0
  217. /package/{src → packages}/database/migrations/meta/0024_snapshot.json +0 -0
  218. /package/{src → packages}/database/migrations/meta/0025_snapshot.json +0 -0
  219. /package/{src → packages}/database/migrations/meta/0026_snapshot.json +0 -0
  220. /package/{src → packages}/database/migrations/meta/0027_snapshot.json +0 -0
  221. /package/{src → packages}/database/migrations/meta/0028_snapshot.json +0 -0
  222. /package/{src → packages}/database/migrations/meta/0029_snapshot.json +0 -0
  223. /package/{src → packages}/database/migrations/meta/_journal.json +0 -0
  224. /package/{src/database → packages/database/src}/client/db.test.ts +0 -0
  225. /package/{src/database → packages/database/src}/client/pglite.ts +0 -0
  226. /package/{src/database → packages/database/src}/client/pglite.worker.ts +0 -0
  227. /package/{src/database → packages/database/src}/client/type.ts +0 -0
  228. /package/{src/database → packages/database/src}/models/__tests__/fixtures/embedding.ts +0 -0
  229. /package/{src/database → packages/database/src}/repositories/aiInfra/index.test.ts +0 -0
  230. /package/{src/database → packages/database/src}/repositories/dataExporter/index.test.ts +0 -0
  231. /package/{src/database → packages/database/src}/repositories/dataImporter/__tests__/fixtures/agents.json +0 -0
  232. /package/{src/database → packages/database/src}/repositories/dataImporter/__tests__/fixtures/agentsToSessions.json +0 -0
  233. /package/{src/database → packages/database/src}/repositories/dataImporter/__tests__/fixtures/topic.json +0 -0
  234. /package/{src/database → packages/database/src}/repositories/dataImporter/__tests__/fixtures/userSettings.json +0 -0
  235. /package/{src/database → packages/database/src}/repositories/dataImporter/__tests__/fixtures/with-client-id.json +0 -0
  236. /package/{src/database → packages/database/src}/repositories/dataImporter/deprecated/__tests__/fixtures/messages.json +0 -0
  237. /package/{src/database → packages/database/src}/repositories/dataImporter/deprecated/__tests__/index.test.ts +0 -0
  238. /package/{src/database → packages/database/src}/schemas/_helpers.ts +0 -0
  239. /package/{src/database → packages/database/src}/schemas/apiKey.ts +0 -0
  240. /package/{src/database → packages/database/src}/schemas/asyncTask.ts +0 -0
  241. /package/{src/database → packages/database/src}/schemas/index.ts +0 -0
  242. /package/{src/database → packages/database/src}/schemas/nextauth.ts +0 -0
  243. /package/{src/database → packages/database/src}/schemas/oidc.ts +0 -0
  244. /package/{src/database → packages/database/src}/schemas/rag.ts +0 -0
  245. /package/{src/database → packages/database/src}/schemas/rbac.ts +0 -0
  246. /package/{src/database → packages/database/src}/schemas/user.ts +0 -0
  247. /package/{src/database → packages/database/src}/server/index.ts +0 -0
  248. /package/{src/database → packages/database/src}/server/models/ragEval/index.ts +0 -0
  249. /package/{src/database → packages/database/src}/type.ts +0 -0
  250. /package/{src/database → packages/database/src}/utils/genWhere.ts +0 -0
  251. /package/{src/database → packages/database/src}/utils/idGenerator.test.ts +0 -0
  252. /package/{tests → packages/database/tests}/setup-db.ts +0 -0
  253. /package/{src/utils → packages/types/src}/zustand.ts +0 -0
  254. /package/{src/utils → packages/utils/src}/__snapshots__/parseModels.test.ts.snap +0 -0
  255. /package/{src/utils → packages/utils/src}/_deprecated/__snapshots__/parseModels.test.ts.snap +0 -0
  256. /package/{src/utils → packages/utils/src}/_deprecated/parseModels.test.ts +0 -0
  257. /package/{src/utils → packages/utils/src}/_deprecated/parseModels.ts +0 -0
  258. /package/{src/utils → packages/utils/src}/apiKey.ts +0 -0
  259. /package/{src/utils → packages/utils/src}/basePath.ts +0 -0
  260. /package/{src/utils → packages/utils/src}/client/GlobalAgentContextManager.ts +0 -0
  261. /package/{src/utils → packages/utils/src}/client/downloadFile.ts +0 -0
  262. /package/{src/utils → packages/utils/src}/client/exportFile.ts +0 -0
  263. /package/{src/utils → packages/utils/src}/client/topic.ts +0 -0
  264. /package/{src/utils → packages/utils/src}/client/xor-obfuscation.test.ts +0 -0
  265. /package/{src/utils → packages/utils/src}/client/xor-obfuscation.ts +0 -0
  266. /package/{src/utils → packages/utils/src}/clientIP.test.ts +0 -0
  267. /package/{src/utils → packages/utils/src}/clientIP.ts +0 -0
  268. /package/{src/utils → packages/utils/src}/clipboard.ts +0 -0
  269. /package/{src/utils → packages/utils/src}/colorUtils.ts +0 -0
  270. /package/{src/utils → packages/utils/src}/compass.ts +0 -0
  271. /package/{src/utils → packages/utils/src}/compressImage.ts +0 -0
  272. /package/{src/utils → packages/utils/src}/difference.test.ts +0 -0
  273. /package/{src/utils → packages/utils/src}/difference.ts +0 -0
  274. /package/{src/utils → packages/utils/src}/electron/desktopRemoteRPCFetch.ts +0 -0
  275. /package/{src/utils → packages/utils/src}/env.ts +0 -0
  276. /package/{src/utils → packages/utils/src}/fetch/__tests__/parseError.test.ts +0 -0
  277. /package/{src/utils → packages/utils/src}/fetch/fetchEventSource/index.ts +0 -0
  278. /package/{src/utils → packages/utils/src}/fetch/fetchEventSource/parse.ts +0 -0
  279. /package/{src/utils → packages/utils/src}/fetch/headers.ts +0 -0
  280. /package/{src/utils → packages/utils/src}/fetch/index.ts +0 -0
  281. /package/{src/utils → packages/utils/src}/fetch/parseError.ts +0 -0
  282. /package/{src/utils → packages/utils/src}/fetch/request.ts +0 -0
  283. /package/{src/utils → packages/utils/src}/format.test.ts +0 -0
  284. /package/{src/utils → packages/utils/src}/format.ts +0 -0
  285. /package/{src/utils → packages/utils/src}/genOG.ts +0 -0
  286. /package/{src/utils → packages/utils/src}/getFallbackModelProperty.ts +0 -0
  287. /package/{src/utils → packages/utils/src}/imageToBase64.test.ts +0 -0
  288. /package/{src/utils → packages/utils/src}/imageToBase64.ts +0 -0
  289. /package/{src/utils → packages/utils/src}/isChunkingUnsupported.test.ts +0 -0
  290. /package/{src/utils → packages/utils/src}/isChunkingUnsupported.ts +0 -0
  291. /package/{src/utils → packages/utils/src}/keyboard.ts +0 -0
  292. /package/{src/utils → packages/utils/src}/localStorage.ts +0 -0
  293. /package/{src/utils → packages/utils/src}/locale.test.ts +0 -0
  294. /package/{src/utils → packages/utils/src}/merge.ts +0 -0
  295. /package/{src/utils → packages/utils/src}/number.test.ts +0 -0
  296. /package/{src/utils → packages/utils/src}/number.ts +0 -0
  297. /package/{src/utils → packages/utils/src}/object.ts +0 -0
  298. /package/{src/utils → packages/utils/src}/parseMarkdown.ts +0 -0
  299. /package/{src/utils → packages/utils/src}/parseModels.test.ts +0 -0
  300. /package/{src/utils → packages/utils/src}/pricing.test.ts +0 -0
  301. /package/{src/utils → packages/utils/src}/pricing.ts +0 -0
  302. /package/{src/utils → packages/utils/src}/promptTemplate.test.ts +0 -0
  303. /package/{src/utils → packages/utils/src}/promptTemplate.ts +0 -0
  304. /package/{src/utils → packages/utils/src}/safeParseJSON.test.ts +0 -0
  305. /package/{src/utils → packages/utils/src}/safeParseJSON.ts +0 -0
  306. /package/{src/utils → packages/utils/src}/sanitizeUTF8.ts +0 -0
  307. /package/{src/utils → packages/utils/src}/server/__tests__/auth.test.ts +0 -0
  308. /package/{src/utils → packages/utils/src}/server/auth.ts +0 -0
  309. /package/{src/utils → packages/utils/src}/server/correctOIDCUrl.ts +0 -0
  310. /package/{src/utils → packages/utils/src}/server/geo.ts +0 -0
  311. /package/{src/utils → packages/utils/src}/server/pageProps.ts +0 -0
  312. /package/{src/utils → packages/utils/src}/server/responsive.ts +0 -0
  313. /package/{src/utils → packages/utils/src}/server/routeVariants.ts +0 -0
  314. /package/{src/utils → packages/utils/src}/server/xor.ts +0 -0
  315. /package/{src/utils → packages/utils/src}/sleep.ts +0 -0
  316. /package/{src/utils → packages/utils/src}/storeDebug.test.ts +0 -0
  317. /package/{src/utils → packages/utils/src}/storeDebug.ts +0 -0
  318. /package/{src/utils → packages/utils/src}/time.test.ts +0 -0
  319. /package/{src/utils → packages/utils/src}/time.ts +0 -0
  320. /package/{src/utils → packages/utils/src}/tokenizer/client.ts +0 -0
  321. /package/{src/utils → packages/utils/src}/tokenizer/estimated.ts +0 -0
  322. /package/{src/utils → packages/utils/src}/tokenizer/index.ts +0 -0
  323. /package/{src/utils → packages/utils/src}/tokenizer/server.ts +0 -0
  324. /package/{src/utils → packages/utils/src}/tokenizer/tokenizer.worker.ts +0 -0
  325. /package/{src/utils → packages/utils/src}/toolCall.ts +0 -0
  326. /package/{src/utils → packages/utils/src}/toolManifest.ts +0 -0
  327. /package/{src/utils → packages/utils/src}/trace.ts +0 -0
  328. /package/{src/utils → packages/utils/src}/units.ts +0 -0
  329. /package/{src/utils → packages/utils/src}/uploadFIle.ts +0 -0
  330. /package/{src/utils → packages/utils/src}/url.ts +0 -0
  331. /package/{src/utils → packages/utils/src}/uuid.ts +0 -0
@@ -0,0 +1,190 @@
1
+ ---
2
+ title: 图像生成开发环境配置
3
+ description: 配置本地环境以开发文本生图和图像处理功能
4
+ ---
5
+
6
+ # 图像生成开发环境配置
7
+
8
+ 本指南帮助开发者配置本地环境,用于开发图像生成功能(文生图、图生图)等和文件存储能力。
9
+
10
+ ## 前置条件
11
+
12
+ - 已安装并运行 Docker
13
+ - 已安装 Node.js 和 pnpm
14
+ - PostgreSQL 客户端工具(可选,用于调试)
15
+
16
+ <Callout type="warning">
17
+ **安全提醒**:此配置仅适用于本地开发。使用的默认凭据和开放权限不适合生产环境。
18
+ </Callout>
19
+
20
+ ## 快速配置
21
+
22
+ 运行提供的脚本来自动配置所有必需的服务:
23
+
24
+ ```bash
25
+ # 配置 PostgreSQL 和 MinIO 用于图像存储
26
+ ./scripts/setup-image-generation-dev.sh
27
+
28
+ # 启动开发服务器
29
+ pnpm dev:desktop
30
+ ```
31
+
32
+ 此脚本将执行:
33
+
34
+ 1. 启动 PostgreSQL(本地开发无需身份验证)
35
+ 2. 运行数据库迁移以初始化模式
36
+ 3. 启动 MinIO(S3 兼容存储)
37
+ 4. 创建并配置存储桶
38
+ 5. 在 `.env.desktop` 中添加必要的 S3 环境变量
39
+
40
+ ## 架构概览
41
+
42
+ 图像生成功能需要:
43
+
44
+ - **PostgreSQL**:存储生成图像的元数据
45
+ - **MinIO/S3**:存储实际的图像文件
46
+ - **服务器模式**:文件处理所需(`NEXT_PUBLIC_SERVICE_MODE=server`)
47
+
48
+ ## 环境配置
49
+
50
+ 以下环境变量会被配置脚本自动设置:
51
+
52
+ ```bash
53
+ # S3 存储配置(本地开发使用 MinIO)
54
+ S3_ACCESS_KEY_ID=minioadmin
55
+ S3_SECRET_ACCESS_KEY=minioadmin
56
+ S3_ENDPOINT=http://localhost:9000
57
+ S3_BUCKET=lobe-chat
58
+ S3_REGION=us-east-1
59
+ S3_PUBLIC_DOMAIN=http://localhost:9000/lobe-chat
60
+ S3_ENABLE_PATH_STYLE=1 # MinIO 必需
61
+ ```
62
+
63
+ ## 开发工作流
64
+
65
+ ### 1. 图像生成 API
66
+
67
+ 在开发图像生成功能时,生成的图像将:
68
+
69
+ 1. 由 AI 模型创建
70
+ 2. 通过预签名 URL 上传到 S3/MinIO
71
+ 3. 元数据存储在 PostgreSQL 中
72
+ 4. 通过公共 S3 URL 提供服务
73
+
74
+ ### 2. 文件存储结构
75
+
76
+ ```
77
+ lobe-chat/ # S3 存储桶
78
+ ├── generated/ # 生成的图像
79
+ │ └── {userId}/
80
+ │ └── {sessionId}/
81
+ │ └── {imageId}.png
82
+ └── uploads/ # 用户上传的图像处理文件
83
+ └── {userId}/
84
+ └── {fileId}.{ext}
85
+ ```
86
+
87
+ ### 3. 测试您的实现
88
+
89
+ 配置环境后,您可以测试:
90
+
91
+ ```typescript
92
+ // 示例:上传生成的图像
93
+ const uploadUrl = await trpc.upload.createPresignedUrl.mutate({
94
+ filename: 'generated-image.png',
95
+ contentType: 'image/png',
96
+ });
97
+
98
+ // 上传到 S3
99
+ await fetch(uploadUrl, {
100
+ method: 'PUT',
101
+ body: imageBlob,
102
+ headers: { 'Content-Type': 'image/png' },
103
+ });
104
+ ```
105
+
106
+ ## 手动配置
107
+
108
+ 如果您希望手动配置服务:
109
+
110
+ ### PostgreSQL
111
+
112
+ ```bash
113
+ docker run -d --name lobe-postgres \
114
+ -p 5432:5432 \
115
+ -e POSTGRES_HOST_AUTH_METHOD=trust \
116
+ -e POSTGRES_DB=postgres \
117
+ postgres:15
118
+ ```
119
+
120
+ ### MinIO
121
+
122
+ ```bash
123
+ # 启动 MinIO
124
+ docker run -d --name lobe-minio \
125
+ -p 9000:9000 -p 9001:9001 \
126
+ -e MINIO_ROOT_USER=minioadmin \
127
+ -e MINIO_ROOT_PASSWORD=minioadmin \
128
+ quay.io/minio/minio:RELEASE.2025-04-22T22-12-26Z \
129
+ server /data --console-address ":9001"
130
+
131
+ # 创建存储桶
132
+ docker run --rm \
133
+ --link lobe-minio:minio \
134
+ --entrypoint bash \
135
+ quay.io/minio/mc:RELEASE.2025-04-18T16-45-00Z \
136
+ -c "
137
+ mc config host add minio http://minio:9000 minioadmin minioadmin &&
138
+ mc mb minio/lobe-chat &&
139
+ mc anonymous set public minio/lobe-chat
140
+ "
141
+ ```
142
+
143
+ ## 服务地址
144
+
145
+ - **PostgreSQL**:`postgres://postgres@localhost:5432/postgres`
146
+ - **MinIO API**:`http://localhost:9000`
147
+ - **MinIO 控制台**:`http://localhost:9001` (minioadmin/minioadmin)
148
+ - **应用程序**:`http://localhost:3015`
149
+
150
+ ## 故障排除
151
+
152
+ ### 端口冲突
153
+
154
+ 如果端口已被占用:
155
+
156
+ ```bash
157
+ # 检查端口使用情况
158
+ lsof -i :5432 # PostgreSQL
159
+ lsof -i :9000 # MinIO API
160
+ lsof -i :9001 # MinIO 控制台
161
+ ```
162
+
163
+ ### 重置环境
164
+
165
+ 要完全重置开发环境:
166
+
167
+ ```bash
168
+ # 停止并删除容器
169
+ docker stop lobe-postgres lobe-minio
170
+ docker rm lobe-postgres lobe-minio
171
+
172
+ # 重新运行配置
173
+ ./scripts/setup-image-generation-dev.sh
174
+ ```
175
+
176
+ ### 数据库迁移
177
+
178
+ 配置脚本会自动运行迁移。如需手动运行:
179
+
180
+ ```bash
181
+ pnpm db:migrate
182
+ ```
183
+
184
+ 注意:在使用 `pnpm dev:desktop` 的开发模式下,迁移也会在启动时自动运行。
185
+
186
+ ## 相关文档
187
+
188
+ - [服务器数据库配置](/docs/self-hosting/server-database)
189
+ - [S3 存储配置](/docs/self-hosting/advanced/s3)
190
+ - [环境变量](/docs/self-hosting/environment-variables)
@@ -104,6 +104,19 @@ table ai_providers {
104
104
  }
105
105
  }
106
106
 
107
+ table api_keys {
108
+ id integer [pk, not null]
109
+ name varchar(256) [not null]
110
+ key varchar(256) [not null, unique]
111
+ enabled boolean [default: true]
112
+ expires_at "timestamp with time zone"
113
+ last_used_at "timestamp with time zone"
114
+ user_id text [not null]
115
+ accessed_at "timestamp with time zone" [not null, default: `now()`]
116
+ created_at "timestamp with time zone" [not null, default: `now()`]
117
+ updated_at "timestamp with time zone" [not null, default: `now()`]
118
+ }
119
+
107
120
  table async_tasks {
108
121
  id uuid [pk, not null, default: `gen_random_uuid()`]
109
122
  type text
@@ -702,6 +715,7 @@ table rbac_roles {
702
715
  description text
703
716
  is_system boolean [not null, default: false]
704
717
  is_active boolean [not null, default: true]
718
+ metadata jsonb [default: `{}`]
705
719
  accessed_at "timestamp with time zone" [not null, default: `now()`]
706
720
  created_at "timestamp with time zone" [not null, default: `now()`]
707
721
  updated_at "timestamp with time zone" [not null, default: `now()`]
package/drizzle.config.ts CHANGED
@@ -22,8 +22,8 @@ export default {
22
22
  url: connectionString,
23
23
  },
24
24
  dialect: 'postgresql',
25
- out: './src/database/migrations',
25
+ out: './packages/database/migrations',
26
26
 
27
- schema: './src/database/schemas',
27
+ schema: './packages/database/src/schemas',
28
28
  strict: true,
29
29
  } satisfies Config;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lobehub/chat",
3
- "version": "1.114.2",
3
+ "version": "1.114.4",
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",
@@ -73,8 +73,6 @@
73
73
  "test": "npm run test-app && npm run test-server",
74
74
  "test-app": "vitest run --config vitest.config.ts",
75
75
  "test-app:coverage": "vitest run --config vitest.config.ts --coverage",
76
- "test-server": "vitest run --config vitest.config.server.ts",
77
- "test-server:coverage": "vitest run --config vitest.config.server.ts --coverage",
78
76
  "test:update": "vitest -u",
79
77
  "type-check": "tsgo --noEmit",
80
78
  "webhook:ngrok": "ngrok http http://localhost:3011",
@@ -141,11 +139,14 @@
141
139
  "@icons-pack/react-simple-icons": "9.6.0",
142
140
  "@khmyznikov/pwa-install": "0.3.9",
143
141
  "@langchain/community": "^0.3.50",
142
+ "@lobechat/const": "workspace:*",
143
+ "@lobechat/database": "workspace:*",
144
144
  "@lobechat/electron-client-ipc": "workspace:*",
145
145
  "@lobechat/electron-server-ipc": "workspace:*",
146
146
  "@lobechat/file-loaders": "workspace:*",
147
147
  "@lobechat/model-runtime": "workspace:*",
148
148
  "@lobechat/prompts": "workspace:*",
149
+ "@lobechat/utils": "workspace:*",
149
150
  "@lobechat/web-crawler": "workspace:*",
150
151
  "@lobehub/analytics": "^1.6.0",
151
152
  "@lobehub/charts": "^2.0.0",
@@ -361,8 +362,7 @@
361
362
  "unified": "^11.0.5",
362
363
  "unist-util-visit": "^5.0.0",
363
364
  "vite": "^5.4.19",
364
- "vitest": "^3.2.4",
365
- "vitest-canvas-mock": "^0.3.3"
365
+ "vitest": "^3.2.4"
366
366
  },
367
367
  "packageManager": "pnpm@10.14.0",
368
368
  "publishConfig": {
@@ -1,2 +1,4 @@
1
+ export * from './locale';
2
+ export * from './message';
1
3
  export * from './settings';
2
4
  export * from './version';
@@ -1,6 +1,6 @@
1
1
  import { describe, expect, it, vi } from 'vitest';
2
2
 
3
- import { ModelProviderCard } from '@/types/llm';
3
+ import { ModelProviderCard } from '@/types/index';
4
4
 
5
5
  import { genUserLLMConfig } from './genUserLLMConfig';
6
6
 
@@ -1,8 +1,8 @@
1
1
  import { ModelProvider } from '@lobechat/model-runtime';
2
+ import { UserModelProviderConfig } from '@lobechat/types';
2
3
 
3
4
  import * as ProviderCards from '@/config/modelProviders';
4
5
  import { ModelProviderCard } from '@/types/llm';
5
- import { UserModelProviderConfig } from '@/types/user/settings';
6
6
 
7
7
  export const genUserLLMConfig = (specificConfig: Record<any, any>): UserModelProviderConfig => {
8
8
  return Object.keys(ModelProvider).reduce((config, providerKey) => {
@@ -9,8 +9,6 @@ import { DEFAULT_SYSTEM_AGENT_CONFIG } from './systemAgent';
9
9
  import { DEFAULT_TOOL_CONFIG } from './tool';
10
10
  import { DEFAULT_TTS_CONFIG } from './tts';
11
11
 
12
- export const COOKIE_CACHE_DAYS = 30;
13
-
14
12
  export * from './agent';
15
13
  export * from './hotkey';
16
14
  export * from './llm';
@@ -1,6 +1,6 @@
1
1
  import { ModelProvider } from '@lobechat/model-runtime';
2
2
 
3
- import { genUserLLMConfig } from '@/utils/genUserLLMConfig';
3
+ import { genUserLLMConfig } from './genUserLLMConfig';
4
4
 
5
5
  export const DEFAULT_LLM_CONFIG = genUserLLMConfig({
6
6
  lmstudio: {
@@ -1,4 +1,4 @@
1
- CREATE TABLE "oauth_handoffs" (
1
+ CREATE TABLE IF NOT EXISTS "oauth_handoffs" (
2
2
  "id" text PRIMARY KEY NOT NULL,
3
3
  "client" varchar(50) NOT NULL,
4
4
  "payload" jsonb NOT NULL,
@@ -12,5 +12,5 @@ CREATE TABLE IF NOT EXISTS "api_keys" (
12
12
  CONSTRAINT "api_keys_key_unique" UNIQUE("key")
13
13
  );
14
14
  --> statement-breakpoint
15
- ALTER TABLE "rbac_roles" ADD COLUMN "metadata" jsonb DEFAULT '{}'::jsonb;--> statement-breakpoint
15
+ ALTER TABLE "rbac_roles" ADD COLUMN IF NOT EXISTS "metadata" jsonb DEFAULT '{}'::jsonb;--> statement-breakpoint
16
16
  ALTER TABLE "api_keys" ADD CONSTRAINT "api_keys_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "@lobechat/database",
3
+ "version": "1.0.0",
4
+ "private": true,
5
+ "main": "src/index.ts",
6
+ "types": "src/index.ts",
7
+ "scripts": {
8
+ "test": "vitest",
9
+ "test:coverage": "vitest --coverage"
10
+ },
11
+ "dependencies": {
12
+ "@electric-sql/pglite": "^0.2.17",
13
+ "@lobechat/const": "workspace:*",
14
+ "@lobechat/types": "workspace:*",
15
+ "@lobechat/utils": "workspace:*",
16
+ "dayjs": "^1.11.13",
17
+ "drizzle-orm": "^0.44.4",
18
+ "nanoid": "^5.1.5",
19
+ "pg": "^8.16.3",
20
+ "random-words": "^2.0.1",
21
+ "ts-md5": "^2.0.1",
22
+ "ws": "^8.18.3"
23
+ }
24
+ }
@@ -2,7 +2,6 @@ import { sql } from 'drizzle-orm';
2
2
  import { PgliteDatabase, drizzle } from 'drizzle-orm/pglite';
3
3
  import { Md5 } from 'ts-md5';
4
4
 
5
- import { DrizzleMigrationModel } from '@/database/models/drizzleMigration';
6
5
  import {
7
6
  ClientDBLoadingProgress,
8
7
  DatabaseLoadingState,
@@ -11,8 +10,9 @@ import {
11
10
  } from '@/types/clientDB';
12
11
  import { sleep } from '@/utils/sleep';
13
12
 
13
+ import migrations from '../core/migrations.json';
14
+ import { DrizzleMigrationModel } from '../models/drizzleMigration';
14
15
  import * as schema from '../schemas';
15
- import migrations from './migrations.json';
16
16
 
17
17
  const pgliteSchemaHashCache = 'LOBE_CHAT_PGLITE_SCHEMA_HASH';
18
18
 
@@ -1,8 +1,8 @@
1
- import { isDesktop } from '@/const/version';
2
- import { getDBInstance } from '@/database/core/web-server';
3
- import { LobeChatDatabase } from '@/database/type';
1
+ import { isDesktop } from '@lobechat/const';
4
2
 
3
+ import { LobeChatDatabase } from '../type';
5
4
  import { getPgliteInstance } from './electron';
5
+ import { getDBInstance } from './web-server';
6
6
 
7
7
  /**
8
8
  * 懒加载数据库实例
@@ -11,7 +11,7 @@ import { serverDBEnv } from '@/config/db';
11
11
 
12
12
  import * as schema from '../schemas';
13
13
 
14
- const migrationsFolder = join(__dirname, '../migrations');
14
+ const migrationsFolder = join(__dirname, '../../migrations');
15
15
 
16
16
  export const getTestDBInstance = async () => {
17
17
  let connectionString = serverDBEnv.DATABASE_TEST_URL;
@@ -4,13 +4,13 @@ import { drizzle as pgliteDrizzle } from 'drizzle-orm/pglite';
4
4
  import fs from 'node:fs';
5
5
  import { Md5 } from 'ts-md5';
6
6
 
7
- import { DrizzleMigrationModel } from '@/database/models/drizzleMigration';
8
- import * as schema from '@/database/schemas';
9
7
  import { electronIpcClient } from '@/server/modules/ElectronIPCClient';
10
8
  import { MigrationTableItem } from '@/types/clientDB';
11
9
 
12
- import migrations from '../client/migrations.json';
10
+ import { DrizzleMigrationModel } from '../models/drizzleMigration';
11
+ import * as schema from '../schemas';
13
12
  import { LobeChatDatabase } from '../type';
13
+ import migrations from './migrations.json';
14
14
 
15
15
  // 用于实例管理的全局对象
16
16
  interface LobeGlobal {
@@ -544,10 +544,20 @@
544
544
  },
545
545
  {
546
546
  "sql": [
547
- "CREATE TABLE \"oauth_handoffs\" (\n\t\"id\" text PRIMARY KEY NOT NULL,\n\t\"client\" varchar(50) NOT NULL,\n\t\"payload\" jsonb NOT NULL,\n\t\"accessed_at\" timestamp with time zone DEFAULT now() NOT NULL,\n\t\"created_at\" timestamp with time zone DEFAULT now() NOT NULL,\n\t\"updated_at\" timestamp with time zone DEFAULT now() NOT NULL\n);\n"
547
+ "CREATE TABLE IF NOT EXISTS \"oauth_handoffs\" (\n\t\"id\" text PRIMARY KEY NOT NULL,\n\t\"client\" varchar(50) NOT NULL,\n\t\"payload\" jsonb NOT NULL,\n\t\"accessed_at\" timestamp with time zone DEFAULT now() NOT NULL,\n\t\"created_at\" timestamp with time zone DEFAULT now() NOT NULL,\n\t\"updated_at\" timestamp with time zone DEFAULT now() NOT NULL\n);\n"
548
548
  ],
549
549
  "bps": true,
550
550
  "folderMillis": 1752567402506,
551
- "hash": "8ba3ae52ed72e8aad1623dbcf47ca26a8406ebffc6d5284abff94ea994b59c04"
551
+ "hash": "83c410b18ef5c8667b4bdfd7880ef7db4c3278d826e6e87e9d3e05dde67fe8e1"
552
+ },
553
+ {
554
+ "sql": [
555
+ "CREATE TABLE IF NOT EXISTS \"api_keys\" (\n\t\"id\" integer PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (sequence name \"api_keys_id_seq\" INCREMENT BY 1 MINVALUE 1 MAXVALUE 2147483647 START WITH 1 CACHE 1),\n\t\"name\" varchar(256) NOT NULL,\n\t\"key\" varchar(256) NOT NULL,\n\t\"enabled\" boolean DEFAULT true,\n\t\"expires_at\" timestamp with time zone,\n\t\"last_used_at\" timestamp with time zone,\n\t\"user_id\" text NOT NULL,\n\t\"accessed_at\" timestamp with time zone DEFAULT now() NOT NULL,\n\t\"created_at\" timestamp with time zone DEFAULT now() NOT NULL,\n\t\"updated_at\" timestamp with time zone DEFAULT now() NOT NULL,\n\tCONSTRAINT \"api_keys_key_unique\" UNIQUE(\"key\")\n);\n",
556
+ "\nALTER TABLE \"rbac_roles\" ADD COLUMN IF NOT EXISTS \"metadata\" jsonb DEFAULT '{}'::jsonb;",
557
+ "\nALTER TABLE \"api_keys\" ADD CONSTRAINT \"api_keys_user_id_users_id_fk\" FOREIGN KEY (\"user_id\") REFERENCES \"public\".\"users\"(\"id\") ON DELETE cascade ON UPDATE no action;\n"
558
+ ],
559
+ "bps": true,
560
+ "folderMillis": 1753201379817,
561
+ "hash": "fe5c0d7c2768189771c42ef93693fc1d58586b468c4bdde7fb6f2dc58cc9931c"
552
562
  }
553
563
  ]
@@ -5,13 +5,12 @@ import { Pool as NodePool } from 'pg';
5
5
  import ws from 'ws';
6
6
 
7
7
  import { serverDBEnv } from '@/config/db';
8
- import { isServerMode } from '@/const/version';
9
- import * as schema from '@/database/schemas';
10
8
 
9
+ import * as schema from '../schemas';
11
10
  import { LobeChatDatabase } from '../type';
12
11
 
13
12
  export const getDBInstance = (): LobeChatDatabase => {
14
- if (!isServerMode) return {} as any;
13
+ if (!(process.env.NEXT_PUBLIC_SERVICE_MODE === 'server')) return {} as any;
15
14
 
16
15
  if (!serverDBEnv.KEY_VAULTS_SECRET) {
17
16
  throw new Error(
@@ -2,9 +2,8 @@
2
2
  import { eq } from 'drizzle-orm';
3
3
  import { afterEach, beforeEach, describe, expect, it } from 'vitest';
4
4
 
5
- import { LobeChatDatabase } from '@/database/type';
6
-
7
5
  import { sessionGroups, users } from '../../schemas';
6
+ import { LobeChatDatabase } from '../../type';
8
7
  import { SessionGroupModel } from '../sessionGroup';
9
8
  import { getTestDB } from './_util';
10
9
 
@@ -1,11 +1,11 @@
1
- import { clientDB, initializeDB } from '@/database/client/db';
2
- import { LobeChatDatabase } from '@/database/type';
1
+ import { clientDB, initializeDB } from '../../client/db';
2
+ import { LobeChatDatabase } from '../../type';
3
3
 
4
4
  const isServerDBMode = process.env.TEST_SERVER_DB === '1';
5
5
 
6
6
  export const getTestDB = async () => {
7
7
  if (isServerDBMode) {
8
- const { getTestDBInstance } = await import('@/database/core/dbForTest');
8
+ const { getTestDBInstance } = await import('../../core/dbForTest');
9
9
  return await getTestDBInstance();
10
10
  }
11
11
 
@@ -2,8 +2,7 @@
2
2
  import { eq } from 'drizzle-orm';
3
3
  import { afterEach, beforeEach, describe, expect, it } from 'vitest';
4
4
 
5
- import { LobeChatDatabase } from '@/database/type';
6
-
5
+ import { LobeChatDatabase } from '../../type';
7
6
  import {
8
7
  agents,
9
8
  agentsFiles,
@@ -2,10 +2,10 @@
2
2
  import { eq } from 'drizzle-orm';
3
3
  import { afterEach, beforeEach, describe, expect, it } from 'vitest';
4
4
 
5
- import { LobeChatDatabase } from '@/database/type';
6
5
  import { AiProviderModelListItem } from '@/types/aiModel';
7
6
 
8
7
  import { AiModelSelectItem, NewAiModelItem, aiModels, users } from '../../schemas';
8
+ import { LobeChatDatabase } from '../../type';
9
9
  import { AiModelModel } from '../aiModel';
10
10
  import { getTestDB } from './_util';
11
11
 
@@ -3,10 +3,10 @@ import { ModelProvider } from '@lobechat/model-runtime';
3
3
  import { eq } from 'drizzle-orm';
4
4
  import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
5
5
 
6
- import { LobeChatDatabase } from '@/database/type';
7
6
  import { sleep } from '@/utils/sleep';
8
7
 
9
8
  import { aiProviders, users } from '../../schemas';
9
+ import { LobeChatDatabase } from '../../type';
10
10
  import { AiProviderModel } from '../aiProvider';
11
11
  import { getTestDB } from './_util';
12
12
 
@@ -2,10 +2,10 @@
2
2
  import { eq } from 'drizzle-orm';
3
3
  import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
4
4
 
5
- import { LobeChatDatabase } from '@/database/type';
6
5
  import { AsyncTaskStatus, AsyncTaskType } from '@/types/asyncTask';
7
6
 
8
7
  import { asyncTasks, users } from '../../schemas';
8
+ import { LobeChatDatabase } from '../../type';
9
9
  import { ASYNC_TASK_TIMEOUT, AsyncTaskModel } from '../asyncTask';
10
10
  import { getTestDB } from './_util';
11
11
 
@@ -2,8 +2,7 @@
2
2
  import { eq } from 'drizzle-orm';
3
3
  import { afterEach, beforeEach, describe, expect, it } from 'vitest';
4
4
 
5
- import { LobeChatDatabase } from '@/database/type';
6
- import { uuid } from '@/utils/uuid';
5
+ import { LobeChatDatabase } from '../../type';import { uuid } from '@/utils/uuid';
7
6
 
8
7
  import { chunks, embeddings, fileChunks, files, unstructuredChunks, users } from '../../schemas';
9
8
  import { ChunkModel } from '../chunk';
@@ -2,10 +2,10 @@
2
2
  import { eq, inArray } from 'drizzle-orm';
3
3
  import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
4
4
 
5
- import { LobeChatDatabase } from '@/database/type';
6
5
  import { FilesTabs, SortType } from '@/types/files';
7
6
 
8
7
  import { files, globalFiles, knowledgeBaseFiles, knowledgeBases, users } from '../../schemas';
8
+ import { LobeChatDatabase } from '../../type';
9
9
  import { FileModel } from '../file';
10
10
  import { getTestDB } from './_util';
11
11
 
@@ -2,8 +2,7 @@
2
2
  import { eq } from 'drizzle-orm';
3
3
  import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
4
4
 
5
- import { LobeChatDatabase } from '@/database/type';
6
- import { AsyncTaskStatus } from '@/types/asyncTask';
5
+ import { LobeChatDatabase } from '../../type';import { AsyncTaskStatus } from '@/types/asyncTask';
7
6
  import { FileSource } from '@/types/files';
8
7
  import { ImageGenerationAsset } from '@/types/generation';
9
8
 
@@ -2,8 +2,7 @@
2
2
  import { eq } from 'drizzle-orm';
3
3
  import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
4
4
 
5
- import { LobeChatDatabase } from '@/database/type';
6
- import { AsyncTaskStatus } from '@/types/asyncTask';
5
+ import { LobeChatDatabase } from '../../type';import { AsyncTaskStatus } from '@/types/asyncTask';
7
6
  import { GenerationConfig } from '@/types/generation';
8
7
 
9
8
  import {
@@ -2,8 +2,7 @@
2
2
  import { eq } from 'drizzle-orm';
3
3
  import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
4
4
 
5
- import { LobeChatDatabase } from '@/database/type';
6
- import { FileService } from '@/server/services/file';
5
+ import { LobeChatDatabase } from '../../type';import { FileService } from '@/server/services/file';
7
6
  import { ImageGenerationTopic } from '@/types/generation';
8
7
 
9
8
  import { generationBatches, generationTopics, generations, users } from '../../schemas';
@@ -2,8 +2,7 @@
2
2
  import { and, eq } from 'drizzle-orm';
3
3
  import { afterEach, beforeEach, describe, expect, it } from 'vitest';
4
4
 
5
- import { LobeChatDatabase } from '@/database/type';
6
- import { sleep } from '@/utils/sleep';
5
+ import { LobeChatDatabase } from '../../type';import { sleep } from '@/utils/sleep';
7
6
 
8
7
  import {
9
8
  NewKnowledgeBase,
@@ -2,11 +2,10 @@ import dayjs from 'dayjs';
2
2
  import { eq } from 'drizzle-orm';
3
3
  import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
4
4
 
5
- import { getTestDB } from '@/database/models/__tests__/_util';
6
- import { LobeChatDatabase } from '@/database/type';
7
5
  import { MessageItem } from '@/types/message';
8
6
  import { uuid } from '@/utils/uuid';
9
7
 
8
+ import { getTestDB } from '../../models/__tests__/_util';
10
9
  import {
11
10
  chunks,
12
11
  embeddings,
@@ -23,6 +22,7 @@ import {
23
22
  topics,
24
23
  users,
25
24
  } from '../../schemas';
25
+ import { LobeChatDatabase } from '../../type';
26
26
  import { MessageModel } from '../message';
27
27
  import { codeEmbedding } from './fixtures/embedding';
28
28
 
@@ -1,8 +1,7 @@
1
1
  // @vitest-environment node
2
2
  import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
3
3
 
4
- import { LobeChatDatabase } from '@/database/type';
5
-
4
+ import { LobeChatDatabase } from '../../type';
6
5
  import { NewInstalledPlugin, userInstalledPlugins, users } from '../../schemas';
7
6
  import { PluginModel } from '../plugin';
8
7
  import { getTestDB } from './_util';