@lobehub/chat 1.51.7 → 1.51.9

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 (103) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/README.ja-JP.md +8 -8
  3. package/README.md +8 -8
  4. package/README.zh-CN.md +8 -8
  5. package/changelog/v1.json +18 -0
  6. package/locales/ar/common.json +1 -1
  7. package/locales/ar/modelProvider.json +0 -20
  8. package/locales/ar/models.json +108 -3
  9. package/locales/bg-BG/common.json +1 -1
  10. package/locales/bg-BG/modelProvider.json +0 -20
  11. package/locales/bg-BG/models.json +108 -3
  12. package/locales/de-DE/common.json +1 -1
  13. package/locales/de-DE/modelProvider.json +0 -20
  14. package/locales/de-DE/models.json +108 -3
  15. package/locales/en-US/common.json +1 -1
  16. package/locales/en-US/modelProvider.json +0 -20
  17. package/locales/en-US/models.json +108 -3
  18. package/locales/es-ES/common.json +1 -1
  19. package/locales/es-ES/modelProvider.json +0 -20
  20. package/locales/es-ES/models.json +108 -3
  21. package/locales/fa-IR/common.json +1 -1
  22. package/locales/fa-IR/modelProvider.json +0 -20
  23. package/locales/fa-IR/models.json +108 -3
  24. package/locales/fr-FR/common.json +1 -1
  25. package/locales/fr-FR/modelProvider.json +0 -20
  26. package/locales/fr-FR/models.json +108 -3
  27. package/locales/it-IT/common.json +1 -1
  28. package/locales/it-IT/modelProvider.json +0 -20
  29. package/locales/it-IT/models.json +108 -3
  30. package/locales/ja-JP/common.json +1 -1
  31. package/locales/ja-JP/modelProvider.json +0 -20
  32. package/locales/ja-JP/models.json +108 -3
  33. package/locales/ko-KR/common.json +1 -1
  34. package/locales/ko-KR/modelProvider.json +0 -20
  35. package/locales/ko-KR/models.json +108 -3
  36. package/locales/nl-NL/common.json +1 -1
  37. package/locales/nl-NL/modelProvider.json +0 -20
  38. package/locales/nl-NL/models.json +108 -3
  39. package/locales/pl-PL/common.json +1 -1
  40. package/locales/pl-PL/modelProvider.json +0 -20
  41. package/locales/pl-PL/models.json +108 -3
  42. package/locales/pt-BR/common.json +1 -1
  43. package/locales/pt-BR/modelProvider.json +0 -20
  44. package/locales/pt-BR/models.json +108 -3
  45. package/locales/ru-RU/common.json +1 -1
  46. package/locales/ru-RU/modelProvider.json +0 -20
  47. package/locales/ru-RU/models.json +108 -3
  48. package/locales/tr-TR/common.json +1 -1
  49. package/locales/tr-TR/modelProvider.json +0 -20
  50. package/locales/tr-TR/models.json +108 -3
  51. package/locales/vi-VN/common.json +1 -1
  52. package/locales/vi-VN/modelProvider.json +0 -20
  53. package/locales/vi-VN/models.json +108 -3
  54. package/locales/zh-CN/common.json +1 -1
  55. package/locales/zh-CN/modelProvider.json +0 -20
  56. package/locales/zh-CN/models.json +113 -8
  57. package/locales/zh-TW/common.json +1 -1
  58. package/locales/zh-TW/modelProvider.json +0 -20
  59. package/locales/zh-TW/models.json +108 -3
  60. package/package.json +1 -1
  61. package/src/app/(backend)/webapi/chat/models/[provider]/route.ts +1 -1
  62. package/src/app/[variants]/(main)/chat/_layout/Desktop/SessionPanel.tsx +2 -1
  63. package/src/app/[variants]/(main)/chat/_layout/Mobile.tsx +2 -1
  64. package/src/app/[variants]/(main)/chat/layout.ts +0 -2
  65. package/src/app/[variants]/(main)/settings/provider/(detail)/[id]/page.tsx +2 -0
  66. package/src/features/User/PlanTag.tsx +2 -2
  67. package/src/libs/agent-runtime/ai360/index.ts +8 -1
  68. package/src/libs/agent-runtime/anthropic/index.ts +2 -1
  69. package/src/libs/agent-runtime/baichuan/index.ts +1 -1
  70. package/src/libs/agent-runtime/cloudflare/index.test.ts +0 -117
  71. package/src/libs/agent-runtime/cloudflare/index.ts +32 -11
  72. package/src/libs/agent-runtime/deepseek/index.ts +4 -1
  73. package/src/libs/agent-runtime/fireworksai/index.ts +8 -1
  74. package/src/libs/agent-runtime/giteeai/index.ts +9 -1
  75. package/src/libs/agent-runtime/github/index.test.ts +5 -16
  76. package/src/libs/agent-runtime/github/index.ts +31 -33
  77. package/src/libs/agent-runtime/google/index.ts +2 -1
  78. package/src/libs/agent-runtime/groq/index.ts +7 -1
  79. package/src/libs/agent-runtime/higress/index.ts +2 -1
  80. package/src/libs/agent-runtime/huggingface/index.ts +10 -1
  81. package/src/libs/agent-runtime/hunyuan/index.ts +3 -1
  82. package/src/libs/agent-runtime/internlm/index.ts +3 -1
  83. package/src/libs/agent-runtime/mistral/index.ts +2 -1
  84. package/src/libs/agent-runtime/moonshot/index.ts +3 -1
  85. package/src/libs/agent-runtime/novita/__snapshots__/index.test.ts.snap +48 -12
  86. package/src/libs/agent-runtime/novita/index.ts +9 -1
  87. package/src/libs/agent-runtime/openai/__snapshots__/index.test.ts.snap +70 -66
  88. package/src/libs/agent-runtime/openai/index.ts +37 -0
  89. package/src/libs/agent-runtime/openrouter/__snapshots__/index.test.ts.snap +172 -4
  90. package/src/libs/agent-runtime/openrouter/index.ts +17 -2
  91. package/src/libs/agent-runtime/qwen/index.ts +10 -1
  92. package/src/libs/agent-runtime/sensenova/index.ts +3 -1
  93. package/src/libs/agent-runtime/siliconcloud/index.ts +10 -1
  94. package/src/libs/agent-runtime/stepfun/index.ts +3 -1
  95. package/src/libs/agent-runtime/togetherai/__snapshots__/index.test.ts.snap +1309 -5
  96. package/src/libs/agent-runtime/togetherai/index.test.ts +0 -13
  97. package/src/libs/agent-runtime/togetherai/index.ts +25 -20
  98. package/src/libs/agent-runtime/utils/cloudflareHelpers.test.ts +0 -99
  99. package/src/libs/agent-runtime/utils/cloudflareHelpers.ts +0 -70
  100. package/src/libs/agent-runtime/xai/index.ts +3 -1
  101. package/src/libs/agent-runtime/zeroone/index.ts +3 -1
  102. package/src/libs/agent-runtime/zhipu/index.ts +3 -1
  103. package/src/locales/default/common.ts +1 -1
@@ -17,13 +17,27 @@ export const LobeOpenRouterAI = LobeOpenAICompatibleFactory({
17
17
  },
18
18
  models: {
19
19
  transformModel: (m) => {
20
+ const visionKeywords = [
21
+ 'qwen/qvq',
22
+ 'vision',
23
+ ];
24
+
25
+ const reasoningKeywords = [
26
+ 'deepseek/deepseek-r1',
27
+ 'openai/o1',
28
+ 'openai/o3',
29
+ 'qwen/qvq',
30
+ 'qwen/qwq',
31
+ 'thinking'
32
+ ];
33
+
20
34
  const model = m as unknown as OpenRouterModelCard;
21
35
 
22
36
  return {
23
37
  contextWindowTokens: model.context_length,
24
38
  description: model.description,
25
39
  displayName: model.name,
26
- enabled: LOBE_DEFAULT_MODEL_LIST.find((m) => model.id.endsWith(m.id))?.enabled || false,
40
+ enabled: LOBE_DEFAULT_MODEL_LIST.find((m) => model.id === m.id)?.enabled || false,
27
41
  functionCall:
28
42
  model.description.includes('function calling') || model.description.includes('tools'),
29
43
  id: model.id,
@@ -31,10 +45,11 @@ export const LobeOpenRouterAI = LobeOpenAICompatibleFactory({
31
45
  typeof model.top_provider.max_completion_tokens === 'number'
32
46
  ? model.top_provider.max_completion_tokens
33
47
  : undefined,
48
+ reasoning: reasoningKeywords.some(keyword => model.id.toLowerCase().includes(keyword)),
34
49
  vision:
35
50
  model.description.includes('vision') ||
36
51
  model.description.includes('multimodal') ||
37
- model.id.includes('vision'),
52
+ visionKeywords.some(keyword => model.id.toLowerCase().includes(keyword)),
38
53
  };
39
54
  },
40
55
  },
@@ -84,12 +84,21 @@ export const LobeQwenAI = LobeOpenAICompatibleFactory({
84
84
  'vl',
85
85
  ];
86
86
 
87
+ const reasoningKeywords = [
88
+ 'qvq',
89
+ 'qwq',
90
+ 'deepseek-r1'
91
+ ];
92
+
87
93
  const model = m as unknown as QwenModelCard;
88
94
 
89
95
  return {
90
- enabled: LOBE_DEFAULT_MODEL_LIST.find((m) => model.id.endsWith(m.id))?.enabled || false,
96
+ contextWindowTokens: LOBE_DEFAULT_MODEL_LIST.find((m) => model.id === m.id)?.contextWindowTokens ?? undefined,
97
+ displayName: LOBE_DEFAULT_MODEL_LIST.find((m) => model.id === m.id)?.displayName ?? undefined,
98
+ enabled: LOBE_DEFAULT_MODEL_LIST.find((m) => model.id === m.id)?.enabled || false,
91
99
  functionCall: functionCallKeywords.some(keyword => model.id.toLowerCase().includes(keyword)),
92
100
  id: model.id,
101
+ reasoning: reasoningKeywords.some(keyword => model.id.toLowerCase().includes(keyword)),
93
102
  vision: visionKeywords.some(keyword => model.id.toLowerCase().includes(keyword)),
94
103
  };
95
104
  },
@@ -45,7 +45,9 @@ export const LobeSenseNovaAI = LobeOpenAICompatibleFactory({
45
45
  return modelList
46
46
  .map((model) => {
47
47
  return {
48
- enabled: LOBE_DEFAULT_MODEL_LIST.find((m) => model.id.endsWith(m.id))?.enabled || false,
48
+ contextWindowTokens: LOBE_DEFAULT_MODEL_LIST.find((m) => model.id === m.id)?.contextWindowTokens ?? undefined,
49
+ displayName: LOBE_DEFAULT_MODEL_LIST.find((m) => model.id === m.id)?.displayName ?? undefined,
50
+ enabled: LOBE_DEFAULT_MODEL_LIST.find((m) => model.id === m.id)?.enabled || false,
49
51
  functionCall: functionCallKeywords.some(keyword => model.id.toLowerCase().includes(keyword)),
50
52
  id: model.id,
51
53
  vision: model.id.toLowerCase().includes('vision'),
@@ -71,12 +71,21 @@ export const LobeSiliconCloudAI = LobeOpenAICompatibleFactory({
71
71
  'deepseek-ai/deepseek-vl',
72
72
  ];
73
73
 
74
+ const reasoningKeywords = [
75
+ 'deepseek-ai/deepseek-r1',
76
+ 'qwen/qvq',
77
+ 'qwen/qwq',
78
+ ];
79
+
74
80
  const model = m as unknown as SiliconCloudModelCard;
75
81
 
76
82
  return {
77
- enabled: LOBE_DEFAULT_MODEL_LIST.find((m) => model.id.endsWith(m.id))?.enabled || false,
83
+ contextWindowTokens: LOBE_DEFAULT_MODEL_LIST.find((m) => model.id === m.id)?.contextWindowTokens ?? undefined,
84
+ displayName: LOBE_DEFAULT_MODEL_LIST.find((m) => model.id === m.id)?.displayName ?? undefined,
85
+ enabled: LOBE_DEFAULT_MODEL_LIST.find((m) => model.id === m.id)?.enabled || false,
78
86
  functionCall: functionCallKeywords.some(keyword => model.id.toLowerCase().includes(keyword)) && !model.id.toLowerCase().includes('deepseek-r1'),
79
87
  id: model.id,
88
+ reasoning: reasoningKeywords.some(keyword => model.id.toLowerCase().includes(keyword)),
80
89
  vision: visionKeywords.some(keyword => model.id.toLowerCase().includes(keyword)),
81
90
  };
82
91
  },
@@ -38,7 +38,9 @@ export const LobeStepfunAI = LobeOpenAICompatibleFactory({
38
38
  const model = m as unknown as StepfunModelCard;
39
39
 
40
40
  return {
41
- enabled: LOBE_DEFAULT_MODEL_LIST.find((m) => model.id.endsWith(m.id))?.enabled || false,
41
+ contextWindowTokens: LOBE_DEFAULT_MODEL_LIST.find((m) => model.id === m.id)?.contextWindowTokens ?? undefined,
42
+ displayName: LOBE_DEFAULT_MODEL_LIST.find((m) => model.id === m.id)?.displayName ?? undefined,
43
+ enabled: LOBE_DEFAULT_MODEL_LIST.find((m) => model.id === m.id)?.enabled || false,
42
44
  functionCall: functionCallKeywords.some(keyword => model.id.toLowerCase().includes(keyword)),
43
45
  id: model.id,
44
46
  vision: visionKeywords.some(keyword => model.id.toLowerCase().includes(keyword)),