@lobehub/lobehub 2.0.0-next.47 → 2.0.0-next.49

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 (311) hide show
  1. package/.env.example +11 -0
  2. package/CHANGELOG.md +50 -0
  3. package/README.md +1 -1
  4. package/README.zh-CN.md +1 -1
  5. package/apps/desktop/src/main/controllers/AuthCtr.ts +27 -2
  6. package/apps/desktop/src/main/core/infrastructure/ProtocolManager.ts +9 -4
  7. package/changelog/v1.json +17 -0
  8. package/docs/development/database-schema.dbml +2 -0
  9. package/docs/self-hosting/environment-variables/basic.mdx +49 -3
  10. package/docs/self-hosting/environment-variables/basic.zh-CN.mdx +49 -4
  11. package/locales/ar/chat.json +1 -0
  12. package/locales/ar/discover.json +45 -0
  13. package/locales/ar/marketAuth.json +42 -0
  14. package/locales/ar/setting.json +94 -1
  15. package/locales/ar/topic.json +1 -0
  16. package/locales/bg-BG/chat.json +1 -0
  17. package/locales/bg-BG/discover.json +45 -0
  18. package/locales/bg-BG/marketAuth.json +42 -0
  19. package/locales/bg-BG/setting.json +94 -1
  20. package/locales/bg-BG/topic.json +1 -0
  21. package/locales/de-DE/chat.json +1 -0
  22. package/locales/de-DE/discover.json +45 -0
  23. package/locales/de-DE/marketAuth.json +42 -0
  24. package/locales/de-DE/setting.json +94 -1
  25. package/locales/de-DE/topic.json +1 -0
  26. package/locales/en-US/chat.json +1 -0
  27. package/locales/en-US/discover.json +45 -0
  28. package/locales/en-US/marketAuth.json +42 -0
  29. package/locales/en-US/setting.json +94 -1
  30. package/locales/en-US/topic.json +1 -0
  31. package/locales/es-ES/chat.json +1 -0
  32. package/locales/es-ES/discover.json +45 -0
  33. package/locales/es-ES/marketAuth.json +42 -0
  34. package/locales/es-ES/setting.json +94 -1
  35. package/locales/es-ES/topic.json +1 -0
  36. package/locales/fa-IR/chat.json +1 -0
  37. package/locales/fa-IR/discover.json +45 -0
  38. package/locales/fa-IR/marketAuth.json +42 -0
  39. package/locales/fa-IR/setting.json +94 -1
  40. package/locales/fa-IR/topic.json +1 -0
  41. package/locales/fr-FR/chat.json +1 -0
  42. package/locales/fr-FR/discover.json +45 -0
  43. package/locales/fr-FR/marketAuth.json +42 -0
  44. package/locales/fr-FR/setting.json +94 -1
  45. package/locales/fr-FR/topic.json +1 -0
  46. package/locales/it-IT/chat.json +1 -0
  47. package/locales/it-IT/discover.json +45 -0
  48. package/locales/it-IT/marketAuth.json +42 -0
  49. package/locales/it-IT/setting.json +94 -1
  50. package/locales/it-IT/topic.json +1 -0
  51. package/locales/ja-JP/chat.json +1 -0
  52. package/locales/ja-JP/discover.json +45 -0
  53. package/locales/ja-JP/marketAuth.json +42 -0
  54. package/locales/ja-JP/setting.json +94 -1
  55. package/locales/ja-JP/topic.json +1 -0
  56. package/locales/ko-KR/chat.json +1 -0
  57. package/locales/ko-KR/discover.json +45 -0
  58. package/locales/ko-KR/marketAuth.json +42 -0
  59. package/locales/ko-KR/setting.json +94 -1
  60. package/locales/ko-KR/topic.json +1 -0
  61. package/locales/nl-NL/chat.json +1 -0
  62. package/locales/nl-NL/discover.json +45 -0
  63. package/locales/nl-NL/marketAuth.json +42 -0
  64. package/locales/nl-NL/setting.json +94 -1
  65. package/locales/nl-NL/topic.json +1 -0
  66. package/locales/pl-PL/chat.json +1 -0
  67. package/locales/pl-PL/discover.json +45 -0
  68. package/locales/pl-PL/marketAuth.json +42 -0
  69. package/locales/pl-PL/setting.json +94 -1
  70. package/locales/pl-PL/topic.json +1 -0
  71. package/locales/pt-BR/chat.json +1 -0
  72. package/locales/pt-BR/discover.json +45 -0
  73. package/locales/pt-BR/marketAuth.json +42 -0
  74. package/locales/pt-BR/setting.json +94 -1
  75. package/locales/pt-BR/topic.json +1 -0
  76. package/locales/ru-RU/chat.json +1 -0
  77. package/locales/ru-RU/discover.json +45 -0
  78. package/locales/ru-RU/marketAuth.json +42 -0
  79. package/locales/ru-RU/setting.json +94 -1
  80. package/locales/ru-RU/topic.json +1 -0
  81. package/locales/tr-TR/chat.json +1 -0
  82. package/locales/tr-TR/discover.json +45 -0
  83. package/locales/tr-TR/marketAuth.json +42 -0
  84. package/locales/tr-TR/setting.json +94 -1
  85. package/locales/tr-TR/topic.json +1 -0
  86. package/locales/vi-VN/chat.json +1 -0
  87. package/locales/vi-VN/discover.json +45 -0
  88. package/locales/vi-VN/marketAuth.json +42 -0
  89. package/locales/vi-VN/setting.json +94 -1
  90. package/locales/vi-VN/topic.json +1 -0
  91. package/locales/zh-CN/chat.json +1 -0
  92. package/locales/zh-CN/discover.json +45 -0
  93. package/locales/zh-CN/marketAuth.json +42 -0
  94. package/locales/zh-CN/setting.json +94 -1
  95. package/locales/zh-CN/topic.json +1 -0
  96. package/locales/zh-TW/chat.json +1 -0
  97. package/locales/zh-TW/discover.json +45 -0
  98. package/locales/zh-TW/marketAuth.json +42 -0
  99. package/locales/zh-TW/setting.json +94 -1
  100. package/locales/zh-TW/topic.json +1 -0
  101. package/package.json +34 -27
  102. package/packages/agent-runtime/src/core/InterventionChecker.ts +5 -16
  103. package/packages/agent-runtime/src/core/__tests__/InterventionChecker.test.ts +27 -80
  104. package/packages/agent-runtime/src/core/__tests__/runtime.test.ts +32 -13
  105. package/packages/agent-runtime/src/core/runtime.ts +7 -3
  106. package/packages/agent-runtime/src/types/event.ts +2 -1
  107. package/packages/agent-runtime/src/types/generalAgent.ts +1 -0
  108. package/packages/agent-runtime/src/types/instruction.ts +3 -2
  109. package/packages/agent-runtime/src/types/state.ts +3 -1
  110. package/packages/const/src/url.ts +1 -0
  111. package/packages/conversation-flow/src/transformation/FlatListBuilder.ts +4 -1
  112. package/packages/database/migrations/0044_add_tool_intervention.sql +1 -0
  113. package/packages/database/migrations/0044_high_toxin.sql +1 -0
  114. package/packages/database/migrations/0045_add_tool_intervention.sql +1 -0
  115. package/packages/database/migrations/meta/0039_snapshot.json +1 -1
  116. package/packages/database/migrations/meta/0044_snapshot.json +7813 -0
  117. package/packages/database/migrations/meta/0045_snapshot.json +8431 -0
  118. package/packages/database/migrations/meta/_journal.json +14 -0
  119. package/packages/database/src/core/migrations.json +36 -7
  120. package/packages/database/src/models/message.ts +4 -1
  121. package/packages/database/src/models/session.ts +42 -1
  122. package/packages/database/src/schemas/agent.ts +1 -0
  123. package/packages/database/src/schemas/message.ts +5 -8
  124. package/packages/electron-client-ipc/src/events/index.ts +6 -1
  125. package/packages/electron-client-ipc/src/events/remoteServer.ts +8 -0
  126. package/packages/fetch-sse/package.json +29 -0
  127. package/packages/{utils/src/fetch → fetch-sse/src}/__tests__/fetchSSE.test.ts +4 -4
  128. package/packages/{utils/src/fetch → fetch-sse/src}/__tests__/parseError.test.ts +7 -4
  129. package/packages/{utils/src/fetch → fetch-sse/src}/fetchSSE.ts +2 -2
  130. package/packages/{utils/src/fetch → fetch-sse/src}/parseError.ts +3 -3
  131. package/packages/model-bank/src/aiModels/mistral.ts +2 -1
  132. package/packages/model-runtime/src/core/contextBuilders/anthropic.test.ts +17 -11
  133. package/packages/model-runtime/src/core/contextBuilders/anthropic.ts +1 -1
  134. package/packages/model-runtime/src/core/contextBuilders/google.test.ts +1 -1
  135. package/packages/model-runtime/src/core/contextBuilders/google.ts +3 -6
  136. package/packages/model-runtime/src/core/contextBuilders/openai.test.ts +4 -2
  137. package/packages/model-runtime/src/core/contextBuilders/openai.ts +1 -1
  138. package/packages/model-runtime/src/core/openaiCompatibleFactory/createImage.test.ts +1 -1
  139. package/packages/model-runtime/src/core/openaiCompatibleFactory/createImage.ts +1 -1
  140. package/packages/model-runtime/src/core/openaiCompatibleFactory/index.test.ts +3 -6
  141. package/packages/model-runtime/src/core/streams/openai/responsesStream.test.ts +1 -1
  142. package/packages/model-runtime/src/helpers/mergeChatMethodOptions.ts +2 -1
  143. package/packages/model-runtime/src/providers/aihubmix/index.test.ts +1 -1
  144. package/packages/model-runtime/src/providers/anthropic/generateObject.test.ts +1 -1
  145. package/packages/model-runtime/src/providers/anthropic/index.test.ts +1 -1
  146. package/packages/model-runtime/src/providers/baichuan/index.test.ts +1 -1
  147. package/packages/model-runtime/src/providers/bedrock/index.test.ts +1 -1
  148. package/packages/model-runtime/src/providers/bfl/createImage.test.ts +4 -4
  149. package/packages/model-runtime/src/providers/bfl/createImage.ts +1 -1
  150. package/packages/model-runtime/src/providers/cloudflare/index.test.ts +1 -1
  151. package/packages/model-runtime/src/providers/cohere/index.test.ts +1 -1
  152. package/packages/model-runtime/src/providers/google/createImage.test.ts +2 -2
  153. package/packages/model-runtime/src/providers/google/createImage.ts +1 -1
  154. package/packages/model-runtime/src/providers/google/generateObject.test.ts +1 -1
  155. package/packages/model-runtime/src/providers/google/index.test.ts +1 -4
  156. package/packages/model-runtime/src/providers/groq/index.test.ts +1 -1
  157. package/packages/model-runtime/src/providers/hunyuan/index.test.ts +1 -1
  158. package/packages/model-runtime/src/providers/minimax/createImage.test.ts +1 -1
  159. package/packages/model-runtime/src/providers/mistral/index.test.ts +1 -1
  160. package/packages/model-runtime/src/providers/moonshot/index.test.ts +1 -1
  161. package/packages/model-runtime/src/providers/novita/index.test.ts +1 -1
  162. package/packages/model-runtime/src/providers/ollama/index.test.ts +43 -32
  163. package/packages/model-runtime/src/providers/ollama/index.ts +31 -7
  164. package/packages/model-runtime/src/providers/openrouter/index.test.ts +1 -1
  165. package/packages/model-runtime/src/providers/perplexity/index.test.ts +1 -1
  166. package/packages/model-runtime/src/providers/ppio/index.test.ts +1 -1
  167. package/packages/model-runtime/src/providers/qwen/createImage.test.ts +1 -1
  168. package/packages/model-runtime/src/providers/search1api/index.test.ts +1 -1
  169. package/packages/model-runtime/src/providers/siliconcloud/createImage.ts +1 -1
  170. package/packages/model-runtime/src/providers/taichu/index.test.ts +1 -1
  171. package/packages/model-runtime/src/providers/wenxin/index.test.ts +1 -1
  172. package/packages/model-runtime/src/providers/zhipu/index.test.ts +1 -1
  173. package/packages/model-runtime/src/utils/errorResponse.test.ts +1 -1
  174. package/packages/obervability-otel/src/node.ts +15 -1
  175. package/packages/ssrf-safe-fetch/index.browser.ts +14 -0
  176. package/packages/ssrf-safe-fetch/package.json +8 -1
  177. package/packages/types/src/discover/assistants.ts +16 -0
  178. package/packages/types/src/index.ts +1 -0
  179. package/packages/types/src/message/common/base.ts +2 -2
  180. package/packages/types/src/message/common/tools.ts +16 -0
  181. package/packages/types/src/message/db/item.ts +15 -1
  182. package/packages/types/src/message/ui/chat.ts +7 -1
  183. package/packages/types/src/message/ui/params.ts +15 -1
  184. package/packages/types/src/meta.ts +4 -0
  185. package/packages/types/src/session/agentSession.ts +2 -0
  186. package/packages/types/src/tool/intervention.ts +2 -3
  187. package/packages/types/src/user/settings/tool.ts +15 -28
  188. package/packages/utils/src/imageToBase64.ts +17 -10
  189. package/packages/utils/src/index.ts +1 -1
  190. package/renovate.json +28 -11
  191. package/src/app/(backend)/market/agent/[[...segments]]/route.ts +153 -0
  192. package/src/app/(backend)/market/oidc/[[...segments]]/route.ts +207 -0
  193. package/src/app/[variants]/(main)/(mobile)/me/settings/features/useCategory.tsx +1 -0
  194. package/src/app/[variants]/(main)/_layout/Desktop/SideBar/PinList/index.tsx +4 -2
  195. package/src/app/[variants]/(main)/chat/components/topic/features/Topic/TopicListContent/TopicItem/TopicContent.tsx +1 -1
  196. package/src/app/[variants]/(main)/chat/session/features/SessionListContent/List/Item/Actions.tsx +1 -1
  197. package/src/app/[variants]/(main)/chat/settings/features/AgentInfoDescription/index.tsx +349 -0
  198. package/src/app/[variants]/(main)/chat/settings/features/HeaderContent.tsx +2 -2
  199. package/src/app/[variants]/(main)/chat/settings/features/PublishResultModal/index.tsx +64 -0
  200. package/src/app/[variants]/(main)/chat/settings/features/SmartAgentActionButton/MarketPublishButton.tsx +196 -0
  201. package/src/app/[variants]/(main)/chat/settings/features/SmartAgentActionButton/MarketPublishModal.tsx +358 -0
  202. package/src/app/[variants]/(main)/chat/settings/features/SmartAgentActionButton/index.tsx +75 -0
  203. package/src/app/[variants]/(main)/discover/(detail)/assistant/AssistantDetailPage.tsx +11 -2
  204. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/Client.tsx +12 -1
  205. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/features/Details/Nav.tsx +19 -12
  206. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/features/Details/Overview/TagList.tsx +14 -5
  207. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/features/Details/Overview/index.tsx +2 -0
  208. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/features/Details/Related/index.tsx +14 -5
  209. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/features/Details/SystemRole/TagList.tsx +14 -5
  210. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/features/Details/SystemRole/index.tsx +43 -29
  211. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/features/Details/Versions/index.tsx +137 -0
  212. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/features/Details/index.tsx +2 -0
  213. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/features/Header.tsx +9 -10
  214. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/features/Sidebar/ActionButton/AddAgent.tsx +105 -14
  215. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/features/Sidebar/Related/index.tsx +20 -6
  216. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/features/StatusPage/index.tsx +113 -0
  217. package/src/app/[variants]/(main)/discover/(detail)/features/Breadcrumb.tsx +4 -3
  218. package/src/app/[variants]/(main)/discover/(list)/_layout/Desktop/Nav.tsx +3 -1
  219. package/src/app/[variants]/(main)/discover/(list)/assistant/AssistantPage.tsx +4 -1
  220. package/src/app/[variants]/(main)/discover/(list)/assistant/Client.tsx +6 -2
  221. package/src/app/[variants]/(main)/discover/(list)/assistant/features/Category/index.tsx +7 -3
  222. package/src/app/[variants]/(main)/discover/(list)/assistant/features/List/Item.tsx +13 -2
  223. package/src/app/[variants]/(main)/discover/(list)/assistant/features/MarketSourceSwitch.tsx +64 -0
  224. package/src/app/[variants]/(main)/discover/(list)/features/SortButton/index.tsx +26 -7
  225. package/src/app/[variants]/(main)/profile/_layout/Desktop/index.tsx +10 -10
  226. package/src/app/[variants]/(main)/settings/_layout/type.ts +1 -1
  227. package/src/app/[variants]/(main)/settings/agent/index.tsx +11 -10
  228. package/src/app/[variants]/(main)/settings/common/index.tsx +1 -1
  229. package/src/app/[variants]/(main)/settings/page.tsx +13 -10
  230. package/src/app/[variants]/(main)/settings/provider/ProviderMenu/Item.tsx +35 -36
  231. package/src/app/[variants]/(main)/settings/provider/ProviderMenu/SearchResult.tsx +5 -5
  232. package/src/app/[variants]/(main)/settings/provider/_layout/Desktop/Container.tsx +10 -4
  233. package/src/app/market-auth-callback/layout.tsx +15 -0
  234. package/src/app/market-auth-callback/page.tsx +196 -0
  235. package/src/features/AgentSetting/AgentPrompt/TokenTag.tsx +3 -2
  236. package/src/features/AgentSetting/AgentTTS/SelectWithTTSPreview.tsx +1 -1
  237. package/src/features/AgentSetting/store/action.ts +1 -1
  238. package/src/features/ChatInput/ActionBar/STT/browser.tsx +1 -1
  239. package/src/features/ChatInput/ActionBar/STT/openai.tsx +1 -1
  240. package/src/features/Conversation/Messages/Group/GroupChildren.tsx +20 -15
  241. package/src/features/Conversation/Messages/Group/GroupContext.tsx +15 -0
  242. package/src/features/Conversation/Messages/Group/Tool/Inspector/BuiltinPluginTitle.tsx +2 -4
  243. package/src/features/Conversation/Messages/Group/Tool/Inspector/ToolTitle.tsx +3 -5
  244. package/src/features/Conversation/Messages/Group/Tool/Inspector/index.tsx +19 -7
  245. package/src/features/Conversation/Messages/Group/Tool/Render/Arguments/index.tsx +14 -12
  246. package/src/features/Conversation/Messages/Group/Tool/Render/Intervention/ApprovalActions.tsx +143 -0
  247. package/src/features/Conversation/Messages/Group/Tool/Render/Intervention/KeyValueEditor.tsx +213 -0
  248. package/src/features/Conversation/Messages/Group/Tool/Render/Intervention/ModeSelector.tsx +134 -0
  249. package/src/features/Conversation/Messages/Group/Tool/Render/Intervention/index.tsx +99 -0
  250. package/src/features/Conversation/Messages/Group/Tool/Render/RejectedResponse.tsx +45 -0
  251. package/src/features/Conversation/Messages/Group/Tool/Render/index.tsx +23 -1
  252. package/src/features/Conversation/Messages/Group/Tool/index.tsx +42 -18
  253. package/src/features/Conversation/Messages/Group/Tools.tsx +3 -1
  254. package/src/features/Conversation/components/Extras/TTS/InitPlayer.tsx +1 -1
  255. package/src/features/PluginTag/PluginStatus.tsx +1 -1
  256. package/src/hooks/useAgentOwnershipCheck.ts +143 -0
  257. package/src/instrumentation.node.ts +3 -2
  258. package/src/layout/AuthProvider/MarketAuth/MarketAuthProvider.tsx +364 -0
  259. package/src/layout/AuthProvider/MarketAuth/errors.ts +75 -0
  260. package/src/layout/AuthProvider/MarketAuth/index.ts +2 -0
  261. package/src/layout/AuthProvider/MarketAuth/oidc.ts +382 -0
  262. package/src/layout/AuthProvider/MarketAuth/types.ts +64 -0
  263. package/src/layout/AuthProvider/index.tsx +17 -4
  264. package/src/locales/default/chat.ts +22 -0
  265. package/src/locales/default/common.ts +1 -0
  266. package/src/locales/default/discover.ts +46 -0
  267. package/src/locales/default/index.ts +2 -0
  268. package/src/locales/default/marketAuth.ts +42 -0
  269. package/src/locales/default/setting.ts +94 -1
  270. package/src/locales/default/topic.ts +1 -0
  271. package/src/server/globalConfig/genServerAiProviderConfig.test.ts +5 -5
  272. package/src/server/globalConfig/genServerAiProviderConfig.ts +1 -1
  273. package/src/server/routers/lambda/market/index.ts +36 -14
  274. package/src/server/routers/lambda/message.ts +6 -3
  275. package/src/server/services/discover/index.test.ts +153 -11
  276. package/src/server/services/discover/index.ts +339 -40
  277. package/src/server/services/message/index.ts +13 -0
  278. package/src/server/sitemap.ts +49 -35
  279. package/src/services/_url.ts +15 -1
  280. package/src/services/chat/chat.test.ts +5 -5
  281. package/src/services/chat/clientModelRuntime.test.ts +1 -1
  282. package/src/services/chat/index.ts +6 -6
  283. package/src/services/chat/types.ts +1 -2
  284. package/src/services/discover.ts +16 -5
  285. package/src/services/electron/remoteServer.ts +8 -1
  286. package/src/services/marketApi.ts +124 -0
  287. package/src/services/message/index.ts +17 -2
  288. package/src/services/models.ts +2 -1
  289. package/src/store/chat/agents/GeneralChatAgent.ts +141 -24
  290. package/src/store/chat/agents/__tests__/GeneralChatAgent.test.ts +605 -0
  291. package/src/store/chat/agents/createAgentExecutors.ts +144 -26
  292. package/src/store/chat/agents/createToolEngine.ts +22 -0
  293. package/src/store/chat/slices/aiChat/actions/conversationControl.ts +106 -0
  294. package/src/store/chat/slices/aiChat/actions/streamingExecutor.ts +54 -26
  295. package/src/store/chat/slices/message/reducer.ts +2 -1
  296. package/src/store/chat/slices/plugin/actions/optimisticUpdate.ts +26 -1
  297. package/src/store/discover/slices/assistant/action.ts +20 -7
  298. package/src/store/user/slices/settings/action.ts +15 -0
  299. package/{packages/utils/src → src/utils}/electron/desktopRemoteRPCFetch.ts +1 -1
  300. package/{packages/utils/src → src/utils/server}/parseModels.ts +1 -2
  301. package/vitest.config.mts +2 -0
  302. package/packages/model-runtime/src/utils/imageToBase64.test.ts +0 -91
  303. package/packages/model-runtime/src/utils/imageToBase64.ts +0 -62
  304. package/src/app/[variants]/(main)/chat/settings/features/SubmitAgentButton/SubmitAgentModal.tsx +0 -98
  305. package/src/app/[variants]/(main)/chat/settings/features/SubmitAgentButton/index.tsx +0 -35
  306. package/src/app/[variants]/(main)/chat/settings/features/SubmitAgentButton/style.ts +0 -47
  307. /package/packages/{utils/src/fetch → fetch-sse/src}/headers.ts +0 -0
  308. /package/packages/{utils/src/fetch → fetch-sse/src}/index.ts +0 -0
  309. /package/packages/{utils/src/fetch → fetch-sse/src}/request.ts +0 -0
  310. /package/{packages/utils/src → src/utils/server}/__snapshots__/parseModels.test.ts.snap +0 -0
  311. /package/{packages/utils/src → src/utils/server}/parseModels.test.ts +0 -0
package/.env.example CHANGED
@@ -13,6 +13,17 @@
13
13
  # Default is '0' (enabled)
14
14
  # ENABLED_CSP=1
15
15
 
16
+ # SSRF Protection Settings
17
+ # Set to '1' to allow connections to private IP addresses (disable SSRF protection)
18
+ # WARNING: Only enable this in trusted environments
19
+ # Default is '0' (SSRF protection enabled)
20
+ # SSRF_ALLOW_PRIVATE_IP_ADDRESS=0
21
+
22
+ # Whitelist of allowed private IP addresses (comma-separated)
23
+ # Only takes effect when SSRF_ALLOW_PRIVATE_IP_ADDRESS is '0'
24
+ # Example: Allow specific internal servers while keeping SSRF protection
25
+ # SSRF_ALLOW_IP_ADDRESS_LIST=192.168.1.100,10.0.0.50
26
+
16
27
  ########################################
17
28
  ########## AI Provider Service #########
18
29
  ########################################
package/CHANGELOG.md CHANGED
@@ -2,6 +2,56 @@
2
2
 
3
3
  # Changelog
4
4
 
5
+ ## [Version 2.0.0-next.49](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.48...v2.0.0-next.49)
6
+
7
+ <sup>Released on **2025-11-13**</sup>
8
+
9
+ #### ✨ Features
10
+
11
+ - **misc**: Support tool invention.
12
+
13
+ #### 🐛 Bug Fixes
14
+
15
+ - **misc**: Update lost i18n files.
16
+
17
+ <br/>
18
+
19
+ <details>
20
+ <summary><kbd>Improvements and Fixes</kbd></summary>
21
+
22
+ #### What's improved
23
+
24
+ - **misc**: Support tool invention, closes [#10182](https://github.com/lobehub/lobe-chat/issues/10182) ([4dca708](https://github.com/lobehub/lobe-chat/commit/4dca708))
25
+
26
+ #### What's fixed
27
+
28
+ - **misc**: Update lost i18n files, closes [#10179](https://github.com/lobehub/lobe-chat/issues/10179) ([b69c7ff](https://github.com/lobehub/lobe-chat/commit/b69c7ff))
29
+
30
+ </details>
31
+
32
+ <div align="right">
33
+
34
+ [![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
35
+
36
+ </div>
37
+
38
+ ## [Version 2.0.0-next.48](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.47...v2.0.0-next.48)
39
+
40
+ <sup>Released on **2025-11-12**</sup>
41
+
42
+ <br/>
43
+
44
+ <details>
45
+ <summary><kbd>Improvements and Fixes</kbd></summary>
46
+
47
+ </details>
48
+
49
+ <div align="right">
50
+
51
+ [![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
52
+
53
+ </div>
54
+
5
55
  ## [Version 2.0.0-next.47](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.46...v2.0.0-next.47)
6
56
 
7
57
  <sup>Released on **2025-11-11**</sup>
package/README.md CHANGED
@@ -352,7 +352,7 @@ In addition, these plugins are not limited to news aggregation, but can also ext
352
352
  | [Web](https://lobechat.com/discover/plugin/web)<br/><sup>By **Proghit** on **2025-01-24**</sup> | Smart web search that reads and analyzes pages to deliver comprehensive answers from Google results.<br/>`web` `search` |
353
353
  | [Bing_websearch](https://lobechat.com/discover/plugin/Bingsearch-identifier)<br/><sup>By **FineHow** on **2024-12-22**</sup> | Search for information from the internet base BingApi<br/>`bingsearch` |
354
354
 
355
- > 📊 Total plugins: [<kbd>**42**</kbd>](https://lobechat.com/discover/plugins)
355
+ > 📊 Total plugins: [<kbd>**41**</kbd>](https://lobechat.com/discover/plugins)
356
356
 
357
357
  <!-- PLUGIN LIST -->
358
358
 
package/README.zh-CN.md CHANGED
@@ -345,7 +345,7 @@ LobeChat 的插件生态系统是其核心功能的重要扩展,它极大地
345
345
  | [网页](https://lobechat.com/discover/plugin/web)<br/><sup>By **Proghit** on **2025-01-24**</sup> | 智能网页搜索,读取和分析页面,以提供来自 Google 结果的全面答案。<br/>`网页` `搜索` |
346
346
  | [必应网页搜索](https://lobechat.com/discover/plugin/Bingsearch-identifier)<br/><sup>By **FineHow** on **2024-12-22**</sup> | 通过 BingApi 搜索互联网上的信息<br/>`bingsearch` |
347
347
 
348
- > 📊 Total plugins: [<kbd>**42**</kbd>](https://lobechat.com/discover/plugins)
348
+ > 📊 Total plugins: [<kbd>**41**</kbd>](https://lobechat.com/discover/plugins)
349
349
 
350
350
  <!-- PLUGIN LIST -->
351
351
 
@@ -1,4 +1,4 @@
1
- import { DataSyncConfig } from '@lobechat/electron-client-ipc';
1
+ import { DataSyncConfig, MarketAuthorizationParams } from '@lobechat/electron-client-ipc';
2
2
  import { BrowserWindow, shell } from 'electron';
3
3
  import crypto from 'node:crypto';
4
4
  import querystring from 'node:querystring';
@@ -117,7 +117,32 @@ export default class AuthCtr extends ControllerModule {
117
117
  }
118
118
 
119
119
  /**
120
- * Start polling mechanism to retrieve credentials
120
+ * Request Market OAuth authorization (desktop)
121
+ */
122
+ @ipcClientEvent('requestMarketAuthorization')
123
+ async requestMarketAuthorization(params: MarketAuthorizationParams) {
124
+ const { authUrl } = params;
125
+
126
+ if (!authUrl) {
127
+ const errorMessage = 'Market authorization URL is required';
128
+ logger.error(errorMessage);
129
+ return { error: errorMessage, success: false };
130
+ }
131
+
132
+ logger.info(`Requesting market authorization via: ${authUrl}`);
133
+ try {
134
+ await shell.openExternal(authUrl);
135
+ logger.debug('Opening market authorization URL in default browser');
136
+ return { success: true };
137
+ } catch (error) {
138
+ const message = error instanceof Error ? error.message : String(error);
139
+ logger.error('Market authorization request failed:', error);
140
+ return { error: message, success: false };
141
+ }
142
+ }
143
+
144
+ /**
145
+ * 启动轮询机制获取凭证
121
146
  */
122
147
  private startPolling() {
123
148
  if (!this.authRequestState) {
@@ -50,7 +50,9 @@ export class ProtocolManager {
50
50
 
51
51
  // Check if already registered
52
52
  const isCurrentlyRegistered = app.isDefaultProtocolClient(this.protocolScheme);
53
- logger.debug(`🔗 [Protocol] Is currently default protocol client: ${isCurrentlyRegistered}`);
53
+ logger.debug(
54
+ `🔗 [Protocol] ${this.protocolScheme}:// is currently registered: ${isCurrentlyRegistered}`,
55
+ );
54
56
 
55
57
  // Register as default protocol client
56
58
  let registrationResult: boolean;
@@ -71,7 +73,9 @@ export class ProtocolManager {
71
73
  registrationResult = app.setAsDefaultProtocolClient(this.protocolScheme);
72
74
  }
73
75
 
74
- logger.debug(`🔗 [Protocol] Registration result: ${registrationResult}`);
76
+ logger.debug(
77
+ `🔗 [Protocol] Registration result for ${this.protocolScheme}://: ${registrationResult}`,
78
+ );
75
79
 
76
80
  if (!registrationResult) {
77
81
  logger.error(
@@ -83,7 +87,9 @@ export class ProtocolManager {
83
87
 
84
88
  // Verify registration
85
89
  const isRegisteredAfter = app.isDefaultProtocolClient(this.protocolScheme);
86
- logger.debug(`🔗 [Protocol] Final registration status: ${isRegisteredAfter}`);
90
+ logger.debug(
91
+ `🔗 [Protocol] Final registration status for ${this.protocolScheme}://: ${isRegisteredAfter}`,
92
+ );
87
93
  }
88
94
 
89
95
  /**
@@ -123,7 +129,6 @@ export class ProtocolManager {
123
129
  */
124
130
  private getProtocolUrlFromArgs(args: string[]): string | null {
125
131
  const protocolPrefix = `${this.protocolScheme}://`;
126
-
127
132
  logger.debug(`🔗 [Protocol] Searching for protocol URLs in args: ${JSON.stringify(args)}`);
128
133
  logger.debug(`🔗 [Protocol] Looking for prefix: ${protocolPrefix}`);
129
134
 
package/changelog/v1.json CHANGED
@@ -1,4 +1,21 @@
1
1
  [
2
+ {
3
+ "children": {
4
+ "features": [
5
+ "Support tool invention."
6
+ ],
7
+ "fixes": [
8
+ "Update lost i18n files."
9
+ ]
10
+ },
11
+ "date": "2025-11-13",
12
+ "version": "2.0.0-next.49"
13
+ },
14
+ {
15
+ "children": {},
16
+ "date": "2025-11-12",
17
+ "version": "2.0.0-next.48"
18
+ },
2
19
  {
3
20
  "children": {
4
21
  "fixes": [
@@ -6,6 +6,7 @@ table agents {
6
6
  tags jsonb [default: `[]`]
7
7
  avatar text
8
8
  background_color text
9
+ market_identifier text
9
10
  plugins jsonb [default: `[]`]
10
11
  client_id text
11
12
  user_id text [not null]
@@ -345,6 +346,7 @@ table message_plugins {
345
346
  id text [pk, not null]
346
347
  tool_call_id text
347
348
  type text [default: 'default']
349
+ intervention jsonb
348
350
  api_name text
349
351
  arguments text
350
352
  identifier text
@@ -127,16 +127,62 @@ For specific content, please refer to the [Feature Flags](/docs/self-hosting/adv
127
127
  ### `SSRF_ALLOW_PRIVATE_IP_ADDRESS`
128
128
 
129
129
  - Type: Optional
130
- - Description: Allow to connect private IP address. In a trusted environment, it can be set to true to turn off SSRF protection.
130
+ - Description: Controls whether to allow connections to private IP addresses. Set to `1` to disable SSRF protection and allow all private IP addresses. In a trusted environment (e.g., internal network), this can be enabled to allow access to internal resources.
131
131
  - Default: `0`
132
132
  - Example: `1` or `0`
133
133
 
134
+ <Callout type="warning">
135
+ **Security Notice**: Enabling this option will disable SSRF protection and allow connections to private
136
+ IP addresses (127.0.0.0/8, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, etc.). Only enable this in
137
+ trusted environments where you need to access internal network resources.
138
+ </Callout>
139
+
140
+ **Use Cases**:
141
+
142
+ LobeChat performs SSRF security checks in the following scenarios:
143
+
144
+ 1. **Image/Video URL to Base64 Conversion**: When processing media messages (e.g., vision models, multimodal models), LobeChat converts image and video URLs to base64 format. This check prevents malicious users from accessing internal network resources.
145
+
146
+ Examples:
147
+
148
+ - Image: A user sends an image message with URL `http://192.168.1.100/admin/secrets.png`
149
+ - Video: A user sends a video message with URL `http://10.0.0.50/internal/meeting.mp4`
150
+
151
+ Without SSRF protection, these requests could expose internal network resources.
152
+
153
+ 2. **Web Crawler**: When using web crawling features to fetch external content.
154
+
155
+ 3. **Proxy Requests**: When proxying external API requests.
156
+
157
+ **Configuration Examples**:
158
+
159
+ ```bash
160
+ # Scenario 1: Public deployment (recommended)
161
+ # Block all private IP addresses for security
162
+ SSRF_ALLOW_PRIVATE_IP_ADDRESS=0
163
+
164
+ # Scenario 2: Internal deployment
165
+ # Allow all private IP addresses to access internal image servers
166
+ SSRF_ALLOW_PRIVATE_IP_ADDRESS=1
167
+
168
+ # Scenario 3: Hybrid deployment (most common)
169
+ # Block private IPs by default, but allow specific trusted internal servers
170
+ SSRF_ALLOW_PRIVATE_IP_ADDRESS=0
171
+ SSRF_ALLOW_IP_ADDRESS_LIST=192.168.1.100,10.0.0.50
172
+ ```
173
+
134
174
  ### `SSRF_ALLOW_IP_ADDRESS_LIST`
135
175
 
136
176
  - Type: Optional
137
- - Description: Allow private IP address list, multiple IP addresses are separated by commas. Only when `SSRF_ALLOW_PRIVATE_IP_ADDRESS` is `0`, it takes effect.
177
+ - Description: Whitelist of allowed IP addresses, separated by commas. Only takes effect when `SSRF_ALLOW_PRIVATE_IP_ADDRESS` is `0`. Use this to allow specific internal IP addresses while keeping SSRF protection enabled for other private IPs.
138
178
  - Default: -
139
- - Example: `198.18.1.62,224.0.0.3`
179
+ - Example: `192.168.1.100,10.0.0.50,172.16.0.10`
180
+
181
+ **Common Use Cases**:
182
+
183
+ - Allow access to internal image storage server: `192.168.1.100`
184
+ - Allow access to internal API gateway: `10.0.0.50`
185
+ - Allow access to internal documentation server: `172.16.0.10`
140
186
 
141
187
  ### `ENABLE_AUTH_PROTECTION`
142
188
 
@@ -123,16 +123,61 @@ LobeChat 在部署时提供了一些额外的配置项,你可以使用环境
123
123
  ### `SSRF_ALLOW_PRIVATE_IP_ADDRESS`
124
124
 
125
125
  - 类型:可选
126
- - 描述:是否允许连接私有 IP 地址。在可信环境中可以设置为 true 来关闭 SSRF 防护。
126
+ - 描述:控制是否允许连接私有 IP 地址。设置为 `1` 时将关闭 SSRF 防护并允许所有私有 IP 地址。在可信环境(如内网部署)中,可以启用此选项以访问内部资源。
127
127
  - 默认值:`0`
128
- - 示例:`1` or `0`
128
+ - 示例:`1` `0`
129
+
130
+ <Callout type="warning">
131
+ **安全提示**:启用此选项将关闭 SSRF 防护,允许连接私有 IP 地址段(127.0.0.0/8、10.0.0.0/8、172.16.0.0/12、192.168.0.0/16
132
+ 等)。仅在需要访问内网资源的可信环境中启用。
133
+ </Callout>
134
+
135
+ **应用场景**:
136
+
137
+ LobeChat 会在以下场景执行 SSRF 安全检查:
138
+
139
+ 1. **图片 / 视频 URL 转 Base64**:在处理媒体消息时(例如视觉模型、多模态模型),LobeChat 会将图片和视频 URL 转换为 base64 格式。此检查可防止恶意用户通过媒体 URL 访问内网资源。
140
+
141
+ 举例:
142
+
143
+ - 图片:用户发送图片消息,URL 为 `http://192.168.1.100/admin/secrets.png`
144
+ - 视频:用户发送视频消息,URL 为 `http://10.0.0.50/internal/meeting.mp4`
145
+
146
+ 若无 SSRF 防护,这些请求可能导致内网资源泄露。
147
+
148
+ 2. **网页爬取**:使用网页爬取功能获取外部内容时。
149
+
150
+ 3. **代理请求**:代理外部 API 请求时。
151
+
152
+ **配置示例**:
153
+
154
+ ```bash
155
+ # 场景 1:公网部署(推荐)
156
+ # 阻止所有私有 IP 访问,保证安全
157
+ SSRF_ALLOW_PRIVATE_IP_ADDRESS=0
158
+
159
+ # 场景 2:内网部署
160
+ # 允许所有私有 IP,可访问内网图片服务器等资源
161
+ SSRF_ALLOW_PRIVATE_IP_ADDRESS=1
162
+
163
+ # 场景 3:混合部署(最常见)
164
+ # 默认阻止私有 IP,但允许特定可信的内网服务器
165
+ SSRF_ALLOW_PRIVATE_IP_ADDRESS=0
166
+ SSRF_ALLOW_IP_ADDRESS_LIST=192.168.1.100,10.0.0.50
167
+ ```
129
168
 
130
169
  ### `SSRF_ALLOW_IP_ADDRESS_LIST`
131
170
 
132
171
  - 类型:可选
133
- - 说明:允许的私有 IP 地址列表,多个 IP 地址用逗号分隔。仅在 `SSRF_ALLOW_PRIVATE_IP_ADDRESS` 为 `0` 时生效。
172
+ - 描述:允许访问的 IP 地址白名单,多个 IP 地址用逗号分隔。仅在 `SSRF_ALLOW_PRIVATE_IP_ADDRESS` 为 `0` 时生效。使用此选项可以在保持 SSRF 防护的同时,允许访问特定的内网 IP 地址。
134
173
  - 默认值:-
135
- - 示例:`198.18.1.62,224.0.0.3`
174
+ - 示例:`192.168.1.100,10.0.0.50,172.16.0.10`
175
+
176
+ **常见使用场景**:
177
+
178
+ - 允许访问内网图片存储服务器:`192.168.1.100`
179
+ - 允许访问内网 API 网关:`10.0.0.50`
180
+ - 允许访问内网文档服务器:`172.16.0.10`
136
181
 
137
182
  ### `ENABLE_AUTH_PROTECTION`
138
183
 
@@ -240,6 +240,7 @@
240
240
  "noMatchingAgents": "لا يوجد أعضاء مطابقون",
241
241
  "noMembersYet": "لا يوجد أعضاء في هذه المجموعة بعد. انقر على زر + لدعوة المساعدين.",
242
242
  "noSelectedAgents": "لم يتم اختيار أي أعضاء بعد",
243
+ "openInNewWindow": "افتح الصفحة في نافذة جديدة",
243
244
  "owner": "مالك المجموعة",
244
245
  "pin": "تثبيت",
245
246
  "pinOff": "إلغاء التثبيت",
@@ -41,9 +41,29 @@
41
41
  "openingMessage": "رسالة الافتتاح",
42
42
  "openingQuestions": "أسئلة الافتتاح",
43
43
  "title": "إعدادات المساعد"
44
+ },
45
+ "version": {
46
+ "empty": "لا توجد إصدارات سابقة",
47
+ "status": {
48
+ "archived": "مؤرشف",
49
+ "deprecated": "مرفوض",
50
+ "unpublished": "قيد المراجعة"
51
+ },
52
+ "table": {
53
+ "isLatest": "أحدث إصدار",
54
+ "isValidated": "تم التحقق منه",
55
+ "publishAt": "تاريخ النشر",
56
+ "version": "رقم الإصدار"
57
+ },
58
+ "title": "سجل الإصدارات"
44
59
  }
45
60
  },
46
61
  "list": "قائمة المساعدين",
62
+ "marketSource": {
63
+ "label": "تبديل مصدر السوق",
64
+ "legacy": "السوق القديم",
65
+ "new": "السوق الجديد"
66
+ },
47
67
  "more": "المزيد",
48
68
  "plugins": "دمج الإضافات",
49
69
  "recentSubmits": "آخر التحديثات",
@@ -51,10 +71,35 @@
51
71
  "createdAt": "تم النشر مؤخراً",
52
72
  "identifier": "معرف المساعد",
53
73
  "knowledgeCount": "عدد قواعد المعرفة",
74
+ "myown": "عرض مساعدي",
54
75
  "pluginCount": "عدد الإضافات",
55
76
  "title": "اسم المساعد",
56
77
  "tokenUsage": "استهلاك التوكن"
57
78
  },
79
+ "status": {
80
+ "archived": {
81
+ "reasons": {
82
+ "official": "تمت إزالة المساعد من قبل الإدارة لأسباب أمنية أو سياسية",
83
+ "owner": "قام مالك المساعد بإزالته أو أرشفته طوعًا"
84
+ },
85
+ "subtitle": "المساعد الذي تحاول الوصول إليه تم أرشفته للأسباب التالية المحتملة:",
86
+ "title": "تم أرشفة المساعد"
87
+ },
88
+ "backToMarket": "العودة إلى سوق المساعدين",
89
+ "deprecated": {
90
+ "reasons": {
91
+ "official": "تمت إزالة المساعد من قبل الإدارة لأسباب أمنية أو سياسية",
92
+ "owner": "قام مالك المساعد بإزالته أو رفضه طوعًا"
93
+ },
94
+ "subtitle": "المساعد الذي تحاول الوصول إليه تم رفضه للأسباب التالية المحتملة:",
95
+ "title": "تم رفض المساعد"
96
+ },
97
+ "support": "إذا واجهت أي مشاكل، يرجى نسخ الرابط وإرساله إلى <1>support@lobehub.com</1> للاستفسار.",
98
+ "unpublished": {
99
+ "subtitle": "المساعد الذي تحاول الوصول إليه قيد المراجعة حاليًا. إذا كان لديك أي استفسار، يرجى نسخ الرابط وإرساله إلى <1>support@lobehub.com</1>.",
100
+ "title": "المساعد قيد المراجعة"
101
+ }
102
+ },
58
103
  "suggestions": "اقتراحات ذات صلة",
59
104
  "systemRole": "إعدادات المساعد",
60
105
  "tokenUsage": "استهلاك توكنات تعليمات المساعد",
@@ -0,0 +1,42 @@
1
+ {
2
+ "callback": {
3
+ "buttons": {
4
+ "close": "إغلاق النافذة"
5
+ },
6
+ "messages": {
7
+ "authFailed": "فشل التفويض: {{error}}",
8
+ "missingParams": "معلمات التفويض مفقودة",
9
+ "processing": "جارٍ معالجة التفويض...",
10
+ "successWithCountdown": "{{message}} سيتم إغلاق النافذة تلقائيًا خلال {{countdown}} ثانية",
11
+ "successWithRedirect": "تم التفويض بنجاح! جارٍ إعادة التوجيه..."
12
+ },
13
+ "titles": {
14
+ "error": "فشل التفويض",
15
+ "loading": "تفويض LobeHub Market",
16
+ "success": "تم التفويض بنجاح"
17
+ }
18
+ },
19
+ "errors": {
20
+ "authorizationFailed": "فشل التفويض، يرجى المحاولة مرة أخرى.",
21
+ "browserOnly": "يمكن بدء عملية التفويض من خلال المتصفح فقط.",
22
+ "codeConsumed": "تم استخدام رمز التفويض، يرجى المحاولة مرة أخرى.",
23
+ "codeVerifierMissing": "جلسة التفويض غير صالحة، يرجى إعادة تسجيل الدخول.",
24
+ "general": "حدث خطأ أثناء التفويض، يرجى المحاولة مرة أخرى.",
25
+ "handoffFailed": "تعذر الحصول على نتيجة التفويض، يرجى المحاولة مرة أخرى.",
26
+ "handoffTimeout": "انتهت مهلة التفويض، يرجى إكمال العملية في المتصفح ثم المحاولة مرة أخرى.",
27
+ "oidcNotReady": "خدمة التفويض غير جاهزة بعد، يرجى المحاولة لاحقًا.",
28
+ "openBrowserFailed": "تعذر فتح متصفح النظام، يرجى المحاولة مرة أخرى.",
29
+ "openPopupFailed": "تعذر فتح نافذة التفويض، يرجى التحقق من إعدادات حظر النوافذ المنبثقة في المتصفح.",
30
+ "popupClosed": "تم إغلاق نافذة التفويض قبل إتمام العملية.",
31
+ "sessionExpired": "انتهت صلاحية جلسة التفويض، يرجى تسجيل الدخول مرة أخرى.",
32
+ "stateMismatch": "حالة التفويض غير متطابقة، يرجى المحاولة مرة أخرى.",
33
+ "stateMissing": "لم يتم العثور على حالة التفويض، يرجى المحاولة مرة أخرى."
34
+ },
35
+ "messages": {
36
+ "loading": "جارٍ بدء عملية التفويض...",
37
+ "success": {
38
+ "submit": "تم التفويض بنجاح! يمكنك الآن نشر المساعد.",
39
+ "upload": "تم التفويض بنجاح! يمكنك الآن نشر إصدار جديد."
40
+ }
41
+ }
42
+ }
@@ -2,6 +2,45 @@
2
2
  "about": {
3
3
  "title": "حول"
4
4
  },
5
+ "agentInfoDescription": {
6
+ "basic": {
7
+ "avatar": "الصورة الرمزية",
8
+ "description": "الوصف",
9
+ "name": "الاسم",
10
+ "tags": "الوسوم",
11
+ "title": "معلومات المساعد"
12
+ },
13
+ "chat": {
14
+ "displayMode": "وضع العرض",
15
+ "enableHistoryCount": "تمكين عداد الرسائل السابقة",
16
+ "historyCount": "عدد الرسائل السابقة",
17
+ "no": "لا",
18
+ "searchMode": "وضع البحث",
19
+ "title": "تفضيلات الدردشة",
20
+ "yes": "نعم"
21
+ },
22
+ "model": {
23
+ "maxTokens": "الحد الأقصى للرموز",
24
+ "model": "النموذج",
25
+ "provider": "المزود",
26
+ "temperature": "درجة الحرارة",
27
+ "title": "إعدادات النموذج",
28
+ "topP": "قيمة Top P"
29
+ },
30
+ "plugins": {
31
+ "count": "إعدادات الإضافات ({{count}})",
32
+ "empty": "لم يتم تثبيت أي إضافات بعد",
33
+ "title": "الإضافات المثبتة"
34
+ },
35
+ "role": {
36
+ "systemRole": "تعليمات النظام",
37
+ "title": "إعدادات الدور"
38
+ },
39
+ "value": {
40
+ "unset": "غير مُعيّن",
41
+ "untitled": "مساعد بدون عنوان"
42
+ }
43
+ },
5
44
  "agentTab": {
6
45
  "chat": "تفضيلات الدردشة",
7
46
  "meta": "معلومات المساعد",
@@ -18,6 +57,8 @@
18
57
  },
19
58
  "title": "تحليلات"
20
59
  },
60
+ "checking": "جارٍ التحقق...",
61
+ "checkingPermissions": "جارٍ التحقق من الأذونات...",
21
62
  "danger": {
22
63
  "clear": {
23
64
  "action": "مسح الآن",
@@ -146,6 +187,58 @@
146
187
  },
147
188
  "waitingForMore": "يتم <1>التخطيط لتوفير</1> المزيد من النماذج، ترقبوا المزيد"
148
189
  },
190
+ "marketPublish": {
191
+ "modal": {
192
+ "changelog": {
193
+ "extra": "صف التغييرات والتحسينات الرئيسية في هذا الإصدار",
194
+ "label": "سجل التغييرات",
195
+ "maxLengthError": "لا يمكن أن يتجاوز سجل التغييرات 500 حرف",
196
+ "placeholder": "يرجى إدخال سجل التغييرات",
197
+ "required": "يرجى إدخال سجل التغييرات"
198
+ },
199
+ "comparison": {
200
+ "local": "الإصدار المحلي الحالي",
201
+ "remote": "الإصدار المنشور الحالي"
202
+ },
203
+ "identifier": {
204
+ "extra": "سيكون المعرف هو الهوية الفريدة للمساعد، يُفضل استخدام أحرف صغيرة وأرقام وشرطات",
205
+ "label": "معرف المساعد",
206
+ "lengthError": "يجب أن يتراوح طول المعرف بين 3 و50 حرفًا",
207
+ "patternError": "يمكن أن يحتوي المعرف فقط على أحرف صغيرة وأرقام وشرطات",
208
+ "placeholder": "يرجى إدخال معرف فريد للمساعد، مثل: web-development",
209
+ "required": "يرجى إدخال معرف المساعد"
210
+ },
211
+ "loading": {
212
+ "fetchingRemote": "جارٍ تحميل البيانات البعيدة...",
213
+ "submit": "جارٍ نشر المساعد...",
214
+ "upload": "جارٍ نشر الإصدار الجديد..."
215
+ },
216
+ "messages": {
217
+ "createVersionFailed": "فشل إنشاء الإصدار: {{message}}",
218
+ "fetchRemoteFailed": "فشل في جلب بيانات المساعد من السوق",
219
+ "missingIdentifier": "لا يحتوي هذا المساعد على معرف سوق حتى الآن",
220
+ "notAuthenticated": "يرجى تسجيل الدخول إلى حساب السوق أولاً",
221
+ "publishFailed": "فشل النشر: {{message}}"
222
+ },
223
+ "submitButton": "نشر",
224
+ "title": {
225
+ "submit": "مشاركة في سوق المساعدين",
226
+ "upload": "نشر إصدار جديد"
227
+ }
228
+ },
229
+ "resultModal": {
230
+ "message": "تم إرسال المساعد للمراجعة، وسيتم نشره تلقائيًا بعد الموافقة. انقر على \"عرض في السوق\" لرؤية المساعد المنشور.",
231
+ "view": "عرض في السوق"
232
+ },
233
+ "submit": {
234
+ "button": "مشاركة في السوق",
235
+ "tooltip": "شارك المساعد في سوق المساعدين"
236
+ },
237
+ "upload": {
238
+ "button": "نشر إصدار جديد",
239
+ "tooltip": "نشر إصدار جديد في سوق المساعدين"
240
+ }
241
+ },
149
242
  "message": {
150
243
  "success": "تم التحديث بنجاح"
151
244
  },
@@ -561,7 +654,7 @@
561
654
  },
562
655
  "submitAgentModal": {
563
656
  "button": "تقديم المساعد",
564
- "identifier": "معرف المساعد",
657
+ "identifier": "معرف المساعد (identifier)",
565
658
  "metaMiss": "يرجى استكمال معلومات المساعد قبل التقديم، يجب أن تتضمن الاسم والوصف والعلامة",
566
659
  "placeholder": "الرجاء إدخال معرف المساعد، يجب أن يكون فريدًا، مثل تطوير الويب",
567
660
  "tooltips": "مشاركة في سوق المساعدين"
@@ -6,6 +6,7 @@
6
6
  "confirmRemoveUnstarred": "سيتم حذف المواضيع غير المفضلة، ولن يمكن استعادتها بعد الحذف، يرجى توخي الحذر.",
7
7
  "duplicate": "إنشاء نسخة",
8
8
  "export": "تصدير الموضوع",
9
+ "openInNewWindow": "افتح الصفحة في نافذة جديدة",
9
10
  "removeAll": "حذف جميع المواضيع",
10
11
  "removeUnstarred": "حذف المواضيع غير المفضلة"
11
12
  },
@@ -240,6 +240,7 @@
240
240
  "noMatchingAgents": "Няма съвпадащи членове",
241
241
  "noMembersYet": "В тази група все още няма членове. Щракнете върху бутона +, за да поканите асистенти.",
242
242
  "noSelectedAgents": "Все още не са избрани членове",
243
+ "openInNewWindow": "Отвори в нов прозорец",
243
244
  "owner": "Собственик на групата",
244
245
  "pin": "Закачи",
245
246
  "pinOff": "Откачи",