@lobehub/lobehub 2.0.0-next.3 → 2.0.0-next.31

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 (728) 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 +684 -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/MenuCtr.ts +5 -5
  19. package/apps/desktop/src/main/controllers/NotificationCtr.ts +29 -29
  20. package/apps/desktop/src/main/controllers/RemoteServerConfigCtr.ts +16 -16
  21. package/apps/desktop/src/main/controllers/ShortcutCtr.ts +2 -2
  22. package/apps/desktop/src/main/controllers/TrayMenuCtr.ts +18 -18
  23. package/apps/desktop/src/main/controllers/UpdaterCtr.ts +4 -4
  24. package/apps/desktop/src/main/controllers/__tests__/AuthCtr.test.ts +706 -0
  25. package/apps/desktop/src/main/controllers/__tests__/TrayMenuCtr.test.ts +5 -5
  26. package/apps/desktop/src/main/controllers/index.ts +4 -4
  27. package/apps/desktop/src/main/utils/next-electron-rsc.ts +7 -5
  28. package/apps/desktop/tsconfig.json +0 -1
  29. package/changelog/v1.json +232 -0
  30. package/docs/development/database-schema.dbml +12 -0
  31. package/docs/self-hosting/advanced/auth/next-auth/auth0.mdx +2 -2
  32. package/docs/self-hosting/advanced/auth/next-auth/auth0.zh-CN.mdx +2 -2
  33. package/docs/self-hosting/advanced/auth/next-auth/authelia.mdx +2 -2
  34. package/docs/self-hosting/advanced/auth/next-auth/authelia.zh-CN.mdx +2 -2
  35. package/docs/self-hosting/advanced/auth/next-auth/authentik.mdx +2 -2
  36. package/docs/self-hosting/advanced/auth/next-auth/authentik.zh-CN.mdx +2 -2
  37. package/docs/self-hosting/advanced/auth/next-auth/casdoor.mdx +2 -2
  38. package/docs/self-hosting/advanced/auth/next-auth/casdoor.zh-CN.mdx +2 -2
  39. package/docs/self-hosting/advanced/auth/next-auth/cloudflare-zero-trust.mdx +2 -2
  40. package/docs/self-hosting/advanced/auth/next-auth/cloudflare-zero-trust.zh-CN.mdx +2 -2
  41. package/docs/self-hosting/advanced/auth/next-auth/github.mdx +2 -2
  42. package/docs/self-hosting/advanced/auth/next-auth/github.zh-CN.mdx +2 -2
  43. package/docs/self-hosting/advanced/auth/next-auth/google.mdx +32 -29
  44. package/docs/self-hosting/advanced/auth/next-auth/keycloak.mdx +2 -2
  45. package/docs/self-hosting/advanced/auth/next-auth/keycloak.zh-CN.mdx +2 -2
  46. package/docs/self-hosting/advanced/auth/next-auth/logto.mdx +5 -3
  47. package/docs/self-hosting/advanced/auth/next-auth/logto.zh-CN.mdx +5 -3
  48. package/docs/self-hosting/advanced/auth/next-auth/microsoft-entra-id.mdx +2 -2
  49. package/docs/self-hosting/advanced/auth/next-auth/microsoft-entra-id.zh-CN.mdx +2 -2
  50. package/docs/self-hosting/advanced/auth/next-auth/okta.mdx +2 -2
  51. package/docs/self-hosting/advanced/auth/next-auth/okta.zh-CN.mdx +2 -2
  52. package/docs/self-hosting/advanced/auth/next-auth/wechat.mdx +2 -2
  53. package/docs/self-hosting/advanced/auth/next-auth/wechat.zh-CN.mdx +2 -2
  54. package/docs/self-hosting/advanced/auth/next-auth/zitadel.mdx +2 -2
  55. package/docs/self-hosting/advanced/auth/next-auth/zitadel.zh-CN.mdx +2 -2
  56. package/docs/self-hosting/advanced/auth.mdx +32 -21
  57. package/docs/self-hosting/advanced/auth.zh-CN.mdx +30 -19
  58. package/docs/self-hosting/advanced/feature-flags.mdx +0 -1
  59. package/docs/self-hosting/advanced/feature-flags.zh-CN.mdx +0 -1
  60. package/docs/self-hosting/advanced/online-search.mdx +30 -25
  61. package/docs/self-hosting/advanced/online-search.zh-CN.mdx +25 -23
  62. package/e2e/src/features/discover/detail-pages.feature +95 -0
  63. package/e2e/src/features/discover/interactions.feature +113 -0
  64. package/e2e/src/features/discover/smoke.feature +34 -1
  65. package/e2e/src/steps/discover/detail-pages.steps.ts +295 -0
  66. package/e2e/src/steps/discover/interactions.steps.ts +451 -0
  67. package/e2e/src/steps/discover/smoke.steps.ts +116 -4
  68. package/e2e/tsconfig.json +0 -1
  69. package/locales/ar/labs.json +4 -0
  70. package/locales/ar/models.json +15 -6
  71. package/locales/ar/oauth.json +1 -0
  72. package/locales/bg-BG/labs.json +4 -0
  73. package/locales/bg-BG/models.json +15 -6
  74. package/locales/bg-BG/oauth.json +1 -0
  75. package/locales/de-DE/labs.json +4 -0
  76. package/locales/de-DE/models.json +15 -6
  77. package/locales/de-DE/oauth.json +1 -0
  78. package/locales/en-US/labs.json +4 -0
  79. package/locales/en-US/models.json +15 -6
  80. package/locales/en-US/oauth.json +1 -0
  81. package/locales/es-ES/labs.json +4 -0
  82. package/locales/es-ES/models.json +15 -6
  83. package/locales/es-ES/oauth.json +1 -0
  84. package/locales/fa-IR/labs.json +4 -0
  85. package/locales/fa-IR/models.json +15 -6
  86. package/locales/fa-IR/oauth.json +1 -0
  87. package/locales/fr-FR/labs.json +4 -0
  88. package/locales/fr-FR/models.json +15 -6
  89. package/locales/fr-FR/oauth.json +1 -0
  90. package/locales/it-IT/labs.json +4 -0
  91. package/locales/it-IT/models.json +15 -6
  92. package/locales/it-IT/oauth.json +1 -0
  93. package/locales/ja-JP/labs.json +4 -0
  94. package/locales/ja-JP/models.json +15 -6
  95. package/locales/ja-JP/oauth.json +1 -0
  96. package/locales/ko-KR/labs.json +4 -0
  97. package/locales/ko-KR/models.json +21 -12
  98. package/locales/ko-KR/oauth.json +1 -0
  99. package/locales/nl-NL/labs.json +4 -0
  100. package/locales/nl-NL/models.json +15 -6
  101. package/locales/nl-NL/oauth.json +1 -0
  102. package/locales/pl-PL/labs.json +4 -0
  103. package/locales/pl-PL/models.json +15 -6
  104. package/locales/pl-PL/oauth.json +1 -0
  105. package/locales/pt-BR/labs.json +4 -0
  106. package/locales/pt-BR/models.json +15 -6
  107. package/locales/pt-BR/oauth.json +1 -0
  108. package/locales/ru-RU/labs.json +4 -0
  109. package/locales/ru-RU/models.json +15 -6
  110. package/locales/ru-RU/oauth.json +1 -0
  111. package/locales/tr-TR/labs.json +4 -0
  112. package/locales/tr-TR/models.json +15 -6
  113. package/locales/tr-TR/oauth.json +1 -0
  114. package/locales/vi-VN/labs.json +4 -0
  115. package/locales/vi-VN/models.json +15 -6
  116. package/locales/vi-VN/oauth.json +1 -0
  117. package/locales/zh-CN/labs.json +4 -0
  118. package/locales/zh-CN/models.json +15 -6
  119. package/locales/zh-CN/oauth.json +1 -0
  120. package/locales/zh-TW/labs.json +4 -0
  121. package/locales/zh-TW/models.json +15 -6
  122. package/locales/zh-TW/oauth.json +1 -0
  123. package/next.config.ts +2 -3
  124. package/package.json +76 -82
  125. package/packages/const/src/index.ts +0 -1
  126. package/packages/const/src/url.ts +1 -4
  127. package/packages/const/src/user.ts +5 -2
  128. package/packages/const/src/version.ts +3 -3
  129. package/packages/context-engine/src/index.ts +1 -6
  130. package/packages/context-engine/src/processors/GroupMessageFlatten.ts +12 -2
  131. package/packages/context-engine/src/processors/__tests__/GroupMessageFlatten.test.ts +73 -9
  132. package/packages/context-engine/src/providers/index.ts +0 -2
  133. package/packages/database/migrations/0041_improve_index.sql +10 -0
  134. package/packages/database/migrations/0042_improve_agent_index.sql +1 -0
  135. package/packages/database/migrations/0043_add_ai_model_settings.sql +1 -0
  136. package/packages/database/migrations/meta/0041_snapshot.json +7784 -0
  137. package/packages/database/migrations/meta/0042_snapshot.json +7800 -0
  138. package/packages/database/migrations/meta/0043_snapshot.json +8419 -0
  139. package/packages/database/migrations/meta/_journal.json +21 -0
  140. package/packages/database/package.json +2 -2
  141. package/packages/database/src/core/migrations.json +33 -0
  142. package/packages/database/src/core/web-server.ts +2 -1
  143. package/packages/database/src/models/__tests__/message.grouping.test.ts +812 -0
  144. package/packages/database/src/models/__tests__/message.test.ts +256 -233
  145. package/packages/database/src/models/agent.ts +16 -13
  146. package/packages/database/src/models/message.ts +90 -74
  147. package/packages/database/src/models/session.ts +80 -28
  148. package/packages/database/src/models/user.ts +2 -1
  149. package/packages/database/src/repositories/aiInfra/index.test.ts +198 -0
  150. package/packages/database/src/repositories/aiInfra/index.ts +2 -1
  151. package/packages/database/src/repositories/dataImporter/deprecated/__tests__/index.test.ts +2 -1
  152. package/packages/database/src/repositories/dataImporter/deprecated/index.ts +7 -1
  153. package/packages/database/src/schemas/agent.ts +13 -11
  154. package/packages/database/src/schemas/aiInfra.ts +2 -0
  155. package/packages/database/src/schemas/message.ts +5 -1
  156. package/packages/database/src/schemas/relations.ts +6 -4
  157. package/packages/database/src/schemas/session.ts +2 -0
  158. package/packages/database/src/schemas/topic.ts +6 -1
  159. package/packages/database/src/utils/__tests__/groupMessages.test.ts +145 -2
  160. package/packages/database/src/utils/groupMessages.ts +7 -5
  161. package/packages/electron-client-ipc/package.json +4 -1
  162. package/packages/file-loaders/package.json +1 -0
  163. package/packages/memory-extract/package.json +2 -2
  164. package/packages/model-bank/src/aiModels/anthropic.ts +0 -63
  165. package/packages/model-bank/src/aiModels/higress.ts +0 -55
  166. package/packages/model-bank/src/aiModels/infiniai.ts +21 -0
  167. package/packages/model-bank/src/aiModels/ollamacloud.ts +13 -0
  168. package/packages/model-bank/src/aiModels/siliconcloud.ts +19 -0
  169. package/packages/model-runtime/src/core/streams/openai/__snapshots__/responsesStream.test.ts.snap +0 -38
  170. package/packages/model-runtime/src/providers/minimax/index.ts +5 -5
  171. package/packages/model-runtime/src/providers/search1api/index.test.ts +2 -2
  172. package/packages/model-runtime/src/utils/googleErrorParser.test.ts +125 -0
  173. package/packages/model-runtime/src/utils/googleErrorParser.ts +103 -77
  174. package/packages/obervability-otel/package.json +1 -3
  175. package/packages/obervability-otel/src/node.ts +3 -7
  176. package/packages/types/src/discover/mcp.ts +6 -0
  177. package/packages/types/src/index.ts +0 -1
  178. package/packages/types/src/message/common/base.ts +13 -0
  179. package/packages/types/src/message/common/image.ts +8 -0
  180. package/packages/types/src/message/common/metadata.ts +39 -0
  181. package/packages/types/src/message/common/tools.ts +10 -0
  182. package/packages/types/src/message/db/params.ts +47 -1
  183. package/packages/types/src/message/ui/chat.ts +4 -1
  184. package/packages/types/src/message/ui/params.ts +49 -4
  185. package/packages/types/src/plugins/mcp.ts +4 -1
  186. package/packages/types/src/search.ts +16 -0
  187. package/packages/types/src/serverConfig.ts +2 -6
  188. package/packages/types/src/topic/topic.ts +14 -0
  189. package/packages/types/src/user/index.ts +2 -76
  190. package/packages/types/src/user/preference.ts +105 -0
  191. package/packages/types/src/user/settings/index.ts +22 -0
  192. package/packages/utils/src/apiKey.test.ts +139 -0
  193. package/packages/utils/src/client/clipboard.ts +2 -2
  194. package/packages/utils/src/client/exportFile.ts +10 -10
  195. package/packages/utils/src/client/parserPlaceholder.ts +18 -18
  196. package/packages/utils/src/client/topic.ts +10 -10
  197. package/packages/utils/src/client/xor-obfuscation.ts +11 -11
  198. package/packages/utils/src/server/auth.ts +6 -6
  199. package/packages/utils/src/server/geo.ts +9 -9
  200. package/packages/utils/src/server/xor.ts +7 -7
  201. package/packages/web-crawler/src/crawImpl/firecrawl.ts +39 -12
  202. package/packages/web-crawler/tsconfig.json +0 -1
  203. package/renovate.json +23 -1
  204. package/scripts/migrateServerDB/errorHint.js +1 -7
  205. package/scripts/migrateServerDB/index.ts +2 -1
  206. package/src/app/(backend)/webapi/revalidate/route.ts +1 -1
  207. package/src/app/[variants]/(auth)/signup/[[...signup]]/page.tsx +1 -8
  208. package/src/app/[variants]/(main)/(mobile)/me/(home)/__tests__/useCategory.test.tsx +9 -0
  209. package/src/app/[variants]/(main)/(mobile)/me/(home)/features/UserBanner.tsx +3 -6
  210. package/src/app/[variants]/(main)/(mobile)/me/(home)/layout.tsx +0 -2
  211. package/src/app/[variants]/(main)/_layout/Desktop/SideBar/TopActions.tsx +1 -4
  212. package/src/app/[variants]/(main)/chat/(workspace)/@conversation/features/ChatInput/V1Mobile/index.tsx +2 -2
  213. package/src/app/[variants]/(main)/chat/(workspace)/@conversation/features/ChatInput/V1Mobile/useSend.ts +6 -4
  214. package/src/app/[variants]/(main)/chat/(workspace)/@conversation/features/ChatInput/useSend.ts +15 -10
  215. package/src/app/[variants]/(main)/chat/@session/features/SessionListContent/List/Item/Actions.tsx +3 -28
  216. package/src/app/[variants]/(main)/chat/@session/features/SessionListContent/List/Item/index.tsx +4 -2
  217. package/src/app/[variants]/(main)/chat/_layout/Desktop/index.tsx +0 -2
  218. package/src/app/[variants]/(main)/chat/_layout/Mobile.tsx +1 -5
  219. package/src/app/[variants]/(main)/chat/settings/features/HeaderContent.tsx +2 -62
  220. package/src/app/[variants]/(main)/discover/(list)/features/Pagination.tsx +1 -0
  221. package/src/app/[variants]/(main)/discover/(list)/features/SortButton/index.tsx +1 -1
  222. package/src/app/[variants]/(main)/discover/(list)/mcp/features/List/Item.tsx +1 -0
  223. package/src/app/[variants]/(main)/discover/(list)/model/features/List/Item.tsx +1 -0
  224. package/src/app/[variants]/(main)/discover/(list)/provider/features/List/Item.tsx +1 -0
  225. package/src/app/[variants]/(main)/discover/components/CategoryMenu.tsx +9 -1
  226. package/src/app/[variants]/(main)/image/@topic/features/Topics/TopicList.tsx +1 -0
  227. package/src/app/[variants]/(main)/image/features/PromptInput/index.tsx +1 -1
  228. package/src/app/[variants]/(main)/image/page.tsx +0 -2
  229. package/src/app/[variants]/(main)/labs/components/LabCard.tsx +8 -6
  230. package/src/app/[variants]/(main)/labs/page.tsx +19 -22
  231. package/src/app/[variants]/(main)/profile/_layout/Desktop/index.tsx +23 -24
  232. package/src/app/[variants]/(main)/profile/_layout/Mobile/index.tsx +5 -9
  233. package/src/app/[variants]/(main)/settings/_layout/Desktop/index.tsx +0 -2
  234. package/src/app/[variants]/(main)/settings/_layout/Mobile/index.tsx +0 -2
  235. package/src/app/[variants]/(main)/settings/provider/(list)/ProviderGrid/Card.tsx +1 -1
  236. package/src/app/[variants]/(main)/settings/provider/detail/azure/index.tsx +6 -8
  237. package/src/app/[variants]/(main)/settings/provider/detail/azureai/index.tsx +1 -1
  238. package/src/app/[variants]/(main)/settings/provider/detail/bedrock/index.tsx +1 -1
  239. package/src/app/[variants]/(main)/settings/provider/detail/cloudflare/index.tsx +1 -1
  240. package/src/app/[variants]/(main)/settings/provider/detail/comfyui/index.tsx +1 -1
  241. package/src/app/[variants]/(main)/settings/provider/detail/github/index.tsx +1 -1
  242. package/src/app/[variants]/(main)/settings/provider/detail/vertexai/index.tsx +1 -1
  243. package/src/app/[variants]/(main)/settings/provider/features/ProviderConfig/index.tsx +2 -4
  244. package/src/app/[variants]/layout.tsx +1 -0
  245. package/src/app/[variants]/loading/index.tsx +1 -10
  246. package/src/app/[variants]/oauth/ResultLayout.tsx +47 -0
  247. package/src/app/[variants]/oauth/callback/error/page.tsx +20 -33
  248. package/src/app/[variants]/oauth/callback/layout.tsx +1 -0
  249. package/src/app/[variants]/oauth/callback/success/page.tsx +8 -22
  250. package/src/app/[variants]/oauth/consent/[uid]/Consent/BuiltinConsent.tsx +47 -0
  251. package/src/app/[variants]/oauth/consent/[uid]/{Consent.tsx → Consent/index.tsx} +12 -1
  252. package/src/app/[variants]/oauth/consent/[uid]/Login.tsx +19 -2
  253. package/src/app/sitemap.tsx +7 -1
  254. package/src/components/InvalidAPIKey/APIKeyForm/Bedrock.tsx +8 -13
  255. package/src/components/Link.tsx +12 -0
  256. package/src/components/Skeleton/SkeletonSwitch.tsx +13 -0
  257. package/src/components/Skeleton/index.ts +2 -0
  258. package/src/components/Thinking/index.tsx +4 -3
  259. package/src/config/db.ts +0 -5
  260. package/src/config/featureFlags/schema.test.ts +0 -2
  261. package/src/config/featureFlags/schema.ts +0 -6
  262. package/src/config/modelProviders/ai21.ts +1 -16
  263. package/src/config/modelProviders/ai302.ts +1 -128
  264. package/src/config/modelProviders/ai360.ts +1 -32
  265. package/src/config/modelProviders/anthropic.ts +1 -94
  266. package/src/config/modelProviders/azure.ts +1 -51
  267. package/src/config/modelProviders/baichuan.ts +1 -57
  268. package/src/config/modelProviders/bedrock.ts +1 -276
  269. package/src/config/modelProviders/cloudflare.ts +1 -64
  270. package/src/config/modelProviders/deepseek.ts +1 -19
  271. package/src/config/modelProviders/fireworksai.ts +1 -174
  272. package/src/config/modelProviders/giteeai.ts +1 -135
  273. package/src/config/modelProviders/github.ts +1 -254
  274. package/src/config/modelProviders/google.ts +1 -130
  275. package/src/config/modelProviders/groq.ts +1 -119
  276. package/src/config/modelProviders/higress.ts +1 -1736
  277. package/src/config/modelProviders/huggingface.ts +1 -54
  278. package/src/config/modelProviders/hunyuan.ts +1 -83
  279. package/src/config/modelProviders/infiniai.ts +1 -74
  280. package/src/config/modelProviders/internlm.ts +1 -20
  281. package/src/config/modelProviders/minimax.ts +1 -1
  282. package/src/config/modelProviders/mistral.ts +1 -95
  283. package/src/config/modelProviders/modelscope.ts +1 -27
  284. package/src/config/modelProviders/moonshot.ts +1 -29
  285. package/src/config/modelProviders/novita.ts +1 -105
  286. package/src/config/modelProviders/ollama.ts +1 -325
  287. package/src/config/modelProviders/openai.ts +1 -242
  288. package/src/config/modelProviders/openrouter.ts +1 -240
  289. package/src/config/modelProviders/perplexity.ts +1 -45
  290. package/src/config/modelProviders/ppio.ts +1 -152
  291. package/src/config/modelProviders/qiniu.ts +2 -19
  292. package/src/config/modelProviders/qwen.ts +1 -245
  293. package/src/config/modelProviders/search1api.ts +1 -34
  294. package/src/config/modelProviders/sensenova.ts +1 -69
  295. package/src/config/modelProviders/siliconcloud.ts +1 -417
  296. package/src/config/modelProviders/spark.ts +1 -59
  297. package/src/config/modelProviders/stepfun.ts +1 -98
  298. package/src/config/modelProviders/taichu.ts +1 -18
  299. package/src/config/modelProviders/togetherai.ts +1 -274
  300. package/src/config/modelProviders/upstage.ts +1 -28
  301. package/src/config/modelProviders/wenxin.ts +1 -140
  302. package/src/config/modelProviders/xai.ts +1 -38
  303. package/src/config/modelProviders/zeroone.ts +1 -81
  304. package/src/config/modelProviders/zhipu.ts +1 -108
  305. package/src/envs/app.ts +5 -8
  306. package/src/envs/auth.ts +0 -179
  307. package/src/features/AgentSetting/AgentPlugin/index.tsx +2 -2
  308. package/src/features/ChatInput/ActionBar/STT/browser.tsx +2 -2
  309. package/src/features/ChatInput/ActionBar/STT/openai.tsx +2 -2
  310. package/src/features/ChatInput/ActionBar/Tools/useControls.tsx +1 -3
  311. package/src/features/ChatInput/ActionBar/index.tsx +2 -2
  312. package/src/features/ChatInput/InputEditor/index.tsx +2 -2
  313. package/src/features/Conversation/Error/ErrorJsonViewer.tsx +4 -3
  314. package/src/features/Conversation/Error/OllamaBizError/index.tsx +7 -2
  315. package/src/features/Conversation/Error/index.tsx +15 -5
  316. package/src/features/Conversation/MarkdownElements/LobeArtifact/Render/index.tsx +2 -2
  317. package/src/features/Conversation/Messages/Assistant/Extra/index.tsx +2 -2
  318. package/src/features/Conversation/Messages/Assistant/MessageContent.tsx +5 -3
  319. package/src/features/Conversation/Messages/Assistant/Tool/Inspector/BuiltinPluginTitle.tsx +2 -2
  320. package/src/features/Conversation/Messages/Assistant/Tool/Inspector/ToolTitle.tsx +4 -2
  321. package/src/features/Conversation/Messages/Assistant/Tool/Render/CustomRender.tsx +2 -2
  322. package/src/features/Conversation/Messages/Assistant/Tool/Render/index.tsx +2 -2
  323. package/src/features/Conversation/Messages/Assistant/Tool/index.tsx +2 -2
  324. package/src/features/Conversation/Messages/Assistant/index.tsx +4 -4
  325. package/src/features/Conversation/Messages/Default.tsx +2 -2
  326. package/src/features/Conversation/Messages/Group/Actions/WithContentId.tsx +152 -0
  327. package/src/features/Conversation/Messages/Group/Actions/WithoutContentId.tsx +70 -0
  328. package/src/features/Conversation/Messages/Group/Actions/index.tsx +21 -0
  329. package/src/features/Conversation/Messages/Group/ContentBlock.tsx +91 -0
  330. package/src/features/Conversation/Messages/Group/EditState.tsx +51 -0
  331. package/src/features/Conversation/Messages/Group/Error/index.tsx +53 -0
  332. package/src/features/Conversation/Messages/Group/GroupChildren.tsx +73 -0
  333. package/src/features/Conversation/Messages/Group/MessageContent.tsx +39 -0
  334. package/src/features/Conversation/Messages/Group/Tool/Inspector/BuiltinPluginTitle.tsx +49 -0
  335. package/src/features/Conversation/Messages/Group/Tool/Inspector/Debug.tsx +70 -0
  336. package/src/features/Conversation/Messages/Group/Tool/Inspector/PluginResult.tsx +34 -0
  337. package/src/features/Conversation/Messages/Group/Tool/Inspector/PluginState.tsx +18 -0
  338. package/src/features/Conversation/Messages/Group/Tool/Inspector/Settings.tsx +40 -0
  339. package/src/features/Conversation/Messages/Group/Tool/Inspector/ToolTitle.tsx +92 -0
  340. package/src/features/Conversation/Messages/Group/Tool/Inspector/index.tsx +176 -0
  341. package/src/features/Conversation/Messages/Group/Tool/Render/Arguments/ObjectEntity.tsx +81 -0
  342. package/src/features/Conversation/Messages/Group/Tool/Render/Arguments/ValueCell.tsx +43 -0
  343. package/src/features/Conversation/Messages/Group/Tool/Render/Arguments/index.tsx +134 -0
  344. package/src/features/Conversation/Messages/Group/Tool/Render/CustomRender.tsx +88 -0
  345. package/src/features/Conversation/Messages/Group/Tool/Render/ErrorResponse.tsx +35 -0
  346. package/src/features/Conversation/Messages/Group/Tool/Render/LoadingPlaceholder/index.tsx +29 -0
  347. package/src/features/Conversation/Messages/Group/Tool/Render/PluginSettings.tsx +66 -0
  348. package/src/features/Conversation/Messages/Group/Tool/Render/index.tsx +105 -0
  349. package/src/features/Conversation/Messages/Group/Tool/index.tsx +75 -0
  350. package/src/features/Conversation/Messages/Group/Tools.tsx +46 -0
  351. package/src/features/Conversation/Messages/Group/index.tsx +140 -0
  352. package/src/features/Conversation/Messages/User/Extra.tsx +2 -2
  353. package/src/features/Conversation/Messages/User/index.tsx +4 -4
  354. package/src/features/Conversation/Messages/index.tsx +15 -3
  355. package/src/features/Conversation/components/AutoScroll.tsx +2 -2
  356. package/src/features/Conversation/components/Extras/Usage/UsageDetail/index.tsx +9 -6
  357. package/src/features/Conversation/components/ShareMessageModal/ShareImage/Preview.tsx +2 -2
  358. package/src/features/DataImporter/index.tsx +15 -60
  359. package/src/features/DevPanel/PostgresViewer/usePgTable.ts +3 -2
  360. package/src/features/MCP/utils.test.ts +91 -0
  361. package/src/features/MCP/utils.ts +20 -2
  362. package/src/features/PluginStore/Content.tsx +2 -3
  363. package/src/features/PluginStore/McpList/index.tsx +6 -2
  364. package/src/features/PluginTag/index.tsx +1 -3
  365. package/src/features/PluginsUI/Render/BuiltinType/index.test.tsx +37 -28
  366. package/src/features/Portal/Artifacts/Body/index.tsx +2 -2
  367. package/src/helpers/isCanUseFC.ts +0 -8
  368. package/src/hooks/useEnabledChatModels.ts +0 -8
  369. package/src/hooks/useInterceptingRoutes.test.ts +21 -3
  370. package/src/hooks/useModelContextWindowTokens.ts +0 -8
  371. package/src/hooks/useModelHasContextWindowToken.ts +1 -10
  372. package/src/hooks/useModelSupportFiles.ts +1 -11
  373. package/src/hooks/useModelSupportReasoning.ts +1 -11
  374. package/src/hooks/useModelSupportToolUse.ts +1 -11
  375. package/src/hooks/useModelSupportVision.ts +1 -11
  376. package/src/layout/AuthProvider/Clerk/index.tsx +2 -16
  377. package/src/libs/next-auth/auth.config.ts +3 -6
  378. package/src/libs/next-auth/sso-providers/auth0.ts +0 -7
  379. package/src/libs/next-auth/sso-providers/authelia.ts +3 -5
  380. package/src/libs/next-auth/sso-providers/authentik.ts +0 -7
  381. package/src/libs/next-auth/sso-providers/cloudflare-zero-trust.ts +3 -6
  382. package/src/libs/next-auth/sso-providers/cognito.ts +1 -5
  383. package/src/libs/next-auth/sso-providers/generic-oidc.ts +3 -5
  384. package/src/libs/next-auth/sso-providers/github.ts +0 -6
  385. package/src/libs/next-auth/sso-providers/google.ts +0 -2
  386. package/src/libs/next-auth/sso-providers/index.ts +0 -2
  387. package/src/libs/next-auth/sso-providers/keycloak.ts +0 -3
  388. package/src/libs/next-auth/sso-providers/logto.ts +3 -5
  389. package/src/libs/next-auth/sso-providers/okta.ts +0 -4
  390. package/src/libs/next-auth/sso-providers/zitadel.ts +0 -7
  391. package/src/libs/oidc-provider/provider.ts +1 -1
  392. package/src/libs/trpc/client/index.ts +0 -1
  393. package/src/libs/trpc/client/lambda.ts +8 -5
  394. package/src/libs/trpc/lambda/context.ts +4 -1
  395. package/src/locales/default/labs.ts +4 -0
  396. package/src/locales/default/oauth.ts +1 -0
  397. package/src/server/globalConfig/index.ts +0 -23
  398. package/src/server/modules/AssistantStore/index.ts +1 -1
  399. package/src/server/modules/ModelRuntime/trace.ts +11 -4
  400. package/src/server/routers/desktop/mcp.ts +1 -3
  401. package/src/server/routers/lambda/__tests__/integration/message.integration.test.ts +810 -70
  402. package/src/server/routers/lambda/config/__snapshots__/index.test.ts.snap +175 -12
  403. package/src/server/routers/lambda/config/index.test.ts +38 -30
  404. package/src/server/routers/lambda/market/index.ts +4 -2
  405. package/src/server/routers/lambda/message.ts +60 -52
  406. package/src/server/routers/lambda/session.ts +8 -5
  407. package/src/server/routers/lambda/topic.ts +7 -1
  408. package/src/server/routers/lambda/user.ts +32 -31
  409. package/src/server/routers/tools/mcp.ts +2 -3
  410. package/src/server/routers/tools/search.test.ts +1 -7
  411. package/src/server/routers/tools/search.ts +1 -4
  412. package/src/server/services/mcp/deps/MCPSystemDepsCheckService.test.ts +541 -0
  413. package/src/server/services/message/__tests__/index.test.ts +348 -0
  414. package/src/server/services/message/index.ts +159 -0
  415. package/src/server/services/search/impls/firecrawl/index.ts +51 -11
  416. package/src/server/services/search/impls/firecrawl/type.ts +60 -9
  417. package/src/services/__tests__/tool.test.ts +0 -3
  418. package/src/services/aiModel/index.test.ts +3 -6
  419. package/src/services/aiModel/index.ts +55 -7
  420. package/src/services/aiProvider/index.test.ts +2 -5
  421. package/src/services/aiProvider/index.ts +47 -7
  422. package/src/services/chat/chat.test.ts +13 -40
  423. package/src/services/chat/contextEngineering.test.ts +0 -30
  424. package/src/services/chat/contextEngineering.ts +7 -17
  425. package/src/services/chat/helper.ts +7 -31
  426. package/src/services/chat/index.ts +5 -10
  427. package/src/services/chat/types.ts +1 -1
  428. package/src/services/chatGroup/index.ts +64 -9
  429. package/src/services/config.ts +1 -65
  430. package/src/services/export/index.ts +9 -4
  431. package/src/services/file/index.ts +59 -10
  432. package/src/services/import/index.ts +132 -7
  433. package/src/services/mcp.test.ts +777 -0
  434. package/src/services/mcp.ts +40 -6
  435. package/src/services/message/index.ts +203 -10
  436. package/src/services/message/{__tests__/server.test.ts → server.test.ts} +3 -3
  437. package/src/services/models.ts +2 -11
  438. package/src/services/plugin/index.test.ts +8 -0
  439. package/src/services/plugin/index.ts +51 -10
  440. package/src/services/session/index.test.ts +8 -0
  441. package/src/services/session/index.ts +143 -10
  442. package/src/services/tableViewer/client.ts +12 -15
  443. package/src/services/thread/index.test.ts +8 -0
  444. package/src/services/thread/index.ts +37 -7
  445. package/src/services/topic/index.test.ts +8 -0
  446. package/src/services/topic/index.ts +74 -10
  447. package/src/services/user/index.test.ts +8 -0
  448. package/src/services/user/index.ts +50 -11
  449. package/src/store/aiInfra/slices/aiModel/action.test.ts +17 -9
  450. package/src/store/chat/helpers.test.ts +99 -0
  451. package/src/store/chat/helpers.ts +21 -2
  452. package/src/store/chat/selectors.ts +1 -1
  453. package/src/store/chat/slices/aiChat/actions/__tests__/generateAIChat.test.ts +17 -251
  454. package/src/store/chat/slices/aiChat/actions/__tests__/generateAIChatV2.test.ts +339 -7
  455. package/src/store/chat/slices/aiChat/actions/__tests__/helpers.ts +9 -5
  456. package/src/store/chat/slices/aiChat/actions/generateAIChat.ts +49 -178
  457. package/src/store/chat/slices/aiChat/actions/generateAIChatV2.ts +272 -14
  458. package/src/store/chat/slices/aiChat/actions/generateAIGroupChat.ts +7 -2
  459. package/src/store/chat/slices/builtinTool/actions/index.ts +1 -4
  460. package/src/store/chat/slices/builtinTool/actions/search.ts +3 -3
  461. package/src/store/chat/slices/message/action.test.ts +157 -16
  462. package/src/store/chat/slices/message/action.ts +153 -77
  463. package/src/store/chat/slices/message/reducer.test.ts +363 -5
  464. package/src/store/chat/slices/message/reducer.ts +87 -3
  465. package/src/store/chat/slices/message/{selectors.test.ts → selectors/chat.test.ts} +266 -30
  466. package/src/store/chat/slices/message/{selectors.ts → selectors/chat.ts} +29 -79
  467. package/src/store/chat/slices/message/selectors/index.ts +2 -0
  468. package/src/store/chat/slices/message/selectors/messageState.test.ts +36 -0
  469. package/src/store/chat/slices/message/selectors/messageState.ts +80 -0
  470. package/src/store/chat/slices/plugin/action.test.ts +118 -157
  471. package/src/store/chat/slices/plugin/action.ts +53 -68
  472. package/src/store/chat/slices/thread/action.test.ts +13 -4
  473. package/src/store/chat/slices/thread/action.ts +3 -1
  474. package/src/store/chat/slices/topic/action.test.ts +1 -1
  475. package/src/store/chat/slices/topic/action.ts +1 -2
  476. package/src/store/chat/slices/topic/reducer.ts +1 -2
  477. package/src/store/file/slices/chat/action.ts +1 -4
  478. package/src/store/file/slices/fileManager/action.ts +2 -3
  479. package/src/store/global/store.ts +1 -7
  480. package/src/store/session/slices/sessionGroup/action.test.ts +5 -5
  481. package/src/store/tool/selectors/tool.test.ts +1 -1
  482. package/src/store/tool/selectors/tool.ts +6 -8
  483. package/src/store/tool/slices/builtin/action.test.ts +83 -35
  484. package/src/store/tool/slices/builtin/action.ts +0 -9
  485. package/src/store/tool/slices/builtin/selectors.test.ts +4 -30
  486. package/src/store/tool/slices/builtin/selectors.ts +15 -21
  487. package/src/store/tool/slices/mcpStore/action.test.ts +95 -3
  488. package/src/store/tool/slices/mcpStore/action.ts +177 -53
  489. package/src/store/tool/slices/oldStore/initialState.ts +1 -2
  490. package/src/store/user/initialState.ts +1 -7
  491. package/src/store/user/selectors.ts +1 -5
  492. package/src/store/user/slices/common/action.test.ts +1 -4
  493. package/src/store/user/slices/common/action.ts +5 -4
  494. package/src/store/user/slices/preference/action.ts +8 -1
  495. package/src/store/user/slices/preference/selectors/index.ts +2 -0
  496. package/src/store/user/slices/preference/selectors/labPrefer.ts +13 -0
  497. package/src/store/user/slices/preference/{selectors.ts → selectors/preference.ts} +0 -2
  498. package/src/store/user/slices/settings/selectors/index.ts +1 -0
  499. package/src/store/user/slices/settings/selectors/keyVaults.ts +21 -0
  500. package/src/store/user/store.ts +0 -3
  501. package/src/tools/index.ts +0 -6
  502. package/src/tools/renders.ts +0 -3
  503. package/src/tools/web-browsing/Portal/Search/Footer.tsx +2 -2
  504. package/src/tools/web-browsing/Render/Search/ConfigForm/Form.tsx +1 -1
  505. package/tsconfig.json +9 -3
  506. package/packages/const/src/guide.ts +0 -89
  507. package/packages/context-engine/src/providers/InboxGuide.ts +0 -102
  508. package/packages/context-engine/src/providers/__tests__/InboxGuideProvider.test.ts +0 -121
  509. package/packages/utils/src/_deprecated/__snapshots__/parseModels.test.ts.snap +0 -104
  510. package/packages/utils/src/_deprecated/parseModels.test.ts +0 -287
  511. package/packages/utils/src/_deprecated/parseModels.ts +0 -165
  512. package/src/app/(backend)/trpc/edge/[trpc]/route.ts +0 -26
  513. package/src/app/[variants]/(main)/(mobile)/me/data/features/Category.tsx +0 -48
  514. package/src/app/[variants]/(main)/(mobile)/me/data/features/Header.tsx +0 -33
  515. package/src/app/[variants]/(main)/(mobile)/me/data/layout.tsx +0 -13
  516. package/src/app/[variants]/(main)/(mobile)/me/data/loading.tsx +0 -5
  517. package/src/app/[variants]/(main)/(mobile)/me/data/page.tsx +0 -29
  518. package/src/app/[variants]/(main)/chat/features/Migration/DBReader.ts +0 -290
  519. package/src/app/[variants]/(main)/chat/features/Migration/ExportConfigButton.tsx +0 -35
  520. package/src/app/[variants]/(main)/chat/features/Migration/Failed.tsx +0 -120
  521. package/src/app/[variants]/(main)/chat/features/Migration/Modal.tsx +0 -81
  522. package/src/app/[variants]/(main)/chat/features/Migration/Start.tsx +0 -108
  523. package/src/app/[variants]/(main)/chat/features/Migration/UpgradeButton.tsx +0 -71
  524. package/src/app/[variants]/(main)/chat/features/Migration/const.ts +0 -15
  525. package/src/app/[variants]/(main)/chat/features/Migration/index.tsx +0 -50
  526. package/src/app/[variants]/loading/Client/Content.tsx +0 -48
  527. package/src/app/[variants]/loading/Client/Error.tsx +0 -27
  528. package/src/app/[variants]/loading/Client/Redirect.tsx +0 -47
  529. package/src/app/[variants]/loading/Client/index.tsx +0 -22
  530. package/src/components/InnerLink.tsx +0 -20
  531. package/src/database/_deprecated/core/__tests__/db-upgrade.test.ts +0 -42
  532. package/src/database/_deprecated/core/__tests__/db.test.ts +0 -79
  533. package/src/database/_deprecated/core/__tests__/model.test.ts +0 -55
  534. package/src/database/_deprecated/core/db.ts +0 -246
  535. package/src/database/_deprecated/core/index.ts +0 -2
  536. package/src/database/_deprecated/core/migrations/migrateSettingsToUser/fixtures/input.json +0 -55
  537. package/src/database/_deprecated/core/migrations/migrateSettingsToUser/fixtures/output.json +0 -60
  538. package/src/database/_deprecated/core/migrations/migrateSettingsToUser/index.test.ts +0 -14
  539. package/src/database/_deprecated/core/migrations/migrateSettingsToUser/index.ts +0 -22
  540. package/src/database/_deprecated/core/migrations/migrateSettingsToUser/type.ts +0 -105
  541. package/src/database/_deprecated/core/model.ts +0 -218
  542. package/src/database/_deprecated/core/schemas.ts +0 -88
  543. package/src/database/_deprecated/core/types/db.ts +0 -15
  544. package/src/database/_deprecated/models/__DEBUG.ts +0 -124
  545. package/src/database/_deprecated/models/__tests__/file.test.ts +0 -83
  546. package/src/database/_deprecated/models/__tests__/message.test.ts +0 -426
  547. package/src/database/_deprecated/models/__tests__/plugin.test.ts +0 -81
  548. package/src/database/_deprecated/models/__tests__/session.test.ts +0 -253
  549. package/src/database/_deprecated/models/__tests__/sessionGroup.test.ts +0 -220
  550. package/src/database/_deprecated/models/__tests__/topic.test.ts +0 -523
  551. package/src/database/_deprecated/models/__tests__/user.test.ts +0 -82
  552. package/src/database/_deprecated/models/file.ts +0 -51
  553. package/src/database/_deprecated/models/message.ts +0 -277
  554. package/src/database/_deprecated/models/plugin.ts +0 -62
  555. package/src/database/_deprecated/models/session.ts +0 -271
  556. package/src/database/_deprecated/models/sessionGroup.ts +0 -93
  557. package/src/database/_deprecated/models/topic.ts +0 -250
  558. package/src/database/_deprecated/models/user.ts +0 -69
  559. package/src/database/_deprecated/schemas/files.ts +0 -39
  560. package/src/database/_deprecated/schemas/message.ts +0 -50
  561. package/src/database/_deprecated/schemas/plugin.ts +0 -12
  562. package/src/database/_deprecated/schemas/session.ts +0 -54
  563. package/src/database/_deprecated/schemas/sessionGroup.ts +0 -8
  564. package/src/database/_deprecated/schemas/topic.ts +0 -12
  565. package/src/database/_deprecated/schemas/user.ts +0 -40
  566. package/src/envs/__tests__/auth.test.ts +0 -200
  567. package/src/features/DataImporter/_deprecated.ts +0 -43
  568. package/src/features/InitClientDB/EnableModal.tsx +0 -118
  569. package/src/features/InitClientDB/ErrorResult.tsx +0 -143
  570. package/src/features/InitClientDB/InitIndicator.tsx +0 -124
  571. package/src/features/InitClientDB/PGliteIcon.tsx +0 -28
  572. package/src/features/InitClientDB/features/DatabaseRepair/Backup.tsx +0 -75
  573. package/src/features/InitClientDB/features/DatabaseRepair/Diagnosis.tsx +0 -98
  574. package/src/features/InitClientDB/features/DatabaseRepair/Repair.tsx +0 -218
  575. package/src/features/InitClientDB/features/DatabaseRepair/index.tsx +0 -91
  576. package/src/features/InitClientDB/index.tsx +0 -37
  577. package/src/hooks/_header.ts +0 -23
  578. package/src/libs/next-auth/sso-providers/azure-ad.ts +0 -33
  579. package/src/libs/trpc/client/edge.ts +0 -26
  580. package/src/libs/trpc/edge/context.ts +0 -71
  581. package/src/libs/trpc/edge/index.ts +0 -45
  582. package/src/libs/trpc/edge/init.ts +0 -26
  583. package/src/libs/trpc/edge/middleware/jwtPayload.test.ts +0 -75
  584. package/src/libs/trpc/edge/middleware/jwtPayload.ts +0 -14
  585. package/src/migrations/FromV0ToV1.ts +0 -10
  586. package/src/migrations/FromV1ToV2/fixtures/input-v1-session.json +0 -191
  587. package/src/migrations/FromV1ToV2/fixtures/output-v2.json +0 -202
  588. package/src/migrations/FromV1ToV2/index.ts +0 -82
  589. package/src/migrations/FromV1ToV2/migrations.test.ts +0 -224
  590. package/src/migrations/FromV1ToV2/types/v1.ts +0 -78
  591. package/src/migrations/FromV1ToV2/types/v2.ts +0 -52
  592. package/src/migrations/FromV2ToV3/fixtures/input-v2-session.json +0 -72
  593. package/src/migrations/FromV2ToV3/fixtures/output-v3-from-v1.json +0 -203
  594. package/src/migrations/FromV2ToV3/fixtures/output-v3.json +0 -74
  595. package/src/migrations/FromV2ToV3/index.ts +0 -30
  596. package/src/migrations/FromV2ToV3/migrations.test.ts +0 -42
  597. package/src/migrations/FromV2ToV3/types/v3.ts +0 -27
  598. package/src/migrations/FromV3ToV4/fixtures/azure-input-v3.json +0 -79
  599. package/src/migrations/FromV3ToV4/fixtures/azure-output-v4.json +0 -75
  600. package/src/migrations/FromV3ToV4/fixtures/ollama-input-v3.json +0 -85
  601. package/src/migrations/FromV3ToV4/fixtures/ollama-output-v4.json +0 -86
  602. package/src/migrations/FromV3ToV4/fixtures/openai-input-v3.json +0 -77
  603. package/src/migrations/FromV3ToV4/fixtures/openai-output-v4.json +0 -77
  604. package/src/migrations/FromV3ToV4/fixtures/openrouter-input-v3.json +0 -82
  605. package/src/migrations/FromV3ToV4/fixtures/openrouter-output-v4.json +0 -85
  606. package/src/migrations/FromV3ToV4/fixtures/output-v4-from-v1.json +0 -203
  607. package/src/migrations/FromV3ToV4/index.ts +0 -102
  608. package/src/migrations/FromV3ToV4/migrations.test.ts +0 -195
  609. package/src/migrations/FromV3ToV4/types/v3.ts +0 -52
  610. package/src/migrations/FromV3ToV4/types/v4.ts +0 -37
  611. package/src/migrations/FromV4ToV5/fixtures/from-v1-to-v5-output.json +0 -245
  612. package/src/migrations/FromV4ToV5/fixtures/function-input-v4.json +0 -96
  613. package/src/migrations/FromV4ToV5/fixtures/function-output-v5.json +0 -120
  614. package/src/migrations/FromV4ToV5/index.ts +0 -58
  615. package/src/migrations/FromV4ToV5/migrations.test.ts +0 -49
  616. package/src/migrations/FromV4ToV5/types/v4.ts +0 -21
  617. package/src/migrations/FromV4ToV5/types/v5.ts +0 -27
  618. package/src/migrations/FromV5ToV6/fixtures/from-v1-to-v6-output.json +0 -247
  619. package/src/migrations/FromV5ToV6/fixtures/session-input-v5.json +0 -81
  620. package/src/migrations/FromV5ToV6/fixtures/session-output-v6.json +0 -85
  621. package/src/migrations/FromV5ToV6/index.ts +0 -61
  622. package/src/migrations/FromV5ToV6/migrations.test.ts +0 -50
  623. package/src/migrations/FromV5ToV6/types/v5.ts +0 -48
  624. package/src/migrations/FromV5ToV6/types/v6.ts +0 -63
  625. package/src/migrations/FromV6ToV7/fixtures/output-v7-from-v1.json +0 -203
  626. package/src/migrations/FromV6ToV7/fixtures/provider-input-v6.json +0 -103
  627. package/src/migrations/FromV6ToV7/fixtures/provider-output-v7.json +0 -118
  628. package/src/migrations/FromV6ToV7/index.ts +0 -101
  629. package/src/migrations/FromV6ToV7/migrations.test.ts +0 -64
  630. package/src/migrations/FromV6ToV7/types/v6.ts +0 -61
  631. package/src/migrations/FromV6ToV7/types/v7.ts +0 -69
  632. package/src/migrations/VersionController.test.ts +0 -88
  633. package/src/migrations/VersionController.ts +0 -67
  634. package/src/migrations/index.ts +0 -61
  635. package/src/server/globalConfig/_deprecated.test.ts +0 -92
  636. package/src/server/globalConfig/_deprecated.ts +0 -41
  637. package/src/server/routers/edge/appStatus.ts +0 -3
  638. package/src/server/routers/edge/index.ts +0 -14
  639. package/src/server/routers/edge/upload.ts +0 -16
  640. package/src/services/aiModel/client.ts +0 -70
  641. package/src/services/aiModel/server.test.ts +0 -122
  642. package/src/services/aiModel/server.ts +0 -51
  643. package/src/services/aiModel/type.ts +0 -32
  644. package/src/services/aiProvider/client.ts +0 -58
  645. package/src/services/aiProvider/server.ts +0 -43
  646. package/src/services/aiProvider/type.ts +0 -27
  647. package/src/services/baseClientService/index.ts +0 -9
  648. package/src/services/chat/__snapshots__/chat.test.ts.snap +0 -110
  649. package/src/services/chatGroup/client.ts +0 -63
  650. package/src/services/chatGroup/server.ts +0 -67
  651. package/src/services/chatGroup/type.ts +0 -22
  652. package/src/services/export/_deprecated.ts +0 -155
  653. package/src/services/export/client.ts +0 -15
  654. package/src/services/export/server.ts +0 -9
  655. package/src/services/export/type.ts +0 -5
  656. package/src/services/file/_deprecated.test.ts +0 -119
  657. package/src/services/file/_deprecated.ts +0 -80
  658. package/src/services/file/client.test.ts +0 -199
  659. package/src/services/file/client.ts +0 -85
  660. package/src/services/file/server.ts +0 -53
  661. package/src/services/file/type.ts +0 -13
  662. package/src/services/import/_deprecated.ts +0 -115
  663. package/src/services/import/client.test.ts +0 -1015
  664. package/src/services/import/client.ts +0 -64
  665. package/src/services/import/server.ts +0 -133
  666. package/src/services/import/type.ts +0 -17
  667. package/src/services/message/_deprecated.test.ts +0 -398
  668. package/src/services/message/_deprecated.ts +0 -168
  669. package/src/services/message/client.test.ts +0 -410
  670. package/src/services/message/client.ts +0 -186
  671. package/src/services/message/server.ts +0 -150
  672. package/src/services/message/type.ts +0 -54
  673. package/src/services/plugin/_deprecated.test.ts +0 -162
  674. package/src/services/plugin/_deprecated.ts +0 -42
  675. package/src/services/plugin/client.test.ts +0 -177
  676. package/src/services/plugin/client.ts +0 -46
  677. package/src/services/plugin/server.ts +0 -42
  678. package/src/services/plugin/type.ts +0 -23
  679. package/src/services/session/_deprecated.test.ts +0 -440
  680. package/src/services/session/_deprecated.ts +0 -190
  681. package/src/services/session/client.test.ts +0 -413
  682. package/src/services/session/client.ts +0 -193
  683. package/src/services/session/server.test.ts +0 -260
  684. package/src/services/session/server.ts +0 -125
  685. package/src/services/session/type.ts +0 -82
  686. package/src/services/thread/client.ts +0 -51
  687. package/src/services/thread/server.ts +0 -32
  688. package/src/services/thread/type.ts +0 -21
  689. package/src/services/topic/_deprecated.test.ts +0 -245
  690. package/src/services/topic/_deprecated.ts +0 -75
  691. package/src/services/topic/client.ts +0 -89
  692. package/src/services/topic/pglite.test.ts +0 -212
  693. package/src/services/topic/server.ts +0 -57
  694. package/src/services/topic/type.ts +0 -40
  695. package/src/services/user/_deprecated.test.ts +0 -101
  696. package/src/services/user/_deprecated.ts +0 -70
  697. package/src/services/user/client.test.ts +0 -108
  698. package/src/services/user/client.ts +0 -104
  699. package/src/services/user/server.test.ts +0 -149
  700. package/src/services/user/server.ts +0 -47
  701. package/src/services/user/type.ts +0 -21
  702. package/src/store/chat/slices/builtinTool/actions/__tests__/dalle.test.ts +0 -121
  703. package/src/store/chat/slices/builtinTool/actions/dalle.ts +0 -124
  704. package/src/store/global/actions/clientDb.ts +0 -67
  705. package/src/store/user/slices/modelList/__snapshots__/action.test.ts.snap +0 -12
  706. package/src/store/user/slices/modelList/action.test.ts +0 -359
  707. package/src/store/user/slices/modelList/action.ts +0 -223
  708. package/src/store/user/slices/modelList/initialState.ts +0 -15
  709. package/src/store/user/slices/modelList/reducers/customModelCard.test.ts +0 -204
  710. package/src/store/user/slices/modelList/reducers/customModelCard.ts +0 -64
  711. package/src/store/user/slices/modelList/selectors/index.ts +0 -3
  712. package/src/store/user/slices/modelList/selectors/keyVaults.test.ts +0 -201
  713. package/src/store/user/slices/modelList/selectors/keyVaults.ts +0 -50
  714. package/src/store/user/slices/modelList/selectors/modelConfig.test.ts +0 -219
  715. package/src/store/user/slices/modelList/selectors/modelConfig.ts +0 -95
  716. package/src/store/user/slices/modelList/selectors/modelProvider.test.ts +0 -138
  717. package/src/store/user/slices/modelList/selectors/modelProvider.ts +0 -170
  718. package/src/tools/dalle/Render/GalleyGrid.tsx +0 -60
  719. package/src/tools/dalle/Render/Item/EditMode.tsx +0 -66
  720. package/src/tools/dalle/Render/Item/Error.tsx +0 -49
  721. package/src/tools/dalle/Render/Item/Image.tsx +0 -44
  722. package/src/tools/dalle/Render/Item/ImageFileItem.tsx +0 -57
  723. package/src/tools/dalle/Render/Item/index.tsx +0 -88
  724. package/src/tools/dalle/Render/ToolBar.tsx +0 -56
  725. package/src/tools/dalle/Render/index.tsx +0 -52
  726. package/src/tools/dalle/index.ts +0 -92
  727. /package/src/{app/[variants]/(main)/settings/provider/features/ProviderConfig → components/Skeleton}/SkeletonInput.tsx +0 -0
  728. /package/src/{middleware.ts → proxy.ts} +0 -0
@@ -1,8 +1,5 @@
1
1
  import { Mock, beforeEach, describe, expect, it, vi } from 'vitest';
2
2
 
3
- import { edgeClient } from '@/libs/trpc/client';
4
- import { globalHelpers } from '@/store/global/helpers';
5
-
6
3
  import { toolService } from '../tool';
7
4
  import openAPIV3 from './openai/OpenAPI_V3.json';
8
5
  import OpenAIPlugin from './openai/plugin.json';
@@ -1,10 +1,7 @@
1
1
  import { testService } from '~test-utils';
2
2
 
3
- import { ClientService } from './client';
4
- import { ServerService } from './server';
3
+ import { AiModelService } from './index';
5
4
 
6
- describe('aiModelService', () => {
7
- testService(ServerService);
8
-
9
- testService(ClientService);
5
+ describe('AiModelService', () => {
6
+ testService(AiModelService);
10
7
  });
@@ -1,9 +1,57 @@
1
- import { isDesktop } from '@/const/version';
1
+ import {
2
+ AiModelSortMap,
3
+ AiProviderModelListItem,
4
+ CreateAiModelParams,
5
+ ToggleAiModelEnableParams,
6
+ UpdateAiModelParams,
7
+ } from 'model-bank';
2
8
 
3
- import { ClientService } from './client';
4
- import { ServerService } from './server';
9
+ import { lambdaClient } from '@/libs/trpc/client';
5
10
 
6
- export const aiModelService =
7
- process.env.NEXT_PUBLIC_SERVICE_MODE === 'server' || isDesktop
8
- ? new ServerService()
9
- : new ClientService();
11
+ export class AiModelService {
12
+ createAiModel = async (params: CreateAiModelParams) => {
13
+ return lambdaClient.aiModel.createAiModel.mutate(params);
14
+ };
15
+
16
+ getAiProviderModelList = async (id: string): Promise<AiProviderModelListItem[]> => {
17
+ return lambdaClient.aiModel.getAiProviderModelList.query({ id });
18
+ };
19
+
20
+ getAiModelById = async (id: string) => {
21
+ return lambdaClient.aiModel.getAiModelById.query({ id });
22
+ };
23
+
24
+ toggleModelEnabled = async (params: ToggleAiModelEnableParams) => {
25
+ return lambdaClient.aiModel.toggleModelEnabled.mutate(params);
26
+ };
27
+
28
+ updateAiModel = async (id: string, providerId: string, value: UpdateAiModelParams) => {
29
+ return lambdaClient.aiModel.updateAiModel.mutate({ id, providerId, value });
30
+ };
31
+
32
+ batchUpdateAiModels = async (id: string, models: AiProviderModelListItem[]) => {
33
+ return lambdaClient.aiModel.batchUpdateAiModels.mutate({ id, models });
34
+ };
35
+
36
+ batchToggleAiModels = async (id: string, models: string[], enabled: boolean) => {
37
+ return lambdaClient.aiModel.batchToggleAiModels.mutate({ enabled, id, models });
38
+ };
39
+
40
+ clearModelsByProvider = async (providerId: string) => {
41
+ return lambdaClient.aiModel.clearModelsByProvider.mutate({ providerId });
42
+ };
43
+
44
+ clearRemoteModels = async (providerId: string) => {
45
+ return lambdaClient.aiModel.clearRemoteModels.mutate({ providerId });
46
+ };
47
+
48
+ updateAiModelOrder = async (providerId: string, items: AiModelSortMap[]) => {
49
+ return lambdaClient.aiModel.updateAiModelOrder.mutate({ providerId, sortMap: items });
50
+ };
51
+
52
+ deleteAiModel = async (params: { id: string; providerId: string }) => {
53
+ return lambdaClient.aiModel.removeAiModel.mutate(params);
54
+ };
55
+ }
56
+
57
+ export const aiModelService = new AiModelService();
@@ -1,10 +1,7 @@
1
1
  import { testService } from '~test-utils';
2
2
 
3
- import { ClientService } from './client';
4
- import { ServerService } from './server';
3
+ import { AiProviderService } from './index';
5
4
 
6
5
  describe('aiProviderService', () => {
7
- testService(ServerService);
8
-
9
- testService(ClientService);
6
+ testService(AiProviderService);
10
7
  });
@@ -1,9 +1,49 @@
1
- import { isDesktop } from '@/const/version';
1
+ import {
2
+ AiProviderDetailItem,
3
+ AiProviderRuntimeState,
4
+ AiProviderSortMap,
5
+ CreateAiProviderParams,
6
+ UpdateAiProviderConfigParams,
7
+ } from '@/types/aiProvider';
2
8
 
3
- import { ClientService } from './client';
4
- import { ServerService } from './server';
9
+ import { lambdaClient } from '@/libs/trpc/client';
5
10
 
6
- export const aiProviderService =
7
- process.env.NEXT_PUBLIC_SERVICE_MODE === 'server' || isDesktop
8
- ? new ServerService()
9
- : new ClientService();
11
+ export class AiProviderService {
12
+ createAiProvider = async (params: CreateAiProviderParams) => {
13
+ return lambdaClient.aiProvider.createAiProvider.mutate(params);
14
+ };
15
+
16
+ getAiProviderList = async () => {
17
+ return lambdaClient.aiProvider.getAiProviderList.query();
18
+ };
19
+
20
+ getAiProviderById = async (id: string): Promise<AiProviderDetailItem | undefined> => {
21
+ return lambdaClient.aiProvider.getAiProviderById.query({ id });
22
+ };
23
+
24
+ toggleProviderEnabled = async (id: string, enabled: boolean) => {
25
+ return lambdaClient.aiProvider.toggleProviderEnabled.mutate({ enabled, id });
26
+ };
27
+
28
+ updateAiProvider = async (id: string, value: any) => {
29
+ return lambdaClient.aiProvider.updateAiProvider.mutate({ id, value });
30
+ };
31
+
32
+ updateAiProviderConfig = async (id: string, value: UpdateAiProviderConfigParams) => {
33
+ return lambdaClient.aiProvider.updateAiProviderConfig.mutate({ id, value });
34
+ };
35
+
36
+ updateAiProviderOrder = async (items: AiProviderSortMap[]) => {
37
+ return lambdaClient.aiProvider.updateAiProviderOrder.mutate({ sortMap: items });
38
+ };
39
+
40
+ deleteAiProvider = async (id: string) => {
41
+ return lambdaClient.aiProvider.removeAiProvider.mutate({ id });
42
+ };
43
+
44
+ getAiProviderRuntimeState = async (isLogin?: boolean): Promise<AiProviderRuntimeState> => {
45
+ return lambdaClient.aiProvider.getAiProviderRuntimeState.query({ isLogin });
46
+ };
47
+ }
48
+
49
+ export const aiProviderService = new AiProviderService();
@@ -8,18 +8,12 @@ import { type Mock, afterEach, beforeEach, describe, expect, it, vi } from 'vite
8
8
 
9
9
  import { DEFAULT_USER_AVATAR } from '@/const/meta';
10
10
  import { DEFAULT_AGENT_CONFIG } from '@/const/settings';
11
- import * as isCanUseFCModule from '@/helpers/isCanUseFC';
12
11
  import * as toolEngineeringModule from '@/helpers/toolEngineering';
13
- import { agentChatConfigSelectors, agentSelectors } from '@/store/agent/selectors';
12
+ import { agentChatConfigSelectors } from '@/store/agent/selectors';
14
13
  import { aiModelSelectors } from '@/store/aiInfra';
15
14
  import { useToolStore } from '@/store/tool';
16
- import { toolSelectors } from '@/store/tool/selectors';
17
- import { modelProviderSelectors } from '@/store/user/selectors';
18
- import { DalleManifest } from '@/tools/dalle';
19
15
  import { WebBrowsingManifest } from '@/tools/web-browsing';
20
16
 
21
- import { API_ENDPOINTS } from '../_url';
22
- import * as helpers from './helper';
23
17
  import { chatService } from './index';
24
18
 
25
19
  // Mocking external dependencies
@@ -290,6 +284,9 @@ describe('ChatService', () => {
290
284
  vi.mocked(parseDataUri).mockReturnValue({ type: 'url', base64: null, mimeType: null });
291
285
  vi.mocked(isDesktopLocalStaticServerUrl).mockReturnValue(false); // Not a local URL
292
286
 
287
+ // Mock aiModelSelectors to return true for vision support
288
+ vi.spyOn(aiModelSelectors, 'isModelSupportVision').mockReturnValue(() => true);
289
+
293
290
  const messages = [
294
291
  {
295
292
  content: 'Hello',
@@ -375,6 +372,9 @@ describe('ChatService', () => {
375
372
  mimeType: 'image/png',
376
373
  });
377
374
 
375
+ // Mock aiModelSelectors to return true for vision support
376
+ vi.spyOn(aiModelSelectors, 'isModelSupportVision').mockReturnValue(() => true);
377
+
378
378
  const messages = [
379
379
  {
380
380
  content: 'Hello',
@@ -447,6 +447,9 @@ describe('ChatService', () => {
447
447
  vi.mocked(isDesktopLocalStaticServerUrl).mockReturnValue(false); // This is NOT a local URL
448
448
  vi.mocked(imageUrlToBase64).mockClear(); // Clear to ensure it's not called
449
449
 
450
+ // Mock aiModelSelectors to return true for vision support
451
+ vi.spyOn(aiModelSelectors, 'isModelSupportVision').mockReturnValue(() => true);
452
+
450
453
  const messages = [
451
454
  {
452
455
  content: 'Hello',
@@ -524,6 +527,9 @@ describe('ChatService', () => {
524
527
  mimeType: 'image/jpeg',
525
528
  });
526
529
 
530
+ // Mock aiModelSelectors to return true for vision support
531
+ vi.spyOn(aiModelSelectors, 'isModelSupportVision').mockReturnValue(() => true);
532
+
527
533
  const messages = [
528
534
  {
529
535
  content: 'Multiple images',
@@ -831,39 +837,6 @@ describe('ChatService', () => {
831
837
  undefined,
832
838
  );
833
839
  });
834
-
835
- it('work with dalle3', async () => {
836
- const getChatCompletionSpy = vi.spyOn(chatService, 'getChatCompletion');
837
- const messages = [
838
- {
839
- role: 'user',
840
- content: 'https://vercel.com/ 请分析 chatGPT 关键词\n\n',
841
- sessionId: 'inbox',
842
- createdAt: 1702723964330,
843
- id: 'vyQvEw6V',
844
- updatedAt: 1702723964330,
845
- extra: {},
846
- meta: {
847
- avatar: DEFAULT_USER_AVATAR,
848
- },
849
- },
850
- ] as UIChatMessage[];
851
-
852
- await chatService.createAssistantMessage({
853
- messages,
854
- model: 'gpt-3.5-turbo-1106',
855
- top_p: 1,
856
- plugins: [DalleManifest.identifier],
857
- });
858
-
859
- // Assert that getChatCompletionSpy was called with the expected arguments
860
- expect(getChatCompletionSpy).toHaveBeenCalled();
861
-
862
- const calls = getChatCompletionSpy.mock.lastCall;
863
- // Take a snapshot of the first call's first argument
864
- expect(calls![0]).toMatchSnapshot();
865
- expect(calls![1]).toBeUndefined();
866
- });
867
840
  });
868
841
 
869
842
  describe('search functionality', () => {
@@ -248,36 +248,6 @@ describe('contextEngineering', () => {
248
248
  ]);
249
249
  });
250
250
 
251
- it('should inject INBOX_GUIDE_SYSTEM_ROLE for welcome questions in inbox session', async () => {
252
- // Don't mock INBOX_GUIDE_SYSTEMROLE, use the real one
253
- const messages: UIChatMessage[] = [
254
- {
255
- role: 'user',
256
- content: 'Hello, this is my first question',
257
- createdAt: Date.now(),
258
- id: 'test-welcome',
259
- meta: {},
260
- updatedAt: Date.now(),
261
- },
262
- ];
263
-
264
- const result = await contextEngineering({
265
- messages,
266
- model: 'gpt-4',
267
- provider: 'openai',
268
- isWelcomeQuestion: true,
269
- sessionId: 'inbox',
270
- });
271
-
272
- // Should have system message with inbox guide content
273
- const systemMessage = result.find((msg) => msg.role === 'system');
274
- expect(systemMessage).toBeDefined();
275
- // Check for characteristic content of the actual INBOX_GUIDE_SYSTEMROLE
276
- expect(systemMessage!.content).toContain('LobeChat Support Assistant');
277
- expect(systemMessage!.content).toContain('LobeHub');
278
- expect(Object.keys(systemMessage!).length).toEqual(2);
279
- });
280
-
281
251
  it('should inject historySummary into system message when provided', async () => {
282
252
  const historySummary = 'Previous conversation summary: User discussed AI topics.';
283
253
 
@@ -1,9 +1,9 @@
1
- import { INBOX_GUIDE_SYSTEMROLE, INBOX_SESSION_ID, isDesktop, isServerMode } from '@lobechat/const';
1
+ import { isDesktop, isServerMode } from '@lobechat/const';
2
2
  import {
3
3
  ContextEngine,
4
+ GroupMessageFlattenProcessor,
4
5
  HistorySummaryProvider,
5
6
  HistoryTruncateProcessor,
6
- InboxGuideProvider,
7
7
  InputTemplateProcessor,
8
8
  MessageCleanupProcessor,
9
9
  MessageContentProcessor,
@@ -29,7 +29,6 @@ interface ContextEngineeringContext {
29
29
  historyCount?: number;
30
30
  historySummary?: string;
31
31
  inputTemplate?: string;
32
- isWelcomeQuestion?: boolean;
33
32
  messages: UIChatMessage[];
34
33
  model: string;
35
34
  provider: string;
@@ -48,8 +47,6 @@ export const contextEngineering = async ({
48
47
  enableHistoryCount,
49
48
  historyCount,
50
49
  historySummary,
51
- sessionId,
52
- isWelcomeQuestion,
53
50
  }: ContextEngineeringContext): Promise<OpenAIChatMessage[]> => {
54
51
  const toolNameResolver = new ToolNameResolver();
55
52
 
@@ -63,14 +60,6 @@ export const contextEngineering = async ({
63
60
  // 2. System role injection (agent's system role)
64
61
  new SystemRoleInjector({ systemRole }),
65
62
 
66
- // 3. Inbox guide system role injection
67
- new InboxGuideProvider({
68
- inboxGuideSystemRole: INBOX_GUIDE_SYSTEMROLE,
69
- inboxSessionId: INBOX_SESSION_ID,
70
- isWelcomeQuestion: isWelcomeQuestion,
71
- sessionId: sessionId,
72
- }),
73
-
74
63
  // 4. Tool system role injection
75
64
  new ToolSystemRoleProvider({
76
65
  getToolSystemRoles: (tools) => toolSelectors.enabledSystemRoles(tools)(getToolStoreState()),
@@ -89,14 +78,15 @@ export const contextEngineering = async ({
89
78
  // Create message processing processors
90
79
 
91
80
  // 6. Input template processing
92
- new InputTemplateProcessor({
93
- inputTemplate,
94
- }),
81
+ new InputTemplateProcessor({ inputTemplate }),
95
82
 
96
83
  // 7. Placeholder variables processing
97
84
  new PlaceholderVariablesProcessor({ variableGenerators: VARIABLE_GENERATORS }),
98
85
 
99
- // 8. Message content processing
86
+ // 8. Group message flatten (convert role=group to standard assistant + tool messages)
87
+ new GroupMessageFlattenProcessor(),
88
+
89
+ // 8.5 Message content processing
100
90
  new MessageContentProcessor({
101
91
  fileContext: { enabled: isServerMode, includeFileUrl: !isDesktop },
102
92
  isCanUseVideo,
@@ -1,16 +1,9 @@
1
- import { isDeprecatedEdition } from '@lobechat/const';
2
1
  import { ModelProvider } from 'model-bank';
3
2
 
4
3
  import { getAiInfraStoreState } from '@/store/aiInfra';
5
4
  import { aiModelSelectors, aiProviderSelectors } from '@/store/aiInfra/selectors';
6
- import { getUserStoreState, useUserStore } from '@/store/user';
7
- import { modelConfigSelectors, modelProviderSelectors } from '@/store/user/selectors';
8
5
 
9
6
  export const isCanUseVision = (model: string, provider: string): boolean => {
10
- // TODO: remove isDeprecatedEdition condition in V2.0
11
- if (isDeprecatedEdition) {
12
- return modelProviderSelectors.isModelEnabledVision(model)(getUserStoreState());
13
- }
14
7
  return aiModelSelectors.isModelSupportVision(model, provider)(getAiInfraStoreState());
15
8
  };
16
9
 
@@ -24,40 +17,23 @@ export const isCanUseVideo = (model: string, provider: string): boolean => {
24
17
  export const findDeploymentName = (model: string, provider: string) => {
25
18
  let deploymentId = model;
26
19
 
27
- // TODO: remove isDeprecatedEdition condition in V2.0
28
- if (isDeprecatedEdition) {
29
- const chatModelCards = modelProviderSelectors.getModelCardsById(ModelProvider.Azure)(
30
- useUserStore.getState(),
31
- );
32
-
33
- const deploymentName = chatModelCards.find((i) => i.id === model)?.deploymentName;
34
- if (deploymentName) deploymentId = deploymentName;
35
- } else {
36
- // find the model by id
37
- const modelItem = getAiInfraStoreState().enabledAiModels?.find(
38
- (i) => i.id === model && i.providerId === provider,
39
- );
20
+ // find the model by id
21
+ const modelItem = getAiInfraStoreState().enabledAiModels?.find(
22
+ (i) => i.id === model && i.providerId === provider,
23
+ );
40
24
 
41
- if (modelItem && modelItem.config?.deploymentName) {
42
- deploymentId = modelItem.config?.deploymentName;
43
- }
25
+ if (modelItem && modelItem.config?.deploymentName) {
26
+ deploymentId = modelItem.config?.deploymentName;
44
27
  }
45
28
 
46
29
  return deploymentId;
47
30
  };
48
31
 
49
32
  export const isEnableFetchOnClient = (provider: string) => {
50
- // TODO: remove this condition in V2.0
51
- if (isDeprecatedEdition) {
52
- return modelConfigSelectors.isProviderFetchOnClient(provider)(useUserStore.getState());
53
- } else {
54
- return aiProviderSelectors.isProviderFetchOnClient(provider)(getAiInfraStoreState());
55
- }
33
+ return aiProviderSelectors.isProviderFetchOnClient(provider)(getAiInfraStoreState());
56
34
  };
57
35
 
58
36
  export const resolveRuntimeProvider = (provider: string) => {
59
- if (isDeprecatedEdition) return provider;
60
-
61
37
  const isBuiltin = Object.values(ModelProvider).includes(provider as any);
62
38
  if (isBuiltin) return provider;
63
39
 
@@ -52,12 +52,12 @@ interface FetchAITaskResultParams extends FetchSSEOptions {
52
52
  abortController?: AbortController;
53
53
  onError?: (e: Error, rawError?: any) => void;
54
54
  /**
55
- * 加载状态变化处理函数
56
- * @param loading - 是否处于加载状态
55
+ * Loading state change handler function
56
+ * @param loading - Whether in loading state
57
57
  */
58
58
  onLoadingChange?: (loading: boolean) => void;
59
59
  /**
60
- * 请求对象
60
+ * Request object
61
61
  */
62
62
  params: ChatStreamInputParams;
63
63
  trace?: TracePayload;
@@ -66,7 +66,6 @@ interface FetchAITaskResultParams extends FetchSSEOptions {
66
66
  interface CreateAssistantMessageStream extends FetchSSEOptions {
67
67
  abortController?: AbortController;
68
68
  historySummary?: string;
69
- isWelcomeQuestion?: boolean;
70
69
  params: GetChatCompletionPayload;
71
70
  trace?: TracePayload;
72
71
  }
@@ -113,9 +112,7 @@ class ChatService {
113
112
  enableHistoryCount: agentChatConfigSelectors.enableHistoryCount(agentStoreState),
114
113
  // include user messages
115
114
  historyCount: agentChatConfigSelectors.historyCount(agentStoreState) + 2,
116
- historySummary: options?.historySummary,
117
115
  inputTemplate: chatConfig.inputTemplate,
118
- isWelcomeQuestion: options?.isWelcomeQuestion,
119
116
  messages,
120
117
  model: payload.model,
121
118
  provider: payload.provider!,
@@ -217,12 +214,10 @@ class ChatService {
217
214
  onErrorHandle,
218
215
  onFinish,
219
216
  trace,
220
- isWelcomeQuestion,
221
217
  historySummary,
222
218
  }: CreateAssistantMessageStream) => {
223
219
  await this.createAssistantMessage(params, {
224
220
  historySummary,
225
- isWelcomeQuestion,
226
221
  onAbort,
227
222
  onErrorHandle,
228
223
  onFinish,
@@ -404,7 +399,7 @@ class ChatService {
404
399
  onLoadingChange?.(true);
405
400
 
406
401
  try {
407
- const oaiMessages = await contextEngineering({
402
+ const llmMessages = await contextEngineering({
408
403
  messages: params.messages as any,
409
404
  model: params.model!,
410
405
  provider: params.provider!,
@@ -421,7 +416,7 @@ class ChatService {
421
416
  // remove plugins
422
417
  delete params.plugins;
423
418
  await this.getChatCompletion(
424
- { ...params, messages: oaiMessages, tools },
419
+ { ...params, messages: llmMessages, tools },
425
420
  {
426
421
  onErrorHandle: (error) => {
427
422
  errorHandle(new Error(error.message), error);
@@ -1,9 +1,9 @@
1
1
  import { TracePayload } from '@lobechat/types';
2
+
2
3
  import { FetchSSEOptions } from '@/utils/fetch';
3
4
 
4
5
  export interface FetchOptions extends FetchSSEOptions {
5
6
  historySummary?: string;
6
- isWelcomeQuestion?: boolean;
7
7
  signal?: AbortSignal | undefined;
8
8
  trace?: TracePayload;
9
9
  }
@@ -1,12 +1,67 @@
1
- import { isDesktop } from '@/const/version';
1
+ import {
2
+ ChatGroupAgentItem,
3
+ ChatGroupItem,
4
+ NewChatGroup,
5
+ NewChatGroupAgent,
6
+ } from '@/database/schemas';
7
+ import { lambdaClient } from '@/libs/trpc/client';
2
8
 
3
- import { ClientService } from './client';
4
- import { ServerService } from './server';
9
+ class ChatGroupService {
10
+ createGroup = (params: Omit<NewChatGroup, 'userId'>): Promise<ChatGroupItem> => {
11
+ return lambdaClient.group.createGroup.mutate({
12
+ ...params,
13
+ config: params.config as any,
14
+ });
15
+ };
5
16
 
6
- const clientService =
7
- process.env.NEXT_PUBLIC_CLIENT_DB === 'pglite' ? new ClientService() : new ServerService();
17
+ updateGroup = (id: string, value: Partial<ChatGroupItem>): Promise<ChatGroupItem> => {
18
+ return lambdaClient.group.updateGroup.mutate({
19
+ id,
20
+ value: {
21
+ ...value,
22
+ config: value.config as any,
23
+ },
24
+ });
25
+ };
8
26
 
9
- export const chatGroupService =
10
- process.env.NEXT_PUBLIC_SERVICE_MODE === 'server' || isDesktop
11
- ? new ServerService()
12
- : clientService;
27
+ deleteGroup = (id: string) => {
28
+ return lambdaClient.group.deleteGroup.mutate({ id });
29
+ };
30
+
31
+ getGroup = (id: string): Promise<ChatGroupItem | undefined> => {
32
+ return lambdaClient.group.getGroup.query({ id });
33
+ };
34
+
35
+ getGroups = (): Promise<ChatGroupItem[]> => {
36
+ return lambdaClient.group.getGroups.query();
37
+ };
38
+
39
+ addAgentsToGroup = (groupId: string, agentIds: string[]): Promise<ChatGroupAgentItem[]> => {
40
+ return lambdaClient.group.addAgentsToGroup.mutate({ agentIds, groupId });
41
+ };
42
+
43
+ removeAgentsFromGroup = (groupId: string, agentIds: string[]) => {
44
+ return lambdaClient.group.removeAgentsFromGroup.mutate({ agentIds, groupId });
45
+ };
46
+
47
+ updateAgentInGroup = (
48
+ groupId: string,
49
+ agentId: string,
50
+ updates: Partial<Pick<NewChatGroupAgent, 'order' | 'role'>>,
51
+ ): Promise<ChatGroupAgentItem> => {
52
+ return lambdaClient.group.updateAgentInGroup.mutate({
53
+ agentId,
54
+ groupId,
55
+ updates: {
56
+ order: updates.order === null ? undefined : updates.order,
57
+ role: updates.role === null ? undefined : updates.role,
58
+ },
59
+ });
60
+ };
61
+
62
+ getGroupAgents = (groupId: string): Promise<ChatGroupAgentItem[]> => {
63
+ return lambdaClient.group.getGroupAgents.query({ groupId });
64
+ };
65
+ }
66
+
67
+ export const chatGroupService = new ChatGroupService();
@@ -1,23 +1,13 @@
1
- import { BRANDING_NAME, isDeprecatedEdition, isServerMode } from '@lobechat/const';
1
+ import { BRANDING_NAME, isServerMode } from '@lobechat/const';
2
2
  import { downloadFile, exportJSONFile } from '@lobechat/utils/client';
3
3
  import dayjs from 'dayjs';
4
4
 
5
- import { CURRENT_CONFIG_VERSION } from '@/migrations';
6
5
  import { ImportPgDataStructure } from '@/types/export';
7
6
 
8
7
  import { exportService } from './export';
9
- import { configService as deprecatedExportService } from './export/_deprecated';
10
8
 
11
9
  class ConfigService {
12
10
  exportAll = async () => {
13
- // TODO: remove this in V2
14
- if (isDeprecatedEdition) {
15
- const config = await deprecatedExportService.exportAll();
16
- const filename = `${BRANDING_NAME}-config-v${CURRENT_CONFIG_VERSION}.json`;
17
- exportJSONFile(config, filename);
18
- return;
19
- }
20
-
21
11
  const { data, url } = await exportService.exportData();
22
12
  const filename = `${dayjs().format('YYYY-MM-DD-hh-mm')}_${BRANDING_NAME}-data.json`;
23
13
 
@@ -34,60 +24,6 @@ class ConfigService {
34
24
  exportJSONFile(result, filename);
35
25
  };
36
26
 
37
- exportAgents = async () => {
38
- // TODO: remove this in V2
39
- if (isDeprecatedEdition) {
40
- const config = await deprecatedExportService.exportAgents();
41
- const filename = `${BRANDING_NAME}-agents-v${CURRENT_CONFIG_VERSION}.json`;
42
- exportJSONFile(config, filename);
43
- return;
44
- }
45
- };
46
-
47
- exportSingleAgent = async (agentId: string) => {
48
- // TODO: remove this in V2
49
- if (isDeprecatedEdition) {
50
- const result = await deprecatedExportService.exportSingleAgent(agentId);
51
- if (!result) return;
52
-
53
- const filename = `${BRANDING_NAME}-${result.title}-v${CURRENT_CONFIG_VERSION}.json`;
54
- exportJSONFile(result.config, filename);
55
- return;
56
- }
57
- };
58
-
59
- exportSessions = async () => {
60
- // TODO: remove this in V2
61
- if (isDeprecatedEdition) {
62
- const config = await deprecatedExportService.exportSessions();
63
- const filename = `${BRANDING_NAME}-sessions-v${CURRENT_CONFIG_VERSION}.json`;
64
- exportJSONFile(config, filename);
65
- return;
66
- }
67
- };
68
-
69
- exportSettings = async () => {
70
- // TODO: remove this in V2
71
- if (isDeprecatedEdition) {
72
- const config = await deprecatedExportService.exportSessions();
73
- const filename = `${BRANDING_NAME}-settings-v${CURRENT_CONFIG_VERSION}.json`;
74
- exportJSONFile(config, filename);
75
- return;
76
- }
77
- };
78
-
79
- exportSingleSession = async (sessionId: string) => {
80
- // TODO: remove this in V2
81
- if (isDeprecatedEdition) {
82
- const data = await deprecatedExportService.exportSingleSession(sessionId);
83
- if (!data) return;
84
-
85
- const filename = `${BRANDING_NAME}-${data.title}-v${CURRENT_CONFIG_VERSION}.json`;
86
- exportJSONFile(data.config, filename);
87
- return;
88
- }
89
- };
90
-
91
27
  private createDataStructure = async (
92
28
  data: any,
93
29
  mode: 'pglite' | 'postgres',
@@ -1,6 +1,11 @@
1
- import { isServerMode } from '@/const/version';
1
+ import { ExportDatabaseData } from '@/types/export';
2
2
 
3
- import { ClientService } from './client';
4
- import { ServerService } from './server';
3
+ import { lambdaClient } from '@/libs/trpc/client';
5
4
 
6
- export const exportService = isServerMode ? new ServerService() : new ClientService();
5
+ class ExportService {
6
+ exportData = async (): Promise<ExportDatabaseData> => {
7
+ return await lambdaClient.exporter.exportData.mutate();
8
+ };
9
+ }
10
+
11
+ export const exportService = new ExportService();