@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,89 @@
1
+ /**
2
+ * Generate or update PR comment with Docker build info
3
+ */
4
+ module.exports = async ({
5
+ github,
6
+ context,
7
+ dockerMetaJson,
8
+ image,
9
+ version,
10
+ dockerhubUrl,
11
+ platforms,
12
+ }) => {
13
+ const COMMENT_IDENTIFIER = '<!-- DOCKER-BUILD-COMMENT -->';
14
+
15
+ const parseTags = () => {
16
+ try {
17
+ if (dockerMetaJson) {
18
+ const parsed = JSON.parse(dockerMetaJson);
19
+ if (Array.isArray(parsed.tags) && parsed.tags.length > 0) {
20
+ return parsed.tags;
21
+ }
22
+ }
23
+ } catch (e) {
24
+ // ignore parsing error, fallback below
25
+ }
26
+ if (image && version) {
27
+ return [`${image}:${version}`];
28
+ }
29
+ return [];
30
+ };
31
+
32
+ const generateCommentBody = () => {
33
+ const tags = parseTags();
34
+ const buildTime = new Date().toISOString();
35
+
36
+ // Use the first tag as the main version
37
+ const mainTag = tags.length > 0 ? tags[0] : `${image}:${version}`;
38
+ const tagVersion = mainTag.includes(':') ? mainTag.split(':')[1] : version;
39
+
40
+ return [
41
+ COMMENT_IDENTIFIER,
42
+ '',
43
+ '### 🐳 Database Docker Build Completed!',
44
+ `**Version**: \`${tagVersion || 'N/A'}\``,
45
+ `**Build Time**: \`${buildTime}\``,
46
+ '',
47
+ dockerhubUrl ? `🔗 View all tags on Docker Hub: ${dockerhubUrl}` : '',
48
+ '',
49
+ '### Pull Image',
50
+ 'Download the Docker image to your local machine:',
51
+ '',
52
+ '```bash',
53
+ `docker pull ${mainTag}`,
54
+ '```',
55
+ '> [!IMPORTANT]',
56
+ '> This build is for testing and validation purposes.',
57
+ ]
58
+ .filter(Boolean)
59
+ .join('\n');
60
+ };
61
+
62
+ const body = generateCommentBody();
63
+
64
+ // List comments on the PR
65
+ const { data: comments } = await github.rest.issues.listComments({
66
+ issue_number: context.issue.number,
67
+ owner: context.repo.owner,
68
+ repo: context.repo.repo,
69
+ });
70
+
71
+ const existing = comments.find((c) => c.body && c.body.includes(COMMENT_IDENTIFIER));
72
+ if (existing) {
73
+ await github.rest.issues.updateComment({
74
+ comment_id: existing.id,
75
+ owner: context.repo.owner,
76
+ repo: context.repo.repo,
77
+ body,
78
+ });
79
+ return { updated: true, id: existing.id };
80
+ }
81
+
82
+ const result = await github.rest.issues.createComment({
83
+ issue_number: context.issue.number,
84
+ owner: context.repo.owner,
85
+ repo: context.repo.repo,
86
+ body,
87
+ });
88
+ return { updated: false, id: result.data.id };
89
+ };
@@ -183,6 +183,10 @@ jobs:
183
183
  apps/desktop/release/*.zip*
184
184
  apps/desktop/release/*.exe*
185
185
  apps/desktop/release/*.AppImage
186
+ apps/desktop/release/*.deb*
187
+ apps/desktop/release/*.snap*
188
+ apps/desktop/release/*.rpm*
189
+ apps/desktop/release/*.tar.gz*
186
190
  retention-days: 5
187
191
 
188
192
  publish-pr:
@@ -245,6 +249,10 @@ jobs:
245
249
  release/*.zip*
246
250
  release/*.exe*
247
251
  release/*.AppImage
252
+ release/*.deb*
253
+ release/*.snap*
254
+ release/*.rpm*
255
+ release/*.tar.gz*
248
256
  env:
249
257
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
250
258
 
@@ -159,3 +159,24 @@ jobs:
159
159
  - name: Inspect image
160
160
  run: |
161
161
  docker buildx imagetools inspect ${{ env.REGISTRY_IMAGE }}:${{ steps.meta.outputs.version }}
162
+
163
+
164
+ - name: Comment on PR with Docker build info
165
+ if: github.event_name == 'pull_request'
166
+ uses: actions/github-script@v7
167
+ with:
168
+ github-token: ${{ secrets.GITHUB_TOKEN }}
169
+ script: |
170
+ const prComment = require('${{ github.workspace }}/.github/scripts/docker-pr-comment.js');
171
+ const result = await prComment({
172
+ github,
173
+ context,
174
+ dockerMetaJson: ${{ toJSON(steps.meta.outputs.json) }},
175
+ image: "${{ env.REGISTRY_IMAGE }}",
176
+ version: "${{ steps.meta.outputs.version }}",
177
+ dockerhubUrl: "https://hub.docker.com/r/${{ env.REGISTRY_IMAGE }}/tags",
178
+ platforms: "linux/amd64, linux/arm64",
179
+ });
180
+ core.info(`Status: ${result.updated ? 'Updated' : 'Created'}, ID: ${result.id}`);
181
+
182
+
@@ -165,6 +165,10 @@ jobs:
165
165
  apps/desktop/release/*.zip*
166
166
  apps/desktop/release/*.exe*
167
167
  apps/desktop/release/*.AppImage
168
+ apps/desktop/release/*.deb*
169
+ apps/desktop/release/*.snap*
170
+ apps/desktop/release/*.rpm*
171
+ apps/desktop/release/*.tar.gz*
168
172
  retention-days: 5
169
173
 
170
174
  # 正式版发布 job
@@ -201,5 +205,9 @@ jobs:
201
205
  release/*.zip*
202
206
  release/*.exe*
203
207
  release/*.AppImage
208
+ release/*.deb*
209
+ release/*.snap*
210
+ release/*.rpm*
211
+ release/*.tar.gz*
204
212
  env:
205
213
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -11,7 +11,7 @@ jobs:
11
11
 
12
12
  services:
13
13
  postgres:
14
- image: pgvector/pgvector:pg17
14
+ image: paradedb/paradedb:latest
15
15
  env:
16
16
  POSTGRES_PASSWORD: postgres
17
17
  options: >-
@@ -38,8 +38,10 @@ jobs:
38
38
  - name: Lint
39
39
  run: bun run lint
40
40
 
41
- - name: Test Server Coverage
42
- run: bun run test-server:coverage
41
+ - uses: pnpm/action-setup@v4
42
+
43
+ - name: Test Database Coverage
44
+ run: pnpm --filter @lobechat/database test
43
45
  env:
44
46
  DATABASE_TEST_URL: postgresql://postgres:postgres@localhost:5432/postgres
45
47
  DATABASE_DRIVER: node
@@ -48,8 +50,8 @@ jobs:
48
50
  S3_PUBLIC_DOMAIN: https://example.com
49
51
  APP_URL: https://home.com
50
52
 
51
- - name: Test App Coverage
52
- run: bun run test-app:coverage
53
+ - name: Test App
54
+ run: bun run test-app
53
55
 
54
56
  - name: Release
55
57
  run: bun run release
@@ -11,7 +11,7 @@ jobs:
11
11
  runs-on: ubuntu-latest
12
12
  strategy:
13
13
  matrix:
14
- package: [file-loaders, prompts, model-runtime, web-crawler, electron-server-ipc]
14
+ package: [file-loaders, prompts, model-runtime, web-crawler, electron-server-ipc, utils]
15
15
 
16
16
  name: Test package ${{ matrix.package }}
17
17
 
@@ -75,7 +75,7 @@ jobs:
75
75
  files: ./coverage/app/lcov.info
76
76
  flags: app
77
77
 
78
- test-server:
78
+ test-databsae:
79
79
  name: Test Database
80
80
 
81
81
  runs-on: ubuntu-latest
@@ -109,8 +109,10 @@ jobs:
109
109
  - name: Lint
110
110
  run: bun run lint
111
111
 
112
- - name: Test Server Coverage
113
- run: bun run test-server:coverage
112
+ - uses: pnpm/action-setup@v4
113
+
114
+ - name: Test Coverage
115
+ run: pnpm --filter @lobechat/database test:coverage
114
116
  env:
115
117
  DATABASE_TEST_URL: postgresql://postgres:postgres@localhost:5432/postgres
116
118
  DATABASE_DRIVER: node
@@ -119,9 +121,9 @@ jobs:
119
121
  S3_PUBLIC_DOMAIN: https://example.com
120
122
  APP_URL: https://home.com
121
123
 
122
- - name: Upload Server coverage to Codecov
124
+ - name: Upload Database coverage to Codecov
123
125
  uses: codecov/codecov-action@v4
124
126
  with:
125
127
  token: ${{ secrets.CODECOV_TOKEN }}
126
- files: ./coverage/server/lcov.info
127
- flags: server
128
+ files: ./packages/database/coverage/lcov.info
129
+ flags: database
package/CHANGELOG.md CHANGED
@@ -2,6 +2,48 @@
2
2
 
3
3
  # Changelog
4
4
 
5
+ ### [Version 1.114.4](https://github.com/lobehub/lobe-chat/compare/v1.114.3...v1.114.4)
6
+
7
+ <sup>Released on **2025-08-22**</sup>
8
+
9
+ #### ♻ Code Refactoring
10
+
11
+ - **misc**: Move database to packages.
12
+
13
+ <br/>
14
+
15
+ <details>
16
+ <summary><kbd>Improvements and Fixes</kbd></summary>
17
+
18
+ #### Code refactoring
19
+
20
+ - **misc**: Move database to packages, closes [#8874](https://github.com/lobehub/lobe-chat/issues/8874) ([af1f715](https://github.com/lobehub/lobe-chat/commit/af1f715))
21
+
22
+ </details>
23
+
24
+ <div align="right">
25
+
26
+ [![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
27
+
28
+ </div>
29
+
30
+ ### [Version 1.114.3](https://github.com/lobehub/lobe-chat/compare/v1.114.2...v1.114.3)
31
+
32
+ <sup>Released on **2025-08-21**</sup>
33
+
34
+ <br/>
35
+
36
+ <details>
37
+ <summary><kbd>Improvements and Fixes</kbd></summary>
38
+
39
+ </details>
40
+
41
+ <div align="right">
42
+
43
+ [![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
44
+
45
+ </div>
46
+
5
47
  ### [Version 1.114.2](https://github.com/lobehub/lobe-chat/compare/v1.114.1...v1.114.2)
6
48
 
7
49
  <sup>Released on **2025-08-21**</sup>
@@ -120,7 +120,7 @@ COPY --from=base /distroless/ /
120
120
  COPY --from=builder /app/.next/standalone /app/
121
121
 
122
122
  # Copy database migrations
123
- COPY --from=builder /app/src/database/migrations /app/migrations
123
+ COPY --from=builder /app/packages/database/migrations /app/migrations
124
124
  COPY --from=builder /app/scripts/migrateServerDB/docker.cjs /app/docker.cjs
125
125
  COPY --from=builder /app/scripts/migrateServerDB/errorHint.js /app/errorHint.js
126
126
 
@@ -64,7 +64,7 @@ const config = {
64
64
  linux: {
65
65
  category: 'Utility',
66
66
  maintainer: 'electronjs.org',
67
- target: ['AppImage', 'snap', 'deb'],
67
+ target: ['AppImage', 'snap', 'deb', 'rpm', 'tar.gz'],
68
68
  },
69
69
  mac: {
70
70
  compression: 'maximum',
package/changelog/v1.json CHANGED
@@ -1,4 +1,18 @@
1
1
  [
2
+ {
3
+ "children": {
4
+ "improvements": [
5
+ "Move database to packages."
6
+ ]
7
+ },
8
+ "date": "2025-08-22",
9
+ "version": "1.114.4"
10
+ },
11
+ {
12
+ "children": {},
13
+ "date": "2025-08-21",
14
+ "version": "1.114.3"
15
+ },
2
16
  {
3
17
  "children": {
4
18
  "fixes": [
package/codecov.yml CHANGED
@@ -1,11 +1,39 @@
1
+ component_management:
2
+ individual_components:
3
+ # App architecture layers
4
+ - component_id: app_store
5
+ name: "Store"
6
+ paths:
7
+ - src/store/**
8
+ - component_id: app_services
9
+ name: "Services"
10
+ paths:
11
+ - src/services/**
12
+ - component_id: app_server
13
+ name: "Server"
14
+ paths:
15
+ - src/server/**
16
+ - component_id: app_libs
17
+ name: "Libs"
18
+ paths:
19
+ - src/libs/**
20
+ - component_id: app_utils
21
+ name: "Utils"
22
+ paths:
23
+ - src/utils/**
24
+
1
25
  coverage:
2
26
  status:
3
27
  project:
4
28
  default: off
5
- server:
29
+ database:
6
30
  flags:
7
- - server
31
+ - database
8
32
  app:
9
33
  flags:
10
34
  - app
11
35
  patch: off
36
+
37
+
38
+ comment:
39
+ layout: "header, diff, flags, components" # show component info in the PR comment
@@ -0,0 +1,190 @@
1
+ ---
2
+ title: Image Generation Development Setup
3
+ description: Configure local environment for developing text-to-image and image-to-image features
4
+ ---
5
+
6
+ # Image Generation Development Setup
7
+
8
+ This guide helps developers set up the local environment for developing image generation features (text-to-image, image-to-image) with file storage capabilities.
9
+
10
+ ## Prerequisites
11
+
12
+ - Docker installed and running
13
+ - Node.js and pnpm installed
14
+ - PostgreSQL client tools (optional, for debugging)
15
+
16
+ <Callout type="warning">
17
+ **Security Notice**: This setup is designed for local development only. It uses default credentials and open permissions that are NOT suitable for production environments.
18
+ </Callout>
19
+
20
+ ## Quick Setup
21
+
22
+ Run the provided script to automatically set up all required services:
23
+
24
+ ```bash
25
+ # Set up PostgreSQL and MinIO for image storage
26
+ ./scripts/setup-image-generation-dev.sh
27
+
28
+ # Start the development server
29
+ pnpm dev:desktop
30
+ ```
31
+
32
+ This script will:
33
+
34
+ 1. Start PostgreSQL (no authentication for local development)
35
+ 2. Run database migrations to initialize schema
36
+ 3. Start MinIO (S3-compatible storage)
37
+ 4. Create and configure the storage bucket
38
+ 5. Add necessary S3 environment variables to `.env.desktop`
39
+
40
+ ## Architecture Overview
41
+
42
+ The image generation feature requires:
43
+
44
+ - **PostgreSQL**: Stores metadata about generated images
45
+ - **MinIO/S3**: Stores the actual image files
46
+ - **Server Mode**: Required for file handling (`NEXT_PUBLIC_SERVICE_MODE=server`)
47
+
48
+ ## Environment Configuration
49
+
50
+ The following environment variables are automatically configured by the setup script:
51
+
52
+ ```bash
53
+ # S3 Storage Configuration (MinIO for local development)
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 # Required for MinIO
61
+ ```
62
+
63
+ ## Development Workflow
64
+
65
+ ### 1. Image Generation API
66
+
67
+ When developing image generation features, generated images will be:
68
+
69
+ 1. Created by the AI model
70
+ 2. Uploaded to S3/MinIO via presigned URLs
71
+ 3. Metadata stored in PostgreSQL
72
+ 4. Served via the public S3 URL
73
+
74
+ ### 2. File Storage Structure
75
+
76
+ ```
77
+ lobe-chat/ # S3 Bucket
78
+ ├── generated/ # Generated images
79
+ │ └── {userId}/
80
+ │ └── {sessionId}/
81
+ │ └── {imageId}.png
82
+ └── uploads/ # User uploads for image-to-image
83
+ └── {userId}/
84
+ └── {fileId}.{ext}
85
+ ```
86
+
87
+ ### 3. Testing Your Implementation
88
+
89
+ After setting up the environment, you can test:
90
+
91
+ ```typescript
92
+ // Example: Upload generated image
93
+ const uploadUrl = await trpc.upload.createPresignedUrl.mutate({
94
+ filename: 'generated-image.png',
95
+ contentType: 'image/png',
96
+ });
97
+
98
+ // Upload to S3
99
+ await fetch(uploadUrl, {
100
+ method: 'PUT',
101
+ body: imageBlob,
102
+ headers: { 'Content-Type': 'image/png' },
103
+ });
104
+ ```
105
+
106
+ ## Manual Setup
107
+
108
+ If you prefer to set up services manually:
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
+ # Start 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
+ # Create bucket
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
+ ## Service URLs
144
+
145
+ - **PostgreSQL**: `postgres://postgres@localhost:5432/postgres`
146
+ - **MinIO API**: `http://localhost:9000`
147
+ - **MinIO Console**: `http://localhost:9001` (minioadmin/minioadmin)
148
+ - **Application**: `http://localhost:3015`
149
+
150
+ ## Troubleshooting
151
+
152
+ ### Port Conflicts
153
+
154
+ If ports are already in use:
155
+
156
+ ```bash
157
+ # Check what's using the ports
158
+ lsof -i :5432 # PostgreSQL
159
+ lsof -i :9000 # MinIO API
160
+ lsof -i :9001 # MinIO Console
161
+ ```
162
+
163
+ ### Reset Environment
164
+
165
+ To completely reset your development environment:
166
+
167
+ ```bash
168
+ # Stop and remove containers
169
+ docker stop lobe-postgres lobe-minio
170
+ docker rm lobe-postgres lobe-minio
171
+
172
+ # Re-run setup
173
+ ./scripts/setup-image-generation-dev.sh
174
+ ```
175
+
176
+ ### Database Migrations
177
+
178
+ The setup script runs migrations automatically. If you need to run them manually:
179
+
180
+ ```bash
181
+ pnpm db:migrate
182
+ ```
183
+
184
+ Note: In development mode with `pnpm dev:desktop`, migrations also run automatically on startup.
185
+
186
+ ## Related Documentation
187
+
188
+ - [Server Database Setup](/docs/self-hosting/server-database)
189
+ - [S3 Storage Configuration](/docs/self-hosting/advanced/s3)
190
+ - [Environment Variables](/docs/self-hosting/environment-variables)