@lobehub/lobehub 2.0.0-next.22 → 2.0.0-next.24

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 (54) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/apps/desktop/package.json +1 -1
  3. package/changelog/v1.json +18 -0
  4. package/locales/ar/labs.json +4 -0
  5. package/locales/bg-BG/labs.json +4 -0
  6. package/locales/de-DE/labs.json +4 -0
  7. package/locales/en-US/labs.json +4 -0
  8. package/locales/es-ES/labs.json +4 -0
  9. package/locales/fa-IR/labs.json +4 -0
  10. package/locales/fr-FR/labs.json +4 -0
  11. package/locales/it-IT/labs.json +4 -0
  12. package/locales/ja-JP/labs.json +4 -0
  13. package/locales/ko-KR/labs.json +4 -0
  14. package/locales/nl-NL/labs.json +4 -0
  15. package/locales/pl-PL/labs.json +4 -0
  16. package/locales/pt-BR/labs.json +4 -0
  17. package/locales/ru-RU/labs.json +4 -0
  18. package/locales/tr-TR/labs.json +4 -0
  19. package/locales/vi-VN/labs.json +4 -0
  20. package/locales/zh-CN/labs.json +4 -0
  21. package/locales/zh-TW/labs.json +4 -0
  22. package/package.json +1 -1
  23. package/packages/const/src/user.ts +5 -2
  24. package/packages/memory-extract/package.json +1 -1
  25. package/packages/types/src/index.ts +0 -1
  26. package/packages/types/src/message/ui/params.ts +3 -3
  27. package/packages/types/src/user/index.ts +2 -88
  28. package/packages/types/src/user/preference.ts +105 -0
  29. package/renovate.json +44 -13
  30. package/src/app/[variants]/(main)/labs/components/LabCard.tsx +5 -5
  31. package/src/app/[variants]/(main)/labs/page.tsx +18 -22
  32. package/src/app/[variants]/(main)/settings/provider/detail/azure/index.tsx +1 -1
  33. package/src/app/[variants]/(main)/settings/provider/detail/azureai/index.tsx +1 -1
  34. package/src/app/[variants]/(main)/settings/provider/detail/bedrock/index.tsx +1 -1
  35. package/src/app/[variants]/(main)/settings/provider/detail/cloudflare/index.tsx +1 -1
  36. package/src/app/[variants]/(main)/settings/provider/detail/comfyui/index.tsx +1 -1
  37. package/src/app/[variants]/(main)/settings/provider/detail/github/index.tsx +1 -1
  38. package/src/app/[variants]/(main)/settings/provider/detail/vertexai/index.tsx +1 -1
  39. package/src/app/[variants]/(main)/settings/provider/features/ProviderConfig/index.tsx +2 -4
  40. package/src/components/Skeleton/SkeletonSwitch.tsx +13 -0
  41. package/src/components/Skeleton/index.ts +2 -0
  42. package/src/features/ChatInput/ActionBar/index.tsx +2 -2
  43. package/src/features/ChatInput/InputEditor/index.tsx +2 -2
  44. package/src/locales/default/labs.ts +4 -0
  45. package/src/server/routers/lambda/message.ts +5 -20
  46. package/src/server/services/mcp/deps/MCPSystemDepsCheckService.test.ts +541 -0
  47. package/src/services/message/server.ts +0 -10
  48. package/src/services/message/type.ts +0 -2
  49. package/src/store/user/selectors.ts +1 -1
  50. package/src/store/user/slices/preference/action.ts +8 -1
  51. package/src/store/user/slices/preference/selectors/index.ts +2 -0
  52. package/src/store/user/slices/preference/selectors/labPrefer.ts +13 -0
  53. package/src/store/user/slices/preference/{selectors.ts → selectors/preference.ts} +0 -2
  54. /package/src/{app/[variants]/(main)/settings/provider/features/ProviderConfig → components/Skeleton}/SkeletonInput.tsx +0 -0
package/CHANGELOG.md CHANGED
@@ -2,6 +2,56 @@
2
2
 
3
3
  # Changelog
4
4
 
5
+ ## [Version 2.0.0-next.24](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.23...v2.0.0-next.24)
6
+
7
+ <sup>Released on **2025-11-04**</sup>
8
+
9
+ #### 💄 Styles
10
+
11
+ - **misc**: Improve lab style.
12
+
13
+ <br/>
14
+
15
+ <details>
16
+ <summary><kbd>Improvements and Fixes</kbd></summary>
17
+
18
+ #### Styles
19
+
20
+ - **misc**: Improve lab style, closes [#10040](https://github.com/lobehub/lobe-chat/issues/10040) ([bbf1c0b](https://github.com/lobehub/lobe-chat/commit/bbf1c0b))
21
+
22
+ </details>
23
+
24
+ <div align="right">
25
+
26
+ [![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
27
+
28
+ </div>
29
+
30
+ ## [Version 2.0.0-next.23](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.22...v2.0.0-next.23)
31
+
32
+ <sup>Released on **2025-11-04**</sup>
33
+
34
+ #### 🐛 Bug Fixes
35
+
36
+ - **misc**: Fix send message.
37
+
38
+ <br/>
39
+
40
+ <details>
41
+ <summary><kbd>Improvements and Fixes</kbd></summary>
42
+
43
+ #### What's fixed
44
+
45
+ - **misc**: Fix send message, closes [#10041](https://github.com/lobehub/lobe-chat/issues/10041) [#9984](https://github.com/lobehub/lobe-chat/issues/9984) ([7cca60f](https://github.com/lobehub/lobe-chat/commit/7cca60f))
46
+
47
+ </details>
48
+
49
+ <div align="right">
50
+
51
+ [![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
52
+
53
+ </div>
54
+
5
55
  ## [Version 2.0.0-next.22](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.21...v2.0.0-next.22)
6
56
 
7
57
  <sup>Released on **2025-11-04**</sup>
@@ -72,7 +72,7 @@
72
72
  "tsx": "^4.19.3",
73
73
  "typescript": "^5.7.3",
74
74
  "undici": "^7.9.0",
75
- "vite": "^7.1.12",
75
+ "vite": "^6.3.5",
76
76
  "vitest": "^3.2.4"
77
77
  },
78
78
  "pnpm": {
package/changelog/v1.json CHANGED
@@ -1,4 +1,22 @@
1
1
  [
2
+ {
3
+ "children": {
4
+ "improvements": [
5
+ "Improve lab style."
6
+ ]
7
+ },
8
+ "date": "2025-11-04",
9
+ "version": "2.0.0-next.24"
10
+ },
11
+ {
12
+ "children": {
13
+ "fixes": [
14
+ "Fix send message."
15
+ ]
16
+ },
17
+ "date": "2025-11-04",
18
+ "version": "2.0.0-next.23"
19
+ },
2
20
  {
3
21
  "children": {},
4
22
  "date": "2025-11-04",
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "desc": "سنقوم بتحديث الميزات الجديدة التي نستكشفها من وقت لآخر، ندعوك لتجربتها!",
3
3
  "features": {
4
+ "assistantMessageGroup": {
5
+ "desc": "تجميع رسائل المساعد ونتائج استدعاء الأدوات في مجموعة واحدة للعرض",
6
+ "title": "تجميع رسائل المساعد"
7
+ },
4
8
  "groupChat": {
5
9
  "desc": "تفعيل إمكانية تنسيق المحادثات الجماعية متعددة الوكلاء.",
6
10
  "title": "دردشة جماعية (متعددة الوكلاء)"
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "desc": "Тук периодично ще актуализираме новите функции, които изследваме. Добре дошли да ги изпробвате!",
3
3
  "features": {
4
+ "assistantMessageGroup": {
5
+ "desc": "Групиране на съобщенията от асистента и резултатите от извикванията на инструменти за показване в група",
6
+ "title": "Групиране на съобщенията от асистента"
7
+ },
4
8
  "groupChat": {
5
9
  "desc": "Активиране на възможността за координация в групов чат с множество интелигентни агенти.",
6
10
  "title": "Групов чат (множество агенти)"
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "desc": "Hier werden wir regelmäßig neue Funktionen vorstellen, die wir gerade erforschen – probieren Sie sie gerne aus!",
3
3
  "features": {
4
+ "assistantMessageGroup": {
5
+ "desc": "Assistentennachrichten und die Ergebnisse von Toolaufrufen werden gruppiert angezeigt",
6
+ "title": "Gruppierung von Assistentennachrichten"
7
+ },
4
8
  "groupChat": {
5
9
  "desc": "Aktivieren Sie die Koordination von Gruppenchats mit mehreren KI-Agenten.",
6
10
  "title": "Gruppenchats (mehrere Agenten)"
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "desc": "Here you'll find occasional updates on new features we're exploring—feel free to try them out!",
3
3
  "features": {
4
+ "assistantMessageGroup": {
5
+ "desc": "Group assistant messages and their tool call results together for display",
6
+ "title": "Assistant Message Grouping"
7
+ },
4
8
  "groupChat": {
5
9
  "desc": "Enable multi-agent group chat coordination.",
6
10
  "title": "Group Chat (Multi-Agent)"
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "desc": "Aquí actualizaremos periódicamente las nuevas funciones que estamos explorando. ¡Te invitamos a probarlas!",
3
3
  "features": {
4
+ "assistantMessageGroup": {
5
+ "desc": "Agrupa los mensajes del asistente y los resultados de las herramientas utilizadas para mostrarlos juntos",
6
+ "title": "Agrupación de mensajes del asistente"
7
+ },
4
8
  "groupChat": {
5
9
  "desc": "Activa la capacidad de coordinación de chats grupales con múltiples agentes.",
6
10
  "title": "Chat grupal (multiagente)"
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "desc": "در اینجا به‌طور دوره‌ای ویژگی‌های جدیدی که در حال آزمایش آن‌ها هستیم به‌روزرسانی می‌شود. خوشحال می‌شویم آن‌ها را امتحان کنید!",
3
3
  "features": {
4
+ "assistantMessageGroup": {
5
+ "desc": "نمایش گروهی پیام‌های دستیار و نتایج فراخوانی ابزارهای آن",
6
+ "title": "گروه‌بندی پیام‌های دستیار"
7
+ },
4
8
  "groupChat": {
5
9
  "desc": "قابلیت هماهنگی چت گروهی با چند عامل هوشمند را فعال کنید.",
6
10
  "title": "گفت‌وگوی گروهی (چند عاملی)"
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "desc": "Nous mettons à jour régulièrement cette section avec de nouvelles fonctionnalités en cours d'exploration. N'hésitez pas à les essayer !",
3
3
  "features": {
4
+ "assistantMessageGroup": {
5
+ "desc": "Regrouper les messages de l'assistant et les résultats des appels d'outils pour les afficher ensemble",
6
+ "title": "Regroupement des messages de l'assistant"
7
+ },
4
8
  "groupChat": {
5
9
  "desc": "Activez la coordination de discussions de groupe avec plusieurs agents intelligents.",
6
10
  "title": "Discussion de groupe (multi-agents)"
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "desc": "Qui troverai aggiornamenti periodici sulle nuove funzionalità che stiamo esplorando. Sentiti libero di provarle!",
3
3
  "features": {
4
+ "assistantMessageGroup": {
5
+ "desc": "Raggruppa i messaggi dell'assistente e i risultati delle chiamate agli strumenti in un unico gruppo",
6
+ "title": "Raggruppamento dei messaggi dell'assistente"
7
+ },
4
8
  "groupChat": {
5
9
  "desc": "Abilita la capacità di coordinamento in chat di gruppo con più agenti intelligenti.",
6
10
  "title": "Chat di gruppo (multi-agente)"
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "desc": "ここでは、私たちが現在試している新機能を不定期に更新しています。ぜひお試しください!",
3
3
  "features": {
4
+ "assistantMessageGroup": {
5
+ "desc": "アシスタントのメッセージとそのツール呼び出し結果をグループ化して表示します",
6
+ "title": "アシスタントメッセージのグループ化表示"
7
+ },
4
8
  "groupChat": {
5
9
  "desc": "複数のAIエージェントによるグループチャット機能を有効にします。",
6
10
  "title": "グループチャット(マルチエージェント)"
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "desc": "이곳에서는 우리가 탐색 중인 새로운 기능들을 수시로 업데이트합니다. 사용해보시고 의견을 들려주세요!",
3
3
  "features": {
4
+ "assistantMessageGroup": {
5
+ "desc": "도우미 메시지와 해당 도구 호출 결과를 그룹으로 묶어 표시합니다",
6
+ "title": "도우미 메시지 그룹화"
7
+ },
4
8
  "groupChat": {
5
9
  "desc": "다중 에이전트 그룹 채팅 조정 기능을 활성화합니다.",
6
10
  "title": "그룹 채팅 (다중 에이전트)"
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "desc": "Hier worden regelmatig nieuwe functies bijgewerkt die we aan het verkennen zijn. Probeer ze gerust uit!",
3
3
  "features": {
4
+ "assistantMessageGroup": {
5
+ "desc": "Assistentberichten en de resultaten van hulpoproepen gegroepeerd weergeven",
6
+ "title": "Gegroepeerde weergave van assistentberichten"
7
+ },
4
8
  "groupChat": {
5
9
  "desc": "Schakel de mogelijkheid in om groepschats met meerdere AI-agenten te organiseren.",
6
10
  "title": "Groepschat (meerdere agenten)"
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "desc": "Tutaj będziemy okresowo aktualizować nowe funkcje, które obecnie testujemy — zapraszamy do wypróbowania!",
3
3
  "features": {
4
+ "assistantMessageGroup": {
5
+ "desc": "Grupowanie wiadomości asystenta i wyników wywołań narzędzi w jednym widoku",
6
+ "title": "Grupowanie wiadomości asystenta"
7
+ },
4
8
  "groupChat": {
5
9
  "desc": "Włącz możliwość organizowania czatów grupowych z wieloma agentami.",
6
10
  "title": "Czat grupowy (wielu agentów)"
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "desc": "Aqui você encontrará atualizações periódicas sobre os novos recursos que estamos explorando. Sinta-se à vontade para testá-los!",
3
3
  "features": {
4
+ "assistantMessageGroup": {
5
+ "desc": "Agrupa as mensagens do assistente e os resultados das ferramentas chamadas para exibição conjunta",
6
+ "title": "Agrupamento de Mensagens do Assistente"
7
+ },
4
8
  "groupChat": {
5
9
  "desc": "Ative a capacidade de orquestração de bate-papo em grupo com múltiplos agentes.",
6
10
  "title": "Bate-papo em Grupo (Múltiplos Agentes)"
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "desc": "Здесь мы будем периодически обновлять информацию о новых функциях, которые мы исследуем. Добро пожаловать на пробное использование!",
3
3
  "features": {
4
+ "assistantMessageGroup": {
5
+ "desc": "Группировка сообщений помощника и результатов вызова инструментов для отображения в одном блоке",
6
+ "title": "Группировка сообщений помощника"
7
+ },
4
8
  "groupChat": {
5
9
  "desc": "Включить возможность организации группового чата с несколькими интеллектуальными агентами.",
6
10
  "title": "Групповой чат (мультиагенты)"
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "desc": "Burada keşfetmekte olduğumuz yeni özellikleri düzenli olarak güncelliyoruz, denemekten çekinmeyin!",
3
3
  "features": {
4
+ "assistantMessageGroup": {
5
+ "desc": "Asistan mesajlarını ve araç çağrısı sonuçlarını gruplar hâlinde göster",
6
+ "title": "Asistan Mesajları Gruplama"
7
+ },
4
8
  "groupChat": {
5
9
  "desc": "Çoklu yapay zeka ajanlarıyla grup sohbeti düzenleme yeteneğini etkinleştirir.",
6
10
  "title": "Grup Sohbeti (Çoklu Ajan)"
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "desc": "Tại đây, chúng tôi sẽ cập nhật định kỳ các tính năng mới đang được khám phá. Rất hoan nghênh bạn dùng thử!",
3
3
  "features": {
4
+ "assistantMessageGroup": {
5
+ "desc": "Tổng hợp tin nhắn trợ lý và kết quả gọi công cụ vào cùng một nhóm để hiển thị",
6
+ "title": "Nhóm tin nhắn trợ lý"
7
+ },
4
8
  "groupChat": {
5
9
  "desc": "Kích hoạt khả năng điều phối trò chuyện nhóm với nhiều tác nhân thông minh.",
6
10
  "title": "Trò chuyện nhóm (đa tác nhân)"
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "desc": "这里会不定期更新我们正在探索的新功能,欢迎试用!",
3
3
  "features": {
4
+ "assistantMessageGroup": {
5
+ "desc": "将助手消息及其工具调用结果聚合到分组里显示",
6
+ "title": "助手消息聚合分组"
7
+ },
4
8
  "groupChat": {
5
9
  "desc": "启用多智能体群聊编排能力。",
6
10
  "title": "群聊(多智能体)"
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "desc": "這裡會不定期更新我們正在探索的新功能,歡迎試用!",
3
3
  "features": {
4
+ "assistantMessageGroup": {
5
+ "desc": "將助手訊息及其工具調用結果彙整成群組顯示",
6
+ "title": "助手訊息彙整群組"
7
+ },
4
8
  "groupChat": {
5
9
  "desc": "啟用多智能體群組聊天編排功能。",
6
10
  "title": "群組聊天(多智能體)"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lobehub/lobehub",
3
- "version": "2.0.0-next.22",
3
+ "version": "2.0.0-next.24",
4
4
  "description": "LobeHub - an open-source,comprehensive AI Agent 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",
@@ -1,12 +1,15 @@
1
1
  import { TopicDisplayMode, UserPreference } from '@lobechat/types';
2
2
 
3
3
  export const DEFAULT_PREFERENCE: UserPreference = {
4
- disableInputMarkdownRender: false,
5
- enableGroupChat: false,
6
4
  guide: {
7
5
  moveSettingsToAvatar: true,
8
6
  topic: true,
9
7
  },
8
+ lab: {
9
+ enableAssistantMessageGroup: false,
10
+ enableGroupChat: false,
11
+ enableInputMarkdown: true,
12
+ },
10
13
  telemetry: null,
11
14
  topicDisplayMode: TopicDisplayMode.ByTime,
12
15
  useCmdEnterToSend: false,
@@ -10,7 +10,7 @@
10
10
  "@lobechat/model-runtime": "workspace:*",
11
11
  "@lobechat/prompts": "workspace:*",
12
12
  "dotenv": "^17.2.3",
13
- "ora": "^8.2.0"
13
+ "ora": "^9.0.0"
14
14
  },
15
15
  "devDependencies": {
16
16
  "tsx": "^4.19.2"
@@ -26,7 +26,6 @@ export * from './session';
26
26
  export * from './tool';
27
27
  export * from './topic';
28
28
  export * from './user';
29
- export * from './user/settings';
30
29
  // FIXME: I think we need a refactor for the "openai" types
31
30
  // it more likes the UI message payload
32
31
  export * from './openai/chat';
@@ -130,10 +130,10 @@ export const CreateMessageParamsSchema = z
130
130
  files: z.array(z.string()).optional(),
131
131
  fromModel: z.string().optional(),
132
132
  fromProvider: z.string().optional(),
133
- groupId: z.string().optional(),
133
+ groupId: z.string().nullable().optional(),
134
134
  targetId: z.string().nullable().optional(),
135
135
  threadId: z.string().nullable().optional(),
136
- topicId: z.string().optional(),
136
+ topicId: z.string().nullable().optional(),
137
137
  traceId: z.string().optional(),
138
138
  // Allow additional fields from UIChatMessage (many can be null)
139
139
  agentId: z.string().optional(),
@@ -182,7 +182,7 @@ export const CreateNewMessageParamsSchema = z
182
182
  parentId: z.string().optional(),
183
183
  groupId: z.string().nullable().optional(),
184
184
  // Context
185
- topicId: z.string().optional(),
185
+ topicId: z.string().nullable().optional(),
186
186
  threadId: z.string().nullable().optional(),
187
187
  targetId: z.string().nullable().optional(),
188
188
  // Model info
@@ -1,88 +1,2 @@
1
- import type { PartialDeep } from 'type-fest';
2
- import { z } from 'zod';
3
-
4
- import { Plans } from '../subscription';
5
- import { TopicDisplayMode } from '../topic';
6
- import { UserSettings } from './settings';
7
-
8
- export interface LobeUser {
9
- avatar?: string;
10
- email?: string | null;
11
- firstName?: string | null;
12
- fullName?: string | null;
13
- id: string;
14
- latestName?: string | null;
15
- username?: string | null;
16
- }
17
-
18
- export const UserGuideSchema = z.object({
19
- /**
20
- * Move the settings button to the avatar dropdown
21
- */
22
- moveSettingsToAvatar: z.boolean().optional(),
23
-
24
- /**
25
- * Topic Guide
26
- */
27
- topic: z.boolean().optional(),
28
-
29
- /**
30
- * tell user that uploaded files can be found in knowledge base
31
- */
32
- uploadFileInKnowledgeBase: z.boolean().optional(),
33
- });
34
-
35
- export type UserGuide = z.infer<typeof UserGuideSchema>;
36
-
37
- export interface UserPreference {
38
- /**
39
- * disable markdown rendering in chat input editor
40
- */
41
- disableInputMarkdownRender?: boolean;
42
- /**
43
- * enable multi-agent group chat mode
44
- */
45
- enableGroupChat?: boolean;
46
- guide?: UserGuide;
47
- hideSyncAlert?: boolean;
48
- telemetry: boolean | null;
49
- topicDisplayMode?: TopicDisplayMode;
50
- /**
51
- * whether to use cmd + enter to send message
52
- */
53
- useCmdEnterToSend?: boolean;
54
- }
55
-
56
- export interface UserInitializationState {
57
- avatar?: string;
58
- canEnablePWAGuide?: boolean;
59
- canEnableTrace?: boolean;
60
- email?: string;
61
- firstName?: string;
62
- fullName?: string;
63
- hasConversation?: boolean;
64
- isOnboard?: boolean;
65
- lastName?: string;
66
- preference: UserPreference;
67
- settings: PartialDeep<UserSettings>;
68
- subscriptionPlan?: Plans;
69
- userId?: string;
70
- username?: string;
71
- }
72
-
73
- export const NextAuthAccountSchame = z.object({
74
- provider: z.string(),
75
- providerAccountId: z.string(),
76
- });
77
-
78
- export const UserPreferenceSchema = z
79
- .object({
80
- disableInputMarkdownRender: z.boolean().optional(),
81
- enableGroupChat: z.boolean().optional(),
82
- guide: UserGuideSchema.optional(),
83
- hideSyncAlert: z.boolean().optional(),
84
- telemetry: z.boolean().nullable(),
85
- topicDisplayMode: z.nativeEnum(TopicDisplayMode).optional(),
86
- useCmdEnterToSend: z.boolean().optional(),
87
- })
88
- .partial();
1
+ export * from './preference';
2
+ export * from './settings';
@@ -0,0 +1,105 @@
1
+ import type { PartialDeep } from 'type-fest';
2
+ import { z } from 'zod';
3
+
4
+ import { Plans } from '../subscription';
5
+ import { TopicDisplayMode } from '../topic';
6
+ import { UserSettings } from './settings';
7
+
8
+ export interface LobeUser {
9
+ avatar?: string;
10
+ email?: string | null;
11
+ firstName?: string | null;
12
+ fullName?: string | null;
13
+ id: string;
14
+ latestName?: string | null;
15
+ username?: string | null;
16
+ }
17
+
18
+ export const UserGuideSchema = z.object({
19
+ /**
20
+ * Move the settings button to the avatar dropdown
21
+ */
22
+ moveSettingsToAvatar: z.boolean().optional(),
23
+
24
+ /**
25
+ * Topic Guide
26
+ */
27
+ topic: z.boolean().optional(),
28
+
29
+ /**
30
+ * tell user that uploaded files can be found in knowledge base
31
+ */
32
+ uploadFileInKnowledgeBase: z.boolean().optional(),
33
+ });
34
+
35
+ export type UserGuide = z.infer<typeof UserGuideSchema>;
36
+
37
+ export const UserLabSchema = z.object({
38
+ /**
39
+ * enable assistant message grouping in chat display
40
+ */
41
+ enableAssistantMessageGroup: z.boolean().optional(),
42
+ /**
43
+ * enable multi-agent group chat mode
44
+ */
45
+ enableGroupChat: z.boolean().optional(),
46
+ /**
47
+ * enable markdown rendering in chat input editor
48
+ */
49
+ enableInputMarkdown: z.boolean().optional(),
50
+ });
51
+
52
+ export type UserLab = z.infer<typeof UserLabSchema>;
53
+
54
+ export interface UserPreference {
55
+ /**
56
+ * disable markdown rendering in chat input editor
57
+ * @deprecated Use lab.enableInputMarkdown instead
58
+ */
59
+ disableInputMarkdownRender?: boolean;
60
+ guide?: UserGuide;
61
+ hideSyncAlert?: boolean;
62
+ /**
63
+ * lab experimental features
64
+ */
65
+ lab?: UserLab;
66
+ telemetry: boolean | null;
67
+ topicDisplayMode?: TopicDisplayMode;
68
+ /**
69
+ * whether to use cmd + enter to send message
70
+ */
71
+ useCmdEnterToSend?: boolean;
72
+ }
73
+
74
+ export interface UserInitializationState {
75
+ avatar?: string;
76
+ canEnablePWAGuide?: boolean;
77
+ canEnableTrace?: boolean;
78
+ email?: string;
79
+ firstName?: string;
80
+ fullName?: string;
81
+ hasConversation?: boolean;
82
+ isOnboard?: boolean;
83
+ lastName?: string;
84
+ preference: UserPreference;
85
+ settings: PartialDeep<UserSettings>;
86
+ subscriptionPlan?: Plans;
87
+ userId?: string;
88
+ username?: string;
89
+ }
90
+
91
+ export const NextAuthAccountSchame = z.object({
92
+ provider: z.string(),
93
+ providerAccountId: z.string(),
94
+ });
95
+
96
+ export const UserPreferenceSchema = z
97
+ .object({
98
+ guide: UserGuideSchema.optional(),
99
+ hideSyncAlert: z.boolean().optional(),
100
+ lab: UserLabSchema.optional(),
101
+ telemetry: z.boolean().nullable(),
102
+ topicDisplayMode: z.nativeEnum(TopicDisplayMode).optional(),
103
+ useCmdEnterToSend: z.boolean().optional(),
104
+ })
105
+ .partial();
package/renovate.json CHANGED
@@ -15,28 +15,59 @@
15
15
  "workarounds:all"
16
16
  ],
17
17
  "ignoreDeps": [],
18
- "labels": [
19
- "dependencies"
20
- ],
18
+ "labels": ["dependencies"],
21
19
  "packageRules": [
20
+ // 1) Pinned deps: isolate (OK to use separate* here because there's no matchUpdateTypes)
21
+ {
22
+ "description": "Isolate PRs for pinned deps (exact x.y.z)",
23
+ "matchManagers": ["npm", "pnpm", "yarn", "bun"],
24
+ "matchDepTypes": [
25
+ "dependencies",
26
+ "devDependencies",
27
+ "optionalDependencies",
28
+ "peerDependencies"
29
+ ],
30
+ "matchCurrentValue": "^\\d+\\.\\d+\\.\\d+([+-][0-9A-Za-z.-]+)?$",
31
+ "groupName": null,
32
+ "separateMinorPatch": true,
33
+ "separateMajorMinor": true
34
+ },
35
+ // 2a) Non-pinned deps: override splitting so patch+minor can be combined
22
36
  {
23
- "groupName": "all non-minor dependencies",
24
- "groupSlug": "all-minor-patch",
25
- "matchPackageNames": [
26
- "*"
37
+ "description": "Non-pinned deps: allow patch+minor to group; keep majors separate",
38
+ "matchManagers": ["npm", "pnpm", "yarn", "bun"],
39
+ "matchDepTypes": [
40
+ "dependencies",
41
+ "devDependencies",
42
+ "optionalDependencies",
43
+ "peerDependencies"
27
44
  ],
28
- "matchUpdateTypes": [
29
- "patch"
30
- ]
45
+ "matchCurrentValue": "/(^[~^]|[<>=| -])/", // anything that looks like a range
46
+ "separateMinorPatch": false,
47
+ "separateMajorMinor": true
48
+ },
49
+ // 2b) Non-pinned deps: actually group patch+minor together
50
+ {
51
+ "description": "Non-pinned deps: group non-major updates",
52
+ "matchManagers": ["npm", "pnpm", "yarn", "bun"],
53
+ "matchDepTypes": [
54
+ "dependencies",
55
+ "devDependencies",
56
+ "optionalDependencies",
57
+ "peerDependencies"
58
+ ],
59
+ "matchCurrentValue": "/(^[~^]|[<>=| -])/",
60
+ "matchUpdateTypes": ["minor", "patch"], // only non-majors
61
+ "groupName": "deps (non-major)"
31
62
  }
32
63
  ],
33
- "postUpdateOptions": [
34
- "yarnDedupeHighest"
35
- ],
64
+ "postUpdateOptions": ["yarnDedupeHighest"],
36
65
  "prConcurrentLimit": 30,
37
66
  "prHourlyLimit": 0,
38
67
  "rangeStrategy": "bump",
39
68
  "rebaseWhen": "conflicted",
40
69
  "schedule": "on sunday before 6:00am",
70
+ "separateMajorMinor": true,
71
+ "separateMultipleMajor": true,
41
72
  "timezone": "UTC"
42
73
  }