@lobehub/chat 1.98.2 → 1.99.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.
- package/.cursor/rules/backend-architecture.mdc +93 -17
- package/.cursor/rules/cursor-ux.mdc +45 -35
- package/.cursor/rules/project-introduce.mdc +72 -6
- package/.cursor/rules/rules-attach.mdc +16 -7
- package/.eslintrc.js +10 -0
- package/CHANGELOG.md +27 -0
- package/apps/desktop/README.md +7 -0
- package/apps/desktop/electron-builder.js +5 -0
- package/apps/desktop/package.json +2 -1
- package/apps/desktop/src/main/const/dir.ts +3 -0
- package/apps/desktop/src/main/controllers/UploadFileCtr.ts +13 -8
- package/apps/desktop/src/main/core/App.ts +8 -0
- package/apps/desktop/src/main/core/StaticFileServerManager.ts +221 -0
- package/apps/desktop/src/main/services/fileSrv.ts +231 -44
- package/apps/desktop/src/main/utils/next-electron-rsc.ts +36 -5
- package/changelog/v1.json +9 -0
- package/docs/development/database-schema.dbml +70 -0
- package/locales/ar/common.json +2 -0
- package/locales/ar/components.json +35 -0
- package/locales/ar/error.json +2 -0
- package/locales/ar/image.json +100 -0
- package/locales/ar/metadata.json +4 -0
- package/locales/ar/modelProvider.json +1 -0
- package/locales/ar/models.json +15 -0
- package/locales/ar/plugin.json +22 -0
- package/locales/ar/providers.json +3 -0
- package/locales/ar/setting.json +5 -0
- package/locales/bg-BG/common.json +2 -0
- package/locales/bg-BG/components.json +35 -0
- package/locales/bg-BG/error.json +2 -0
- package/locales/bg-BG/image.json +100 -0
- package/locales/bg-BG/metadata.json +4 -0
- package/locales/bg-BG/modelProvider.json +1 -0
- package/locales/bg-BG/models.json +15 -0
- package/locales/bg-BG/plugin.json +22 -0
- package/locales/bg-BG/providers.json +3 -0
- package/locales/bg-BG/setting.json +5 -0
- package/locales/de-DE/common.json +2 -0
- package/locales/de-DE/components.json +35 -0
- package/locales/de-DE/error.json +2 -0
- package/locales/de-DE/image.json +100 -0
- package/locales/de-DE/metadata.json +4 -0
- package/locales/de-DE/modelProvider.json +1 -0
- package/locales/de-DE/models.json +15 -0
- package/locales/de-DE/plugin.json +22 -0
- package/locales/de-DE/providers.json +3 -0
- package/locales/de-DE/setting.json +5 -0
- package/locales/en-US/common.json +2 -0
- package/locales/en-US/components.json +35 -0
- package/locales/en-US/error.json +2 -0
- package/locales/en-US/image.json +100 -0
- package/locales/en-US/metadata.json +4 -0
- package/locales/en-US/modelProvider.json +1 -0
- package/locales/en-US/models.json +15 -0
- package/locales/en-US/plugin.json +22 -0
- package/locales/en-US/providers.json +3 -0
- package/locales/en-US/setting.json +5 -0
- package/locales/es-ES/common.json +2 -0
- package/locales/es-ES/components.json +35 -0
- package/locales/es-ES/error.json +2 -0
- package/locales/es-ES/image.json +100 -0
- package/locales/es-ES/metadata.json +4 -0
- package/locales/es-ES/modelProvider.json +1 -0
- package/locales/es-ES/models.json +15 -0
- package/locales/es-ES/plugin.json +22 -0
- package/locales/es-ES/providers.json +3 -0
- package/locales/es-ES/setting.json +5 -0
- package/locales/fa-IR/common.json +2 -0
- package/locales/fa-IR/components.json +35 -0
- package/locales/fa-IR/error.json +2 -0
- package/locales/fa-IR/image.json +100 -0
- package/locales/fa-IR/metadata.json +4 -0
- package/locales/fa-IR/modelProvider.json +1 -0
- package/locales/fa-IR/models.json +15 -0
- package/locales/fa-IR/plugin.json +22 -0
- package/locales/fa-IR/providers.json +3 -0
- package/locales/fa-IR/setting.json +5 -0
- package/locales/fr-FR/common.json +2 -0
- package/locales/fr-FR/components.json +35 -0
- package/locales/fr-FR/error.json +2 -0
- package/locales/fr-FR/image.json +100 -0
- package/locales/fr-FR/metadata.json +4 -0
- package/locales/fr-FR/modelProvider.json +1 -0
- package/locales/fr-FR/models.json +15 -0
- package/locales/fr-FR/plugin.json +22 -0
- package/locales/fr-FR/providers.json +3 -0
- package/locales/fr-FR/setting.json +5 -0
- package/locales/it-IT/common.json +2 -0
- package/locales/it-IT/components.json +35 -0
- package/locales/it-IT/error.json +2 -0
- package/locales/it-IT/image.json +100 -0
- package/locales/it-IT/metadata.json +4 -0
- package/locales/it-IT/modelProvider.json +1 -0
- package/locales/it-IT/models.json +15 -0
- package/locales/it-IT/plugin.json +22 -0
- package/locales/it-IT/providers.json +3 -0
- package/locales/it-IT/setting.json +5 -0
- package/locales/ja-JP/common.json +2 -0
- package/locales/ja-JP/components.json +35 -0
- package/locales/ja-JP/error.json +2 -0
- package/locales/ja-JP/image.json +100 -0
- package/locales/ja-JP/metadata.json +4 -0
- package/locales/ja-JP/modelProvider.json +1 -0
- package/locales/ja-JP/models.json +15 -0
- package/locales/ja-JP/plugin.json +22 -0
- package/locales/ja-JP/providers.json +3 -0
- package/locales/ja-JP/setting.json +5 -0
- package/locales/ko-KR/common.json +2 -0
- package/locales/ko-KR/components.json +35 -0
- package/locales/ko-KR/error.json +2 -0
- package/locales/ko-KR/image.json +100 -0
- package/locales/ko-KR/metadata.json +4 -0
- package/locales/ko-KR/modelProvider.json +1 -0
- package/locales/ko-KR/models.json +15 -0
- package/locales/ko-KR/plugin.json +22 -0
- package/locales/ko-KR/providers.json +3 -0
- package/locales/ko-KR/setting.json +5 -0
- package/locales/nl-NL/common.json +2 -0
- package/locales/nl-NL/components.json +35 -0
- package/locales/nl-NL/error.json +2 -0
- package/locales/nl-NL/image.json +100 -0
- package/locales/nl-NL/metadata.json +4 -0
- package/locales/nl-NL/modelProvider.json +1 -0
- package/locales/nl-NL/models.json +15 -0
- package/locales/nl-NL/plugin.json +22 -0
- package/locales/nl-NL/providers.json +3 -0
- package/locales/nl-NL/setting.json +5 -0
- package/locales/pl-PL/common.json +2 -0
- package/locales/pl-PL/components.json +35 -0
- package/locales/pl-PL/error.json +2 -0
- package/locales/pl-PL/image.json +100 -0
- package/locales/pl-PL/metadata.json +4 -0
- package/locales/pl-PL/modelProvider.json +1 -0
- package/locales/pl-PL/models.json +15 -0
- package/locales/pl-PL/plugin.json +22 -0
- package/locales/pl-PL/providers.json +3 -0
- package/locales/pl-PL/setting.json +5 -0
- package/locales/pt-BR/common.json +2 -0
- package/locales/pt-BR/components.json +35 -0
- package/locales/pt-BR/error.json +2 -0
- package/locales/pt-BR/image.json +100 -0
- package/locales/pt-BR/metadata.json +4 -0
- package/locales/pt-BR/modelProvider.json +1 -0
- package/locales/pt-BR/models.json +15 -0
- package/locales/pt-BR/plugin.json +22 -0
- package/locales/pt-BR/providers.json +3 -0
- package/locales/pt-BR/setting.json +5 -0
- package/locales/ru-RU/common.json +2 -0
- package/locales/ru-RU/components.json +35 -0
- package/locales/ru-RU/error.json +2 -0
- package/locales/ru-RU/image.json +100 -0
- package/locales/ru-RU/metadata.json +4 -0
- package/locales/ru-RU/modelProvider.json +1 -0
- package/locales/ru-RU/models.json +15 -0
- package/locales/ru-RU/plugin.json +22 -0
- package/locales/ru-RU/providers.json +3 -0
- package/locales/ru-RU/setting.json +5 -0
- package/locales/tr-TR/common.json +2 -0
- package/locales/tr-TR/components.json +35 -0
- package/locales/tr-TR/error.json +2 -0
- package/locales/tr-TR/image.json +100 -0
- package/locales/tr-TR/metadata.json +4 -0
- package/locales/tr-TR/modelProvider.json +1 -0
- package/locales/tr-TR/models.json +15 -0
- package/locales/tr-TR/plugin.json +22 -0
- package/locales/tr-TR/providers.json +3 -0
- package/locales/tr-TR/setting.json +5 -0
- package/locales/vi-VN/common.json +2 -0
- package/locales/vi-VN/components.json +35 -0
- package/locales/vi-VN/error.json +2 -0
- package/locales/vi-VN/image.json +100 -0
- package/locales/vi-VN/metadata.json +4 -0
- package/locales/vi-VN/modelProvider.json +1 -0
- package/locales/vi-VN/models.json +15 -0
- package/locales/vi-VN/plugin.json +22 -0
- package/locales/vi-VN/providers.json +3 -0
- package/locales/vi-VN/setting.json +5 -0
- package/locales/zh-CN/common.json +2 -0
- package/locales/zh-CN/components.json +35 -0
- package/locales/zh-CN/error.json +2 -0
- package/locales/zh-CN/image.json +100 -0
- package/locales/zh-CN/metadata.json +4 -0
- package/locales/zh-CN/modelProvider.json +1 -0
- package/locales/zh-CN/models.json +15 -0
- package/locales/zh-CN/plugin.json +22 -0
- package/locales/zh-CN/providers.json +3 -0
- package/locales/zh-CN/setting.json +5 -0
- package/locales/zh-TW/common.json +2 -0
- package/locales/zh-TW/components.json +35 -0
- package/locales/zh-TW/error.json +2 -0
- package/locales/zh-TW/image.json +100 -0
- package/locales/zh-TW/metadata.json +4 -0
- package/locales/zh-TW/modelProvider.json +1 -0
- package/locales/zh-TW/models.json +15 -0
- package/locales/zh-TW/plugin.json +22 -0
- package/locales/zh-TW/providers.json +3 -0
- package/locales/zh-TW/setting.json +5 -0
- package/package.json +11 -4
- package/packages/electron-server-ipc/src/events/file.ts +3 -1
- package/packages/electron-server-ipc/src/types/file.ts +15 -0
- package/src/app/[variants]/(main)/_layout/Desktop/SideBar/TopActions.tsx +11 -1
- package/src/app/[variants]/(main)/image/@menu/components/AspectRatioSelect/index.tsx +73 -0
- package/src/app/[variants]/(main)/image/@menu/components/SeedNumberInput/index.tsx +39 -0
- package/src/app/[variants]/(main)/image/@menu/components/SizeSelect/index.tsx +89 -0
- package/src/app/[variants]/(main)/image/@menu/default.tsx +11 -0
- package/src/app/[variants]/(main)/image/@menu/features/ConfigPanel/components/AspectRatioSelect.tsx +24 -0
- package/src/app/[variants]/(main)/image/@menu/features/ConfigPanel/components/DimensionControlGroup.tsx +107 -0
- package/src/app/[variants]/(main)/image/@menu/features/ConfigPanel/components/ImageNum.tsx +290 -0
- package/src/app/[variants]/(main)/image/@menu/features/ConfigPanel/components/ImageUpload.tsx +504 -0
- package/src/app/[variants]/(main)/image/@menu/features/ConfigPanel/components/ImageUrl.tsx +18 -0
- package/src/app/[variants]/(main)/image/@menu/features/ConfigPanel/components/ImageUrlsUpload.tsx +19 -0
- package/src/app/[variants]/(main)/image/@menu/features/ConfigPanel/components/ModelSelect.tsx +155 -0
- package/src/app/[variants]/(main)/image/@menu/features/ConfigPanel/components/MultiImagesUpload/ImageManageModal.tsx +415 -0
- package/src/app/[variants]/(main)/image/@menu/features/ConfigPanel/components/MultiImagesUpload/index.tsx +732 -0
- package/src/app/[variants]/(main)/image/@menu/features/ConfigPanel/components/SeedNumberInput.tsx +24 -0
- package/src/app/[variants]/(main)/image/@menu/features/ConfigPanel/components/SizeSelect.tsx +17 -0
- package/src/app/[variants]/(main)/image/@menu/features/ConfigPanel/components/SizeSliderInput.tsx +15 -0
- package/src/app/[variants]/(main)/image/@menu/features/ConfigPanel/components/StepsSliderInput.tsx +11 -0
- package/src/app/[variants]/(main)/image/@menu/features/ConfigPanel/constants.ts +1 -0
- package/src/app/[variants]/(main)/image/@menu/features/ConfigPanel/index.tsx +93 -0
- package/src/app/[variants]/(main)/image/@topic/default.tsx +17 -0
- package/src/app/[variants]/(main)/image/@topic/features/Topics/NewTopicButton.tsx +64 -0
- package/src/app/[variants]/(main)/image/@topic/features/Topics/SkeletonList.tsx +34 -0
- package/src/app/[variants]/(main)/image/@topic/features/Topics/TopicItem.tsx +136 -0
- package/src/app/[variants]/(main)/image/@topic/features/Topics/TopicItemContainer.tsx +91 -0
- package/src/app/[variants]/(main)/image/@topic/features/Topics/TopicList.tsx +57 -0
- package/src/app/[variants]/(main)/image/@topic/features/Topics/TopicUrlSync.tsx +37 -0
- package/src/app/[variants]/(main)/image/@topic/features/Topics/index.tsx +19 -0
- package/src/app/[variants]/(main)/image/NotSupportClient.tsx +153 -0
- package/src/app/[variants]/(main)/image/_layout/Desktop/Container.tsx +35 -0
- package/src/app/[variants]/(main)/image/_layout/Desktop/RegisterHotkeys.tsx +10 -0
- package/src/app/[variants]/(main)/image/_layout/Desktop/index.tsx +30 -0
- package/src/app/[variants]/(main)/image/_layout/Mobile/index.tsx +14 -0
- package/src/app/[variants]/(main)/image/_layout/type.ts +7 -0
- package/src/app/[variants]/(main)/image/features/GenerationFeed/BatchItem.tsx +196 -0
- package/src/app/[variants]/(main)/image/features/GenerationFeed/GenerationItem/ActionButtons.tsx +60 -0
- package/src/app/[variants]/(main)/image/features/GenerationFeed/GenerationItem/ElapsedTime.tsx +90 -0
- package/src/app/[variants]/(main)/image/features/GenerationFeed/GenerationItem/ErrorState.tsx +65 -0
- package/src/app/[variants]/(main)/image/features/GenerationFeed/GenerationItem/LoadingState.tsx +43 -0
- package/src/app/[variants]/(main)/image/features/GenerationFeed/GenerationItem/SuccessState.tsx +49 -0
- package/src/app/[variants]/(main)/image/features/GenerationFeed/GenerationItem/index.tsx +156 -0
- package/src/app/[variants]/(main)/image/features/GenerationFeed/GenerationItem/styles.ts +51 -0
- package/src/app/[variants]/(main)/image/features/GenerationFeed/GenerationItem/types.ts +39 -0
- package/src/app/[variants]/(main)/image/features/GenerationFeed/GenerationItem/utils.ts +11 -0
- package/src/app/[variants]/(main)/image/features/GenerationFeed/index.tsx +97 -0
- package/src/app/[variants]/(main)/image/features/ImageWorkspace/Content.tsx +48 -0
- package/src/app/[variants]/(main)/image/features/ImageWorkspace/EmptyState.tsx +37 -0
- package/src/app/[variants]/(main)/image/features/ImageWorkspace/SkeletonList.tsx +50 -0
- package/src/app/[variants]/(main)/image/features/ImageWorkspace/index.tsx +23 -0
- package/src/app/[variants]/(main)/image/features/PromptInput/Title.tsx +38 -0
- package/src/app/[variants]/(main)/image/features/PromptInput/index.tsx +114 -0
- package/src/app/[variants]/(main)/image/layout.tsx +19 -0
- package/src/app/[variants]/(main)/image/loading.tsx +3 -0
- package/src/app/[variants]/(main)/image/page.tsx +47 -0
- package/src/app/[variants]/(main)/settings/system-agent/index.tsx +2 -1
- package/src/chains/summaryGenerationTitle.ts +25 -0
- package/src/components/ImageItem/index.tsx +9 -6
- package/src/{features/Conversation/Error → components/InvalidAPIKey}/APIKeyForm/Bedrock.tsx +3 -4
- package/src/{features/Conversation/Error → components/InvalidAPIKey}/APIKeyForm/ProviderApiKeyForm.tsx +5 -4
- package/src/components/InvalidAPIKey/APIKeyForm/index.tsx +108 -0
- package/src/{features/Conversation/Error → components/InvalidAPIKey}/APIKeyForm/useApiKey.ts +2 -1
- package/src/components/InvalidAPIKey/index.tsx +30 -0
- package/src/components/KeyValueEditor/index.tsx +203 -0
- package/src/components/KeyValueEditor/utils.ts +42 -0
- package/src/config/aiModels/fal.ts +52 -0
- package/src/config/aiModels/index.ts +3 -0
- package/src/config/aiModels/openai.ts +20 -6
- package/src/config/llm.ts +6 -0
- package/src/config/modelProviders/fal.ts +21 -0
- package/src/config/modelProviders/index.ts +3 -0
- package/src/config/paramsSchemas/fal/flux-kontext-dev.ts +8 -0
- package/src/config/paramsSchemas/fal/flux-pro-kontext.ts +11 -0
- package/src/config/paramsSchemas/fal/flux-schnell.ts +9 -0
- package/src/config/paramsSchemas/fal/imagen4.ts +10 -0
- package/src/config/paramsSchemas/openai/gpt-image-1.ts +10 -0
- package/src/const/hotkeys.ts +2 -2
- package/src/const/image.ts +6 -0
- package/src/const/settings/systemAgent.ts +1 -0
- package/src/database/client/migrations.json +27 -0
- package/src/database/migrations/0026_add_autovacuum_tuning.sql +2 -0
- package/src/database/migrations/0027_ai_image.sql +47 -0
- package/src/database/migrations/meta/0027_snapshot.json +6003 -0
- package/src/database/migrations/meta/_journal.json +7 -0
- package/src/database/models/__tests__/asyncTask.test.ts +7 -5
- package/src/database/models/__tests__/file.test.ts +287 -0
- package/src/database/models/__tests__/generation.test.ts +786 -0
- package/src/database/models/__tests__/generationBatch.test.ts +614 -0
- package/src/database/models/__tests__/generationTopic.test.ts +411 -0
- package/src/database/models/aiModel.ts +2 -0
- package/src/database/models/asyncTask.ts +1 -1
- package/src/database/models/file.ts +28 -20
- package/src/database/models/generation.ts +197 -0
- package/src/database/models/generationBatch.ts +212 -0
- package/src/database/models/generationTopic.ts +131 -0
- package/src/database/repositories/aiInfra/index.test.ts +151 -1
- package/src/database/repositories/aiInfra/index.ts +28 -19
- package/src/database/repositories/tableViewer/index.test.ts +1 -1
- package/src/database/schemas/file.ts +8 -0
- package/src/database/schemas/generation.ts +127 -0
- package/src/database/schemas/index.ts +1 -0
- package/src/database/schemas/relations.ts +45 -1
- package/src/database/type.ts +2 -0
- package/src/database/utils/idGenerator.ts +3 -0
- package/src/features/Conversation/Error/ChatInvalidApiKey.tsx +39 -0
- package/src/features/Conversation/Error/InvalidAccessCode.tsx +2 -2
- package/src/features/Conversation/Error/index.tsx +3 -3
- package/src/features/ImageSidePanel/index.tsx +83 -0
- package/src/features/ImageTopicPanel/index.tsx +79 -0
- package/src/features/PluginDevModal/MCPManifestForm/CollapsibleSection.tsx +62 -0
- package/src/features/PluginDevModal/MCPManifestForm/QuickImportSection.tsx +158 -0
- package/src/features/PluginDevModal/MCPManifestForm/index.tsx +99 -155
- package/src/features/PluginStore/McpList/Detail/Settings/index.tsx +5 -2
- package/src/hooks/useDownloadImage.ts +31 -0
- package/src/hooks/useFetchGenerationTopics.ts +13 -0
- package/src/hooks/useHotkeys/imageScope.ts +48 -0
- package/src/libs/mcp/client.ts +55 -22
- package/src/libs/mcp/types.ts +42 -6
- package/src/libs/model-runtime/BaseAI.ts +3 -1
- package/src/libs/model-runtime/ModelRuntime.test.ts +80 -0
- package/src/libs/model-runtime/ModelRuntime.ts +15 -1
- package/src/libs/model-runtime/UniformRuntime/index.ts +4 -1
- package/src/libs/model-runtime/fal/index.test.ts +442 -0
- package/src/libs/model-runtime/fal/index.ts +88 -0
- package/src/libs/model-runtime/openai/index.test.ts +396 -2
- package/src/libs/model-runtime/openai/index.ts +129 -3
- package/src/libs/model-runtime/runtimeMap.ts +2 -0
- package/src/libs/model-runtime/types/image.ts +25 -0
- package/src/libs/model-runtime/types/type.ts +1 -0
- package/src/libs/model-runtime/utils/openaiCompatibleFactory/index.ts +10 -0
- package/src/libs/standard-parameters/index.ts +1 -0
- package/src/libs/standard-parameters/meta-schema.test.ts +214 -0
- package/src/libs/standard-parameters/meta-schema.ts +147 -0
- package/src/libs/swr/index.ts +1 -0
- package/src/libs/trpc/async/asyncAuth.ts +29 -8
- package/src/libs/trpc/async/context.ts +42 -4
- package/src/libs/trpc/async/index.ts +17 -4
- package/src/libs/trpc/async/init.ts +8 -0
- package/src/libs/trpc/client/lambda.ts +19 -2
- package/src/locales/default/common.ts +2 -0
- package/src/locales/default/components.ts +35 -0
- package/src/locales/default/error.ts +2 -0
- package/src/locales/default/image.ts +100 -0
- package/src/locales/default/index.ts +2 -0
- package/src/locales/default/metadata.ts +4 -0
- package/src/locales/default/modelProvider.ts +2 -0
- package/src/locales/default/plugin.ts +22 -0
- package/src/locales/default/setting.ts +5 -0
- package/src/middleware.ts +1 -0
- package/src/server/modules/ElectronIPCClient/index.ts +9 -1
- package/src/server/modules/S3/index.ts +15 -0
- package/src/server/routers/async/caller.ts +9 -1
- package/src/server/routers/async/image.ts +253 -0
- package/src/server/routers/async/index.ts +2 -0
- package/src/server/routers/lambda/aiProvider.test.ts +1 -0
- package/src/server/routers/lambda/generation.test.ts +267 -0
- package/src/server/routers/lambda/generation.ts +86 -0
- package/src/server/routers/lambda/generationBatch.test.ts +376 -0
- package/src/server/routers/lambda/generationBatch.ts +56 -0
- package/src/server/routers/lambda/generationTopic.test.ts +508 -0
- package/src/server/routers/lambda/generationTopic.ts +93 -0
- package/src/server/routers/lambda/image.ts +248 -0
- package/src/server/routers/lambda/index.ts +8 -0
- package/src/server/routers/tools/mcp.ts +15 -0
- package/src/server/services/file/__tests__/index.test.ts +135 -0
- package/src/server/services/file/impls/local.test.ts +153 -52
- package/src/server/services/file/impls/local.ts +70 -46
- package/src/server/services/file/impls/s3.test.ts +114 -0
- package/src/server/services/file/impls/s3.ts +40 -0
- package/src/server/services/file/impls/type.ts +10 -0
- package/src/server/services/file/index.ts +14 -0
- package/src/server/services/generation/index.ts +239 -0
- package/src/server/services/mcp/index.ts +20 -2
- package/src/services/__tests__/generation.test.ts +40 -0
- package/src/services/__tests__/generationBatch.test.ts +36 -0
- package/src/services/__tests__/generationTopic.test.ts +72 -0
- package/src/services/electron/file.ts +3 -1
- package/src/services/generation.ts +16 -0
- package/src/services/generationBatch.ts +25 -0
- package/src/services/generationTopic.ts +28 -0
- package/src/services/image.ts +33 -0
- package/src/services/mcp.ts +12 -7
- package/src/services/upload.ts +43 -9
- package/src/store/aiInfra/slices/aiProvider/action.ts +25 -5
- package/src/store/aiInfra/slices/aiProvider/initialState.ts +1 -0
- package/src/store/aiInfra/slices/aiProvider/selectors.ts +3 -0
- package/src/store/chat/slices/aiChat/actions/generateAIChat.ts +5 -5
- package/src/store/chat/slices/message/action.ts +2 -2
- package/src/store/chat/slices/translate/action.ts +1 -1
- package/src/store/global/initialState.ts +9 -0
- package/src/store/global/selectors/systemStatus.ts +8 -0
- package/src/store/image/index.ts +2 -0
- package/src/store/image/initialState.ts +25 -0
- package/src/store/image/selectors.ts +4 -0
- package/src/store/image/slices/createImage/action.test.ts +330 -0
- package/src/store/image/slices/createImage/action.ts +134 -0
- package/src/store/image/slices/createImage/initialState.ts +9 -0
- package/src/store/image/slices/createImage/selectors.test.ts +114 -0
- package/src/store/image/slices/createImage/selectors.ts +9 -0
- package/src/store/image/slices/generationBatch/action.test.ts +495 -0
- package/src/store/image/slices/generationBatch/action.ts +303 -0
- package/src/store/image/slices/generationBatch/initialState.ts +13 -0
- package/src/store/image/slices/generationBatch/reducer.test.ts +568 -0
- package/src/store/image/slices/generationBatch/reducer.ts +101 -0
- package/src/store/image/slices/generationBatch/selectors.test.ts +307 -0
- package/src/store/image/slices/generationBatch/selectors.ts +36 -0
- package/src/store/image/slices/generationConfig/action.test.ts +351 -0
- package/src/store/image/slices/generationConfig/action.ts +295 -0
- package/src/store/image/slices/generationConfig/hooks.test.ts +304 -0
- package/src/store/image/slices/generationConfig/hooks.ts +118 -0
- package/src/store/image/slices/generationConfig/index.ts +1 -0
- package/src/store/image/slices/generationConfig/initialState.ts +37 -0
- package/src/store/image/slices/generationConfig/selectors.test.ts +204 -0
- package/src/store/image/slices/generationConfig/selectors.ts +25 -0
- package/src/store/image/slices/generationTopic/action.test.ts +687 -0
- package/src/store/image/slices/generationTopic/action.ts +319 -0
- package/src/store/image/slices/generationTopic/index.ts +2 -0
- package/src/store/image/slices/generationTopic/initialState.ts +14 -0
- package/src/store/image/slices/generationTopic/reducer.test.ts +198 -0
- package/src/store/image/slices/generationTopic/reducer.ts +66 -0
- package/src/store/image/slices/generationTopic/selectors.test.ts +103 -0
- package/src/store/image/slices/generationTopic/selectors.ts +15 -0
- package/src/store/image/store.ts +42 -0
- package/src/store/image/utils/size.ts +51 -0
- package/src/store/tool/slices/customPlugin/action.ts +10 -1
- package/src/store/tool/slices/mcpStore/action.ts +6 -4
- package/src/store/user/slices/settings/selectors/__snapshots__/settings.test.ts.snap +4 -0
- package/src/store/user/slices/settings/selectors/systemAgent.ts +2 -0
- package/src/types/aiModel.ts +8 -3
- package/src/types/aiProvider.ts +1 -0
- package/src/types/asyncTask.ts +2 -0
- package/src/types/files/index.ts +5 -0
- package/src/types/generation/index.ts +80 -0
- package/src/types/hotkey.ts +2 -0
- package/src/types/plugins/mcp.ts +2 -6
- package/src/types/tool/plugin.ts +8 -0
- package/src/types/user/settings/keyVaults.ts +5 -0
- package/src/types/user/settings/systemAgent.ts +1 -0
- package/src/utils/client/downloadFile.ts +33 -4
- package/src/utils/number.test.ts +105 -0
- package/src/utils/number.ts +25 -0
- package/src/utils/server/__tests__/geo.test.ts +6 -3
- package/src/utils/storeDebug.test.ts +152 -0
- package/src/utils/storeDebug.ts +16 -7
- package/src/utils/time.test.ts +259 -0
- package/src/utils/time.ts +18 -0
- package/src/utils/units.ts +61 -0
- package/src/utils/url.test.ts +358 -9
- package/src/utils/url.ts +105 -3
- package/{vitest.server.config.ts → vitest.config.server.ts} +3 -0
- package/.cursor/rules/i18n/i18n-auto-attached.mdc +0 -6
- package/src/features/Conversation/Error/APIKeyForm/index.tsx +0 -105
- package/src/features/Conversation/Error/InvalidAPIKey.tsx +0 -16
- package/src/features/PluginDevModal/MCPManifestForm/EnvEditor.tsx +0 -227
- /package/.cursor/rules/{i18n/i18n.mdc → i18n.mdc} +0 -0
- /package/src/app/[variants]/(main)/settings/system-agent/features/{createForm.tsx → SystemAgentForm.tsx} +0 -0
- /package/src/{features/Conversation/Error → components/InvalidAPIKey}/APIKeyForm/LoadingContext.ts +0 -0
@@ -0,0 +1,100 @@
|
|
1
|
+
{
|
2
|
+
"config": {
|
3
|
+
"aspectRatio": {
|
4
|
+
"label": "Tỷ lệ",
|
5
|
+
"lock": "Khóa tỷ lệ khung hình",
|
6
|
+
"unlock": "Mở khóa tỷ lệ khung hình"
|
7
|
+
},
|
8
|
+
"header": {
|
9
|
+
"desc": "Mô tả ngắn gọn, sáng tạo ngay lập tức",
|
10
|
+
"title": "Vẽ tranh"
|
11
|
+
},
|
12
|
+
"height": {
|
13
|
+
"label": "Chiều cao"
|
14
|
+
},
|
15
|
+
"imageNum": {
|
16
|
+
"label": "Số lượng ảnh"
|
17
|
+
},
|
18
|
+
"imageUrl": {
|
19
|
+
"label": "Hình tham khảo"
|
20
|
+
},
|
21
|
+
"imageUrls": {
|
22
|
+
"label": "Ảnh tham khảo"
|
23
|
+
},
|
24
|
+
"model": {
|
25
|
+
"label": "Mô hình"
|
26
|
+
},
|
27
|
+
"prompt": {
|
28
|
+
"placeholder": "Mô tả nội dung bạn muốn tạo"
|
29
|
+
},
|
30
|
+
"seed": {
|
31
|
+
"label": "Hạt giống",
|
32
|
+
"random": "Hạt giống ngẫu nhiên"
|
33
|
+
},
|
34
|
+
"size": {
|
35
|
+
"label": "Kích thước"
|
36
|
+
},
|
37
|
+
"steps": {
|
38
|
+
"label": "Số bước"
|
39
|
+
},
|
40
|
+
"title": "Vẽ AI",
|
41
|
+
"width": {
|
42
|
+
"label": "Chiều rộng"
|
43
|
+
}
|
44
|
+
},
|
45
|
+
"generation": {
|
46
|
+
"actions": {
|
47
|
+
"applySeed": "Áp dụng hạt giống",
|
48
|
+
"copyError": "Sao chép lỗi",
|
49
|
+
"copyPrompt": "Sao chép lời nhắc",
|
50
|
+
"copySeed": "Sao chép hạt giống",
|
51
|
+
"delete": "Xóa",
|
52
|
+
"deleteBatch": "Xóa lô",
|
53
|
+
"download": "Tải xuống",
|
54
|
+
"downloadFailed": "Tải ảnh thất bại",
|
55
|
+
"errorCopied": "Thông tin lỗi đã được sao chép vào bộ nhớ tạm",
|
56
|
+
"errorCopyFailed": "Sao chép thông tin lỗi thất bại",
|
57
|
+
"generate": "Tạo",
|
58
|
+
"promptCopied": "Từ khóa đã được sao chép vào bộ nhớ tạm",
|
59
|
+
"promptCopyFailed": "Sao chép từ khóa thất bại",
|
60
|
+
"reuseSettings": "Tái sử dụng cài đặt",
|
61
|
+
"seedApplied": "Hạt giống đã được áp dụng vào cấu hình",
|
62
|
+
"seedApplyFailed": "Áp dụng hạt giống thất bại",
|
63
|
+
"seedCopied": "Hạt giống đã được sao chép vào bộ nhớ tạm",
|
64
|
+
"seedCopyFailed": "Sao chép hạt giống thất bại"
|
65
|
+
},
|
66
|
+
"metadata": {
|
67
|
+
"count": "{{count}} ảnh"
|
68
|
+
},
|
69
|
+
"status": {
|
70
|
+
"failed": "Tạo thất bại",
|
71
|
+
"generating": "Đang tạo..."
|
72
|
+
}
|
73
|
+
},
|
74
|
+
"notSupportGuide": {
|
75
|
+
"desc": "Phiên bản triển khai hiện tại là chế độ cơ sở dữ liệu phía khách, không hỗ trợ chức năng tạo hình ảnh AI. Vui lòng chuyển sang <1>chế độ triển khai cơ sở dữ liệu phía máy chủ</1> hoặc sử dụng trực tiếp <3>LobeChat Cloud</3>",
|
76
|
+
"features": {
|
77
|
+
"fileIntegration": {
|
78
|
+
"desc": "Tích hợp sâu với hệ thống quản lý tệp, ảnh tạo ra tự động lưu vào hệ thống tệp, hỗ trợ quản lý và tổ chức thống nhất",
|
79
|
+
"title": "Tương tác hệ thống tệp"
|
80
|
+
},
|
81
|
+
"llmAssisted": {
|
82
|
+
"desc": "Kết hợp khả năng mô hình ngôn ngữ lớn, tối ưu và mở rộng từ khóa thông minh, nâng cao chất lượng tạo ảnh (Sắp ra mắt)",
|
83
|
+
"title": "Hỗ trợ tạo ảnh bởi LLM"
|
84
|
+
},
|
85
|
+
"multiProviders": {
|
86
|
+
"desc": "Hỗ trợ nhiều nhà cung cấp dịch vụ vẽ AI, bao gồm OpenAI gpt-image-1, Google Imagen, FAL.ai, v.v., cung cấp đa dạng lựa chọn mô hình",
|
87
|
+
"title": "Hỗ trợ nhiều nhà cung cấp"
|
88
|
+
}
|
89
|
+
},
|
90
|
+
"title": "Chế độ triển khai hiện tại không hỗ trợ vẽ AI"
|
91
|
+
},
|
92
|
+
"topic": {
|
93
|
+
"createNew": "Tạo chủ đề mới",
|
94
|
+
"deleteConfirm": "Xác nhận xóa chủ đề tạo",
|
95
|
+
"deleteConfirmDesc": "Bạn sắp xóa chủ đề tạo này, hành động này không thể hoàn tác, vui lòng cân nhắc kỹ.",
|
96
|
+
"empty": "Chưa có chủ đề tạo",
|
97
|
+
"title": "Chủ đề vẽ tranh",
|
98
|
+
"untitled": "Chủ đề mặc định"
|
99
|
+
}
|
100
|
+
}
|
@@ -32,6 +32,10 @@
|
|
32
32
|
"search": "Tìm kiếm",
|
33
33
|
"title": "Khám Phá"
|
34
34
|
},
|
35
|
+
"image": {
|
36
|
+
"description": "{{appName}} mang đến cho bạn trải nghiệm sử dụng GPT Image, Flux, Midjourney, Stable Diffusion tốt nhất",
|
37
|
+
"title": "Vẽ AI"
|
38
|
+
},
|
35
39
|
"plugins": {
|
36
40
|
"description": "Tìm kiếm, tạo biểu đồ, học thuật, tạo hình ảnh, tạo video, tạo giọng nói, quy trình tự động hóa, tùy chỉnh khả năng plugin ToolCall dành riêng cho ChatGPT / Claude",
|
37
41
|
"title": "Thị trường plugin"
|
@@ -66,6 +66,7 @@
|
|
66
66
|
"customRegion": "Vùng Dịch vụ Tùy chỉnh",
|
67
67
|
"customSessionToken": "Mã thông báo phiên tùy chỉnh",
|
68
68
|
"description": "Nhập AWS AccessKeyId / SecretAccessKey của bạn để bắt đầu phiên làm việc. Ứng dụng sẽ không lưu trữ cấu hình xác thực của bạn",
|
69
|
+
"imageGenerationDescription": "Nhập AWS AccessKeyId / SecretAccessKey của bạn để bắt đầu tạo. Ứng dụng sẽ không lưu trữ cấu hình xác thực của bạn",
|
69
70
|
"title": "Sử dụng Thông tin Xác thực Bedrock tùy chỉnh"
|
70
71
|
}
|
71
72
|
},
|
@@ -1019,6 +1019,15 @@
|
|
1019
1019
|
"ernie-x1-turbo-32k": {
|
1020
1020
|
"description": "So với ERNIE-X1-32K, mô hình này có hiệu suất và hiệu quả tốt hơn."
|
1021
1021
|
},
|
1022
|
+
"flux-kontext/dev": {
|
1023
|
+
"description": "Mô hình chỉnh sửa hình ảnh Frontier."
|
1024
|
+
},
|
1025
|
+
"flux-pro/kontext": {
|
1026
|
+
"description": "FLUX.1 Kontext [pro] có khả năng xử lý văn bản và hình ảnh tham khảo làm đầu vào, thực hiện chỉnh sửa cục bộ có mục tiêu và biến đổi cảnh tổng thể phức tạp một cách liền mạch."
|
1027
|
+
},
|
1028
|
+
"flux/schnell": {
|
1029
|
+
"description": "FLUX.1 [schnell] là mô hình bộ chuyển đổi dòng với 12 tỷ tham số, có thể tạo ra hình ảnh chất lượng cao từ văn bản trong 1 đến 4 bước, phù hợp cho mục đích cá nhân và thương mại."
|
1030
|
+
},
|
1022
1031
|
"gemini-1.0-pro-001": {
|
1023
1032
|
"description": "Gemini 1.0 Pro 001 (Tuning) cung cấp hiệu suất ổn định và có thể điều chỉnh, là lựa chọn lý tưởng cho các giải pháp nhiệm vụ phức tạp."
|
1024
1033
|
},
|
@@ -1364,6 +1373,9 @@
|
|
1364
1373
|
"gpt-4o-transcribe": {
|
1365
1374
|
"description": "GPT-4o Transcribe là mô hình chuyển đổi giọng nói thành văn bản sử dụng GPT-4o để phiên âm âm thanh. So với mô hình Whisper gốc, nó cải thiện tỷ lệ lỗi từ và nâng cao khả năng nhận diện ngôn ngữ cũng như độ chính xác. Sử dụng nó để có bản phiên âm chính xác hơn."
|
1366
1375
|
},
|
1376
|
+
"gpt-image-1": {
|
1377
|
+
"description": "Mô hình tạo hình ảnh đa phương thức nguyên bản của ChatGPT"
|
1378
|
+
},
|
1367
1379
|
"grok-2-1212": {
|
1368
1380
|
"description": "Mô hình này đã được cải thiện về độ chính xác, khả năng tuân thủ hướng dẫn và khả năng đa ngôn ngữ."
|
1369
1381
|
},
|
@@ -1484,6 +1496,9 @@
|
|
1484
1496
|
"hunyuan-vision": {
|
1485
1497
|
"description": "Mô hình đa phương thức mới nhất của Hunyuan, hỗ trợ đầu vào hình ảnh + văn bản để tạo ra nội dung văn bản."
|
1486
1498
|
},
|
1499
|
+
"imagen4/preview": {
|
1500
|
+
"description": "Mô hình tạo hình ảnh chất lượng cao nhất của Google"
|
1501
|
+
},
|
1487
1502
|
"internlm/internlm2_5-7b-chat": {
|
1488
1503
|
"description": "InternLM2.5 cung cấp giải pháp đối thoại thông minh cho nhiều tình huống."
|
1489
1504
|
},
|
@@ -57,12 +57,28 @@
|
|
57
57
|
}
|
58
58
|
},
|
59
59
|
"mcp": {
|
60
|
+
"advanced": {
|
61
|
+
"title": "Cài đặt nâng cao"
|
62
|
+
},
|
60
63
|
"args": {
|
61
64
|
"desc": "Danh sách các tham số được truyền cho lệnh thực thi, thường nhập tên máy chủ MCP hoặc đường dẫn đến tập lệnh khởi động",
|
62
65
|
"label": "Tham số lệnh",
|
63
66
|
"placeholder": "Ví dụ: mcp-hello-world",
|
64
67
|
"required": "Vui lòng nhập tham số khởi động"
|
65
68
|
},
|
69
|
+
"auth": {
|
70
|
+
"bear": "API Key",
|
71
|
+
"desc": "Chọn phương thức xác thực cho máy chủ MCP",
|
72
|
+
"label": "Loại xác thực",
|
73
|
+
"none": "Không cần xác thực",
|
74
|
+
"placeholder": "Vui lòng chọn loại xác thực",
|
75
|
+
"token": {
|
76
|
+
"desc": "Nhập API Key hoặc Bearer Token của bạn",
|
77
|
+
"label": "API Key",
|
78
|
+
"placeholder": "sk-xxxxx",
|
79
|
+
"required": "Vui lòng nhập mã xác thực"
|
80
|
+
}
|
81
|
+
},
|
66
82
|
"avatar": {
|
67
83
|
"label": "Biểu tượng tiện ích"
|
68
84
|
},
|
@@ -90,6 +106,11 @@
|
|
90
106
|
"label": "Biến môi trường máy chủ MCP",
|
91
107
|
"stringifyError": "Không thể tuần tự hóa tham số, vui lòng kiểm tra định dạng tham số"
|
92
108
|
},
|
109
|
+
"headers": {
|
110
|
+
"add": "Thêm dòng mới",
|
111
|
+
"desc": "Nhập tiêu đề yêu cầu",
|
112
|
+
"label": "HTTP Headers"
|
113
|
+
},
|
93
114
|
"identifier": {
|
94
115
|
"desc": "Chỉ định một tên cho plugin MCP của bạn, cần sử dụng ký tự tiếng Anh",
|
95
116
|
"invalid": "Chỉ có thể nhập ký tự tiếng Anh, số, và hai ký hiệu - và _",
|
@@ -269,6 +290,7 @@
|
|
269
290
|
"showDetails": "Xem chi tiết"
|
270
291
|
},
|
271
292
|
"errorTypes": {
|
293
|
+
"AUTHORIZATION_ERROR": "Lỗi xác thực ủy quyền",
|
272
294
|
"CONNECTION_FAILED": "Kết nối thất bại",
|
273
295
|
"INITIALIZATION_TIMEOUT": "Khởi tạo quá thời gian",
|
274
296
|
"PROCESS_SPAWN_ERROR": "Khởi tạo tiến trình thất bại",
|
@@ -29,6 +29,9 @@
|
|
29
29
|
"deepseek": {
|
30
30
|
"description": "DeepSeek là một công ty tập trung vào nghiên cứu và ứng dụng công nghệ trí tuệ nhân tạo, mô hình mới nhất của họ, DeepSeek-V2.5, kết hợp khả năng đối thoại chung và xử lý mã, đồng thời đạt được sự cải thiện đáng kể trong việc căn chỉnh sở thích của con người, nhiệm vụ viết và tuân theo chỉ dẫn."
|
31
31
|
},
|
32
|
+
"fal": {
|
33
|
+
"description": "Nền tảng truyền thông tạo sinh dành cho nhà phát triển"
|
34
|
+
},
|
32
35
|
"fireworksai": {
|
33
36
|
"description": "Fireworks AI là nhà cung cấp dịch vụ mô hình ngôn ngữ cao cấp hàng đầu, tập trung vào gọi chức năng và xử lý đa phương thức. Mô hình mới nhất của họ, Firefunction V2, dựa trên Llama-3, được tối ưu hóa cho gọi chức năng, đối thoại và tuân theo chỉ dẫn. Mô hình ngôn ngữ hình ảnh FireLLaVA-13B hỗ trợ đầu vào hỗn hợp hình ảnh và văn bản. Các mô hình đáng chú ý khác bao gồm dòng Llama và dòng Mixtral, cung cấp hỗ trợ cho việc tuân theo và tạo ra chỉ dẫn đa ngôn ngữ hiệu quả."
|
34
37
|
},
|
@@ -484,6 +484,11 @@
|
|
484
484
|
"placeholder": "Nhập từ gợi ý tùy chỉnh",
|
485
485
|
"title": "Từ gợi ý tùy chỉnh"
|
486
486
|
},
|
487
|
+
"generationTopic": {
|
488
|
+
"label": "Mô hình đặt tên chủ đề vẽ AI",
|
489
|
+
"modelDesc": "Mô hình được chỉ định để tự động đặt tên chủ đề cho vẽ AI",
|
490
|
+
"title": "Tự động đặt tên chủ đề vẽ AI"
|
491
|
+
},
|
487
492
|
"helpInfo": "Khi tạo trợ lý mới, sẽ sử dụng cài đặt trợ lý mặc định làm giá trị mặc định.",
|
488
493
|
"historyCompress": {
|
489
494
|
"label": "Mô hình lịch sử cuộc trò chuyện",
|
@@ -183,6 +183,7 @@
|
|
183
183
|
},
|
184
184
|
"fullscreen": "全屏模式",
|
185
185
|
"historyRange": "历史范围",
|
186
|
+
"import": "导入",
|
186
187
|
"importData": "导入数据",
|
187
188
|
"importModal": {
|
188
189
|
"error": {
|
@@ -324,6 +325,7 @@
|
|
324
325
|
}
|
325
326
|
},
|
326
327
|
"tab": {
|
328
|
+
"aiImage": "AI 绘画",
|
327
329
|
"chat": "会话",
|
328
330
|
"discover": "发现",
|
329
331
|
"files": "文件",
|
@@ -68,6 +68,22 @@
|
|
68
68
|
"GoBack": {
|
69
69
|
"back": "返回"
|
70
70
|
},
|
71
|
+
"ImageUpload": {
|
72
|
+
"actions": {
|
73
|
+
"changeImage": "点击更换图片"
|
74
|
+
},
|
75
|
+
"placeholder": {
|
76
|
+
"primary": "添加图片",
|
77
|
+
"secondary": "点击上传"
|
78
|
+
}
|
79
|
+
},
|
80
|
+
"KeyValueEditor": {
|
81
|
+
"addButton": "新增一行",
|
82
|
+
"deleteTooltip": "删除",
|
83
|
+
"duplicateKeyError": "键名必须唯一",
|
84
|
+
"keyPlaceholder": "键",
|
85
|
+
"valuePlaceholder": "值"
|
86
|
+
},
|
71
87
|
"MaxTokenSlider": {
|
72
88
|
"unlimited": "无限制"
|
73
89
|
},
|
@@ -91,6 +107,25 @@
|
|
91
107
|
"provider": "服务商",
|
92
108
|
"title": "模型"
|
93
109
|
},
|
110
|
+
"MultiImagesUpload": {
|
111
|
+
"actions": {
|
112
|
+
"uploadMore": "点击上传更多"
|
113
|
+
},
|
114
|
+
"modal": {
|
115
|
+
"complete": "完成",
|
116
|
+
"newFileIndicator": "新增",
|
117
|
+
"selectImageToPreview": "请选择要预览的图片",
|
118
|
+
"title": "管理图片 ({{count}})",
|
119
|
+
"upload": "上传图片"
|
120
|
+
},
|
121
|
+
"placeholder": {
|
122
|
+
"primary": "点击上传图片",
|
123
|
+
"secondary": "支持多张图片选择"
|
124
|
+
},
|
125
|
+
"progress": {
|
126
|
+
"uploadingWithCount": "{{completed}}/{{total}} 已上传"
|
127
|
+
}
|
128
|
+
},
|
94
129
|
"OllamaSetupGuide": {
|
95
130
|
"action": {
|
96
131
|
"close": "关闭提示",
|
package/locales/zh-CN/error.json
CHANGED
@@ -123,6 +123,7 @@
|
|
123
123
|
"stt": {
|
124
124
|
"responseError": "服务请求失败,请检查配置或重试"
|
125
125
|
},
|
126
|
+
"testConnectionFailed": "测试连接失败:{{error}}",
|
126
127
|
"tts": {
|
127
128
|
"responseError": "服务请求失败,请检查配置或重试"
|
128
129
|
},
|
@@ -130,6 +131,7 @@
|
|
130
131
|
"addProxyUrl": "添加 OpenAI 代理地址(可选)",
|
131
132
|
"apiKey": {
|
132
133
|
"description": "输入你的 {{name}} API Key 即可开始会话",
|
134
|
+
"imageGenerationDescription": "输入你的 {{name}} API Key 即可开始生成",
|
133
135
|
"title": "使用自定义 {{name}} API Key"
|
134
136
|
},
|
135
137
|
"closeMessage": "关闭提示",
|
@@ -0,0 +1,100 @@
|
|
1
|
+
{
|
2
|
+
"config": {
|
3
|
+
"aspectRatio": {
|
4
|
+
"label": "宽高比",
|
5
|
+
"lock": "锁定宽高比",
|
6
|
+
"unlock": "解锁宽高比"
|
7
|
+
},
|
8
|
+
"header": {
|
9
|
+
"desc": "简单描述,即刻创作",
|
10
|
+
"title": "绘画"
|
11
|
+
},
|
12
|
+
"height": {
|
13
|
+
"label": "高度"
|
14
|
+
},
|
15
|
+
"imageNum": {
|
16
|
+
"label": "图片数量"
|
17
|
+
},
|
18
|
+
"imageUrl": {
|
19
|
+
"label": "参考图"
|
20
|
+
},
|
21
|
+
"imageUrls": {
|
22
|
+
"label": "参考图"
|
23
|
+
},
|
24
|
+
"model": {
|
25
|
+
"label": "模型"
|
26
|
+
},
|
27
|
+
"prompt": {
|
28
|
+
"placeholder": "描述你想要生成的内容"
|
29
|
+
},
|
30
|
+
"seed": {
|
31
|
+
"label": "种子",
|
32
|
+
"random": "随机种子"
|
33
|
+
},
|
34
|
+
"size": {
|
35
|
+
"label": "尺寸"
|
36
|
+
},
|
37
|
+
"steps": {
|
38
|
+
"label": "步数"
|
39
|
+
},
|
40
|
+
"title": "AI 绘画",
|
41
|
+
"width": {
|
42
|
+
"label": "宽度"
|
43
|
+
}
|
44
|
+
},
|
45
|
+
"generation": {
|
46
|
+
"actions": {
|
47
|
+
"applySeed": "应用种子",
|
48
|
+
"copyError": "复制错误信息",
|
49
|
+
"copyPrompt": "复制提示词",
|
50
|
+
"copySeed": "复制种子",
|
51
|
+
"delete": "删除",
|
52
|
+
"deleteBatch": "删除批次",
|
53
|
+
"download": "下载",
|
54
|
+
"downloadFailed": "下载图片失败,请检查网络连接或 S3 存储服务的跨域配置",
|
55
|
+
"errorCopied": "错误信息已复制到剪贴板",
|
56
|
+
"errorCopyFailed": "复制错误信息失败",
|
57
|
+
"generate": "生成",
|
58
|
+
"promptCopied": "提示词已复制到剪贴板",
|
59
|
+
"promptCopyFailed": "复制提示词失败",
|
60
|
+
"reuseSettings": "复用设置",
|
61
|
+
"seedApplied": "种子已应用到配置",
|
62
|
+
"seedApplyFailed": "应用种子失败",
|
63
|
+
"seedCopied": "种子已复制到剪贴板",
|
64
|
+
"seedCopyFailed": "复制种子失败"
|
65
|
+
},
|
66
|
+
"metadata": {
|
67
|
+
"count": "{{count}} 张图片"
|
68
|
+
},
|
69
|
+
"status": {
|
70
|
+
"failed": "生成失败",
|
71
|
+
"generating": "生成中..."
|
72
|
+
}
|
73
|
+
},
|
74
|
+
"notSupportGuide": {
|
75
|
+
"desc": "当前部署实例为客户端数据库模式,无法使用 AI 图像生成功能。请切换到<1>服务端数据库部署模式</1>,或直接使用 <3>LobeChat Cloud</3>",
|
76
|
+
"features": {
|
77
|
+
"fileIntegration": {
|
78
|
+
"desc": "与文件管理系统深度整合,生成的图片自动保存到文件系统,支持统一管理和组织",
|
79
|
+
"title": "文件系统互通"
|
80
|
+
},
|
81
|
+
"llmAssisted": {
|
82
|
+
"desc": "结合大语言模型能力,智能优化和扩展提示词,提升图像生成质量(Coming Soon)",
|
83
|
+
"title": "LLM 辅助生图"
|
84
|
+
},
|
85
|
+
"multiProviders": {
|
86
|
+
"desc": "支持多种 AI 绘画服务商,包括 OpenAI gpt-image-1、Google Imagen、FAL.ai 等,提供丰富的模型选择",
|
87
|
+
"title": "多 Providers 支持"
|
88
|
+
}
|
89
|
+
},
|
90
|
+
"title": "当前部署模式不支持 AI 绘画"
|
91
|
+
},
|
92
|
+
"topic": {
|
93
|
+
"createNew": "新建主题",
|
94
|
+
"deleteConfirm": "删除生成主题",
|
95
|
+
"deleteConfirmDesc": "即将删除该生成主题,删除后将不可恢复,请谨慎操作。",
|
96
|
+
"empty": "暂无生成主题",
|
97
|
+
"title": "绘画主题",
|
98
|
+
"untitled": "默认主题"
|
99
|
+
}
|
100
|
+
}
|
@@ -32,6 +32,10 @@
|
|
32
32
|
"search": "搜索",
|
33
33
|
"title": "发现"
|
34
34
|
},
|
35
|
+
"image": {
|
36
|
+
"description": "{{appName}} 带给你最好的 GPT Image, Flux, Midjourney, Stable Diffusion 使用体验",
|
37
|
+
"title": "AI 绘画"
|
38
|
+
},
|
35
39
|
"plugins": {
|
36
40
|
"description": "搜素、图表生成、学术、图像生成、视频生成、语音生成、自动化工作流,定制 ChatGPT / Claude 专属的 ToolCall 插件能力",
|
37
41
|
"title": "插件市场"
|
@@ -66,6 +66,7 @@
|
|
66
66
|
"customRegion": "自定义服务区域",
|
67
67
|
"customSessionToken": "自定义 Session Token",
|
68
68
|
"description": "输入你的 AWS AccessKeyId / SecretAccessKey 即可开始会话。应用不会记录你的鉴权配置",
|
69
|
+
"imageGenerationDescription": "输入你的 AWS AccessKeyId / SecretAccessKey 即可开始生成。应用不会记录你的鉴权配置",
|
69
70
|
"title": "使用自定义 Bedrock 鉴权信息"
|
70
71
|
}
|
71
72
|
},
|
@@ -1019,6 +1019,15 @@
|
|
1019
1019
|
"ernie-x1-turbo-32k": {
|
1020
1020
|
"description": "与ERNIE-X1-32K相比,模型效果和性能更好。"
|
1021
1021
|
},
|
1022
|
+
"flux-kontext/dev": {
|
1023
|
+
"description": "Frontier image editing model."
|
1024
|
+
},
|
1025
|
+
"flux-pro/kontext": {
|
1026
|
+
"description": "FLUX.1 Kontext [pro] 能够处理文本和参考图像作为输入,无缝实现目标性的局部编辑和复杂的整体场景变换。"
|
1027
|
+
},
|
1028
|
+
"flux/schnell": {
|
1029
|
+
"description": "FLUX.1 [schnell] 是一个拥有120亿参数的流式转换器模型,能够在1到4步内从文本生成高质量图像,适合个人和商业用途。"
|
1030
|
+
},
|
1022
1031
|
"gemini-1.0-pro-001": {
|
1023
1032
|
"description": "Gemini 1.0 Pro 001 (Tuning) 提供稳定并可调优的性能,是复杂任务解决方案的理想选择。"
|
1024
1033
|
},
|
@@ -1364,6 +1373,9 @@
|
|
1364
1373
|
"gpt-4o-transcribe": {
|
1365
1374
|
"description": "GPT-4o Transcribe 是一种使用 GPT-4o 转录音频的语音转文本模型。与原始 Whisper 模型相比,它提高了单词错误率,并提高了语言识别和准确性。使用它来获得更准确的转录。"
|
1366
1375
|
},
|
1376
|
+
"gpt-image-1": {
|
1377
|
+
"description": "ChatGPT 原生多模态图片生成模型"
|
1378
|
+
},
|
1367
1379
|
"grok-2-1212": {
|
1368
1380
|
"description": "该模型在准确性、指令遵循和多语言能力方面有所改进。"
|
1369
1381
|
},
|
@@ -1484,6 +1496,9 @@
|
|
1484
1496
|
"hunyuan-vision": {
|
1485
1497
|
"description": "混元最新多模态模型,支持图片+文本输入生成文本内容。"
|
1486
1498
|
},
|
1499
|
+
"imagen4/preview": {
|
1500
|
+
"description": "Google 最高质量的图像生成模型"
|
1501
|
+
},
|
1487
1502
|
"internlm/internlm2_5-7b-chat": {
|
1488
1503
|
"description": "InternLM2.5-7B-Chat 是一个开源的对话模型,基于 InternLM2 架构开发。该 7B 参数规模的模型专注于对话生成任务,支持中英双语交互。模型采用了最新的训练技术,旨在提供流畅、智能的对话体验。InternLM2.5-7B-Chat 适用于各种对话应用场景,包括但不限于智能客服、个人助手等领域"
|
1489
1504
|
},
|
@@ -57,12 +57,28 @@
|
|
57
57
|
}
|
58
58
|
},
|
59
59
|
"mcp": {
|
60
|
+
"advanced": {
|
61
|
+
"title": "高级设置"
|
62
|
+
},
|
60
63
|
"args": {
|
61
64
|
"desc": "传递给执行命令的参数列表,一般在这里输入 MCP 服务器名称,或启动脚本路径",
|
62
65
|
"label": "命令参数",
|
63
66
|
"placeholder": "例如:mcp-hello-world",
|
64
67
|
"required": "请输入启动参数"
|
65
68
|
},
|
69
|
+
"auth": {
|
70
|
+
"bear": "API Key",
|
71
|
+
"desc": "选择 MCP 服务器的认证方式",
|
72
|
+
"label": "认证类型",
|
73
|
+
"none": "无需认证",
|
74
|
+
"placeholder": "请选择认证类型",
|
75
|
+
"token": {
|
76
|
+
"desc": "输入你的 API Key 或 Bearer Token",
|
77
|
+
"label": "API Key",
|
78
|
+
"placeholder": "sk-xxxxx",
|
79
|
+
"required": "请输入认证令牌"
|
80
|
+
}
|
81
|
+
},
|
66
82
|
"avatar": {
|
67
83
|
"label": "插件图标"
|
68
84
|
},
|
@@ -90,6 +106,11 @@
|
|
90
106
|
"label": "MCP Server 环境变量",
|
91
107
|
"stringifyError": "无法序列化参数,请检查参数格式"
|
92
108
|
},
|
109
|
+
"headers": {
|
110
|
+
"add": "新增一行",
|
111
|
+
"desc": "输入请求头",
|
112
|
+
"label": "HTTP Headers"
|
113
|
+
},
|
93
114
|
"identifier": {
|
94
115
|
"desc": "为你的 MCP 插件指定一个名称,需要使用英文字符",
|
95
116
|
"invalid": "标识符只能包含字母、数字、连字符和下划线",
|
@@ -269,6 +290,7 @@
|
|
269
290
|
"showDetails": "查看详情"
|
270
291
|
},
|
271
292
|
"errorTypes": {
|
293
|
+
"AUTHORIZATION_ERROR": "授权验证错误",
|
272
294
|
"CONNECTION_FAILED": "连接失败",
|
273
295
|
"INITIALIZATION_TIMEOUT": "初始化超时",
|
274
296
|
"PROCESS_SPAWN_ERROR": "进程启动失败",
|
@@ -29,6 +29,9 @@
|
|
29
29
|
"deepseek": {
|
30
30
|
"description": "DeepSeek 是一家专注于人工智能技术研究和应用的公司,其最新模型 DeepSeek-V3 多项评测成绩超越 Qwen2.5-72B 和 Llama-3.1-405B 等开源模型,性能对齐领军闭源模型 GPT-4o 与 Claude-3.5-Sonnet。"
|
31
31
|
},
|
32
|
+
"fal": {
|
33
|
+
"description": "面向开发者的生成式媒体平台"
|
34
|
+
},
|
32
35
|
"fireworksai": {
|
33
36
|
"description": "Fireworks AI 是一家领先的高级语言模型服务商,专注于功能调用和多模态处理。其最新模型 Firefunction V2 基于 Llama-3,优化用于函数调用、对话及指令跟随。视觉语言模型 FireLLaVA-13B 支持图像和文本混合输入。其他 notable 模型包括 Llama 系列和 Mixtral 系列,提供高效的多语言指令跟随与生成支持。"
|
34
37
|
},
|
@@ -484,6 +484,11 @@
|
|
484
484
|
"placeholder": "请输入自定义提示词",
|
485
485
|
"title": "自定义提示词"
|
486
486
|
},
|
487
|
+
"generationTopic": {
|
488
|
+
"label": "AI 绘画话题命名模型",
|
489
|
+
"modelDesc": "指定用于 AI 绘画自动命名话题的模型",
|
490
|
+
"title": "AI 绘画自动命名话题"
|
491
|
+
},
|
487
492
|
"helpInfo": "当创建新助手时,将以默认助手设置作为预设值。",
|
488
493
|
"historyCompress": {
|
489
494
|
"label": "会话历史模型",
|
@@ -183,6 +183,7 @@
|
|
183
183
|
},
|
184
184
|
"fullscreen": "全螢幕模式",
|
185
185
|
"historyRange": "歷史範圍",
|
186
|
+
"import": "匯入",
|
186
187
|
"importData": "匯入資料",
|
187
188
|
"importModal": {
|
188
189
|
"error": {
|
@@ -324,6 +325,7 @@
|
|
324
325
|
}
|
325
326
|
},
|
326
327
|
"tab": {
|
328
|
+
"aiImage": "AI 繪畫",
|
327
329
|
"chat": "對話",
|
328
330
|
"discover": "發現",
|
329
331
|
"files": "檔案",
|
@@ -68,6 +68,22 @@
|
|
68
68
|
"GoBack": {
|
69
69
|
"back": "返回"
|
70
70
|
},
|
71
|
+
"ImageUpload": {
|
72
|
+
"actions": {
|
73
|
+
"changeImage": "點擊更換圖片"
|
74
|
+
},
|
75
|
+
"placeholder": {
|
76
|
+
"primary": "新增圖片",
|
77
|
+
"secondary": "點擊上傳"
|
78
|
+
}
|
79
|
+
},
|
80
|
+
"KeyValueEditor": {
|
81
|
+
"addButton": "新增一行",
|
82
|
+
"deleteTooltip": "刪除",
|
83
|
+
"duplicateKeyError": "鍵名必須唯一",
|
84
|
+
"keyPlaceholder": "鍵",
|
85
|
+
"valuePlaceholder": "值"
|
86
|
+
},
|
71
87
|
"MaxTokenSlider": {
|
72
88
|
"unlimited": "無限制"
|
73
89
|
},
|
@@ -91,6 +107,25 @@
|
|
91
107
|
"provider": "提供商",
|
92
108
|
"title": "模型"
|
93
109
|
},
|
110
|
+
"MultiImagesUpload": {
|
111
|
+
"actions": {
|
112
|
+
"uploadMore": "點擊上傳更多"
|
113
|
+
},
|
114
|
+
"modal": {
|
115
|
+
"complete": "完成",
|
116
|
+
"newFileIndicator": "新增",
|
117
|
+
"selectImageToPreview": "請選擇要預覽的圖片",
|
118
|
+
"title": "管理圖片 ({{count}})",
|
119
|
+
"upload": "上傳圖片"
|
120
|
+
},
|
121
|
+
"placeholder": {
|
122
|
+
"primary": "點擊上傳圖片",
|
123
|
+
"secondary": "支援多張圖片選擇"
|
124
|
+
},
|
125
|
+
"progress": {
|
126
|
+
"uploadingWithCount": "{{completed}}/{{total}} 已上傳"
|
127
|
+
}
|
128
|
+
},
|
94
129
|
"OllamaSetupGuide": {
|
95
130
|
"action": {
|
96
131
|
"close": "關閉提示",
|
package/locales/zh-TW/error.json
CHANGED
@@ -123,6 +123,7 @@
|
|
123
123
|
"stt": {
|
124
124
|
"responseError": "服務請求失敗,請檢查配置或重試"
|
125
125
|
},
|
126
|
+
"testConnectionFailed": "測試連線失敗:{{error}}",
|
126
127
|
"tts": {
|
127
128
|
"responseError": "服務請求失敗,請檢查配置或重試"
|
128
129
|
},
|
@@ -130,6 +131,7 @@
|
|
130
131
|
"addProxyUrl": "新增 OpenAI 代理網址(選填)",
|
131
132
|
"apiKey": {
|
132
133
|
"description": "輸入您的 {{name}} API 金鑰即可開始會話",
|
134
|
+
"imageGenerationDescription": "輸入你的 {{name}} API Key 即可開始生成",
|
133
135
|
"title": "使用自定義 {{name}} API 金鑰"
|
134
136
|
},
|
135
137
|
"closeMessage": "關閉提示",
|