@lobehub/lobehub 2.0.0-next.60 → 2.0.0-next.62
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.
- package/CHANGELOG.md +50 -0
- package/changelog/v1.json +14 -0
- package/locales/ar/chat.json +2 -0
- package/locales/ar/file.json +2 -0
- package/locales/ar/models.json +17 -2
- package/locales/ar/tool.json +8 -0
- package/locales/bg-BG/chat.json +2 -0
- package/locales/bg-BG/file.json +2 -0
- package/locales/bg-BG/models.json +17 -2
- package/locales/bg-BG/tool.json +8 -0
- package/locales/de-DE/chat.json +2 -0
- package/locales/de-DE/file.json +2 -0
- package/locales/de-DE/models.json +17 -2
- package/locales/de-DE/tool.json +8 -0
- package/locales/en-US/chat.json +2 -0
- package/locales/en-US/file.json +2 -0
- package/locales/en-US/models.json +17 -2
- package/locales/en-US/tool.json +8 -0
- package/locales/es-ES/chat.json +2 -0
- package/locales/es-ES/file.json +2 -0
- package/locales/es-ES/models.json +17 -2
- package/locales/es-ES/tool.json +8 -0
- package/locales/fa-IR/chat.json +2 -0
- package/locales/fa-IR/file.json +2 -0
- package/locales/fa-IR/models.json +17 -2
- package/locales/fa-IR/tool.json +8 -0
- package/locales/fr-FR/chat.json +2 -0
- package/locales/fr-FR/file.json +2 -0
- package/locales/fr-FR/models.json +17 -2
- package/locales/fr-FR/tool.json +8 -0
- package/locales/it-IT/chat.json +2 -0
- package/locales/it-IT/file.json +2 -0
- package/locales/it-IT/models.json +17 -2
- package/locales/it-IT/tool.json +8 -0
- package/locales/ja-JP/chat.json +2 -0
- package/locales/ja-JP/file.json +2 -0
- package/locales/ja-JP/models.json +17 -2
- package/locales/ja-JP/tool.json +8 -0
- package/locales/ko-KR/chat.json +2 -0
- package/locales/ko-KR/file.json +2 -0
- package/locales/ko-KR/models.json +17 -2
- package/locales/ko-KR/tool.json +8 -0
- package/locales/nl-NL/chat.json +2 -0
- package/locales/nl-NL/file.json +2 -0
- package/locales/nl-NL/models.json +17 -2
- package/locales/nl-NL/tool.json +8 -0
- package/locales/pl-PL/chat.json +2 -0
- package/locales/pl-PL/file.json +2 -0
- package/locales/pl-PL/models.json +17 -2
- package/locales/pl-PL/tool.json +8 -0
- package/locales/pt-BR/chat.json +2 -0
- package/locales/pt-BR/file.json +2 -0
- package/locales/pt-BR/models.json +17 -2
- package/locales/pt-BR/tool.json +8 -0
- package/locales/ru-RU/chat.json +2 -0
- package/locales/ru-RU/file.json +2 -0
- package/locales/ru-RU/models.json +17 -2
- package/locales/ru-RU/tool.json +8 -0
- package/locales/tr-TR/chat.json +2 -0
- package/locales/tr-TR/file.json +2 -0
- package/locales/tr-TR/models.json +17 -2
- package/locales/tr-TR/tool.json +8 -0
- package/locales/vi-VN/chat.json +2 -0
- package/locales/vi-VN/file.json +2 -0
- package/locales/vi-VN/models.json +17 -2
- package/locales/vi-VN/tool.json +8 -0
- package/locales/zh-CN/chat.json +2 -0
- package/locales/zh-CN/file.json +2 -0
- package/locales/zh-CN/models.json +17 -2
- package/locales/zh-CN/tool.json +8 -0
- package/locales/zh-TW/chat.json +2 -0
- package/locales/zh-TW/file.json +2 -0
- package/locales/zh-TW/models.json +17 -2
- package/locales/zh-TW/tool.json +8 -0
- package/package.json +1 -1
- package/packages/database/src/models/apiKey.ts +2 -2
- package/packages/database/src/models/chunk.ts +1 -1
- package/packages/database/src/models/drizzleMigration.ts +1 -1
- package/packages/database/src/models/oauthHandoff.ts +19 -19
- package/packages/database/src/models/session.ts +10 -10
- package/packages/database/src/models/topic.ts +10 -10
- package/src/app/(backend)/middleware/auth/index.ts +7 -2
- package/src/app/(backend)/trpc/async/[trpc]/route.ts +9 -3
- package/src/app/(backend)/trpc/desktop/[trpc]/route.ts +9 -3
- package/src/app/(backend)/trpc/lambda/[trpc]/route.ts +9 -3
- package/src/app/(backend)/trpc/mobile/[trpc]/route.ts +9 -3
- package/src/app/(backend)/trpc/tools/[trpc]/route.ts +9 -3
- package/src/libs/trpc/utils/request-adapter.ts +20 -0
|
@@ -1853,6 +1853,18 @@
|
|
|
1853
1853
|
"gpt-5-pro": {
|
|
1854
1854
|
"description": "GPT-5 Pro использует больше вычислительных ресурсов для более глубокого мышления и стабильно предоставляет более качественные ответы."
|
|
1855
1855
|
},
|
|
1856
|
+
"gpt-5.1": {
|
|
1857
|
+
"description": "GPT-5.1 — флагманская модель, оптимизированная для задач программирования и агентов, поддерживает настраиваемую степень рассуждения и более длинный контекст."
|
|
1858
|
+
},
|
|
1859
|
+
"gpt-5.1-chat-latest": {
|
|
1860
|
+
"description": "GPT-5.1 Chat: вариант GPT-5.1 для ChatGPT, оптимизированный для общения."
|
|
1861
|
+
},
|
|
1862
|
+
"gpt-5.1-codex": {
|
|
1863
|
+
"description": "GPT-5.1 Codex: версия GPT-5.1, оптимизированная для агентных задач программирования, используется в Responses API для более сложных рабочих процессов с кодом и агентами."
|
|
1864
|
+
},
|
|
1865
|
+
"gpt-5.1-codex-mini": {
|
|
1866
|
+
"description": "GPT-5.1 Codex mini: более компактный и экономичный вариант Codex, оптимизированный для агентных задач программирования."
|
|
1867
|
+
},
|
|
1856
1868
|
"gpt-audio": {
|
|
1857
1869
|
"description": "GPT Audio — универсальная чат-модель с поддержкой аудиовхода и аудиовыхода, доступная через API Chat Completions с аудио I/O."
|
|
1858
1870
|
},
|
|
@@ -2028,13 +2040,13 @@
|
|
|
2028
2040
|
"description": "Серия моделей Imagen четвёртого поколения для преобразования текста в изображение"
|
|
2029
2041
|
},
|
|
2030
2042
|
"imagen-4.0-generate-preview-06-06": {
|
|
2031
|
-
"description": "
|
|
2043
|
+
"description": "Четвёртое поколение моделей Imagen для генерации изображений по тексту."
|
|
2032
2044
|
},
|
|
2033
2045
|
"imagen-4.0-ultra-generate-001": {
|
|
2034
2046
|
"description": "Серия моделей Imagen четвёртого поколения для преобразования текста в изображение, версия Ultra."
|
|
2035
2047
|
},
|
|
2036
2048
|
"imagen-4.0-ultra-generate-preview-06-06": {
|
|
2037
|
-
"description": "
|
|
2049
|
+
"description": "Ultra-версия четвёртого поколения моделей Imagen для генерации изображений по тексту."
|
|
2038
2050
|
},
|
|
2039
2051
|
"inception/mercury-coder-small": {
|
|
2040
2052
|
"description": "Mercury Coder Small — идеальный выбор для задач генерации, отладки и рефакторинга кода с минимальной задержкой."
|
|
@@ -3092,6 +3104,9 @@
|
|
|
3092
3104
|
"qwen3-max": {
|
|
3093
3105
|
"description": "Серия моделей Tongyi Qianwen 3 Max значительно улучшена по сравнению с серией 2.5 в плане универсальных возможностей: значительно усилены способности понимания текста на китайском и английском языках, следования сложным инструкциям, выполнения субъективных открытых задач, многоязычность и вызов инструментов; уменьшено количество ошибок, связанных с галлюцинациями знаний. Последняя версия модели qwen3-max получила специальное обновление в области программирования агентов и вызова инструментов по сравнению с версией qwen3-max-preview. Выпущенная официальная версия достигла уровня SOTA в своей области и адаптирована под более сложные сценарии использования агентов."
|
|
3094
3106
|
},
|
|
3107
|
+
"qwen3-max-preview": {
|
|
3108
|
+
"description": "Лучшая модель серии Tongyi Qianwen, подходит для сложных и многошаговых задач. В предварительной версии уже поддерживается рассуждение."
|
|
3109
|
+
},
|
|
3095
3110
|
"qwen3-next-80b-a3b-instruct": {
|
|
3096
3111
|
"description": "Новая генерация открытой модели без режима мышления на базе Qwen3, которая по сравнению с предыдущей версией (通义千问3-235B-A22B-Instruct-2507) обладает улучшенными способностями понимания китайского текста, усиленными логическими рассуждениями и лучшими результатами в задачах генерации текста."
|
|
3097
3112
|
},
|
package/locales/ru-RU/tool.json
CHANGED
|
@@ -17,6 +17,14 @@
|
|
|
17
17
|
"localFiles": {
|
|
18
18
|
"file": "Файл",
|
|
19
19
|
"folder": "Папка",
|
|
20
|
+
"moveFiles": {
|
|
21
|
+
"itemsMoved": "Перемещено {{count}} элементов:",
|
|
22
|
+
"itemsMoved_one": "Перемещён {{count}} элемент:",
|
|
23
|
+
"itemsMoved_other": "Перемещено {{count}} элементов:",
|
|
24
|
+
"itemsToMove": "{{count}} элементов для перемещения:",
|
|
25
|
+
"itemsToMove_one": "{{count}} элемент для перемещения:",
|
|
26
|
+
"itemsToMove_other": "{{count}} элементов для перемещения:"
|
|
27
|
+
},
|
|
20
28
|
"open": "Открыть",
|
|
21
29
|
"openFile": "Открыть файл",
|
|
22
30
|
"openFolder": "Открыть папку",
|
package/locales/tr-TR/chat.json
CHANGED
|
@@ -383,6 +383,8 @@
|
|
|
383
383
|
"manualDesc": "Her çağrı için manuel onay gerekir"
|
|
384
384
|
},
|
|
385
385
|
"reject": "Reddet",
|
|
386
|
+
"rejectAndContinue": "Reddet ve yeniden dene",
|
|
387
|
+
"rejectOnly": "Reddet",
|
|
386
388
|
"rejectReasonPlaceholder": "Reddetme nedenini girmek, Agent'ın anlamasına ve sonraki eylemleri iyileştirmesine yardımcı olur",
|
|
387
389
|
"rejectTitle": "Bu Araç Çağrısını Reddet",
|
|
388
390
|
"rejectedWithReason": "Bu araç çağrısı şu nedenle reddedildi: {{reason}}",
|
package/locales/tr-TR/file.json
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
+
"addFolder": "Klasör Oluştur",
|
|
2
3
|
"addKnowledge": "Bilgi Ekle",
|
|
3
4
|
"addPage": "Belge Oluştur",
|
|
4
5
|
"desc": "Çalışma, öğrenme ve yaşam bilginizi yönetin.",
|
|
@@ -65,6 +66,7 @@
|
|
|
65
66
|
"header": {
|
|
66
67
|
"actions": {
|
|
67
68
|
"newFolder": "Yeni Klasör",
|
|
69
|
+
"newPage": "Yeni Belge",
|
|
68
70
|
"uploadFile": "Dosya Yükle",
|
|
69
71
|
"uploadFolder": "Klasör Yükle"
|
|
70
72
|
},
|
|
@@ -1853,6 +1853,18 @@
|
|
|
1853
1853
|
"gpt-5-pro": {
|
|
1854
1854
|
"description": "GPT-5 pro, daha derin düşünme için daha fazla hesaplama gücü kullanır ve sürekli olarak daha iyi yanıtlar sunar."
|
|
1855
1855
|
},
|
|
1856
|
+
"gpt-5.1": {
|
|
1857
|
+
"description": "GPT-5.1 — Kodlama ve ajan görevleri için optimize edilmiş amiral gemisi modelidir; yapılandırılabilir akıl yürütme gücü ve daha uzun bağlam desteği sunar."
|
|
1858
|
+
},
|
|
1859
|
+
"gpt-5.1-chat-latest": {
|
|
1860
|
+
"description": "GPT-5.1 Chat: Sohbet senaryoları için uygun, ChatGPT’ye özel GPT-5.1 varyantı."
|
|
1861
|
+
},
|
|
1862
|
+
"gpt-5.1-codex": {
|
|
1863
|
+
"description": "GPT-5.1 Codex: Ajan tabanlı kodlama görevleri için optimize edilmiş GPT-5.1 sürümüdür; daha karmaşık kod/ajan iş akışları için Responses API ile kullanılabilir."
|
|
1864
|
+
},
|
|
1865
|
+
"gpt-5.1-codex-mini": {
|
|
1866
|
+
"description": "GPT-5.1 Codex mini: Daha küçük boyutlu ve daha düşük maliyetli Codex varyantı; ajan tabanlı kodlama görevleri için optimize edilmiştir."
|
|
1867
|
+
},
|
|
1856
1868
|
"gpt-audio": {
|
|
1857
1869
|
"description": "GPT Audio, ses giriş ve çıkışına yönelik genel sohbet modelidir ve Chat Completions API’de ses I/O kullanımını destekler."
|
|
1858
1870
|
},
|
|
@@ -2028,13 +2040,13 @@
|
|
|
2028
2040
|
"description": "Imagen 4. nesil metinden görüntüye model serisi"
|
|
2029
2041
|
},
|
|
2030
2042
|
"imagen-4.0-generate-preview-06-06": {
|
|
2031
|
-
"description": "Imagen
|
|
2043
|
+
"description": "Imagen dördüncü nesil metinden görsele model serisi"
|
|
2032
2044
|
},
|
|
2033
2045
|
"imagen-4.0-ultra-generate-001": {
|
|
2034
2046
|
"description": "Imagen 4. nesil metinden-görüntüye model serisi, Ultra sürümü"
|
|
2035
2047
|
},
|
|
2036
2048
|
"imagen-4.0-ultra-generate-preview-06-06": {
|
|
2037
|
-
"description": "Imagen
|
|
2049
|
+
"description": "Imagen dördüncü nesil metinden görsele model serisinin Ultra versiyonu"
|
|
2038
2050
|
},
|
|
2039
2051
|
"inception/mercury-coder-small": {
|
|
2040
2052
|
"description": "Mercury Coder Small, kod üretimi, hata ayıklama ve yeniden yapılandırma görevleri için ideal olup, minimum gecikme sunar."
|
|
@@ -3092,6 +3104,9 @@
|
|
|
3092
3104
|
"qwen3-max": {
|
|
3093
3105
|
"description": "Tongyi Qianwen 3 serisi Max modeli, 2.5 serisine kıyasla genel yeteneklerde büyük gelişme göstermiştir; hem Çince hem İngilizce metin anlama, karmaşık talimat takibi, öznel açık görevler, çoklu dil yetenekleri ve araç çağrısı yetenekleri belirgin şekilde artmıştır; model bilgi halüsinasyonları azalmıştır. En yeni qwen3-max modeli, qwen3-max-preview versiyonuna göre akıllı ajan programlama ve araç çağrısı alanlarında özel yükseltmeler içermektedir. Bu resmi sürüm modeli, alanında SOTA seviyesine ulaşmış olup, daha karmaşık ajan ihtiyaçlarına uyarlanmıştır."
|
|
3094
3106
|
},
|
|
3107
|
+
"qwen3-max-preview": {
|
|
3108
|
+
"description": "Tongyi Qianwen serisinin en yetenekli modeli; karmaşık ve çok adımlı görevler için uygundur. Önizleme sürümü düşünme yeteneğini desteklemektedir."
|
|
3109
|
+
},
|
|
3095
3110
|
"qwen3-next-80b-a3b-instruct": {
|
|
3096
3111
|
"description": "Qwen3 tabanlı yeni nesil düşünmeden çalışan açık kaynak modeli, önceki sürüme (Tongyi Qianwen 3-235B-A22B-Instruct-2507) kıyasla Çince metin anlama yeteneği daha iyi, mantıksal çıkarım yeteneği geliştirilmiş ve metin üretimi görevlerinde daha başarılıdır."
|
|
3097
3112
|
},
|
package/locales/tr-TR/tool.json
CHANGED
|
@@ -17,6 +17,14 @@
|
|
|
17
17
|
"localFiles": {
|
|
18
18
|
"file": "Dosya",
|
|
19
19
|
"folder": "Klasör",
|
|
20
|
+
"moveFiles": {
|
|
21
|
+
"itemsMoved": "{{count}} öğe taşındı:",
|
|
22
|
+
"itemsMoved_one": "{{count}} öğe taşındı:",
|
|
23
|
+
"itemsMoved_other": "{{count}} öğe taşındı:",
|
|
24
|
+
"itemsToMove": "{{count}} öğe taşınacak:",
|
|
25
|
+
"itemsToMove_one": "{{count}} öğe taşınacak:",
|
|
26
|
+
"itemsToMove_other": "{{count}} öğe taşınacak:"
|
|
27
|
+
},
|
|
20
28
|
"open": "Aç",
|
|
21
29
|
"openFile": "Dosyayı Aç",
|
|
22
30
|
"openFolder": "Klasörü Aç",
|
package/locales/vi-VN/chat.json
CHANGED
|
@@ -383,6 +383,8 @@
|
|
|
383
383
|
"manualDesc": "Mỗi lần gọi đều cần phê duyệt thủ công"
|
|
384
384
|
},
|
|
385
385
|
"reject": "Từ chối",
|
|
386
|
+
"rejectAndContinue": "Từ chối và thử lại",
|
|
387
|
+
"rejectOnly": "Từ chối",
|
|
386
388
|
"rejectReasonPlaceholder": "Nhập lý do từ chối sẽ giúp Agent hiểu và cải thiện hành động sau này",
|
|
387
389
|
"rejectTitle": "Từ chối lần gọi công cụ này",
|
|
388
390
|
"rejectedWithReason": "Lần gọi công cụ này đã bị từ chối: {{reason}}",
|
package/locales/vi-VN/file.json
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
+
"addFolder": "Tạo thư mục",
|
|
2
3
|
"addKnowledge": "Thêm kiến thức",
|
|
3
4
|
"addPage": "Tạo tài liệu",
|
|
4
5
|
"desc": "Quản lý kiến thức công việc, học tập và cuộc sống của bạn.",
|
|
@@ -65,6 +66,7 @@
|
|
|
65
66
|
"header": {
|
|
66
67
|
"actions": {
|
|
67
68
|
"newFolder": "Tạo thư mục mới",
|
|
69
|
+
"newPage": "Tạo tài liệu mới",
|
|
68
70
|
"uploadFile": "Tải tệp lên",
|
|
69
71
|
"uploadFolder": "Tải thư mục lên"
|
|
70
72
|
},
|
|
@@ -1853,6 +1853,18 @@
|
|
|
1853
1853
|
"gpt-5-pro": {
|
|
1854
1854
|
"description": "GPT-5 pro sử dụng nhiều tài nguyên tính toán hơn để suy nghĩ sâu sắc hơn và liên tục cung cấp các câu trả lời tốt hơn."
|
|
1855
1855
|
},
|
|
1856
|
+
"gpt-5.1": {
|
|
1857
|
+
"description": "GPT-5.1 — Mô hình hàng đầu được tối ưu hóa cho các tác vụ lập trình và agent, hỗ trợ cường độ suy luận có thể cấu hình và ngữ cảnh dài hơn."
|
|
1858
|
+
},
|
|
1859
|
+
"gpt-5.1-chat-latest": {
|
|
1860
|
+
"description": "GPT-5.1 Chat: Biến thể GPT-5.1 dành cho ChatGPT, phù hợp với các tình huống trò chuyện."
|
|
1861
|
+
},
|
|
1862
|
+
"gpt-5.1-codex": {
|
|
1863
|
+
"description": "GPT-5.1 Codex: Phiên bản GPT-5.1 được tối ưu hóa cho các tác vụ lập trình mang tính agent, có thể sử dụng trong Responses API cho các quy trình làm việc mã hóa/đại lý phức tạp hơn."
|
|
1864
|
+
},
|
|
1865
|
+
"gpt-5.1-codex-mini": {
|
|
1866
|
+
"description": "GPT-5.1 Codex mini: Biến thể Codex nhỏ gọn hơn và tiết kiệm chi phí hơn, được tối ưu hóa cho các tác vụ lập trình mang tính agent."
|
|
1867
|
+
},
|
|
1856
1868
|
"gpt-audio": {
|
|
1857
1869
|
"description": "GPT Audio là mô hình trò chuyện chung hỗ trợ đầu vào và đầu ra âm thanh, có thể sử dụng âm thanh I/O trong API Chat Completions."
|
|
1858
1870
|
},
|
|
@@ -2028,13 +2040,13 @@
|
|
|
2028
2040
|
"description": "Dòng mô hình Imagen thế hệ thứ tư chuyển văn bản thành hình ảnh"
|
|
2029
2041
|
},
|
|
2030
2042
|
"imagen-4.0-generate-preview-06-06": {
|
|
2031
|
-
"description": "Dòng mô hình
|
|
2043
|
+
"description": "Dòng mô hình tạo hình ảnh từ văn bản thế hệ thứ tư của Imagen"
|
|
2032
2044
|
},
|
|
2033
2045
|
"imagen-4.0-ultra-generate-001": {
|
|
2034
2046
|
"description": "Imagen thế hệ thứ 4, dòng mô hình chuyển văn bản sang hình ảnh — phiên bản Ultra"
|
|
2035
2047
|
},
|
|
2036
2048
|
"imagen-4.0-ultra-generate-preview-06-06": {
|
|
2037
|
-
"description": "Phiên bản Ultra của dòng mô hình
|
|
2049
|
+
"description": "Phiên bản Ultra của dòng mô hình tạo hình ảnh từ văn bản thế hệ thứ tư của Imagen"
|
|
2038
2050
|
},
|
|
2039
2051
|
"inception/mercury-coder-small": {
|
|
2040
2052
|
"description": "Mercury Coder Small là lựa chọn lý tưởng cho các nhiệm vụ tạo mã, gỡ lỗi và tái cấu trúc với độ trễ tối thiểu."
|
|
@@ -3092,6 +3104,9 @@
|
|
|
3092
3104
|
"qwen3-max": {
|
|
3093
3105
|
"description": "Dòng mô hình Max của Tongyi Qianwen 3, so với dòng 2.5 có sự cải thiện lớn về khả năng chung, bao gồm hiểu văn bản song ngữ Trung-Anh, tuân thủ chỉ dẫn phức tạp, khả năng thực hiện các tác vụ mở chủ quan, đa ngôn ngữ và gọi công cụ; giảm thiểu ảo tưởng kiến thức của mô hình. Phiên bản qwen3-max mới nhất đã nâng cấp chuyên biệt về lập trình tác nhân và gọi công cụ so với phiên bản qwen3-max-preview. Mô hình chính thức phát hành đạt mức SOTA trong lĩnh vực, phù hợp với các nhu cầu tác nhân phức tạp hơn."
|
|
3094
3106
|
},
|
|
3107
|
+
"qwen3-max-preview": {
|
|
3108
|
+
"description": "Mô hình mạnh nhất trong dòng Tongyi Qianwen, phù hợp với các tác vụ phức tạp và nhiều bước. Phiên bản xem trước đã hỗ trợ khả năng suy luận."
|
|
3109
|
+
},
|
|
3095
3110
|
"qwen3-next-80b-a3b-instruct": {
|
|
3096
3111
|
"description": "Mô hình mã nguồn mở thế hệ mới không có chế độ suy nghĩ dựa trên Qwen3, so với phiên bản trước (Thông Nghĩa Thiên Vấn 3-235B-A22B-Instruct-2507) có khả năng hiểu văn bản tiếng Trung tốt hơn, năng lực suy luận logic được cải thiện, và hiệu suất trong các nhiệm vụ tạo văn bản cũng tốt hơn."
|
|
3097
3112
|
},
|
package/locales/vi-VN/tool.json
CHANGED
|
@@ -17,6 +17,14 @@
|
|
|
17
17
|
"localFiles": {
|
|
18
18
|
"file": "Tệp",
|
|
19
19
|
"folder": "Thư mục",
|
|
20
|
+
"moveFiles": {
|
|
21
|
+
"itemsMoved": "Đã di chuyển {{count}} mục:",
|
|
22
|
+
"itemsMoved_one": "Đã di chuyển {{count}} mục:",
|
|
23
|
+
"itemsMoved_other": "Đã di chuyển {{count}} mục:",
|
|
24
|
+
"itemsToMove": "{{count}} mục cần di chuyển:",
|
|
25
|
+
"itemsToMove_one": "{{count}} mục cần di chuyển:",
|
|
26
|
+
"itemsToMove_other": "{{count}} mục cần di chuyển:"
|
|
27
|
+
},
|
|
20
28
|
"open": "Mở",
|
|
21
29
|
"openFile": "Mở tệp",
|
|
22
30
|
"openFolder": "Mở thư mục",
|
package/locales/zh-CN/chat.json
CHANGED
|
@@ -383,6 +383,8 @@
|
|
|
383
383
|
"manualDesc": "每次调用都需要手动批准"
|
|
384
384
|
},
|
|
385
385
|
"reject": "拒绝",
|
|
386
|
+
"rejectAndContinue": "拒绝后重试执行",
|
|
387
|
+
"rejectOnly": "拒绝",
|
|
386
388
|
"rejectReasonPlaceholder": "输入拒绝原因将帮助 Agent 理解并优化后续行动",
|
|
387
389
|
"rejectTitle": "拒绝本次工具调用",
|
|
388
390
|
"rejectedWithReason": "本次工具调用被主动拒绝:{{reason}}",
|
package/locales/zh-CN/file.json
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
+
"addFolder": "创建文件夹",
|
|
2
3
|
"addKnowledge": "添加知识",
|
|
3
4
|
"addPage": "创建文稿",
|
|
4
5
|
"desc": "管理你的工作、学习与生活知识。",
|
|
@@ -65,6 +66,7 @@
|
|
|
65
66
|
"header": {
|
|
66
67
|
"actions": {
|
|
67
68
|
"newFolder": "新建文件夹",
|
|
69
|
+
"newPage": "新建文稿",
|
|
68
70
|
"uploadFile": "上传文件",
|
|
69
71
|
"uploadFolder": "上传文件夹"
|
|
70
72
|
},
|
|
@@ -1853,6 +1853,18 @@
|
|
|
1853
1853
|
"gpt-5-pro": {
|
|
1854
1854
|
"description": "GPT-5 pro 使用更多计算来更深入地思考,并持续提供更好的答案。"
|
|
1855
1855
|
},
|
|
1856
|
+
"gpt-5.1": {
|
|
1857
|
+
"description": "GPT-5.1 — 针对编码和 agent 任务优化的旗舰模型,支持可配置的推理强度与更长上下文。"
|
|
1858
|
+
},
|
|
1859
|
+
"gpt-5.1-chat-latest": {
|
|
1860
|
+
"description": "GPT-5.1 Chat:用于 ChatGPT 的 GPT-5.1 变体,适合聊天场景。"
|
|
1861
|
+
},
|
|
1862
|
+
"gpt-5.1-codex": {
|
|
1863
|
+
"description": "GPT-5.1 Codex:针对 agentic 编码任务优化的 GPT-5.1 版本,可在 Responses API 中用于更复杂的代码/代理工作流。"
|
|
1864
|
+
},
|
|
1865
|
+
"gpt-5.1-codex-mini": {
|
|
1866
|
+
"description": "GPT-5.1 Codex mini:体积更小、成本更低的 Codex 变体,针对 agentic 编码任务进行了优化。"
|
|
1867
|
+
},
|
|
1856
1868
|
"gpt-audio": {
|
|
1857
1869
|
"description": "GPT Audio 是面向音频输入输出的通用聊天模型,支持在 Chat Completions API 中使用音频 I/O。"
|
|
1858
1870
|
},
|
|
@@ -2028,13 +2040,13 @@
|
|
|
2028
2040
|
"description": "Imagen 4th generation text-to-image model series"
|
|
2029
2041
|
},
|
|
2030
2042
|
"imagen-4.0-generate-preview-06-06": {
|
|
2031
|
-
"description": "Imagen
|
|
2043
|
+
"description": "Imagen 第四代文生图模型系列"
|
|
2032
2044
|
},
|
|
2033
2045
|
"imagen-4.0-ultra-generate-001": {
|
|
2034
2046
|
"description": "Imagen 4th generation text-to-image model series Ultra version"
|
|
2035
2047
|
},
|
|
2036
2048
|
"imagen-4.0-ultra-generate-preview-06-06": {
|
|
2037
|
-
"description": "Imagen
|
|
2049
|
+
"description": "Imagen 第四代文生图模型系列的 Ultra 版本"
|
|
2038
2050
|
},
|
|
2039
2051
|
"inception/mercury-coder-small": {
|
|
2040
2052
|
"description": "Mercury Coder Small 是代码生成、调试和重构任务的理想选择,具有最小延迟。"
|
|
@@ -3092,6 +3104,9 @@
|
|
|
3092
3104
|
"qwen3-max": {
|
|
3093
3105
|
"description": "通义千问3系列Max模型,相较2.5系列整体通用能力有大幅度提升,中英文通用文本理解能力、复杂指令遵循能力、主观开放任务能力、多语言能力、工具调用能力均显著增强;模型知识幻觉更少。最新的qwen3-max模型:相较qwen3-max-preview版本,在智能体编程与工具调用方向进行了专项升级。本次发布的正式版模型达到领域SOTA水平,适配场景更加复杂的智能体需求。"
|
|
3094
3106
|
},
|
|
3107
|
+
"qwen3-max-preview": {
|
|
3108
|
+
"description": "通义千问系列效果最好的模型,适合复杂、多步骤的任务。预览版已支持思考。"
|
|
3109
|
+
},
|
|
3095
3110
|
"qwen3-next-80b-a3b-instruct": {
|
|
3096
3111
|
"description": "基于 Qwen3 的新一代非思考模式开源模型,相较上一版本(通义千问3-235B-A22B-Instruct-2507)中文文本理解能力更佳、逻辑推理能力有增强、文本生成类任务表现更好。"
|
|
3097
3112
|
},
|
package/locales/zh-CN/tool.json
CHANGED
|
@@ -17,6 +17,14 @@
|
|
|
17
17
|
"localFiles": {
|
|
18
18
|
"file": "文件",
|
|
19
19
|
"folder": "文件夹",
|
|
20
|
+
"moveFiles": {
|
|
21
|
+
"itemsMoved": "已移动 {{count}} 个项目:",
|
|
22
|
+
"itemsMoved_one": "已移动 {{count}} 个项目:",
|
|
23
|
+
"itemsMoved_other": "已移动 {{count}} 个项目:",
|
|
24
|
+
"itemsToMove": "{{count}} 个项目待移动:",
|
|
25
|
+
"itemsToMove_one": "{{count}} 个项目待移动:",
|
|
26
|
+
"itemsToMove_other": "{{count}} 个项目待移动:"
|
|
27
|
+
},
|
|
20
28
|
"open": "打开",
|
|
21
29
|
"openFile": "打开文件",
|
|
22
30
|
"openFolder": "打开文件夹",
|
package/locales/zh-TW/chat.json
CHANGED
|
@@ -383,6 +383,8 @@
|
|
|
383
383
|
"manualDesc": "每次調用都需要手動批准"
|
|
384
384
|
},
|
|
385
385
|
"reject": "拒絕",
|
|
386
|
+
"rejectAndContinue": "拒絕後重新執行",
|
|
387
|
+
"rejectOnly": "拒絕",
|
|
386
388
|
"rejectReasonPlaceholder": "輸入拒絕原因將幫助 Agent 理解並優化後續行動",
|
|
387
389
|
"rejectTitle": "拒絕本次工具調用",
|
|
388
390
|
"rejectedWithReason": "本次工具調用被主動拒絕:{{reason}}",
|
package/locales/zh-TW/file.json
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
+
"addFolder": "建立資料夾",
|
|
2
3
|
"addKnowledge": "新增知識",
|
|
3
4
|
"addPage": "建立文稿",
|
|
4
5
|
"desc": "管理你的工作、學習與生活知識。",
|
|
@@ -65,6 +66,7 @@
|
|
|
65
66
|
"header": {
|
|
66
67
|
"actions": {
|
|
67
68
|
"newFolder": "新建資料夾",
|
|
69
|
+
"newPage": "新增文件",
|
|
68
70
|
"uploadFile": "上傳檔案",
|
|
69
71
|
"uploadFolder": "上傳資料夾"
|
|
70
72
|
},
|
|
@@ -1853,6 +1853,18 @@
|
|
|
1853
1853
|
"gpt-5-pro": {
|
|
1854
1854
|
"description": "GPT-5 pro 運用更多運算資源進行更深入的思考,持續提供更優質的答案。"
|
|
1855
1855
|
},
|
|
1856
|
+
"gpt-5.1": {
|
|
1857
|
+
"description": "GPT-5.1 — 為編碼與代理任務優化的旗艦模型,支援可調整的推理強度與更長的上下文。"
|
|
1858
|
+
},
|
|
1859
|
+
"gpt-5.1-chat-latest": {
|
|
1860
|
+
"description": "GPT-5.1 Chat:用於 ChatGPT 的 GPT-5.1 變體,適合對話場景。"
|
|
1861
|
+
},
|
|
1862
|
+
"gpt-5.1-codex": {
|
|
1863
|
+
"description": "GPT-5.1 Codex:針對代理型編碼任務優化的 GPT-5.1 版本,可於 Responses API 中用於更複雜的程式碼/代理工作流程。"
|
|
1864
|
+
},
|
|
1865
|
+
"gpt-5.1-codex-mini": {
|
|
1866
|
+
"description": "GPT-5.1 Codex mini:體積更小、成本更低的 Codex 變體,針對代理型編碼任務進行了優化。"
|
|
1867
|
+
},
|
|
1856
1868
|
"gpt-audio": {
|
|
1857
1869
|
"description": "GPT Audio 是面向音訊輸入輸出的通用聊天模型,支援在 Chat Completions API 中使用音訊 I/O。"
|
|
1858
1870
|
},
|
|
@@ -2028,13 +2040,13 @@
|
|
|
2028
2040
|
"description": "Imagen 第四代文字生成影像模型系列"
|
|
2029
2041
|
},
|
|
2030
2042
|
"imagen-4.0-generate-preview-06-06": {
|
|
2031
|
-
"description": "Imagen
|
|
2043
|
+
"description": "Imagen 第四代文字生成圖像模型系列"
|
|
2032
2044
|
},
|
|
2033
2045
|
"imagen-4.0-ultra-generate-001": {
|
|
2034
2046
|
"description": "Imagen 第四代文字生成影像模型系列 Ultra 版"
|
|
2035
2047
|
},
|
|
2036
2048
|
"imagen-4.0-ultra-generate-preview-06-06": {
|
|
2037
|
-
"description": "Imagen
|
|
2049
|
+
"description": "Imagen 第四代文字生成圖像模型系列的 Ultra 版本"
|
|
2038
2050
|
},
|
|
2039
2051
|
"inception/mercury-coder-small": {
|
|
2040
2052
|
"description": "Mercury Coder Small 是程式碼生成、除錯和重構任務的理想選擇,具有最小延遲。"
|
|
@@ -3092,6 +3104,9 @@
|
|
|
3092
3104
|
"qwen3-max": {
|
|
3093
3105
|
"description": "通義千問3系列Max模型,相較2.5系列整體通用能力有大幅度提升,中英文通用文本理解能力、複雜指令遵循能力、主觀開放任務能力、多語言能力、工具調用能力均顯著增強;模型知識幻覺更少。最新的qwen3-max模型:相較qwen3-max-preview版本,在智能體編程與工具調用方向進行了專項升級。本次發布的正式版模型達到領域SOTA水平,適配場景更加複雜的智能體需求。"
|
|
3094
3106
|
},
|
|
3107
|
+
"qwen3-max-preview": {
|
|
3108
|
+
"description": "通義千問系列中效果最佳的模型,適合處理複雜、多步驟的任務。預覽版已支援推理能力。"
|
|
3109
|
+
},
|
|
3095
3110
|
"qwen3-next-80b-a3b-instruct": {
|
|
3096
3111
|
"description": "基於 Qwen3 的新一代非思考模式開源模型,相較上一版本(通義千問3-235B-A22B-Instruct-2507)中文文本理解能力更佳、邏輯推理能力有增強、文本生成類任務表現更好。"
|
|
3097
3112
|
},
|
package/locales/zh-TW/tool.json
CHANGED
|
@@ -17,6 +17,14 @@
|
|
|
17
17
|
"localFiles": {
|
|
18
18
|
"file": "檔案",
|
|
19
19
|
"folder": "資料夾",
|
|
20
|
+
"moveFiles": {
|
|
21
|
+
"itemsMoved": "已移動 {{count}} 個項目:",
|
|
22
|
+
"itemsMoved_one": "已移動 {{count}} 個項目:",
|
|
23
|
+
"itemsMoved_other": "已移動 {{count}} 個項目:",
|
|
24
|
+
"itemsToMove": "{{count}} 個項目待移動:",
|
|
25
|
+
"itemsToMove_one": "{{count}} 個項目待移動:",
|
|
26
|
+
"itemsToMove_other": "{{count}} 個項目待移動:"
|
|
27
|
+
},
|
|
20
28
|
"open": "打開",
|
|
21
29
|
"openFile": "打開檔案",
|
|
22
30
|
"openFolder": "打開資料夾",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lobehub/lobehub",
|
|
3
|
-
"version": "2.0.0-next.
|
|
3
|
+
"version": "2.0.0-next.62",
|
|
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",
|
|
@@ -51,12 +51,12 @@ export class ApiKeyModel {
|
|
|
51
51
|
where: eq(apiKeys.userId, this.userId),
|
|
52
52
|
});
|
|
53
53
|
|
|
54
|
-
//
|
|
54
|
+
// If no decryptor is provided, return the original results directly
|
|
55
55
|
if (!decryptor) {
|
|
56
56
|
return results;
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
//
|
|
59
|
+
// Decrypt the key field for each API Key
|
|
60
60
|
const decryptedResults = await Promise.all(
|
|
61
61
|
results.map(async (apiKey) => {
|
|
62
62
|
const decryptedKey = await decryptor(apiKey.key);
|
|
@@ -209,7 +209,7 @@ export class ChunkModel {
|
|
|
209
209
|
.leftJoin(files, eq(files.id, fileChunks.fileId))
|
|
210
210
|
.where(inArray(fileChunks.fileId, fileIds))
|
|
211
211
|
.orderBy((t) => desc(t.similarity))
|
|
212
|
-
//
|
|
212
|
+
// Relaxed to 15 for now
|
|
213
213
|
.limit(15);
|
|
214
214
|
|
|
215
215
|
return result.map((item) => {
|
|
@@ -11,7 +11,7 @@ export class DrizzleMigrationModel {
|
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
getTableCounts = async () => {
|
|
14
|
-
//
|
|
14
|
+
// Use pg_tables system table to query the number of user tables
|
|
15
15
|
const result = await this.db.execute(
|
|
16
16
|
sql`
|
|
17
17
|
SELECT COUNT(*) as table_count
|
|
@@ -12,9 +12,9 @@ export class OAuthHandoffModel {
|
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
16
|
-
* @param params
|
|
17
|
-
* @returns
|
|
15
|
+
* Create a new OAuth handoff record
|
|
16
|
+
* @param params Credential data
|
|
17
|
+
* @returns Created record
|
|
18
18
|
*/
|
|
19
19
|
create = async (params: NewOAuthHandoff): Promise<OAuthHandoffItem> => {
|
|
20
20
|
const [result] = await this.db
|
|
@@ -27,21 +27,21 @@ export class OAuthHandoffModel {
|
|
|
27
27
|
};
|
|
28
28
|
|
|
29
29
|
/**
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* @param id
|
|
33
|
-
* @param client
|
|
34
|
-
* @returns
|
|
30
|
+
* Fetch and consume OAuth credentials
|
|
31
|
+
* This method queries the record first, and if found, deletes it immediately to ensure credentials can only be used once
|
|
32
|
+
* @param id Credential ID
|
|
33
|
+
* @param client Client type
|
|
34
|
+
* @returns Credential data, or null if it doesn't exist or has expired
|
|
35
35
|
*/
|
|
36
36
|
fetchAndConsume = async (id: string, client: string): Promise<OAuthHandoffItem | null> => {
|
|
37
|
-
//
|
|
37
|
+
// First find the record while checking if it's expired (5 minute TTL)
|
|
38
38
|
const fiveMinutesAgo = new Date(Date.now() - 5 * 60 * 1000);
|
|
39
39
|
|
|
40
40
|
const handoff = await this.db.query.oauthHandoffs.findFirst({
|
|
41
41
|
where: and(
|
|
42
42
|
eq(oauthHandoffs.id, id),
|
|
43
43
|
eq(oauthHandoffs.client, client),
|
|
44
|
-
//
|
|
44
|
+
// Check if the record was created within the last 5 minutes
|
|
45
45
|
sql`${oauthHandoffs.createdAt} > ${fiveMinutesAgo}`,
|
|
46
46
|
),
|
|
47
47
|
});
|
|
@@ -50,16 +50,16 @@ export class OAuthHandoffModel {
|
|
|
50
50
|
return null;
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
//
|
|
53
|
+
// Immediately delete the record to ensure one-time use
|
|
54
54
|
await this.db.delete(oauthHandoffs).where(eq(oauthHandoffs.id, id));
|
|
55
55
|
|
|
56
56
|
return handoff;
|
|
57
57
|
};
|
|
58
58
|
|
|
59
59
|
/**
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
* @returns
|
|
60
|
+
* Clean up expired OAuth handoff records
|
|
61
|
+
* This method should be called periodically (e.g., via a cron job) to clean up expired records
|
|
62
|
+
* @returns Number of records cleaned up
|
|
63
63
|
*/
|
|
64
64
|
cleanupExpired = async (): Promise<number> => {
|
|
65
65
|
const fiveMinutesAgo = new Date(Date.now() - 5 * 60 * 1000);
|
|
@@ -72,11 +72,11 @@ export class OAuthHandoffModel {
|
|
|
72
72
|
};
|
|
73
73
|
|
|
74
74
|
/**
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
* @param id
|
|
78
|
-
* @param client
|
|
79
|
-
* @returns
|
|
75
|
+
* Check if a credential exists (without consuming it)
|
|
76
|
+
* Primarily used for testing and debugging
|
|
77
|
+
* @param id Credential ID
|
|
78
|
+
* @param client Client type
|
|
79
|
+
* @returns Whether it exists and is not expired
|
|
80
80
|
*/
|
|
81
81
|
exists = async (id: string, client: string): Promise<boolean> => {
|
|
82
82
|
const fiveMinutesAgo = new Date(Date.now() - 5 * 60 * 1000);
|
|
@@ -94,7 +94,7 @@ export class SessionModel {
|
|
|
94
94
|
};
|
|
95
95
|
|
|
96
96
|
queryWithGroups = async (): Promise<ChatSessionList> => {
|
|
97
|
-
//
|
|
97
|
+
// Query all sessions
|
|
98
98
|
const result = await this.query();
|
|
99
99
|
|
|
100
100
|
const groups = await this.db.query.sessionGroups.findMany({
|
|
@@ -195,7 +195,7 @@ export class SessionModel {
|
|
|
195
195
|
.limit(limit);
|
|
196
196
|
};
|
|
197
197
|
|
|
198
|
-
// TODO:
|
|
198
|
+
// TODO: In the future, once Inbox ID is stored in the database, we can directly use the _rank method
|
|
199
199
|
rank = async (limit: number = 10): Promise<SessionRankItem[]> => {
|
|
200
200
|
const inboxResult = await this.db
|
|
201
201
|
.select({
|
|
@@ -525,7 +525,7 @@ export class SessionModel {
|
|
|
525
525
|
);
|
|
526
526
|
}
|
|
527
527
|
|
|
528
|
-
//
|
|
528
|
+
// First process the params field: undefined means delete, null means disable flag
|
|
529
529
|
const existingParams = session.agent.params ?? {};
|
|
530
530
|
const updatedParams: Record<string, any> = { ...existingParams };
|
|
531
531
|
|
|
@@ -534,26 +534,26 @@ export class SessionModel {
|
|
|
534
534
|
Object.keys(incomingParams).forEach((key) => {
|
|
535
535
|
const incomingValue = incomingParams[key];
|
|
536
536
|
|
|
537
|
-
// undefined
|
|
537
|
+
// undefined means explicitly delete this field
|
|
538
538
|
if (incomingValue === undefined) {
|
|
539
539
|
delete updatedParams[key];
|
|
540
540
|
return;
|
|
541
541
|
}
|
|
542
542
|
|
|
543
|
-
//
|
|
543
|
+
// All other values (including null) are directly overwritten, null means disable this param on the frontend
|
|
544
544
|
updatedParams[key] = incomingValue;
|
|
545
545
|
});
|
|
546
546
|
}
|
|
547
547
|
|
|
548
|
-
//
|
|
548
|
+
// Build data to be merged, excluding params (processed separately)
|
|
549
549
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
550
550
|
const { params: _params, ...restData } = data;
|
|
551
551
|
const mergedValue = merge(session.agent, restData);
|
|
552
552
|
|
|
553
|
-
//
|
|
553
|
+
// Apply the processed parameters
|
|
554
554
|
mergedValue.params = Object.keys(updatedParams).length > 0 ? updatedParams : undefined;
|
|
555
555
|
|
|
556
|
-
//
|
|
556
|
+
// Final cleanup: ensure no undefined or null values enter the database
|
|
557
557
|
if (mergedValue.params) {
|
|
558
558
|
const params = mergedValue.params as Record<string, any>;
|
|
559
559
|
Object.keys(params).forEach((key) => {
|
|
@@ -625,7 +625,7 @@ export class SessionModel {
|
|
|
625
625
|
}
|
|
626
626
|
|
|
627
627
|
// For agent sessions, include agent-specific fields
|
|
628
|
-
// TODO:
|
|
628
|
+
// TODO: Need a better implementation in the future, currently only taking the first one
|
|
629
629
|
const agent = agentsToSessions?.[0]?.agent;
|
|
630
630
|
return {
|
|
631
631
|
...res,
|
|
@@ -670,7 +670,7 @@ export class SessionModel {
|
|
|
670
670
|
with: { agentsToSessions: { columns: {}, with: { session: true } } },
|
|
671
671
|
});
|
|
672
672
|
|
|
673
|
-
//
|
|
673
|
+
// Filter and map results, ensuring valid session associations
|
|
674
674
|
return (
|
|
675
675
|
results
|
|
676
676
|
.filter((item) => item.agentsToSessions && item.agentsToSessions.length > 0)
|