@lobehub/chat 1.90.3 → 1.90.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/.cursor/rules/backend-architecture.mdc +12 -9
  2. package/.cursor/rules/cursor-ux-optimize.mdc +1 -1
  3. package/.cursor/rules/define-database-model.mdc +1 -1
  4. package/.cursor/rules/drizzle-schema-style-guide.mdc +1 -1
  5. package/.cursor/rules/i18n/i18n.mdc +1 -1
  6. package/.cursor/rules/project-introduce.mdc +2 -1
  7. package/.cursor/rules/system-role.mdc +42 -0
  8. package/.cursor/rules/zustand-action-patterns.mdc +318 -0
  9. package/.cursor/rules/zustand-slice-organization.mdc +300 -0
  10. package/CHANGELOG.md +33 -0
  11. package/README.md +2 -2
  12. package/README.zh-CN.md +2 -2
  13. package/changelog/v1.json +12 -0
  14. package/docs/self-hosting/advanced/model-list.mdx +1 -1
  15. package/docs/self-hosting/advanced/model-list.zh-CN.mdx +1 -1
  16. package/docs/self-hosting/environment-variables/model-provider.mdx +2 -2
  17. package/docs/self-hosting/environment-variables/model-provider.zh-CN.mdx +2 -2
  18. package/package.json +44 -44
  19. package/src/features/PluginsUI/Render/utils/iframeOnReady.test.ts +1 -1
  20. package/src/features/PluginsUI/Render/utils/pluginSettings.test.ts +1 -1
  21. package/src/features/PluginsUI/Render/utils/pluginState.test.ts +1 -1
  22. package/src/libs/model-runtime/BaseAI.ts +3 -3
  23. package/src/libs/model-runtime/ModelRuntime.ts +2 -2
  24. package/src/libs/model-runtime/UniformRuntime/index.ts +2 -2
  25. package/src/libs/model-runtime/ai21/index.ts +2 -2
  26. package/src/libs/model-runtime/ai360/index.ts +2 -2
  27. package/src/libs/model-runtime/anthropic/index.ts +15 -11
  28. package/src/libs/model-runtime/azureOpenai/index.ts +2 -2
  29. package/src/libs/model-runtime/azureai/index.ts +4 -4
  30. package/src/libs/model-runtime/baichuan/index.ts +2 -2
  31. package/src/libs/model-runtime/bedrock/index.ts +4 -4
  32. package/src/libs/model-runtime/cloudflare/index.ts +2 -2
  33. package/src/libs/model-runtime/cohere/index.ts +2 -2
  34. package/src/libs/model-runtime/deepseek/index.ts +2 -2
  35. package/src/libs/model-runtime/fireworksai/index.ts +2 -2
  36. package/src/libs/model-runtime/giteeai/index.ts +2 -2
  37. package/src/libs/model-runtime/github/index.ts +2 -2
  38. package/src/libs/model-runtime/google/index.ts +7 -5
  39. package/src/libs/model-runtime/groq/index.ts +2 -2
  40. package/src/libs/model-runtime/higress/index.ts +2 -2
  41. package/src/libs/model-runtime/huggingface/index.ts +2 -2
  42. package/src/libs/model-runtime/hunyuan/index.ts +2 -2
  43. package/src/libs/model-runtime/index.ts +1 -1
  44. package/src/libs/model-runtime/infiniai/index.ts +2 -2
  45. package/src/libs/model-runtime/internlm/index.ts +7 -9
  46. package/src/libs/model-runtime/jina/index.ts +2 -2
  47. package/src/libs/model-runtime/lmstudio/index.ts +2 -2
  48. package/src/libs/model-runtime/minimax/index.ts +2 -2
  49. package/src/libs/model-runtime/mistral/index.ts +2 -2
  50. package/src/libs/model-runtime/modelscope/index.ts +2 -3
  51. package/src/libs/model-runtime/moonshot/index.ts +2 -2
  52. package/src/libs/model-runtime/novita/index.ts +2 -2
  53. package/src/libs/model-runtime/nvidia/index.ts +2 -2
  54. package/src/libs/model-runtime/ollama/index.ts +2 -2
  55. package/src/libs/model-runtime/openai/index.ts +3 -3
  56. package/src/libs/model-runtime/openrouter/index.ts +2 -2
  57. package/src/libs/model-runtime/perplexity/index.ts +2 -2
  58. package/src/libs/model-runtime/ppio/index.ts +2 -2
  59. package/src/libs/model-runtime/qiniu/index.ts +2 -2
  60. package/src/libs/model-runtime/qwen/index.ts +2 -2
  61. package/src/libs/model-runtime/sambanova/index.ts +2 -2
  62. package/src/libs/model-runtime/search1api/index.ts +2 -2
  63. package/src/libs/model-runtime/sensenova/index.ts +2 -2
  64. package/src/libs/model-runtime/siliconcloud/index.ts +2 -2
  65. package/src/libs/model-runtime/spark/index.ts +15 -13
  66. package/src/libs/model-runtime/stepfun/index.ts +2 -2
  67. package/src/libs/model-runtime/taichu/index.ts +2 -2
  68. package/src/libs/model-runtime/tencentcloud/index.ts +2 -2
  69. package/src/libs/model-runtime/togetherai/index.ts +2 -2
  70. package/src/libs/model-runtime/types/chat.ts +1 -1
  71. package/src/libs/model-runtime/upstage/index.ts +2 -2
  72. package/src/libs/model-runtime/utils/openaiCompatibleFactory/index.test.ts +7 -7
  73. package/src/libs/model-runtime/utils/openaiCompatibleFactory/index.ts +3 -3
  74. package/src/libs/model-runtime/vllm/index.ts +2 -2
  75. package/src/libs/model-runtime/volcengine/index.ts +2 -2
  76. package/src/libs/model-runtime/wenxin/index.ts +2 -2
  77. package/src/libs/model-runtime/xai/index.ts +6 -3
  78. package/src/libs/model-runtime/xinference/index.ts +2 -2
  79. package/src/libs/model-runtime/zeroone/index.ts +2 -2
  80. package/src/libs/model-runtime/zhipu/index.ts +2 -2
  81. package/src/middleware.ts +3 -1
  82. package/src/server/routers/tools/search.test.ts +2 -4
  83. package/src/store/chat/slices/aiChat/actions/__tests__/generateAIChat.test.ts +4 -2
  84. package/src/store/chat/slices/message/action.test.ts +2 -1
  85. package/src/store/chat/slices/topic/action.test.ts +3 -2
@@ -104,8 +104,7 @@ describe('searchRouter', () => {
104
104
  query: 'test query',
105
105
  });
106
106
 
107
- expect(result).toEqual({
108
- costTime: 0,
107
+ expect(result).toMatchObject({
109
108
  query: 'test query',
110
109
  results: [
111
110
  {
@@ -139,8 +138,7 @@ describe('searchRouter', () => {
139
138
  query: 'test query',
140
139
  });
141
140
 
142
- expect(result).toEqual({
143
- costTime: 0,
141
+ expect(result).toMatchObject({
144
142
  query: 'test query',
145
143
  results: [
146
144
  {
@@ -671,14 +671,16 @@ describe('chatMessage actions', () => {
671
671
  (chatService.createAssistantMessage as Mock).mockResolvedValue(aiResponse);
672
672
  const spy = vi.spyOn(chatService, 'createAssistantMessageStream');
673
673
  // 模拟消息创建
674
- (messageService.createMessage as Mock).mockResolvedValue('assistant-message-id');
674
+ const createMessageSpyOn = vi
675
+ .spyOn(messageService, 'createMessage')
676
+ .mockResolvedValue('assistant-message-id');
675
677
 
676
678
  await act(async () => {
677
679
  await result.current.internal_coreProcessMessage(messages, userMessage.id);
678
680
  });
679
681
 
680
682
  // 验证是否创建了代表 AI 响应的消息
681
- expect(messageService.createMessage).toHaveBeenCalledWith(
683
+ expect(createMessageSpyOn).toHaveBeenCalledWith(
682
684
  expect.objectContaining({
683
685
  role: 'assistant',
684
686
  content: LOADING_FLAT,
@@ -369,11 +369,12 @@ describe('chatMessage actions', () => {
369
369
  const messageId = 'message-id';
370
370
  const newContent = 'Updated content';
371
371
 
372
+ const spy = vi.spyOn(messageService, 'updateMessage');
372
373
  await act(async () => {
373
374
  await result.current.internal_updateMessageContent(messageId, newContent);
374
375
  });
375
376
 
376
- expect(messageService.updateMessage).toHaveBeenCalledWith(messageId, { content: newContent });
377
+ expect(spy).toHaveBeenCalledWith(messageId, { content: newContent });
377
378
  });
378
379
 
379
380
  it('should dispatch message update action', async () => {
@@ -264,7 +264,8 @@ describe('topic action', () => {
264
264
  const topicId = 'topic-id';
265
265
  const newTitle = 'Updated Topic Title';
266
266
  // Mock the topicService.updateTitle to resolve immediately
267
- (topicService.updateTopic as Mock).mockResolvedValue(undefined);
267
+
268
+ const spyOn = vi.spyOn(topicService, 'updateTopic');
268
269
 
269
270
  const { result } = renderHook(() => useChatStore());
270
271
 
@@ -276,7 +277,7 @@ describe('topic action', () => {
276
277
  });
277
278
 
278
279
  // Verify that the topicService.updateTitle was called with correct parameters
279
- expect(topicService.updateTopic).toHaveBeenCalledWith(topicId, {
280
+ expect(spyOn).toHaveBeenCalledWith(topicId, {
280
281
  title: 'Updated Topic Title',
281
282
  });
282
283