@lobehub/chat 1.98.2 → 1.99.1
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 +44 -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/appBrowsers.ts +1 -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/BrowserManager.ts +5 -2
- 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 +14 -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 +44 -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 +154 -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 +157 -1
- package/src/database/repositories/aiInfra/index.ts +37 -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 +2 -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 +31 -6
- 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 +2 -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
@@ -1,6 +1,6 @@
|
|
1
1
|
// copy from https://github.com/kirill-konshin/next-electron-rsc
|
2
2
|
import { serialize as serializeCookie } from 'cookie';
|
3
|
-
import type
|
3
|
+
import { type Protocol, type Session, protocol } from 'electron';
|
4
4
|
import type { NextConfig } from 'next';
|
5
5
|
import type NextNodeServer from 'next/dist/server/next-server';
|
6
6
|
import assert from 'node:assert';
|
@@ -11,6 +11,7 @@ import { parse } from 'node:url';
|
|
11
11
|
import resolve from 'resolve';
|
12
12
|
import { parse as parseCookie, splitCookiesString } from 'set-cookie-parser';
|
13
13
|
|
14
|
+
import { LOCAL_STORAGE_URL_PREFIX } from '@/const/dir';
|
14
15
|
import { isDev } from '@/const/env';
|
15
16
|
import { createLogger } from '@/utils/logger';
|
16
17
|
|
@@ -178,7 +179,9 @@ export function createHandler({
|
|
178
179
|
}
|
179
180
|
};
|
180
181
|
}
|
182
|
+
|
181
183
|
let registerProtocolHandle = false;
|
184
|
+
let interceptorCount = 0; // 追踪活跃的拦截器数量
|
182
185
|
|
183
186
|
protocol.registerSchemesAsPrivileged([
|
184
187
|
{
|
@@ -224,6 +227,14 @@ export function createHandler({
|
|
224
227
|
socket: Socket,
|
225
228
|
): Promise<Response> => {
|
226
229
|
try {
|
230
|
+
// 检查是否是本地文件服务请求,如果是则跳过处理
|
231
|
+
const url = new URL(request.url);
|
232
|
+
if (url.pathname.startsWith(LOCAL_STORAGE_URL_PREFIX + '/')) {
|
233
|
+
if (debug) logger.debug(`Skipping local file service request: ${request.url}`);
|
234
|
+
// 直接使用 fetch 转发请求到本地文件服务
|
235
|
+
return fetch(request);
|
236
|
+
}
|
237
|
+
|
227
238
|
// 先尝试使用自定义处理器处理请求
|
228
239
|
for (const customHandler of customHandlers) {
|
229
240
|
try {
|
@@ -354,19 +365,32 @@ export function createHandler({
|
|
354
365
|
);
|
355
366
|
|
356
367
|
const socket = new Socket();
|
368
|
+
interceptorCount++; // 增加拦截器计数
|
357
369
|
|
358
370
|
const closeSocket = () => socket.end();
|
359
371
|
|
360
372
|
process.on('SIGTERM', () => closeSocket);
|
361
373
|
process.on('SIGINT', () => closeSocket);
|
362
374
|
|
363
|
-
if (!
|
375
|
+
if (!registerProtocolHandle) {
|
364
376
|
logger.debug(
|
365
377
|
`Registering HTTP protocol handler in ${isDev ? 'development' : 'production'} mode`,
|
366
378
|
);
|
367
379
|
protocol.handle('http', async (request) => {
|
368
380
|
if (!isDev) {
|
369
|
-
|
381
|
+
// 检查是否是本地文件服务请求,如果是则允许通过
|
382
|
+
const isLocalhost = request.url.startsWith(localhostUrl);
|
383
|
+
|
384
|
+
const url = new URL(request.url);
|
385
|
+
const isLocalIP =
|
386
|
+
request.url.startsWith('http://127.0.0.1:') ||
|
387
|
+
request.url.startsWith('http://localhost:');
|
388
|
+
const isLocalFileService = url.pathname.startsWith(LOCAL_STORAGE_URL_PREFIX + '/');
|
389
|
+
|
390
|
+
const valid = isLocalhost || (isLocalIP && isLocalFileService);
|
391
|
+
if (!valid) {
|
392
|
+
throw new Error('External HTTP not supported, use HTTPS');
|
393
|
+
}
|
370
394
|
}
|
371
395
|
|
372
396
|
return handleRequest(request, session, socket);
|
@@ -374,12 +398,19 @@ export function createHandler({
|
|
374
398
|
registerProtocolHandle = true;
|
375
399
|
}
|
376
400
|
|
401
|
+
logger.debug(`Active interceptors count: ${interceptorCount}`);
|
402
|
+
|
377
403
|
return function stopIntercept() {
|
378
|
-
|
379
|
-
|
404
|
+
interceptorCount--; // 减少拦截器计数
|
405
|
+
logger.debug(`Stopping interceptor, remaining count: ${interceptorCount}`);
|
406
|
+
|
407
|
+
// 只有当没有活跃的拦截器时才取消注册协议处理器
|
408
|
+
if (registerProtocolHandle && interceptorCount === 0) {
|
409
|
+
logger.debug('Unregistering HTTP protocol handler (no active interceptors)');
|
380
410
|
protocol.unhandle('http');
|
381
411
|
registerProtocolHandle = false;
|
382
412
|
}
|
413
|
+
|
383
414
|
process.off('SIGTERM', () => closeSocket);
|
384
415
|
process.off('SIGINT', () => closeSocket);
|
385
416
|
closeSocket();
|
package/changelog/v1.json
CHANGED
@@ -163,6 +163,7 @@ table files {
|
|
163
163
|
name text [not null]
|
164
164
|
size integer [not null]
|
165
165
|
url text [not null]
|
166
|
+
source text
|
166
167
|
client_id text
|
167
168
|
metadata jsonb
|
168
169
|
chunk_task_id uuid
|
@@ -218,6 +219,45 @@ table knowledge_bases {
|
|
218
219
|
}
|
219
220
|
}
|
220
221
|
|
222
|
+
table generation_batches {
|
223
|
+
id text [pk, not null]
|
224
|
+
user_id text [not null]
|
225
|
+
generation_topic_id text [not null]
|
226
|
+
provider text [not null]
|
227
|
+
model text [not null]
|
228
|
+
prompt text [not null]
|
229
|
+
width integer
|
230
|
+
height integer
|
231
|
+
ratio varchar(64)
|
232
|
+
config jsonb
|
233
|
+
accessed_at "timestamp with time zone" [not null, default: `now()`]
|
234
|
+
created_at "timestamp with time zone" [not null, default: `now()`]
|
235
|
+
updated_at "timestamp with time zone" [not null, default: `now()`]
|
236
|
+
}
|
237
|
+
|
238
|
+
table generation_topics {
|
239
|
+
id text [pk, not null]
|
240
|
+
user_id text [not null]
|
241
|
+
title text
|
242
|
+
cover_url text
|
243
|
+
accessed_at "timestamp with time zone" [not null, default: `now()`]
|
244
|
+
created_at "timestamp with time zone" [not null, default: `now()`]
|
245
|
+
updated_at "timestamp with time zone" [not null, default: `now()`]
|
246
|
+
}
|
247
|
+
|
248
|
+
table generations {
|
249
|
+
id text [pk, not null]
|
250
|
+
user_id text [not null]
|
251
|
+
generation_batch_id varchar(64) [not null]
|
252
|
+
async_task_id uuid
|
253
|
+
file_id text
|
254
|
+
seed integer
|
255
|
+
asset jsonb
|
256
|
+
accessed_at "timestamp with time zone" [not null, default: `now()`]
|
257
|
+
created_at "timestamp with time zone" [not null, default: `now()`]
|
258
|
+
updated_at "timestamp with time zone" [not null, default: `now()`]
|
259
|
+
}
|
260
|
+
|
221
261
|
table message_chunks {
|
222
262
|
message_id text
|
223
263
|
chunk_id uuid
|
@@ -834,6 +874,10 @@ table users {
|
|
834
874
|
updated_at "timestamp with time zone" [not null, default: `now()`]
|
835
875
|
}
|
836
876
|
|
877
|
+
ref: agents_files.file_id > files.id
|
878
|
+
|
879
|
+
ref: agents_files.agent_id > agents.id
|
880
|
+
|
837
881
|
ref: agents_knowledge_bases.knowledge_base_id - knowledge_bases.id
|
838
882
|
|
839
883
|
ref: agents_knowledge_bases.agent_id > agents.id
|
@@ -848,8 +892,34 @@ ref: document_chunks.document_id > documents.id
|
|
848
892
|
|
849
893
|
ref: documents.file_id > files.id
|
850
894
|
|
895
|
+
ref: file_chunks.file_id - files.id
|
896
|
+
|
897
|
+
ref: file_chunks.chunk_id - chunks.id
|
898
|
+
|
899
|
+
ref: generations.file_id - files.id
|
900
|
+
|
851
901
|
ref: files.embedding_task_id - async_tasks.id
|
852
902
|
|
903
|
+
ref: files_to_sessions.file_id > files.id
|
904
|
+
|
905
|
+
ref: files_to_sessions.session_id > sessions.id
|
906
|
+
|
907
|
+
ref: generation_batches.user_id - users.id
|
908
|
+
|
909
|
+
ref: generation_batches.generation_topic_id > generation_topics.id
|
910
|
+
|
911
|
+
ref: generation_topics.user_id - users.id
|
912
|
+
|
913
|
+
ref: generations.user_id - users.id
|
914
|
+
|
915
|
+
ref: generations.generation_batch_id > generation_batches.id
|
916
|
+
|
917
|
+
ref: generations.async_task_id - async_tasks.id
|
918
|
+
|
919
|
+
ref: messages_files.file_id > files.id
|
920
|
+
|
921
|
+
ref: messages_files.message_id > messages.id
|
922
|
+
|
853
923
|
ref: messages.session_id - sessions.id
|
854
924
|
|
855
925
|
ref: messages.parent_id - messages.id
|
package/locales/ar/common.json
CHANGED
@@ -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": "الرسم بالذكاء الاصطناعي",
|
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/ar/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": "يمكنك بدء الجلسة عن طريق إدخال مفتاح API {{name}} الخاص بك",
|
134
|
+
"imageGenerationDescription": "أدخل مفتاح API الخاص بـ {{name}} للبدء في التوليد",
|
133
135
|
"title": "استخدام مفتاح API {{name}} المخصص"
|
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": "الرسم بالذكاء الاصطناعي",
|
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": "فشل تنزيل الصورة",
|
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": "الوحدة الحالية تعمل بنمط قاعدة بيانات العميل، ولا تدعم ميزة إنشاء الصور بالذكاء الاصطناعي. يرجى التبديل إلى <1>نمط نشر قاعدة بيانات الخادم</1>، أو استخدام <3>سحابة LobeChat</3> مباشرةً",
|
76
|
+
"features": {
|
77
|
+
"fileIntegration": {
|
78
|
+
"desc": "تكامل عميق مع نظام إدارة الملفات، حيث تُحفظ الصور المُنشأة تلقائيًا في نظام الملفات، مع دعم الإدارة والتنظيم الموحد",
|
79
|
+
"title": "تكامل نظام الملفات"
|
80
|
+
},
|
81
|
+
"llmAssisted": {
|
82
|
+
"desc": "يجمع بين قدرات نماذج اللغة الكبيرة لتحسين وتوسيع النصوص التوجيهية بذكاء، مما يعزز جودة إنشاء الصور (قريبًا)",
|
83
|
+
"title": "مساعدة نموذج اللغة الكبير"
|
84
|
+
},
|
85
|
+
"multiProviders": {
|
86
|
+
"desc": "يدعم عدة مزودي خدمات رسم بالذكاء الاصطناعي، بما في ذلك OpenAI gpt-image-1، Google Imagen، FAL.ai وغيرها، لتوفير خيارات نماذج متنوعة",
|
87
|
+
"title": "دعم مزودين متعددين"
|
88
|
+
}
|
89
|
+
},
|
90
|
+
"title": "نمط النشر الحالي لا يدعم الرسم بالذكاء الاصطناعي"
|
91
|
+
},
|
92
|
+
"topic": {
|
93
|
+
"createNew": "إنشاء موضوع جديد",
|
94
|
+
"deleteConfirm": "تأكيد حذف الموضوع",
|
95
|
+
"deleteConfirmDesc": "سيتم حذف هذا الموضوع نهائيًا ولن يمكن استعادته، يرجى توخي الحذر.",
|
96
|
+
"empty": "لا توجد مواضيع تم إنشاؤها",
|
97
|
+
"title": "موضوع الرسم",
|
98
|
+
"untitled": "الموضوع الافتراضي"
|
99
|
+
}
|
100
|
+
}
|
package/locales/ar/metadata.json
CHANGED
@@ -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": "الرسم بالذكاء الاصطناعي"
|
38
|
+
},
|
35
39
|
"plugins": {
|
36
40
|
"description": "البحث، توليد الرسوم البيانية، الأكاديميات، توليد الصور، توليد الفيديو، توليد الصوت، سير العمل الآلي، خصص قدرات ToolCall الخاصة بـ ChatGPT / Claude",
|
37
41
|
"title": "سوق الإضافات"
|
@@ -66,6 +66,7 @@
|
|
66
66
|
"customRegion": "منطقة خدمة مخصصة",
|
67
67
|
"customSessionToken": "رمز الجلسة المخصص",
|
68
68
|
"description": "أدخل معرف الوصول / مفتاح الوصول السري الخاص بك في AWS لبدء الجلسة. لن يتم تسجيل تكوين المصادقة الخاص بك من قبل التطبيق",
|
69
|
+
"imageGenerationDescription": "أدخل AWS AccessKeyId / SecretAccessKey الخاص بك للبدء في التوليد. التطبيق لن يقوم بتسجيل إعدادات المصادقة الخاصة بك",
|
69
70
|
"title": "استخدام معلومات المصادقة الخاصة بـ Bedrock المخصصة"
|
70
71
|
}
|
71
72
|
},
|
package/locales/ar/models.json
CHANGED
@@ -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."
|
1024
|
+
},
|
1025
|
+
"flux-pro/kontext": {
|
1026
|
+
"description": "FLUX.1 Kontext [pro] قادر على معالجة النصوص والصور المرجعية كمدخلات، مما يتيح تحريرًا محليًا مستهدفًا وتحولات معقدة للمشهد الكلي بسلاسة."
|
1027
|
+
},
|
1028
|
+
"flux/schnell": {
|
1029
|
+
"description": "FLUX.1 [schnell] هو نموذج محول متدفق يحتوي على 12 مليار معلمة، قادر على توليد صور عالية الجودة من النص في 1 إلى 4 خطوات، مناسب للاستخدام الشخصي والتجاري."
|
1030
|
+
},
|
1022
1031
|
"gemini-1.0-pro-001": {
|
1023
1032
|
"description": "Gemini 1.0 Pro 001 (تعديل) يوفر أداءً مستقرًا وقابلًا للتعديل، وهو الخيار المثالي لحلول المهام المعقدة."
|
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": "نموذج Hunyuan الأحدث متعدد الوسائط، يدعم إدخال الصور والنصوص لتوليد محتوى نصي."
|
1486
1498
|
},
|
1499
|
+
"imagen4/preview": {
|
1500
|
+
"description": "نموذج توليد الصور الأعلى جودة من Google"
|
1501
|
+
},
|
1487
1502
|
"internlm/internlm2_5-7b-chat": {
|
1488
1503
|
"description": "InternLM2.5 يوفر حلول حوار ذكية في عدة سيناريوهات."
|
1489
1504
|
},
|
package/locales/ar/plugin.json
CHANGED
@@ -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": "على سبيل المثال: --port 8080 --debug",
|
64
67
|
"required": "يرجى إدخال معلمات التشغيل"
|
65
68
|
},
|
69
|
+
"auth": {
|
70
|
+
"bear": "مفتاح API",
|
71
|
+
"desc": "اختر طريقة التوثيق لخادم MCP",
|
72
|
+
"label": "نوع التوثيق",
|
73
|
+
"none": "لا حاجة للتوثيق",
|
74
|
+
"placeholder": "يرجى اختيار نوع التوثيق",
|
75
|
+
"token": {
|
76
|
+
"desc": "أدخل مفتاح API أو رمز الحامل الخاص بك",
|
77
|
+
"label": "مفتاح API",
|
78
|
+
"placeholder": "sk-xxxxx",
|
79
|
+
"required": "يرجى إدخال رمز التوثيق"
|
80
|
+
}
|
81
|
+
},
|
66
82
|
"avatar": {
|
67
83
|
"label": "أيقونة الإضافة"
|
68
84
|
},
|
@@ -90,6 +106,11 @@
|
|
90
106
|
"label": "متغيرات البيئة لخادم MCP",
|
91
107
|
"stringifyError": "تعذر تسلسل المعلمات، يرجى التحقق من تنسيق المعلمات"
|
92
108
|
},
|
109
|
+
"headers": {
|
110
|
+
"add": "أضف صفًا جديدًا",
|
111
|
+
"desc": "أدخل رؤوس الطلب",
|
112
|
+
"label": "رؤوس HTTP"
|
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-V2.5 بين قدرات الحوار العامة ومعالجة الشيفرات، وقد حقق تحسينات ملحوظة في محاذاة تفضيلات البشر، ومهام الكتابة، واتباع التعليمات."
|
31
31
|
},
|
32
|
+
"fal": {
|
33
|
+
"description": "منصة وسائط توليدية موجهة للمطورين"
|
34
|
+
},
|
32
35
|
"fireworksai": {
|
33
36
|
"description": "Fireworks AI هي شركة رائدة في تقديم خدمات نماذج اللغة المتقدمة، تركز على استدعاء الوظائف والمعالجة متعددة الوسائط. نموذجها الأحدث Firefunction V2 مبني على Llama-3، مُحسّن لاستدعاء الوظائف، والحوار، واتباع التعليمات. يدعم نموذج اللغة البصرية FireLLaVA-13B إدخال الصور والنصوص المختلطة. تشمل النماذج البارزة الأخرى سلسلة Llama وسلسلة Mixtral، مما يوفر دعمًا فعالًا لاتباع التعليمات وتوليدها بلغات متعددة."
|
34
37
|
},
|
package/locales/ar/setting.json
CHANGED
@@ -484,6 +484,11 @@
|
|
484
484
|
"placeholder": "أدخل كلمة الموجه المخصصة",
|
485
485
|
"title": "كلمة الموجه المخصصة"
|
486
486
|
},
|
487
|
+
"generationTopic": {
|
488
|
+
"label": "نموذج تسمية موضوع الرسم بالذكاء الاصطناعي",
|
489
|
+
"modelDesc": "نموذج مخصص لتسمية موضوعات الرسم بالذكاء الاصطناعي تلقائيًا",
|
490
|
+
"title": "تسمية موضوعات الرسم بالذكاء الاصطناعي تلقائيًا"
|
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/bg-BG/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": "Добавете URL адрес на OpenAI прокси (по избор)",
|
131
132
|
"apiKey": {
|
132
133
|
"description": "Въведете вашия {{name}} API ключ, за да започнете сесия",
|
134
|
+
"imageGenerationDescription": "Въведете своя {{name}} API ключ, за да започнете генерирането",
|
133
135
|
"title": "Използване на персонализиран {{name}} API ключ"
|
134
136
|
},
|
135
137
|
"closeMessage": "Затвори съобщението",
|