@lobehub/chat 1.124.0 → 1.124.2

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 (145) hide show
  1. package/.env.example +5 -0
  2. package/.github/scripts/pr-comment.js +11 -2
  3. package/.github/workflows/desktop-pr-build.yml +86 -12
  4. package/.github/workflows/release-desktop-beta.yml +91 -20
  5. package/CHANGELOG.md +58 -0
  6. package/Dockerfile +2 -0
  7. package/Dockerfile.database +2 -0
  8. package/Dockerfile.pglite +2 -0
  9. package/apps/desktop/electron-builder.js +8 -4
  10. package/changelog/v1.json +21 -0
  11. package/docs/self-hosting/environment-variables/model-provider.mdx +18 -0
  12. package/docs/self-hosting/environment-variables/model-provider.zh-CN.mdx +20 -0
  13. package/locales/ar/chat.json +2 -0
  14. package/locales/bg-BG/chat.json +2 -0
  15. package/locales/de-DE/chat.json +2 -0
  16. package/locales/en-US/chat.json +2 -0
  17. package/locales/es-ES/chat.json +2 -0
  18. package/locales/fa-IR/chat.json +2 -0
  19. package/locales/fr-FR/chat.json +2 -0
  20. package/locales/it-IT/chat.json +2 -0
  21. package/locales/ja-JP/chat.json +2 -0
  22. package/locales/ko-KR/chat.json +2 -0
  23. package/locales/nl-NL/chat.json +2 -0
  24. package/locales/pl-PL/chat.json +2 -0
  25. package/locales/pt-BR/chat.json +2 -0
  26. package/locales/ru-RU/chat.json +2 -0
  27. package/locales/tr-TR/chat.json +2 -0
  28. package/locales/vi-VN/chat.json +2 -0
  29. package/locales/zh-CN/chat.json +2 -0
  30. package/locales/zh-CN/modelProvider.json +1 -1
  31. package/locales/zh-TW/chat.json +2 -0
  32. package/package.json +1 -1
  33. package/packages/const/src/hotkeys.ts +1 -1
  34. package/packages/const/src/index.ts +1 -0
  35. package/packages/const/src/settings/hotkey.ts +3 -2
  36. package/packages/const/src/trace.ts +1 -1
  37. package/packages/const/src/user.ts +1 -2
  38. package/packages/database/src/client/db.test.ts +19 -13
  39. package/packages/electron-server-ipc/src/ipcClient.test.ts +783 -1
  40. package/packages/file-loaders/src/loadFile.test.ts +61 -0
  41. package/packages/file-loaders/src/utils/isTextReadableFile.test.ts +43 -0
  42. package/packages/file-loaders/src/utils/parser-utils.test.ts +155 -0
  43. package/packages/model-bank/src/aiModels/aihubmix.ts +38 -4
  44. package/packages/model-bank/src/aiModels/groq.ts +26 -8
  45. package/packages/model-bank/src/aiModels/hunyuan.ts +3 -3
  46. package/packages/model-bank/src/aiModels/modelscope.ts +13 -2
  47. package/packages/model-bank/src/aiModels/moonshot.ts +25 -5
  48. package/packages/model-bank/src/aiModels/novita.ts +40 -9
  49. package/packages/model-bank/src/aiModels/openrouter.ts +0 -13
  50. package/packages/model-bank/src/aiModels/qwen.ts +62 -1
  51. package/packages/model-bank/src/aiModels/siliconcloud.ts +20 -0
  52. package/packages/model-bank/src/aiModels/volcengine.ts +141 -15
  53. package/packages/model-runtime/package.json +2 -1
  54. package/packages/model-runtime/src/ai21/index.test.ts +2 -2
  55. package/packages/model-runtime/src/ai360/index.test.ts +2 -2
  56. package/packages/model-runtime/src/akashchat/index.test.ts +19 -0
  57. package/packages/model-runtime/src/anthropic/index.test.ts +1 -2
  58. package/packages/model-runtime/src/baichuan/index.test.ts +1 -2
  59. package/packages/model-runtime/src/bedrock/index.test.ts +1 -2
  60. package/packages/model-runtime/src/bfl/createImage.test.ts +1 -2
  61. package/packages/model-runtime/src/bfl/index.test.ts +1 -2
  62. package/packages/model-runtime/src/cloudflare/index.test.ts +1 -2
  63. package/packages/model-runtime/src/cohere/index.test.ts +19 -0
  64. package/packages/model-runtime/src/deepseek/index.test.ts +2 -2
  65. package/packages/model-runtime/src/fireworksai/index.test.ts +2 -2
  66. package/packages/model-runtime/src/giteeai/index.test.ts +2 -2
  67. package/packages/model-runtime/src/github/index.test.ts +2 -2
  68. package/packages/model-runtime/src/google/createImage.test.ts +1 -2
  69. package/packages/model-runtime/src/google/index.test.ts +1 -1
  70. package/packages/model-runtime/src/groq/index.test.ts +2 -3
  71. package/packages/model-runtime/src/huggingface/index.test.ts +40 -0
  72. package/packages/model-runtime/src/hunyuan/index.test.ts +2 -3
  73. package/packages/model-runtime/src/internlm/index.test.ts +2 -2
  74. package/packages/model-runtime/src/jina/index.test.ts +19 -0
  75. package/packages/model-runtime/src/lmstudio/index.test.ts +2 -2
  76. package/packages/model-runtime/src/minimax/index.test.ts +19 -0
  77. package/packages/model-runtime/src/mistral/index.test.ts +2 -3
  78. package/packages/model-runtime/src/modelscope/index.test.ts +19 -0
  79. package/packages/model-runtime/src/moonshot/index.test.ts +1 -2
  80. package/packages/model-runtime/src/nebius/index.test.ts +19 -0
  81. package/packages/model-runtime/src/newapi/index.test.ts +49 -42
  82. package/packages/model-runtime/src/newapi/index.ts +124 -143
  83. package/packages/model-runtime/src/novita/index.test.ts +3 -4
  84. package/packages/model-runtime/src/nvidia/index.test.ts +19 -0
  85. package/packages/model-runtime/src/openrouter/index.test.ts +2 -3
  86. package/packages/model-runtime/src/perplexity/index.test.ts +2 -3
  87. package/packages/model-runtime/src/ppio/index.test.ts +3 -4
  88. package/packages/model-runtime/src/qwen/index.test.ts +2 -2
  89. package/packages/model-runtime/src/sambanova/index.test.ts +19 -0
  90. package/packages/model-runtime/src/search1api/index.test.ts +19 -0
  91. package/packages/model-runtime/src/sensenova/index.test.ts +2 -2
  92. package/packages/model-runtime/src/spark/index.test.ts +2 -2
  93. package/packages/model-runtime/src/stepfun/index.test.ts +2 -2
  94. package/packages/model-runtime/src/taichu/index.test.ts +4 -5
  95. package/packages/model-runtime/src/tencentcloud/index.test.ts +1 -1
  96. package/packages/model-runtime/src/togetherai/index.test.ts +1 -2
  97. package/packages/model-runtime/src/upstage/index.test.ts +1 -2
  98. package/packages/model-runtime/src/utils/openaiCompatibleFactory/index.test.ts +9 -7
  99. package/packages/model-runtime/src/utils/streams/anthropic.ts +2 -2
  100. package/packages/model-runtime/src/utils/streams/openai/openai.ts +20 -13
  101. package/packages/model-runtime/src/utils/streams/openai/responsesStream.test.ts +1 -2
  102. package/packages/model-runtime/src/utils/streams/openai/responsesStream.ts +2 -2
  103. package/packages/model-runtime/src/utils/streams/protocol.ts +2 -2
  104. package/packages/model-runtime/src/wenxin/index.test.ts +2 -3
  105. package/packages/model-runtime/src/xai/index.test.ts +2 -2
  106. package/packages/model-runtime/src/zeroone/index.test.ts +1 -2
  107. package/packages/model-runtime/src/zhipu/index.test.ts +2 -3
  108. package/packages/model-runtime/vitest.config.mts +0 -7
  109. package/packages/types/src/index.ts +2 -0
  110. package/packages/types/src/message/base.ts +1 -1
  111. package/packages/types/src/openai/chat.ts +2 -3
  112. package/packages/utils/package.json +2 -1
  113. package/packages/utils/src/_deprecated/parseModels.test.ts +1 -1
  114. package/packages/utils/src/_deprecated/parseModels.ts +1 -1
  115. package/packages/utils/src/client/topic.test.ts +1 -2
  116. package/packages/utils/src/client/topic.ts +1 -2
  117. package/packages/utils/src/electron/desktopRemoteRPCFetch.ts +1 -1
  118. package/packages/utils/src/fetch/fetchSSE.ts +7 -8
  119. package/packages/utils/src/fetch/parseError.ts +1 -3
  120. package/packages/utils/src/format.test.ts +1 -2
  121. package/packages/utils/src/index.ts +1 -0
  122. package/packages/utils/src/toolManifest.ts +1 -2
  123. package/packages/utils/src/trace.ts +1 -1
  124. package/packages/utils/vitest.config.mts +1 -1
  125. package/packages/web-crawler/src/__tests__/urlRules.test.ts +275 -0
  126. package/packages/web-crawler/src/crawImpl/__tests__/exa.test.ts +269 -0
  127. package/packages/web-crawler/src/crawImpl/__tests__/firecrawl.test.ts +284 -0
  128. package/packages/web-crawler/src/crawImpl/__tests__/naive.test.ts +234 -0
  129. package/packages/web-crawler/src/crawImpl/__tests__/tavily.test.ts +359 -0
  130. package/packages/web-crawler/src/utils/__tests__/errorType.test.ts +217 -0
  131. package/packages/web-crawler/vitest.config.mts +3 -0
  132. package/scripts/electronWorkflow/mergeMacReleaseFiles.ts +207 -0
  133. package/src/app/[variants]/(main)/settings/provider/(detail)/newapi/page.tsx +1 -1
  134. package/src/components/Thinking/index.tsx +2 -3
  135. package/src/config/llm.ts +8 -0
  136. package/src/features/ChatInput/Desktop/index.tsx +16 -4
  137. package/src/features/ChatInput/StoreUpdater.tsx +2 -0
  138. package/src/libs/traces/index.ts +1 -1
  139. package/src/locales/default/chat.ts +1 -0
  140. package/src/locales/default/modelProvider.ts +1 -1
  141. package/src/server/modules/ModelRuntime/trace.ts +1 -2
  142. package/src/store/chat/slices/aiChat/actions/__tests__/cancel-functionality.test.ts +107 -0
  143. package/src/store/chat/slices/aiChat/actions/__tests__/generateAIChatV2.test.ts +352 -7
  144. package/src/store/chat/slices/aiChat/actions/generateAIChatV2.ts +2 -1
  145. package/packages/model-runtime/src/openrouter/__snapshots__/index.test.ts.snap +0 -113
@@ -70,6 +70,8 @@
70
70
  "input": {
71
71
  "addAi": "Dodaj wiadomość AI",
72
72
  "addUser": "Dodaj wiadomość użytkownika",
73
+ "disclaimer": "AI również może popełniać błędy, proszę sprawdzić ważne informacje",
74
+ "errorMsg": "Wysyłanie wiadomości nie powiodło się, sprawdź połączenie sieciowe i spróbuj ponownie: {{errorMsg}}",
73
75
  "more": "więcej",
74
76
  "send": "Wyślij",
75
77
  "sendWithCmdEnter": "Naciśnij <key/>, aby wysłać",
@@ -70,6 +70,8 @@
70
70
  "input": {
71
71
  "addAi": "Adicionar uma mensagem de IA",
72
72
  "addUser": "Adicionar uma mensagem de usuário",
73
+ "disclaimer": "A IA também pode cometer erros, por favor verifique as informações importantes",
74
+ "errorMsg": "Falha ao enviar a mensagem, verifique a rede e tente novamente: {{errorMsg}}",
73
75
  "more": "mais",
74
76
  "send": "Enviar",
75
77
  "sendWithCmdEnter": "Pressione <key/> para enviar",
@@ -70,6 +70,8 @@
70
70
  "input": {
71
71
  "addAi": "Добавить сообщение AI",
72
72
  "addUser": "Добавить сообщение пользователя",
73
+ "disclaimer": "ИИ также может ошибаться, пожалуйста, проверяйте важную информацию",
74
+ "errorMsg": "Не удалось отправить сообщение, проверьте подключение к сети и попробуйте снова: {{errorMsg}}",
73
75
  "more": "больше",
74
76
  "send": "Отправить",
75
77
  "sendWithCmdEnter": "Нажмите <key/> для отправки",
@@ -70,6 +70,8 @@
70
70
  "input": {
71
71
  "addAi": "Bir AI mesajı ekleyin",
72
72
  "addUser": "Bir kullanıcı mesajı ekleyin",
73
+ "disclaimer": "Yapay zeka da hata yapabilir, lütfen önemli bilgileri kontrol edin",
74
+ "errorMsg": "Mesaj gönderilemedi, lütfen ağı kontrol edip tekrar deneyin: {{errorMsg}}",
73
75
  "more": "Daha fazla",
74
76
  "send": "Gönder",
75
77
  "sendWithCmdEnter": "<key/> tuşuna basarak gönder",
@@ -70,6 +70,8 @@
70
70
  "input": {
71
71
  "addAi": "Thêm một tin nhắn AI",
72
72
  "addUser": "Thêm một tin nhắn người dùng",
73
+ "disclaimer": "AI cũng có thể mắc lỗi, vui lòng kiểm tra kỹ thông tin quan trọng",
74
+ "errorMsg": "Gửi tin nhắn thất bại, vui lòng kiểm tra mạng và thử lại: {{errorMsg}}",
73
75
  "more": "Thêm",
74
76
  "send": "Gửi",
75
77
  "sendWithCmdEnter": "Nhấn <key/> để gửi",
@@ -70,6 +70,8 @@
70
70
  "input": {
71
71
  "addAi": "添加一条 AI 消息",
72
72
  "addUser": "添加一条用户消息",
73
+ "disclaimer": "AI 也可能会犯错,请检查重要信息",
74
+ "errorMsg": "消息发送失败,请检查网络后重试: {{errorMsg}}",
73
75
  "more": "更多",
74
76
  "send": "发送",
75
77
  "sendWithCmdEnter": "按 <key/> 键发送",
@@ -161,7 +161,7 @@
161
161
  "title": "API 密钥"
162
162
  },
163
163
  "apiUrl": {
164
- "desc": "New API 服务的 API 地址,大部分时候需要带 /v1",
164
+ "desc": "New API 服务的 API 地址,大部分时候不要带 /v1",
165
165
  "title": "API 地址"
166
166
  },
167
167
  "enabled": {
@@ -70,6 +70,8 @@
70
70
  "input": {
71
71
  "addAi": "新增一條 AI 訊息",
72
72
  "addUser": "新增一條使用者訊息",
73
+ "disclaimer": "AI 也可能會犯錯,請檢查重要資訊",
74
+ "errorMsg": "訊息發送失敗,請檢查網路後重試:{{errorMsg}}",
73
75
  "more": "更多",
74
76
  "send": "發送",
75
77
  "sendWithCmdEnter": "按 <key/> 鍵發送",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lobehub/chat",
3
- "version": "1.124.0",
3
+ "version": "1.124.2",
4
4
  "description": "Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.",
5
5
  "keywords": [
6
6
  "framework",
@@ -6,7 +6,7 @@ import {
6
6
  HotkeyItem,
7
7
  HotkeyScopeEnum,
8
8
  KeyEnum,
9
- } from '@/types/hotkey';
9
+ } from '@lobechat/types';
10
10
 
11
11
  const combineKeys = (keys: string[]) => keys.join('+');
12
12
 
@@ -5,5 +5,6 @@ export * from './layoutTokens';
5
5
  export * from './message';
6
6
  export * from './session';
7
7
  export * from './settings';
8
+ export * from './trace';
8
9
  export * from './user';
9
10
  export * from './version';
@@ -1,5 +1,6 @@
1
- import { HOTKEYS_REGISTRATION } from '@/const/hotkeys';
2
- import { UserHotkeyConfig } from '@/types/user/settings';
1
+ import { UserHotkeyConfig } from '@lobechat/types';
2
+
3
+ import { HOTKEYS_REGISTRATION } from '../hotkeys';
3
4
 
4
5
  export const DEFAULT_HOTKEY_CONFIG: UserHotkeyConfig = HOTKEYS_REGISTRATION.reduce(
5
6
  (acc: UserHotkeyConfig, item) => {
@@ -1,4 +1,4 @@
1
- import { TraceNameMap } from '@/types/trace';
1
+ import { TraceNameMap } from '@lobechat/types';
2
2
 
3
3
  export const LOBE_CHAT_TRACE_HEADER = 'X-lobe-trace';
4
4
  export const LOBE_CHAT_TRACE_ID = 'X-lobe-chat-trace-id';
@@ -1,5 +1,4 @@
1
- import { TopicDisplayMode } from '@/types/topic';
2
- import { UserPreference } from '@/types/user';
1
+ import { TopicDisplayMode, UserPreference } from '@lobechat/types';
3
2
 
4
3
  export const DEFAULT_PREFERENCE: UserPreference = {
5
4
  guide: {
@@ -58,19 +58,25 @@ beforeEach(() => {
58
58
 
59
59
  describe('DatabaseManager', () => {
60
60
  describe('Callback Handling', () => {
61
- it('should properly track loading states', async () => {
62
- await manager.initialize(callbacks);
63
-
64
- // 验证状态转换顺序
65
- expect(stateChanges).toEqual([
66
- DatabaseLoadingState.Initializing,
67
- DatabaseLoadingState.LoadingDependencies,
68
- DatabaseLoadingState.LoadingWasm,
69
- DatabaseLoadingState.Migrating,
70
- DatabaseLoadingState.Finished,
71
- DatabaseLoadingState.Ready,
72
- ]);
73
- });
61
+ it(
62
+ 'should properly track loading states',
63
+ async () => {
64
+ await manager.initialize(callbacks);
65
+
66
+ // 验证状态转换顺序
67
+ expect(stateChanges).toEqual([
68
+ DatabaseLoadingState.Initializing,
69
+ DatabaseLoadingState.LoadingDependencies,
70
+ DatabaseLoadingState.LoadingWasm,
71
+ DatabaseLoadingState.Migrating,
72
+ DatabaseLoadingState.Finished,
73
+ DatabaseLoadingState.Ready,
74
+ ]);
75
+ },
76
+ {
77
+ timeout: 15000,
78
+ },
79
+ );
74
80
 
75
81
  it('should report dependencies loading progress', async () => {
76
82
  await manager.initialize(callbacks);