@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.
Files changed (456) hide show
  1. package/.cursor/rules/backend-architecture.mdc +93 -17
  2. package/.cursor/rules/cursor-ux.mdc +45 -35
  3. package/.cursor/rules/project-introduce.mdc +72 -6
  4. package/.cursor/rules/rules-attach.mdc +16 -7
  5. package/.eslintrc.js +10 -0
  6. package/CHANGELOG.md +27 -0
  7. package/apps/desktop/README.md +7 -0
  8. package/apps/desktop/electron-builder.js +5 -0
  9. package/apps/desktop/package.json +2 -1
  10. package/apps/desktop/src/main/const/dir.ts +3 -0
  11. package/apps/desktop/src/main/controllers/UploadFileCtr.ts +13 -8
  12. package/apps/desktop/src/main/core/App.ts +8 -0
  13. package/apps/desktop/src/main/core/StaticFileServerManager.ts +221 -0
  14. package/apps/desktop/src/main/services/fileSrv.ts +231 -44
  15. package/apps/desktop/src/main/utils/next-electron-rsc.ts +36 -5
  16. package/changelog/v1.json +9 -0
  17. package/docs/development/database-schema.dbml +70 -0
  18. package/locales/ar/common.json +2 -0
  19. package/locales/ar/components.json +35 -0
  20. package/locales/ar/error.json +2 -0
  21. package/locales/ar/image.json +100 -0
  22. package/locales/ar/metadata.json +4 -0
  23. package/locales/ar/modelProvider.json +1 -0
  24. package/locales/ar/models.json +15 -0
  25. package/locales/ar/plugin.json +22 -0
  26. package/locales/ar/providers.json +3 -0
  27. package/locales/ar/setting.json +5 -0
  28. package/locales/bg-BG/common.json +2 -0
  29. package/locales/bg-BG/components.json +35 -0
  30. package/locales/bg-BG/error.json +2 -0
  31. package/locales/bg-BG/image.json +100 -0
  32. package/locales/bg-BG/metadata.json +4 -0
  33. package/locales/bg-BG/modelProvider.json +1 -0
  34. package/locales/bg-BG/models.json +15 -0
  35. package/locales/bg-BG/plugin.json +22 -0
  36. package/locales/bg-BG/providers.json +3 -0
  37. package/locales/bg-BG/setting.json +5 -0
  38. package/locales/de-DE/common.json +2 -0
  39. package/locales/de-DE/components.json +35 -0
  40. package/locales/de-DE/error.json +2 -0
  41. package/locales/de-DE/image.json +100 -0
  42. package/locales/de-DE/metadata.json +4 -0
  43. package/locales/de-DE/modelProvider.json +1 -0
  44. package/locales/de-DE/models.json +15 -0
  45. package/locales/de-DE/plugin.json +22 -0
  46. package/locales/de-DE/providers.json +3 -0
  47. package/locales/de-DE/setting.json +5 -0
  48. package/locales/en-US/common.json +2 -0
  49. package/locales/en-US/components.json +35 -0
  50. package/locales/en-US/error.json +2 -0
  51. package/locales/en-US/image.json +100 -0
  52. package/locales/en-US/metadata.json +4 -0
  53. package/locales/en-US/modelProvider.json +1 -0
  54. package/locales/en-US/models.json +15 -0
  55. package/locales/en-US/plugin.json +22 -0
  56. package/locales/en-US/providers.json +3 -0
  57. package/locales/en-US/setting.json +5 -0
  58. package/locales/es-ES/common.json +2 -0
  59. package/locales/es-ES/components.json +35 -0
  60. package/locales/es-ES/error.json +2 -0
  61. package/locales/es-ES/image.json +100 -0
  62. package/locales/es-ES/metadata.json +4 -0
  63. package/locales/es-ES/modelProvider.json +1 -0
  64. package/locales/es-ES/models.json +15 -0
  65. package/locales/es-ES/plugin.json +22 -0
  66. package/locales/es-ES/providers.json +3 -0
  67. package/locales/es-ES/setting.json +5 -0
  68. package/locales/fa-IR/common.json +2 -0
  69. package/locales/fa-IR/components.json +35 -0
  70. package/locales/fa-IR/error.json +2 -0
  71. package/locales/fa-IR/image.json +100 -0
  72. package/locales/fa-IR/metadata.json +4 -0
  73. package/locales/fa-IR/modelProvider.json +1 -0
  74. package/locales/fa-IR/models.json +15 -0
  75. package/locales/fa-IR/plugin.json +22 -0
  76. package/locales/fa-IR/providers.json +3 -0
  77. package/locales/fa-IR/setting.json +5 -0
  78. package/locales/fr-FR/common.json +2 -0
  79. package/locales/fr-FR/components.json +35 -0
  80. package/locales/fr-FR/error.json +2 -0
  81. package/locales/fr-FR/image.json +100 -0
  82. package/locales/fr-FR/metadata.json +4 -0
  83. package/locales/fr-FR/modelProvider.json +1 -0
  84. package/locales/fr-FR/models.json +15 -0
  85. package/locales/fr-FR/plugin.json +22 -0
  86. package/locales/fr-FR/providers.json +3 -0
  87. package/locales/fr-FR/setting.json +5 -0
  88. package/locales/it-IT/common.json +2 -0
  89. package/locales/it-IT/components.json +35 -0
  90. package/locales/it-IT/error.json +2 -0
  91. package/locales/it-IT/image.json +100 -0
  92. package/locales/it-IT/metadata.json +4 -0
  93. package/locales/it-IT/modelProvider.json +1 -0
  94. package/locales/it-IT/models.json +15 -0
  95. package/locales/it-IT/plugin.json +22 -0
  96. package/locales/it-IT/providers.json +3 -0
  97. package/locales/it-IT/setting.json +5 -0
  98. package/locales/ja-JP/common.json +2 -0
  99. package/locales/ja-JP/components.json +35 -0
  100. package/locales/ja-JP/error.json +2 -0
  101. package/locales/ja-JP/image.json +100 -0
  102. package/locales/ja-JP/metadata.json +4 -0
  103. package/locales/ja-JP/modelProvider.json +1 -0
  104. package/locales/ja-JP/models.json +15 -0
  105. package/locales/ja-JP/plugin.json +22 -0
  106. package/locales/ja-JP/providers.json +3 -0
  107. package/locales/ja-JP/setting.json +5 -0
  108. package/locales/ko-KR/common.json +2 -0
  109. package/locales/ko-KR/components.json +35 -0
  110. package/locales/ko-KR/error.json +2 -0
  111. package/locales/ko-KR/image.json +100 -0
  112. package/locales/ko-KR/metadata.json +4 -0
  113. package/locales/ko-KR/modelProvider.json +1 -0
  114. package/locales/ko-KR/models.json +15 -0
  115. package/locales/ko-KR/plugin.json +22 -0
  116. package/locales/ko-KR/providers.json +3 -0
  117. package/locales/ko-KR/setting.json +5 -0
  118. package/locales/nl-NL/common.json +2 -0
  119. package/locales/nl-NL/components.json +35 -0
  120. package/locales/nl-NL/error.json +2 -0
  121. package/locales/nl-NL/image.json +100 -0
  122. package/locales/nl-NL/metadata.json +4 -0
  123. package/locales/nl-NL/modelProvider.json +1 -0
  124. package/locales/nl-NL/models.json +15 -0
  125. package/locales/nl-NL/plugin.json +22 -0
  126. package/locales/nl-NL/providers.json +3 -0
  127. package/locales/nl-NL/setting.json +5 -0
  128. package/locales/pl-PL/common.json +2 -0
  129. package/locales/pl-PL/components.json +35 -0
  130. package/locales/pl-PL/error.json +2 -0
  131. package/locales/pl-PL/image.json +100 -0
  132. package/locales/pl-PL/metadata.json +4 -0
  133. package/locales/pl-PL/modelProvider.json +1 -0
  134. package/locales/pl-PL/models.json +15 -0
  135. package/locales/pl-PL/plugin.json +22 -0
  136. package/locales/pl-PL/providers.json +3 -0
  137. package/locales/pl-PL/setting.json +5 -0
  138. package/locales/pt-BR/common.json +2 -0
  139. package/locales/pt-BR/components.json +35 -0
  140. package/locales/pt-BR/error.json +2 -0
  141. package/locales/pt-BR/image.json +100 -0
  142. package/locales/pt-BR/metadata.json +4 -0
  143. package/locales/pt-BR/modelProvider.json +1 -0
  144. package/locales/pt-BR/models.json +15 -0
  145. package/locales/pt-BR/plugin.json +22 -0
  146. package/locales/pt-BR/providers.json +3 -0
  147. package/locales/pt-BR/setting.json +5 -0
  148. package/locales/ru-RU/common.json +2 -0
  149. package/locales/ru-RU/components.json +35 -0
  150. package/locales/ru-RU/error.json +2 -0
  151. package/locales/ru-RU/image.json +100 -0
  152. package/locales/ru-RU/metadata.json +4 -0
  153. package/locales/ru-RU/modelProvider.json +1 -0
  154. package/locales/ru-RU/models.json +15 -0
  155. package/locales/ru-RU/plugin.json +22 -0
  156. package/locales/ru-RU/providers.json +3 -0
  157. package/locales/ru-RU/setting.json +5 -0
  158. package/locales/tr-TR/common.json +2 -0
  159. package/locales/tr-TR/components.json +35 -0
  160. package/locales/tr-TR/error.json +2 -0
  161. package/locales/tr-TR/image.json +100 -0
  162. package/locales/tr-TR/metadata.json +4 -0
  163. package/locales/tr-TR/modelProvider.json +1 -0
  164. package/locales/tr-TR/models.json +15 -0
  165. package/locales/tr-TR/plugin.json +22 -0
  166. package/locales/tr-TR/providers.json +3 -0
  167. package/locales/tr-TR/setting.json +5 -0
  168. package/locales/vi-VN/common.json +2 -0
  169. package/locales/vi-VN/components.json +35 -0
  170. package/locales/vi-VN/error.json +2 -0
  171. package/locales/vi-VN/image.json +100 -0
  172. package/locales/vi-VN/metadata.json +4 -0
  173. package/locales/vi-VN/modelProvider.json +1 -0
  174. package/locales/vi-VN/models.json +15 -0
  175. package/locales/vi-VN/plugin.json +22 -0
  176. package/locales/vi-VN/providers.json +3 -0
  177. package/locales/vi-VN/setting.json +5 -0
  178. package/locales/zh-CN/common.json +2 -0
  179. package/locales/zh-CN/components.json +35 -0
  180. package/locales/zh-CN/error.json +2 -0
  181. package/locales/zh-CN/image.json +100 -0
  182. package/locales/zh-CN/metadata.json +4 -0
  183. package/locales/zh-CN/modelProvider.json +1 -0
  184. package/locales/zh-CN/models.json +15 -0
  185. package/locales/zh-CN/plugin.json +22 -0
  186. package/locales/zh-CN/providers.json +3 -0
  187. package/locales/zh-CN/setting.json +5 -0
  188. package/locales/zh-TW/common.json +2 -0
  189. package/locales/zh-TW/components.json +35 -0
  190. package/locales/zh-TW/error.json +2 -0
  191. package/locales/zh-TW/image.json +100 -0
  192. package/locales/zh-TW/metadata.json +4 -0
  193. package/locales/zh-TW/modelProvider.json +1 -0
  194. package/locales/zh-TW/models.json +15 -0
  195. package/locales/zh-TW/plugin.json +22 -0
  196. package/locales/zh-TW/providers.json +3 -0
  197. package/locales/zh-TW/setting.json +5 -0
  198. package/package.json +11 -4
  199. package/packages/electron-server-ipc/src/events/file.ts +3 -1
  200. package/packages/electron-server-ipc/src/types/file.ts +15 -0
  201. package/src/app/[variants]/(main)/_layout/Desktop/SideBar/TopActions.tsx +11 -1
  202. package/src/app/[variants]/(main)/image/@menu/components/AspectRatioSelect/index.tsx +73 -0
  203. package/src/app/[variants]/(main)/image/@menu/components/SeedNumberInput/index.tsx +39 -0
  204. package/src/app/[variants]/(main)/image/@menu/components/SizeSelect/index.tsx +89 -0
  205. package/src/app/[variants]/(main)/image/@menu/default.tsx +11 -0
  206. package/src/app/[variants]/(main)/image/@menu/features/ConfigPanel/components/AspectRatioSelect.tsx +24 -0
  207. package/src/app/[variants]/(main)/image/@menu/features/ConfigPanel/components/DimensionControlGroup.tsx +107 -0
  208. package/src/app/[variants]/(main)/image/@menu/features/ConfigPanel/components/ImageNum.tsx +290 -0
  209. package/src/app/[variants]/(main)/image/@menu/features/ConfigPanel/components/ImageUpload.tsx +504 -0
  210. package/src/app/[variants]/(main)/image/@menu/features/ConfigPanel/components/ImageUrl.tsx +18 -0
  211. package/src/app/[variants]/(main)/image/@menu/features/ConfigPanel/components/ImageUrlsUpload.tsx +19 -0
  212. package/src/app/[variants]/(main)/image/@menu/features/ConfigPanel/components/ModelSelect.tsx +155 -0
  213. package/src/app/[variants]/(main)/image/@menu/features/ConfigPanel/components/MultiImagesUpload/ImageManageModal.tsx +415 -0
  214. package/src/app/[variants]/(main)/image/@menu/features/ConfigPanel/components/MultiImagesUpload/index.tsx +732 -0
  215. package/src/app/[variants]/(main)/image/@menu/features/ConfigPanel/components/SeedNumberInput.tsx +24 -0
  216. package/src/app/[variants]/(main)/image/@menu/features/ConfigPanel/components/SizeSelect.tsx +17 -0
  217. package/src/app/[variants]/(main)/image/@menu/features/ConfigPanel/components/SizeSliderInput.tsx +15 -0
  218. package/src/app/[variants]/(main)/image/@menu/features/ConfigPanel/components/StepsSliderInput.tsx +11 -0
  219. package/src/app/[variants]/(main)/image/@menu/features/ConfigPanel/constants.ts +1 -0
  220. package/src/app/[variants]/(main)/image/@menu/features/ConfigPanel/index.tsx +93 -0
  221. package/src/app/[variants]/(main)/image/@topic/default.tsx +17 -0
  222. package/src/app/[variants]/(main)/image/@topic/features/Topics/NewTopicButton.tsx +64 -0
  223. package/src/app/[variants]/(main)/image/@topic/features/Topics/SkeletonList.tsx +34 -0
  224. package/src/app/[variants]/(main)/image/@topic/features/Topics/TopicItem.tsx +136 -0
  225. package/src/app/[variants]/(main)/image/@topic/features/Topics/TopicItemContainer.tsx +91 -0
  226. package/src/app/[variants]/(main)/image/@topic/features/Topics/TopicList.tsx +57 -0
  227. package/src/app/[variants]/(main)/image/@topic/features/Topics/TopicUrlSync.tsx +37 -0
  228. package/src/app/[variants]/(main)/image/@topic/features/Topics/index.tsx +19 -0
  229. package/src/app/[variants]/(main)/image/NotSupportClient.tsx +153 -0
  230. package/src/app/[variants]/(main)/image/_layout/Desktop/Container.tsx +35 -0
  231. package/src/app/[variants]/(main)/image/_layout/Desktop/RegisterHotkeys.tsx +10 -0
  232. package/src/app/[variants]/(main)/image/_layout/Desktop/index.tsx +30 -0
  233. package/src/app/[variants]/(main)/image/_layout/Mobile/index.tsx +14 -0
  234. package/src/app/[variants]/(main)/image/_layout/type.ts +7 -0
  235. package/src/app/[variants]/(main)/image/features/GenerationFeed/BatchItem.tsx +196 -0
  236. package/src/app/[variants]/(main)/image/features/GenerationFeed/GenerationItem/ActionButtons.tsx +60 -0
  237. package/src/app/[variants]/(main)/image/features/GenerationFeed/GenerationItem/ElapsedTime.tsx +90 -0
  238. package/src/app/[variants]/(main)/image/features/GenerationFeed/GenerationItem/ErrorState.tsx +65 -0
  239. package/src/app/[variants]/(main)/image/features/GenerationFeed/GenerationItem/LoadingState.tsx +43 -0
  240. package/src/app/[variants]/(main)/image/features/GenerationFeed/GenerationItem/SuccessState.tsx +49 -0
  241. package/src/app/[variants]/(main)/image/features/GenerationFeed/GenerationItem/index.tsx +156 -0
  242. package/src/app/[variants]/(main)/image/features/GenerationFeed/GenerationItem/styles.ts +51 -0
  243. package/src/app/[variants]/(main)/image/features/GenerationFeed/GenerationItem/types.ts +39 -0
  244. package/src/app/[variants]/(main)/image/features/GenerationFeed/GenerationItem/utils.ts +11 -0
  245. package/src/app/[variants]/(main)/image/features/GenerationFeed/index.tsx +97 -0
  246. package/src/app/[variants]/(main)/image/features/ImageWorkspace/Content.tsx +48 -0
  247. package/src/app/[variants]/(main)/image/features/ImageWorkspace/EmptyState.tsx +37 -0
  248. package/src/app/[variants]/(main)/image/features/ImageWorkspace/SkeletonList.tsx +50 -0
  249. package/src/app/[variants]/(main)/image/features/ImageWorkspace/index.tsx +23 -0
  250. package/src/app/[variants]/(main)/image/features/PromptInput/Title.tsx +38 -0
  251. package/src/app/[variants]/(main)/image/features/PromptInput/index.tsx +114 -0
  252. package/src/app/[variants]/(main)/image/layout.tsx +19 -0
  253. package/src/app/[variants]/(main)/image/loading.tsx +3 -0
  254. package/src/app/[variants]/(main)/image/page.tsx +47 -0
  255. package/src/app/[variants]/(main)/settings/system-agent/index.tsx +2 -1
  256. package/src/chains/summaryGenerationTitle.ts +25 -0
  257. package/src/components/ImageItem/index.tsx +9 -6
  258. package/src/{features/Conversation/Error → components/InvalidAPIKey}/APIKeyForm/Bedrock.tsx +3 -4
  259. package/src/{features/Conversation/Error → components/InvalidAPIKey}/APIKeyForm/ProviderApiKeyForm.tsx +5 -4
  260. package/src/components/InvalidAPIKey/APIKeyForm/index.tsx +108 -0
  261. package/src/{features/Conversation/Error → components/InvalidAPIKey}/APIKeyForm/useApiKey.ts +2 -1
  262. package/src/components/InvalidAPIKey/index.tsx +30 -0
  263. package/src/components/KeyValueEditor/index.tsx +203 -0
  264. package/src/components/KeyValueEditor/utils.ts +42 -0
  265. package/src/config/aiModels/fal.ts +52 -0
  266. package/src/config/aiModels/index.ts +3 -0
  267. package/src/config/aiModels/openai.ts +20 -6
  268. package/src/config/llm.ts +6 -0
  269. package/src/config/modelProviders/fal.ts +21 -0
  270. package/src/config/modelProviders/index.ts +3 -0
  271. package/src/config/paramsSchemas/fal/flux-kontext-dev.ts +8 -0
  272. package/src/config/paramsSchemas/fal/flux-pro-kontext.ts +11 -0
  273. package/src/config/paramsSchemas/fal/flux-schnell.ts +9 -0
  274. package/src/config/paramsSchemas/fal/imagen4.ts +10 -0
  275. package/src/config/paramsSchemas/openai/gpt-image-1.ts +10 -0
  276. package/src/const/hotkeys.ts +2 -2
  277. package/src/const/image.ts +6 -0
  278. package/src/const/settings/systemAgent.ts +1 -0
  279. package/src/database/client/migrations.json +27 -0
  280. package/src/database/migrations/0026_add_autovacuum_tuning.sql +2 -0
  281. package/src/database/migrations/0027_ai_image.sql +47 -0
  282. package/src/database/migrations/meta/0027_snapshot.json +6003 -0
  283. package/src/database/migrations/meta/_journal.json +7 -0
  284. package/src/database/models/__tests__/asyncTask.test.ts +7 -5
  285. package/src/database/models/__tests__/file.test.ts +287 -0
  286. package/src/database/models/__tests__/generation.test.ts +786 -0
  287. package/src/database/models/__tests__/generationBatch.test.ts +614 -0
  288. package/src/database/models/__tests__/generationTopic.test.ts +411 -0
  289. package/src/database/models/aiModel.ts +2 -0
  290. package/src/database/models/asyncTask.ts +1 -1
  291. package/src/database/models/file.ts +28 -20
  292. package/src/database/models/generation.ts +197 -0
  293. package/src/database/models/generationBatch.ts +212 -0
  294. package/src/database/models/generationTopic.ts +131 -0
  295. package/src/database/repositories/aiInfra/index.test.ts +151 -1
  296. package/src/database/repositories/aiInfra/index.ts +28 -19
  297. package/src/database/repositories/tableViewer/index.test.ts +1 -1
  298. package/src/database/schemas/file.ts +8 -0
  299. package/src/database/schemas/generation.ts +127 -0
  300. package/src/database/schemas/index.ts +1 -0
  301. package/src/database/schemas/relations.ts +45 -1
  302. package/src/database/type.ts +2 -0
  303. package/src/database/utils/idGenerator.ts +3 -0
  304. package/src/features/Conversation/Error/ChatInvalidApiKey.tsx +39 -0
  305. package/src/features/Conversation/Error/InvalidAccessCode.tsx +2 -2
  306. package/src/features/Conversation/Error/index.tsx +3 -3
  307. package/src/features/ImageSidePanel/index.tsx +83 -0
  308. package/src/features/ImageTopicPanel/index.tsx +79 -0
  309. package/src/features/PluginDevModal/MCPManifestForm/CollapsibleSection.tsx +62 -0
  310. package/src/features/PluginDevModal/MCPManifestForm/QuickImportSection.tsx +158 -0
  311. package/src/features/PluginDevModal/MCPManifestForm/index.tsx +99 -155
  312. package/src/features/PluginStore/McpList/Detail/Settings/index.tsx +5 -2
  313. package/src/hooks/useDownloadImage.ts +31 -0
  314. package/src/hooks/useFetchGenerationTopics.ts +13 -0
  315. package/src/hooks/useHotkeys/imageScope.ts +48 -0
  316. package/src/libs/mcp/client.ts +55 -22
  317. package/src/libs/mcp/types.ts +42 -6
  318. package/src/libs/model-runtime/BaseAI.ts +3 -1
  319. package/src/libs/model-runtime/ModelRuntime.test.ts +80 -0
  320. package/src/libs/model-runtime/ModelRuntime.ts +15 -1
  321. package/src/libs/model-runtime/UniformRuntime/index.ts +4 -1
  322. package/src/libs/model-runtime/fal/index.test.ts +442 -0
  323. package/src/libs/model-runtime/fal/index.ts +88 -0
  324. package/src/libs/model-runtime/openai/index.test.ts +396 -2
  325. package/src/libs/model-runtime/openai/index.ts +129 -3
  326. package/src/libs/model-runtime/runtimeMap.ts +2 -0
  327. package/src/libs/model-runtime/types/image.ts +25 -0
  328. package/src/libs/model-runtime/types/type.ts +1 -0
  329. package/src/libs/model-runtime/utils/openaiCompatibleFactory/index.ts +10 -0
  330. package/src/libs/standard-parameters/index.ts +1 -0
  331. package/src/libs/standard-parameters/meta-schema.test.ts +214 -0
  332. package/src/libs/standard-parameters/meta-schema.ts +147 -0
  333. package/src/libs/swr/index.ts +1 -0
  334. package/src/libs/trpc/async/asyncAuth.ts +29 -8
  335. package/src/libs/trpc/async/context.ts +42 -4
  336. package/src/libs/trpc/async/index.ts +17 -4
  337. package/src/libs/trpc/async/init.ts +8 -0
  338. package/src/libs/trpc/client/lambda.ts +19 -2
  339. package/src/locales/default/common.ts +2 -0
  340. package/src/locales/default/components.ts +35 -0
  341. package/src/locales/default/error.ts +2 -0
  342. package/src/locales/default/image.ts +100 -0
  343. package/src/locales/default/index.ts +2 -0
  344. package/src/locales/default/metadata.ts +4 -0
  345. package/src/locales/default/modelProvider.ts +2 -0
  346. package/src/locales/default/plugin.ts +22 -0
  347. package/src/locales/default/setting.ts +5 -0
  348. package/src/middleware.ts +1 -0
  349. package/src/server/modules/ElectronIPCClient/index.ts +9 -1
  350. package/src/server/modules/S3/index.ts +15 -0
  351. package/src/server/routers/async/caller.ts +9 -1
  352. package/src/server/routers/async/image.ts +253 -0
  353. package/src/server/routers/async/index.ts +2 -0
  354. package/src/server/routers/lambda/aiProvider.test.ts +1 -0
  355. package/src/server/routers/lambda/generation.test.ts +267 -0
  356. package/src/server/routers/lambda/generation.ts +86 -0
  357. package/src/server/routers/lambda/generationBatch.test.ts +376 -0
  358. package/src/server/routers/lambda/generationBatch.ts +56 -0
  359. package/src/server/routers/lambda/generationTopic.test.ts +508 -0
  360. package/src/server/routers/lambda/generationTopic.ts +93 -0
  361. package/src/server/routers/lambda/image.ts +248 -0
  362. package/src/server/routers/lambda/index.ts +8 -0
  363. package/src/server/routers/tools/mcp.ts +15 -0
  364. package/src/server/services/file/__tests__/index.test.ts +135 -0
  365. package/src/server/services/file/impls/local.test.ts +153 -52
  366. package/src/server/services/file/impls/local.ts +70 -46
  367. package/src/server/services/file/impls/s3.test.ts +114 -0
  368. package/src/server/services/file/impls/s3.ts +40 -0
  369. package/src/server/services/file/impls/type.ts +10 -0
  370. package/src/server/services/file/index.ts +14 -0
  371. package/src/server/services/generation/index.ts +239 -0
  372. package/src/server/services/mcp/index.ts +20 -2
  373. package/src/services/__tests__/generation.test.ts +40 -0
  374. package/src/services/__tests__/generationBatch.test.ts +36 -0
  375. package/src/services/__tests__/generationTopic.test.ts +72 -0
  376. package/src/services/electron/file.ts +3 -1
  377. package/src/services/generation.ts +16 -0
  378. package/src/services/generationBatch.ts +25 -0
  379. package/src/services/generationTopic.ts +28 -0
  380. package/src/services/image.ts +33 -0
  381. package/src/services/mcp.ts +12 -7
  382. package/src/services/upload.ts +43 -9
  383. package/src/store/aiInfra/slices/aiProvider/action.ts +25 -5
  384. package/src/store/aiInfra/slices/aiProvider/initialState.ts +1 -0
  385. package/src/store/aiInfra/slices/aiProvider/selectors.ts +3 -0
  386. package/src/store/chat/slices/aiChat/actions/generateAIChat.ts +5 -5
  387. package/src/store/chat/slices/message/action.ts +2 -2
  388. package/src/store/chat/slices/translate/action.ts +1 -1
  389. package/src/store/global/initialState.ts +9 -0
  390. package/src/store/global/selectors/systemStatus.ts +8 -0
  391. package/src/store/image/index.ts +2 -0
  392. package/src/store/image/initialState.ts +25 -0
  393. package/src/store/image/selectors.ts +4 -0
  394. package/src/store/image/slices/createImage/action.test.ts +330 -0
  395. package/src/store/image/slices/createImage/action.ts +134 -0
  396. package/src/store/image/slices/createImage/initialState.ts +9 -0
  397. package/src/store/image/slices/createImage/selectors.test.ts +114 -0
  398. package/src/store/image/slices/createImage/selectors.ts +9 -0
  399. package/src/store/image/slices/generationBatch/action.test.ts +495 -0
  400. package/src/store/image/slices/generationBatch/action.ts +303 -0
  401. package/src/store/image/slices/generationBatch/initialState.ts +13 -0
  402. package/src/store/image/slices/generationBatch/reducer.test.ts +568 -0
  403. package/src/store/image/slices/generationBatch/reducer.ts +101 -0
  404. package/src/store/image/slices/generationBatch/selectors.test.ts +307 -0
  405. package/src/store/image/slices/generationBatch/selectors.ts +36 -0
  406. package/src/store/image/slices/generationConfig/action.test.ts +351 -0
  407. package/src/store/image/slices/generationConfig/action.ts +295 -0
  408. package/src/store/image/slices/generationConfig/hooks.test.ts +304 -0
  409. package/src/store/image/slices/generationConfig/hooks.ts +118 -0
  410. package/src/store/image/slices/generationConfig/index.ts +1 -0
  411. package/src/store/image/slices/generationConfig/initialState.ts +37 -0
  412. package/src/store/image/slices/generationConfig/selectors.test.ts +204 -0
  413. package/src/store/image/slices/generationConfig/selectors.ts +25 -0
  414. package/src/store/image/slices/generationTopic/action.test.ts +687 -0
  415. package/src/store/image/slices/generationTopic/action.ts +319 -0
  416. package/src/store/image/slices/generationTopic/index.ts +2 -0
  417. package/src/store/image/slices/generationTopic/initialState.ts +14 -0
  418. package/src/store/image/slices/generationTopic/reducer.test.ts +198 -0
  419. package/src/store/image/slices/generationTopic/reducer.ts +66 -0
  420. package/src/store/image/slices/generationTopic/selectors.test.ts +103 -0
  421. package/src/store/image/slices/generationTopic/selectors.ts +15 -0
  422. package/src/store/image/store.ts +42 -0
  423. package/src/store/image/utils/size.ts +51 -0
  424. package/src/store/tool/slices/customPlugin/action.ts +10 -1
  425. package/src/store/tool/slices/mcpStore/action.ts +6 -4
  426. package/src/store/user/slices/settings/selectors/__snapshots__/settings.test.ts.snap +4 -0
  427. package/src/store/user/slices/settings/selectors/systemAgent.ts +2 -0
  428. package/src/types/aiModel.ts +8 -3
  429. package/src/types/aiProvider.ts +1 -0
  430. package/src/types/asyncTask.ts +2 -0
  431. package/src/types/files/index.ts +5 -0
  432. package/src/types/generation/index.ts +80 -0
  433. package/src/types/hotkey.ts +2 -0
  434. package/src/types/plugins/mcp.ts +2 -6
  435. package/src/types/tool/plugin.ts +8 -0
  436. package/src/types/user/settings/keyVaults.ts +5 -0
  437. package/src/types/user/settings/systemAgent.ts +1 -0
  438. package/src/utils/client/downloadFile.ts +33 -4
  439. package/src/utils/number.test.ts +105 -0
  440. package/src/utils/number.ts +25 -0
  441. package/src/utils/server/__tests__/geo.test.ts +6 -3
  442. package/src/utils/storeDebug.test.ts +152 -0
  443. package/src/utils/storeDebug.ts +16 -7
  444. package/src/utils/time.test.ts +259 -0
  445. package/src/utils/time.ts +18 -0
  446. package/src/utils/units.ts +61 -0
  447. package/src/utils/url.test.ts +358 -9
  448. package/src/utils/url.ts +105 -3
  449. package/{vitest.server.config.ts → vitest.config.server.ts} +3 -0
  450. package/.cursor/rules/i18n/i18n-auto-attached.mdc +0 -6
  451. package/src/features/Conversation/Error/APIKeyForm/index.tsx +0 -105
  452. package/src/features/Conversation/Error/InvalidAPIKey.tsx +0 -16
  453. package/src/features/PluginDevModal/MCPManifestForm/EnvEditor.tsx +0 -227
  454. /package/.cursor/rules/{i18n/i18n.mdc → i18n.mdc} +0 -0
  455. /package/src/app/[variants]/(main)/settings/system-agent/features/{createForm.tsx → SystemAgentForm.tsx} +0 -0
  456. /package/src/{features/Conversation/Error → components/InvalidAPIKey}/APIKeyForm/LoadingContext.ts +0 -0
@@ -0,0 +1,100 @@
1
+ {
2
+ "config": {
3
+ "aspectRatio": {
4
+ "label": "Aspect Ratio",
5
+ "lock": "Lock Aspect Ratio",
6
+ "unlock": "Unlock Aspect Ratio"
7
+ },
8
+ "header": {
9
+ "desc": "Brief description, create instantly",
10
+ "title": "Painting"
11
+ },
12
+ "height": {
13
+ "label": "Height"
14
+ },
15
+ "imageNum": {
16
+ "label": "Number of Images"
17
+ },
18
+ "imageUrl": {
19
+ "label": "Reference Image"
20
+ },
21
+ "imageUrls": {
22
+ "label": "Reference Images"
23
+ },
24
+ "model": {
25
+ "label": "Model"
26
+ },
27
+ "prompt": {
28
+ "placeholder": "Describe what you want to generate"
29
+ },
30
+ "seed": {
31
+ "label": "Seed",
32
+ "random": "Random Seed"
33
+ },
34
+ "size": {
35
+ "label": "Size"
36
+ },
37
+ "steps": {
38
+ "label": "Steps"
39
+ },
40
+ "title": "AI Image",
41
+ "width": {
42
+ "label": "Width"
43
+ }
44
+ },
45
+ "generation": {
46
+ "actions": {
47
+ "applySeed": "Apply Seed",
48
+ "copyError": "Copy Error Message",
49
+ "copyPrompt": "Copy Prompt",
50
+ "copySeed": "Copy Seed",
51
+ "delete": "Delete",
52
+ "deleteBatch": "Delete Batch",
53
+ "download": "Download",
54
+ "downloadFailed": "Failed to download image. Please check your network connection or S3 storage CORS configuration.",
55
+ "errorCopied": "Error Message Copied to Clipboard",
56
+ "errorCopyFailed": "Failed to Copy Error Message",
57
+ "generate": "Generate",
58
+ "promptCopied": "Prompt Copied to Clipboard",
59
+ "promptCopyFailed": "Failed to Copy Prompt",
60
+ "reuseSettings": "Reuse Settings",
61
+ "seedApplied": "Seed Applied to Configuration",
62
+ "seedApplyFailed": "Failed to Apply Seed",
63
+ "seedCopied": "Seed Copied to Clipboard",
64
+ "seedCopyFailed": "Failed to Copy Seed"
65
+ },
66
+ "metadata": {
67
+ "count": "{{count}} Images"
68
+ },
69
+ "status": {
70
+ "failed": "Generation Failed",
71
+ "generating": "Generating..."
72
+ }
73
+ },
74
+ "notSupportGuide": {
75
+ "desc": "The current deployment instance uses client-side database mode and does not support AI image generation. Please switch to the <1>server-side database deployment mode</1>, or use <3>LobeChat Cloud</3> directly.",
76
+ "features": {
77
+ "fileIntegration": {
78
+ "desc": "Deep integration with the file management system; generated images are automatically saved to the file system for unified management and organization.",
79
+ "title": "File System Integration"
80
+ },
81
+ "llmAssisted": {
82
+ "desc": "Combines large language model capabilities to intelligently optimize and expand prompts, enhancing image generation quality (Coming Soon).",
83
+ "title": "LLM-Assisted Image Generation"
84
+ },
85
+ "multiProviders": {
86
+ "desc": "Supports multiple AI image generation providers, including OpenAI gpt-image-1, Google Imagen, FAL.ai, and more, offering a wide selection of models.",
87
+ "title": "Multi-Provider Support"
88
+ }
89
+ },
90
+ "title": "Current Deployment Mode Does Not Support AI Image Generation"
91
+ },
92
+ "topic": {
93
+ "createNew": "New Topic",
94
+ "deleteConfirm": "Delete Generation Topic",
95
+ "deleteConfirmDesc": "You are about to delete this generation topic. This action cannot be undone, please proceed with caution.",
96
+ "empty": "No generation topics",
97
+ "title": "Painting Theme",
98
+ "untitled": "Default Topic"
99
+ }
100
+ }
@@ -32,6 +32,10 @@
32
32
  "search": "Search",
33
33
  "title": "Discover"
34
34
  },
35
+ "image": {
36
+ "description": "{{appName}} brings you the best experience with GPT Image, Flux, Midjourney, and Stable Diffusion",
37
+ "title": "AI Painting"
38
+ },
35
39
  "plugins": {
36
40
  "description": "Search, chart generation, academic tools, image generation, video generation, voice generation, automated workflows—customize Tools Calling plugin capabilities for ChatGPT / Claude.",
37
41
  "title": "Plugin Marketplace"
@@ -66,6 +66,7 @@
66
66
  "customRegion": "Custom Service Region",
67
67
  "customSessionToken": "Custom Session Token",
68
68
  "description": "Enter your AWS AccessKeyId / SecretAccessKey to start the session. The app will not store your authentication configuration",
69
+ "imageGenerationDescription": "Enter your AWS AccessKeyId / SecretAccessKey to start generating. The application will not store your authentication credentials.",
69
70
  "title": "Use Custom Bedrock Authentication Information"
70
71
  }
71
72
  },
@@ -1019,6 +1019,15 @@
1019
1019
  "ernie-x1-turbo-32k": {
1020
1020
  "description": "The model performs better in terms of effectiveness and performance compared to 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] can process text and reference images as input, seamlessly enabling targeted local edits and complex overall scene transformations."
1027
+ },
1028
+ "flux/schnell": {
1029
+ "description": "FLUX.1 [schnell] is a streaming transformer model with 12 billion parameters, capable of generating high-quality images from text in 1 to 4 steps, suitable for personal and commercial use."
1030
+ },
1022
1031
  "gemini-1.0-pro-001": {
1023
1032
  "description": "Gemini 1.0 Pro 001 (Tuning) offers stable and tunable performance, making it an ideal choice for complex task solutions."
1024
1033
  },
@@ -1364,6 +1373,9 @@
1364
1373
  "gpt-4o-transcribe": {
1365
1374
  "description": "GPT-4o Transcribe is a speech-to-text model that uses GPT-4o to transcribe audio. Compared to the original Whisper model, it improves word error rate, language recognition, and accuracy. Use it for more precise transcriptions."
1366
1375
  },
1376
+ "gpt-image-1": {
1377
+ "description": "ChatGPT native multimodal image generation model."
1378
+ },
1367
1379
  "grok-2-1212": {
1368
1380
  "description": "This model has improved in accuracy, instruction adherence, and multilingual capabilities."
1369
1381
  },
@@ -1484,6 +1496,9 @@
1484
1496
  "hunyuan-vision": {
1485
1497
  "description": "The latest multimodal model from Hunyuan, supporting image + text input to generate textual content."
1486
1498
  },
1499
+ "imagen4/preview": {
1500
+ "description": "Google's highest quality image generation model."
1501
+ },
1487
1502
  "internlm/internlm2_5-7b-chat": {
1488
1503
  "description": "InternLM2.5 offers intelligent dialogue solutions across multiple scenarios."
1489
1504
  },
@@ -57,12 +57,28 @@
57
57
  }
58
58
  },
59
59
  "mcp": {
60
+ "advanced": {
61
+ "title": "Advanced Settings"
62
+ },
60
63
  "args": {
61
64
  "desc": "A list of parameters to be passed to the execution command, typically the MCP server name or the path to the startup script.",
62
65
  "label": "Command Parameters",
63
66
  "placeholder": "For example: mcp-hello-world",
64
67
  "required": "Please enter the startup parameters"
65
68
  },
69
+ "auth": {
70
+ "bear": "API Key",
71
+ "desc": "Select the authentication method for the MCP server",
72
+ "label": "Authentication Type",
73
+ "none": "No Authentication Required",
74
+ "placeholder": "Please select an authentication type",
75
+ "token": {
76
+ "desc": "Enter your API Key or Bearer Token",
77
+ "label": "API Key",
78
+ "placeholder": "sk-xxxxx",
79
+ "required": "Please enter the authentication token"
80
+ }
81
+ },
66
82
  "avatar": {
67
83
  "label": "Plugin Icon"
68
84
  },
@@ -90,6 +106,11 @@
90
106
  "label": "MCP Server Environment Variables",
91
107
  "stringifyError": "Unable to serialize parameters, please check the parameter format"
92
108
  },
109
+ "headers": {
110
+ "add": "Add a Row",
111
+ "desc": "Enter request headers",
112
+ "label": "HTTP Headers"
113
+ },
93
114
  "identifier": {
94
115
  "desc": "Specify a name for your MCP plugin, using English characters",
95
116
  "invalid": "Only English letters, numbers, - and _ are allowed",
@@ -269,6 +290,7 @@
269
290
  "showDetails": "Show details"
270
291
  },
271
292
  "errorTypes": {
293
+ "AUTHORIZATION_ERROR": "Authorization Verification Error",
272
294
  "CONNECTION_FAILED": "Connection failed",
273
295
  "INITIALIZATION_TIMEOUT": "Initialization timeout",
274
296
  "PROCESS_SPAWN_ERROR": "Process spawn error",
@@ -29,6 +29,9 @@
29
29
  "deepseek": {
30
30
  "description": "DeepSeek is a company focused on AI technology research and application, with its latest model DeepSeek-V2.5 integrating general dialogue and code processing capabilities, achieving significant improvements in human preference alignment, writing tasks, and instruction following."
31
31
  },
32
+ "fal": {
33
+ "description": "Generative Media Platform for Developers"
34
+ },
32
35
  "fireworksai": {
33
36
  "description": "Fireworks AI is a leading provider of advanced language model services, focusing on functional calling and multimodal processing. Its latest model, Firefunction V2, is based on Llama-3, optimized for function calling, conversation, and instruction following. The visual language model FireLLaVA-13B supports mixed input of images and text. Other notable models include the Llama series and Mixtral series, providing efficient multilingual instruction following and generation support."
34
37
  },
@@ -484,6 +484,11 @@
484
484
  "placeholder": "Please enter custom prompt",
485
485
  "title": "Custom Prompt"
486
486
  },
487
+ "generationTopic": {
488
+ "label": "AI Art Topic Naming Model",
489
+ "modelDesc": "Model designated for automatic naming of AI art topics",
490
+ "title": "AI Art Automatic Topic Naming"
491
+ },
487
492
  "helpInfo": "When creating a new assistant, the default assistant settings will be used as preset values.",
488
493
  "historyCompress": {
489
494
  "label": "Conversation History Model",
@@ -183,6 +183,7 @@
183
183
  },
184
184
  "fullscreen": "Pantalla completa",
185
185
  "historyRange": "Rango de historial",
186
+ "import": "Importar",
186
187
  "importData": "Importar datos",
187
188
  "importModal": {
188
189
  "error": {
@@ -324,6 +325,7 @@
324
325
  }
325
326
  },
326
327
  "tab": {
328
+ "aiImage": "Dibujo AI",
327
329
  "chat": "Chat",
328
330
  "discover": "Descubrir",
329
331
  "files": "Archivos",
@@ -68,6 +68,22 @@
68
68
  "GoBack": {
69
69
  "back": "Regresar"
70
70
  },
71
+ "ImageUpload": {
72
+ "actions": {
73
+ "changeImage": "Haz clic para cambiar la imagen"
74
+ },
75
+ "placeholder": {
76
+ "primary": "Agregar imagen",
77
+ "secondary": "Haz clic para subir"
78
+ }
79
+ },
80
+ "KeyValueEditor": {
81
+ "addButton": "Agregar una fila",
82
+ "deleteTooltip": "Eliminar",
83
+ "duplicateKeyError": "El nombre de la clave debe ser único",
84
+ "keyPlaceholder": "Clave",
85
+ "valuePlaceholder": "Valor"
86
+ },
71
87
  "MaxTokenSlider": {
72
88
  "unlimited": "Sin límite"
73
89
  },
@@ -91,6 +107,25 @@
91
107
  "provider": "Proveedor",
92
108
  "title": "Modelo"
93
109
  },
110
+ "MultiImagesUpload": {
111
+ "actions": {
112
+ "uploadMore": "Haz clic para subir más"
113
+ },
114
+ "modal": {
115
+ "complete": "Completar",
116
+ "newFileIndicator": "Nuevo",
117
+ "selectImageToPreview": "Por favor, selecciona una imagen para previsualizar",
118
+ "title": "Gestionar imágenes ({{count}})",
119
+ "upload": "Subir imágenes"
120
+ },
121
+ "placeholder": {
122
+ "primary": "Haz clic para subir imágenes",
123
+ "secondary": "Se admite la selección de múltiples imágenes"
124
+ },
125
+ "progress": {
126
+ "uploadingWithCount": "{{completed}}/{{total}} subidas"
127
+ }
128
+ },
94
129
  "OllamaSetupGuide": {
95
130
  "action": {
96
131
  "close": "Cerrar aviso",
@@ -123,6 +123,7 @@
123
123
  "stt": {
124
124
  "responseError": "Error en la solicitud de servicio. Verifique la configuración o reintente"
125
125
  },
126
+ "testConnectionFailed": "Fallo en la prueba de conexión: {{error}}",
126
127
  "tts": {
127
128
  "responseError": "Error en la solicitud de servicio. Verifique la configuración o reintente"
128
129
  },
@@ -130,6 +131,7 @@
130
131
  "addProxyUrl": "Agregar URL de proxy de OpenAI (opcional)",
131
132
  "apiKey": {
132
133
  "description": "Ingresa tu API Key de {{name}} para comenzar la sesión",
134
+ "imageGenerationDescription": "Introduce tu clave API de {{name}} para comenzar a generar",
133
135
  "title": "Usar tu propia API Key de {{name}}"
134
136
  },
135
137
  "closeMessage": "Cerrar mensaje",
@@ -0,0 +1,100 @@
1
+ {
2
+ "config": {
3
+ "aspectRatio": {
4
+ "label": "Proporción",
5
+ "lock": "Bloquear relación de aspecto",
6
+ "unlock": "Desbloquear relación de aspecto"
7
+ },
8
+ "header": {
9
+ "desc": "Descripción simple, crea al instante",
10
+ "title": "Pintura"
11
+ },
12
+ "height": {
13
+ "label": "Alto"
14
+ },
15
+ "imageNum": {
16
+ "label": "Cantidad de imágenes"
17
+ },
18
+ "imageUrl": {
19
+ "label": "Imagen de referencia"
20
+ },
21
+ "imageUrls": {
22
+ "label": "Imágenes de referencia"
23
+ },
24
+ "model": {
25
+ "label": "Modelo"
26
+ },
27
+ "prompt": {
28
+ "placeholder": "Describe el contenido que deseas generar"
29
+ },
30
+ "seed": {
31
+ "label": "Semilla",
32
+ "random": "Semilla aleatoria"
33
+ },
34
+ "size": {
35
+ "label": "Tamaño"
36
+ },
37
+ "steps": {
38
+ "label": "Pasos"
39
+ },
40
+ "title": "Pintura AI",
41
+ "width": {
42
+ "label": "Ancho"
43
+ }
44
+ },
45
+ "generation": {
46
+ "actions": {
47
+ "applySeed": "Aplicar semilla",
48
+ "copyError": "Copiar mensaje de error",
49
+ "copyPrompt": "Copiar indicación",
50
+ "copySeed": "Copiar semilla",
51
+ "delete": "Eliminar",
52
+ "deleteBatch": "Eliminar lote",
53
+ "download": "Descargar",
54
+ "downloadFailed": "Error al descargar la imagen",
55
+ "errorCopied": "Mensaje de error copiado al portapapeles",
56
+ "errorCopyFailed": "Error al copiar el mensaje de error",
57
+ "generate": "Generar",
58
+ "promptCopied": "Texto de indicación copiado al portapapeles",
59
+ "promptCopyFailed": "Error al copiar el texto de indicación",
60
+ "reuseSettings": "Reutilizar configuración",
61
+ "seedApplied": "Semilla aplicada a la configuración",
62
+ "seedApplyFailed": "Error al aplicar la semilla",
63
+ "seedCopied": "Semilla copiada al portapapeles",
64
+ "seedCopyFailed": "Error al copiar la semilla"
65
+ },
66
+ "metadata": {
67
+ "count": "{{count}} imágenes"
68
+ },
69
+ "status": {
70
+ "failed": "Generación fallida",
71
+ "generating": "Generando..."
72
+ }
73
+ },
74
+ "notSupportGuide": {
75
+ "desc": "La instancia desplegada actual está en modo base de datos cliente y no soporta la función de generación de imágenes AI. Por favor, cambia al <1>modo de despliegue con base de datos servidor</1> o utiliza directamente <3>LobeChat Cloud</3>",
76
+ "features": {
77
+ "fileIntegration": {
78
+ "desc": "Integración profunda con el sistema de gestión de archivos, las imágenes generadas se guardan automáticamente en el sistema de archivos para una gestión y organización unificada",
79
+ "title": "Interoperabilidad con sistema de archivos"
80
+ },
81
+ "llmAssisted": {
82
+ "desc": "Combinación con capacidades de modelos de lenguaje grandes para optimizar y expandir inteligentemente los textos de indicación, mejorando la calidad de generación de imágenes (Próximamente)",
83
+ "title": "Generación asistida por LLM"
84
+ },
85
+ "multiProviders": {
86
+ "desc": "Soporta múltiples proveedores de servicios de pintura AI, incluyendo OpenAI gpt-image-1, Google Imagen, FAL.ai, entre otros, ofreciendo una amplia selección de modelos",
87
+ "title": "Soporte para múltiples proveedores"
88
+ }
89
+ },
90
+ "title": "El modo de despliegue actual no soporta pintura AI"
91
+ },
92
+ "topic": {
93
+ "createNew": "Crear nuevo tema",
94
+ "deleteConfirm": "Eliminar tema generado",
95
+ "deleteConfirmDesc": "Estás a punto de eliminar este tema generado. Esta acción es irreversible, por favor procede con precaución.",
96
+ "empty": "No hay temas generados",
97
+ "title": "Tema de pintura",
98
+ "untitled": "Tema predeterminado"
99
+ }
100
+ }
@@ -32,6 +32,10 @@
32
32
  "search": "Buscar",
33
33
  "title": "Descubrir"
34
34
  },
35
+ "image": {
36
+ "description": "{{appName}} te ofrece la mejor experiencia de uso con GPT Image, Flux, Midjourney y Stable Diffusion",
37
+ "title": "Pintura AI"
38
+ },
35
39
  "plugins": {
36
40
  "description": "Búsqueda, generación de gráficos, académico, generación de imágenes, generación de videos, generación de voz, flujos de trabajo automatizados, personaliza las capacidades de los plugins ToolCall exclusivos de ChatGPT / Claude",
37
41
  "title": "Mercado de Plugins"
@@ -66,6 +66,7 @@
66
66
  "customRegion": "Región de servicio personalizada",
67
67
  "customSessionToken": "Token de sesión personalizado",
68
68
  "description": "Introduce tu AWS AccessKeyId / SecretAccessKey para comenzar la sesión. La aplicación no guardará tu configuración de autenticación.",
69
+ "imageGenerationDescription": "Introduce tu AWS AccessKeyId / SecretAccessKey para comenzar a generar. La aplicación no registrará tu configuración de autenticación",
69
70
  "title": "Usar información de autenticación de Bedrock personalizada"
70
71
  }
71
72
  },
@@ -1019,6 +1019,15 @@
1019
1019
  "ernie-x1-turbo-32k": {
1020
1020
  "description": "Mejora en comparación con ERNIE-X1-32K, con mejores resultados y rendimiento."
1021
1021
  },
1022
+ "flux-kontext/dev": {
1023
+ "description": "Modelo de edición de imágenes Frontier."
1024
+ },
1025
+ "flux-pro/kontext": {
1026
+ "description": "FLUX.1 Kontext [pro] puede procesar texto e imágenes de referencia como entrada, logrando sin problemas ediciones locales específicas y transformaciones complejas de escenas completas."
1027
+ },
1028
+ "flux/schnell": {
1029
+ "description": "FLUX.1 [schnell] es un modelo transformador de flujo con 12 mil millones de parámetros, capaz de generar imágenes de alta calidad a partir de texto en 1 a 4 pasos, adecuado para uso personal y comercial."
1030
+ },
1022
1031
  "gemini-1.0-pro-001": {
1023
1032
  "description": "Gemini 1.0 Pro 001 (Ajuste) ofrece un rendimiento estable y ajustable, siendo una opción ideal para soluciones de tareas complejas."
1024
1033
  },
@@ -1364,6 +1373,9 @@
1364
1373
  "gpt-4o-transcribe": {
1365
1374
  "description": "GPT-4o Transcribe es un modelo de conversión de voz a texto que utiliza GPT-4o para transcribir audio. En comparación con el modelo Whisper original, mejora la tasa de error de palabras y aumenta la precisión y el reconocimiento del idioma. Úselo para obtener transcripciones más precisas."
1366
1375
  },
1376
+ "gpt-image-1": {
1377
+ "description": "Modelo nativo multimodal de generación de imágenes de ChatGPT."
1378
+ },
1367
1379
  "grok-2-1212": {
1368
1380
  "description": "Este modelo ha mejorado en precisión, cumplimiento de instrucciones y capacidades multilingües."
1369
1381
  },
@@ -1484,6 +1496,9 @@
1484
1496
  "hunyuan-vision": {
1485
1497
  "description": "El último modelo multimodal de Hunyuan, que admite la entrada de imágenes y texto para generar contenido textual."
1486
1498
  },
1499
+ "imagen4/preview": {
1500
+ "description": "El modelo de generación de imágenes de mayor calidad de Google."
1501
+ },
1487
1502
  "internlm/internlm2_5-7b-chat": {
1488
1503
  "description": "InternLM2.5 ofrece soluciones de diálogo inteligente en múltiples escenarios."
1489
1504
  },
@@ -57,12 +57,28 @@
57
57
  }
58
58
  },
59
59
  "mcp": {
60
+ "advanced": {
61
+ "title": "Configuración avanzada"
62
+ },
60
63
  "args": {
61
64
  "desc": "Lista de parámetros que se pasan al comando de ejecución, generalmente aquí se ingresa el nombre del servidor MCP o la ruta del script de inicio",
62
65
  "label": "Parámetros del comando",
63
66
  "placeholder": "Por ejemplo: --port 8080 --debug",
64
67
  "required": "Por favor, introduce los parámetros de inicio"
65
68
  },
69
+ "auth": {
70
+ "bear": "Clave API",
71
+ "desc": "Seleccione el método de autenticación del servidor MCP",
72
+ "label": "Tipo de autenticación",
73
+ "none": "Sin autenticación",
74
+ "placeholder": "Por favor, seleccione el tipo de autenticación",
75
+ "token": {
76
+ "desc": "Ingrese su Clave API o Token Bearer",
77
+ "label": "Clave API",
78
+ "placeholder": "sk-xxxxx",
79
+ "required": "Por favor, ingrese el token de autenticación"
80
+ }
81
+ },
66
82
  "avatar": {
67
83
  "label": "Icono del complemento"
68
84
  },
@@ -90,6 +106,11 @@
90
106
  "label": "Variables de entorno del servidor MCP",
91
107
  "stringifyError": "No se puede serializar el parámetro, por favor verifica el formato de los parámetros"
92
108
  },
109
+ "headers": {
110
+ "add": "Agregar una fila",
111
+ "desc": "Ingrese los encabezados de la solicitud",
112
+ "label": "Encabezados HTTP"
113
+ },
93
114
  "identifier": {
94
115
  "desc": "Especifica un nombre para tu complemento MCP, debe usar caracteres en inglés",
95
116
  "invalid": "Solo se pueden ingresar caracteres en inglés, números, y los símbolos - y _",
@@ -269,6 +290,7 @@
269
290
  "showDetails": "Mostrar detalles"
270
291
  },
271
292
  "errorTypes": {
293
+ "AUTHORIZATION_ERROR": "Error de autorización",
272
294
  "CONNECTION_FAILED": "Conexión fallida",
273
295
  "INITIALIZATION_TIMEOUT": "Tiempo de inicialización agotado",
274
296
  "PROCESS_SPAWN_ERROR": "Error al iniciar el proceso",
@@ -29,6 +29,9 @@
29
29
  "deepseek": {
30
30
  "description": "DeepSeek es una empresa centrada en la investigación y aplicación de tecnologías de inteligencia artificial, cuyo modelo más reciente, DeepSeek-V2.5, combina capacidades de diálogo general y procesamiento de código, logrando mejoras significativas en alineación con preferencias humanas, tareas de escritura y seguimiento de instrucciones."
31
31
  },
32
+ "fal": {
33
+ "description": "Plataforma de medios generativos orientada a desarrolladores"
34
+ },
32
35
  "fireworksai": {
33
36
  "description": "Fireworks AI es un proveedor líder de servicios de modelos de lenguaje avanzados, enfocado en la llamada de funciones y el procesamiento multimodal. Su modelo más reciente, Firefunction V2, basado en Llama-3, está optimizado para llamadas de funciones, diálogos y seguimiento de instrucciones. El modelo de lenguaje visual FireLLaVA-13B admite entradas mixtas de imágenes y texto. Otros modelos notables incluyen la serie Llama y la serie Mixtral, que ofrecen un soporte eficiente para el seguimiento y generación de instrucciones multilingües."
34
37
  },
@@ -484,6 +484,11 @@
484
484
  "placeholder": "Introduce la palabra clave personalizada",
485
485
  "title": "Palabra clave personalizada"
486
486
  },
487
+ "generationTopic": {
488
+ "label": "Modelo de denominación de temas para pintura AI",
489
+ "modelDesc": "Modelo designado para la denominación automática de temas en pintura AI",
490
+ "title": "Denominación automática de temas para pintura AI"
491
+ },
487
492
  "helpInfo": "Al crear un nuevo asistente, se utilizarán los ajustes predeterminados del asistente como valores predeterminados.",
488
493
  "historyCompress": {
489
494
  "label": "Modelo de historial de conversació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": "نقاشی هوش مصنوعی",
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": "بستن پیام",
@@ -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 Key {{name}} خود را وارد کنید تا مکالمه را شروع کنید",
134
+ "imageGenerationDescription": "برای شروع تولید، کلید API {{name}} خود را وارد کنید",
133
135
  "title": "استفاده از API Key سفارشی {{name}}"
134
136
  },
135
137
  "closeMessage": "بستن پیام",