@lobehub/lobehub 2.0.0-next.13 → 2.0.0-next.15

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 (219) hide show
  1. package/.github/workflows/desktop-pr-build.yml +6 -6
  2. package/.github/workflows/release-desktop-beta.yml +4 -4
  3. package/.github/workflows/release.yml +1 -2
  4. package/.github/workflows/test.yml +4 -5
  5. package/.nvmrc +1 -1
  6. package/CHANGELOG.md +42 -0
  7. package/apps/desktop/tsconfig.json +0 -1
  8. package/changelog/v1.json +14 -0
  9. package/e2e/tsconfig.json +0 -1
  10. package/package.json +58 -58
  11. package/packages/const/src/version.ts +3 -3
  12. package/packages/database/src/repositories/dataImporter/deprecated/__tests__/index.test.ts +2 -1
  13. package/packages/database/src/repositories/dataImporter/deprecated/index.ts +7 -1
  14. package/packages/web-crawler/tsconfig.json +0 -1
  15. package/src/app/[variants]/(main)/(mobile)/me/(home)/__tests__/useCategory.test.tsx +9 -0
  16. package/src/app/[variants]/(main)/(mobile)/me/(home)/layout.tsx +0 -2
  17. package/src/app/[variants]/(main)/chat/@session/features/SessionListContent/List/Item/Actions.tsx +3 -28
  18. package/src/app/[variants]/(main)/chat/_layout/Desktop/index.tsx +0 -2
  19. package/src/app/[variants]/(main)/chat/_layout/Mobile.tsx +1 -5
  20. package/src/app/[variants]/(main)/chat/settings/features/HeaderContent.tsx +2 -62
  21. package/src/app/[variants]/(main)/image/page.tsx +0 -2
  22. package/src/app/[variants]/(main)/profile/_layout/Desktop/index.tsx +23 -24
  23. package/src/app/[variants]/(main)/profile/_layout/Mobile/index.tsx +5 -9
  24. package/src/app/[variants]/(main)/settings/_layout/Desktop/index.tsx +0 -2
  25. package/src/app/[variants]/(main)/settings/_layout/Mobile/index.tsx +0 -2
  26. package/src/app/[variants]/(main)/settings/provider/(list)/ProviderGrid/Card.tsx +1 -1
  27. package/src/app/[variants]/loading/index.tsx +1 -10
  28. package/src/components/Link.tsx +12 -0
  29. package/src/envs/app.ts +5 -8
  30. package/src/features/DataImporter/index.tsx +15 -60
  31. package/src/features/DevPanel/PostgresViewer/usePgTable.ts +3 -2
  32. package/src/hooks/useInterceptingRoutes.test.ts +21 -3
  33. package/src/libs/trpc/client/index.ts +0 -1
  34. package/src/libs/trpc/client/lambda.ts +8 -5
  35. package/src/server/routers/desktop/mcp.ts +1 -3
  36. package/src/server/routers/lambda/config/index.test.ts +2 -2
  37. package/src/server/routers/tools/mcp.ts +2 -3
  38. package/src/server/routers/tools/search.test.ts +1 -7
  39. package/src/server/routers/tools/search.ts +1 -4
  40. package/src/services/__tests__/tool.test.ts +0 -3
  41. package/src/services/aiModel/index.test.ts +0 -3
  42. package/src/services/aiModel/index.ts +1 -7
  43. package/src/services/aiProvider/index.test.ts +0 -3
  44. package/src/services/aiProvider/index.ts +1 -7
  45. package/src/services/chatGroup/index.ts +1 -10
  46. package/src/services/config.ts +1 -65
  47. package/src/services/export/index.ts +1 -4
  48. package/src/services/file/index.ts +1 -11
  49. package/src/services/import/index.ts +1 -7
  50. package/src/services/message/index.ts +1 -11
  51. package/src/services/plugin/index.ts +1 -11
  52. package/src/services/session/index.ts +1 -11
  53. package/src/services/tableViewer/client.ts +12 -15
  54. package/src/services/thread/index.ts +1 -7
  55. package/src/services/topic/index.ts +1 -11
  56. package/src/services/user/index.ts +1 -13
  57. package/src/store/chat/slices/aiChat/actions/__tests__/generateAIChat.test.ts +0 -241
  58. package/src/store/chat/slices/aiChat/actions/__tests__/generateAIChatV2.test.ts +26 -1
  59. package/src/store/chat/slices/aiChat/actions/__tests__/helpers.ts +3 -1
  60. package/src/store/chat/slices/aiChat/actions/generateAIChat.ts +1 -138
  61. package/src/store/user/slices/common/action.test.ts +1 -4
  62. package/tsconfig.json +0 -1
  63. package/src/app/(backend)/trpc/edge/[trpc]/route.ts +0 -26
  64. package/src/app/[variants]/(main)/(mobile)/me/data/features/Category.tsx +0 -48
  65. package/src/app/[variants]/(main)/(mobile)/me/data/features/Header.tsx +0 -33
  66. package/src/app/[variants]/(main)/(mobile)/me/data/layout.tsx +0 -13
  67. package/src/app/[variants]/(main)/(mobile)/me/data/loading.tsx +0 -5
  68. package/src/app/[variants]/(main)/(mobile)/me/data/page.tsx +0 -29
  69. package/src/app/[variants]/(main)/chat/features/Migration/DBReader.ts +0 -290
  70. package/src/app/[variants]/(main)/chat/features/Migration/ExportConfigButton.tsx +0 -35
  71. package/src/app/[variants]/(main)/chat/features/Migration/Failed.tsx +0 -120
  72. package/src/app/[variants]/(main)/chat/features/Migration/Modal.tsx +0 -81
  73. package/src/app/[variants]/(main)/chat/features/Migration/Start.tsx +0 -108
  74. package/src/app/[variants]/(main)/chat/features/Migration/UpgradeButton.tsx +0 -71
  75. package/src/app/[variants]/(main)/chat/features/Migration/const.ts +0 -15
  76. package/src/app/[variants]/(main)/chat/features/Migration/index.tsx +0 -50
  77. package/src/app/[variants]/loading/Client/Content.tsx +0 -48
  78. package/src/app/[variants]/loading/Client/Error.tsx +0 -27
  79. package/src/app/[variants]/loading/Client/Redirect.tsx +0 -47
  80. package/src/app/[variants]/loading/Client/index.tsx +0 -22
  81. package/src/components/InnerLink.tsx +0 -20
  82. package/src/database/_deprecated/core/__tests__/db-upgrade.test.ts +0 -42
  83. package/src/database/_deprecated/core/__tests__/db.test.ts +0 -79
  84. package/src/database/_deprecated/core/__tests__/model.test.ts +0 -55
  85. package/src/database/_deprecated/core/db.ts +0 -246
  86. package/src/database/_deprecated/core/index.ts +0 -2
  87. package/src/database/_deprecated/core/migrations/migrateSettingsToUser/fixtures/input.json +0 -55
  88. package/src/database/_deprecated/core/migrations/migrateSettingsToUser/fixtures/output.json +0 -60
  89. package/src/database/_deprecated/core/migrations/migrateSettingsToUser/index.test.ts +0 -14
  90. package/src/database/_deprecated/core/migrations/migrateSettingsToUser/index.ts +0 -22
  91. package/src/database/_deprecated/core/migrations/migrateSettingsToUser/type.ts +0 -105
  92. package/src/database/_deprecated/core/model.ts +0 -218
  93. package/src/database/_deprecated/core/schemas.ts +0 -88
  94. package/src/database/_deprecated/core/types/db.ts +0 -15
  95. package/src/database/_deprecated/models/__DEBUG.ts +0 -124
  96. package/src/database/_deprecated/models/__tests__/file.test.ts +0 -83
  97. package/src/database/_deprecated/models/__tests__/message.test.ts +0 -426
  98. package/src/database/_deprecated/models/__tests__/plugin.test.ts +0 -81
  99. package/src/database/_deprecated/models/__tests__/session.test.ts +0 -253
  100. package/src/database/_deprecated/models/__tests__/sessionGroup.test.ts +0 -220
  101. package/src/database/_deprecated/models/__tests__/topic.test.ts +0 -523
  102. package/src/database/_deprecated/models/__tests__/user.test.ts +0 -82
  103. package/src/database/_deprecated/models/file.ts +0 -51
  104. package/src/database/_deprecated/models/message.ts +0 -277
  105. package/src/database/_deprecated/models/plugin.ts +0 -62
  106. package/src/database/_deprecated/models/session.ts +0 -271
  107. package/src/database/_deprecated/models/sessionGroup.ts +0 -93
  108. package/src/database/_deprecated/models/topic.ts +0 -250
  109. package/src/database/_deprecated/models/user.ts +0 -69
  110. package/src/database/_deprecated/schemas/files.ts +0 -39
  111. package/src/database/_deprecated/schemas/message.ts +0 -50
  112. package/src/database/_deprecated/schemas/plugin.ts +0 -12
  113. package/src/database/_deprecated/schemas/session.ts +0 -54
  114. package/src/database/_deprecated/schemas/sessionGroup.ts +0 -8
  115. package/src/database/_deprecated/schemas/topic.ts +0 -12
  116. package/src/database/_deprecated/schemas/user.ts +0 -40
  117. package/src/features/DataImporter/_deprecated.ts +0 -43
  118. package/src/features/InitClientDB/EnableModal.tsx +0 -118
  119. package/src/features/InitClientDB/ErrorResult.tsx +0 -143
  120. package/src/features/InitClientDB/InitIndicator.tsx +0 -124
  121. package/src/features/InitClientDB/PGliteIcon.tsx +0 -28
  122. package/src/features/InitClientDB/features/DatabaseRepair/Backup.tsx +0 -75
  123. package/src/features/InitClientDB/features/DatabaseRepair/Diagnosis.tsx +0 -98
  124. package/src/features/InitClientDB/features/DatabaseRepair/Repair.tsx +0 -218
  125. package/src/features/InitClientDB/features/DatabaseRepair/index.tsx +0 -91
  126. package/src/features/InitClientDB/index.tsx +0 -37
  127. package/src/libs/trpc/client/edge.ts +0 -26
  128. package/src/libs/trpc/edge/context.ts +0 -71
  129. package/src/libs/trpc/edge/index.ts +0 -45
  130. package/src/libs/trpc/edge/init.ts +0 -26
  131. package/src/libs/trpc/edge/middleware/jwtPayload.test.ts +0 -75
  132. package/src/libs/trpc/edge/middleware/jwtPayload.ts +0 -14
  133. package/src/migrations/FromV0ToV1.ts +0 -10
  134. package/src/migrations/FromV1ToV2/fixtures/input-v1-session.json +0 -191
  135. package/src/migrations/FromV1ToV2/fixtures/output-v2.json +0 -202
  136. package/src/migrations/FromV1ToV2/index.ts +0 -82
  137. package/src/migrations/FromV1ToV2/migrations.test.ts +0 -224
  138. package/src/migrations/FromV1ToV2/types/v1.ts +0 -78
  139. package/src/migrations/FromV1ToV2/types/v2.ts +0 -52
  140. package/src/migrations/FromV2ToV3/fixtures/input-v2-session.json +0 -72
  141. package/src/migrations/FromV2ToV3/fixtures/output-v3-from-v1.json +0 -203
  142. package/src/migrations/FromV2ToV3/fixtures/output-v3.json +0 -74
  143. package/src/migrations/FromV2ToV3/index.ts +0 -30
  144. package/src/migrations/FromV2ToV3/migrations.test.ts +0 -42
  145. package/src/migrations/FromV2ToV3/types/v3.ts +0 -27
  146. package/src/migrations/FromV3ToV4/fixtures/azure-input-v3.json +0 -79
  147. package/src/migrations/FromV3ToV4/fixtures/azure-output-v4.json +0 -75
  148. package/src/migrations/FromV3ToV4/fixtures/ollama-input-v3.json +0 -85
  149. package/src/migrations/FromV3ToV4/fixtures/ollama-output-v4.json +0 -86
  150. package/src/migrations/FromV3ToV4/fixtures/openai-input-v3.json +0 -77
  151. package/src/migrations/FromV3ToV4/fixtures/openai-output-v4.json +0 -77
  152. package/src/migrations/FromV3ToV4/fixtures/openrouter-input-v3.json +0 -82
  153. package/src/migrations/FromV3ToV4/fixtures/openrouter-output-v4.json +0 -85
  154. package/src/migrations/FromV3ToV4/fixtures/output-v4-from-v1.json +0 -203
  155. package/src/migrations/FromV3ToV4/index.ts +0 -102
  156. package/src/migrations/FromV3ToV4/migrations.test.ts +0 -195
  157. package/src/migrations/FromV3ToV4/types/v3.ts +0 -52
  158. package/src/migrations/FromV3ToV4/types/v4.ts +0 -37
  159. package/src/migrations/FromV4ToV5/fixtures/from-v1-to-v5-output.json +0 -245
  160. package/src/migrations/FromV4ToV5/fixtures/function-input-v4.json +0 -96
  161. package/src/migrations/FromV4ToV5/fixtures/function-output-v5.json +0 -120
  162. package/src/migrations/FromV4ToV5/index.ts +0 -58
  163. package/src/migrations/FromV4ToV5/migrations.test.ts +0 -49
  164. package/src/migrations/FromV4ToV5/types/v4.ts +0 -21
  165. package/src/migrations/FromV4ToV5/types/v5.ts +0 -27
  166. package/src/migrations/FromV5ToV6/fixtures/from-v1-to-v6-output.json +0 -247
  167. package/src/migrations/FromV5ToV6/fixtures/session-input-v5.json +0 -81
  168. package/src/migrations/FromV5ToV6/fixtures/session-output-v6.json +0 -85
  169. package/src/migrations/FromV5ToV6/index.ts +0 -61
  170. package/src/migrations/FromV5ToV6/migrations.test.ts +0 -50
  171. package/src/migrations/FromV5ToV6/types/v5.ts +0 -48
  172. package/src/migrations/FromV5ToV6/types/v6.ts +0 -63
  173. package/src/migrations/FromV6ToV7/fixtures/output-v7-from-v1.json +0 -203
  174. package/src/migrations/FromV6ToV7/fixtures/provider-input-v6.json +0 -103
  175. package/src/migrations/FromV6ToV7/fixtures/provider-output-v7.json +0 -118
  176. package/src/migrations/FromV6ToV7/index.ts +0 -101
  177. package/src/migrations/FromV6ToV7/migrations.test.ts +0 -64
  178. package/src/migrations/FromV6ToV7/types/v6.ts +0 -61
  179. package/src/migrations/FromV6ToV7/types/v7.ts +0 -69
  180. package/src/migrations/VersionController.test.ts +0 -88
  181. package/src/migrations/VersionController.ts +0 -67
  182. package/src/migrations/index.ts +0 -61
  183. package/src/server/routers/edge/appStatus.ts +0 -3
  184. package/src/server/routers/edge/index.ts +0 -14
  185. package/src/server/routers/edge/upload.ts +0 -16
  186. package/src/services/aiModel/client.ts +0 -70
  187. package/src/services/aiProvider/client.ts +0 -58
  188. package/src/services/baseClientService/index.ts +0 -9
  189. package/src/services/chatGroup/client.ts +0 -63
  190. package/src/services/export/_deprecated.ts +0 -155
  191. package/src/services/export/client.ts +0 -15
  192. package/src/services/file/_deprecated.test.ts +0 -119
  193. package/src/services/file/_deprecated.ts +0 -80
  194. package/src/services/file/client.test.ts +0 -199
  195. package/src/services/file/client.ts +0 -85
  196. package/src/services/import/_deprecated.ts +0 -115
  197. package/src/services/import/client.test.ts +0 -1015
  198. package/src/services/import/client.ts +0 -64
  199. package/src/services/message/_deprecated.test.ts +0 -398
  200. package/src/services/message/_deprecated.ts +0 -168
  201. package/src/services/message/client.test.ts +0 -410
  202. package/src/services/message/client.ts +0 -192
  203. package/src/services/plugin/_deprecated.test.ts +0 -162
  204. package/src/services/plugin/_deprecated.ts +0 -42
  205. package/src/services/plugin/client.test.ts +0 -177
  206. package/src/services/plugin/client.ts +0 -46
  207. package/src/services/session/_deprecated.test.ts +0 -440
  208. package/src/services/session/_deprecated.ts +0 -190
  209. package/src/services/session/client.test.ts +0 -413
  210. package/src/services/session/client.ts +0 -193
  211. package/src/services/thread/client.ts +0 -51
  212. package/src/services/topic/_deprecated.test.ts +0 -245
  213. package/src/services/topic/_deprecated.ts +0 -75
  214. package/src/services/topic/client.ts +0 -89
  215. package/src/services/topic/pglite.test.ts +0 -212
  216. package/src/services/user/_deprecated.test.ts +0 -101
  217. package/src/services/user/_deprecated.ts +0 -70
  218. package/src/services/user/client.test.ts +0 -111
  219. package/src/services/user/client.ts +0 -104
@@ -1,79 +0,0 @@
1
- import { afterEach, beforeEach, describe, expect, it } from 'vitest';
2
-
3
- import { DB_File } from '../../schemas/files';
4
- import { BrowserDB } from '../db';
5
- import { DBModel } from '../types/db';
6
-
7
- describe('LocalDB', () => {
8
- let db: BrowserDB;
9
-
10
- beforeEach(() => {
11
- db = new BrowserDB();
12
- });
13
-
14
- afterEach(async () => {
15
- await db.delete();
16
- db.close();
17
- });
18
-
19
- it('should be instantiated with the correct schema', () => {
20
- const filesTable = db.files;
21
-
22
- expect(filesTable).toBeDefined();
23
- });
24
-
25
- it('should allow adding a file', async () => {
26
- const file: DBModel<DB_File> = {
27
- id: 'file1',
28
- name: 'testfile.txt',
29
- data: new ArrayBuffer(3),
30
- saveMode: 'local',
31
- fileType: 'plain/text',
32
- size: 3,
33
- createdAt: Date.now(),
34
- updatedAt: Date.now(),
35
- };
36
-
37
- await db.files.add(file);
38
-
39
- expect(await db.files.get(file.id)).toEqual(file);
40
- });
41
-
42
- it('should allow updating a file', async () => {
43
- const file: DBModel<DB_File> = {
44
- id: 'file1',
45
- name: 'testfile.txt',
46
- data: new ArrayBuffer(3),
47
- saveMode: 'local',
48
- fileType: 'plain/text',
49
- size: 3,
50
- createdAt: Date.now(),
51
- updatedAt: Date.now(),
52
- };
53
- await db.files.add(file);
54
-
55
- // Act
56
- await db.files.update(file.id, { name: 'update.txt' });
57
-
58
- // Assert
59
- expect(await db.files.get(file.id)).toHaveProperty('name', 'update.txt');
60
- });
61
-
62
- it('should allow deleting a file', async () => {
63
- const file: DBModel<DB_File> = {
64
- id: 'file1',
65
- name: 'testfile.txt',
66
- data: new ArrayBuffer(3),
67
- saveMode: 'local',
68
- fileType: 'plain/text',
69
- size: 3,
70
- updatedAt: Date.now(),
71
- createdAt: Date.now(),
72
- };
73
- await db.files.add(file);
74
-
75
- await db.files.delete(file.id);
76
-
77
- expect(await db.files.get(file.id)).toBeUndefined();
78
- });
79
- });
@@ -1,55 +0,0 @@
1
- import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
2
- import { z } from 'zod';
3
-
4
- import { BaseModel } from '../model';
5
-
6
- // Define a mock schema for testing
7
- const mockSchema = z.object({
8
- name: z.string(),
9
- content: z.string(),
10
- });
11
-
12
- // Define a mock table name
13
- const mockTableName = 'files';
14
-
15
- describe('BaseModel', () => {
16
- let baseModel: BaseModel<typeof mockTableName>;
17
-
18
- beforeEach(() => {
19
- baseModel = new BaseModel(mockTableName, mockSchema);
20
- // Mock the console.error to test error logging
21
- vi.spyOn(console, 'error').mockImplementation(() => {});
22
- });
23
-
24
- afterEach(() => {
25
- vi.restoreAllMocks();
26
- // console.error = originalConsoleError;
27
- });
28
-
29
- it('should have a table property', () => {
30
- expect(baseModel.table).toBeDefined();
31
- });
32
-
33
- describe('add method', () => {
34
- it('should add a valid record to the database', async () => {
35
- const validData = {
36
- name: 'testfile.txt',
37
- content: 'Hello, World!',
38
- };
39
-
40
- const result = await baseModel['_addWithSync'](validData);
41
-
42
- expect(result).toHaveProperty('id');
43
- expect(console.error).not.toHaveBeenCalled();
44
- });
45
-
46
- it('should throw an error and log to console when adding an invalid record', async () => {
47
- const invalidData = {
48
- name: 123, // Invalid type, should be a string
49
- content: 'Hello, World!',
50
- };
51
-
52
- await expect(baseModel['_addWithSync'](invalidData)).rejects.toThrow(TypeError);
53
- });
54
- });
55
- });
@@ -1,246 +0,0 @@
1
- import Dexie, { Transaction } from 'dexie';
2
-
3
- import { MigrationLLMSettings } from '@/migrations/FromV3ToV4';
4
- import { MigrationAgentChatConfig } from '@/migrations/FromV5ToV6';
5
- import { MigrationKeyValueSettings } from '@/migrations/FromV6ToV7';
6
- import { uuid } from '@/utils/uuid';
7
-
8
- import { DB_File } from '../schemas/files';
9
- import { DB_Message } from '../schemas/message';
10
- import { DB_Plugin } from '../schemas/plugin';
11
- import { DB_Session } from '../schemas/session';
12
- import { DB_SessionGroup } from '../schemas/sessionGroup';
13
- import { DB_Topic } from '../schemas/topic';
14
- import { DB_User } from '../schemas/user';
15
- import { migrateSettingsToUser } from './migrations/migrateSettingsToUser';
16
- import {
17
- dbSchemaV1,
18
- dbSchemaV2,
19
- dbSchemaV3,
20
- dbSchemaV4,
21
- dbSchemaV5,
22
- dbSchemaV6,
23
- dbSchemaV7,
24
- dbSchemaV9,
25
- } from './schemas';
26
- import { DBModel, LOBE_CHAT_LOCAL_DB_NAME } from './types/db';
27
-
28
- export interface LobeDBSchemaMap {
29
- files: DB_File;
30
- messages: DB_Message;
31
- plugins: DB_Plugin;
32
- sessionGroups: DB_SessionGroup;
33
- sessions: DB_Session;
34
- topics: DB_Topic;
35
- users: DB_User;
36
- }
37
-
38
- // Define a local DB
39
- export class BrowserDB extends Dexie {
40
- public files: BrowserDBTable<'files'>;
41
- public sessions: BrowserDBTable<'sessions'>;
42
- public messages: BrowserDBTable<'messages'>;
43
- public topics: BrowserDBTable<'topics'>;
44
- public plugins: BrowserDBTable<'plugins'>;
45
- public sessionGroups: BrowserDBTable<'sessionGroups'>;
46
- public users: BrowserDBTable<'users'>;
47
-
48
- constructor() {
49
- super(LOBE_CHAT_LOCAL_DB_NAME);
50
- this.version(1).stores(dbSchemaV1);
51
- this.version(2).stores(dbSchemaV2);
52
- this.version(3).stores(dbSchemaV3);
53
- this.version(4)
54
- .stores(dbSchemaV4)
55
- .upgrade((trans) => this.upgradeToV4(trans));
56
-
57
- this.version(5)
58
- .stores(dbSchemaV5)
59
- .upgrade((trans) => this.upgradeToV5(trans));
60
-
61
- this.version(6)
62
- .stores(dbSchemaV6)
63
- .upgrade((trans) => this.upgradeToV6(trans));
64
-
65
- this.version(7)
66
- .stores(dbSchemaV7)
67
- .upgrade((trans) => this.upgradeToV7(trans));
68
-
69
- this.version(8)
70
- .stores(dbSchemaV7)
71
- .upgrade((trans) => this.upgradeToV8(trans));
72
-
73
- this.version(9)
74
- .stores(dbSchemaV9)
75
- .upgrade((trans) => this.upgradeToV9(trans));
76
-
77
- this.version(10)
78
- .stores(dbSchemaV9)
79
- .upgrade((trans) => this.upgradeToV10(trans));
80
-
81
- this.version(11)
82
- .stores(dbSchemaV9)
83
- .upgrade((trans) => this.upgradeToV11(trans));
84
-
85
- this.files = this.table('files');
86
- this.sessions = this.table('sessions');
87
- this.messages = this.table('messages');
88
- this.topics = this.table('topics');
89
- this.plugins = this.table('plugins');
90
- this.sessionGroups = this.table('sessionGroups');
91
- this.users = this.table('users');
92
- }
93
-
94
- /**
95
- * 2024.01.22
96
- *
97
- * DB V3 to V4
98
- * from `group = pinned` to `pinned:true`
99
- */
100
- upgradeToV4 = async (trans: Transaction) => {
101
- const sessions = trans.table('sessions');
102
- await sessions.toCollection().modify((session) => {
103
- // translate boolean to number
104
- session.pinned = session.group === 'pinned' ? 1 : 0;
105
- session.group = 'default';
106
- });
107
- };
108
-
109
- /**
110
- * 2024.01.29
111
- * settings from localStorage to indexedDB
112
- */
113
- upgradeToV5 = async (trans: Transaction) => {
114
- const users = trans.table('users');
115
-
116
- // if no user, create one
117
- if ((await users.count()) === 0) {
118
- const data = localStorage.getItem('LOBE_SETTINGS');
119
-
120
- if (data) {
121
- let json;
122
-
123
- try {
124
- json = JSON.parse(data);
125
- } catch {
126
- /* empty */
127
- }
128
-
129
- if (!json?.state?.settings) return;
130
-
131
- const settings = json.state.settings;
132
-
133
- const user = migrateSettingsToUser(settings);
134
- await users.add(user);
135
- }
136
- }
137
- };
138
-
139
- /**
140
- * 2024.02.27
141
- * add uuid to user
142
- */
143
- upgradeToV6 = async (trans: Transaction) => {
144
- const users = trans.table('users');
145
-
146
- await users.toCollection().modify((user: DB_User) => {
147
- if (!user.uuid) user.uuid = uuid();
148
- });
149
- };
150
-
151
- /**
152
- * 2024.03.14
153
- * add `id` in plugins
154
- */
155
- upgradeToV7 = async (trans: Transaction) => {
156
- const plugins = trans.table('plugins');
157
-
158
- await plugins.toCollection().modify((plugin: DB_Plugin) => {
159
- plugin.id = plugin.identifier;
160
- });
161
- };
162
-
163
- upgradeToV8 = async (trans: Transaction) => {
164
- const users = trans.table('users');
165
- await users.toCollection().modify((user: DB_User) => {
166
- if (user.settings) {
167
- user.settings = MigrationLLMSettings.migrateSettings(user.settings as any);
168
- }
169
- });
170
- };
171
-
172
- /**
173
- * 2024.05.11
174
- *
175
- * message role=function to role=tool
176
- */
177
- upgradeToV9 = async (trans: Transaction) => {
178
- const messages = trans.table('messages');
179
- await messages.toCollection().modify(async (message: DBModel<DB_Message>) => {
180
- if ((message.role as string) === 'function') {
181
- const origin = Object.assign({}, message);
182
-
183
- const toolCallId = `tool_call_${message.id}`;
184
- const assistantMessageId = `tool_calls_${message.id}`;
185
-
186
- message.role = 'tool';
187
- message.tool_call_id = toolCallId;
188
- message.parentId = assistantMessageId;
189
-
190
- await messages.add({
191
- ...origin,
192
- content: '',
193
- createdAt: message.createdAt - 10,
194
- error: undefined,
195
- id: assistantMessageId,
196
- role: 'assistant',
197
- tools: [{ ...message.plugin!, id: toolCallId }],
198
- updatedAt: message.updatedAt - 10,
199
- } as DBModel<DB_Message>);
200
- }
201
- });
202
- };
203
-
204
- /**
205
- * 2024.05.25
206
- * migrate some agent config to chatConfig
207
- */
208
- upgradeToV10 = async (trans: Transaction) => {
209
- const sessions = trans.table('sessions');
210
- await sessions.toCollection().modify(async (session: DBModel<DB_Session>) => {
211
- if (session.config)
212
- session.config = MigrationAgentChatConfig.migrateChatConfig(session.config as any);
213
- });
214
- };
215
-
216
- /**
217
- * 2024.05.27
218
- * migrate apiKey in languageModel to keyVaults
219
- */
220
- upgradeToV11 = async (trans: Transaction) => {
221
- const users = trans.table('users');
222
-
223
- await users.toCollection().modify((user: DB_User) => {
224
- if (user.settings) {
225
- user.settings = MigrationKeyValueSettings.migrateSettings(user.settings as any);
226
- }
227
- });
228
- };
229
- }
230
-
231
- export const browserDB = new BrowserDB();
232
-
233
- // ================================================ //
234
- // ================================================ //
235
- // ================================================ //
236
- // ================================================ //
237
- // ================================================ //
238
-
239
- // types helper
240
- export type BrowserDBSchema = {
241
- [t in keyof LobeDBSchemaMap]: {
242
- model: LobeDBSchemaMap[t];
243
- table: Dexie.Table<DBModel<LobeDBSchemaMap[t]>, string>;
244
- };
245
- };
246
- type BrowserDBTable<T extends keyof LobeDBSchemaMap> = BrowserDBSchema[T]['table'];
@@ -1,2 +0,0 @@
1
- export { browserDB } from './db';
2
- export * from './model';
@@ -1,55 +0,0 @@
1
- {
2
- "avatar": "",
3
- "defaultAgent": {
4
- "config": {
5
- "autoCreateTopicThreshold": 2,
6
- "displayMode": "chat",
7
- "enableAutoCreateTopic": true,
8
- "historyCount": 1,
9
- "model": "gpt-3.5-turbo-1106",
10
- "params": {
11
- "frequency_penalty": 0,
12
- "presence_penalty": 0,
13
- "temperature": 0.7,
14
- "top_p": 0.7
15
- },
16
- "plugins": ["website-crawler"],
17
- "systemRole": "",
18
- "tts": {
19
- "showAllLocaleVoice": false,
20
- "sttLocale": "auto",
21
- "ttsService": "openai",
22
- "voice": { "openai": "alloy" }
23
- },
24
- "enableHistoryCount": true
25
- },
26
- "meta": {}
27
- },
28
- "fontSize": 14,
29
- "language": "auto",
30
- "languageModel": {
31
- "openAI": {
32
- "OPENAI_API_KEY": "dfdf",
33
- "models": [
34
- "gpt-3.5-turbo",
35
- "gpt-3.5-turbo-1106",
36
- "gpt-3.5-turbo-16k",
37
- "gpt-4",
38
- "gpt-4-32k",
39
- "gpt-4-0125-preview",
40
- "gpt-4-vision-preview"
41
- ],
42
- "customModelName": "+glm-4,+glm-4v",
43
- "endpoint": "sdaddsd"
44
- },
45
- "zhipu": { "ZHIPU_API_KEY": "", "enabled": false }
46
- },
47
- "password": "",
48
- "themeMode": "auto",
49
- "tool": { "dalle": { "autoGenerate": false } },
50
- "tts": {
51
- "openAI": { "sttModel": "whisper-1", "ttsModel": "tts-1" },
52
- "sttAutoStop": true,
53
- "sttServer": "openai"
54
- }
55
- }
@@ -1,60 +0,0 @@
1
- {
2
- "avatar": "",
3
- "settings": {
4
- "defaultAgent": {
5
- "config": {
6
- "autoCreateTopicThreshold": 2,
7
- "displayMode": "chat",
8
- "enableAutoCreateTopic": true,
9
- "historyCount": 1,
10
- "model": "gpt-3.5-turbo-1106",
11
- "params": {
12
- "frequency_penalty": 0,
13
- "presence_penalty": 0,
14
- "temperature": 0.7,
15
- "top_p": 0.7
16
- },
17
- "plugins": ["website-crawler"],
18
- "systemRole": "",
19
- "tts": {
20
- "showAllLocaleVoice": false,
21
- "sttLocale": "auto",
22
- "ttsService": "openai",
23
- "voice": {
24
- "openai": "alloy"
25
- }
26
- },
27
- "enableHistoryCount": true
28
- },
29
- "meta": {}
30
- },
31
- "fontSize": 14,
32
- "language": "auto",
33
- "languageModel": {
34
- "openai": {
35
- "OPENAI_API_KEY": "dfdf",
36
- "models": [
37
- "gpt-3.5-turbo",
38
- "gpt-3.5-turbo-1106",
39
- "gpt-3.5-turbo-16k",
40
- "gpt-4",
41
- "gpt-4-32k",
42
- "gpt-4-0125-preview",
43
- "gpt-4-vision-preview"
44
- ],
45
- "customModelName": "+glm-4,+glm-4v",
46
- "endpoint": "sdaddsd"
47
- }
48
- },
49
- "password": "",
50
- "themeMode": "auto",
51
- "tts": {
52
- "openAI": {
53
- "sttModel": "whisper-1",
54
- "ttsModel": "tts-1"
55
- },
56
- "sttAutoStop": true,
57
- "sttServer": "openai"
58
- }
59
- }
60
- }
@@ -1,14 +0,0 @@
1
- import { describe, expect } from 'vitest';
2
-
3
- import input from './fixtures/input.json';
4
- import outputData from './fixtures/output.json';
5
- import { migrateSettingsToUser } from './index';
6
- import { V4Settings } from './type';
7
-
8
- describe('migrateSettingsFromLocalStorage', () => {
9
- it('from localStorage to indexedDB', () => {
10
- const output = migrateSettingsToUser(input as V4Settings);
11
-
12
- expect(output).toEqual(outputData);
13
- });
14
- });
@@ -1,22 +0,0 @@
1
- import { V4Settings, V5Settings } from './type';
2
-
3
- export const migrateSettingsToUser = (
4
- settings: V4Settings,
5
- ): { avatar: string; settings: V5Settings } => {
6
- const dbSettings: V5Settings = {
7
- defaultAgent: settings.defaultAgent,
8
- fontSize: settings.fontSize,
9
- language: settings.language,
10
- languageModel: {
11
- openai: settings.languageModel.openAI,
12
- },
13
- password: settings.password,
14
- themeMode: settings.themeMode,
15
- tts: settings.tts,
16
- };
17
-
18
- return {
19
- avatar: settings.avatar,
20
- settings: dbSettings,
21
- };
22
- };
@@ -1,105 +0,0 @@
1
- import { FewShots, LobeAgentTTSConfig, MetaData, STTServer } from '@lobechat/types';
2
- import type { ThemeMode } from 'antd-style';
3
- import { LLMParams } from 'model-bank';
4
-
5
- interface V4LobeAgentConfig {
6
- autoCreateTopicThreshold: number;
7
- compressThreshold?: number;
8
- displayMode?: 'chat' | 'docs';
9
- enableAutoCreateTopic: boolean;
10
- /**
11
- * 历史消息长度压缩阈值
12
- */
13
- enableCompressThreshold?: boolean;
14
- /**
15
- * 开启历史记录条数
16
- */
17
- enableHistoryCount?: boolean;
18
- enableMaxTokens?: boolean;
19
-
20
- fewShots?: FewShots;
21
- /**
22
- * 历史消息条数
23
- */
24
- historyCount?: number;
25
- inputTemplate?: string;
26
- /**
27
- * 角色所使用的语言模型
28
- * @default gpt-3.5-turbo
29
- */
30
- model: string;
31
- /**
32
- * 语言模型参数
33
- */
34
- params: LLMParams;
35
- /**
36
- * 启用的插件
37
- */
38
- plugins?: string[];
39
- /**
40
- * 模型供应商
41
- */
42
- provider?: string;
43
- /**
44
- * 系统角色
45
- */
46
- systemRole: string;
47
- /**
48
- * 语音服务
49
- */
50
- tts: LobeAgentTTSConfig;
51
- }
52
-
53
- interface V4DefaultAgent {
54
- config: V4LobeAgentConfig;
55
- meta: MetaData;
56
- }
57
-
58
- interface OpenAIConfig {
59
- OPENAI_API_KEY: string;
60
- azureApiVersion?: string;
61
- customModelName?: string;
62
- endpoint?: string;
63
- models?: string[];
64
- useAzure?: boolean;
65
- }
66
-
67
- interface V4LLMConfig {
68
- openAI: OpenAIConfig;
69
- }
70
-
71
- interface TTSConfig {
72
- openAI: {
73
- sttModel: 'whisper-1';
74
- ttsModel: 'tts-1' | 'tts-1-hd';
75
- };
76
- sttAutoStop: boolean;
77
- sttServer: STTServer;
78
- }
79
-
80
- export interface V4Settings {
81
- avatar: string;
82
- defaultAgent: V4DefaultAgent;
83
- fontSize: number;
84
- language: string;
85
- languageModel: V4LLMConfig;
86
- neutralColor?: string;
87
- password: string;
88
- primaryColor?: string;
89
- themeMode: ThemeMode;
90
- tts: TTSConfig;
91
- }
92
-
93
- export interface V5Settings {
94
- defaultAgent: V4DefaultAgent;
95
- fontSize: number;
96
- language: string;
97
- languageModel: {
98
- openai: OpenAIConfig;
99
- };
100
- neutralColor?: string;
101
- password: string;
102
- primaryColor?: string;
103
- themeMode: ThemeMode;
104
- tts: TTSConfig;
105
- }