@lobehub/lobehub 2.0.0-next.12 → 2.0.0-next.14

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 (212) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/changelog/v1.json +18 -0
  3. package/package.json +1 -1
  4. package/packages/const/src/version.ts +3 -3
  5. package/packages/database/src/repositories/dataImporter/deprecated/__tests__/index.test.ts +2 -1
  6. package/packages/database/src/repositories/dataImporter/deprecated/index.ts +7 -1
  7. package/src/app/[variants]/(main)/(mobile)/me/(home)/__tests__/useCategory.test.tsx +9 -0
  8. package/src/app/[variants]/(main)/(mobile)/me/(home)/layout.tsx +0 -2
  9. package/src/app/[variants]/(main)/chat/@session/features/SessionListContent/List/Item/Actions.tsx +3 -28
  10. package/src/app/[variants]/(main)/chat/_layout/Desktop/index.tsx +0 -2
  11. package/src/app/[variants]/(main)/chat/_layout/Mobile.tsx +1 -5
  12. package/src/app/[variants]/(main)/chat/settings/features/HeaderContent.tsx +2 -62
  13. package/src/app/[variants]/(main)/image/features/PromptInput/index.tsx +1 -1
  14. package/src/app/[variants]/(main)/image/page.tsx +0 -2
  15. package/src/app/[variants]/(main)/profile/_layout/Desktop/index.tsx +23 -24
  16. package/src/app/[variants]/(main)/profile/_layout/Mobile/index.tsx +5 -9
  17. package/src/app/[variants]/(main)/settings/_layout/Desktop/index.tsx +0 -2
  18. package/src/app/[variants]/(main)/settings/_layout/Mobile/index.tsx +0 -2
  19. package/src/app/[variants]/(main)/settings/provider/(list)/ProviderGrid/Card.tsx +1 -1
  20. package/src/app/[variants]/loading/index.tsx +1 -10
  21. package/src/components/Link.tsx +12 -0
  22. package/src/envs/app.ts +5 -8
  23. package/src/features/DataImporter/index.tsx +15 -60
  24. package/src/features/DevPanel/PostgresViewer/usePgTable.ts +3 -2
  25. package/src/hooks/useInterceptingRoutes.test.ts +21 -3
  26. package/src/libs/trpc/client/index.ts +0 -1
  27. package/src/libs/trpc/client/lambda.ts +8 -5
  28. package/src/libs/trpc/lambda/context.ts +4 -1
  29. package/src/server/routers/desktop/mcp.ts +1 -3
  30. package/src/server/routers/lambda/config/index.test.ts +2 -2
  31. package/src/server/routers/tools/mcp.ts +2 -3
  32. package/src/server/routers/tools/search.test.ts +1 -7
  33. package/src/server/routers/tools/search.ts +1 -4
  34. package/src/services/__tests__/tool.test.ts +0 -3
  35. package/src/services/aiModel/index.test.ts +0 -3
  36. package/src/services/aiModel/index.ts +1 -7
  37. package/src/services/aiProvider/index.test.ts +0 -3
  38. package/src/services/aiProvider/index.ts +1 -7
  39. package/src/services/chatGroup/index.ts +1 -10
  40. package/src/services/config.ts +1 -65
  41. package/src/services/export/index.ts +1 -4
  42. package/src/services/file/index.ts +1 -11
  43. package/src/services/import/index.ts +1 -7
  44. package/src/services/message/index.ts +1 -11
  45. package/src/services/plugin/index.ts +1 -11
  46. package/src/services/session/index.ts +1 -11
  47. package/src/services/tableViewer/client.ts +12 -15
  48. package/src/services/thread/index.ts +1 -7
  49. package/src/services/topic/index.ts +1 -11
  50. package/src/services/user/index.ts +1 -13
  51. package/src/store/chat/slices/aiChat/actions/__tests__/generateAIChat.test.ts +0 -241
  52. package/src/store/chat/slices/aiChat/actions/__tests__/generateAIChatV2.test.ts +26 -1
  53. package/src/store/chat/slices/aiChat/actions/__tests__/helpers.ts +3 -1
  54. package/src/store/chat/slices/aiChat/actions/generateAIChat.ts +1 -138
  55. package/src/store/user/slices/common/action.test.ts +1 -4
  56. package/src/app/(backend)/trpc/edge/[trpc]/route.ts +0 -26
  57. package/src/app/[variants]/(main)/(mobile)/me/data/features/Category.tsx +0 -48
  58. package/src/app/[variants]/(main)/(mobile)/me/data/features/Header.tsx +0 -33
  59. package/src/app/[variants]/(main)/(mobile)/me/data/layout.tsx +0 -13
  60. package/src/app/[variants]/(main)/(mobile)/me/data/loading.tsx +0 -5
  61. package/src/app/[variants]/(main)/(mobile)/me/data/page.tsx +0 -29
  62. package/src/app/[variants]/(main)/chat/features/Migration/DBReader.ts +0 -290
  63. package/src/app/[variants]/(main)/chat/features/Migration/ExportConfigButton.tsx +0 -35
  64. package/src/app/[variants]/(main)/chat/features/Migration/Failed.tsx +0 -120
  65. package/src/app/[variants]/(main)/chat/features/Migration/Modal.tsx +0 -81
  66. package/src/app/[variants]/(main)/chat/features/Migration/Start.tsx +0 -108
  67. package/src/app/[variants]/(main)/chat/features/Migration/UpgradeButton.tsx +0 -71
  68. package/src/app/[variants]/(main)/chat/features/Migration/const.ts +0 -15
  69. package/src/app/[variants]/(main)/chat/features/Migration/index.tsx +0 -50
  70. package/src/app/[variants]/loading/Client/Content.tsx +0 -48
  71. package/src/app/[variants]/loading/Client/Error.tsx +0 -27
  72. package/src/app/[variants]/loading/Client/Redirect.tsx +0 -47
  73. package/src/app/[variants]/loading/Client/index.tsx +0 -22
  74. package/src/components/InnerLink.tsx +0 -20
  75. package/src/database/_deprecated/core/__tests__/db-upgrade.test.ts +0 -42
  76. package/src/database/_deprecated/core/__tests__/db.test.ts +0 -79
  77. package/src/database/_deprecated/core/__tests__/model.test.ts +0 -55
  78. package/src/database/_deprecated/core/db.ts +0 -246
  79. package/src/database/_deprecated/core/index.ts +0 -2
  80. package/src/database/_deprecated/core/migrations/migrateSettingsToUser/fixtures/input.json +0 -55
  81. package/src/database/_deprecated/core/migrations/migrateSettingsToUser/fixtures/output.json +0 -60
  82. package/src/database/_deprecated/core/migrations/migrateSettingsToUser/index.test.ts +0 -14
  83. package/src/database/_deprecated/core/migrations/migrateSettingsToUser/index.ts +0 -22
  84. package/src/database/_deprecated/core/migrations/migrateSettingsToUser/type.ts +0 -105
  85. package/src/database/_deprecated/core/model.ts +0 -218
  86. package/src/database/_deprecated/core/schemas.ts +0 -88
  87. package/src/database/_deprecated/core/types/db.ts +0 -15
  88. package/src/database/_deprecated/models/__DEBUG.ts +0 -124
  89. package/src/database/_deprecated/models/__tests__/file.test.ts +0 -83
  90. package/src/database/_deprecated/models/__tests__/message.test.ts +0 -426
  91. package/src/database/_deprecated/models/__tests__/plugin.test.ts +0 -81
  92. package/src/database/_deprecated/models/__tests__/session.test.ts +0 -253
  93. package/src/database/_deprecated/models/__tests__/sessionGroup.test.ts +0 -220
  94. package/src/database/_deprecated/models/__tests__/topic.test.ts +0 -523
  95. package/src/database/_deprecated/models/__tests__/user.test.ts +0 -82
  96. package/src/database/_deprecated/models/file.ts +0 -51
  97. package/src/database/_deprecated/models/message.ts +0 -277
  98. package/src/database/_deprecated/models/plugin.ts +0 -62
  99. package/src/database/_deprecated/models/session.ts +0 -271
  100. package/src/database/_deprecated/models/sessionGroup.ts +0 -93
  101. package/src/database/_deprecated/models/topic.ts +0 -250
  102. package/src/database/_deprecated/models/user.ts +0 -69
  103. package/src/database/_deprecated/schemas/files.ts +0 -39
  104. package/src/database/_deprecated/schemas/message.ts +0 -50
  105. package/src/database/_deprecated/schemas/plugin.ts +0 -12
  106. package/src/database/_deprecated/schemas/session.ts +0 -54
  107. package/src/database/_deprecated/schemas/sessionGroup.ts +0 -8
  108. package/src/database/_deprecated/schemas/topic.ts +0 -12
  109. package/src/database/_deprecated/schemas/user.ts +0 -40
  110. package/src/features/DataImporter/_deprecated.ts +0 -43
  111. package/src/features/InitClientDB/EnableModal.tsx +0 -118
  112. package/src/features/InitClientDB/ErrorResult.tsx +0 -143
  113. package/src/features/InitClientDB/InitIndicator.tsx +0 -124
  114. package/src/features/InitClientDB/PGliteIcon.tsx +0 -28
  115. package/src/features/InitClientDB/features/DatabaseRepair/Backup.tsx +0 -75
  116. package/src/features/InitClientDB/features/DatabaseRepair/Diagnosis.tsx +0 -98
  117. package/src/features/InitClientDB/features/DatabaseRepair/Repair.tsx +0 -218
  118. package/src/features/InitClientDB/features/DatabaseRepair/index.tsx +0 -91
  119. package/src/features/InitClientDB/index.tsx +0 -37
  120. package/src/libs/trpc/client/edge.ts +0 -26
  121. package/src/libs/trpc/edge/context.ts +0 -71
  122. package/src/libs/trpc/edge/index.ts +0 -45
  123. package/src/libs/trpc/edge/init.ts +0 -26
  124. package/src/libs/trpc/edge/middleware/jwtPayload.test.ts +0 -75
  125. package/src/libs/trpc/edge/middleware/jwtPayload.ts +0 -14
  126. package/src/migrations/FromV0ToV1.ts +0 -10
  127. package/src/migrations/FromV1ToV2/fixtures/input-v1-session.json +0 -191
  128. package/src/migrations/FromV1ToV2/fixtures/output-v2.json +0 -202
  129. package/src/migrations/FromV1ToV2/index.ts +0 -82
  130. package/src/migrations/FromV1ToV2/migrations.test.ts +0 -224
  131. package/src/migrations/FromV1ToV2/types/v1.ts +0 -78
  132. package/src/migrations/FromV1ToV2/types/v2.ts +0 -52
  133. package/src/migrations/FromV2ToV3/fixtures/input-v2-session.json +0 -72
  134. package/src/migrations/FromV2ToV3/fixtures/output-v3-from-v1.json +0 -203
  135. package/src/migrations/FromV2ToV3/fixtures/output-v3.json +0 -74
  136. package/src/migrations/FromV2ToV3/index.ts +0 -30
  137. package/src/migrations/FromV2ToV3/migrations.test.ts +0 -42
  138. package/src/migrations/FromV2ToV3/types/v3.ts +0 -27
  139. package/src/migrations/FromV3ToV4/fixtures/azure-input-v3.json +0 -79
  140. package/src/migrations/FromV3ToV4/fixtures/azure-output-v4.json +0 -75
  141. package/src/migrations/FromV3ToV4/fixtures/ollama-input-v3.json +0 -85
  142. package/src/migrations/FromV3ToV4/fixtures/ollama-output-v4.json +0 -86
  143. package/src/migrations/FromV3ToV4/fixtures/openai-input-v3.json +0 -77
  144. package/src/migrations/FromV3ToV4/fixtures/openai-output-v4.json +0 -77
  145. package/src/migrations/FromV3ToV4/fixtures/openrouter-input-v3.json +0 -82
  146. package/src/migrations/FromV3ToV4/fixtures/openrouter-output-v4.json +0 -85
  147. package/src/migrations/FromV3ToV4/fixtures/output-v4-from-v1.json +0 -203
  148. package/src/migrations/FromV3ToV4/index.ts +0 -102
  149. package/src/migrations/FromV3ToV4/migrations.test.ts +0 -195
  150. package/src/migrations/FromV3ToV4/types/v3.ts +0 -52
  151. package/src/migrations/FromV3ToV4/types/v4.ts +0 -37
  152. package/src/migrations/FromV4ToV5/fixtures/from-v1-to-v5-output.json +0 -245
  153. package/src/migrations/FromV4ToV5/fixtures/function-input-v4.json +0 -96
  154. package/src/migrations/FromV4ToV5/fixtures/function-output-v5.json +0 -120
  155. package/src/migrations/FromV4ToV5/index.ts +0 -58
  156. package/src/migrations/FromV4ToV5/migrations.test.ts +0 -49
  157. package/src/migrations/FromV4ToV5/types/v4.ts +0 -21
  158. package/src/migrations/FromV4ToV5/types/v5.ts +0 -27
  159. package/src/migrations/FromV5ToV6/fixtures/from-v1-to-v6-output.json +0 -247
  160. package/src/migrations/FromV5ToV6/fixtures/session-input-v5.json +0 -81
  161. package/src/migrations/FromV5ToV6/fixtures/session-output-v6.json +0 -85
  162. package/src/migrations/FromV5ToV6/index.ts +0 -61
  163. package/src/migrations/FromV5ToV6/migrations.test.ts +0 -50
  164. package/src/migrations/FromV5ToV6/types/v5.ts +0 -48
  165. package/src/migrations/FromV5ToV6/types/v6.ts +0 -63
  166. package/src/migrations/FromV6ToV7/fixtures/output-v7-from-v1.json +0 -203
  167. package/src/migrations/FromV6ToV7/fixtures/provider-input-v6.json +0 -103
  168. package/src/migrations/FromV6ToV7/fixtures/provider-output-v7.json +0 -118
  169. package/src/migrations/FromV6ToV7/index.ts +0 -101
  170. package/src/migrations/FromV6ToV7/migrations.test.ts +0 -64
  171. package/src/migrations/FromV6ToV7/types/v6.ts +0 -61
  172. package/src/migrations/FromV6ToV7/types/v7.ts +0 -69
  173. package/src/migrations/VersionController.test.ts +0 -88
  174. package/src/migrations/VersionController.ts +0 -67
  175. package/src/migrations/index.ts +0 -61
  176. package/src/server/routers/edge/appStatus.ts +0 -3
  177. package/src/server/routers/edge/index.ts +0 -14
  178. package/src/server/routers/edge/upload.ts +0 -16
  179. package/src/services/aiModel/client.ts +0 -70
  180. package/src/services/aiProvider/client.ts +0 -58
  181. package/src/services/baseClientService/index.ts +0 -9
  182. package/src/services/chatGroup/client.ts +0 -63
  183. package/src/services/export/_deprecated.ts +0 -155
  184. package/src/services/export/client.ts +0 -15
  185. package/src/services/file/_deprecated.test.ts +0 -119
  186. package/src/services/file/_deprecated.ts +0 -80
  187. package/src/services/file/client.test.ts +0 -199
  188. package/src/services/file/client.ts +0 -85
  189. package/src/services/import/_deprecated.ts +0 -115
  190. package/src/services/import/client.test.ts +0 -1015
  191. package/src/services/import/client.ts +0 -64
  192. package/src/services/message/_deprecated.test.ts +0 -398
  193. package/src/services/message/_deprecated.ts +0 -168
  194. package/src/services/message/client.test.ts +0 -410
  195. package/src/services/message/client.ts +0 -192
  196. package/src/services/plugin/_deprecated.test.ts +0 -162
  197. package/src/services/plugin/_deprecated.ts +0 -42
  198. package/src/services/plugin/client.test.ts +0 -177
  199. package/src/services/plugin/client.ts +0 -46
  200. package/src/services/session/_deprecated.test.ts +0 -440
  201. package/src/services/session/_deprecated.ts +0 -190
  202. package/src/services/session/client.test.ts +0 -413
  203. package/src/services/session/client.ts +0 -193
  204. package/src/services/thread/client.ts +0 -51
  205. package/src/services/topic/_deprecated.test.ts +0 -245
  206. package/src/services/topic/_deprecated.ts +0 -75
  207. package/src/services/topic/client.ts +0 -89
  208. package/src/services/topic/pglite.test.ts +0 -212
  209. package/src/services/user/_deprecated.test.ts +0 -101
  210. package/src/services/user/_deprecated.ts +0 -70
  211. package/src/services/user/client.test.ts +0 -111
  212. package/src/services/user/client.ts +0 -104
@@ -1,191 +0,0 @@
1
- {
2
- "exportType": "sessions",
3
- "state": {
4
- "sessions": {
5
- "06cc3e20-e870-4099-a619-c07a849d742d": {
6
- "chats": {
7
- "n2Tsl3Dm": {
8
- "content": "是的,你可以使用 Prisma 来自定义生成 `id` 的逻辑,例如使用 `nanoid` 库来生成唯一标识符。\n\n首先,你需要在项目中安装 `nanoid` 库:\n\n```\nnpm install nanoid\n```\n\n然后,你可以在 Prisma 的模型定义中使用 `@default` 指令,并提供一个自定义的默认值函数来生成 `id`。\n\n```prisma\nmodel Message {\n id String @id @default(dbgenerated(\"nanoid(10)\"))\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n```\n\n在上述模型定义中,我们使用 `dbgenerated` 指令来定义一个自定义的默认值函数。函数 `nanoid(10)` 会生成一个长度为 10 的唯一标识符。\n\n请注意,使用自定义的 `id` 生成逻辑可能会对数据库性能产生一些影响,因为每次创建新记录时都需要执行自定义函数。因此,请确保你的自定义逻辑是高效的,并在实际使用中进行测试和评估性能。",
9
- "createAt": 1698463981313,
10
- "id": "n2Tsl3Dm",
11
- "meta": {},
12
- "parentId": "JSZaJOGj",
13
- "role": "assistant",
14
- "updateAt": 1698464004494,
15
- "topicId": "CZg3IEdy",
16
- "extra": { "fromModel": "gpt-3.5-turbo" }
17
- },
18
- "xPft8Msa": {
19
- "content": "如何指定 自定义函数的引入位置?",
20
- "createAt": 1698464173224,
21
- "id": "xPft8Msa",
22
- "meta": {},
23
- "role": "user",
24
- "updateAt": 1698464173226,
25
- "topicId": "CZg3IEdy"
26
- },
27
- "jZc2KKRs": {
28
- "content": "在 Prisma 中,你可以通过在 `schema.prisma` 文件的顶部使用 `generator` 块来指定自定义函数的引入位置。\n\n例如,假设你想使用 `nanoid` 库来生成自定义的 `id`,你可以按照以下方式配置:\n\n```prisma\ngenerator client {\n provider = \"prisma-client-js\"\n output = \"./node_modules/@prisma/client\"\n}\n\ngenerator dbgenerated {\n provider = \"prisma-dbgenerator\"\n output = \"./node_modules/@prisma/client\"\n binaryTargets = [\"native\"]\n previewFeatures = [\"nativeTypes\"]\n config = {\n \"generator\": {\n \"dbgenerated\": {\n \"output\": \"./src/db/generated\",\n \"provider\": \"./src/db/generated/provider.js\"\n }\n }\n }\n}\n```\n\n在上述配置中,我们定义了两个生成器。`client` 生成器用于生成 Prisma 客户端代码,而 `dbgenerated` 生成器用于生成数据库相关的代码。\n\n注意到 `dbgenerated` 生成器的 `config` 部分中有一个 `provider` 字段,它指定了自定义函数的引入位置。在这个示例中,我们将自定义函数放在 `./src/db/generated/provider.js` 文件中。\n\n你可以根据你的项目结构和需要来调整路径和文件名,确保指定的 `provider` 路径正确引入了自定义函数。",
29
- "createAt": 1698464173228,
30
- "id": "jZc2KKRs",
31
- "meta": {},
32
- "parentId": "xPft8Msa",
33
- "role": "assistant",
34
- "updateAt": 1698464181896,
35
- "topicId": "CZg3IEdy",
36
- "extra": { "fromModel": "gpt-3.5-turbo" }
37
- },
38
- "LjG9XSuq": {
39
- "content": "如何启动一个 postgres Docker 镜像?",
40
- "createAt": 1698754460196,
41
- "id": "LjG9XSuq",
42
- "meta": {},
43
- "role": "user",
44
- "updateAt": 1698754463118,
45
- "topicId": "MNWhBEh5"
46
- },
47
- "CL7E1Mc5": {
48
- "content": "要启动一个 PostgreSQL Docker 镜像,你可以按照以下步骤操作:\n\n1. 首先,确保你已经安装了 Docker,可以在终端中运行 `docker --version` 来检查。\n\n2. 在终端中运行以下命令以下载并启动一个 PostgreSQL 镜像:\n\n ```shell\n docker run --name my-postgres -e POSTGRES_PASSWORD=mysecretpassword -p 5432:5432 -d postgres\n ```\n\n 这将从 Docker Hub 下载 PostgreSQL 镜像",
49
- "createAt": 1698754479751,
50
- "id": "CL7E1Mc5",
51
- "meta": {},
52
- "parentId": "LjG9XSuq",
53
- "role": "assistant",
54
- "updateAt": 1698754507690,
55
- "topicId": "MNWhBEh5",
56
- "extra": { "fromModel": "gpt-3.5-turbo" }
57
- },
58
- "UIvHZr7m": {
59
- "content": "如何指定本地存储的目录到 /www/database/postgres",
60
- "createAt": 1698754591763,
61
- "id": "UIvHZr7m",
62
- "meta": {},
63
- "role": "user",
64
- "updateAt": 1698754591764,
65
- "topicId": "MNWhBEh5"
66
- },
67
- "XLJOK44r": {
68
- "content": "要将本地存储的目录映射到容器内的 `/var/lib/postgresql/data` 目录,你可以使用 Docker 的 `-v` 参数。\n\n以下是示例命令:\n\n```shell\ndocker run --name my-postgres -e POSTGRES_PASSWORD=mysecretpassword -p 5432:5432 -v /www/database/postgres:/var/lib/postgresql/data -d postgres\n```\n\n在这个命令中,我们使用了 `-v` 参数来指定本地目录 `/www/database/postgres` 映射到容器内的 `/var/lib/postgresql/data` 目录。这样,所有的 PostgreSQL 数据将会保存在本地指定的目录中。",
69
- "createAt": 1698754591765,
70
- "id": "XLJOK44r",
71
- "meta": {},
72
- "parentId": "UIvHZr7m",
73
- "role": "assistant",
74
- "updateAt": 1698754609275,
75
- "topicId": "MNWhBEh5",
76
- "extra": { "fromModel": "gpt-3.5-turbo" }
77
- },
78
- "W3J6jQjm": {
79
- "content": "docker run --name postgres -e POSTGRES_PASSWORD=DSLapHYdzNrai5j6 -p 33300:5432 -v /www/database/postgres:/var/lib/postgresql/data -d postgres",
80
- "createAt": 1698754700529,
81
- "id": "W3J6jQjm",
82
- "meta": {},
83
- "role": "user",
84
- "updateAt": 1698754700530,
85
- "topicId": "MNWhBEh5"
86
- },
87
- "L7mq0ehV": {
88
- "content": "如何启动 pgadmin",
89
- "createAt": 1698755749886,
90
- "id": "L7mq0ehV",
91
- "meta": {},
92
- "role": "user",
93
- "updateAt": 1698755749888,
94
- "topicId": "MNWhBEh5"
95
- },
96
- "d5XTX9EQ": {
97
- "content": "要启动 pgAdmin,你可以按照以下步骤操作:\n\n1. 首先,确保你已经安装了 Docker,并且已经成功启动了 PostgreSQL Docker 容器。\n\n2. 在终端中运行以下命令以启动 pgAdmin Docker 容器:\n\n ```shell\n docker run --name my-pgadmin -p 5050:80 -e PGADMIN_DEFAULT_EMAIL=myemail@example.com -e PGADMIN_DEFAULT_PASSWORD=mypassword -d dpage/pgadmin4\n ```\n\n 在这个命令中,我们使用了 `-p` 参数来将容器的端口 80 映射到本地的端口 5050。你可以根据需要修改这个端口映射。\n\n 我们还使用了 `-e` 参数来设置 pgAdmin 的默认登录邮箱和密码。你可以根据需要修改这些值。\n\n3. 在浏览器中访问 `http://localhost:5050`,你将看到 pgAdmin 的登录界面。\n\n4. 使用在上一步中设置的邮箱和密码进行登录。\n\n5. 在 pgAdmin 中,你可以添加一个新的服务器连接,以连接到运行在 Docker 容器中的 PostgreSQL 数据库。要添加一个新的服务器连接,你需要提供以下信息:\n\n - 主机名/地址:使用 Docker 容器的 IP 地址或者 `localhost`。\n - 端口:使用 Docker 容器中 PostgreSQL 的映射端口,例如 33300。\n - 用户名和密码:使用在启动 PostgreSQL 容器时设置的用户名和密码。\n\n 完成上述信息的填写后,点击保存并连接到 PostgreSQL 服务器。\n\n现在,你已经成功启动了 pgAdmin 并连接到了你的 PostgreSQL 数据库。你可以使用 pgAdmin 来管理和操作你的数据库。",
98
- "createAt": 1698755749889,
99
- "id": "d5XTX9EQ",
100
- "meta": {},
101
- "parentId": "L7mq0ehV",
102
- "role": "assistant",
103
- "updateAt": 1698755786183,
104
- "topicId": "MNWhBEh5",
105
- "extra": { "fromModel": "gpt-3.5-turbo" }
106
- },
107
- "KPPDiRyW": {
108
- "content": "abcabc",
109
- "createAt": 1690650544852,
110
- "id": "KPPDiRyW",
111
- "meta": {},
112
- "parentId": "42k72jMi",
113
- "role": "function",
114
- "updateAt": 1690650572399,
115
- "extra": {
116
- "fromModel": "gpt-3.5-turbo-16k"
117
- },
118
- "function_call": {
119
- "name": "websiteCrawler",
120
- "arguments": "{\n \"url\": \"https://mp.weixin.qq.com/s?__biz=MjM5MTA1MjAxMQ==&mid=2651264337&idx=1&sn=d7d9126578c74c912e1f0d42cb5629da&chksm=bd48ccd58a3f45c3f2cbc7d7b732c820b9e7cd6b547c06acc8170b233710b5fb5ed62f5fd94d&mpshare=1&scene=1&srcid=07294Mpw7C6JCLgtagL1cBDR&sharer_sharetime=1690622712877&sharer_shareid=0358058a42fc25387d28337fc3d22c3c#rd\"\n}"
121
- },
122
- "name": "websiteCrawler"
123
- },
124
- "9cRjevRQ": {
125
- "content": "bbbbb",
126
- "createAt": 1700065743405,
127
- "id": "9cRjevRQ",
128
- "meta": {},
129
- "parentId": "3nDXtEKv",
130
- "role": "function",
131
- "updateAt": 1700065751861,
132
- "extra": {
133
- "fromModel": "gpt-3.5-turbo-16k"
134
- },
135
- "plugin": {
136
- "apiName": "getWebsiteContent",
137
- "arguments": "{\n \"url\": \"https://nodejs.org/api/packages.html#dual-package-hazard\"\n}",
138
- "identifier": "website-crawler",
139
- "type": "default"
140
- },
141
- "name": "website-crawler"
142
- }
143
- },
144
- "config": {
145
- "displayMode": "chat",
146
- "historyCount": 1,
147
- "model": "gpt-3.5-turbo",
148
- "params": {
149
- "frequency_penalty": 0,
150
- "presence_penalty": 0,
151
- "temperature": 0.6,
152
- "top_p": 1,
153
- "max_tokens": 2200
154
- },
155
- "plugins": [],
156
- "systemRole": "你是一名 Postgresql 的数据库专家。用户是一名数据库小白,你需要使用简单直白的方式告诉用户如何使用 ostgresql 和它相应的 orm 工具 primsa",
157
- "enableCompressThreshold": false,
158
- "enableMaxTokens": false,
159
- "inputTemplate": ""
160
- },
161
- "createAt": 1698463356269,
162
- "id": "06cc3e20-e870-4099-a619-c07a849d742d",
163
- "meta": {
164
- "avatar": "🐘",
165
- "backgroundColor": "rgba(0,0,0,0)",
166
- "title": "Postgresql 指南",
167
- "description": "PostgreSQL 数据库和 Prisma ORM 工具的简单使用指南",
168
- "tags": ["数据库", "PostgreSQL", "教程", "ORM", "Prisma"]
169
- },
170
- "type": "agent",
171
- "updateAt": 1698463356269,
172
- "pinned": true,
173
- "topics": {
174
- "CZg3IEdy": {
175
- "createAt": 1698463911747,
176
- "id": "CZg3IEdy",
177
- "title": "Prisma中的cuid函数作用是什么",
178
- "updateAt": 1698463915716
179
- },
180
- "MNWhBEh5": {
181
- "createAt": 1698754463117,
182
- "id": "MNWhBEh5",
183
- "title": "启动 PostgreSQL Docker 镜像方法",
184
- "updateAt": 1698754464867
185
- }
186
- }
187
- }
188
- }
189
- },
190
- "version": 1
191
- }
@@ -1,202 +0,0 @@
1
- {
2
- "exportType": "sessions",
3
- "state": {
4
- "sessions": [
5
- {
6
- "config": {
7
- "displayMode": "chat",
8
- "historyCount": 1,
9
- "model": "gpt-3.5-turbo",
10
- "params": {
11
- "frequency_penalty": 0,
12
- "presence_penalty": 0,
13
- "temperature": 0.6,
14
- "top_p": 1,
15
- "max_tokens": 2200
16
- },
17
- "plugins": [],
18
- "systemRole": "你是一名 Postgresql 的数据库专家。用户是一名数据库小白,你需要使用简单直白的方式告诉用户如何使用 ostgresql 和它相应的 orm 工具 primsa",
19
- "enableCompressThreshold": false,
20
- "enableMaxTokens": false,
21
- "inputTemplate": ""
22
- },
23
- "createdAt": 1698463356269,
24
- "id": "06cc3e20-e870-4099-a619-c07a849d742d",
25
- "meta": {
26
- "avatar": "🐘",
27
- "backgroundColor": "rgba(0,0,0,0)",
28
- "title": "Postgresql 指南",
29
- "description": "PostgreSQL 数据库和 Prisma ORM 工具的简单使用指南",
30
- "tags": ["数据库", "PostgreSQL", "教程", "ORM", "Prisma"]
31
- },
32
- "type": "agent",
33
- "updatedAt": 1698463356269,
34
- "group": "pinned"
35
- }
36
- ],
37
- "topics": [
38
- {
39
- "createdAt": 1698463911747,
40
- "id": "CZg3IEdy",
41
- "title": "Prisma中的cuid函数作用是什么",
42
- "sessionId": "06cc3e20-e870-4099-a619-c07a849d742d",
43
- "updatedAt": 1698463915716
44
- },
45
- {
46
- "createdAt": 1698754463117,
47
- "id": "MNWhBEh5",
48
- "title": "启动 PostgreSQL Docker 镜像方法",
49
- "sessionId": "06cc3e20-e870-4099-a619-c07a849d742d",
50
- "updatedAt": 1698754464867
51
- }
52
- ],
53
- "messages": [
54
- {
55
- "content": "是的,你可以使用 Prisma 来自定义生成 `id` 的逻辑,例如使用 `nanoid` 库来生成唯一标识符。\n\n首先,你需要在项目中安装 `nanoid` 库:\n\n```\nnpm install nanoid\n```\n\n然后,你可以在 Prisma 的模型定义中使用 `@default` 指令,并提供一个自定义的默认值函数来生成 `id`。\n\n```prisma\nmodel Message {\n id String @id @default(dbgenerated(\"nanoid(10)\"))\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n```\n\n在上述模型定义中,我们使用 `dbgenerated` 指令来定义一个自定义的默认值函数。函数 `nanoid(10)` 会生成一个长度为 10 的唯一标识符。\n\n请注意,使用自定义的 `id` 生成逻辑可能会对数据库性能产生一些影响,因为每次创建新记录时都需要执行自定义函数。因此,请确保你的自定义逻辑是高效的,并在实际使用中进行测试和评估性能。",
56
- "createdAt": 1698463981313,
57
- "id": "n2Tsl3Dm",
58
- "meta": {},
59
- "parentId": "JSZaJOGj",
60
- "role": "assistant",
61
- "updatedAt": 1698464004494,
62
- "sessionId": "06cc3e20-e870-4099-a619-c07a849d742d",
63
- "topicId": "CZg3IEdy",
64
- "fromModel": "gpt-3.5-turbo"
65
- },
66
- {
67
- "content": "如何指定 自定义函数的引入位置?",
68
- "createdAt": 1698464173224,
69
- "id": "xPft8Msa",
70
- "meta": {},
71
- "role": "user",
72
- "updatedAt": 1698464173226,
73
- "sessionId": "06cc3e20-e870-4099-a619-c07a849d742d",
74
- "topicId": "CZg3IEdy"
75
- },
76
- {
77
- "content": "在 Prisma 中,你可以通过在 `schema.prisma` 文件的顶部使用 `generator` 块来指定自定义函数的引入位置。\n\n例如,假设你想使用 `nanoid` 库来生成自定义的 `id`,你可以按照以下方式配置:\n\n```prisma\ngenerator client {\n provider = \"prisma-client-js\"\n output = \"./node_modules/@prisma/client\"\n}\n\ngenerator dbgenerated {\n provider = \"prisma-dbgenerator\"\n output = \"./node_modules/@prisma/client\"\n binaryTargets = [\"native\"]\n previewFeatures = [\"nativeTypes\"]\n config = {\n \"generator\": {\n \"dbgenerated\": {\n \"output\": \"./src/db/generated\",\n \"provider\": \"./src/db/generated/provider.js\"\n }\n }\n }\n}\n```\n\n在上述配置中,我们定义了两个生成器。`client` 生成器用于生成 Prisma 客户端代码,而 `dbgenerated` 生成器用于生成数据库相关的代码。\n\n注意到 `dbgenerated` 生成器的 `config` 部分中有一个 `provider` 字段,它指定了自定义函数的引入位置。在这个示例中,我们将自定义函数放在 `./src/db/generated/provider.js` 文件中。\n\n你可以根据你的项目结构和需要来调整路径和文件名,确保指定的 `provider` 路径正确引入了自定义函数。",
78
- "createdAt": 1698464173228,
79
- "id": "jZc2KKRs",
80
- "meta": {},
81
- "parentId": "xPft8Msa",
82
- "role": "assistant",
83
- "updatedAt": 1698464181896,
84
- "sessionId": "06cc3e20-e870-4099-a619-c07a849d742d",
85
- "topicId": "CZg3IEdy",
86
- "fromModel": "gpt-3.5-turbo"
87
- },
88
- {
89
- "content": "如何启动一个 postgres Docker 镜像?",
90
- "createdAt": 1698754460196,
91
- "id": "LjG9XSuq",
92
- "meta": {},
93
- "role": "user",
94
- "updatedAt": 1698754463118,
95
- "sessionId": "06cc3e20-e870-4099-a619-c07a849d742d",
96
- "topicId": "MNWhBEh5"
97
- },
98
- {
99
- "content": "要启动一个 PostgreSQL Docker 镜像,你可以按照以下步骤操作:\n\n1. 首先,确保你已经安装了 Docker,可以在终端中运行 `docker --version` 来检查。\n\n2. 在终端中运行以下命令以下载并启动一个 PostgreSQL 镜像:\n\n ```shell\n docker run --name my-postgres -e POSTGRES_PASSWORD=mysecretpassword -p 5432:5432 -d postgres\n ```\n\n 这将从 Docker Hub 下载 PostgreSQL 镜像",
100
- "createdAt": 1698754479751,
101
- "id": "CL7E1Mc5",
102
- "meta": {},
103
- "parentId": "LjG9XSuq",
104
- "role": "assistant",
105
- "updatedAt": 1698754507690,
106
- "sessionId": "06cc3e20-e870-4099-a619-c07a849d742d",
107
- "topicId": "MNWhBEh5",
108
- "fromModel": "gpt-3.5-turbo"
109
- },
110
- {
111
- "content": "如何指定本地存储的目录到 /www/database/postgres",
112
- "createdAt": 1698754591763,
113
- "id": "UIvHZr7m",
114
- "meta": {},
115
- "role": "user",
116
- "updatedAt": 1698754591764,
117
- "sessionId": "06cc3e20-e870-4099-a619-c07a849d742d",
118
- "topicId": "MNWhBEh5"
119
- },
120
- {
121
- "content": "要将本地存储的目录映射到容器内的 `/var/lib/postgresql/data` 目录,你可以使用 Docker 的 `-v` 参数。\n\n以下是示例命令:\n\n```shell\ndocker run --name my-postgres -e POSTGRES_PASSWORD=mysecretpassword -p 5432:5432 -v /www/database/postgres:/var/lib/postgresql/data -d postgres\n```\n\n在这个命令中,我们使用了 `-v` 参数来指定本地目录 `/www/database/postgres` 映射到容器内的 `/var/lib/postgresql/data` 目录。这样,所有的 PostgreSQL 数据将会保存在本地指定的目录中。",
122
- "createdAt": 1698754591765,
123
- "id": "XLJOK44r",
124
- "meta": {},
125
- "parentId": "UIvHZr7m",
126
- "role": "assistant",
127
- "updatedAt": 1698754609275,
128
- "sessionId": "06cc3e20-e870-4099-a619-c07a849d742d",
129
- "topicId": "MNWhBEh5",
130
- "fromModel": "gpt-3.5-turbo"
131
- },
132
- {
133
- "content": "docker run --name postgres -e POSTGRES_PASSWORD=DSLapHYdzNrai5j6 -p 33300:5432 -v /www/database/postgres:/var/lib/postgresql/data -d postgres",
134
- "createdAt": 1698754700529,
135
- "id": "W3J6jQjm",
136
- "meta": {},
137
- "role": "user",
138
- "updatedAt": 1698754700530,
139
- "sessionId": "06cc3e20-e870-4099-a619-c07a849d742d",
140
- "topicId": "MNWhBEh5"
141
- },
142
- {
143
- "content": "如何启动 pgadmin",
144
- "createdAt": 1698755749886,
145
- "id": "L7mq0ehV",
146
- "meta": {},
147
- "role": "user",
148
- "updatedAt": 1698755749888,
149
- "sessionId": "06cc3e20-e870-4099-a619-c07a849d742d",
150
- "topicId": "MNWhBEh5"
151
- },
152
- {
153
- "content": "要启动 pgAdmin,你可以按照以下步骤操作:\n\n1. 首先,确保你已经安装了 Docker,并且已经成功启动了 PostgreSQL Docker 容器。\n\n2. 在终端中运行以下命令以启动 pgAdmin Docker 容器:\n\n ```shell\n docker run --name my-pgadmin -p 5050:80 -e PGADMIN_DEFAULT_EMAIL=myemail@example.com -e PGADMIN_DEFAULT_PASSWORD=mypassword -d dpage/pgadmin4\n ```\n\n 在这个命令中,我们使用了 `-p` 参数来将容器的端口 80 映射到本地的端口 5050。你可以根据需要修改这个端口映射。\n\n 我们还使用了 `-e` 参数来设置 pgAdmin 的默认登录邮箱和密码。你可以根据需要修改这些值。\n\n3. 在浏览器中访问 `http://localhost:5050`,你将看到 pgAdmin 的登录界面。\n\n4. 使用在上一步中设置的邮箱和密码进行登录。\n\n5. 在 pgAdmin 中,你可以添加一个新的服务器连接,以连接到运行在 Docker 容器中的 PostgreSQL 数据库。要添加一个新的服务器连接,你需要提供以下信息:\n\n - 主机名/地址:使用 Docker 容器的 IP 地址或者 `localhost`。\n - 端口:使用 Docker 容器中 PostgreSQL 的映射端口,例如 33300。\n - 用户名和密码:使用在启动 PostgreSQL 容器时设置的用户名和密码。\n\n 完成上述信息的填写后,点击保存并连接到 PostgreSQL 服务器。\n\n现在,你已经成功启动了 pgAdmin 并连接到了你的 PostgreSQL 数据库。你可以使用 pgAdmin 来管理和操作你的数据库。",
154
- "createdAt": 1698755749889,
155
- "id": "d5XTX9EQ",
156
- "meta": {},
157
- "parentId": "L7mq0ehV",
158
- "role": "assistant",
159
- "updatedAt": 1698755786183,
160
- "sessionId": "06cc3e20-e870-4099-a619-c07a849d742d",
161
- "topicId": "MNWhBEh5",
162
- "fromModel": "gpt-3.5-turbo"
163
- },
164
- {
165
- "content": "abcabc",
166
- "createdAt": 1690650544852,
167
- "id": "KPPDiRyW",
168
- "meta": {},
169
- "parentId": "42k72jMi",
170
- "role": "function",
171
- "updatedAt": 1690650572399,
172
- "sessionId": "06cc3e20-e870-4099-a619-c07a849d742d",
173
-
174
- "fromModel": "gpt-3.5-turbo-16k",
175
- "plugin": {
176
- "apiName": "websiteCrawler",
177
- "arguments": "{\n \"url\": \"https://mp.weixin.qq.com/s?__biz=MjM5MTA1MjAxMQ==&mid=2651264337&idx=1&sn=d7d9126578c74c912e1f0d42cb5629da&chksm=bd48ccd58a3f45c3f2cbc7d7b732c820b9e7cd6b547c06acc8170b233710b5fb5ed62f5fd94d&mpshare=1&scene=1&srcid=07294Mpw7C6JCLgtagL1cBDR&sharer_sharetime=1690622712877&sharer_shareid=0358058a42fc25387d28337fc3d22c3c#rd\"\n}",
178
- "identifier": "websiteCrawler",
179
- "type": "default"
180
- }
181
- },
182
- {
183
- "content": "bbbbb",
184
- "createdAt": 1700065743405,
185
- "id": "9cRjevRQ",
186
- "meta": {},
187
- "parentId": "3nDXtEKv",
188
- "role": "function",
189
- "sessionId": "06cc3e20-e870-4099-a619-c07a849d742d",
190
- "updatedAt": 1700065751861,
191
- "fromModel": "gpt-3.5-turbo-16k",
192
- "plugin": {
193
- "apiName": "getWebsiteContent",
194
- "arguments": "{\n \"url\": \"https://nodejs.org/api/packages.html#dual-package-hazard\"\n}",
195
- "identifier": "website-crawler",
196
- "type": "default"
197
- }
198
- }
199
- ]
200
- },
201
- "version": 2
202
- }
@@ -1,82 +0,0 @@
1
- import { INBOX_SESSION_ID } from '@/const/session';
2
- import type { Migration, MigrationData } from '@/migrations/VersionController';
3
-
4
- import { V1Chat, V1ConfigState, V1Session, V1Topic } from './types/v1';
5
- import { V2ConfigState, V2Message, V2Session, V2Topic } from './types/v2';
6
-
7
- export class MigrationV1ToV2 implements Migration {
8
- // from this version to start migration
9
- version = 1;
10
-
11
- migrateSession = (
12
- session: V1Session,
13
- finalMessages: V2Message[],
14
- finalTopics: V2Topic[],
15
- ): V2Session => {
16
- const { chats, topics, createAt, updateAt, pinned, ...i } = session;
17
-
18
- if (chats) {
19
- for (const chat of Object.values(chats)) {
20
- finalMessages.push(this.migrationMessage(chat, i.id));
21
- }
22
- }
23
-
24
- if (topics) {
25
- for (const chat of Object.values(topics)) {
26
- finalTopics.push(this.migrationTopic(i.id, chat));
27
- }
28
- }
29
-
30
- return { ...i, createdAt: createAt, group: pinned ? 'pinned' : 'default', updatedAt: updateAt };
31
- };
32
-
33
- migrate(data: MigrationData<V1ConfigState>): MigrationData<V2ConfigState> {
34
- const { sessions: v1Session = {}, inbox } = data.state;
35
- const v2Messages: V2Message[] = [];
36
- const v2Topics: V2Topic[] = [];
37
-
38
- const sessions: V2Session[] = Object.values(v1Session).map((s) =>
39
- this.migrateSession(s, v2Messages, v2Topics),
40
- );
41
-
42
- if (inbox) {
43
- this.migrateSession({ ...inbox, id: INBOX_SESSION_ID }, v2Messages, v2Topics);
44
- }
45
-
46
- return {
47
- ...data,
48
- state: {
49
- ...data.state,
50
- messages: v2Messages,
51
- sessions,
52
- topics: v2Topics,
53
- },
54
- };
55
- }
56
-
57
- migrationMessage = (
58
- { createAt, extra, updateAt, name, function_call, ...chat }: V1Chat,
59
- sessionId: string,
60
- ): V2Message => ({
61
- ...chat,
62
- createdAt: createAt,
63
- plugin: function_call
64
- ? {
65
- apiName: function_call.name,
66
- arguments: function_call.arguments,
67
- identifier: name!,
68
- type: 'default',
69
- }
70
- : chat.plugin,
71
- sessionId,
72
- updatedAt: updateAt,
73
- ...extra,
74
- });
75
-
76
- migrationTopic = (sessionId: string, { createAt, updateAt, ...topic }: V1Topic): V2Topic => ({
77
- ...topic,
78
- createdAt: createAt,
79
- sessionId,
80
- updatedAt: updateAt,
81
- });
82
- }