@lobehub/lobehub 2.1.3 → 2.1.5

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 (133) hide show
  1. package/.env.example +0 -3
  2. package/.env.example.development +0 -3
  3. package/CHANGELOG.md +59 -0
  4. package/changelog/v2.json +18 -0
  5. package/docker-compose/deploy/.env.example +3 -1
  6. package/docker-compose/deploy/.env.zh-CN.example +4 -1
  7. package/docker-compose/local/.env.example +0 -1
  8. package/docker-compose/local/.env.zh-CN.example +0 -1
  9. package/docker-compose/local/grafana/.env.example +0 -1
  10. package/docker-compose/local/grafana/.env.zh-CN.example +0 -1
  11. package/docker-compose/local/logto/docker-compose.yml +0 -1
  12. package/docker-compose/local/zitadel/.env.example +1 -2
  13. package/docker-compose/local/zitadel/.env.zh-CN.example +1 -2
  14. package/docker-compose/production/grafana/.env.example +0 -1
  15. package/docker-compose/production/grafana/.env.zh-CN.example +0 -1
  16. package/docker-compose/production/logto/.env.example +0 -2
  17. package/docker-compose/production/logto/.env.zh-CN.example +0 -2
  18. package/docker-compose/production/zitadel/.env.example +0 -2
  19. package/docker-compose/production/zitadel/.env.zh-CN.example +0 -2
  20. package/docker-compose/setup.sh +16 -2
  21. package/docs/development/basic/folder-structure.mdx +23 -14
  22. package/docs/development/basic/folder-structure.zh-CN.mdx +23 -14
  23. package/docs/development/basic/work-with-server-side-database.mdx +0 -1
  24. package/docs/development/basic/work-with-server-side-database.zh-CN.mdx +0 -1
  25. package/docs/development/start.mdx +19 -12
  26. package/docs/development/start.zh-CN.mdx +19 -12
  27. package/docs/self-hosting/advanced/s3/cloudflare-r2.mdx +0 -5
  28. package/docs/self-hosting/advanced/s3/cloudflare-r2.zh-CN.mdx +0 -5
  29. package/docs/self-hosting/advanced/s3/rustfs.mdx +0 -2
  30. package/docs/self-hosting/advanced/s3/rustfs.zh-CN.mdx +0 -2
  31. package/docs/self-hosting/advanced/s3/tencent-cloud.mdx +0 -1
  32. package/docs/self-hosting/advanced/s3/tencent-cloud.zh-CN.mdx +0 -2
  33. package/docs/self-hosting/advanced/s3.mdx +0 -9
  34. package/docs/self-hosting/advanced/s3.zh-CN.mdx +0 -8
  35. package/docs/self-hosting/environment-variables/s3.mdx +0 -7
  36. package/docs/self-hosting/environment-variables/s3.zh-CN.mdx +0 -7
  37. package/docs/self-hosting/platform/docker-compose.mdx +0 -1
  38. package/docs/self-hosting/platform/docker-compose.zh-CN.mdx +0 -1
  39. package/docs/self-hosting/platform/docker.mdx +5 -3
  40. package/docs/self-hosting/platform/docker.zh-CN.mdx +5 -4
  41. package/docs/self-hosting/platform/dokploy.mdx +0 -2
  42. package/docs/self-hosting/platform/dokploy.zh-CN.mdx +0 -2
  43. package/docs/self-hosting/platform/vercel.mdx +0 -7
  44. package/docs/self-hosting/platform/vercel.zh-CN.mdx +0 -7
  45. package/e2e/src/steps/home/sidebarAgent.steps.ts +56 -24
  46. package/locales/ar/authError.json +1 -0
  47. package/locales/ar/models.json +25 -22
  48. package/locales/ar/providers.json +0 -1
  49. package/locales/ar/setting.json +16 -0
  50. package/locales/bg-BG/authError.json +1 -0
  51. package/locales/bg-BG/models.json +18 -21
  52. package/locales/bg-BG/providers.json +0 -1
  53. package/locales/bg-BG/setting.json +16 -0
  54. package/locales/de-DE/authError.json +1 -0
  55. package/locales/de-DE/models.json +20 -20
  56. package/locales/de-DE/providers.json +0 -1
  57. package/locales/de-DE/setting.json +16 -0
  58. package/locales/en-US/models.json +22 -22
  59. package/locales/en-US/providers.json +0 -1
  60. package/locales/es-ES/authError.json +1 -0
  61. package/locales/es-ES/models.json +84 -20
  62. package/locales/es-ES/providers.json +0 -1
  63. package/locales/es-ES/setting.json +16 -0
  64. package/locales/fa-IR/authError.json +1 -0
  65. package/locales/fa-IR/models.json +43 -20
  66. package/locales/fa-IR/providers.json +0 -1
  67. package/locales/fa-IR/setting.json +16 -0
  68. package/locales/fr-FR/authError.json +1 -0
  69. package/locales/fr-FR/models.json +19 -21
  70. package/locales/fr-FR/providers.json +0 -1
  71. package/locales/fr-FR/setting.json +16 -0
  72. package/locales/it-IT/authError.json +1 -0
  73. package/locales/it-IT/models.json +17 -19
  74. package/locales/it-IT/providers.json +0 -1
  75. package/locales/it-IT/setting.json +16 -0
  76. package/locales/ja-JP/authError.json +1 -0
  77. package/locales/ja-JP/models.json +43 -22
  78. package/locales/ja-JP/providers.json +0 -1
  79. package/locales/ja-JP/setting.json +16 -0
  80. package/locales/ko-KR/authError.json +1 -0
  81. package/locales/ko-KR/models.json +41 -20
  82. package/locales/ko-KR/providers.json +0 -1
  83. package/locales/ko-KR/setting.json +16 -0
  84. package/locales/nl-NL/authError.json +1 -0
  85. package/locales/nl-NL/models.json +48 -20
  86. package/locales/nl-NL/providers.json +0 -1
  87. package/locales/nl-NL/setting.json +16 -0
  88. package/locales/pl-PL/authError.json +1 -0
  89. package/locales/pl-PL/models.json +19 -22
  90. package/locales/pl-PL/providers.json +0 -1
  91. package/locales/pl-PL/setting.json +16 -0
  92. package/locales/pt-BR/authError.json +1 -0
  93. package/locales/pt-BR/models.json +21 -21
  94. package/locales/pt-BR/providers.json +0 -1
  95. package/locales/pt-BR/setting.json +16 -0
  96. package/locales/ru-RU/authError.json +1 -0
  97. package/locales/ru-RU/models.json +23 -20
  98. package/locales/ru-RU/providers.json +0 -1
  99. package/locales/ru-RU/setting.json +16 -0
  100. package/locales/tr-TR/authError.json +1 -0
  101. package/locales/tr-TR/models.json +37 -20
  102. package/locales/tr-TR/providers.json +0 -1
  103. package/locales/tr-TR/setting.json +16 -0
  104. package/locales/vi-VN/authError.json +1 -0
  105. package/locales/vi-VN/models.json +15 -19
  106. package/locales/vi-VN/providers.json +0 -1
  107. package/locales/vi-VN/setting.json +16 -0
  108. package/locales/zh-CN/models.json +20 -20
  109. package/locales/zh-CN/providers.json +0 -1
  110. package/locales/zh-TW/authError.json +1 -0
  111. package/locales/zh-TW/models.json +20 -20
  112. package/locales/zh-TW/providers.json +0 -1
  113. package/locales/zh-TW/setting.json +16 -0
  114. package/package.json +1 -1
  115. package/packages/model-bank/src/aiModels/google.ts +0 -19
  116. package/packages/model-bank/src/aiModels/moonshot.ts +56 -5
  117. package/packages/model-bank/src/aiModels/ollamacloud.ts +14 -0
  118. package/packages/model-bank/src/aiModels/openrouter.ts +0 -14
  119. package/packages/model-bank/src/aiModels/qwen.ts +105 -4
  120. package/packages/model-bank/src/aiModels/siliconcloud.ts +39 -0
  121. package/packages/model-bank/src/aiModels/wenxin.ts +0 -99
  122. package/packages/model-runtime/src/core/contextBuilders/openai.test.ts +24 -0
  123. package/packages/model-runtime/src/core/contextBuilders/openai.ts +22 -5
  124. package/packages/model-runtime/src/core/openaiCompatibleFactory/index.ts +10 -3
  125. package/packages/model-runtime/src/core/streams/google/google-ai.test.ts +54 -13
  126. package/packages/model-runtime/src/core/streams/google/index.ts +1 -4
  127. package/packages/model-runtime/src/providers/moonshot/index.ts +24 -2
  128. package/packages/model-runtime/src/providers/qwen/index.ts +16 -15
  129. package/src/features/ChatInput/ActionBar/Tools/KlavisServerItem.tsx +28 -5
  130. package/src/features/ChatInput/ActionBar/Tools/LobehubSkillServerItem.tsx +32 -9
  131. package/src/features/ChatInput/ActionBar/Tools/useControls.tsx +16 -3
  132. package/src/features/ProfileEditor/AgentTool.tsx +10 -3
  133. package/src/server/routers/lambda/__tests__/integration/aiAgent/execAgent.integration.test.ts +3 -2
@@ -56,13 +56,6 @@ LobeHub 支持多模态的 AI 会话,包括将图片、文件等非结构化
56
56
  - 默认值:`1`
57
57
  - 示例:`0`
58
58
 
59
- ### `S3_PUBLIC_DOMAIN`
60
-
61
- - 类型:必填
62
- - 描述:存储桶对外的访问域名,用于访问存储桶中的文件
63
- - 默认值:-
64
- - 示例:`https://files.example.com`
65
-
66
59
  ### `S3_ENABLE_PATH_STYLE`
67
60
 
68
61
  - 类型:可选
@@ -281,7 +281,6 @@ Now, we will introduce the necessary configurations for running these services:
281
281
  LobeHub needs to provide a public access URL for object files for the LLM service provider, so you need to configure the S3 Endpoint:
282
282
 
283
283
  ```env
284
- S3_PUBLIC_DOMAIN=https://s3.example.com
285
284
  S3_ENDPOINT=https://s3.example.com
286
285
  ```
287
286
 
@@ -277,7 +277,6 @@ mv .env.zh-CN.example .env
277
277
  LobeHub 需要为 LLM 服务提供商提供文件对象的公网访问地址,因此你需要配置 S3 的 Endpoint:
278
278
 
279
279
  ```env
280
- S3_PUBLIC_DOMAIN=https://s3.example.com
281
280
  S3_ENDPOINT=https://s3.example.com
282
281
  ```
283
282
 
@@ -64,6 +64,10 @@ Here is the process for deploying the LobeHub server database version on a Linux
64
64
 
65
65
  <GenerateSecret envName="AUTH_SECRET" />
66
66
 
67
+ Click the button below to generate `JWKS_KEY` (for signing and verifying JWTs):
68
+
69
+ <GenerateJWKSKey />
70
+
67
71
  ```shell
68
72
  # Website domain
69
73
  APP_URL=https://your-prod-domain.com
@@ -77,7 +81,7 @@ Here is the process for deploying the LobeHub server database version on a Linux
77
81
  # Authentication (Better Auth)
78
82
  # Session encryption key (generate with: openssl rand -base64 32)
79
83
  AUTH_SECRET=jgwsK28dspyVQoIf8/M3IIHl1h6LYYceSYNXeLpy6uk=
80
- # JWKS key for signing and verifying JWTs (generate at: https://lobehub.com/docs/self-hosting/environment-variables/auth#jwks_key)
84
+ # JWKS key for signing and verifying JWTs
81
85
  JWKS_KEY='{"keys":[...]}'
82
86
 
83
87
  # S3 related
@@ -85,7 +89,6 @@ Here is the process for deploying the LobeHub server database version on a Linux
85
89
  S3_SECRET_ACCESS_KEY=xxxxxxxxxx
86
90
  S3_ENDPOINT=https://xxxxxxxxxx.r2.cloudflarestorage.com
87
91
  S3_BUCKET=LobeHub
88
- S3_PUBLIC_DOMAIN=https://s3-for-LobeHub.your-domain.com
89
92
 
90
93
  ```
91
94
 
@@ -142,7 +145,6 @@ $ docker run -it -d --name lobehub -p 3210:3210 \
142
145
  -e S3_SECRET_ACCESS_KEY=xxxxxxxxxx \
143
146
  -e S3_ENDPOINT=https://xxxxxxxxxx.r2.cloudflarestorage.com \
144
147
  -e S3_BUCKET=LobeHub \
145
- -e S3_PUBLIC_DOMAIN=https://s3-for-LobeHub.your-domain.com \
146
148
  lobehub/lobehub
147
149
  ```
148
150
 
@@ -60,6 +60,10 @@ tags:
60
60
 
61
61
  <GenerateSecret envName="AUTH_SECRET" />
62
62
 
63
+ 点击下方按钮一键生成 `JWKS_KEY`(用于签名和验证 JWT):
64
+
65
+ <GenerateJWKSKey />
66
+
63
67
  ```shell
64
68
  # 网站域名
65
69
  APP_URL=https://your-prod-domain.com
@@ -74,7 +78,7 @@ tags:
74
78
  # 身份验证(Better Auth)
75
79
  # 会话加密密钥(使用以下命令生成:openssl rand -base64 32)
76
80
  AUTH_SECRET=jgwsK28dspyVQoIf8/M3IIHl1h6LYYceSYNXeLpy6uk=
77
- # JWKS 密钥,用于签名和验证 JWT(在此生成:https://lobehub.com/zh/docs/self-hosting/environment-variables/auth#jwks_key)
81
+ # JWKS 密钥,用于签名和验证 JWT
78
82
  JWKS_KEY='{"keys":[...]}'
79
83
 
80
84
  # S3 相关
@@ -83,8 +87,6 @@ tags:
83
87
  # 用于 S3 API 访问的域名
84
88
  S3_ENDPOINT=https://xxxxxxxxxx.r2.cloudflarestorage.com
85
89
  S3_BUCKET=LobeHub
86
- # 用于外网访问 S3 的公共域名,需配置 CORS
87
- S3_PUBLIC_DOMAIN=https://s3-for-LobeHub.your-domain.com
88
90
  # S3_REGION=ap-chengdu # 如果需要指定地域
89
91
 
90
92
  ```
@@ -142,7 +144,6 @@ $ docker run -it -d --name lobehub -p 3210:3210 \
142
144
  -e S3_SECRET_ACCESS_KEY=xxxxxxxxxx \
143
145
  -e S3_ENDPOINT=https://xxxxxxxxxx.r2.cloudflarestorage.com \
144
146
  -e S3_BUCKET=LobeHub \
145
- -e S3_PUBLIC_DOMAIN=https://s3-for-LobeHub.your-domain.com \
146
147
  lobehub/lobehub
147
148
  ```
148
149
 
@@ -39,7 +39,6 @@ S3_ACCESS_KEY_ID=
39
39
  S3_SECRET_ACCESS_KEY=
40
40
  S3_ENDPOINT=
41
41
  S3_BUCKET=
42
- S3_PUBLIC_DOMAIN=
43
42
  S3_ENABLE_PATH_STYLE=
44
43
  ```
45
44
 
@@ -118,7 +117,6 @@ S3_ACCESS_KEY_ID=
118
117
  S3_SECRET_ACCESS_KEY=
119
118
  S3_ENDPOINT=
120
119
  S3_BUCKET=
121
- S3_PUBLIC_DOMAIN=
122
120
  S3_ENABLE_PATH_STYLE=
123
121
 
124
122
  ```
@@ -40,7 +40,6 @@ S3_ACCESS_KEY_ID=
40
40
  S3_SECRET_ACCESS_KEY=
41
41
  S3_ENDPOINT=
42
42
  S3_BUCKET=
43
- S3_PUBLIC_DOMAIN=
44
43
  S3_ENABLE_PATH_STYLE=
45
44
  ```
46
45
 
@@ -119,7 +118,6 @@ S3_ACCESS_KEY_ID=
119
118
  S3_SECRET_ACCESS_KEY=
120
119
  S3_ENDPOINT=
121
120
  S3_BUCKET=
122
- S3_PUBLIC_DOMAIN=
123
121
  S3_ENABLE_PATH_STYLE=
124
122
 
125
123
  ```
@@ -154,8 +154,6 @@ In the server-side database, we need to configure the S3 storage service to stor
154
154
  S3_BUCKET=LobeHub
155
155
  # Storage bucket request endpoint (note that the path in this link includes the bucket name, which must be removed, or use the link provided on the S3 API token application page)
156
156
  S3_ENDPOINT=https://0b33a03b5c993fd2f453379dc36558e5.r2.cloudflarestorage.com
157
- # Public access domain for the storage bucket
158
- S3_PUBLIC_DOMAIN=https://s3-for-LobeHub.your-domain.com
159
157
  ```
160
158
 
161
159
  <Callout type={'warning'}>
@@ -204,9 +202,6 @@ In the server-side database, we need to configure the S3 storage service to stor
204
202
  S3_BUCKET=LobeHub
205
203
  # Bucket request endpoint
206
204
  S3_ENDPOINT=https://0b33a03b5c993fd2f453379dc36558e5.r2.cloudflarestorage.com
207
- # Public domain for bucket access
208
- S3_PUBLIC_DOMAIN=https://s3-dev.your-domain.com
209
-
210
205
  # Bucket region, such as us-west-1, generally not required, but some providers may need to configure
211
206
  # S3_REGION=us-west-1
212
207
  ```
@@ -288,8 +283,6 @@ S3_SECRET_ACCESS_KEY=55af75d8eb6b99f189f6a35f855336ea62cd9c4751a5cf4337c53c1d3f4
288
283
  S3_BUCKET=LobeHub
289
284
  # Bucket request endpoint
290
285
  S3_ENDPOINT=https://0b33a03b5c993fd2f453379dc36558e5.r2.cloudflarestorage.com
291
- # Public access domain for the bucket
292
- S3_PUBLIC_DOMAIN=https://s3-for-LobeHub.your-domain.com
293
286
  # Bucket region, such as us-west-1, generally not needed to add, but some service providers may require configuration
294
287
  # S3_REGION=us-west-1
295
288
  ```
@@ -153,8 +153,6 @@ tags:
153
153
  S3_BUCKET=LobeHub
154
154
  # 存储桶的请求端点(注意此处链接的路径带存储桶名称,必须删除该路径,或使用申请 S3 API token 页面所提供的链接)
155
155
  S3_ENDPOINT=https://0b33a03b5c993fd2f453379dc36558e5.r2.cloudflarestorage.com
156
- # 存储桶对外的访问域名
157
- S3_PUBLIC_DOMAIN=https://s3-for-LobeHub.your-domain.com
158
156
  ```
159
157
 
160
158
  <Callout type={'warning'}>`S3_ENDPOINT`必须删除其路径,否则会无法访问所上传文件</Callout>
@@ -199,9 +197,6 @@ tags:
199
197
  S3_BUCKET=LobeHub
200
198
  # 存储桶的请求端点
201
199
  S3_ENDPOINT=https://0b33a03b5c993fd2f453379dc36558e5.r2.cloudflarestorage.com
202
- # 存储桶对外的访问域名
203
- S3_PUBLIC_DOMAIN=https://s3-dev.your-domain.com
204
-
205
200
  # 桶的区域,如 us-west-1,一般来说不需要添加,但某些服务商则需要配置
206
201
  # S3_REGION=us-west-1
207
202
  ```
@@ -283,8 +278,6 @@ S3_SECRET_ACCESS_KEY=55af75d8eb6b99f189f6a35f855336ea62cd9c4751a5cf4337c53c1d3f4
283
278
  S3_BUCKET=LobeHub
284
279
  # 存储桶的请求端点
285
280
  S3_ENDPOINT=https://0b33a03b5c993fd2f453379dc36558e5.r2.cloudflarestorage.com
286
- # 存储桶对外的访问域名
287
- S3_PUBLIC_DOMAIN=https://s3-for-LobeHub.your-domain.com
288
281
  # 桶的区域,如 us-west-1,一般来说不需要添加,但某些服务商则需要配置
289
282
  # S3_REGION=us-west-1
290
283
  ```
@@ -150,69 +150,99 @@ Given('用户在 Home 页面有一个 Agent', async function (this: CustomWorld)
150
150
  console.log(` ✅ 找到 Agent: ${agentLabel}, id: ${agentId}`);
151
151
  });
152
152
 
153
- Given('该 Agent 未被置顶', async function (this: CustomWorld) {
153
+ Given('该 Agent 未被置顶', { timeout: 30_000 }, async function (this: CustomWorld) {
154
154
  console.log(' 📍 Step: 检查 Agent 未被置顶...');
155
155
  // Check if the agent has a pin icon - if so, unpin it first
156
156
  const targetItem = this.page.locator(this.testContext.targetItemSelector).first();
157
- const pinIcon = targetItem.locator('svg.lucide-pin');
157
+ // Pin icon uses lucide-react which adds class "lucide lucide-pin"
158
+ const pinIcon = targetItem.locator('svg[class*="lucide-pin"]');
158
159
 
159
160
  if ((await pinIcon.count()) > 0) {
161
+ console.log(' 📍 Agent 已置顶,开始取消置顶操作...');
160
162
  // Unpin it first
161
- await targetItem.click({ button: 'right' });
162
- await this.page.waitForTimeout(300);
163
+ await targetItem.hover();
164
+ await this.page.waitForTimeout(200);
165
+ await targetItem.click({ button: 'right', force: true });
166
+ await this.page.waitForTimeout(500);
163
167
  const unpinOption = this.page.getByRole('menuitem', { name: /取消置顶|unpin/i });
168
+ await unpinOption.waitFor({ state: 'visible', timeout: 5000 }).catch(() => {
169
+ console.log(' ⚠️ 取消置顶选项未找到');
170
+ });
164
171
  if ((await unpinOption.count()) > 0) {
165
172
  await unpinOption.click();
166
173
  await this.page.waitForTimeout(500);
167
174
  }
168
175
  // Close menu if still open
169
- await this.page.click('body', { position: { x: 10, y: 10 } });
176
+ await this.page.keyboard.press('Escape');
177
+ await this.page.waitForTimeout(300);
170
178
  }
171
179
 
172
180
  console.log(' ✅ Agent 未被置顶');
173
181
  });
174
182
 
175
- Given('该 Agent 已被置顶', async function (this: CustomWorld) {
183
+ Given('该 Agent 已被置顶', { timeout: 30_000 }, async function (this: CustomWorld) {
176
184
  console.log(' 📍 Step: 确保 Agent 已被置顶...');
177
185
  // Check if the agent has a pin icon - if not, pin it first
178
186
  const targetItem = this.page.locator(this.testContext.targetItemSelector).first();
179
- const pinIcon = targetItem.locator('svg.lucide-pin');
187
+ // Pin icon uses lucide-react which adds class "lucide lucide-pin"
188
+ const pinIcon = targetItem.locator('svg[class*="lucide-pin"]');
180
189
 
181
190
  if ((await pinIcon.count()) === 0) {
182
- // Pin it first
183
- await targetItem.click({ button: 'right' });
184
- await this.page.waitForTimeout(300);
191
+ console.log(' 📍 Agent 未置顶,开始置顶操作...');
192
+ // Pin it first - right-click on the NavItem Block inside the Link
193
+ // The ContextMenuTrigger is attached to the Block component inside the Link
194
+ await targetItem.hover();
195
+ await this.page.waitForTimeout(200);
196
+ await targetItem.click({ button: 'right', force: true });
197
+ await this.page.waitForTimeout(500);
198
+
199
+ // Debug: check menu visibility
200
+ const menuItems = await this.page.locator('[role="menuitem"]').count();
201
+ console.log(` 📍 Debug: 发现 ${menuItems} 个菜单项`);
202
+
185
203
  const pinOption = this.page.getByRole('menuitem', { name: /置顶|pin/i });
204
+ await pinOption.waitFor({ state: 'visible', timeout: 5000 }).catch(() => {
205
+ console.log(' ⚠️ 置顶选项未找到');
206
+ });
186
207
  if ((await pinOption.count()) > 0) {
187
208
  await pinOption.click();
188
209
  await this.page.waitForTimeout(500);
210
+ console.log(' ✅ 已点击置顶选项');
189
211
  }
190
212
  // Close menu if still open
191
- await this.page.click('body', { position: { x: 10, y: 10 } });
213
+ await this.page.keyboard.press('Escape');
214
+ await this.page.waitForTimeout(300);
192
215
  }
193
216
 
194
- console.log(' ✅ Agent 已被置顶');
217
+ // Verify pin is now visible
218
+ await this.page.waitForTimeout(500);
219
+ const pinIconAfter = targetItem.locator('svg[class*="lucide-pin"]');
220
+ const isPinned = (await pinIconAfter.count()) > 0;
221
+ console.log(` ✅ Agent 已被置顶: ${isPinned}`);
195
222
  });
196
223
 
197
224
  // ============================================
198
225
  // When Steps
199
226
  // ============================================
200
227
 
201
- When('用户右键点击该 Agent', async function (this: CustomWorld) {
228
+ When('用户右键点击该 Agent', { timeout: 30_000 }, async function (this: CustomWorld) {
202
229
  console.log(' 📍 Step: 右键点击 Agent...');
203
230
 
204
231
  const targetItem = this.page.locator(this.testContext.targetItemSelector).first();
205
232
 
206
- // Right-click on the inner content (the NavItem Block component)
207
- // The ContextMenuTrigger wraps the Block, not the Link
208
- const innerBlock = targetItem.locator('> div').first();
209
- if ((await innerBlock.count()) > 0) {
210
- await innerBlock.click({ button: 'right' });
211
- } else {
212
- await targetItem.click({ button: 'right' });
213
- }
233
+ // Hover first to ensure element is interactive
234
+ await targetItem.hover();
235
+ await this.page.waitForTimeout(200);
236
+
237
+ // Right-click with force option to ensure it triggers
238
+ await targetItem.click({ button: 'right', force: true });
239
+ await this.page.waitForTimeout(500);
214
240
 
215
- await this.page.waitForTimeout(800);
241
+ // Wait for context menu to appear
242
+ const menuItem = this.page.locator('[role="menuitem"]').first();
243
+ await menuItem.waitFor({ state: 'visible', timeout: 5000 }).catch(() => {
244
+ console.log(' ⚠️ 菜单未出现,重试右键点击...');
245
+ });
216
246
 
217
247
  // Debug: check what menus are visible
218
248
  const menuItems = await this.page.locator('[role="menuitem"]').count();
@@ -339,7 +369,8 @@ Then('Agent 应该显示置顶图标', async function (this: CustomWorld) {
339
369
 
340
370
  await this.page.waitForTimeout(500);
341
371
  const targetItem = this.page.locator(this.testContext.targetItemSelector).first();
342
- const pinIcon = targetItem.locator('svg.lucide-pin');
372
+ // Pin icon uses lucide-react which adds class "lucide lucide-pin"
373
+ const pinIcon = targetItem.locator('svg[class*="lucide-pin"]');
343
374
  await expect(pinIcon).toBeVisible({ timeout: 5000 });
344
375
 
345
376
  console.log(' ✅ 置顶图标已显示');
@@ -350,7 +381,8 @@ Then('Agent 不应该显示置顶图标', async function (this: CustomWorld) {
350
381
 
351
382
  await this.page.waitForTimeout(500);
352
383
  const targetItem = this.page.locator(this.testContext.targetItemSelector).first();
353
- const pinIcon = targetItem.locator('svg.lucide-pin');
384
+ // Pin icon uses lucide-react which adds class "lucide lucide-pin"
385
+ const pinIcon = targetItem.locator('svg[class*="lucide-pin"]');
354
386
  await expect(pinIcon).not.toBeVisible({ timeout: 5000 });
355
387
 
356
388
  console.log(' ✅ 置顶图标未显示');
@@ -8,6 +8,7 @@
8
8
  "codes.DELETED_ACCOUNT_EMAIL": "تم ربط هذا البريد الإلكتروني بحساب محذوف ولا يمكن استخدامه للتسجيل",
9
9
  "codes.EMAIL_CAN_NOT_BE_UPDATED": "لا يمكن تحديث البريد الإلكتروني لهذا الحساب",
10
10
  "codes.EMAIL_NOT_ALLOWED": "هذا البريد الإلكتروني غير مسموح به للتسجيل",
11
+ "codes.EMAIL_NOT_FOUND": "لا يوجد بريد إلكتروني مرتبط بهذا الحساب. يرجى التحقق مما إذا كان حسابك مرتبطًا ببريد إلكتروني.",
11
12
  "codes.EMAIL_NOT_VERIFIED": "يرجى التحقق من بريدك الإلكتروني أولاً",
12
13
  "codes.FAILED_TO_CREATE_SESSION": "فشل في إنشاء الجلسة",
13
14
  "codes.FAILED_TO_CREATE_USER": "فشل في إنشاء المستخدم",
@@ -90,6 +90,7 @@
90
90
  "Phi-3-small-8k-instruct.description": "نموذج يحتوي على 7 مليارات معلمة بجودة أعلى من Phi-3-mini، يركز على البيانات عالية الجودة التي تتطلب استدلالًا مكثفًا.",
91
91
  "Phi-3.5-mini-instruct.description": "إصدار محدث من نموذج Phi-3-mini.",
92
92
  "Phi-3.5-vision-instrust.description": "إصدار محدث من نموذج Phi-3-vision.",
93
+ "Pro/MiniMaxAI/MiniMax-M2.1.description": "MiniMax-M2.1 هو نموذج لغوي مفتوح المصدر ومتقدم، مُحسَّن لقدرات الوكلاء، ويتفوق في البرمجة، واستخدام الأدوات، واتباع التعليمات، والتخطيط طويل الأمد. يدعم النموذج تطوير البرمجيات متعددة اللغات وتنفيذ سير العمل المعقد متعدد الخطوات، وحقق نتيجة 74.0 على SWE-bench Verified، متفوقًا على Claude Sonnet 4.5 في السيناريوهات متعددة اللغات.",
93
94
  "Pro/Qwen/Qwen2-7B-Instruct.description": "Qwen2-7B-Instruct هو نموذج لغوي كبير (LLM) موجه للتعليمات ضمن سلسلة Qwen2. يستخدم بنية Transformer مع SwiGLU، وانحياز QKV في الانتباه، وانتباه الاستعلامات المجمعة، ويعالج مدخلات كبيرة. يتميز بأداء قوي في فهم اللغة، التوليد، المهام متعددة اللغات، البرمجة، الرياضيات، والاستدلال، متفوقًا على معظم النماذج المفتوحة ومنافسًا للنماذج التجارية. يتفوق على Qwen1.5-7B-Chat في العديد من المعايير.",
94
95
  "Pro/Qwen/Qwen2.5-7B-Instruct.description": "Qwen2.5-7B-Instruct هو جزء من أحدث سلسلة نماذج لغوية كبيرة من Alibaba Cloud. يقدم هذا النموذج ذو 7 مليارات معلمة تحسينات ملحوظة في البرمجة والرياضيات، ويدعم أكثر من 29 لغة، ويعزز اتباع التعليمات، وفهم البيانات المنظمة، وإنتاج المخرجات المنظمة (خصوصًا JSON).",
95
96
  "Pro/Qwen/Qwen2.5-Coder-7B-Instruct.description": "Qwen2.5-Coder-7B-Instruct هو أحدث نموذج لغوي كبير من Alibaba Cloud يركز على البرمجة. مبني على Qwen2.5 ومدرب على 5.5 تريليون رمز، يعزز بشكل كبير توليد الشيفرة، الاستدلال، والإصلاح، مع الحفاظ على القوة في الرياضيات والقدرات العامة، مما يوفر أساسًا قويًا لوكلاء البرمجة.",
@@ -271,21 +272,21 @@
271
272
  "chatgpt-4o-latest.description": "ChatGPT-4o هو نموذج ديناميكي يتم تحديثه في الوقت الفعلي، يجمع بين الفهم العميق والقدرة على التوليد لتلبية احتياجات الاستخدام الواسعة مثل دعم العملاء والتعليم والدعم الفني.",
272
273
  "claude-2.0.description": "Claude 2 يقدم تحسينات رئيسية للمؤسسات، بما في ذلك سياق 200 ألف رمز، تقليل الهلوسة، دعم التعليمات النظامية، وميزة جديدة: استدعاء الأدوات.",
273
274
  "claude-2.1.description": "Claude 2 يقدم تحسينات رئيسية للمؤسسات، بما في ذلك سياق 200 ألف رمز، تقليل الهلوسة، دعم التعليمات النظامية، وميزة جديدة: استدعاء الأدوات.",
274
- "claude-3-5-haiku-20241022.description": "Claude 3.5 Haiku هو أسرع نموذج من الجيل الجديد من Anthropic، يتميز بتحسينات في المهارات ويتفوق على النموذج الرائد السابق Claude 3 Opus في العديد من المعايير.",
275
+ "claude-3-5-haiku-20241022.description": "Claude 3.5 Haiku هو النموذج الأسرع من الجيل التالي لشركة Anthropic. مقارنةً بـ Claude 3 Haiku، يقدم تحسينات في المهارات ويتفوق على النموذج الأكبر السابق Claude 3 Opus في العديد من اختبارات الذكاء.",
275
276
  "claude-3-5-haiku-latest.description": "Claude 3.5 Haiku يقدم استجابات سريعة للمهام الخفيفة.",
276
- "claude-3-7-sonnet-20250219.description": "Claude Sonnet 3.7 هو أذكى نموذج من Anthropic وأول نموذج هجيني للاستدلال في السوق، يدعم الاستجابات الفورية أو التفكير المطول مع تحكم دقيق.",
277
+ "claude-3-7-sonnet-20250219.description": "Claude 3.7 Sonnet هو النموذج الأكثر ذكاءً من Anthropic وأول نموذج يجمع بين أساليب التفكير المختلفة في السوق. يمكنه تقديم ردود فورية تقريبًا أو استدلال تدريجي مرئي للمستخدم. يتميز Sonnet بقوة خاصة في البرمجة، وعلوم البيانات، والرؤية الحاسوبية، ومهام الوكلاء.",
277
278
  "claude-3-7-sonnet-latest.description": "Claude 3.7 Sonnet هو أحدث وأقوى نموذج من Anthropic للمهام المعقدة، يتميز بالأداء العالي، الذكاء، الطلاقة، والفهم العميق.",
278
279
  "claude-3-haiku-20240307.description": "Claude 3 Haiku هو أسرع وأصغر نموذج من Anthropic، مصمم لتقديم استجابات شبه فورية بأداء سريع ودقيق.",
279
280
  "claude-3-opus-20240229.description": "Claude 3 Opus هو أقوى نموذج من Anthropic للمهام المعقدة، يتميز بالأداء العالي، الذكاء، الطلاقة، والفهم.",
280
281
  "claude-3-sonnet-20240229.description": "Claude 3 Sonnet يوازن بين الذكاء والسرعة لتلبية احتياجات المؤسسات، ويوفر فائدة عالية بتكلفة أقل ونشر موثوق على نطاق واسع.",
281
- "claude-haiku-4-5-20251001.description": "Claude Haiku 4.5 هو أسرع وأذكى نموذج Haiku من Anthropic، يتميز بسرعة فائقة وقدرة على التفكير المعمق.",
282
+ "claude-haiku-4-5-20251001.description": "Claude Haiku 4.5 هو النموذج الأسرع والأذكى من سلسلة Haiku لدى Anthropic، يجمع بين السرعة الفائقة والاستدلال المتقدم.",
282
283
  "claude-opus-4-1-20250805-thinking.description": "Claude Opus 4.1 Thinking هو إصدار متقدم يمكنه عرض عملية تفكيره.",
283
- "claude-opus-4-1-20250805.description": "Claude Opus 4.1 هو أحدث وأقوى نموذج من Anthropic للمهام المعقدة للغاية، يتميز بالأداء العالي، الذكاء، الطلاقة، والفهم العميق.",
284
- "claude-opus-4-20250514.description": "Claude Opus 4 هو أقوى نموذج من Anthropic للمهام المعقدة للغاية، يتميز بالأداء العالي، الذكاء، الطلاقة، والفهم العميق.",
284
+ "claude-opus-4-1-20250805.description": "Claude Opus 4.1 هو أحدث وأقوى نموذج من Anthropic للمهام المعقدة للغاية، يتميز بالأداء العالي، والذكاء، والطلاقة، والفهم العميق.",
285
+ "claude-opus-4-20250514.description": "Claude Opus 4 هو أقوى نموذج من Anthropic للمهام المعقدة، يتفوق في الأداء، والذكاء، والطلاقة، والاستيعاب.",
285
286
  "claude-opus-4-5-20251101.description": "Claude Opus 4.5 هو النموذج الرائد من Anthropic، يجمع بين الذكاء الاستثنائي والأداء القابل للتوسع، مثالي للمهام المعقدة التي تتطلب استجابات عالية الجودة وتفكير متقدم.",
286
287
  "claude-sonnet-4-20250514-thinking.description": "Claude Sonnet 4 Thinking يمكنه تقديم استجابات شبه فورية أو تفكير متسلسل مرئي.",
287
- "claude-sonnet-4-20250514.description": "Claude Sonnet 4 هو أذكى نموذج من Anthropic حتى الآن، يوفر استجابات شبه فورية أو تفكير متسلسل مع تحكم دقيق لمستخدمي واجهة البرمجة.",
288
- "claude-sonnet-4-5-20250929.description": "Claude Sonnet 4.5 هو أذكى نموذج من Anthropic حتى الآن.",
288
+ "claude-sonnet-4-20250514.description": "Claude Sonnet 4 قادر على تقديم ردود شبه فورية أو تفكير تدريجي مفصل يمكن للمستخدم متابعته.",
289
+ "claude-sonnet-4-5-20250929.description": "Claude Sonnet 4.5 هو النموذج الأكثر ذكاءً حتى الآن من Anthropic.",
289
290
  "codegeex-4.description": "CodeGeeX-4 هو مساعد برمجة ذكي يدعم الأسئلة والأجوبة متعددة اللغات وإكمال الشيفرة لزيادة إنتاجية المطورين.",
290
291
  "codegeex4-all-9b.description": "CodeGeeX4-ALL-9B هو نموذج توليد شيفرة متعدد اللغات يدعم الإكمال والتوليد، تفسير الشيفرة، البحث عبر الإنترنت، استدعاء الوظائف، وأسئلة وأجوبة على مستوى المستودع، ويغطي مجموعة واسعة من سيناريوهات تطوير البرمجيات. يُعد من أفضل نماذج الشيفرة تحت 10B.",
291
292
  "codegemma.description": "CodeGemma هو نموذج خفيف الوزن لمهام البرمجة المتنوعة، يتيح التكرار السريع والتكامل السلس.",
@@ -351,11 +352,10 @@
351
352
  "deepseek-ai/DeepSeek-V3.2-Exp.description": "DeepSeek-V3.2-Exp هو إصدار تجريبي من V3.2 يربط بالهيكلية القادمة. يضيف انتباهًا متفرقًا (DSA) إلى V3.1-Terminus لتحسين كفاءة التدريب والاستدلال في السياقات الطويلة، مع تحسينات لاستخدام الأدوات، وفهم المستندات الطويلة، والتفكير متعدد الخطوات. مثالي لاستكشاف كفاءة تفكير أعلى بميزانيات سياق كبيرة.",
352
353
  "deepseek-ai/DeepSeek-V3.description": "DeepSeek-V3 هو نموذج MoE يحتوي على 671 مليار معلمة، يستخدم MLA وDeepSeekMoE مع توازن تحميل خالٍ من الفقدان لتدريب واستدلال فعال. تم تدريبه مسبقًا على 14.8 تريليون رمز عالي الجودة مع SFT وRL، ويتفوق على النماذج المفتوحة الأخرى ويقترب من النماذج المغلقة الرائدة.",
353
354
  "deepseek-ai/deepseek-llm-67b-chat.description": "DeepSeek LLM Chat (67B) هو نموذج مبتكر يوفر فهمًا عميقًا للغة وتفاعلًا ذكيًا.",
354
- "deepseek-ai/deepseek-r1.description": "نموذج لغة كبير فعال وحديث يتميز بقوة في التفكير، والرياضيات، والبرمجة.",
355
355
  "deepseek-ai/deepseek-v3.1-terminus.description": "DeepSeek V3.1 هو نموذج تفكير من الجيل التالي يتمتع بقدرات أقوى في التفكير المعقد وسلسلة التفكير لمهام التحليل العميق.",
356
356
  "deepseek-ai/deepseek-v3.1.description": "DeepSeek V3.1 هو نموذج تفكير من الجيل التالي يتمتع بقدرات أقوى في التفكير المعقد وسلسلة التفكير لمهام التحليل العميق.",
357
357
  "deepseek-ai/deepseek-vl2.description": "DeepSeek-VL2 هو نموذج رؤية-لغة MoE يعتمد على DeepSeekMoE-27B مع تنشيط متفرق، ويحقق أداءً قويًا باستخدام 4.5 مليار معلمة نشطة فقط. يتميز في الأسئلة البصرية، وOCR، وفهم المستندات/الجداول/المخططات، والتأريض البصري.",
358
- "deepseek-chat.description": "DeepSeek V3.2 يوازن بين الاستدلال وطول المخرجات لمهام الأسئلة والأجوبة اليومية والمهام الوكيلة. يحقق نتائج مماثلة لـ GPT-5 في المعايير العامة، وهو أول من يدمج التفكير في استخدام الأدوات، مما يجعله رائدًا في تقييمات الوكلاء مفتوحة المصدر.",
358
+ "deepseek-chat.description": "نموذج مفتوح المصدر جديد يجمع بين القدرات العامة والبرمجية. يحافظ على حوار النموذج العام وقوة نموذج البرمجة، مع تحسين التوافق مع تفضيلات المستخدم. كما يعزز DeepSeek-V2.5 مهارات الكتابة واتباع التعليمات.",
359
359
  "deepseek-coder-33B-instruct.description": "DeepSeek Coder 33B هو نموذج لغة برمجية تم تدريبه على 2 تريليون رمز (87٪ كود، 13٪ نص صيني/إنجليزي). يقدم نافذة سياق 16K ومهام الإكمال في المنتصف، ويوفر إكمال كود على مستوى المشاريع وملء مقاطع الكود.",
360
360
  "deepseek-coder-v2.description": "DeepSeek Coder V2 هو نموذج كود MoE مفتوح المصدر يتميز بأداء قوي في مهام البرمجة، ويضاهي GPT-4 Turbo.",
361
361
  "deepseek-coder-v2:236b.description": "DeepSeek Coder V2 هو نموذج كود MoE مفتوح المصدر يتميز بأداء قوي في مهام البرمجة، ويضاهي GPT-4 Turbo.",
@@ -378,7 +378,7 @@
378
378
  "deepseek-r1-fast-online.description": "الإصدار الكامل السريع من DeepSeek R1 مع بحث ويب في الوقت الحقيقي، يجمع بين قدرات بحجم 671B واستجابة أسرع.",
379
379
  "deepseek-r1-online.description": "الإصدار الكامل من DeepSeek R1 مع 671 مليار معلمة وبحث ويب في الوقت الحقيقي، يوفر فهمًا وتوليدًا أقوى.",
380
380
  "deepseek-r1.description": "يستخدم DeepSeek-R1 بيانات البداية الباردة قبل التعلم المعزز ويؤدي أداءً مماثلًا لـ OpenAI-o1 في الرياضيات، والبرمجة، والتفكير.",
381
- "deepseek-reasoner.description": "DeepSeek V3.2 Thinking هو نموذج استدلال عميق يولد سلسلة من الأفكار قبل المخرجات لتحقيق دقة أعلى، ويحقق نتائج تنافسية عالية واستدلالًا مماثلًا لـ Gemini-3.0-Pro.",
381
+ "deepseek-reasoner.description": "وضع التفكير في DeepSeek V3.2 ينتج سلسلة من الأفكار قبل الإجابة النهائية لتحسين الدقة.",
382
382
  "deepseek-v2.description": "DeepSeek V2 هو نموذج MoE فعال لمعالجة منخفضة التكلفة.",
383
383
  "deepseek-v2:236b.description": "DeepSeek V2 236B هو نموذج DeepSeek الموجه للبرمجة مع قدرات قوية في توليد الكود.",
384
384
  "deepseek-v3-0324.description": "DeepSeek-V3-0324 هو نموذج MoE يحتوي على 671 مليار معلمة يتميز بقوة في البرمجة، والقدرات التقنية، وفهم السياق، والتعامل مع النصوص الطويلة.",
@@ -472,8 +472,7 @@
472
472
  "ernie-tiny-8k.description": "ERNIE Tiny 8K هو نموذج فائق الخفة للأسئلة البسيطة، والتصنيف، والاستدلال منخفض التكلفة.",
473
473
  "ernie-x1-turbo-32k.description": "ERNIE X1 Turbo 32K هو نموذج تفكير سريع بسياق 32K للاستدلال المعقد والدردشة متعددة الأدوار.",
474
474
  "ernie-x1.1-preview.description": "معاينة ERNIE X1.1 هو نموذج تفكير مخصص للتقييم والاختبار.",
475
- "fal-ai/bytedance/seedream/v4.5.description": "Seedream 4. من تطوير فريق Seed في ByteDance، يدعم تحرير وتركيب صور متعددة. يتميز بثبات أكبر في العناصر، ودقة في تنفيذ التعليمات، وفهم للمنطق المكاني، وتعبير جمالي، وتصميم ملصقات وشعارات بدقة عالية في تحويل النص إلى صورة.",
476
- "fal-ai/bytedance/seedream/v4.description": "Seedream 4.0، من تطوير ByteDance Seed، يدعم إدخال النصوص والصور لتوليد صور عالية الجودة وقابلة للتحكم بدرجة كبيرة من خلال الأوامر.",
475
+ "fal-ai/bytedance/seedream/v4.description": "Seedream 4.0 هو نموذج توليد صور من ByteDance Seed، يدعم إدخال النصوص والصور، ويتميز بإنتاج صور عالية الجودة وقابلة للتحكم بدقة. يقوم بإنشاء صور استنادًا إلى أوامر نصية.",
477
476
  "fal-ai/flux-kontext/dev.description": "نموذج FLUX.1 يركز على تحرير الصور، ويدعم إدخال النصوص والصور.",
478
477
  "fal-ai/flux-pro/kontext.description": "FLUX.1 Kontext [pro] يقبل النصوص وصور مرجعية كمدخلات، مما يتيح تعديلات محلية مستهدفة وتحولات معقدة في المشهد العام.",
479
478
  "fal-ai/flux/krea.description": "Flux Krea [dev] هو نموذج لتوليد الصور يتميز بميول جمالية نحو صور أكثر واقعية وطبيعية.",
@@ -481,8 +480,8 @@
481
480
  "fal-ai/hunyuan-image/v3.description": "نموذج قوي لتوليد الصور متعدد الوسائط أصلي.",
482
481
  "fal-ai/imagen4/preview.description": "نموذج عالي الجودة لتوليد الصور من Google.",
483
482
  "fal-ai/nano-banana.description": "Nano Banana هو أحدث وأسرع وأكثر نماذج Google كفاءةً لتوليد وتحرير الصور من خلال المحادثة.",
484
- "fal-ai/qwen-image-edit.description": "نموذج تحرير صور احترافي من فريق Qwen، يدعم التعديلات الدلالية والمظهرية، تحرير النصوص بدقة باللغتين الصينية والإنجليزية، نقل الأنماط، التدوير، والمزيد.",
485
- "fal-ai/qwen-image.description": "نموذج توليد صور قوي من فريق Qwen يتميز بعرض نصوص صينية قوية وأنماط بصرية متنوعة.",
483
+ "fal-ai/qwen-image-edit.description": "نموذج احترافي لتحرير الصور من فريق Qwen، يدعم التعديلات الدلالية والمظهرية، ويحرر النصوص الصينية والإنجليزية بدقة، كما يتيح تعديلات عالية الجودة مثل نقل الأسلوب وتدوير العناصر.",
484
+ "fal-ai/qwen-image.description": "نموذج قوي لتوليد الصور من فريق Qwen، يتميز بعرض متميز للنصوص الصينية وأنماط بصرية متنوعة.",
486
485
  "flux-1-schnell.description": "نموذج تحويل النص إلى صورة يحتوي على 12 مليار معلمة من Black Forest Labs يستخدم تقنيات تقطير الانتشار العدائي الكامن لتوليد صور عالية الجودة في 1-4 خطوات. ينافس البدائل المغلقة ومتاح بموجب ترخيص Apache-2.0 للاستخدام الشخصي والبحثي والتجاري.",
487
486
  "flux-dev.description": "FLUX.1 [dev] هو نموذج مفتوح الأوزان ومقطر للاستخدام غير التجاري. يحافظ على جودة صور قريبة من المستوى الاحترافي واتباع التعليمات مع كفاءة تشغيل أعلى مقارنة بالنماذج القياسية من نفس الحجم.",
488
487
  "flux-kontext-max.description": "توليد وتحرير صور سياقية متقدمة، تجمع بين النصوص والصور لتحقيق نتائج دقيقة ومتسقة.",
@@ -514,8 +513,6 @@
514
513
  "gemini-2.0-flash-lite-001.description": "إصدار من Gemini 2.0 Flash محسن لتقليل التكلفة وتقليل التأخير.",
515
514
  "gemini-2.0-flash-lite.description": "إصدار من Gemini 2.0 Flash محسن لتقليل التكلفة وتقليل التأخير.",
516
515
  "gemini-2.0-flash.description": "Gemini 2.0 Flash يقدم ميزات الجيل التالي بما في ذلك السرعة الاستثنائية، واستخدام الأدوات الأصلية، والتوليد متعدد الوسائط، وسياق يصل إلى مليون رمز.",
517
- "gemini-2.5-flash-image-preview.description": "Nano Banana هو أحدث وأسرع وأكثر نماذج Google كفاءةً في التعدد الوسائطي، يتيح توليد وتحرير الصور من خلال المحادثة.",
518
- "gemini-2.5-flash-image-preview:image.description": "Nano Banana هو أحدث وأسرع وأكثر نماذج Google كفاءةً في التعدد الوسائطي، يتيح توليد وتحرير الصور من خلال المحادثة.",
519
516
  "gemini-2.5-flash-image.description": "Nano Banana هو أحدث وأسرع وأكثر نماذج Google متعددة الوسائط كفاءة، يتيح توليد الصور وتحريرها عبر المحادثة.",
520
517
  "gemini-2.5-flash-image:image.description": "Nano Banana هو أحدث وأسرع وأكثر نماذج Google متعددة الوسائط كفاءة، يتيح توليد الصور وتحريرها عبر المحادثة.",
521
518
  "gemini-2.5-flash-lite-preview-06-17.description": "Gemini 2.5 Flash-Lite Preview هو أصغر نموذج من Google وأفضلها من حيث القيمة، مصمم للاستخدام واسع النطاق.",
@@ -530,7 +527,7 @@
530
527
  "gemini-2.5-pro.description": "Gemini 2.5 Pro هو النموذج الرائد من Google في مجال الاستدلال، يدعم السياق الطويل للمهام المعقدة.",
531
528
  "gemini-3-flash-preview.description": "Gemini 3 Flash هو أذكى نموذج تم تصميمه للسرعة، يجمع بين الذكاء المتقدم وأساس بحث ممتاز.",
532
529
  "gemini-3-pro-image-preview.description": "Gemini 3 Pro Image (Nano Banana Pro) هو نموذج توليد الصور من Google ويدعم المحادثة متعددة الوسائط.",
533
- "gemini-3-pro-image-preview:image.description": "Gemini 3 Pro Image (Nano Banana Pro) هو نموذج توليد الصور من Google ويدعم أيضًا المحادثة متعددة الوسائط.",
530
+ "gemini-3-pro-image-preview:image.description": "Gemini 3 Pro Image (Nano Banana Pro) هو نموذج توليد الصور من Google ويدعم أيضًا الدردشة متعددة الوسائط.",
534
531
  "gemini-3-pro-preview.description": "Gemini 3 Pro هو أقوى نموذج من Google للوكيل الذكي والبرمجة الإبداعية، يقدم تفاعلاً أعمق وصورًا أغنى مع استدلال متقدم.",
535
532
  "gemini-flash-latest.description": "أحدث إصدار من Gemini Flash",
536
533
  "gemini-flash-lite-latest.description": "أحدث إصدار من Gemini Flash-Lite",
@@ -543,7 +540,7 @@
543
540
  "generalv3.5.description": "Spark Max هو الإصدار الأكثر تكاملًا، يدعم البحث عبر الإنترنت والعديد من الإضافات المدمجة. قدراته الأساسية المحسّنة، وأدوار النظام، واستدعاء الوظائف توفر أداءً ممتازًا في سيناريوهات التطبيقات المعقدة.",
544
541
  "generalv3.description": "Spark Pro هو نموذج لغوي عالي الأداء مُحسّن للمجالات المهنية، يركز على الرياضيات، والبرمجة، والرعاية الصحية، والتعليم، مع دعم البحث عبر الإنترنت والإضافات المدمجة مثل الطقس والتاريخ. يقدم أداءً قويًا وكفاءة في أسئلة المعرفة المعقدة، وفهم اللغة، وإنشاء النصوص المتقدمة، مما يجعله خيارًا مثاليًا للاستخدام المهني.",
545
542
  "glm-4-0520.description": "GLM-4-0520 هو أحدث إصدار من النموذج، مصمم للمهام المعقدة والمتنوعة بأداء ممتاز.",
546
- "glm-4-32b-0414.description": "GLM-4 32B 0414 هو نموذج عام من GLM يدعم توليد النصوص وفهمها عبر مهام متعددة.",
543
+ "glm-4-7.description": "GLM-4.7 هو النموذج الرائد الأحدث من Zhipu AI. يعزز قدرات البرمجة، وتخطيط المهام طويلة الأمد، والتعاون مع الأدوات في سيناريوهات البرمجة بالوكيل، محققًا أداءً رائدًا بين النماذج مفتوحة المصدر في العديد من المعايير العامة. كما تم تحسين القدرات العامة، مع ردود أكثر طبيعية واختصارًا، وتجربة كتابة أكثر غمرًا. في المهام المعقدة، أصبح اتباع التعليمات أقوى أثناء استخدام الأدوات، وتم تحسين جمالية الواجهات وكفاءة إتمام المهام طويلة الأمد. • قدرات برمجية أقوى: تحسين كبير في البرمجة متعددة اللغات وأداء الوكلاء الطرفيين؛ يمكن لـ GLM-4.7 الآن تنفيذ آلية \"فكر أولاً، ثم تصرف\" في أطر مثل Claude Code وKilo Code وTRAE وCline وRoo Code، مع أداء أكثر استقرارًا في المهام المعقدة. • تحسين جمالية الواجهات: تقدم ملحوظ في جودة توليد الواجهات، قادر على إنشاء مواقع إلكترونية وعروض تقديمية وملصقات بجاذبية بصرية أفضل. • قدرات أقوى في استدعاء الأدوات: يعزز GLM-4.7 قدرات استدعاء الأدوات، محققًا 67 نقطة في تقييم BrowseComp لمهام الويب؛ و84.7 نقطة في تقييم τ²-Bench لاستدعاء الأدوات التفاعلي، متفوقًا على Claude Sonnet 4.5 كأفضل نموذج مفتوح المصدر. • تحسين قدرات الاستدلال: تعزيز كبير في القدرات الرياضية والمنطقية، محققًا 42.8% في معيار HLE (\"امتحان البشرية الأخير\"), بزيادة 41% عن GLM-4.6، متفوقًا على GPT-5.1. • تعزيز القدرات العامة: محادثات GLM-4.7 أكثر اختصارًا وذكاءً وإنسانية؛ والكتابة ولعب الأدوار أكثر أدبية وغامرة.",
547
544
  "glm-4-9b-chat.description": "GLM-4-9B-Chat يتميز بقوة في الدلالات، الرياضيات، الاستدلال، البرمجة، والمعرفة. كما يدعم تصفح الويب، تنفيذ الشيفرات، استدعاء الأدوات المخصصة، والاستدلال على النصوص الطويلة، مع دعم لـ 26 لغة منها اليابانية والكورية والألمانية.",
548
545
  "glm-4-air-250414.description": "GLM-4-Air هو خيار عالي القيمة بأداء قريب من GLM-4، سرعة عالية، وتكلفة منخفضة.",
549
546
  "glm-4-air.description": "GLM-4-Air هو خيار عالي القيمة بأداء قريب من GLM-4، سرعة عالية، وتكلفة منخفضة.",
@@ -558,11 +555,12 @@
558
555
  "glm-4.1v-thinking-flashx.description": "GLM-4.1V-Thinking هو أقوى نموذج VLM معروف بحجم ~10B، يغطي مهام متقدمة مثل فهم الفيديو، الأسئلة البصرية، حل المسائل، التعرف البصري، قراءة المستندات والمخططات، وكلاء واجهات المستخدم، برمجة الواجهات، والتأريض. يتفوق على Qwen2.5-VL-72B الأكبر بـ8 مرات في العديد من المهام. يستخدم استدلال سلسلة الأفكار لتحسين الدقة والثراء، متفوقًا على النماذج التقليدية غير المفكرة في النتائج والشرح.",
559
556
  "glm-4.5-air.description": "GLM-4.5 إصدار خفيف يوازن بين الأداء والتكلفة، مع أوضاع تفكير هجينة مرنة.",
560
557
  "glm-4.5-airx.description": "GLM-4.5-Air إصدار سريع يوفر استجابات أسرع للاستخدام واسع النطاق وعالي السرعة.",
561
- "glm-4.5-flash.description": "إصدار مجاني من GLM-4.5 بأداء قوي في الاستدلال، البرمجة، والمهام الوكيلة.",
562
558
  "glm-4.5-x.description": "GLM-4.5 إصدار سريع، يقدم أداءً قويًا مع سرعات توليد تصل إلى 100 رمز/ثانية.",
563
559
  "glm-4.5.description": "نموذج Zhipu الرائد مع وضع تفكير قابل للتبديل، يقدم أداءً رائدًا مفتوح المصدر وسياق يصل إلى 128K.",
564
560
  "glm-4.5v.description": "نموذج الرؤية والاستدلال من الجيل التالي من Zhipu بتقنية MoE، يحتوي على 106 مليار معلمة إجمالية و12 مليار نشطة، يحقق أداءً رائدًا بين النماذج متعددة الوسائط مفتوحة المصدر ذات الحجم المماثل في مهام الصور، الفيديو، فهم المستندات، ومهام واجهات المستخدم.",
565
561
  "glm-4.6.description": "GLM-4.6 (355B) هو النموذج الرائد الأحدث من Zhipu، يتفوق بشكل كامل على النماذج السابقة في الترميز المتقدم، ومعالجة النصوص الطويلة، والاستدلال، وقدرات الوكلاء. يتماشى بشكل خاص مع Claude Sonnet 4 في قدرات البرمجة، مما يجعله النموذج الأفضل في الصين للترميز.",
562
+ "glm-4.7-flash.description": "GLM-4.7-Flash، كنموذج SOTA بحجم 30 مليار، يقدم خيارًا جديدًا يوازن بين الأداء والكفاءة. يعزز قدرات البرمجة، وتخطيط المهام طويلة الأمد، والتعاون مع الأدوات في سيناريوهات البرمجة بالوكيل، محققًا أداءً رائدًا بين النماذج مفتوحة المصدر من نفس الحجم في العديد من المعايير الحالية. في تنفيذ المهام المعقدة، يتميز بامتثال أقوى للتعليمات أثناء استدعاء الأدوات، ويعزز جمالية الواجهات وكفاءة إتمام المهام طويلة الأمد.",
563
+ "glm-4.7-flashx.description": "GLM-4.7-Flash، كنموذج SOTA بحجم 30 مليار، يقدم خيارًا جديدًا يوازن بين الأداء والكفاءة. يعزز قدرات البرمجة، وتخطيط المهام طويلة الأمد، والتعاون مع الأدوات في سيناريوهات البرمجة بالوكيل، محققًا أداءً رائدًا بين النماذج مفتوحة المصدر من نفس الحجم في العديد من المعايير الحالية. في تنفيذ المهام المعقدة، يتميز بامتثال أقوى للتعليمات أثناء استدعاء الأدوات، ويعزز جمالية الواجهات وكفاءة إتمام المهام طويلة الأمد.",
566
564
  "glm-4.7.description": "GLM-4.7 هو النموذج الرائد الأحدث من Zhipu، تم تعزيزه لسيناريوهات الترميز الوكالي مع تحسينات في قدرات البرمجة، وتخطيط المهام طويلة الأمد، والتعاون مع الأدوات. يحقق أداءً رائدًا بين النماذج مفتوحة المصدر في العديد من المعايير العامة. تم تحسين القدرات العامة لتقديم ردود أكثر إيجازًا وطبيعية، وتجربة كتابة أكثر غمرًا. في المهام المعقدة للوكلاء، تم تعزيز اتباع التعليمات أثناء استدعاء الأدوات، كما تم تحسين جمالية الواجهة وكفاءة إتمام المهام طويلة الأمد في Artifacts والترميز الوكالي.",
567
565
  "glm-4.description": "GLM-4 هو النموذج الرائد الأقدم الذي تم إصداره في يناير 2024، وقد تم استبداله الآن بـ GLM-4-0520 الأقوى.",
568
566
  "glm-4v-flash.description": "GLM-4V-Flash يركز على فهم صورة واحدة بكفاءة لسيناريوهات التحليل السريع مثل المعالجة الفورية أو الدفعية للصور.",
@@ -654,8 +652,8 @@
654
652
  "gpt-5.1-codex-mini.description": "GPT-5.1 Codex mini: إصدار أصغر وأقل تكلفة من Codex، محسّن لمهام البرمجة التلقائية.",
655
653
  "gpt-5.1-codex.description": "GPT-5.1 Codex: إصدار من GPT-5.1 محسّن لمهام البرمجة التلقائية، مناسب لتدفقات العمل المعقدة في واجهة Responses API.",
656
654
  "gpt-5.1.description": "GPT-5.1 — نموذج رائد محسّن للبرمجة والمهام التلقائية مع جهد استدلال قابل للتكوين وسياق أطول.",
657
- "gpt-5.2-chat-latest.description": "GPT-5.2 Chat هو إصدار ChatGPT (chat-latest) لتجربة أحدث تحسينات المحادثة.",
658
- "gpt-5.2-pro.description": "GPT-5.2 Pro: إصدار أكثر ذكاءً ودقة من GPT-5.2 (متاح فقط عبر Responses API)، مناسب للمشكلات الصعبة والاستدلال متعدد الأدوار الطويل.",
655
+ "gpt-5.2-chat-latest.description": "GPT-5.2 Chat هو إصدار ChatGPT المخصص لأحدث تحسينات المحادثة.",
656
+ "gpt-5.2-pro.description": "GPT-5.2 Pro: إصدار أكثر ذكاءً ودقة من GPT-5.2 (لواجهة Responses API فقط)، مناسب للمشكلات الصعبة والاستدلال متعدد الأدوار الطويل.",
659
657
  "gpt-5.2.description": "GPT-5.2 هو نموذج رائد لتدفقات العمل البرمجية والتلقائية مع استدلال أقوى وأداء سياقي طويل.",
660
658
  "gpt-5.description": "أفضل نموذج لمهام البرمجة والتلقائية عبر المجالات. يحقق GPT-5 قفزات في الدقة والسرعة والاستدلال والوعي بالسياق والتفكير المنظم وحل المشكلات.",
661
659
  "gpt-audio.description": "GPT Audio هو نموذج دردشة عام يدعم الإدخال والإخراج الصوتي، مدعوم في واجهة Chat Completions API.",
@@ -966,6 +964,9 @@
966
964
  "openai/gpt-5.1-codex-mini.description": "GPT-5.1-Codex-Mini هو إصدار أصغر وأسرع من GPT-5.1-Codex، مثالي للبرمجة في سيناريوهات حساسة للتكلفة وزمن الاستجابة.",
967
965
  "openai/gpt-5.1-codex.description": "GPT-5.1-Codex هو إصدار من GPT-5.1 محسّن لهندسة البرمجيات وتدفقات العمل البرمجية، مناسب لإعادة هيكلة واسعة، وتصحيح الأخطاء المعقدة، ومهام البرمجة الذاتية الطويلة.",
968
966
  "openai/gpt-5.1.description": "GPT-5.1 هو النموذج الرائد الأحدث في سلسلة GPT-5، مع تحسينات كبيرة في التفكير العام، اتباع التعليمات، وطبيعية المحادثة، مناسب لمجموعة واسعة من المهام.",
967
+ "openai/gpt-5.2-chat.description": "GPT-5.2 Chat هو إصدار ChatGPT لتجربة أحدث تحسينات المحادثة.",
968
+ "openai/gpt-5.2-pro.description": "GPT-5.2 Pro: إصدار أكثر ذكاءً ودقة من GPT-5.2 (لواجهة Responses API فقط)، مناسب للمشكلات الصعبة والاستدلال متعدد الأدوار الطويل.",
969
+ "openai/gpt-5.2.description": "GPT-5.2 هو نموذج رائد للبرمجة وسير العمل بالوكيل، يتميز باستدلال أقوى وأداء أفضل في السياقات الطويلة.",
969
970
  "openai/gpt-5.description": "GPT-5 هو نموذج عالي الأداء من OpenAI لمجموعة واسعة من المهام الإنتاجية والبحثية.",
970
971
  "openai/gpt-oss-120b.description": "نموذج لغة كبير عام القدرات يتمتع بتفكير قوي وقابل للتحكم.",
971
972
  "openai/gpt-oss-20b.description": "نموذج لغة صغير الحجم بوزن مفتوح، محسّن لزمن استجابة منخفض وبيئات محدودة الموارد، بما في ذلك النشر المحلي وعلى الأطراف.",
@@ -1045,6 +1046,9 @@
1045
1046
  "qwen/qwen3-14b.description": "Qwen3-14B هو إصدار 14B مخصص للاستدلال العام وسيناريوهات الدردشة.",
1046
1047
  "qwen/qwen3-14b:free.description": "Qwen3-14B هو نموذج سببي كثيف يحتوي على 14.8 مليار معلمة، مصمم للاستدلال المعقد والدردشة الفعالة. يتنقل بين وضع التفكير للرياضيات، البرمجة، والمنطق، ووضع غير التفكير للدردشة العامة. تم تحسينه لاتباع التعليمات، استخدام أدوات الوكلاء، والكتابة الإبداعية بأكثر من 100 لغة ولهجة. يدعم سياق 32K أصليًا ويتوسع إلى 131K باستخدام YaRN.",
1047
1048
  "qwen/qwen3-235b-a22b-2507.description": "Qwen3-235B-A22B-Instruct-2507 هو إصدار Instruct من سلسلة Qwen3، يوازن بين استخدام التعليمات متعددة اللغات وسيناريوهات السياق الطويل.",
1049
+ "qwen/qwen3-235b-a22b-thinking-2507.description": "Qwen3-235B-A22B-Thinking-2507 هو إصدار التفكير من Qwen3، معزز للمهام المعقدة في الرياضيات والاستدلال.",
1050
+ "qwen/qwen3-235b-a22b.description": "Qwen3-235B-A22B هو نموذج MoE يحتوي على 235 مليار معامل من Qwen، مع 22 مليار نشطة في كل تمرير. يتنقل بين وضع التفكير للمهام المعقدة في الرياضيات والبرمجة، ووضع غير التفكير للدردشة الفعالة. يتميز باستدلال قوي، ودعم متعدد اللغات (أكثر من 100 لغة ولهجة)، واتباع تعليمات متقدم، واستخدام أدوات الوكلاء. يدعم سياقًا أصليًا حتى 32K ويتوسع إلى 131K باستخدام YaRN.",
1051
+ "qwen/qwen3-235b-a22b:free.description": "Qwen3-235B-A22B هو نموذج MoE يحتوي على 235 مليار معامل من Qwen، مع 22 مليار نشطة في كل تمرير. يتنقل بين وضع التفكير للمهام المعقدة في الرياضيات والبرمجة، ووضع غير التفكير للدردشة الفعالة. يتميز باستدلال قوي، ودعم متعدد اللغات (أكثر من 100 لغة ولهجة)، واتباع تعليمات متقدم، واستخدام أدوات الوكلاء. يدعم سياقًا أصليًا حتى 32K ويتوسع إلى 131K باستخدام YaRN.",
1048
1052
  "qwen2:1.5b.description": "Qwen2 هو نموذج اللغة الكبير من الجيل التالي من Alibaba، يتميز بأداء قوي في مجموعة متنوعة من الاستخدامات.",
1049
1053
  "qwen2:72b.description": "Qwen2 هو نموذج اللغة الكبير من الجيل التالي من Alibaba، يتميز بأداء قوي في مجموعة متنوعة من الاستخدامات.",
1050
1054
  "qwen3-0.6b.description": "Qwen3 0.6B هو نموذج مبدئي مخصص للاستدلال البسيط والبيئات المحدودة للغاية.",
@@ -1148,7 +1152,6 @@
1148
1152
  "z-ai/glm-4.5-air.description": "GLM 4.5 Air هو إصدار خفيف الوزن من GLM 4.5 مخصص للسيناريوهات الحساسة للتكلفة مع الحفاظ على قدرات استدلال قوية.",
1149
1153
  "z-ai/glm-4.5.description": "GLM 4.5 هو النموذج الرائد من Z.AI باستدلال هجين مُحسّن للهندسة والمهام طويلة السياق.",
1150
1154
  "z-ai/glm-4.6.description": "GLM 4.6 هو النموذج الرائد من Z.AI مع طول سياق ممتد وقدرات برمجية متقدمة.",
1151
- "zai-glm-4.6.description": "يؤدي أداءً جيدًا في مهام البرمجة والاستدلال، ويدعم البث واستدعاء الأدوات، ومناسب للبرمجة الذاتية والاستدلال المعقد.",
1152
1155
  "zai-org/GLM-4.5-Air.description": "GLM-4.5-Air هو نموذج أساسي لتطبيقات الوكلاء يستخدم بنية Mixture-of-Experts. مُحسّن لاستخدام الأدوات، وتصفح الويب، والهندسة البرمجية، وبرمجة الواجهات، ويتكامل مع وكلاء البرمجة مثل Claude Code وRoo Code. يستخدم استدلالًا هجينًا للتعامل مع السيناريوهات المعقدة واليومية.",
1153
1156
  "zai-org/GLM-4.5.description": "GLM-4.5 هو نموذج أساسي لتطبيقات الوكلاء يستخدم بنية Mixture-of-Experts. مُحسّن بعمق لاستخدام الأدوات، وتصفح الويب، والهندسة البرمجية، وبرمجة الواجهات، ويتكامل مع وكلاء البرمجة مثل Claude Code وRoo Code. يستخدم استدلالًا هجينًا للتعامل مع السيناريوهات المعقدة واليومية.",
1154
1157
  "zai-org/GLM-4.5V.description": "GLM-4.5V هو أحدث نموذج رؤية من Zhipu AI، مبني على نموذج النص الرائد GLM-4.5-Air (إجمالي 106 مليار، 12 مليار نشط) باستخدام بنية MoE لأداء قوي بتكلفة أقل. يتبع مسار GLM-4.1V-Thinking ويضيف 3D-RoPE لتحسين الاستدلال المكاني ثلاثي الأبعاد. مُحسّن من خلال التدريب المسبق، والتعلم الخاضع للإشراف، والتعلم المعزز، ويتعامل مع الصور، والفيديو، والمستندات الطويلة، ويتصدر النماذج المفتوحة في 41 معيارًا متعدد الوسائط. يتيح وضع التفكير للمستخدمين التوازن بين السرعة والعمق.",
@@ -29,7 +29,6 @@
29
29
  "internlm.description": "منظمة مفتوحة المصدر تركز على أبحاث النماذج الكبيرة والأدوات، وتوفر منصة فعالة وسهلة الاستخدام تتيح الوصول إلى أحدث النماذج والخوارزميات.",
30
30
  "jina.description": "تأسست Jina AI في عام 2020، وهي شركة رائدة في مجال البحث الذكي. تشمل تقنياتها نماذج المتجهات، ومعيدو الترتيب، ونماذج لغوية صغيرة لبناء تطبيقات بحث توليدية ومتعددة الوسائط عالية الجودة.",
31
31
  "lmstudio.description": "LM Studio هو تطبيق سطح مكتب لتطوير وتجربة النماذج اللغوية الكبيرة على جهازك.",
32
- "lobehub.description": "تستخدم LobeHub Cloud واجهات برمجة التطبيقات الرسمية للوصول إلى نماذج الذكاء الاصطناعي، وتقيس الاستخدام من خلال الأرصدة المرتبطة برموز النماذج.",
33
32
  "minimax.description": "تأسست MiniMax في عام 2021، وتبني نماذج ذكاء اصطناعي متعددة الوسائط للأغراض العامة، بما في ذلك نماذج نصية بمليارات المعلمات، ونماذج صوتية وبصرية، بالإضافة إلى تطبيقات مثل Hailuo AI.",
34
33
  "mistral.description": "تقدم Mistral نماذج متقدمة عامة ومتخصصة وبحثية للتفكير المعقد، والمهام متعددة اللغات، وتوليد الأكواد، مع دعم استدعاء الوظائف للتكامل المخصص.",
35
34
  "modelscope.description": "ModelScope هي منصة نماذج كخدمة من Alibaba Cloud، تقدم مجموعة واسعة من النماذج وخدمات الاستدلال.",
@@ -34,11 +34,20 @@
34
34
  "agentCronJobs.empty.description": "أنشئ أول مهمة مجدولة لأتمتة وكيلك",
35
35
  "agentCronJobs.empty.title": "لا توجد مهام مجدولة بعد",
36
36
  "agentCronJobs.enable": "تمكين",
37
+ "agentCronJobs.form.at": "في",
37
38
  "agentCronJobs.form.content.placeholder": "أدخل التعليمات أو الأمر للوكيل",
39
+ "agentCronJobs.form.every": "كل",
40
+ "agentCronJobs.form.frequency": "التكرار",
41
+ "agentCronJobs.form.hours": "ساعة/ساعات",
42
+ "agentCronJobs.form.maxExecutions": "توقف بعد",
38
43
  "agentCronJobs.form.maxExecutions.placeholder": "اتركه فارغًا لعدد غير محدود",
39
44
  "agentCronJobs.form.name.placeholder": "أدخل اسم المهمة",
45
+ "agentCronJobs.form.time": "الوقت",
40
46
  "agentCronJobs.form.timeRange.end": "وقت الانتهاء",
41
47
  "agentCronJobs.form.timeRange.start": "وقت البدء",
48
+ "agentCronJobs.form.times": "مرات",
49
+ "agentCronJobs.form.timezone": "المنطقة الزمنية",
50
+ "agentCronJobs.form.unlimited": "تشغيل مستمر",
42
51
  "agentCronJobs.form.validation.contentRequired": "محتوى المهمة مطلوب",
43
52
  "agentCronJobs.form.validation.invalidTimeRange": "يجب أن يكون وقت البدء قبل وقت الانتهاء",
44
53
  "agentCronJobs.form.validation.nameRequired": "اسم المهمة مطلوب",
@@ -83,6 +92,13 @@
83
92
  "agentCronJobs.weekday.tuesday": "الثلاثاء",
84
93
  "agentCronJobs.weekday.wednesday": "الأربعاء",
85
94
  "agentCronJobs.weekdays": "أيام الأسبوع",
95
+ "agentCronJobs.weekdays.fri": "الجمعة",
96
+ "agentCronJobs.weekdays.mon": "الاثنين",
97
+ "agentCronJobs.weekdays.sat": "السبت",
98
+ "agentCronJobs.weekdays.sun": "الأحد",
99
+ "agentCronJobs.weekdays.thu": "الخميس",
100
+ "agentCronJobs.weekdays.tue": "الثلاثاء",
101
+ "agentCronJobs.weekdays.wed": "الأربعاء",
86
102
  "agentInfoDescription.basic.avatar": "الصورة الرمزية",
87
103
  "agentInfoDescription.basic.description": "الوصف",
88
104
  "agentInfoDescription.basic.name": "الاسم",