@lobehub/lobehub 2.0.0-next.1 → 2.0.0-next.11

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 (242) hide show
  1. package/.github/workflows/desktop-pr-build.yml +12 -10
  2. package/.github/workflows/docker.yml +25 -20
  3. package/.github/workflows/e2e.yml +3 -3
  4. package/.github/workflows/release-desktop-beta.yml +8 -8
  5. package/.github/workflows/release.yml +1 -1
  6. package/.github/workflows/test.yml +4 -4
  7. package/CHANGELOG.md +261 -0
  8. package/apps/desktop/src/main/utils/next-electron-rsc.ts +7 -5
  9. package/changelog/v1.json +82 -0
  10. package/docs/development/database-schema.dbml +11 -1
  11. package/docs/self-hosting/advanced/auth/next-auth/auth0.mdx +2 -2
  12. package/docs/self-hosting/advanced/auth/next-auth/auth0.zh-CN.mdx +2 -2
  13. package/docs/self-hosting/advanced/auth/next-auth/authelia.mdx +2 -2
  14. package/docs/self-hosting/advanced/auth/next-auth/authelia.zh-CN.mdx +2 -2
  15. package/docs/self-hosting/advanced/auth/next-auth/authentik.mdx +2 -2
  16. package/docs/self-hosting/advanced/auth/next-auth/authentik.zh-CN.mdx +2 -2
  17. package/docs/self-hosting/advanced/auth/next-auth/casdoor.mdx +2 -2
  18. package/docs/self-hosting/advanced/auth/next-auth/casdoor.zh-CN.mdx +2 -2
  19. package/docs/self-hosting/advanced/auth/next-auth/cloudflare-zero-trust.mdx +2 -2
  20. package/docs/self-hosting/advanced/auth/next-auth/cloudflare-zero-trust.zh-CN.mdx +2 -2
  21. package/docs/self-hosting/advanced/auth/next-auth/github.mdx +2 -2
  22. package/docs/self-hosting/advanced/auth/next-auth/github.zh-CN.mdx +2 -2
  23. package/docs/self-hosting/advanced/auth/next-auth/google.mdx +32 -29
  24. package/docs/self-hosting/advanced/auth/next-auth/keycloak.mdx +2 -2
  25. package/docs/self-hosting/advanced/auth/next-auth/keycloak.zh-CN.mdx +2 -2
  26. package/docs/self-hosting/advanced/auth/next-auth/logto.mdx +5 -3
  27. package/docs/self-hosting/advanced/auth/next-auth/logto.zh-CN.mdx +5 -3
  28. package/docs/self-hosting/advanced/auth/next-auth/microsoft-entra-id.mdx +2 -2
  29. package/docs/self-hosting/advanced/auth/next-auth/microsoft-entra-id.zh-CN.mdx +2 -2
  30. package/docs/self-hosting/advanced/auth/next-auth/okta.mdx +2 -2
  31. package/docs/self-hosting/advanced/auth/next-auth/okta.zh-CN.mdx +2 -2
  32. package/docs/self-hosting/advanced/auth/next-auth/wechat.mdx +2 -2
  33. package/docs/self-hosting/advanced/auth/next-auth/wechat.zh-CN.mdx +2 -2
  34. package/docs/self-hosting/advanced/auth/next-auth/zitadel.mdx +2 -2
  35. package/docs/self-hosting/advanced/auth/next-auth/zitadel.zh-CN.mdx +2 -2
  36. package/docs/self-hosting/advanced/auth.mdx +32 -21
  37. package/docs/self-hosting/advanced/auth.zh-CN.mdx +30 -19
  38. package/docs/self-hosting/advanced/online-search.mdx +30 -25
  39. package/docs/self-hosting/advanced/online-search.zh-CN.mdx +25 -23
  40. package/locales/ar/models.json +15 -6
  41. package/locales/bg-BG/models.json +15 -6
  42. package/locales/de-DE/models.json +15 -6
  43. package/locales/en-US/models.json +15 -6
  44. package/locales/es-ES/models.json +15 -6
  45. package/locales/fa-IR/models.json +15 -6
  46. package/locales/fr-FR/models.json +15 -6
  47. package/locales/it-IT/models.json +15 -6
  48. package/locales/ja-JP/models.json +15 -6
  49. package/locales/ko-KR/models.json +21 -12
  50. package/locales/nl-NL/models.json +15 -6
  51. package/locales/pl-PL/models.json +15 -6
  52. package/locales/pt-BR/models.json +15 -6
  53. package/locales/ru-RU/models.json +15 -6
  54. package/locales/tr-TR/models.json +15 -6
  55. package/locales/vi-VN/models.json +15 -6
  56. package/locales/zh-CN/models.json +15 -6
  57. package/locales/zh-TW/models.json +15 -6
  58. package/next.config.ts +2 -3
  59. package/package.json +17 -23
  60. package/packages/const/src/index.ts +0 -1
  61. package/packages/const/src/models.ts +13 -0
  62. package/packages/const/src/url.ts +1 -4
  63. package/packages/context-engine/src/index.ts +1 -6
  64. package/packages/context-engine/src/processors/GroupMessageFlatten.ts +12 -2
  65. package/packages/context-engine/src/processors/__tests__/GroupMessageFlatten.test.ts +73 -9
  66. package/packages/context-engine/src/providers/index.ts +0 -2
  67. package/packages/database/migrations/0041_improve_index.sql +10 -0
  68. package/packages/database/migrations/meta/0041_snapshot.json +7784 -0
  69. package/packages/database/migrations/meta/_journal.json +7 -0
  70. package/packages/database/package.json +1 -1
  71. package/packages/database/src/core/migrations.json +17 -0
  72. package/packages/database/src/models/__tests__/message.grouping.test.ts +812 -0
  73. package/packages/database/src/models/__tests__/message.test.ts +322 -170
  74. package/packages/database/src/models/message.ts +62 -24
  75. package/packages/database/src/models/session.ts +60 -19
  76. package/packages/database/src/schemas/agent.ts +10 -11
  77. package/packages/database/src/schemas/message.ts +5 -1
  78. package/packages/database/src/schemas/relations.ts +6 -4
  79. package/packages/database/src/schemas/session.ts +2 -0
  80. package/packages/database/src/schemas/topic.ts +6 -1
  81. package/packages/database/src/utils/__tests__/groupMessages.test.ts +145 -2
  82. package/packages/database/src/utils/groupMessages.ts +7 -5
  83. package/packages/electron-client-ipc/package.json +4 -1
  84. package/packages/file-loaders/package.json +1 -0
  85. package/packages/model-bank/src/aiModels/anthropic.ts +0 -63
  86. package/packages/model-bank/src/aiModels/azure.ts +155 -0
  87. package/packages/model-bank/src/aiModels/bedrock.ts +44 -0
  88. package/packages/model-bank/src/aiModels/higress.ts +0 -55
  89. package/packages/model-bank/src/aiModels/infiniai.ts +21 -0
  90. package/packages/model-bank/src/aiModels/ollamacloud.ts +13 -0
  91. package/packages/model-bank/src/aiModels/siliconcloud.ts +19 -0
  92. package/packages/model-runtime/src/core/openaiCompatibleFactory/createImage.ts +1 -1
  93. package/packages/model-runtime/src/core/openaiCompatibleFactory/index.test.ts +33 -3
  94. package/packages/model-runtime/src/core/parameterResolver.ts +3 -0
  95. package/packages/model-runtime/src/core/streams/openai/__snapshots__/responsesStream.test.ts.snap +0 -38
  96. package/packages/model-runtime/src/providers/azureOpenai/index.ts +2 -1
  97. package/packages/model-runtime/src/providers/minimax/index.ts +5 -5
  98. package/packages/model-runtime/src/providers/search1api/index.test.ts +2 -2
  99. package/packages/types/src/message/common/base.ts +13 -0
  100. package/packages/types/src/message/common/image.ts +8 -0
  101. package/packages/types/src/message/common/metadata.ts +39 -0
  102. package/packages/types/src/message/common/tools.ts +10 -0
  103. package/packages/types/src/message/db/params.ts +47 -1
  104. package/packages/types/src/message/ui/chat.ts +4 -1
  105. package/packages/types/src/search.ts +16 -0
  106. package/packages/web-crawler/src/crawImpl/firecrawl.ts +39 -12
  107. package/scripts/migrateServerDB/index.ts +2 -1
  108. package/src/app/(backend)/oidc/consent/route.ts +0 -1
  109. package/src/app/(backend)/webapi/revalidate/route.ts +1 -1
  110. package/src/app/[variants]/(main)/chat/(workspace)/@conversation/features/ChatInput/V1Mobile/index.tsx +2 -2
  111. package/src/app/[variants]/(main)/chat/(workspace)/@conversation/features/ChatInput/V1Mobile/useSend.ts +6 -4
  112. package/src/app/[variants]/(main)/chat/(workspace)/@conversation/features/ChatInput/useSend.ts +15 -10
  113. package/src/app/[variants]/(main)/chat/@session/features/SessionListContent/List/Item/index.tsx +4 -2
  114. package/src/app/[variants]/(main)/settings/_layout/SettingsContent.tsx +0 -3
  115. package/src/app/[variants]/layout.tsx +1 -0
  116. package/src/app/sitemap.tsx +7 -1
  117. package/src/components/Thinking/index.tsx +4 -3
  118. package/src/config/modelProviders/anthropic.ts +0 -23
  119. package/src/config/modelProviders/higress.ts +0 -23
  120. package/src/config/modelProviders/minimax.ts +1 -1
  121. package/src/config/modelProviders/qiniu.ts +1 -1
  122. package/src/envs/auth.ts +0 -179
  123. package/src/features/AgentSetting/AgentPlugin/index.tsx +21 -13
  124. package/src/features/ChatInput/ActionBar/STT/browser.tsx +2 -2
  125. package/src/features/ChatInput/ActionBar/STT/openai.tsx +2 -2
  126. package/src/features/ChatInput/ActionBar/Tools/useControls.tsx +1 -3
  127. package/src/features/Conversation/Error/ErrorJsonViewer.tsx +4 -3
  128. package/src/features/Conversation/Error/OllamaBizError/index.tsx +7 -2
  129. package/src/features/Conversation/Error/index.tsx +15 -5
  130. package/src/features/Conversation/MarkdownElements/LobeArtifact/Render/index.tsx +2 -2
  131. package/src/features/Conversation/Messages/Assistant/Extra/index.tsx +2 -2
  132. package/src/features/Conversation/Messages/Assistant/MessageContent.tsx +5 -3
  133. package/src/features/Conversation/Messages/Assistant/Tool/Inspector/BuiltinPluginTitle.tsx +2 -2
  134. package/src/features/Conversation/Messages/Assistant/Tool/Inspector/ToolTitle.tsx +4 -2
  135. package/src/features/Conversation/Messages/Assistant/Tool/Render/CustomRender.tsx +2 -2
  136. package/src/features/Conversation/Messages/Assistant/Tool/Render/index.tsx +2 -2
  137. package/src/features/Conversation/Messages/Assistant/Tool/index.tsx +2 -2
  138. package/src/features/Conversation/Messages/Assistant/index.tsx +4 -4
  139. package/src/features/Conversation/Messages/Default.tsx +2 -2
  140. package/src/features/Conversation/Messages/User/Extra.tsx +2 -2
  141. package/src/features/Conversation/Messages/User/index.tsx +4 -4
  142. package/src/features/Conversation/Messages/index.tsx +3 -3
  143. package/src/features/Conversation/components/AutoScroll.tsx +2 -2
  144. package/src/features/Conversation/components/Extras/Usage/UsageDetail/index.tsx +9 -6
  145. package/src/features/PluginTag/index.tsx +1 -3
  146. package/src/features/PluginsUI/Render/BuiltinType/index.test.tsx +37 -28
  147. package/src/features/Portal/Artifacts/Body/index.tsx +2 -2
  148. package/src/libs/next-auth/auth.config.ts +1 -1
  149. package/src/libs/next-auth/sso-providers/auth0.ts +0 -7
  150. package/src/libs/next-auth/sso-providers/authelia.ts +3 -5
  151. package/src/libs/next-auth/sso-providers/authentik.ts +0 -7
  152. package/src/libs/next-auth/sso-providers/cloudflare-zero-trust.ts +3 -6
  153. package/src/libs/next-auth/sso-providers/cognito.ts +1 -5
  154. package/src/libs/next-auth/sso-providers/generic-oidc.ts +3 -5
  155. package/src/libs/next-auth/sso-providers/github.ts +0 -6
  156. package/src/libs/next-auth/sso-providers/google.ts +0 -2
  157. package/src/libs/next-auth/sso-providers/index.ts +0 -2
  158. package/src/libs/next-auth/sso-providers/keycloak.ts +0 -3
  159. package/src/libs/next-auth/sso-providers/logto.ts +3 -5
  160. package/src/libs/next-auth/sso-providers/okta.ts +0 -4
  161. package/src/libs/next-auth/sso-providers/zitadel.ts +0 -7
  162. package/src/libs/oidc-provider/provider.ts +1 -1
  163. package/src/server/modules/AssistantStore/index.ts +1 -1
  164. package/src/server/modules/ModelRuntime/trace.ts +11 -4
  165. package/src/server/routers/lambda/message.ts +14 -3
  166. package/src/server/routers/lambda/session.ts +8 -5
  167. package/src/server/services/search/impls/firecrawl/index.ts +51 -11
  168. package/src/server/services/search/impls/firecrawl/type.ts +60 -9
  169. package/src/services/chat/chat.test.ts +1 -40
  170. package/src/services/chat/contextEngineering.test.ts +0 -30
  171. package/src/services/chat/contextEngineering.ts +1 -12
  172. package/src/services/chat/index.ts +2 -7
  173. package/src/services/chat/types.ts +1 -1
  174. package/src/services/message/_deprecated.ts +1 -1
  175. package/src/services/message/client.ts +8 -2
  176. package/src/services/message/server.ts +7 -2
  177. package/src/services/message/type.ts +6 -1
  178. package/src/services/user/client.test.ts +4 -1
  179. package/src/store/chat/helpers.test.ts +99 -0
  180. package/src/store/chat/helpers.ts +21 -2
  181. package/src/store/chat/selectors.ts +1 -1
  182. package/src/store/chat/slices/aiChat/actions/generateAIChat.ts +3 -3
  183. package/src/store/chat/slices/builtinTool/actions/index.ts +1 -4
  184. package/src/store/chat/slices/message/action.test.ts +5 -1
  185. package/src/store/chat/slices/message/action.ts +102 -14
  186. package/src/store/chat/slices/message/reducer.test.ts +363 -5
  187. package/src/store/chat/slices/message/reducer.ts +87 -3
  188. package/src/store/chat/slices/message/{selectors.test.ts → selectors/chat.test.ts} +266 -30
  189. package/src/store/chat/slices/message/{selectors.ts → selectors/chat.ts} +29 -79
  190. package/src/store/chat/slices/message/selectors/index.ts +2 -0
  191. package/src/store/chat/slices/message/selectors/messageState.test.ts +36 -0
  192. package/src/store/chat/slices/message/selectors/messageState.ts +80 -0
  193. package/src/store/chat/slices/plugin/action.test.ts +34 -132
  194. package/src/store/chat/slices/plugin/action.ts +1 -44
  195. package/src/store/tool/selectors/tool.test.ts +1 -1
  196. package/src/store/tool/selectors/tool.ts +6 -8
  197. package/src/store/tool/slices/builtin/action.test.ts +83 -35
  198. package/src/store/tool/slices/builtin/action.ts +0 -9
  199. package/src/store/tool/slices/builtin/selectors.test.ts +4 -30
  200. package/src/store/tool/slices/builtin/selectors.ts +15 -21
  201. package/src/tools/index.ts +0 -6
  202. package/src/tools/renders.ts +0 -3
  203. package/src/tools/web-browsing/Portal/Search/Footer.tsx +2 -2
  204. package/tsconfig.json +9 -2
  205. package/packages/const/src/guide.ts +0 -89
  206. package/packages/context-engine/src/providers/InboxGuide.ts +0 -102
  207. package/packages/context-engine/src/providers/__tests__/InboxGuideProvider.test.ts +0 -121
  208. package/src/app/[variants]/(main)/settings/llm/ProviderList/Azure/index.tsx +0 -93
  209. package/src/app/[variants]/(main)/settings/llm/ProviderList/Bedrock/index.tsx +0 -70
  210. package/src/app/[variants]/(main)/settings/llm/ProviderList/Cloudflare/index.tsx +0 -39
  211. package/src/app/[variants]/(main)/settings/llm/ProviderList/Github/index.tsx +0 -52
  212. package/src/app/[variants]/(main)/settings/llm/ProviderList/HuggingFace/index.tsx +0 -52
  213. package/src/app/[variants]/(main)/settings/llm/ProviderList/Ollama/index.tsx +0 -20
  214. package/src/app/[variants]/(main)/settings/llm/ProviderList/OpenAI/index.tsx +0 -17
  215. package/src/app/[variants]/(main)/settings/llm/ProviderList/providers.tsx +0 -132
  216. package/src/app/[variants]/(main)/settings/llm/components/Checker.tsx +0 -118
  217. package/src/app/[variants]/(main)/settings/llm/components/ProviderConfig/index.tsx +0 -303
  218. package/src/app/[variants]/(main)/settings/llm/components/ProviderModelList/CustomModelOption.tsx +0 -98
  219. package/src/app/[variants]/(main)/settings/llm/components/ProviderModelList/ModelConfigModal/Form.tsx +0 -104
  220. package/src/app/[variants]/(main)/settings/llm/components/ProviderModelList/ModelConfigModal/index.tsx +0 -77
  221. package/src/app/[variants]/(main)/settings/llm/components/ProviderModelList/ModelFetcher.tsx +0 -105
  222. package/src/app/[variants]/(main)/settings/llm/components/ProviderModelList/Option.tsx +0 -68
  223. package/src/app/[variants]/(main)/settings/llm/components/ProviderModelList/index.tsx +0 -146
  224. package/src/app/[variants]/(main)/settings/llm/const.ts +0 -20
  225. package/src/app/[variants]/(main)/settings/llm/features/Footer.tsx +0 -35
  226. package/src/app/[variants]/(main)/settings/llm/index.tsx +0 -30
  227. package/src/app/[variants]/(main)/settings/llm/type.ts +0 -5
  228. package/src/envs/__tests__/auth.test.ts +0 -200
  229. package/src/libs/next-auth/sso-providers/azure-ad.ts +0 -33
  230. package/src/services/chat/__snapshots__/chat.test.ts.snap +0 -110
  231. package/src/store/chat/slices/builtinTool/actions/__tests__/dalle.test.ts +0 -121
  232. package/src/store/chat/slices/builtinTool/actions/dalle.ts +0 -124
  233. package/src/tools/dalle/Render/GalleyGrid.tsx +0 -60
  234. package/src/tools/dalle/Render/Item/EditMode.tsx +0 -66
  235. package/src/tools/dalle/Render/Item/Error.tsx +0 -49
  236. package/src/tools/dalle/Render/Item/Image.tsx +0 -44
  237. package/src/tools/dalle/Render/Item/ImageFileItem.tsx +0 -57
  238. package/src/tools/dalle/Render/Item/index.tsx +0 -88
  239. package/src/tools/dalle/Render/ToolBar.tsx +0 -56
  240. package/src/tools/dalle/Render/index.tsx +0 -52
  241. package/src/tools/dalle/index.ts +0 -92
  242. /package/src/{middleware.ts → proxy.ts} +0 -0
@@ -197,69 +197,6 @@ const anthropicChatModels: AIChatModelCard[] = [
197
197
  },
198
198
  type: 'chat',
199
199
  },
200
- {
201
- abilities: {
202
- functionCall: true,
203
- search: true,
204
- vision: true,
205
- },
206
- contextWindowTokens: 200_000,
207
- description:
208
- 'Claude 3.5 Sonnet 提供了超越 Opus 的能力和比 Sonnet 更快的速度,同时保持与 Sonnet 相同的价格。Sonnet 特别擅长编程、数据科学、视觉处理、代理任务。',
209
- displayName: 'Claude 3.5 Sonnet (New)',
210
- id: 'claude-3-5-sonnet-20241022',
211
- maxOutput: 8192,
212
- pricing: {
213
- units: [
214
- { name: 'textInput_cacheRead', rate: 0.3, strategy: 'fixed', unit: 'millionTokens' },
215
- { name: 'textInput', rate: 3, strategy: 'fixed', unit: 'millionTokens' },
216
- { name: 'textOutput', rate: 15, strategy: 'fixed', unit: 'millionTokens' },
217
- {
218
- lookup: { prices: { '1h': 6, '5m': 3.75 }, pricingParams: ['ttl'] },
219
- name: 'textInput_cacheWrite',
220
- strategy: 'lookup',
221
- unit: 'millionTokens',
222
- },
223
- ],
224
- },
225
- releasedAt: '2024-10-22',
226
- settings: {
227
- extendParams: ['disableContextCaching'],
228
- searchImpl: 'params',
229
- },
230
- type: 'chat',
231
- },
232
- {
233
- abilities: {
234
- functionCall: true,
235
- vision: true,
236
- },
237
- contextWindowTokens: 200_000,
238
- description:
239
- 'Claude 3.5 Sonnet 提供了超越 Opus 的能力和比 Sonnet 更快的速度,同时保持与 Sonnet 相同的价格。Sonnet 特别擅长编程、数据科学、视觉处理、代理任务。',
240
- displayName: 'Claude 3.5 Sonnet (Old)',
241
- id: 'claude-3-5-sonnet-20240620',
242
- maxOutput: 8192,
243
- pricing: {
244
- units: [
245
- { name: 'textInput_cacheRead', rate: 0.3, strategy: 'fixed', unit: 'millionTokens' },
246
- { name: 'textInput', rate: 3, strategy: 'fixed', unit: 'millionTokens' },
247
- { name: 'textOutput', rate: 15, strategy: 'fixed', unit: 'millionTokens' },
248
- {
249
- lookup: { prices: { '1h': 6, '5m': 3.75 }, pricingParams: ['ttl'] },
250
- name: 'textInput_cacheWrite',
251
- strategy: 'lookup',
252
- unit: 'millionTokens',
253
- },
254
- ],
255
- },
256
- releasedAt: '2024-06-20',
257
- settings: {
258
- extendParams: ['disableContextCaching'],
259
- searchImpl: 'params',
260
- },
261
- type: 'chat',
262
- },
263
200
  {
264
201
  abilities: {
265
202
  functionCall: true,
@@ -1,6 +1,161 @@
1
1
  import { AIChatModelCard, AIImageModelCard } from '../types/aiModel';
2
2
 
3
3
  const azureChatModels: AIChatModelCard[] = [
4
+ {
5
+ abilities: {
6
+ functionCall: true,
7
+ reasoning: true,
8
+ structuredOutput: true,
9
+ vision: true,
10
+ },
11
+ config: {
12
+ deploymentName: 'gpt-5-pro',
13
+ },
14
+ contextWindowTokens: 400_000,
15
+ description:
16
+ 'GPT-5 Pro 是 GPT-5 系列的高级版本,具备增强的推理能力。支持结构化输出、函数调用和文本/图像处理,适用于复杂的专业任务。',
17
+ displayName: 'GPT-5 Pro',
18
+ enabled: true,
19
+ id: 'gpt-5-pro',
20
+ maxOutput: 128_000,
21
+ pricing: {
22
+ units: [
23
+ { name: 'textInput', rate: 15, strategy: 'fixed', unit: 'millionTokens' },
24
+ { name: 'textOutput', rate: 120, strategy: 'fixed', unit: 'millionTokens' },
25
+ ],
26
+ },
27
+ releasedAt: '2025-10-06',
28
+ type: 'chat',
29
+ },
30
+ {
31
+ abilities: {
32
+ functionCall: true,
33
+ structuredOutput: true,
34
+ },
35
+ config: {
36
+ deploymentName: 'gpt-5-codex',
37
+ },
38
+ contextWindowTokens: 400_000,
39
+ description:
40
+ 'GPT-5 Codex 专为编程任务优化,针对 Codex CLI 和 VS Code 扩展进行了优化。支持结构化输出和函数调用,适用于代码生成和分析。',
41
+ displayName: 'GPT-5 Codex',
42
+ enabled: true,
43
+ id: 'gpt-5-codex',
44
+ maxOutput: 128_000,
45
+ pricing: {
46
+ units: [
47
+ { name: 'textInput', rate: 1.25, strategy: 'fixed', unit: 'millionTokens' },
48
+ { name: 'textOutput', rate: 10, strategy: 'fixed', unit: 'millionTokens' },
49
+ { name: 'textInput_cacheRead', rate: 0.125, strategy: 'fixed', unit: 'millionTokens' },
50
+ ],
51
+ },
52
+ releasedAt: '2025-09-11',
53
+ type: 'chat',
54
+ },
55
+ {
56
+ abilities: {
57
+ functionCall: true,
58
+ reasoning: true,
59
+ structuredOutput: true,
60
+ vision: true,
61
+ },
62
+ config: {
63
+ deploymentName: 'gpt-5',
64
+ },
65
+ contextWindowTokens: 400_000,
66
+ description:
67
+ 'GPT-5 是 OpenAI 最新的旗舰模型,具备卓越的推理能力。支持文本和图像输入,结构化输出和并行工具调用,适用于需要深度理解和分析的复杂任务。',
68
+ displayName: 'GPT-5',
69
+ enabled: true,
70
+ id: 'gpt-5',
71
+ maxOutput: 128_000,
72
+ pricing: {
73
+ units: [
74
+ { name: 'textInput', rate: 1.25, strategy: 'fixed', unit: 'millionTokens' },
75
+ { name: 'textOutput', rate: 10, strategy: 'fixed', unit: 'millionTokens' },
76
+ { name: 'textInput_cacheRead', rate: 0.125, strategy: 'fixed', unit: 'millionTokens' },
77
+ ],
78
+ },
79
+ releasedAt: '2025-08-07',
80
+ type: 'chat',
81
+ },
82
+ {
83
+ abilities: {
84
+ functionCall: true,
85
+ reasoning: true,
86
+ structuredOutput: true,
87
+ vision: true,
88
+ },
89
+ config: {
90
+ deploymentName: 'gpt-5-mini',
91
+ },
92
+ contextWindowTokens: 400_000,
93
+ description:
94
+ 'GPT-5 Mini 提供与 GPT-5 相似的能力,但更加高效和经济。支持推理、函数调用和视觉功能,适合大规模部署和对成本敏感的应用场景。',
95
+ displayName: 'GPT-5 Mini',
96
+ enabled: true,
97
+ id: 'gpt-5-mini',
98
+ maxOutput: 128_000,
99
+ pricing: {
100
+ units: [
101
+ { name: 'textInput', rate: 0.25, strategy: 'fixed', unit: 'millionTokens' },
102
+ { name: 'textOutput', rate: 2, strategy: 'fixed', unit: 'millionTokens' },
103
+ { name: 'textInput_cacheRead', rate: 0.025, strategy: 'fixed', unit: 'millionTokens' },
104
+ ],
105
+ },
106
+ releasedAt: '2025-08-07',
107
+ type: 'chat',
108
+ },
109
+ {
110
+ abilities: {
111
+ functionCall: true,
112
+ reasoning: true,
113
+ structuredOutput: true,
114
+ vision: true,
115
+ },
116
+ config: {
117
+ deploymentName: 'gpt-5-nano',
118
+ },
119
+ contextWindowTokens: 400_000,
120
+ description:
121
+ 'GPT-5 Nano 是 GPT-5 系列中最小、最快的版本。在保持核心能力的同时,提供超低延迟和成本效益,适合边缘计算和实时应用。',
122
+ displayName: 'GPT-5 Nano',
123
+ enabled: true,
124
+ id: 'gpt-5-nano',
125
+ maxOutput: 128_000,
126
+ pricing: {
127
+ units: [
128
+ { name: 'textInput', rate: 0.05, strategy: 'fixed', unit: 'millionTokens' },
129
+ { name: 'textOutput', rate: 0.4, strategy: 'fixed', unit: 'millionTokens' },
130
+ { name: 'textInput_cacheRead', rate: 0.005, strategy: 'fixed', unit: 'millionTokens' },
131
+ ],
132
+ },
133
+ releasedAt: '2025-08-07',
134
+ type: 'chat',
135
+ },
136
+ {
137
+ abilities: {
138
+ vision: true,
139
+ },
140
+ config: {
141
+ deploymentName: 'gpt-5-chat',
142
+ },
143
+ contextWindowTokens: 128_000,
144
+ description:
145
+ 'GPT-5 Chat 专为对话场景优化的预览版本。支持文本和图像输入,仅输出文本,适用于聊天机器人和对话式AI应用。',
146
+ displayName: 'GPT-5 Chat',
147
+ id: 'gpt-5-chat',
148
+ maxOutput: 16_384,
149
+ pricing: {
150
+ units: [
151
+ { name: 'textInput', rate: 1.25, strategy: 'fixed', unit: 'millionTokens' },
152
+ { name: 'textOutput', rate: 10, strategy: 'fixed', unit: 'millionTokens' },
153
+ { name: 'textInput_cacheRead', rate: 0.125, strategy: 'fixed', unit: 'millionTokens' },
154
+ ],
155
+ },
156
+ releasedAt: '2025-08-07',
157
+ type: 'chat',
158
+ },
4
159
  {
5
160
  abilities: {
6
161
  functionCall: true,
@@ -1,6 +1,50 @@
1
1
  import { AIChatModelCard } from '../types/aiModel';
2
2
 
3
3
  const bedrockChatModels: AIChatModelCard[] = [
4
+ {
5
+ abilities: {
6
+ functionCall: true,
7
+ reasoning: true,
8
+ structuredOutput: true,
9
+ vision: true,
10
+ },
11
+ contextWindowTokens: 200_000,
12
+ description: 'Claude Sonnet 4.5 是 Anthropic 迄今为止最智能的模型。',
13
+ displayName: 'Claude Sonnet 4.5',
14
+ enabled: true,
15
+ id: 'us.anthropic.claude-sonnet-4-5-20250929-v1:0',
16
+ maxOutput: 64_000,
17
+ pricing: {
18
+ units: [
19
+ { name: 'textInput', rate: 3, strategy: 'fixed', unit: 'millionTokens' },
20
+ { name: 'textOutput', rate: 15, strategy: 'fixed', unit: 'millionTokens' },
21
+ ],
22
+ },
23
+ releasedAt: '2025-09-29',
24
+ type: 'chat',
25
+ },
26
+ {
27
+ abilities: {
28
+ functionCall: true,
29
+ reasoning: true,
30
+ structuredOutput: true,
31
+ vision: true,
32
+ },
33
+ contextWindowTokens: 200_000,
34
+ description: 'Claude Haiku 4.5 是 Anthropic 最快且最智能的 Haiku 模型,具有闪电般的速度和扩展思考能力。',
35
+ displayName: 'Claude Haiku 4.5',
36
+ enabled: true,
37
+ id: 'us.anthropic.claude-haiku-4-5-20251001-v1:0',
38
+ maxOutput: 64_000,
39
+ pricing: {
40
+ units: [
41
+ { name: 'textInput', rate: 1, strategy: 'fixed', unit: 'millionTokens' },
42
+ { name: 'textOutput', rate: 5, strategy: 'fixed', unit: 'millionTokens' },
43
+ ],
44
+ },
45
+ releasedAt: '2025-10-15',
46
+ type: 'chat',
47
+ },
4
48
  /*
5
49
  // TODO: Not support for now
6
50
  {
@@ -2393,61 +2393,6 @@ const higressChatModels: AIChatModelCard[] = [
2393
2393
  releasedAt: '2024-11-05',
2394
2394
  type: 'chat',
2395
2395
  },
2396
- {
2397
- abilities: {
2398
- functionCall: true,
2399
- vision: true,
2400
- },
2401
- contextWindowTokens: 200_000,
2402
- description:
2403
- 'Claude 3.5 Sonnet 提供了超越 Opus 的能力和比 Sonnet 更快的速度,同时保持与 Sonnet 相同的价格。Sonnet 特别擅长编程、数据科学、视觉处理、代理任务。',
2404
- displayName: 'Claude 3.5 Sonnet',
2405
- enabled: true,
2406
- id: 'claude-3-5-sonnet-20241022',
2407
- maxOutput: 8192,
2408
- pricing: {
2409
- units: [
2410
- { name: 'textInput_cacheRead', rate: 0.3, strategy: 'fixed', unit: 'millionTokens' },
2411
- { name: 'textInput', rate: 3, strategy: 'fixed', unit: 'millionTokens' },
2412
- { name: 'textOutput', rate: 15, strategy: 'fixed', unit: 'millionTokens' },
2413
- {
2414
- lookup: { prices: { '5m': 3.75 }, pricingParams: ['ttl'] },
2415
- name: 'textInput_cacheWrite',
2416
- strategy: 'lookup',
2417
- unit: 'millionTokens',
2418
- },
2419
- ],
2420
- },
2421
- releasedAt: '2024-10-22',
2422
- type: 'chat',
2423
- },
2424
- {
2425
- abilities: {
2426
- functionCall: true,
2427
- vision: true,
2428
- },
2429
- contextWindowTokens: 200_000,
2430
- description:
2431
- 'Claude 3.5 Sonnet 提供了超越 Opus 的能力和比 Sonnet 更快的速度,同时保持与 Sonnet 相同的价格。Sonnet 特别擅长编程、数据科学、视觉处理、代理任务。',
2432
- displayName: 'Claude 3.5 Sonnet 0620',
2433
- id: 'claude-3-5-sonnet-20240620',
2434
- maxOutput: 8192,
2435
- pricing: {
2436
- units: [
2437
- { name: 'textInput_cacheRead', rate: 0.3, strategy: 'fixed', unit: 'millionTokens' },
2438
- { name: 'textInput', rate: 3, strategy: 'fixed', unit: 'millionTokens' },
2439
- { name: 'textOutput', rate: 15, strategy: 'fixed', unit: 'millionTokens' },
2440
- {
2441
- lookup: { prices: { '5m': 3.75 }, pricingParams: ['ttl'] },
2442
- name: 'textInput_cacheWrite',
2443
- strategy: 'lookup',
2444
- unit: 'millionTokens',
2445
- },
2446
- ],
2447
- },
2448
- releasedAt: '2024-06-20',
2449
- type: 'chat',
2450
- },
2451
2396
  {
2452
2397
  abilities: {
2453
2398
  functionCall: true,
@@ -3,6 +3,27 @@ import { AIChatModelCard } from '../types/aiModel';
3
3
  // https://cloud.infini-ai.com/genstudio/model
4
4
 
5
5
  const infiniaiChatModels: AIChatModelCard[] = [
6
+ {
7
+ abilities: {
8
+ functionCall: true,
9
+ reasoning: true,
10
+ },
11
+ contextWindowTokens: 200_000,
12
+ description:
13
+ 'MiniMax-M2 是一款专为编码与智能体工作流优化的专家混合(MoE)语言模型,具有约 230B 总参数与约 10B 活跃参数。它在保持强通用智能的同时,针对多文件编辑、代码-运行-修复闭环、测试校验修复等开发者场景进行深度增强,在终端、IDE 与 CI 等真实环境中表现稳定、高效。',
14
+ displayName: 'MiniMax M2',
15
+ enabled: true,
16
+ id: 'minimax-m2',
17
+ maxOutput: 200_000,
18
+ pricing: {
19
+ currency: 'CNY',
20
+ units: [
21
+ { name: 'textInput', rate: 2.1, strategy: 'fixed', unit: 'millionTokens' },
22
+ { name: 'textOutput', rate: 8.4, strategy: 'fixed', unit: 'millionTokens' },
23
+ ],
24
+ },
25
+ type: 'chat',
26
+ },
6
27
  {
7
28
  abilities: {
8
29
  functionCall: true,
@@ -1,6 +1,19 @@
1
1
  import { AIChatModelCard } from '../types/aiModel';
2
2
 
3
3
  const ollamaCloudModels: AIChatModelCard[] = [
4
+ {
5
+ abilities: {
6
+ functionCall: true,
7
+ reasoning: true,
8
+ },
9
+ contextWindowTokens: 200_000,
10
+ description:
11
+ 'MiniMax M2 是专为编码和代理工作流程构建的高效大型语言模型。',
12
+ displayName: 'MiniMax M2',
13
+ enabled: true,
14
+ id: 'minimax-m2',
15
+ type: 'chat',
16
+ },
4
17
  {
5
18
  abilities: {
6
19
  functionCall: true,
@@ -145,6 +145,25 @@ const siliconcloudChatModels: AIChatModelCard[] = [
145
145
  releasedAt: '2025-09-01',
146
146
  type: 'chat',
147
147
  },
148
+ {
149
+ abilities: {
150
+ functionCall: true,
151
+ },
152
+ contextWindowTokens: 131_072,
153
+ description:
154
+ 'KAT-Dev(32B)是一款专为软件工程任务设计的开源 32B 参数模型。在 SWE-Bench Verified 基准测试中,它取得了 62.4% 的解决率,在所有不同规模的开源模型中排名第五。该模型通过多个阶段进行优化,包括中间训练、监督微调(SFT)与强化学习(RL),旨在为代码补全、缺陷修复、代码评审等复杂编程任务提供强大支持。',
155
+ displayName: 'KAT-Dev 32B',
156
+ id: 'Kwaipilot/KAT-Dev',
157
+ pricing: {
158
+ currency: 'CNY',
159
+ units: [
160
+ { name: 'textInput', rate: 1, strategy: 'fixed', unit: 'millionTokens' },
161
+ { name: 'textOutput', rate: 4, strategy: 'fixed', unit: 'millionTokens' },
162
+ ],
163
+ },
164
+ releasedAt: '2025-09-27',
165
+ type: 'chat',
166
+ },
148
167
  {
149
168
  abilities: {
150
169
  functionCall: true,
@@ -67,7 +67,7 @@ async function generateByImageMode(
67
67
  const defaultInput = {
68
68
  n: 1,
69
69
  ...(model.includes('dall-e') ? { response_format: 'b64_json' } : {}),
70
- ...(isImageEdit ? { input_fidelity: 'high' } : {}),
70
+ ...(isImageEdit && model === 'gpt-image-1' ? { input_fidelity: 'high' } : {}),
71
71
  };
72
72
 
73
73
  const options = cleanObject({
@@ -1254,7 +1254,6 @@ describe('LobeOpenAICompatibleFactory', () => {
1254
1254
  );
1255
1255
  expect(instance['client'].images.edit).toHaveBeenCalledWith({
1256
1256
  image: expect.any(File),
1257
- input_fidelity: 'high',
1258
1257
  mask: 'https://example.com/mask.jpg',
1259
1258
  model: 'dall-e-2',
1260
1259
  n: 1,
@@ -1301,7 +1300,6 @@ describe('LobeOpenAICompatibleFactory', () => {
1301
1300
 
1302
1301
  expect(instance['client'].images.edit).toHaveBeenCalledWith({
1303
1302
  image: [mockFile1, mockFile2],
1304
- input_fidelity: 'high',
1305
1303
  model: 'dall-e-2',
1306
1304
  n: 1,
1307
1305
  prompt: 'Merge these images',
@@ -1330,6 +1328,39 @@ describe('LobeOpenAICompatibleFactory', () => {
1330
1328
  'Failed to convert image URLs to File objects: Error: Failed to download image',
1331
1329
  );
1332
1330
  });
1331
+
1332
+ it('should include input_fidelity parameter for gpt-image-1 model', async () => {
1333
+ const mockResponse = {
1334
+ data: [{ b64_json: 'gpt-image-edited-base64' }],
1335
+ };
1336
+
1337
+ const mockFile = new File(['content'], 'test-image.jpg', { type: 'image/jpeg' });
1338
+
1339
+ vi.mocked(openaiHelpers.convertImageUrlToFile).mockResolvedValue(mockFile);
1340
+ vi.spyOn(instance['client'].images, 'edit').mockResolvedValue(mockResponse as any);
1341
+
1342
+ const payload = {
1343
+ model: 'gpt-image-1',
1344
+ params: {
1345
+ imageUrl: 'https://example.com/image.jpg',
1346
+ prompt: 'Edit this image with gpt-image-1',
1347
+ },
1348
+ };
1349
+
1350
+ const result = await (instance as any).createImage(payload);
1351
+
1352
+ expect(instance['client'].images.edit).toHaveBeenCalledWith({
1353
+ image: expect.any(File),
1354
+ input_fidelity: 'high',
1355
+ model: 'gpt-image-1',
1356
+ n: 1,
1357
+ prompt: 'Edit this image with gpt-image-1',
1358
+ });
1359
+
1360
+ expect(result).toEqual({
1361
+ imageUrl: 'data:image/png;base64,gpt-image-edited-base64',
1362
+ });
1363
+ });
1333
1364
  });
1334
1365
 
1335
1366
  describe('error handling', () => {
@@ -1431,7 +1462,6 @@ describe('LobeOpenAICompatibleFactory', () => {
1431
1462
  expect(instance['client'].images.edit).toHaveBeenCalledWith({
1432
1463
  customParam: 'should remain unchanged',
1433
1464
  image: expect.any(File),
1434
- input_fidelity: 'high',
1435
1465
  model: 'dall-e-2',
1436
1466
  n: 1,
1437
1467
  prompt: 'Test prompt',
@@ -263,6 +263,7 @@ export const MODEL_PARAMETER_CONFLICTS = {
263
263
  'claude-opus-4-20250514',
264
264
  'claude-sonnet-4-20250514',
265
265
  'claude-sonnet-4-5-20250929',
266
+ 'claude-haiku-4-5-20251001',
266
267
  // Bedrock model IDs
267
268
  'anthropic.claude-opus-4-1-20250805-v1:0',
268
269
  'us.anthropic.claude-opus-4-1-20250805-v1:0',
@@ -272,5 +273,7 @@ export const MODEL_PARAMETER_CONFLICTS = {
272
273
  'us.anthropic.claude-sonnet-4-20250514-v1:0',
273
274
  'anthropic.claude-sonnet-4-5-20250929-v1:0',
274
275
  'us.anthropic.claude-sonnet-4-5-20250929-v1:0',
276
+ 'anthropic.claude-haiku-4-5-20251001-v1:0',
277
+ 'us.anthropic.claude-haiku-4-5-20251001-v1:0',
275
278
  ]),
276
279
  };
@@ -145,25 +145,6 @@ exports[`OpenAIResponsesStream > Reasoning > summary 1`] = `
145
145
  ]
146
146
  `;
147
147
 
148
- exports[`OpenAIResponsesStream > should handle chunk errors in catch block 1`] = `
149
- [
150
- "id: resp_error_catch
151
- ",
152
- "event: data
153
- ",
154
- "data: "in_progress"
155
-
156
- ",
157
- "id: undefined
158
- ",
159
- "event: reasoning
160
- ",
161
- "data: undefined
162
-
163
- ",
164
- ]
165
- `;
166
-
167
148
  exports[`OpenAIResponsesStream > should handle chunks with undefined values gracefully 1`] = `
168
149
  [
169
150
  "id: resp_undefined_vals
@@ -546,25 +527,6 @@ exports[`OpenAIResponsesStream > should handle response.reasoning_summary_text.d
546
527
  ]
547
528
  `;
548
529
 
549
- exports[`OpenAIResponsesStream > should handle stream chunk transformation error with null access 1`] = `
550
- [
551
- "id: resp_error_test
552
- ",
553
- "event: data
554
- ",
555
- "data: "in_progress"
556
-
557
- ",
558
- "id: null
559
- ",
560
- "event: text
561
- ",
562
- "data: "test"
563
-
564
- ",
565
- ]
566
- `;
567
-
568
530
  exports[`OpenAIResponsesStream > should handle unknown chunk type as data 1`] = `
569
531
  [
570
532
  "id: resp_unknown
@@ -51,7 +51,8 @@ export class LobeAzureOpenAI implements LobeRuntimeAI {
51
51
  ...message,
52
52
  role:
53
53
  // Convert 'system' role to 'user' or 'developer' based on the model
54
- (model.includes('o1') || model.includes('o3')) && message.role === 'system'
54
+ (model.includes('o1') || model.includes('o3') || model.includes('gpt-5')) &&
55
+ message.role === 'system'
55
56
  ? [...systemToUserModels].some((sub) => model.includes(sub))
56
57
  ? 'user'
57
58
  : 'developer'
@@ -17,11 +17,11 @@ export const LobeMinimaxAI = createOpenAICompatibleRuntime({
17
17
 
18
18
  const minimaxTools = enabledSearch
19
19
  ? [
20
- ...(tools || []),
21
- {
22
- type: 'web_search',
23
- },
24
- ]
20
+ ...(tools || []),
21
+ {
22
+ type: 'web_search',
23
+ },
24
+ ]
25
25
  : tools;
26
26
 
27
27
  // Resolve parameters with constraints
@@ -830,9 +830,9 @@ describe('LobeSearch1API - custom features', () => {
830
830
  it('should handle mix of known and unknown models', async () => {
831
831
  mockClient.models.list.mockResolvedValue({
832
832
  data: [
833
- { id: 'gpt-4o-mini' },
833
+ { id: 'gpt-4o' },
834
834
  { id: 'unknown-model-1' },
835
- { id: 'claude-3-5-sonnet-20241022' },
835
+ { id: 'gpt-4o-mini' },
836
836
  { id: 'unknown-model-2' },
837
837
  ],
838
838
  });
@@ -1,5 +1,6 @@
1
1
  import type { ILobeAgentRuntimeErrorType } from '@lobechat/model-runtime';
2
2
  import type { IPluginErrorType } from '@lobehub/chat-plugin-sdk';
3
+ import { z } from 'zod';
3
4
 
4
5
  import { ErrorType } from '../../fetch';
5
6
 
@@ -12,6 +13,12 @@ export interface ChatMessageError {
12
13
  type: ErrorType | IPluginErrorType | ILobeAgentRuntimeErrorType;
13
14
  }
14
15
 
16
+ export const ChatMessageErrorSchema = z.object({
17
+ body: z.any().optional(),
18
+ message: z.string(),
19
+ type: z.union([z.string(), z.number()]),
20
+ });
21
+
15
22
  export interface ChatCitationItem {
16
23
  id?: string;
17
24
  onlyUrl?: boolean;
@@ -24,3 +31,9 @@ export interface ModelReasoning {
24
31
  duration?: number;
25
32
  signature?: string;
26
33
  }
34
+
35
+ export const ModelReasoningSchema = z.object({
36
+ content: z.string().optional(),
37
+ duration: z.number().optional(),
38
+ signature: z.string().optional(),
39
+ });
@@ -1,9 +1,17 @@
1
+ import { z } from 'zod';
2
+
1
3
  export interface ChatImageItem {
2
4
  alt: string;
3
5
  id: string;
4
6
  url: string;
5
7
  }
6
8
 
9
+ export const ChatImageItemSchema = z.object({
10
+ alt: z.string(),
11
+ id: z.string(),
12
+ url: z.string(),
13
+ });
14
+
7
15
  export interface ChatImageChunk {
8
16
  data: string;
9
17
  id: string;