@lobehub/chat 1.128.9 → 1.129.0

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 (43) hide show
  1. package/.env.example +5 -0
  2. package/.github/workflows/sync-database-schema.yml +0 -3
  3. package/CHANGELOG.md +50 -0
  4. package/Dockerfile +3 -1
  5. package/Dockerfile.database +3 -1
  6. package/Dockerfile.pglite +3 -1
  7. package/changelog/v1.json +18 -0
  8. package/docs/development/database-schema.dbml +2 -2
  9. package/docs/self-hosting/environment-variables/model-provider.mdx +24 -0
  10. package/docs/self-hosting/environment-variables/model-provider.zh-CN.mdx +27 -1
  11. package/docs/usage/providers/vercel-ai-gateway.mdx +62 -0
  12. package/docs/usage/providers/vercel-ai-gateway.zh-CN.mdx +61 -0
  13. package/next.config.ts +1 -46
  14. package/package.json +1 -2
  15. package/packages/agent-runtime/examples/tools-calling.ts +1 -1
  16. package/packages/const/src/layoutTokens.ts +1 -1
  17. package/packages/context-engine/src/base/BaseProcessor.ts +2 -1
  18. package/packages/database/migrations/0031_add_agent_index.sql +6 -2
  19. package/packages/database/migrations/0032_improve_agents_field.sql +6 -0
  20. package/packages/database/migrations/meta/0032_snapshot.json +6447 -0
  21. package/packages/database/migrations/meta/_journal.json +7 -0
  22. package/packages/database/src/core/migrations.json +14 -3
  23. package/packages/database/src/schemas/agent.ts +2 -2
  24. package/packages/database/src/server/models/__tests__/adapter.test.ts +1 -1
  25. package/packages/model-bank/package.json +2 -1
  26. package/packages/model-bank/src/aiModels/index.ts +3 -0
  27. package/packages/model-bank/src/aiModels/vercelaigateway.ts +1803 -0
  28. package/packages/model-runtime/src/const/modelProvider.ts +1 -0
  29. package/packages/model-runtime/src/providers/vercelaigateway/index.ts +62 -0
  30. package/packages/model-runtime/src/runtimeMap.ts +2 -0
  31. package/packages/types/src/user/settings/keyVaults.ts +1 -0
  32. package/src/app/(backend)/webapi/chat/azureai/route.test.ts +25 -0
  33. package/src/app/(backend)/webapi/chat/azureai/route.ts +6 -0
  34. package/src/app/[variants]/(main)/chat/(workspace)/_layout/Desktop/ChatHeader/index.tsx +8 -1
  35. package/src/components/Error/index.tsx +3 -7
  36. package/src/config/modelProviders/index.ts +4 -0
  37. package/src/config/modelProviders/vercelaigateway.ts +21 -0
  38. package/src/envs/llm.ts +6 -0
  39. package/sentry.client.config.ts +0 -30
  40. package/sentry.edge.config.ts +0 -17
  41. package/sentry.server.config.ts +0 -19
  42. package/src/app/[variants]/global-error.tsx +0 -20
  43. package/src/components/Error/sentryCaptureException.ts +0 -9
@@ -224,6 +224,13 @@
224
224
  "when": 1757902833213,
225
225
  "tag": "0031_add_agent_index",
226
226
  "breakpoints": true
227
+ },
228
+ {
229
+ "idx": 32,
230
+ "version": "7",
231
+ "when": 1757993755131,
232
+ "tag": "0032_improve_agents_field",
233
+ "breakpoints": true
227
234
  }
228
235
  ],
229
236
  "version": "6"
@@ -581,11 +581,22 @@
581
581
  },
582
582
  {
583
583
  "sql": [
584
- "CREATE INDEX \"agents_title_idx\" ON \"agents\" USING btree (\"title\");",
585
- "\nCREATE INDEX \"agents_description_idx\" ON \"agents\" USING btree (\"description\");"
584
+ "-- 将超过 2000 字符的 description 截断为 2000 字符\nUPDATE agents\nSET description = LEFT(description, 2000)\nWHERE LENGTH(description) > 2000;",
585
+ "\nCREATE INDEX IF NOT EXISTS \"agents_title_idx\" ON \"agents\" USING btree (\"title\");",
586
+ "\nCREATE INDEX IF NOT EXISTS \"agents_description_idx\" ON \"agents\" USING btree (\"description\");\n"
586
587
  ],
587
588
  "bps": true,
588
589
  "folderMillis": 1757902833213,
589
- "hash": "7f76a42dcaae9ca7de30a6eec432a3b52e64fa44b31828e3318d8b815f396624"
590
+ "hash": "39b690dc849ae2bb09357a9ab9d1f2e8f3e37f609f636ab192670a2651d4f605"
591
+ },
592
+ {
593
+ "sql": [
594
+ "-- 将超过 255 字符的 title 截断为 255 字符\nUPDATE agents\nSET title = LEFT(title, 255)\nWHERE LENGTH(title) > 255;",
595
+ "\nALTER TABLE \"agents\" ALTER COLUMN \"title\" SET DATA TYPE varchar(255);",
596
+ "\nALTER TABLE \"agents\" ALTER COLUMN \"description\" SET DATA TYPE varchar(1000);\n"
597
+ ],
598
+ "bps": true,
599
+ "folderMillis": 1757993755131,
600
+ "hash": "0e23099a1ae4d5a40fd9ea5667c3d1939548d98488906742b0f029cde272ef27"
590
601
  }
591
602
  ]
@@ -32,8 +32,8 @@ export const agents = pgTable(
32
32
  slug: varchar('slug', { length: 100 })
33
33
  .$defaultFn(() => randomSlug(4))
34
34
  .unique(),
35
- title: text('title'),
36
- description: text('description'),
35
+ title: varchar('title', { length: 255 }),
36
+ description: varchar('description', { length: 1000 }),
37
37
  tags: jsonb('tags').$type<string[]>().default([]),
38
38
  avatar: text('avatar'),
39
39
  backgroundColor: text('background_color'),
@@ -26,7 +26,7 @@ const testUserCode = 'test-user-code';
26
26
  const testExpires = new Date(Date.now() + 3600 * 1000); // 1小时后过期
27
27
 
28
28
  beforeEach(async () => {
29
- await serverDB.insert(users).values({ id: testUserId });
29
+ await serverDB.insert(users).values({ id: testUserId }).onConflictDoNothing();
30
30
  });
31
31
 
32
32
  // 每次测试后清理数据
@@ -59,6 +59,7 @@
59
59
  "./togetherai": "./src/aiModels/togetherai.ts",
60
60
  "./upstage": "./src/aiModels/upstage.ts",
61
61
  "./v0": "./src/aiModels/v0.ts",
62
+ "./vercelaigateway": "./src/aiModels/vercelaigateway.ts",
62
63
  "./vertexai": "./src/aiModels/vertexai.ts",
63
64
  "./vllm": "./src/aiModels/vllm.ts",
64
65
  "./volcengine": "./src/aiModels/volcengine.ts",
@@ -75,4 +76,4 @@
75
76
  "dependencies": {
76
77
  "zod": "^3.25.76"
77
78
  }
78
- }
79
+ }
@@ -53,6 +53,7 @@ import { default as tencentcloud } from './tencentcloud';
53
53
  import { default as togetherai } from './togetherai';
54
54
  import { default as upstage } from './upstage';
55
55
  import { default as v0 } from './v0';
56
+ import { default as vercelaigateway } from './vercelaigateway';
56
57
  import { default as vertexai } from './vertexai';
57
58
  import { default as vllm } from './vllm';
58
59
  import { default as volcengine } from './volcengine';
@@ -136,6 +137,7 @@ export const LOBE_DEFAULT_MODEL_LIST = buildDefaultModelList({
136
137
  togetherai,
137
138
  upstage,
138
139
  v0,
140
+ vercelaigateway,
139
141
  vertexai,
140
142
  vllm,
141
143
  volcengine,
@@ -201,6 +203,7 @@ export { default as tencentcloud } from './tencentcloud';
201
203
  export { default as togetherai } from './togetherai';
202
204
  export { default as upstage } from './upstage';
203
205
  export { default as v0 } from './v0';
206
+ export { default as vercelaigateway } from './vercelaigateway';
204
207
  export { default as vertexai } from './vertexai';
205
208
  export { default as vllm } from './vllm';
206
209
  export { default as volcengine } from './volcengine';