@lobehub/chat 1.82.0 → 1.82.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cursor/rules/desktop-local-tools-implement.mdc +80 -0
- package/.env.desktop +2 -1
- package/.github/scripts/pr-comment.js +4 -9
- package/CHANGELOG.md +51 -0
- package/changelog/v1.json +18 -0
- package/locales/ar/electron.json +38 -2
- package/locales/ar/plugin.json +51 -31
- package/locales/bg-BG/electron.json +38 -2
- package/locales/bg-BG/plugin.json +51 -31
- package/locales/de-DE/electron.json +38 -2
- package/locales/de-DE/plugin.json +29 -9
- package/locales/en-US/electron.json +38 -2
- package/locales/en-US/plugin.json +29 -9
- package/locales/es-ES/electron.json +38 -2
- package/locales/es-ES/plugin.json +51 -31
- package/locales/fa-IR/electron.json +38 -2
- package/locales/fa-IR/plugin.json +51 -31
- package/locales/fr-FR/electron.json +38 -2
- package/locales/fr-FR/plugin.json +51 -31
- package/locales/it-IT/electron.json +38 -2
- package/locales/it-IT/plugin.json +51 -31
- package/locales/ja-JP/electron.json +38 -2
- package/locales/ja-JP/plugin.json +51 -31
- package/locales/ko-KR/electron.json +38 -2
- package/locales/ko-KR/plugin.json +29 -9
- package/locales/nl-NL/electron.json +38 -2
- package/locales/nl-NL/plugin.json +51 -31
- package/locales/pl-PL/electron.json +38 -2
- package/locales/pl-PL/plugin.json +29 -9
- package/locales/pt-BR/electron.json +38 -2
- package/locales/pt-BR/plugin.json +51 -31
- package/locales/ru-RU/electron.json +38 -2
- package/locales/ru-RU/plugin.json +51 -31
- package/locales/tr-TR/electron.json +38 -2
- package/locales/tr-TR/plugin.json +51 -31
- package/locales/vi-VN/electron.json +38 -2
- package/locales/vi-VN/plugin.json +29 -9
- package/locales/zh-CN/electron.json +38 -2
- package/locales/zh-CN/plugin.json +30 -10
- package/locales/zh-TW/electron.json +38 -2
- package/locales/zh-TW/plugin.json +51 -31
- package/package.json +1 -1
- package/packages/electron-client-ipc/src/events/update.ts +3 -3
- package/src/app/[variants]/(main)/_layout/Desktop/ElectronTitlebar/Connection/Mode.tsx +222 -0
- package/src/app/[variants]/(main)/_layout/Desktop/ElectronTitlebar/Connection/Option.tsx +104 -0
- package/src/app/[variants]/(main)/_layout/Desktop/ElectronTitlebar/Connection/Sync.tsx +42 -0
- package/src/app/[variants]/(main)/_layout/Desktop/ElectronTitlebar/Connection/Waiting.tsx +203 -0
- package/src/app/[variants]/(main)/_layout/Desktop/ElectronTitlebar/Connection/index.tsx +57 -0
- package/src/app/[variants]/(main)/_layout/Desktop/ElectronTitlebar/UpdateModal.tsx +242 -0
- package/src/app/[variants]/(main)/_layout/Desktop/ElectronTitlebar/UpdateNotification.tsx +193 -0
- package/src/app/[variants]/(main)/_layout/Desktop/{Titlebar.tsx → ElectronTitlebar/index.tsx} +15 -1
- package/src/app/[variants]/(main)/_layout/Desktop/SideBar/BottomActions.tsx +3 -2
- package/src/app/[variants]/(main)/_layout/Desktop/index.tsx +1 -1
- package/src/app/[variants]/layout.tsx +2 -1
- package/src/config/aiModels/openrouter.ts +6 -6
- package/src/features/Conversation/components/MarkdownElements/LocalFile/Render/LocalFile.tsx +65 -0
- package/src/features/Conversation/components/MarkdownElements/LocalFile/Render/index.tsx +29 -0
- package/src/features/Conversation/components/MarkdownElements/LocalFile/index.ts +16 -0
- package/src/features/Conversation/components/MarkdownElements/index.ts +7 -1
- package/src/features/Conversation/components/MarkdownElements/remarkPlugins/__snapshots__/createRemarkSelfClosingTagPlugin.test.ts.snap +260 -0
- package/src/features/Conversation/components/MarkdownElements/remarkPlugins/createRemarkSelfClosingTagPlugin.test.ts +204 -0
- package/src/features/Conversation/components/MarkdownElements/remarkPlugins/createRemarkSelfClosingTagPlugin.ts +133 -0
- package/src/features/Conversation/components/MarkdownElements/type.ts +5 -1
- package/src/features/PluginDevModal/MCPManifestForm/ArgsInput.tsx +20 -0
- package/src/features/PluginDevModal/MCPManifestForm/MCPTypeSelect.tsx +176 -0
- package/src/features/PluginDevModal/MCPManifestForm/index.tsx +289 -0
- package/src/features/PluginDevModal/MCPManifestForm/utils.test.ts +262 -0
- package/src/features/PluginDevModal/MCPManifestForm/utils.ts +151 -0
- package/src/features/PluginDevModal/index.tsx +31 -22
- package/src/libs/agent-runtime/utils/openaiCompatibleFactory/index.ts +1 -1
- package/src/libs/mcp/__tests__/__snapshots__/index.test.ts.snap +0 -56
- package/src/locales/default/electron.ts +38 -2
- package/src/locales/default/plugin.ts +28 -8
- package/src/server/modules/ElectronIPCClient/index.ts +36 -0
- package/src/server/routers/lambda/session.ts +2 -6
- package/src/server/routers/tools/mcp.ts +6 -0
- package/src/server/services/file/impls/index.ts +9 -1
- package/src/server/services/file/impls/local.test.ts +299 -0
- package/src/server/services/file/impls/local.ts +183 -0
- package/src/server/services/mcp/index.ts +26 -0
- package/src/services/aiModel/index.ts +5 -1
- package/src/services/aiProvider/index.ts +5 -1
- package/src/services/electron/autoUpdate.ts +4 -0
- package/src/services/file/index.ts +5 -1
- package/src/services/mcp.ts +13 -2
- package/src/services/message/index.ts +5 -1
- package/src/services/plugin/index.ts +5 -1
- package/src/services/session/index.ts +5 -1
- package/src/services/tableViewer/desktop.ts +15 -0
- package/src/services/tableViewer/index.ts +4 -1
- package/src/services/thread/index.ts +5 -1
- package/src/services/topic/index.ts +5 -1
- package/src/services/user/index.ts +5 -1
- package/src/store/electron/actions/app.ts +59 -0
- package/src/store/electron/actions/sync.ts +5 -1
- package/src/store/electron/initialState.ts +3 -1
- package/src/store/electron/store.ts +6 -1
- package/src/store/tool/slices/customPlugin/action.ts +16 -4
- package/src/utils/client/GlobalAgentContextManager.ts +85 -0
- package/src/utils/promptTemplate.test.ts +78 -0
- package/src/utils/promptTemplate.ts +17 -0
- package/src/features/PluginDevModal/MCPManifestForm.tsx +0 -164
@@ -0,0 +1,80 @@
|
|
1
|
+
---
|
2
|
+
description:
|
3
|
+
globs:
|
4
|
+
alwaysApply: false
|
5
|
+
---
|
6
|
+
**新增桌面端工具流程:**
|
7
|
+
|
8
|
+
1. **定义工具接口 (Manifest):**
|
9
|
+
* **文件:** `src/tools/[tool_category]/index.ts` (例如: `src/tools/local-files/index.ts`)
|
10
|
+
* **操作:**
|
11
|
+
* 在 `ApiName` 对象(例如 `LocalFilesApiName`)中添加一个新的、唯一的 API 名称。
|
12
|
+
* 在 `Manifest` 对象(例如 `LocalFilesManifest`)的 `api` 数组中,新增一个对象来定义新工具的接口。
|
13
|
+
* **关键字段:**
|
14
|
+
* `name`: 使用上一步定义的 API 名称。
|
15
|
+
* `description`: 清晰描述工具的功能,供 Agent 理解和向用户展示。
|
16
|
+
* `parameters`: 使用 JSON Schema 定义工具所需的输入参数。
|
17
|
+
* `type`: 通常是 'object'。
|
18
|
+
* `properties`: 定义每个参数的名称、`description`、`type` (string, number, boolean, array, etc.),使用英文。
|
19
|
+
* `required`: 一个字符串数组,列出必须提供的参数名称。
|
20
|
+
|
21
|
+
2. **定义相关类型:**
|
22
|
+
* **文件 1:** `packages/electron-client-ipc/src/types.ts` (或类似的共享 IPC 类型文件)
|
23
|
+
* **操作:** 定义传递给 IPC 事件的参数类型接口 (例如: `RenameLocalFileParams`, `MoveLocalFileParams`)。确保与 Manifest 中定义的 `parameters` 一致。
|
24
|
+
* **文件 2:** `src/tools/[tool_category]/type.ts` (例如: `src/tools/local-files/type.ts`)
|
25
|
+
* **操作:** 定义此工具执行后,存储在前端 Zustand Store 中的状态类型接口 (例如: `LocalRenameFileState`, `LocalMoveFileState`)。这通常包含操作结果(成功/失败)、错误信息以及相关数据(如旧路径、新路径等)。
|
26
|
+
|
27
|
+
3. **实现前端状态管理 (Store Action):**
|
28
|
+
* **文件:** `src/store/chat/slices/builtinTool/actions/[tool_category].ts` (例如: `src/store/chat/slices/builtinTool/actions/localFile.ts`)
|
29
|
+
* **操作:**
|
30
|
+
* 导入在步骤 2 中定义的 IPC 参数类型和状态类型。
|
31
|
+
* 在 Action 接口 (例如: `LocalFileAction`) 中添加新 Action 的方法签名,使用对应的 IPC 参数类型。
|
32
|
+
* 在 `createSlice` (例如: `localFileSlice`) 中实现该 Action 方法:
|
33
|
+
* 接收 `id` (消息 ID) 和 `params` (符合 IPC 参数类型)。
|
34
|
+
* 设置加载状态 (`toggleLocalFileLoading(id, true)`)。
|
35
|
+
* 调用对应的 `Service` 层方法 (见步骤 4),传递 `params`。
|
36
|
+
* 使用 `try...catch` 处理 `Service` 调用可能发生的错误。
|
37
|
+
* **成功时:**
|
38
|
+
* 调用 `updatePluginState(id, {...})` 更新插件状态,使用步骤 2 中定义的状态类型。
|
39
|
+
* 调用 `internal_updateMessageContent(id, JSON.stringify({...}))` 更新消息内容,通常包含成功确认信息。
|
40
|
+
* **失败时:**
|
41
|
+
* 记录错误 (`console.error`)。
|
42
|
+
* 调用 `updatePluginState(id, {...})` 更新插件状态,包含错误信息。
|
43
|
+
* 调用 `internal_updateMessagePluginError(id, {...})` 设置消息的错误状态。
|
44
|
+
* 调用 `internal_updateMessageContent(id, JSON.stringify({...}))` 更新消息内容,包含错误信息。
|
45
|
+
* 在 `finally` 块中取消加载状态 (`toggleLocalFileLoading(id, false)`)。
|
46
|
+
* 返回操作是否成功 (`boolean`)。
|
47
|
+
|
48
|
+
4. **实现 Service 层 (调用 IPC):**
|
49
|
+
* **文件:** `src/services/electron/[tool_category]Service.ts` (例如: `src/services/electron/localFileService.ts`)
|
50
|
+
* **操作:**
|
51
|
+
* 导入在步骤 2 中定义的 IPC 参数类型。
|
52
|
+
* 添加一个新的 `async` 方法,方法名通常与 Action 名称对应 (例如: `renameLocalFile`)。
|
53
|
+
* 方法接收 `params` (符合 IPC 参数类型)。
|
54
|
+
* 使用从 `@lobechat/electron-client-ipc` 导入的 `dispatch` (或 `invoke`) 函数,调用与 Manifest 中 `name` 字段匹配的 IPC 事件名称,并将 `params` 传递过去。
|
55
|
+
* 定义方法的返回类型,通常是 `Promise<{ success: boolean; error?: string }>`,与后端 Controller 返回的结构一致。
|
56
|
+
|
57
|
+
5. **实现后端逻辑 (Controller / IPC Handler):**
|
58
|
+
* **文件:** `apps/desktop/src/main/controllers/[ToolName]Ctr.ts` (例如: `apps/desktop/src/main/controllers/LocalFileCtr.ts`)
|
59
|
+
* **操作:**
|
60
|
+
* 导入 Node.js 相关模块 (`fs`, `path` 等) 和 IPC 相关依赖 (`ipcClientEvent`, 参数类型等)。
|
61
|
+
* 添加一个新的 `async` 方法,方法名通常以 `handle` 开头 (例如: `handleRenameFile`)。
|
62
|
+
* 使用 `@ipcClientEvent('yourApiName')` 装饰器将此方法注册为对应 IPC 事件的处理器,确保 `'yourApiName'` 与 Manifest 中的 `name` 和 Service 层调用的事件名称一致。
|
63
|
+
* 方法的参数应解构自 Service 层传递过来的对象,类型与步骤 2 中定义的 IPC 参数类型匹配。
|
64
|
+
* 实现核心业务逻辑:
|
65
|
+
* 进行必要的输入验证。
|
66
|
+
* 执行文件系统操作或其他后端任务 (例如: `fs.promises.rename`)。
|
67
|
+
* 使用 `try...catch` 捕获执行过程中的错误。
|
68
|
+
* 处理特定错误码 (`error.code`) 以提供更友好的错误消息。
|
69
|
+
* 返回一个包含 `success` (boolean) 和可选 `error` (string) 字段的对象。
|
70
|
+
|
71
|
+
6. **更新 Agent 文档 (System Role):**
|
72
|
+
* **文件:** `src/tools/[tool_category]/systemRole.ts` (例如: `src/tools/local-files/systemRole.ts`)
|
73
|
+
* **操作:**
|
74
|
+
* 在 `<core_capabilities>` 部分添加新工具的简要描述。
|
75
|
+
* 如果需要,更新 `<workflow>`。
|
76
|
+
* 在 `<tool_usage_guidelines>` 部分为新工具添加详细的使用说明,解释其参数、用途和预期行为。
|
77
|
+
* 如有必要,更新 `<security_considerations>`。
|
78
|
+
* 如有必要(例如工具返回了新的数据结构或路径),更新 `<response_format>` 中的示例。
|
79
|
+
|
80
|
+
通过遵循这些步骤,可以系统地将新的桌面端工具集成到 LobeChat 的插件系统中。
|
package/.env.desktop
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
# copy this file to .env when you want to develop the desktop app or you will fail
|
2
2
|
APP_URL=http://localhost:3015
|
3
|
-
FEATURE_FLAGS
|
3
|
+
FEATURE_FLAGS=-check_updates,+pin_list
|
4
4
|
KEY_VAULTS_SECRET=oLXWIiR/AKF+rWaqy9lHkrYgzpATbW3CtJp3UfkVgpE=
|
5
5
|
DATABASE_URL=postgresql://postgres@localhost:5432/postgres
|
6
6
|
DEFAULT_AGENT_CONFIG="model=qwen2.5;provider=ollama;chatConfig.searchFCModel.provider=ollama;chatConfig.searchFCModel.model=qwen2.5"
|
7
7
|
SYSTEM_AGENT="default=ollama/qwen2.5"
|
8
|
+
SEARCH_PROVIDERS=search1api
|
@@ -21,21 +21,16 @@ module.exports = async ({ github, context, releaseUrl, version, tag }) => {
|
|
21
21
|
// Organize assets by platform
|
22
22
|
const macAssets = release.data.assets.filter(
|
23
23
|
(asset) =>
|
24
|
-
(
|
25
|
-
|
26
|
-
(asset.name.includes('latest-mac') && asset.name.endsWith('.yml')),
|
24
|
+
(asset.name.includes('.dmg') || asset.name.includes('.zip')) &&
|
25
|
+
!asset.name.includes('.blockmap'),
|
27
26
|
);
|
28
27
|
|
29
28
|
const winAssets = release.data.assets.filter(
|
30
|
-
(asset) =>
|
31
|
-
(asset.name.includes('.exe') && !asset.name.includes('.blockmap')) ||
|
32
|
-
(asset.name.includes('latest-win') && asset.name.endsWith('.yml')),
|
29
|
+
(asset) => asset.name.includes('.exe') && !asset.name.includes('.blockmap'),
|
33
30
|
);
|
34
31
|
|
35
32
|
const linuxAssets = release.data.assets.filter(
|
36
|
-
(asset) =>
|
37
|
-
(asset.name.includes('.AppImage') && !asset.name.includes('.blockmap')) ||
|
38
|
-
(asset.name.includes('latest-linux') && asset.name.endsWith('.yml')),
|
33
|
+
(asset) => asset.name.includes('.AppImage') && !asset.name.includes('.blockmap'),
|
39
34
|
);
|
40
35
|
|
41
36
|
// Generate combined download table
|
package/CHANGELOG.md
CHANGED
@@ -2,6 +2,57 @@
|
|
2
2
|
|
3
3
|
# Changelog
|
4
4
|
|
5
|
+
### [Version 1.82.2](https://github.com/lobehub/lobe-chat/compare/v1.82.1...v1.82.2)
|
6
|
+
|
7
|
+
<sup>Released on **2025-04-23**</sup>
|
8
|
+
|
9
|
+
#### 💄 Styles
|
10
|
+
|
11
|
+
- **misc**: Improve stdio mcp form, Update the id of some OpenAI models in OpenRouter.
|
12
|
+
|
13
|
+
<br/>
|
14
|
+
|
15
|
+
<details>
|
16
|
+
<summary><kbd>Improvements and Fixes</kbd></summary>
|
17
|
+
|
18
|
+
#### Styles
|
19
|
+
|
20
|
+
- **misc**: Improve stdio mcp form, closes [#7529](https://github.com/lobehub/lobe-chat/issues/7529) ([832b7c3](https://github.com/lobehub/lobe-chat/commit/832b7c3))
|
21
|
+
- **misc**: Update the id of some OpenAI models in OpenRouter, closes [#7524](https://github.com/lobehub/lobe-chat/issues/7524) ([39a3f5b](https://github.com/lobehub/lobe-chat/commit/39a3f5b))
|
22
|
+
|
23
|
+
</details>
|
24
|
+
|
25
|
+
<div align="right">
|
26
|
+
|
27
|
+
[](#readme-top)
|
28
|
+
|
29
|
+
</div>
|
30
|
+
|
31
|
+
### [Version 1.82.1](https://github.com/lobehub/lobe-chat/compare/v1.82.0...v1.82.1)
|
32
|
+
|
33
|
+
<sup>Released on **2025-04-23**</sup>
|
34
|
+
|
35
|
+
#### 💄 Styles
|
36
|
+
|
37
|
+
- **misc**: Improve mcp server type select and fix refresh mcp manifest issue.
|
38
|
+
|
39
|
+
<br/>
|
40
|
+
|
41
|
+
<details>
|
42
|
+
<summary><kbd>Improvements and Fixes</kbd></summary>
|
43
|
+
|
44
|
+
#### Styles
|
45
|
+
|
46
|
+
- **misc**: Improve mcp server type select and fix refresh mcp manifest issue, closes [#7517](https://github.com/lobehub/lobe-chat/issues/7517) ([53d8eac](https://github.com/lobehub/lobe-chat/commit/53d8eac))
|
47
|
+
|
48
|
+
</details>
|
49
|
+
|
50
|
+
<div align="right">
|
51
|
+
|
52
|
+
[](#readme-top)
|
53
|
+
|
54
|
+
</div>
|
55
|
+
|
5
56
|
## [Version 1.82.0](https://github.com/lobehub/lobe-chat/compare/v1.81.9...v1.82.0)
|
6
57
|
|
7
58
|
<sup>Released on **2025-04-22**</sup>
|
package/changelog/v1.json
CHANGED
@@ -1,4 +1,22 @@
|
|
1
1
|
[
|
2
|
+
{
|
3
|
+
"children": {
|
4
|
+
"improvements": [
|
5
|
+
"Improve stdio mcp form, Update the id of some OpenAI models in OpenRouter."
|
6
|
+
]
|
7
|
+
},
|
8
|
+
"date": "2025-04-23",
|
9
|
+
"version": "1.82.2"
|
10
|
+
},
|
11
|
+
{
|
12
|
+
"children": {
|
13
|
+
"improvements": [
|
14
|
+
"Improve mcp server type select and fix refresh mcp manifest issue."
|
15
|
+
]
|
16
|
+
},
|
17
|
+
"date": "2025-04-23",
|
18
|
+
"version": "1.82.1"
|
19
|
+
},
|
2
20
|
{
|
3
21
|
"children": {
|
4
22
|
"features": [
|
package/locales/ar/electron.json
CHANGED
@@ -17,16 +17,52 @@
|
|
17
17
|
"statusDisconnected": "غير متصل",
|
18
18
|
"urlRequired": "يرجى إدخال عنوان الخادم"
|
19
19
|
},
|
20
|
+
"sync": {
|
21
|
+
"continue": "استمر",
|
22
|
+
"inCloud": "تستخدم حاليًا المزامنة السحابية",
|
23
|
+
"inLocalStorage": "تستخدم حاليًا التخزين المحلي",
|
24
|
+
"isIniting": "جارٍ التهيئة...",
|
25
|
+
"lobehubCloud": {
|
26
|
+
"description": "الإصدار السحابي المقدم رسميًا",
|
27
|
+
"title": "LobeHub Cloud"
|
28
|
+
},
|
29
|
+
"local": {
|
30
|
+
"description": "استخدام قاعدة بيانات محلية، متاحة بالكامل دون اتصال",
|
31
|
+
"title": "قاعدة بيانات محلية"
|
32
|
+
},
|
33
|
+
"mode": {
|
34
|
+
"cloudSync": "مزامنة سحابية",
|
35
|
+
"localStorage": "تخزين محلي",
|
36
|
+
"title": "اختر وضع الاتصال الخاص بك",
|
37
|
+
"useSelfHosted": "استخدام نسخة مستضافة ذاتيًا؟"
|
38
|
+
},
|
39
|
+
"selfHosted": {
|
40
|
+
"description": "نسخة المجتمع التي تم نشرها ذاتيًا",
|
41
|
+
"title": "نسخة مستضافة ذاتيًا"
|
42
|
+
}
|
43
|
+
},
|
20
44
|
"updater": {
|
45
|
+
"checkingUpdate": "التحقق من وجود تحديثات",
|
46
|
+
"checkingUpdateDesc": "جارٍ الحصول على معلومات الإصدار...",
|
47
|
+
"downloadNewVersion": "تحميل إصدار جديد",
|
21
48
|
"downloadingUpdate": "جارٍ تنزيل التحديث",
|
22
49
|
"downloadingUpdateDesc": "يتم تنزيل التحديث، يرجى الانتظار...",
|
50
|
+
"installLater": "تحديث عند بدء التشغيل التالي",
|
51
|
+
"isLatestVersion": "الإصدار الحالي هو الأحدث",
|
52
|
+
"isLatestVersionDesc": "رائع، الإصدار {{version}} الذي تستخدمه هو أحدث إصدار متاح.",
|
23
53
|
"later": "تحديث لاحقًا",
|
24
54
|
"newVersionAvailable": "يتوفر إصدار جديد",
|
25
55
|
"newVersionAvailableDesc": "تم العثور على إصدار جديد {{version}}، هل ترغب في التنزيل الآن؟",
|
26
|
-
"restartAndInstall": "
|
56
|
+
"restartAndInstall": "تثبيت التحديث وإعادة التشغيل",
|
27
57
|
"updateError": "خطأ في التحديث",
|
28
58
|
"updateReady": "التحديث جاهز",
|
29
|
-
"updateReadyDesc": "تم تنزيل
|
59
|
+
"updateReadyDesc": "تم تنزيل الإصدار الجديد {{version}}، يمكنك إكمال التثبيت بعد إعادة تشغيل التطبيق.",
|
30
60
|
"upgradeNow": "تحديث الآن"
|
61
|
+
},
|
62
|
+
"waitingOAuth": {
|
63
|
+
"cancel": "إلغاء",
|
64
|
+
"description": "تم فتح صفحة التفويض في المتصفح، يرجى إكمال التفويض في المتصفح",
|
65
|
+
"helpText": "إذا لم يفتح المتصفح تلقائيًا، يرجى النقر على إلغاء ثم المحاولة مرة أخرى",
|
66
|
+
"title": "انتظار الاتصال بالتفويض"
|
31
67
|
}
|
32
68
|
}
|
package/locales/ar/plugin.json
CHANGED
@@ -7,6 +7,7 @@
|
|
7
7
|
"payload": "حمولة البرنامج المساعد",
|
8
8
|
"pluginState": "حالة المكون",
|
9
9
|
"response": "الرد",
|
10
|
+
"title": "تفاصيل الإضافة",
|
10
11
|
"tool_call": "طلب استدعاء الأداة"
|
11
12
|
},
|
12
13
|
"detailModal": {
|
@@ -34,37 +35,6 @@
|
|
34
35
|
"desc": "العلامة المميزة للبرنامج المساعد",
|
35
36
|
"label": "المعرف"
|
36
37
|
},
|
37
|
-
"mcp": {
|
38
|
-
"args": {
|
39
|
-
"desc": "قائمة المعلمات المرسلة إلى أمر STDIO",
|
40
|
-
"label": "معلمات الأمر",
|
41
|
-
"placeholder": "على سبيل المثال: --port 8080 --debug",
|
42
|
-
"tooltip": "اضغط على Enter بعد إدخال المعلمات أو استخدم الفاصلة/المسافة للفصل"
|
43
|
-
},
|
44
|
-
"command": {
|
45
|
-
"desc": "الملف القابل للتنفيذ أو البرنامج النصي لبدء مكون MCP STDIO",
|
46
|
-
"label": "الأمر",
|
47
|
-
"placeholder": "على سبيل المثال: python main.py أو /path/to/executable"
|
48
|
-
},
|
49
|
-
"endpoint": {
|
50
|
-
"desc": "أدخل عنوان خادم HTTP القابل للبث MCP الخاص بك",
|
51
|
-
"label": "عنوان URL لنقطة نهاية MCP"
|
52
|
-
},
|
53
|
-
"identifier": {
|
54
|
-
"desc": "حدد اسمًا لمكون MCP الخاص بك، يجب أن يكون باستخدام أحرف إنجليزية",
|
55
|
-
"invalid": "يمكنك إدخال أحرف إنجليزية، أرقام، والرمزين - و _ فقط",
|
56
|
-
"label": "اسم مكون MCP",
|
57
|
-
"placeholder": "على سبيل المثال: my-mcp-plugin"
|
58
|
-
},
|
59
|
-
"type": {
|
60
|
-
"desc": "اختر طريقة الاتصال لمكون MCP، النسخة على الويب تدعم فقط HTTP القابل للبث",
|
61
|
-
"label": "نوع مكون MCP"
|
62
|
-
},
|
63
|
-
"url": {
|
64
|
-
"desc": "أدخل عنوان نقطة نهاية مكون HTTP MCP الخاص بك",
|
65
|
-
"label": "عنوان URL لنقطة نهاية HTTP"
|
66
|
-
}
|
67
|
-
},
|
68
38
|
"mode": {
|
69
39
|
"mcp": "مكون MCP",
|
70
40
|
"mcpExp": "تجريبي",
|
@@ -76,6 +46,52 @@
|
|
76
46
|
"placeholder": "محرك البحث"
|
77
47
|
}
|
78
48
|
},
|
49
|
+
"mcp": {
|
50
|
+
"args": {
|
51
|
+
"desc": "قائمة المعلمات المرسلة إلى أمر STDIO",
|
52
|
+
"label": "معلمات الأمر",
|
53
|
+
"placeholder": "على سبيل المثال: --port 8080 --debug",
|
54
|
+
"required": "يرجى إدخال معلمات التشغيل"
|
55
|
+
},
|
56
|
+
"command": {
|
57
|
+
"desc": "الملف القابل للتنفيذ أو البرنامج النصي المستخدم لبدء ملحق MCP STDIO",
|
58
|
+
"label": "الأمر",
|
59
|
+
"placeholder": "على سبيل المثال: python main.py أو /path/to/executable",
|
60
|
+
"required": "يرجى إدخال أمر التشغيل"
|
61
|
+
},
|
62
|
+
"endpoint": {
|
63
|
+
"desc": "أدخل عنوان خادم MCP Streamable HTTP الخاص بك",
|
64
|
+
"label": "عنوان URL لنقطة نهاية MCP"
|
65
|
+
},
|
66
|
+
"identifier": {
|
67
|
+
"desc": "حدد اسمًا لملحق MCP الخاص بك، يجب أن يكون باستخدام أحرف إنجليزية",
|
68
|
+
"invalid": "يمكنك إدخال أحرف إنجليزية، أرقام، والرمزين - و _ فقط",
|
69
|
+
"label": "اسم ملحق MCP",
|
70
|
+
"placeholder": "على سبيل المثال: my-mcp-plugin",
|
71
|
+
"required": "يرجى إدخال معرف خدمة MCP"
|
72
|
+
},
|
73
|
+
"previewManifest": "معاينة ملف وصف الإضافة",
|
74
|
+
"testConnection": "اختبار الاتصال",
|
75
|
+
"testConnectionTip": "يمكن استخدام إضافة MCP بشكل طبيعي بعد نجاح اختبار الاتصال",
|
76
|
+
"type": {
|
77
|
+
"desc": "اختر طريقة الاتصال لملحق MCP، النسخة الويب تدعم فقط Streamable HTTP",
|
78
|
+
"httpFeature1": "متوافق مع النسخة الويب وسطح المكتب",
|
79
|
+
"httpFeature2": "الاتصال بخادم MCP عن بُعد، دون الحاجة إلى تثبيت أو إعداد إضافي",
|
80
|
+
"httpShortDesc": "بروتوكول الاتصال القائم على HTTP المتدفق",
|
81
|
+
"label": "نوع ملحق MCP",
|
82
|
+
"stdioFeature1": "زمن تأخير أقل في الاتصال، مناسب للتنفيذ المحلي",
|
83
|
+
"stdioFeature2": "يجب تثبيت خادم MCP وتشغيله محليًا",
|
84
|
+
"stdioNotAvailable": "وضع STDIO متاح فقط في النسخة المكتبية",
|
85
|
+
"stdioShortDesc": "بروتوكول الاتصال القائم على الإدخال والإخراج القياسي",
|
86
|
+
"title": "نوع ملحق MCP"
|
87
|
+
},
|
88
|
+
"url": {
|
89
|
+
"desc": "أدخل عنوان HTTP القابل للبث لخادم MCP الخاص بك، ولا ينتهي بـ /sse",
|
90
|
+
"invalid": "يرجى إدخال عنوان URL صالح",
|
91
|
+
"label": "عنوان URL لنقطة نهاية HTTP",
|
92
|
+
"required": "يرجى إدخال عنوان URL لخدمة MCP"
|
93
|
+
}
|
94
|
+
},
|
79
95
|
"meta": {
|
80
96
|
"author": {
|
81
97
|
"desc": "مؤلف البرنامج المساعد",
|
@@ -101,12 +117,14 @@
|
|
101
117
|
"label": "المعرف",
|
102
118
|
"pattenErrorMessage": "يمكن إدخال الأحرف الإنجليزية والأرقام والرمزين - و_ فقط"
|
103
119
|
},
|
120
|
+
"lobe": "إضافة {{appName}}",
|
104
121
|
"manifest": {
|
105
122
|
"desc": "{{appName}} سيتم تثبيت الإضافة من خلال هذا الرابط",
|
106
123
|
"label": "ملف وصف البرنامج المساعد (Manifest) URL",
|
107
124
|
"preview": "معاينة الملف التعريفي",
|
108
125
|
"refresh": "تحديث"
|
109
126
|
},
|
127
|
+
"openai": "إضافة OpenAI",
|
110
128
|
"title": {
|
111
129
|
"desc": "عنوان البرنامج المساعد",
|
112
130
|
"label": "العنوان",
|
@@ -148,6 +166,7 @@
|
|
148
166
|
"noManifest": "ملف الوصف غير موجود",
|
149
167
|
"openAPIInvalid": "فشل تحليل OpenAPI، الخطأ: \n\n {{error}}",
|
150
168
|
"reinstallError": "فشل تحديث الإضافة {{name}}",
|
169
|
+
"testConnectionFailed": "فشل في الحصول على ملف التعريف: {{error}}",
|
151
170
|
"urlError": "الرابط لا يعيد محتوى بتنسيق JSON، يرجى التأكد من صحة الرابط"
|
152
171
|
},
|
153
172
|
"inspector": {
|
@@ -226,5 +245,6 @@
|
|
226
245
|
},
|
227
246
|
"title": "متجر الإضافات"
|
228
247
|
},
|
248
|
+
"unknownError": "خطأ غير معروف",
|
229
249
|
"unknownPlugin": "البرنامج المساعد غير معروف"
|
230
250
|
}
|
@@ -17,16 +17,52 @@
|
|
17
17
|
"statusDisconnected": "Не е свързан",
|
18
18
|
"urlRequired": "Моля, въведете адреса на сървъра"
|
19
19
|
},
|
20
|
+
"sync": {
|
21
|
+
"continue": "Продължи",
|
22
|
+
"inCloud": "В момента използвате облачно синхронизиране",
|
23
|
+
"inLocalStorage": "В момента използвате локално хранилище",
|
24
|
+
"isIniting": "Инициализиране...",
|
25
|
+
"lobehubCloud": {
|
26
|
+
"description": "Официално предоставената облачна версия",
|
27
|
+
"title": "LobeHub Облак"
|
28
|
+
},
|
29
|
+
"local": {
|
30
|
+
"description": "Използва локална база данни, напълно офлайн",
|
31
|
+
"title": "Локална база данни"
|
32
|
+
},
|
33
|
+
"mode": {
|
34
|
+
"cloudSync": "Облачно синхронизиране",
|
35
|
+
"localStorage": "Локално хранилище",
|
36
|
+
"title": "Изберете вашия режим на свързване",
|
37
|
+
"useSelfHosted": "Използвате ли самостоятелно хостван екземпляр?"
|
38
|
+
},
|
39
|
+
"selfHosted": {
|
40
|
+
"description": "Общностна версия, разположена от вас",
|
41
|
+
"title": "Самостоятелно хостван екземпляр"
|
42
|
+
}
|
43
|
+
},
|
20
44
|
"updater": {
|
45
|
+
"checkingUpdate": "Проверка за нова версия",
|
46
|
+
"checkingUpdateDesc": "Извличане на информация за версията...",
|
47
|
+
"downloadNewVersion": "Изтегляне на нова версия",
|
21
48
|
"downloadingUpdate": "Изтегляне на актуализация",
|
22
49
|
"downloadingUpdateDesc": "Актуализацията се изтегля, моля изчакайте...",
|
50
|
+
"installLater": "Актуализиране при следващо стартиране",
|
51
|
+
"isLatestVersion": "Вече имате най-новата версия",
|
52
|
+
"isLatestVersionDesc": "Страхотно, версията {{version}} е най-новата налична версия.",
|
23
53
|
"later": "Актуализирай по-късно",
|
24
54
|
"newVersionAvailable": "Налична е нова версия",
|
25
55
|
"newVersionAvailableDesc": "Открита е нова версия {{version}}, искате ли да я изтеглите сега?",
|
26
|
-
"restartAndInstall": "
|
56
|
+
"restartAndInstall": "Инсталиране на актуализацията и рестартиране",
|
27
57
|
"updateError": "Грешка при актуализацията",
|
28
58
|
"updateReady": "Актуализацията е готова",
|
29
|
-
"updateReadyDesc": "
|
59
|
+
"updateReadyDesc": "Нова версия {{version}} е изтеглена, инсталацията ще завърши след рестартиране на приложението.",
|
30
60
|
"upgradeNow": "Актуализирай сега"
|
61
|
+
},
|
62
|
+
"waitingOAuth": {
|
63
|
+
"cancel": "Отмени",
|
64
|
+
"description": "Браузърът е отворил страницата за авторизация, моля, завършете авторизацията в браузъра",
|
65
|
+
"helpText": "Ако браузърът не се е отворил автоматично, моля, кликнете върху отмяна и опитайте отново",
|
66
|
+
"title": "Изчакване на авторизационна връзка"
|
31
67
|
}
|
32
68
|
}
|
@@ -7,6 +7,7 @@
|
|
7
7
|
"payload": "полезна натоварване",
|
8
8
|
"pluginState": "Състояние на плъгина",
|
9
9
|
"response": "Отговор",
|
10
|
+
"title": "Детайли за плъгина",
|
10
11
|
"tool_call": "заявка за инструмент"
|
11
12
|
},
|
12
13
|
"detailModal": {
|
@@ -34,37 +35,6 @@
|
|
34
35
|
"desc": "Уникалният идентификатор на плъгина",
|
35
36
|
"label": "Идентификатор"
|
36
37
|
},
|
37
|
-
"mcp": {
|
38
|
-
"args": {
|
39
|
-
"desc": "Списък с параметри, предадени на STDIO командата",
|
40
|
-
"label": "Командни параметри",
|
41
|
-
"placeholder": "Например: --port 8080 --debug",
|
42
|
-
"tooltip": "Натиснете Enter след въвеждане на параметри или използвайте запетая/интервал за разделяне"
|
43
|
-
},
|
44
|
-
"command": {
|
45
|
-
"desc": "Изпълним файл или скрипт за стартиране на MCP STDIO плъгина",
|
46
|
-
"label": "Команда",
|
47
|
-
"placeholder": "Например: python main.py или /path/to/executable"
|
48
|
-
},
|
49
|
-
"endpoint": {
|
50
|
-
"desc": "Въведете адреса на вашия MCP Streamable HTTP сървър",
|
51
|
-
"label": "MCP Endpoint URL"
|
52
|
-
},
|
53
|
-
"identifier": {
|
54
|
-
"desc": "Определете име за вашия MCP плъгин, трябва да използвате английски символи",
|
55
|
-
"invalid": "Можете да въвеждате само английски символи, цифри, - и _",
|
56
|
-
"label": "Име на MCP плъгин",
|
57
|
-
"placeholder": "Например: my-mcp-plugin"
|
58
|
-
},
|
59
|
-
"type": {
|
60
|
-
"desc": "Изберете начина на комуникация на MCP плъгина, уеб версията поддържа само Streamable HTTP",
|
61
|
-
"label": "Тип на MCP плъгин"
|
62
|
-
},
|
63
|
-
"url": {
|
64
|
-
"desc": "Въведете адреса на вашия MCP HTTP плъгин",
|
65
|
-
"label": "HTTP Endpoint URL"
|
66
|
-
}
|
67
|
-
},
|
68
38
|
"mode": {
|
69
39
|
"mcp": "MCP плъгин",
|
70
40
|
"mcpExp": "Експериментален",
|
@@ -76,6 +46,52 @@
|
|
76
46
|
"placeholder": "Търсачка"
|
77
47
|
}
|
78
48
|
},
|
49
|
+
"mcp": {
|
50
|
+
"args": {
|
51
|
+
"desc": "Списък с параметри, предадени на STDIO командата",
|
52
|
+
"label": "Командни параметри",
|
53
|
+
"placeholder": "Например: --port 8080 --debug",
|
54
|
+
"required": "Моля, въведете параметри за стартиране"
|
55
|
+
},
|
56
|
+
"command": {
|
57
|
+
"desc": "Изпълним файл или скрипт за стартиране на MCP STDIO плъгин",
|
58
|
+
"label": "Команда",
|
59
|
+
"placeholder": "Например: python main.py или /path/to/executable",
|
60
|
+
"required": "Моля, въведете команда за стартиране"
|
61
|
+
},
|
62
|
+
"endpoint": {
|
63
|
+
"desc": "Въведете адреса на вашия MCP Streamable HTTP Server",
|
64
|
+
"label": "MCP Endpoint URL"
|
65
|
+
},
|
66
|
+
"identifier": {
|
67
|
+
"desc": "Определете име за вашия MCP плъгин, трябва да използвате английски символи",
|
68
|
+
"invalid": "Можете да въвеждате само английски символи, цифри, - и _",
|
69
|
+
"label": "Име на MCP плъгин",
|
70
|
+
"placeholder": "Например: my-mcp-plugin",
|
71
|
+
"required": "Моля, въведете идентификатор на MCP услугата"
|
72
|
+
},
|
73
|
+
"previewManifest": "Преглед на описателния файл на плъгина",
|
74
|
+
"testConnection": "Тествайте връзката",
|
75
|
+
"testConnectionTip": "След успешното тестване на връзката, MCP плъгинът може да бъде използван нормално",
|
76
|
+
"type": {
|
77
|
+
"desc": "Изберете начина на комуникация на MCP плъгина, уеб версията поддържа само Streamable HTTP",
|
78
|
+
"httpFeature1": "Съвместим с уеб версията и настолната версия",
|
79
|
+
"httpFeature2": "Свързване с отдалечен MCP сървър, без нужда от допълнителна инсталация и конфигурация",
|
80
|
+
"httpShortDesc": "Комуникационен протокол, базиран на потоково HTTP",
|
81
|
+
"label": "Тип на MCP плъгин",
|
82
|
+
"stdioFeature1": "По-ниска комуникационна латентност, подходящ за локално изпълнение",
|
83
|
+
"stdioFeature2": "Необходимо е локално инсталиране на MCP сървър",
|
84
|
+
"stdioNotAvailable": "STDIO режимът е наличен само в настолната версия",
|
85
|
+
"stdioShortDesc": "Комуникационен протокол, базиран на стандартен вход и изход",
|
86
|
+
"title": "Тип на MCP плъгин"
|
87
|
+
},
|
88
|
+
"url": {
|
89
|
+
"desc": "Въведете адреса на вашия MCP сървър Streamable HTTP, който не завършва с /sse",
|
90
|
+
"invalid": "Моля, въведете валиден URL адрес",
|
91
|
+
"label": "HTTP Endpoint URL",
|
92
|
+
"required": "Моля, въведете URL на MCP услугата"
|
93
|
+
}
|
94
|
+
},
|
79
95
|
"meta": {
|
80
96
|
"author": {
|
81
97
|
"desc": "Авторът на плъгина",
|
@@ -101,12 +117,14 @@
|
|
101
117
|
"label": "Идентификатор",
|
102
118
|
"pattenErrorMessage": "Разрешени са само буквено-цифрови символи, тире - и долна черта _"
|
103
119
|
},
|
120
|
+
"lobe": "{{appName}} плъгин",
|
104
121
|
"manifest": {
|
105
122
|
"desc": "{{appName}} ще инсталира приставката чрез тази връзка",
|
106
123
|
"label": "URL адрес на описанието на плъгина (Manifest)",
|
107
124
|
"preview": "Преглед на манифеста",
|
108
125
|
"refresh": "Опресняване"
|
109
126
|
},
|
127
|
+
"openai": "OpenAI плъгин",
|
110
128
|
"title": {
|
111
129
|
"desc": "Заглавието на плъгина",
|
112
130
|
"label": "Заглавие",
|
@@ -148,6 +166,7 @@
|
|
148
166
|
"noManifest": "Файлът на манифеста не съществува",
|
149
167
|
"openAPIInvalid": "Неуспешно анализиране на OpenAPI. Грешка: \n\n {{error}}",
|
150
168
|
"reinstallError": "Неуспешно опресняване на плъгина {{name}}",
|
169
|
+
"testConnectionFailed": "Неуспешно получаване на манифест: {{error}}",
|
151
170
|
"urlError": "Връзката не върна съдържание във формат JSON. Моля, уверете се, че е валидна връзка."
|
152
171
|
},
|
153
172
|
"inspector": {
|
@@ -226,5 +245,6 @@
|
|
226
245
|
},
|
227
246
|
"title": "Магазин за плъгини"
|
228
247
|
},
|
248
|
+
"unknownError": "Неизвестна грешка",
|
229
249
|
"unknownPlugin": "Неизвестен плъгин"
|
230
250
|
}
|
@@ -17,16 +17,52 @@
|
|
17
17
|
"statusDisconnected": "Nicht verbunden",
|
18
18
|
"urlRequired": "Bitte geben Sie die Serveradresse ein"
|
19
19
|
},
|
20
|
+
"sync": {
|
21
|
+
"continue": "Fortfahren",
|
22
|
+
"inCloud": "Aktuell Cloud-Synchronisierung verwenden",
|
23
|
+
"inLocalStorage": "Aktuell lokale Speicherung verwenden",
|
24
|
+
"isIniting": "Wird initialisiert...",
|
25
|
+
"lobehubCloud": {
|
26
|
+
"description": "Offizielle Cloud-Version",
|
27
|
+
"title": "LobeHub Cloud"
|
28
|
+
},
|
29
|
+
"local": {
|
30
|
+
"description": "Verwendet lokale Datenbank, vollständig offline verfügbar",
|
31
|
+
"title": "Lokale Datenbank"
|
32
|
+
},
|
33
|
+
"mode": {
|
34
|
+
"cloudSync": "Cloud-Synchronisierung",
|
35
|
+
"localStorage": "Lokale Speicherung",
|
36
|
+
"title": "Wählen Sie Ihren Verbindungsmodus",
|
37
|
+
"useSelfHosted": "Selbstgehostete Instanz verwenden?"
|
38
|
+
},
|
39
|
+
"selfHosted": {
|
40
|
+
"description": "Community-Version, die selbst bereitgestellt wird",
|
41
|
+
"title": "Selbstgehostete Instanz"
|
42
|
+
}
|
43
|
+
},
|
20
44
|
"updater": {
|
45
|
+
"checkingUpdate": "Überprüfen auf Updates",
|
46
|
+
"checkingUpdateDesc": "Versioninformationen werden abgerufen...",
|
47
|
+
"downloadNewVersion": "Neue Version herunterladen",
|
21
48
|
"downloadingUpdate": "Update wird heruntergeladen",
|
22
49
|
"downloadingUpdateDesc": "Das Update wird heruntergeladen, bitte warten...",
|
50
|
+
"installLater": "Beim nächsten Start aktualisieren",
|
51
|
+
"isLatestVersion": "Sie verwenden bereits die neueste Version",
|
52
|
+
"isLatestVersionDesc": "Fantastisch, die verwendete Version {{version}} ist die aktuellste Version.",
|
23
53
|
"later": "Später aktualisieren",
|
24
54
|
"newVersionAvailable": "Neue Version verfügbar",
|
25
55
|
"newVersionAvailableDesc": "Eine neue Version {{version}} wurde gefunden, möchten Sie jetzt herunterladen?",
|
26
|
-
"restartAndInstall": "
|
56
|
+
"restartAndInstall": "Update installieren und neu starten",
|
27
57
|
"updateError": "Update-Fehler",
|
28
58
|
"updateReady": "Update ist bereit",
|
29
|
-
"updateReadyDesc": "
|
59
|
+
"updateReadyDesc": "Die neue Version {{version}} wurde heruntergeladen, die Installation wird nach dem Neustart der Anwendung abgeschlossen.",
|
30
60
|
"upgradeNow": "Jetzt aktualisieren"
|
61
|
+
},
|
62
|
+
"waitingOAuth": {
|
63
|
+
"cancel": "Abbrechen",
|
64
|
+
"description": "Der Browser hat die Autorisierungsseite geöffnet, bitte schließen Sie die Autorisierung im Browser ab",
|
65
|
+
"helpText": "Wenn der Browser nicht automatisch geöffnet wurde, klicken Sie bitte auf Abbrechen und versuchen Sie es erneut",
|
66
|
+
"title": "Warten auf Autorisierungsverbindung"
|
31
67
|
}
|
32
68
|
}
|