free-short-video 7.0.1 → 7.0.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/.env.example +8 -4
- package/README.md +7 -23
- package/core/api/agnes_video.py +13 -23
- package/core/config.py +60 -3
- package/core/i18n_backend.py +0 -88
- package/models/task.py +2 -2
- package/package.json +1 -1
- package/static/assets/ar-CRbirOE3.js +1 -0
- package/static/assets/bn-DGXpxXqo.js +1 -0
- package/static/assets/de-CW_QJIGx.js +1 -0
- package/static/assets/es-DG3zPtKB.js +1 -0
- package/static/assets/fa-KkBv8EdH.js +1 -0
- package/static/assets/fr-zdohXdVm.js +1 -0
- package/static/assets/hi-g1ky89XQ.js +1 -0
- package/static/assets/id-C21bK9DP.js +1 -0
- package/static/assets/index-D9sLMHUd.css +1 -0
- package/static/assets/index-DNreiP_P.js +45 -0
- package/static/assets/it-C5Xbey_b.js +1 -0
- package/static/assets/ja-NciKY87B.js +1 -0
- package/static/assets/ko-DJ8XhzBo.js +1 -0
- package/static/assets/ms-DcwfkMJG.js +1 -0
- package/static/assets/nl-CnpYVEZB.js +1 -0
- package/static/assets/pt-DAP0auKP.js +1 -0
- package/static/assets/ru-CzKYIeBy.js +1 -0
- package/static/assets/{th-qi227Ckr.js → th-Q_FQzUg5.js} +1 -1
- package/static/assets/tl-DXi6nq4V.js +1 -0
- package/static/assets/tr-BOCBaAw1.js +1 -0
- package/static/assets/ur-K0JNi0pO.js +1 -0
- package/static/assets/vi-DR30o5T0.js +1 -0
- package/static/index.html +2 -2
- package/web/helpers.py +25 -9
- package/static/assets/ar-CT5Vb96u.js +0 -1
- package/static/assets/bn-BRFSrmpr.js +0 -1
- package/static/assets/de-BfbzdWS4.js +0 -1
- package/static/assets/es-DI_YGUav.js +0 -1
- package/static/assets/fa-CLlBTWBD.js +0 -1
- package/static/assets/fr-CrJe-R-B.js +0 -1
- package/static/assets/hi-Biw0K-wF.js +0 -1
- package/static/assets/id-CD_7Mjc4.js +0 -1
- package/static/assets/index-D3X3fptl.css +0 -1
- package/static/assets/index-Da6mRnWp.js +0 -45
- package/static/assets/it-c6SdEfC4.js +0 -1
- package/static/assets/ja-C1nVdqg3.js +0 -1
- package/static/assets/ko-DJJcPzZ7.js +0 -1
- package/static/assets/ms-BVvY5UaD.js +0 -1
- package/static/assets/nl-BFMVg2IF.js +0 -1
- package/static/assets/pt-Br9EP1M-.js +0 -1
- package/static/assets/ru-BXIDO_lx.js +0 -1
- package/static/assets/tl-CI-FZE-c.js +0 -1
- package/static/assets/tr-4WitX2Ji.js +0 -1
- package/static/assets/ur-CYLssynd.js +0 -1
- package/static/assets/vi-oji0SPGU.js +0 -1
package/.env.example
CHANGED
|
@@ -36,11 +36,15 @@ HOST=0.0.0.0
|
|
|
36
36
|
PORT=8765
|
|
37
37
|
|
|
38
38
|
# 注:Agnes API 走哪个站点(国际站 / 国内站)**不通过环境变量配置**
|
|
39
|
-
# (AGNES_BASE_URL 已废弃,代码中不再读取)。请在 Web 设置页的 API Key
|
|
40
|
-
#
|
|
39
|
+
# (AGNES_BASE_URL 已废弃,代码中不再读取)。请在 Web 设置页的 API Key 面板选择全局默认域名。
|
|
40
|
+
# ⚠️ 重要:通过本文件 / 环境变量写入的 Key 属于 env 来源,**无法逐个绑定域名,也不参与
|
|
41
|
+
# Web 页的「自动探测域名」**——它们一律使用你在 Web 页设定的「全局默认域名」。因此:
|
|
42
|
+
# - 单站点 Key:把全局默认域名设成与该 Key 站点一致即可;
|
|
43
|
+
# - 混用不同站点的 Key:请改到 Web 配置页逐个添加(config 来源),再逐 Key 绑定域名
|
|
44
|
+
# 或点「自动探测域名」,才能各走各的站点(env Key 做不到这点)。
|
|
45
|
+
# 跨站使用 Key(如国际站 Key 打到国内站专属域名)会得到 HTTP 401 / 无效的令牌。
|
|
41
46
|
# 可选域名:com = apihub.agnes-ai.com(国际站)、cn = api.agnes-ai.cn(国内站,
|
|
42
|
-
# 需国内站专属 Key)、cn_bak = apihub.agnes-ai.cn
|
|
43
|
-
# 跨站使用 Key 会得到 HTTP 401 / 无效的令牌。
|
|
47
|
+
# 需国内站专属 Key)、cn_bak = apihub.agnes-ai.cn(备用,国内与国际 Key 均可用)。
|
|
44
48
|
|
|
45
49
|
|
|
46
50
|
# ── 4. 限速(可选)─────────────────────────────────────────────────
|
package/README.md
CHANGED
|
@@ -1,39 +1,23 @@
|
|
|
1
1
|
---
|
|
2
2
|
|
|
3
|
-
# What's New in v7.0.
|
|
3
|
+
# What's New in v7.0.2
|
|
4
4
|
|
|
5
5
|
## What's New
|
|
6
6
|
|
|
7
7
|
### Features & Improvements
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
collecting free tokens. Available in all 22 UI languages.
|
|
13
|
-
- **Localized backend messages everywhere.** The localization framework shipped in v7.0.0 has
|
|
14
|
-
been extended from high-impact messages to the complete set: ~120 remaining strings across
|
|
15
|
-
all six task types — progress updates for every pipeline step, task-creation and preview
|
|
16
|
-
validation errors, config/provider validation, voice-compatibility warnings and cleanup
|
|
17
|
-
tooling messages — are rendered in the task's UI language.
|
|
18
|
-
|
|
19
|
-
### Refactoring & Optimizations
|
|
20
|
-
|
|
21
|
-
- **Single bilingual message catalog for the backend.** All user-facing backend strings now
|
|
22
|
-
live in one translation catalog (~200 keys) with CI-enforced Chinese/English parity and a
|
|
23
|
-
documented contributor convention (domain-based key naming, keyword placeholders, per-request
|
|
24
|
-
vs per-task language sources), making the interface-language behavior a maintained invariant
|
|
25
|
-
rather than an ad-hoc practice.
|
|
9
|
+
* **Clearer key/domain setup to prevent `401`.** The API Key panel now states, per source, that keys added in the web UI can be bound to their own domain (and are covered by *Auto-detect domains*), while `.env` / environment-variable keys always follow the single **global default domain** and cannot be bound individually. Each `.env` key now shows a neutral "follows global domain" badge with the resolved endpoint. A new **multi-key** note explains that a single mismatched or expired key makes tasks intermittently fail with `401` whenever that key is picked. Getting Started and the FAQ gained a "match the key to the right site" section, and `.env.example` now spells out the `.env`-key behavior — so single-site users set the domain and mixed-site users move keys into the web config page.
|
|
10
|
+
* **True 16:9 landscape.** Landscape (16:9) video now renders at the correct aspect ratio, and the portrait / large-landscape resolution option labels were fixed so the listed size matches what is actually generated.
|
|
11
|
+
* **Refreshed language switcher.** The native browser language dropdown was replaced with a site-styled language switcher, consistent with the rest of the UI across all 22 locales.
|
|
26
12
|
|
|
27
13
|
### Bug Fixes
|
|
28
14
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
- Reference-image analysis failures ("image analysis failed (Start Frame)") are reported in
|
|
32
|
-
the task's UI language instead of hard-coded Chinese (issue #65 follow-up).
|
|
15
|
+
* Fixed the config page recommending "bind a matching domain for each key" on `.env`-sourced keys, which have no domain dropdown and cannot be bound — the misleading hint that repeatedly sent users down the wrong path when chasing `401` errors. The *Auto-detect domains* tooltip now correctly states it only probes web-UI keys.
|
|
16
|
+
* Corrected the Docker/compose image reference to the real flat GHCR namespace, so documented pull commands actually resolve.
|
|
33
17
|
|
|
34
18
|
---
|
|
35
19
|
|
|
36
|
-
No action is required after upgrading.
|
|
20
|
+
No action is required after upgrading. If you were hitting `401`, re-check your key against its site in the API Key panel or run *Auto-detect domains*.
|
|
37
21
|
|
|
38
22
|
---
|
|
39
23
|
|
package/core/api/agnes_video.py
CHANGED
|
@@ -15,10 +15,10 @@ from core.api.error_collector import collect_error, collect_error_from_exception
|
|
|
15
15
|
from core.api.key_manager import get_key_ring
|
|
16
16
|
from core.api.rate_limiter import get_rate_limiter, get_video_submit_limiter
|
|
17
17
|
from core.config import (
|
|
18
|
-
VIDEO_ASPECT_RATIOS,
|
|
19
18
|
get_agnes_api_root,
|
|
20
19
|
get_base_url_for_key,
|
|
21
20
|
is_v25_video_model,
|
|
21
|
+
width_height_to_aspect_ratio,
|
|
22
22
|
)
|
|
23
23
|
from utils.image_normalizer import normalize_reference_path
|
|
24
24
|
from utils.video import download_video
|
|
@@ -271,7 +271,7 @@ class AgnesVideoAPI:
|
|
|
271
271
|
return 961 # 480p tier
|
|
272
272
|
|
|
273
273
|
def _get_frame_config(self, duration: Optional[int] = None,
|
|
274
|
-
width: int =
|
|
274
|
+
width: int = 1280, height: int = 720) -> tuple:
|
|
275
275
|
d = duration or self.default_duration
|
|
276
276
|
max_nf = self._get_max_frames(width, height)
|
|
277
277
|
if d in DURATION_PRESETS:
|
|
@@ -563,8 +563,8 @@ class AgnesVideoAPI:
|
|
|
563
563
|
prompt: str,
|
|
564
564
|
reference_image_paths: List[str] = [],
|
|
565
565
|
duration: Optional[int] = None,
|
|
566
|
-
width: int =
|
|
567
|
-
height: int =
|
|
566
|
+
width: int = 1280,
|
|
567
|
+
height: int = 720,
|
|
568
568
|
seed: Optional[int] = None,
|
|
569
569
|
negative_prompt: Optional[str] = None,
|
|
570
570
|
progress_callback=None,
|
|
@@ -587,8 +587,8 @@ class AgnesVideoAPI:
|
|
|
587
587
|
prompt: str,
|
|
588
588
|
reference_image_paths: List[str] = [],
|
|
589
589
|
duration: Optional[int] = None,
|
|
590
|
-
width: int =
|
|
591
|
-
height: int =
|
|
590
|
+
width: int = 1280,
|
|
591
|
+
height: int = 720,
|
|
592
592
|
seed: Optional[int] = None,
|
|
593
593
|
negative_prompt: Optional[str] = None,
|
|
594
594
|
**kwargs,
|
|
@@ -649,31 +649,21 @@ class AgnesVideoAPI:
|
|
|
649
649
|
|
|
650
650
|
@staticmethod
|
|
651
651
|
def _width_height_to_aspect_ratio(width: int, height: int) -> str:
|
|
652
|
-
"""
|
|
652
|
+
"""将像素宽高映射到 2.5 系列 aspect_ratio 枚举(委托 ``core.config``)。
|
|
653
653
|
|
|
654
|
-
|
|
654
|
+
映射规则已上提到 ``core.config.width_height_to_aspect_ratio``,供回归
|
|
655
|
+
校验脚本共用(保证「提交」与「校验」同一套规则);此方法保留为类内
|
|
656
|
+
调用入口,行为与上提前完全一致。
|
|
655
657
|
"""
|
|
656
|
-
|
|
657
|
-
return "16:9"
|
|
658
|
-
ratio = width / height
|
|
659
|
-
best = "16:9"
|
|
660
|
-
best_dist = float("inf")
|
|
661
|
-
for ar in VIDEO_ASPECT_RATIOS:
|
|
662
|
-
w, h = ar.split(":")
|
|
663
|
-
target = int(w) / int(h)
|
|
664
|
-
dist = abs(ratio - target)
|
|
665
|
-
if dist < best_dist:
|
|
666
|
-
best_dist = dist
|
|
667
|
-
best = ar
|
|
668
|
-
return best
|
|
658
|
+
return width_height_to_aspect_ratio(width, height)
|
|
669
659
|
|
|
670
660
|
async def _submit_video_v25(
|
|
671
661
|
self,
|
|
672
662
|
prompt: str,
|
|
673
663
|
reference_image_paths: List[str],
|
|
674
664
|
duration: Optional[int] = None,
|
|
675
|
-
width: int =
|
|
676
|
-
height: int =
|
|
665
|
+
width: int = 1280,
|
|
666
|
+
height: int = 720,
|
|
677
667
|
seed: Optional[int] = None,
|
|
678
668
|
**kwargs,
|
|
679
669
|
) -> str:
|
package/core/config.py
CHANGED
|
@@ -18,7 +18,7 @@ CONFIG_FILE = os.path.join(CONFIG_DIR, "config.json")
|
|
|
18
18
|
# ═══════════════════════════════════════════════════
|
|
19
19
|
# 应用版本号(v6.1 新增:发版时同步更新,见 docs/dev/release_process.md)
|
|
20
20
|
# ═══════════════════════════════════════════════════
|
|
21
|
-
APP_VERSION = "7.0.
|
|
21
|
+
APP_VERSION = "7.0.2"
|
|
22
22
|
|
|
23
23
|
# 未配置 API Key 时的统一报错文案(含免费获取与在线体验兜底,全站路由共用)
|
|
24
24
|
#
|
|
@@ -903,7 +903,7 @@ def set_watermark_config(enabled: bool = None, language: str = None):
|
|
|
903
903
|
|
|
904
904
|
VIDEO_RESOLUTION_PRESETS = {
|
|
905
905
|
"portrait": {"width": 768, "height": 1152, "label": "竖屏 9:16"},
|
|
906
|
-
"landscape": {"width":
|
|
906
|
+
"landscape": {"width": 1280, "height": 720, "label": "横屏 16:9"},
|
|
907
907
|
"square": {"width": 1024, "height": 1024, "label": "方形 1:1"},
|
|
908
908
|
}
|
|
909
909
|
|
|
@@ -1085,6 +1085,63 @@ def is_v25_video_model(model: str) -> bool:
|
|
|
1085
1085
|
# 支持的画幅比例(2.5 系列 aspect_ratio 枚举)
|
|
1086
1086
|
VIDEO_ASPECT_RATIOS = ["21:9", "16:9", "4:3", "1:1", "3:4", "9:16"]
|
|
1087
1087
|
|
|
1088
|
+
# ── 项目标准像素档 → aspect_ratio 显式映射(语义优先于数值最近邻)──
|
|
1089
|
+
# 背景:2.5 系列只接受上面 6 档比例枚举,而非标准比例走「数值最近邻」会归错档:
|
|
1090
|
+
# · 1152x768(3:2, 1.500)距 4:3(1.333) 0.167 < 距 16:9(1.778) 0.278 → 误判 4:3
|
|
1091
|
+
# · 768x1152(2:3, 0.667)距 3:4(0.750) 0.083 < 距 9:16(0.563) 0.104 → 误判 3:4
|
|
1092
|
+
# 改度量方式(比值 / 对数距离)救不了这两个值——2:3 在几何上确实更贴近 3:4。
|
|
1093
|
+
# 但它们在前端就是「竖屏 9:16」「横屏 16:9」两个语义明确的惯例像素档,故显式查表,
|
|
1094
|
+
# 不让数值距离决定。表内其余档位与最近邻结果一致,仅作显式化,不改变既有行为。
|
|
1095
|
+
STANDARD_PIXEL_TO_RATIO = {
|
|
1096
|
+
# 竖屏
|
|
1097
|
+
(768, 1152): "9:16",
|
|
1098
|
+
(720, 1280): "9:16",
|
|
1099
|
+
(768, 1344): "9:16",
|
|
1100
|
+
(1024, 1792): "9:16",
|
|
1101
|
+
# 横屏
|
|
1102
|
+
(1152, 768): "16:9",
|
|
1103
|
+
(1280, 720): "16:9",
|
|
1104
|
+
(1344, 768): "16:9",
|
|
1105
|
+
(1792, 1024): "16:9",
|
|
1106
|
+
# 方形与超宽
|
|
1107
|
+
(1024, 1024): "1:1",
|
|
1108
|
+
(960, 720): "4:3",
|
|
1109
|
+
(720, 960): "3:4",
|
|
1110
|
+
(1680, 720): "21:9",
|
|
1111
|
+
}
|
|
1112
|
+
|
|
1113
|
+
|
|
1114
|
+
def width_height_to_aspect_ratio(width: int, height: int) -> str:
|
|
1115
|
+
"""将像素宽高映射到 2.5 系列 aspect_ratio 枚举。
|
|
1116
|
+
|
|
1117
|
+
映射顺序:
|
|
1118
|
+
|
|
1119
|
+
1. 项目标准像素档显式查表(``STANDARD_PIXEL_TO_RATIO``)——语义优先,避免
|
|
1120
|
+
``768x1152``(竖屏 9:16)/ ``1152x768``(横屏 16:9)这类项目惯例档被
|
|
1121
|
+
数值最近邻误判成 ``3:4`` / ``4:3``;
|
|
1122
|
+
2. 未命中时取误差最小的档位(默认 ``16:9``)。
|
|
1123
|
+
|
|
1124
|
+
供 API 客户端(提交时推导 aspect_ratio)与回归校验脚本(校验时推导期望
|
|
1125
|
+
比例)共用,保证「提交」与「校验」使用同一套映射规则。
|
|
1126
|
+
"""
|
|
1127
|
+
if not width or not height:
|
|
1128
|
+
return "16:9"
|
|
1129
|
+
exact = STANDARD_PIXEL_TO_RATIO.get((width, height))
|
|
1130
|
+
if exact:
|
|
1131
|
+
return exact
|
|
1132
|
+
ratio = width / height
|
|
1133
|
+
best = "16:9"
|
|
1134
|
+
best_dist = float("inf")
|
|
1135
|
+
for ar in VIDEO_ASPECT_RATIOS:
|
|
1136
|
+
w, h = ar.split(":")
|
|
1137
|
+
target = int(w) / int(h)
|
|
1138
|
+
dist = abs(ratio - target)
|
|
1139
|
+
if dist < best_dist:
|
|
1140
|
+
best_dist = dist
|
|
1141
|
+
best = ar
|
|
1142
|
+
return best
|
|
1143
|
+
|
|
1144
|
+
|
|
1088
1145
|
# 2.5 系列时长档位(seconds 字符串 "4"–"12")
|
|
1089
1146
|
VIDEO_25_DURATIONS = [4, 5, 6, 8, 10, 12]
|
|
1090
1147
|
|
|
@@ -1104,7 +1161,7 @@ VIDEO_MODEL_CAPABILITIES = {
|
|
|
1104
1161
|
"type": "pixels",
|
|
1105
1162
|
"options": [
|
|
1106
1163
|
{"value": "768x1152", "label": {"zh": "竖屏 768x1152", "en": "Portrait 768x1152"}},
|
|
1107
|
-
{"value": "
|
|
1164
|
+
{"value": "1280x720", "label": {"zh": "横屏 1280x720", "en": "Landscape 1280x720"}},
|
|
1108
1165
|
{"value": "1024x1024", "label": {"zh": "方形 1024x1024", "en": "Square 1024x1024"}},
|
|
1109
1166
|
],
|
|
1110
1167
|
},
|
package/core/i18n_backend.py
CHANGED
|
@@ -988,94 +988,6 @@ CATALOG: Dict[str, Dict[str, str]] = {
|
|
|
988
988
|
"zh": "所选音色 {voice} 不支持当前稿件语言的朗读(跨文字体系无法朗读,任务将失败)。请更换为匹配语言的音色。",
|
|
989
989
|
"en": "Voice {voice} cannot read text in the manuscript's language (crossing writing systems; the task would fail). Please pick a voice that matches the language.",
|
|
990
990
|
},
|
|
991
|
-
"voice_compat.label.ar": {
|
|
992
|
-
"zh": "العربية",
|
|
993
|
-
"en": "Arabic",
|
|
994
|
-
},
|
|
995
|
-
"voice_compat.label.bn": {
|
|
996
|
-
"zh": "বাংলা",
|
|
997
|
-
"en": "Bengali",
|
|
998
|
-
},
|
|
999
|
-
"voice_compat.label.de": {
|
|
1000
|
-
"zh": "Deutsch",
|
|
1001
|
-
"en": "German",
|
|
1002
|
-
},
|
|
1003
|
-
"voice_compat.label.en": {
|
|
1004
|
-
"zh": "English",
|
|
1005
|
-
"en": "English",
|
|
1006
|
-
},
|
|
1007
|
-
"voice_compat.label.es": {
|
|
1008
|
-
"zh": "Español",
|
|
1009
|
-
"en": "Spanish",
|
|
1010
|
-
},
|
|
1011
|
-
"voice_compat.label.fa": {
|
|
1012
|
-
"zh": "فارسی",
|
|
1013
|
-
"en": "Persian",
|
|
1014
|
-
},
|
|
1015
|
-
"voice_compat.label.fr": {
|
|
1016
|
-
"zh": "Français",
|
|
1017
|
-
"en": "French",
|
|
1018
|
-
},
|
|
1019
|
-
"voice_compat.label.hi": {
|
|
1020
|
-
"zh": "हिन्दी",
|
|
1021
|
-
"en": "Hindi",
|
|
1022
|
-
},
|
|
1023
|
-
"voice_compat.label.id": {
|
|
1024
|
-
"zh": "Bahasa Indonesia",
|
|
1025
|
-
"en": "Indonesian",
|
|
1026
|
-
},
|
|
1027
|
-
"voice_compat.label.it": {
|
|
1028
|
-
"zh": "Italiano",
|
|
1029
|
-
"en": "Italian",
|
|
1030
|
-
},
|
|
1031
|
-
"voice_compat.label.ja": {
|
|
1032
|
-
"zh": "日本語",
|
|
1033
|
-
"en": "Japanese",
|
|
1034
|
-
},
|
|
1035
|
-
"voice_compat.label.ko": {
|
|
1036
|
-
"zh": "한국어",
|
|
1037
|
-
"en": "Korean",
|
|
1038
|
-
},
|
|
1039
|
-
"voice_compat.label.ms": {
|
|
1040
|
-
"zh": "Bahasa Melayu",
|
|
1041
|
-
"en": "Malay",
|
|
1042
|
-
},
|
|
1043
|
-
"voice_compat.label.nl": {
|
|
1044
|
-
"zh": "Nederlands",
|
|
1045
|
-
"en": "Dutch",
|
|
1046
|
-
},
|
|
1047
|
-
"voice_compat.label.pt": {
|
|
1048
|
-
"zh": "Português",
|
|
1049
|
-
"en": "Portuguese",
|
|
1050
|
-
},
|
|
1051
|
-
"voice_compat.label.ru": {
|
|
1052
|
-
"zh": "Русский",
|
|
1053
|
-
"en": "Russian",
|
|
1054
|
-
},
|
|
1055
|
-
"voice_compat.label.th": {
|
|
1056
|
-
"zh": "ไทย",
|
|
1057
|
-
"en": "Thai",
|
|
1058
|
-
},
|
|
1059
|
-
"voice_compat.label.tl": {
|
|
1060
|
-
"zh": "Tagalog",
|
|
1061
|
-
"en": "Tagalog",
|
|
1062
|
-
},
|
|
1063
|
-
"voice_compat.label.tr": {
|
|
1064
|
-
"zh": "Türkçe",
|
|
1065
|
-
"en": "Turkish",
|
|
1066
|
-
},
|
|
1067
|
-
"voice_compat.label.ur": {
|
|
1068
|
-
"zh": "اردو",
|
|
1069
|
-
"en": "Urdu",
|
|
1070
|
-
},
|
|
1071
|
-
"voice_compat.label.vi": {
|
|
1072
|
-
"zh": "Tiếng Việt",
|
|
1073
|
-
"en": "Vietnamese",
|
|
1074
|
-
},
|
|
1075
|
-
"voice_compat.label.zh": {
|
|
1076
|
-
"zh": "中文",
|
|
1077
|
-
"en": "Chinese",
|
|
1078
|
-
},
|
|
1079
991
|
"voice_compat.lang_unsupported": {
|
|
1080
992
|
"zh": "所选音色 {voice} 不支持「{lang_name}」语言的视频生成(仅支持:{supported})。请更换音色或语言。",
|
|
1081
993
|
"en": "Voice {voice} does not support video generation in {lang_name} (supported: {supported} only). Please change the voice or the language.",
|
package/models/task.py
CHANGED
|
@@ -175,8 +175,8 @@ class BaseTaskState(BaseModel):
|
|
|
175
175
|
creative_name: str = ""
|
|
176
176
|
task_type: TaskType
|
|
177
177
|
status: StepStatus = StepStatus.PENDING
|
|
178
|
-
video_width: int =
|
|
179
|
-
video_height: int =
|
|
178
|
+
video_width: int = 1280
|
|
179
|
+
video_height: int = 720
|
|
180
180
|
final_video_file: str = ""
|
|
181
181
|
|
|
182
182
|
# 实时进度(轮询模式:pipeline _emit 时更新,前端通过 GET /api/tasks/{id} 读取)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "free-short-video",
|
|
3
|
-
"version": "7.0.
|
|
3
|
+
"version": "7.0.2",
|
|
4
4
|
"description": "Free AI short-video generator — run the full free-short-video service locally with one command. Text-to-video, image generation, Edge-TTS narration, subtitles, and compositing, all free. Official site: https://video.lichuanyang.top",
|
|
5
5
|
"bin": {
|
|
6
6
|
"free-short-video": "bin/cli.js",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e="فيديو بالذكاء الاصطناعي، بضغطة واحدة",t="إعداد مفتاح API",o="غير مهيأ",n="مهيأ",s="أدخل مفتاح Agnes API الخاص بك (احصل عليه مجانًا من platform.agnes-ai.com)",i="مهيأ (●●●)",a="حفظ",c="مسح",r="هل أنت متأكد من مسح مفتاح API المهيأ",p="مهيأ (متغير بيئة)",l="تم تعيين مفتاح API عبر متغير البيئة AGNES_API_KEY ولا يمكن مسحه من الواجهة. أزل متغير البيئة ثم أعد المحاولة.",d="اختيار النموذج",m="اختر نماذج Agnes للنص والصور والفيديو المستخدمة في التوليد.",u="نموذج النص / المحادثة",g="نموذج الصور",f="نموذج الفيديو",S="Video model",v="Video model capabilities",y="Capability",b="Price",P="Modes",h="Duration",C="Resolution",A="Negative prompt",k="Ref. video",R="Paid",T="Free",M="Yes",I="No",D="Modes",w="Durations",H="Resolution",N="Negative prompt",E="Ref images",L="Ref. video",F="Negative prompt is not supported by this model",_="Aspect ratio",x="Quality",K="Up to",G="Negative prompt not supported by this model",B="short edge px",V="720P = short edge 720px; output size scales with ratio",U="تحديث القائمة",O="غير متزامن",q="تم الحفظ",W="agnes-2.5-flash قيد الإصدار التجريبي: يتطلب مفتاح API مع صلاحية تجريبية، وإلا ستفشل الاستدعاءات.",z=" (تجريبي)",Q="نص",Y="صورة",j="فيديو",J="نموذج النص لا يمكن أن يكون فارغًا",X="فشل الجلب",Z="فشل الحفظ",$="المزوّد (للنصوص فقط)",ee="المزوّدات أدناه تُستخدم لنماذج النصوص / المحادثة فقط.",te="مزوّدو نموذج النص",oe="قم بإعداد مزوّدي نموذج النص القابلين للتوصيل (متوافق مع OpenAI / متوافق مع Anthropic). Agnes هو المزوّد الافتراضي المدمج ولا يمكن حذفه. بعد التبديل، تُوجَّه استدعاءات النصوص تلقائيًا إلى المزوّد المحدد؛ وفي حال عدم التهيئة يبقى السلوك كما هو.",ne="المزوّدون",se="الحالي",ie="مدمج",ae="المزوّد الافتراضي المدمج، لا يمكن حذفه",ce="Agnes (مدمج)",re="متوافق مع OpenAI (openai-completions)",pe="متوافق مع Anthropic (anthropic-messages)",le="قيد الاستخدام",de="إدارة المزوّدين",me="إدارة مزوّدي توليد النصوص. انقر «تحرير» لتهيئة المزوّد؛ Agnes المدمج ثابت ولا يمكن حذفه.",ue="حول المزوّدين الخارجيين",ge="📖 دليل الحصول على مفاتيح API المجانية وإعدادها",fe="أصبح بإمكانك الآن ربط نماذج مجانية من مزوّدين آخرين (النماذج المدفوعة تعمل أيضًا، لكنها غير ضرورية).",Se="للنماذج النصية نوصي حاليًا بـ AMD Radeon Cloud (واجهة النماذج المجانية الرسمية من AMD).",ve="الوصول: سجّل الدخول إلى Token Factory ثم Public Free Model APIs للحصول على المفتاح (يكفي الهاتف / البريد / GitHub، دون بطاقة).",ye="اختر البروتوكول «متوافق مع OpenAI» وأدخل عنوان Base URL التالي:",be="توفّر نقطة النهاية المشتركة المجانية عدة نماذج شائعة (مثل DeepSeek-V4-Flash وQwen3.8-Flash-Next وMiniCPM5-1B)، ومفتاح واحد يكفي لها جميعًا. راجع القائمة الفعلية في الصفحة.",Pe="ملاحظة: نقطة النهاية المشتركة محدودة لكل مفتاح ولكل IP ولها حدّ يومي؛ تناسب التجربة والمهام النصية الخفيفة، وليست واجهة إنتاج بتحمّل عالٍ.",he="أما نماذج الصور والفيديو فلم نجد بعد بدائل مجانية مناسبة، لذلك لا تُدعم حاليًا.",Ce="إذا كنت تعرف نموذجًا جيدًا، يمكنك التوصية به عبر القنوات التالية:",Ae="تحرير",ke="تحرير المزوّد",Re="إعدادات Agnes",Te="مدمج · بروتوكول ثابت، يمكن فقط تهيئة مفتاح API والنطاق",Me="إضافة مزوّد",Ie="+ إضافة مزوّد",De="المزوّدون الحاليون",we="لا توجد مزوّدات مخصصة. يمكن إدارة/حذف المزوّدين الحاليين هنا.",He="لا توجد نماذج متاحة لهذا المزوّد؛ قم بالمزامنة أو إضافة مزوّد أولًا.",Ne="أدخل النماذج يدويًا (افصل بفاصلة / سطر جديد)",Ee="مثل deepseek-chat, deepseek-reasoner",Le="الاسم",Fe="مثل DeepSeek / Claude",_e="اسم المزوّد مطلوب",xe="البروتوكول",Ke="Base URL",Ge="https://api.deepseek.com/v1",Be="Base URL مطلوب",Ve="مفتاح API",Ue="أدخل مفتاح API لهذا المزوّد",Oe="اتركه فارغًا للإبقاء دون تغيير (مخفي حاليًا)",qe="اتركه فارغًا عند التحرير للإبقاء على المفتاح الحالي (يعيد الخادم إخفاءً فقط)",We="مفتاح API مطلوب",ze="جلب النماذج",Qe="جارٍ الجلب…",Ye="حدّد النماذج المرشّحة لتفعيلها:",je="تم حفظ المزوّد",Je="فشل حفظ المزوّد",Xe="تم حذف المزوّد",Ze="حذف هذا المزوّد؟ لا يمكن التراجع.",$e="فشل حذف المزوّد",et="تم جلب النماذج",tt="فشل جلب النماذج",ot="دليل العمل",nt="غير محدد",st="نشط",it="إضافة",at='انقر على "تصفح" على اليمين لاختيار الدليل',ct="الاسم (اختياري)",rt="تفعيل",pt="إزالة",lt="الحالي",dt="مساحة العمل النشطة",mt="تصفح…",ut="افتراضي",gt="كل المساحات",ft='انقر على "تفعيل" لتبديل دليل العمل الحالي',St="هذه مساحة اختبار الانحدار، مقفلة بواسطة متغير البيئة ولا يمكن تعديلها من الواجهة.",vt="إزالة هذا الدليل من القائمة (لن يتم حذف الملفات من القرص)",yt="مهمة جديدة",bt="قائمة المهام",Pt="⚡ إنشاء بنقرة واحدة",ht="جديد",Ct="علامة مائية للفيديو",At="أضف علامة Agnes Video Generator المائية لمساعدة المزيد من المبدعين على اكتشاف هذه الأداة",kt="تم تفعيل العلامة المائية",Rt="تم تعطيل العلامة المائية",Tt="صورة وفيديو",Mt="فيديو إبداعي",It="فيديو مقال",Dt="النوع",wt="🎬 فيديو",Ht="🖼️ صورة",Nt="إعدادات الفيديو البسيط",Et="简易模式",Lt="创作主题",Ft="输入一个创作主题,AI 将自动生成分镜脚本与旁白,例如:太空探险故事",_t="生成预览",xt="正在生成预览…(约消耗 3 次 LLM 调用)",Kt="分镜预览",Gt="生成设置",Bt="一键生成",Vt="正在生成视频…",Ut="视频生成任务已提交,可到任务列表查看进度",Ot="画面",qt="旁白",Wt="الإعدادات الإبداعية",zt="إعدادات المقال",Qt="وصف الفيديو",Yt="قطة برتقالية تغفو على عتبة النافذة بعد المطر، ضوء الشمس يتسلل عبر الزجاج، الستارة تتحرك مع النسيم، 4K واقعي",jt="وضع التوليد",Jt="نص إلى فيديو",Xt="صورة إلى فيديو",Zt="إطارات مفتاحية",$t="المدة",eo="الدقة",to="عمودي 9:16",oo="أفقي 16:9",no="مربع 1:1",so="صورة مرجعية",io="صورة الإطار الأخير",ao="اختيار صورة",co="لم يتم الاختيار",ro="إعدادات متقدمة",po="اختياري",lo="اتركه فارغًا لعشوائية",mo="العناصر المطلوب استبعادها",uo="اسم المهمة",go="اختياري، يولّد تلقائيًا إذا تركت فارغًا",fo="وصف الفكرة",So="روبوت يسقي زهرة صغيرة في مدينة مهجورة، 3 مشاهد: اكتشاف الشتلة، إحضار الماء، تفتح الزهرة",vo="النمط البصري",yo="3 مشاهد، كل مشهد 5 ثوانٍ، جودة سينمائية",bo="أسلوب واقعي سينمائي",Po="وضع التتابع",ho="keyframes (موصى به)",Co="ti2vid (انتقال)",Ao="none (مستقل)",ko="صورة مرجعية (اختياري)",Ro="اختياري. إذا قدمتها، ستستخدمها جميع المشاهد كمرساة بصرية؛ وإلا ستولّد تلقائيًا من القصة.",To="إطارات نهاية مخصصة",Mo="تفعيل",Io="توليد من المرجع (i2i)",Do="إطار نهاية واحد لكل مشهد، بالترتيب.",wo="مشهد",Ho="+ إضافة إطار نهاية",No="إعدادات الصوت",Eo="إعدادات الترجمة",Lo="التعليق الصوتي",Fo="الترجمة",_o="الصوت",xo="السرعة",Ko="عادي",Go="اختيار الصوت",Bo="ابحث عن اسم الصوت أو الأسلوب...",Vo="الحالي",Uo="تأكيد",Oo="إلغاء",qo="تأكيد",Wo="معاينة",zo="إيقاف",Qo="فشلت المعاينة، قد لا يدعم هذا الصوت هذه اللغة",Yo="قد لا يكون هذا الصوت متوافقًا مع اللغة الحالية. هل تريد استخدامه",jo="أنثى",Jo="ذكر",Xo="لا توجد أصوات مطابقة",Zo="نمط الترجمة",$o="الخط",en="اللون",tn="الحجم",on="الموضع",nn="أسفل",sn="أعلى",an="لون الحدود",cn="سماكة الحدود",rn="لون الخلفية",pn="وضع النمط",ln="ثابت",dn="ذكاء اصطناعي",mn="تفضيلات النمط",un="صف كيف يجب أن تتغير الموضع واللون والحجم للترجمة. سيخصص الذكاء الاصطناعي نمطًا لكل ترجمة.",gn="نص المقال",fn="الصق مقالك أو بيانك الصحفي أو تدوينتك. مثال: مقدمة منتج من 500 كلمة أو مقال سفر — سيقسم النظام تلقائيًا إلى مشاهد",Sn="حرف",vn="بدء التوليد",yn="جارٍ الإرسال...",bn="المهمة قيد التنفيذ...",Pn="جارٍ التحميل...",hn="لا توجد مهام",Cn="فشل التحميل",An="التقدم",kn="إيقاف المهمة",Rn="إرسال",Tn="توليد الفيديو",Mn="تهيئة",In="إعداد المشاهد",Dn="تحليل الصور",wn="القصة",Hn="مرجع الشخصية",Nn="السيناريو",En="أوامر الإطار الأخير",Ln="توليد الإطار الأخير",Fn="توليد الفيديو",_n="الصوت",xn="الترجمة",Kn="الدمج",Gn="تقسيم النص",Bn="أوامر المشاهد",Vn="توليد الفيديو",Un="الصوت",On="الترجمة",qn="الدمج",Wn="اكتمل توليد الفيديو!",zn="اكتملت المهمة",Qn="معرف المهمة",Yn="الدليل",jn="الفكرة",Jn="عدد المشاهد",Xn="التتابع",Zn="إعداد المشاهد",$n="مصدر معلومات المشاهد",es="يدوي",ts="استخراج من الفكرة",os="حدد عدد المشاهد ومدتها يدويًا",ns="سيحلل الذكاء الاصطناعي عدد المشاهد ومدتها من الفكرة",ss="مدة المشاهد",is="موحد",as="مستقل",cs="ثانية",rs="الناتج",ps="فقرات",ls="مكتمل",ds="قيد التنفيذ",ms="فشل",us="قيد الانتظار",gs="في الطابور",fs="تحليل الصور",Ss="القصة",vs="السيناريو",ys="مرجع الشخصية",bs="مطالبات الإطار النهائي",Ps="الإطارات النهائية",hs="معلومات المهمة",Cs="الفكرة",As="نص المخطوطة",ks="نص التقديم",Rs="وصف المذيع",Ts="نص القصيدة",Ms="المطالبة",Is="العرض",Ds="الارتفاع",ws="عدد المشاهد",Hs="عدد الفقرات",Ns="وضع التسلسل",Es="النمط",Ls="وضع الصوت",Fs="الوضع",_s="المدة",xs="نقاط الإيقاف",Ks="اختر نقاط التحقق للتوقف في الوضع اليدوي؛ غير المحددة تُمرَّر تلقائياً",Gs="القصة المصورة",Bs="الصور المرجعية",Vs="مقاطع الفيديو",Us="التعليق الصوتي",Os="الترجمة النصية",qs="التركيب",Ws="هذا النوع من المهام لا يدعم الوضع اليدوي",zs="جارٍ تغيير وضع التنفيذ...",Qs="تم تغيير وضع التنفيذ",Ys="فشل تغيير الوضع",js="التبديل إلى تلقائي",Js="التبديل إلى يدوي",Xs="التبديل إلى الوضع التلقائي سيمسح نقاط الإيقاف وينفذ حتى النهاية. متابعة؟",Zs="التبديل إلى الوضع اليدوي سيتوقف عند نقطة التحقق التالية لمراجعتك. متابعة؟",$s="في انتظارك",ei="المهمة متوقفة عند نقطة تحقق؛ راجع أو عدّل المخرجات ثم تابع",ti="نقطة التحقق",oi="تم",ni="قيد الانتظار",si="قيد التشغيل",ii="كيفية معالجة نقطة التحقق هذه",ai="تعديل بالذكاء الاصطناعي",ci="صف التغيير؛ سيقوم النظام بتعديل المخرجات تلقائياً",ri="تعديل بنفسي",pi="اطلع على المسارات، عدّل الملفات محلياً، ثم أكّد",li="وكيل خارجي",di="انسخ الأمر والمطالبة، استخدم وكيلاً محلياً، ثم أكّد",mi="🗂️ احفظ سير عملك والـ prompts كـ Skills وأدرها بـ Flint",ui="طلب التعديل",gi="مثال: اجعل سرد المشهد 2 أكثر عامية",fi="بدء التعديل",Si="الذكاء الاصطناعي يعدّل...",vi="نتيجة التعديل",yi="تطبيق وتأكيد",bi="تجاهل",Pi="مسار المخرَج",hi="متطلبات التنسيق",Ci="الأثر بعد التعديل",Ai="تم التعديل، متابعة",ki="الأمر",Ri="المطالبة",Ti="تم، متابعة",Mi="🔗 المزيد من أدوات الذكاء الاصطناعي المجانية",Ii="نسخ",Di="لا توجد مخرجات قابلة للتعديل في نقطة التحقق هذه",wi="فشل التعديل بالذكاء الاصطناعي",Hi="فشل المتابعة",Ni="تم التأكيد، جارٍ المتابعة",Ei="فشل إعادة الإنشاء",Li="إعادة إنشاء",Fi="ستُحذف المخرجات المتأثرة وتُعاد إنشاؤها؛ غير المتأثرة تُحتفظ بها",_i="يرجى مراجعة وتحسين مخرجات نقطة التحقق هذه في دليل المهمة {dir}. أبلغني بالنتيجة عند الانتهاء، وسأضغط «تم التعديل، متابعة» في واجهة الويب.\\\\n\\\\nالمتطلبات:\\\\n1. حافظ على تنسيق المخرجات وبنيتها\\\\n2. عدّل المحتوى الدلالي فقط\\\\n3. أبلغ عن الملفات التي تم تغييرها",xi="سيُحذف ويُعاد تشغيله",Ki="مُحتفظ به، بدون إعادة تشغيل",Gi="تأكيد الحذف وإعادة التشغيل",Bi="إلغاء",Vi="لا توجد مخرجات متأثرة؛ تابع مباشرة",Ui="معلمات المهمة",Oi="الدقة",qi="الصوت",Wi="cd {dir} && traework\\ncd {dir} && opencode\\n# or another local agent (workbuddy / CodeBuddy CLI, etc.)",zi="Awaiting you",Qi="Back",Yi="Stages",ji="Expand",Ji="Collapse",Xi="Waiting",Zi="عرض",$i="التقدم",ea="استئناف",ta="إيقاف",oa=" مشهد",na=" فقرة",sa="بسيط",ia="إبداعي",aa="مقال",ca="صورة",ra="إيقاف المهمة الحالية يمكن استئنافها من قائمة المهام.",pa="إيقاف هذه المهمة يمكن استئنافها لاحقًا.",la="تم إيقاف المهمة، يمكن استئنافها من القائمة",da="تم إيقاف المهمة",ma="الرجاء إدخال مفتاح API",ua="الرجاء وصف الفيديو",ga="الرجاء وصف فكرتك",fa="الرجاء إدخال نص المقال",Sa="هناك مهمة قيد التنفيذ أو في الطابور بالفعل",va="فشل الإنشاء",ya="فشل الاستئناف",ba="فشل التحميل",Pa="فشل الإيقاف",ha="جارٍ الإيقاف...",Ca="تم إرسال المهمة، الرجاء الانتظار",Aa="تم استئناف المهمة، الرجاء الانتظار",ka="يرجى مراقبة سجلات وحدة التحكم والانتظار بصبر.",Ra="المهمة",Ta="فشلت المهمة",Ma="افحص سجلات وحدة التحكم، ثم استأنف من قائمة المهام.",Ia="الانتقال إلى قائمة المهام",Da="انقطع الاتصال",wa="انقطع الاتصال الفوري مع الخادم. قد لا يزال الخادم يعمل في الخلفية. تحقق من الحالة في قائمة المهام.",Ha="الانتقال إلى قائمة المهام",Na="انقطع الاتصال، جارٍ إعادة المحاولة...",Ea="مذيع رقمي",La="نطاق Agnes",Fa="اختر نطاق الوصول إلى Agnes API. في الصين يُنصح باستخدام .cn للحصول على اتصال أكثر استقرارًا.",_a="دولي",xa="الصين (موصى به)",Ka="الصين احتياطي (غير مذكور في الوثائق الرسمية، قد يُحذف)",Ga="تم الحفظ",Ba="فشل الحفظ",Va="فيديو شعر",Ua="إعدادات الشعر",Oa="نص القصيدة",qa="أدخل نص القصيدة كاملاً",Wa="يمكن أن تكون عدة مقاطع، مفصولة بسطر جديد أو علامات ترقيم. سيقسم الذكاء الاصطناعي إلى مشاهد حسب المعنى.",za="أوامر المشاهد (اختياري)",Qa="التنسيق: بيت | وصف بصري (مشهد واحد في كل سطر)",Ya='اختياري. مشهد واحد في كل سطر، بتنسيق ثابت "بيت | وصف بصري". الطريقتان تعطيان نفس النتيجة: ① اتركه فارغًا، سيولده النظام؛ ② انسخ الأمر أدناه إلى أي ذكاء اصطناعي وألصق النتيجة هنا.',ja="مثال: الربيع لا يدرك الفجر... | صباح ربيعي ضبابي، غناء العصافير",Ja="توليد المشاهد بذكاء اصطناعي آخر",Xa="عرض الأمر",Za="يتضمن الأمر عدد المشاهد ومدتها المضبوطين أعلاه، مطابق تمامًا لأمر النظام. انسخه إلى أي ذكاء اصطناعي، أدخل قصيدتك، ودعه يولّد المشاهد، ثم ألصق النتيجة في المربع أعلاه.",$a="إدخال القصيدة ونسخ الأمر",ec="المدة الإجمالية",tc="0=تلقائي",oc="تستخدم ترجمة الشعر نمطًا ثابتًا عامًا (أسفل المنتصف، نص أبيض بحدود سوداء) — يمكن التبديل فقط، دون تخصيص.",nc="تقسيم المشاهد",sc="توليد الفيديو",ic="الإلقاء",ac="الترجمة",cc="الدمج",rc="الرجاء إدخال نص القصيدة",pc="صورة بسيطة",lc="إعدادات الصورة",dc="وصف الصورة",mc="بحيرة عند سفح جبال ثلجية، ضباب الصباح، انعكاس الجبال في الماء، إضاءة سينمائية، أفقي",uc="حجم الصورة",gc="اختياري. ارفع لتوليد أشكال مختلفة؛ اتركه فارغًا لتوليد بالذكاء الاصطناعي الخالص.",fc="توليد الصورة",Sc="اكتمل توليد الصورة!",vc="جارٍ التوليد...",yc="الرجاء إدخال وصف الصورة",bc="إعدادات المذيع الرقمي",Pc="وصف المذيع",hc="مذيع أخبار محترف يرتدي بدلة، يجلس في استوديو أخبار حديث...",Cc="صورة مرجعية (اختياري)",Ac="اختياري. ارفع لضبط مظهر المذيع؛ اتركه فارغًا لتوليد بالذكاء الاصطناعي الخالص.",kc="نص التعليق",Rc="مرحبًا بكم في نشرة الأخبار التقنية اليوم. الخبر الأول: دخل توليد الفيديو بالذكاء الاصطناعي عصرًا مجانيًا...",Tc="عمودي 9:16 (HD)",Mc="متطلبات موضع الترجمة",Ic="ضع الترجمة في الثلث السفلي من الشاشة، وتجنب تغطية وجه المذيع",Dc="مذيع",wc="مصدر الصوت",Hc="صوت ما بعد التركيب",Nc="جودة الصوت قابلة للتحكم (الصوت، السرعة)، لكن مطابقة الشفاه أصعب",Ec="صوت النموذج",Lc="الصوت يتحكم فيه النموذج، التأثير غير قابل للتنبؤ؛ لا توجد خيارات للصوت/السرعة",Fc="توليد صورة المذيع",_c="تقسيم النص",xc="توليد أوامر المقاطع",Kc="توليد فيديو المقاطع",Gc="توليد الصوت",Bc="توليد الترجمة",Vc="دمج الفيديو",Uc="أمر النظام",Oc="تعليمات إضافية للنموذج (مثل الأسلوب والجودة)، لا تؤثر على وصف المحتوى الرئيسي",qc="النواتج الوسيطة",Wc="تحليل الصور",zc="القصة",Qc="مرجع الشخصية",Yc="السيناريو",jc="أوامر الإطار الأخير",Jc="إطار نهاية المشهد {index}",Xc="فيديو المشهد {index}",Zc="صوت التعليق",$c="الترجمة",er="الفيديو النهائي",tr="صورة المذيع",or="أوامر المقطع",nr="مقطع فيديو",sr="فيديو الفقرة {index}",ir="أوامر المشاهد",ar="حذف هذا الناتج ستحذف جميع النواتج اللاحقة وسيتم إرجاع حالة المهمة.",cr="سيتم حذف الملفات التالية",rr="سيتم إعادة تعيين الخطوات التالية",pr="تم حذف الناتج",lr="فشل الحذف",dr="انقر للمعاينة",mr="جارٍ بدء المهمة...",ur="احصل على مفتاح API مجانًا",gr="دليل الإعداد",fr="جرّبه عبر الإنترنت",Sr="🎯 نصائح الأوامر",vr="🧠 مقارنة النماذج",yr="📋 أمثلة أوامر الفيديو البسيط",br="📋 أمثلة أوامر الفيديو الإبداعي",Pr="📋 أمثلة فيديو المقال",hr="📋 أمثلة المذيع الرقمي",Cr="💡 أثناء الانتظار، شاهد ما ينشئه الآخرون بـ Agnes",Ar="📈 خطط وسائل التواصل",kr="🎬 المزيد من اتجاهات الإبداع",Rr="⭐ ادعم المشروع",Tr="مجاني بالكامل ومفتوح المصدر، لا رسوم أبدًا. ادعم المشروع:",Mr="⭐ امنح نجمة",Ir="ساعد المزيد من الناس على اكتشاف هذه الأداة",Dr="🔓 تعطيل AdBlock",wr="أوقف حظر الإعلانات على الموقع الرسمي",Hr="👆 اضغط على إعلان",Nr="نقرة صغيرة، دعم حقيقي",Er="شكرًا لدعمك ❤️",Lr="المزيد من الموارد",Fr="🏠 الصفحة الرئيسية للمشروع",_r="🎬 تجربة مباشرة",xr="📖 دليل الاستخدام",Kr="❓ الأسئلة الشائعة",Gr="📋 وثائق API",Br="🎯 حالات الاستخدام",Vr="🔗 روابط سريعة",Ur="📖 نصائح الأوامر",Or="📚 نظرة عامة على النماذج",qr="📘 استدعاء API",Wr="-30% (بطيء)",zr="+30% (سريع)",Qr="-15% (إلقاء القصيدة أبطأ)",Yr="أفقي 16:9 (HD)",jr="عمودي 9:16 كبير",Jr="أفقي 16:9 كبير",Xr="الماندرين · أنثى",Zr="خطأ في الشبكة",$r="تم النسخ ✓",ep="توسيع",tp="طي",op="تحديث",np="إغلاق",sp="شعر",ip="الكلمات المهمة بخط أحمر كبير، والسرد العادي بخط أبيض صغير في الأسفل",ap="إضافة مفتاح",cp="الصق مفتاح API جديد (يُضاف تلقائيًا إلى المفاتيح الموجودة)",rp="حذف",pp="حذف هذه المهمة وجميع الملفات المُنشأة؟ لا يمكن التراجع عن هذا الإجراء!",lp="تم حذف المهمة",dp="وضع التنفيذ",mp="⚡ تلقائي",up="✋ يدوي",gp="الوضع التلقائي يعمل حتى النهاية دون تدخل؛ الوضع اليدوي يتوقف عند كل نقطة تحقق للتأكيد أو التعديل، ويمكن استخدامه مع أدوات الذكاء الاصطناعي الخارجية. يمكن التبديل في أي وقت.",fp="فشل الحذف",Sp="فشل الإزالة",vp="المفاتيح المُعدة",yp="ENV",bp="CONFIG",Pp="من متغير البيئة؛ عدّله في بيئة التشغيل/.env",hp="المفتاح ما زال فعّالًا (موجود في env)",Cp="تم تفعيل تناوب المفاتيح المتعددة",Ap="تُستخدم المفاتيح بالتناوب وتزداد الحصة حسب عددها؛ لكن إذا لم يطابق أي مفتاح نطاقه أو انتهت صلاحيته، تفشل المهام التي تستخدمه بشكل متقطع مع 401. اربط نطاقًا مطابقًا لكل مفتاح (أو اضغط «الكشف التلقائي عن النطاقات»)؛ بالنسبة لمفاتيح .env تأكد من أن موقعها يطابق النطاق الافتراضي العام.",kp="إزالة هذا المفتاح",Rp="هل تريد إزالة هذا المفتاح؟",Tp="تمت إزالة المفتاح",Mp="ارفع صورة مرجعية لكل مشهد؛ سيستخدمها الفيديو كنقطة بداية بصرية (مع تخطي توليد لوحة القصة بالذكاء الاصطناعي لذلك المشهد). المشاهد دون رفع تستخدم صورًا من الذكاء الاصطناعي.",Ip="الصور المرجعية للمشاهد (اختياري)",Dp="فشل الحفظ",wp="تم حفظ القطعة",Hp="قارن",Np="✅ المتابعة دون تغييرات",Ep="الاحتفاظ بالقطع الحالية والمتابعة",Lp="بعد الحفظ، ستُعاد توليد القطع السفلية المتأثرة",Fp="تعديل القطع",_p="فتح نافذة التحرير",xp="أدخل المحتوى المعدل هنا...",Kp="💾 حفظ التغييرات",Gp="الرئيسية",Bp="💻 التحرير عبر الإنترنت",Vp="حرّر القطع النصية في نافذة واحفظها، وقارن بالأصل في أي وقت",Up="هذا النموذج مدفوع، يُفوتر حسب الاستخدام. تأكد من فتح حصة الدفع.",Op=" (مدفوع)",qp="لا توجد قطع نصية قابلة للتحرير في نقطة التحقق هذه",Wp="الأصل",zp="جارٍ استئناف التنفيذ...",Qp="تغيير اللغة",Yp="شرق آسيا",jp="جنوب شرق آسيا",Jp="جنوب آسيا",Xp="الشرق الأوسط",Zp="أوروبا",$p="✅ تأكيد ومتابعة",el="انقر على «تأكيد ومتابعة» بالأعلى لتطبيق التغييرات",tl="يحتاج إلى استئناف",ol="استئناف المهمة",nl="المهمة لا تعمل",sl="انقر على «استئناف المهمة» أعلى اليمين",il="يمكن تحرير القطع النصية فقط عبر الإنترنت",al="Generation failures are often caused by transient factors. Please retry first (resumes from the failed step).",cl="Retry Task",rl="Retried {n} time(s)",pl="Still failing after multiple retries? Report the issue",ll="Still failing after {n} retries. Please report with diagnostic info.",dl="This looks like a deterministic issue caused by parameters or content. Retrying may not help.",ml="مشكلة في الشبكة أو حل أسماء النطاقات على جهازك: الخادم أنهى المهمة غالبًا، لكن جهازك لا يستطيع جلب الملف. استخدم خادم DNS يستطيع الوصول إلى هذا النطاق (مثل 223.5.5.5 أو 119.29.29.29)، وعطّل اعتراض DNS لدى VPN/الوكيل وبرامج الحماية، ثم أعد المحاولة للاستئناف من الخطوة التي فشلت.",ul="Diagnostic Info",gl="Copy Diagnostic Info",fl="Copied. Please paste it into the GitHub Issue.",Sl="Check the FAQ first",vl="Open an Issue on GitHub",yl="Please review before submitting (your prompt text is not included)",bl="Prefilled content was too long and shortened. Please paste the full diagnostic info.",Pl="Generating diagnostic info…",hl="Copy failed, please try again",Cl="## Diagnostic Info (Agnes Video Generator)",Al="App Version",kl="Task ID",Rl="Task Type",Tl="Generation Mode",Ml="Failed Step",Il="Retry Count",Dl="Key Configs",wl="Environment",Hl="لغة الواجهة",Nl="unknown",El="### Error Message",Ll="#### التتبع الكامل",Fl="### Reproduction Steps",_l="<!-- Please fill in: operations and related config -->",xl="### Expected Behavior",Kl="<!-- Please fill in -->",Gl="…(content was too long and truncated, please paste the full diagnostic info)",Bl="[Bug] {taskType} task failed at {failedStep}",Vl="[Bug] {taskType} generation failed",Ul="#### Model call error {n}",Ol="Time",ql="Model",Wl="API",zl="Error Type",Ql="Status Code",Yl="Error Message",jl="الخصوصية",Jl="إيقاف الإحصائيات المجهولة",Xl="عند التفعيل، لا يتم تحميل أي نصوص تحليلات (Google Analytics 4) ولا يتم إرسال أي بيانات.",Zl="عند تشغيل التحليلات، يتم إرسال ما يلي بشكل مجهول",$l="أحداث المهام: إنشاء، إكمال، فشل، إيقاف، حذف",ed="نوع المهمة ووضع التوليد (مثل: فيديو بسيط/t2v، فيديو إبداعي)",td="إجراءات الواجهة والإعدادات: تبديل نوع المهمة، اختيار النماذج، حفظ/مسح مفاتيح API، النطاق، تبديل العلامة المائية (يتم تسجيل الإجراء فقط، وليس المفتاح نفسه)",od="ملخص أخطاء الواجهة الأمامية: رسالة الخطأ (مقتطعة إلى 500 حرف)",nd="لن يتم رفع ما يلي أبدًا بغض النظر عن حالة المفتاح",sd="المحتوى الإبداعي مثل المطالبات والمخطوطات والنصوص الشعرية؛ مفاتيح API؛ الصور المرجعية. يتم استبدال جميع حقول المحتوى بعلامة <redacted> قبل الإرسال، ويتم اقتطاع النصوص الطويلة تلقائيًا، ولا يدخل شيء إلى نظام التحليلات.",id="الإحصائيات مفعّلة",ad="الإحصائيات متوقفة",cd="未设置域名",rd="跟随全局",pd="该 Key 尚未绑定域名,将回退到全局配置。建议为每个 Key 选择匹配的域名。",ld="为该 Key 选择绑定域名(空=跟随全局)",dd="跟随全局",md="Key 域名已保存",ud="保存 Key 域名失败",gd="自动探测域名",fd="探测中…",Sd="自动为每个 Key 探测并补写匹配的域名",vd="域名探测完成,已更新",yd="探测正在进行或触发过于频繁,请稍候再试",bd="域名探测失败",Pd="⭐ امنح نجمة لمشروع Flint الجديد",hd="ادعم مدير المهارات الجديد للمؤلف",Cd="🪨 Flint · مدير المهارات",Ad="Gallery",kd="All",Rd="Videos",Td="Images",Md="All statuses",Id="Completed",Dd="Failed",wd="No media yet. Create a task first.",Hd="Read-only view. Manage tasks in the list tab.",Nd="Presets",Ed="Click a preset to fill the style field (you can still edit it).",Ld="Save current style as a preset",Fd="Preset name",_d="Name your preset (default: Untitled)",xd="Preset saved",Kd="Failed to save preset",Gd="Preset deleted",Bd="Failed to delete preset",Vd="Delete this preset?",Ud="System presets are read-only",Od="Untitled",qd="No presets yet",Wd="Cinematic",zd="Oriental",Qd="Painting",Yd="Animation",jd="Fantasy",Jd="My presets",Xd="Film Noir",Zd="Ink Wash",$d="Watercolor",em="Pixel Art",tm="Dreamscape",om="Photographic",nm="Documentary",sm="Golden Hour",im="Studio Portrait",am="Blockbuster",cm="Moody Drama",rm="Wuxia",pm="Guofeng",lm="Classic Oil",dm="Storybook",mm="Vivid Anime",um="Retro Anime",gm="Cyberpunk",fm="Epic Fantasy",Sm="إضافة نموذج",vm="يمكنك الإدخال مباشرة أو النقر على «جلب النماذج» لإضافتها تلقائيًا؛ إزالة التكرار عند الحفظ",ym="أدخل معرف النموذج…",bm="قائمة النماذج",Pm={subtitle:e,apiKeyTitle:t,apiKeyNotConfigured:o,apiKeyConfigured:n,apiKeyPlaceholder:s,apiKeyMasked:i,save:a,clear:c,clearConfirm:r,apiKeyFromEnv:p,clearEnvHint:l,modelTitle:d,modelHint:m,modelTextLabel:u,modelImageLabel:g,modelVideoLabel:f,vmModelSelect:S,vmDiffTitle:v,vmColCapability:y,vmColPrice:b,vmColMode:P,vmColDuration:h,vmColResolution:C,vmColNegative:A,vmColRefVideo:k,vmTagPaid:R,vmTagFree:T,vmYes:M,vmNo:I,vmModelModesLabel:D,vmModelDurationsLabel:w,vmModelResLabel:H,vmModelNegativeLabel:N,vmModelRefImagesLabel:E,vmModelRefVideoLabel:L,vmModelNegativeUnsupported:F,vmRatioLabel:_,vmSizeLabel:x,vmRefImagesHint:K,vmNegativeDisabledPlaceholder:G,vmRatioHint:B,vm720pHint:V,modelSync:U,modelSyncIdle:O,modelSaved:q,modelBetaHint:W,modelBetaTag:z,modelTagText:Q,modelTagImage:Y,modelTagVideo:j,modelTextRequired:J,modelSyncFailed:X,modelSaveFailed:Z,modelSupplier:$,providerTextHint:ee,delete:"حذف",providerTitle:te,providerHint:oe,providerCount:ne,providerCurrent:se,providerBuiltin:ie,providerBuiltinHint:ae,providerBuiltinAgnes:ce,providerApiOpenai:re,providerApiAnthropic:pe,providerInUse:le,providerManageTitle:de,providerManageHint:me,providerIntroTitle:ue,providerIntroGuide:ge,providerIntroFree:fe,providerIntroText:Se,providerIntroAmdEntry:ve,providerIntroAmdEndpoint:ye,providerIntroAmdModels:be,providerIntroAmdNote:Pe,providerIntroMedia:he,providerIntroMediaRecommend:Ce,providerEditLabel:Ae,providerEditTitle:ke,providerAgnesTitle:Re,providerEditReadonly:Te,providerAddTitle:Me,providerAddBtn:Ie,providerExistingTitle:De,providerExistingEmpty:we,providerNoModels:He,providerManualModelsLabel:Ne,providerManualModelsPlaceholder:Ee,providerNameLabel:Le,providerNamePlaceholder:Fe,providerNameRequired:_e,providerApiLabel:xe,providerBaseUrlLabel:Ke,providerBaseUrlPlaceholder:Ge,providerBaseUrlRequired:Be,providerApiKeyLabel:Ve,providerApiKeyPlaceholder:Ue,providerApiKeyEditPlaceholder:Oe,providerApiKeyEditHint:qe,providerApiKeyRequired:We,providerFetchModels:ze,providerFetching:Qe,providerModelListHint:Ye,providerSaved:je,providerSaveFailed:Je,providerDeleted:Xe,providerDeleteConfirm:Ze,providerDeleteFailed:$e,providerModelFetched:et,providerModelFetchFailed:tt,workspaceTitle:ot,workspaceNone:nt,workspaceActive:st,workspaceAdd:it,workspacePathPlaceholder:at,workspaceNamePlaceholder:ct,workspaceActivate:rt,workspaceRemove:pt,workspaceActiveBadge:lt,workspaceCurrentActive:dt,workspaceBrowse:mt,workspaceDefault:ut,workspaceListTitle:gt,workspaceListHint:ft,workspaceRegressionHint:St,workspaceRemoveConfirm:vt,tabCreate:yt,tabList:bt,tabSimple:Pt,tabNewBadge:ht,watermarkTitle:Ct,watermarkPromo:At,watermarkEnabled:kt,watermarkDisabled:Rt,ttSimple:Tt,ttCreative:Mt,ttManuscript:It,subModeLabel:Dt,subModeVideo:wt,subModeImage:Ht,simpleSettings:Nt,simpleTitle:Et,simpleIdea:Lt,simpleIdeaPlaceholder:Ft,simplePreview:_t,simplePreviewing:xt,simpleScenes:Kt,simpleSetting:Gt,simpleGenerate:Bt,simpleGenerating:Vt,simpleGenerated:Ut,simpleScenePrompt:Ot,simpleSceneVoiceover:qt,creativeSettings:Wt,manuscriptSettings:zt,promptLabel:Qt,promptPlaceholder:Yt,genMode:jt,modeT2v:Jt,modeI2v:Xt,modeKeyframesSimple:Zt,duration:$t,resolution:eo,resPortrait:to,resLandscape:oo,resSquare:no,refImageSimple:so,endFrameImage:io,chooseImage:ao,notSelected:co,advancedSettings:ro,optional:po,seedPlaceholder:lo,negativePlaceholder:mo,taskName:uo,taskNamePlaceholder:go,ideaLabel:fo,ideaPlaceholder:So,visualStyle:vo,requirementDefault:yo,styleDefault:bo,chainingMode:Po,modeKeyframes:ho,modeTi2vid:Co,modeNone:Ao,referenceImage:ko,refDescription:Ro,customEndFrames:To,enableCustomEndFrames:Mo,genEndFramesFromRef:Io,endFrameDesc:Do,scene_:wo,addEndFrame:Ho,audioConfig:No,subtitleConfig:Eo,enableNarration:Lo,enableSubtitle:Fo,voiceRole:_o,speechRate:xo,rateNormal:Ko,selectVoice:Go,searchVoice:Bo,currentSelection:Vo,confirmSelection:Uo,cancel:Oo,confirm:qo,previewPlay:Wo,previewStop:zo,previewFailed:Qo,voiceCompatWarning:Yo,voiceGenderFemale:jo,voiceGenderMale:Jo,voiceEmpty:Xo,subtitleStyle:Zo,subFont:$o,subColor:en,subSize:tn,subPosition:on,posBottom:nn,posTop:sn,subStrokeColor:an,subStrokeWidth:cn,subBgColor:rn,subStyleMode:pn,subStyleFixed:ln,subStyleLLM:dn,subStyleHints:mn,subStyleHintsHint:un,manuscriptText:gn,manuscriptPlaceholder:fn,charCount:Sn,startGenerate:vn,submitting:yn,taskRunning:bn,loading:Pn,noTasks:hn,loadFailed:Cn,progress:An,stopTask:kn,sStepSubmit:Rn,sStepVideoGen:Tn,cStepInit:Mn,cStepSceneConfig:In,cStepImageAnalysis:Dn,cStepStory:wn,cStepCharacterRef:Hn,cStepScript:Nn,cStepEndFramePrompts:En,cStepEndFrameGen:Ln,cStepVideoGen:Fn,cStepAudio:_n,cStepSubtitle:xn,cStepConcat:Kn,mStepSplit:Gn,mStepScenePrompts:Bn,mStepVideoGen:Vn,mStepAudio:Un,mStepSubtitle:On,mStepConcat:qn,videoComplete:Wn,taskComplete:zn,taskId:Qn,dir:Yn,idea_:jn,sceneCount:Jn,chainingMode_:Xn,sceneConfig:Zn,durationSource:$n,sourceManual:es,sourcePrompt:ts,sourceManualHint:os,sourcePromptHint:ns,durationMode:ss,uniformDuration:is,independentDuration:as,seconds:cs,artifact:rs,paragraphCount:ps,statusCompleted:ls,statusRunning:ds,statusFailed:ms,statusPending:us,statusQueued:gs,cpImageAnalysis:fs,cpStory:Ss,cpScript:vs,cpCharacterRef:ys,cpEndFramePrompts:bs,cpEndFrameGen:Ps,taskInfo:hs,tiIdea:Cs,tiManuscript:As,tiScript:ks,tiAnchorPrompt:Rs,tiPoem:Ts,tiPrompt:Ms,tiWidth:Is,tiHeight:Ds,tiScenes:ws,tiParagraphs:Hs,tiChaining:Ns,tiStyle:Es,tiAudioSource:Ls,tiMode:Fs,tiDuration:_s,pausePoints:xs,pausePointsHint:Ks,cpScenes:Gs,cpReferences:Bs,cpVideos:Vs,cpAudio:Us,cpSubtitle:Os,cpFinal:qs,manualUnsupported:Ws,modeSwitching:zs,modeSwitched:Qs,failSwitchMode:Ys,switchToAuto:js,switchToManual:Js,switchToAutoConfirm:Xs,switchToManualConfirm:Zs,awaitingUser:$s,awaitingUserTip:ei,checkpointTitle:ti,cpDone:oi,cpPending:ni,cpRunning:si,howToHandle:ii,handleAi:ai,handleAiDesc:ci,handleSelf:ri,handleSelfDesc:pi,handleAgent:li,handleAgentDesc:di,handleAgentFlint:mi,aiModifyRequest:ui,aiModifyRequestPlaceholder:gi,aiModifyStart:fi,aiModifyApplying:Si,aiModifyResult:vi,applyAndContinue:yi,discard:bi,selfEditPath:Pi,selfEditSchemaHint:hi,selfEditAffected:Ci,selfEditDone:Ai,agentCommand:ki,agentPrompt:Ri,agentDone:Ti,agentMoreTools:Mi,copy:Ii,noEditableArtifact:Di,aiModifyFailed:wi,failContinue:Hi,continued:Ni,failRegen:Ei,regenCurrent:Li,selfEditAffectedHint:Fi,agentPromptTemplate:_i,impactTitle:xi,impactRetained:Ki,impactConfirm:Gi,impactCancel:Bi,noAffected:Vi,paramUpdates:Ui,paramResolution:Oi,paramVoice:qi,agentCommandLines:Wi,statusAwaitingUser:zi,progressBack:Qi,ppStages:Yi,ppExpand:ji,ppCollapse:Ji,ppWaiting:Xi,btnView:Zi,btnViewProgress:$i,btnResume:ea,btnStop:ta,sceneUnit:oa,paraUnit:na,typeSimple:sa,typeCreative:ia,typeManuscript:aa,typeImage:ca,stopConfirm:ra,stopConfirmById:pa,stopped:la,stoppedById:da,enterApiKey:ma,enterPrompt:ua,enterIdea:ga,enterText:fa,taskRunningWarn:Sa,failCreate:va,failResume:ya,failLoad:ba,failStop:Pa,stopping:ha,submitted:Ca,resumed:Aa,watchLog:ka,task_:Ra,genFailed:Ta,genFailedMsg:Ma,gotoResume:Ia,connLost:Da,connLostMsg:wa,gotoList:Ha,reconnecting:Na,ttAnchor:Ea,domainTitle:La,domainHint:Fa,domainComLabel:_a,domainCnLabel:xa,domainCnBakLabel:Ka,domainSaved:Ga,domainSaveFailed:Ba,ttPoetry:Va,poetrySettings:Ua,poemLabel:Oa,poemPlaceholder:qa,poemHint:Wa,scenePromptsOptional:za,scenePromptsPlaceholder:Qa,scenePromptsHint:Ya,scenePromptsExample:ja,scenePromptTool:Ja,showPrompt:Xa,scenePromptToolHint:Za,copyPromptWithPoem:$a,totalDuration:ec,sceneCountAuto:tc,poetrySubtitleFixed:oc,pStepBuildScenes:nc,pStepVideoGen:sc,pStepAudio:ic,pStepSubtitle:ac,pStepConcat:cc,enterPoem:rc,ttImage:pc,imageSettings:lc,imagePrompt:dc,imagePromptPlaceholder:mc,imageSize:uc,refImageHint:gc,imgGenerate:fc,imgComplete:Sc,generating:vc,enterImagePrompt:yc,anchorSettings:bc,anchorPrompt:Pc,anchorPromptPlaceholder:hc,anchorRefImage:Cc,anchorRefImageHint:Ac,scriptText:kc,scriptTextPlaceholder:Rc,resPortraitHD:Tc,subPositionHints:Mc,subPositionHintsPlaceholder:Ic,typeAnchor:Dc,audioSource:wc,audioPostStitch:Hc,audioPostStitchDesc:Nc,audioModel:Ec,audioModelDesc:Lc,aStepGenerateAnchor:Fc,aStepSplit:_c,aStepClipPrompts:xc,aStepClipGen:Kc,aStepAudio:Gc,aStepSubtitle:Bc,aStepConcat:Vc,systemPrompt:Uc,systemPromptPlaceholder:Oc,artTitle:qc,artImageAnalysis:Wc,artStory:zc,artCharacterRef:Qc,artScript:Yc,artEndFramePrompts:jc,artEndFrame:Jc,artVideo:Xc,artAudio:Zc,artSubtitle:$c,artFinalVideo:er,artAnchorImage:tr,artClipPrompts:or,artClip:nr,artParaVideo:sr,artScenePrompts:ir,deleteArtifactConfirm:ar,willDelete:cr,willResetSteps:rr,artifactDeleted:pr,artifactDeleteFailed:lr,clickToPreview:dr,taskStarting:mr,apiKeyGetLink:ur,apiKeyGuideLink:gr,apiKeyDemoLink:fr,formTipTips:Sr,formTipModels:vr,exampleLinkSimple:yr,exampleLinkCreative:br,exampleLinkManuscript:Pr,exampleLinkAnchor:hr,waitTip:Cr,doneTipTiktok:Ar,doneTipMore:kr,adSupportTitle:Rr,adSupportDesc:Tr,adStar:Mr,adStarDesc:Ir,adAdblock:Dr,adAdblockDesc:wr,adClick:Hr,adClickDesc:Nr,adThanks:Er,moreResources:Lr,projectHome:Fr,onlineDemo:_r,usageGuide:xr,faqTitle:Kr,apiDocs:Gr,appScenarios:Br,quickLinks:Vr,promptTips:Ur,modelOverview:Or,apiCall:qr,rateSlow:Wr,rateFast:zr,ratePoem:Qr,resLandscapeHD:Yr,resPortraitTall:jr,resLandscapeWide:Jr,voiceDefaultDesc:Xr,networkError:Zr,copied:$r,expand:ep,collapse:tp,refresh:op,close:np,typePoetry:sp,subStyleHintsPlaceholder:ip,addKey:ap,apiKeyAppendPlaceholder:cp,deleteTask:rp,deleteTaskConfirm:pp,deletedTask:lp,execMode:dp,execAuto:mp,execManual:up,execModeHint:gp,failDelete:fp,failRemoveKey:Sp,keyCountLabel:vp,keySrcEnv:yp,keySrcConfig:bp,keySrcEnvHint:Pp,keyStillActive:hp,multiKeyActive:Cp,multiKeyHint:Ap,removeKeyBtn:kp,removeKeyConfirm:Rp,removedKey:Tp,sceneRefDesc:Mp,sceneReferenceImages:Ip,artifactSaveFailed:Dp,artifactSaved:wp,compare:Hp,continueNoChange:Np,continueNoChangeHint:Ep,editArtifactHint:Lp,editModalTitle:Fp,editOpen:_p,editPlaceholder:xp,editSave:Kp,goHome:Gp,handleEdit:Bp,handleEditDesc:Vp,modelPaidHint:Up,modelPaidTag:Op,noEditableText:qp,originalContent:Wp,resuming:zp,langSwitch:Qp,langGroupEastAsia:Yp,langGroupSoutheastAsia:jp,langGroupSouthAsia:Jp,langGroupMiddleEast:Xp,langGroupEurope:Zp,continueConfirm:$p,continueToApply:el,statusNeedsResume:tl,resumeTaskBtn:ol,taskNotRunning:nl,taskNotRunningHint:sl,editTextOnly:il,fbRetryHint:al,fbRetryBtn:cl,fbRetriedN:rl,fbCollapsedHint:pl,fbExpandedHint:ll,fbDeterministicHint:dl,fbNetworkHint:ml,fbDiagTitle:ul,fbCopy:gl,fbCopied:fl,fbFaq:Sl,fbGithub:vl,fbPrivacyHint:yl,fbUrlTooLong:bl,fbDiagLoading:Pl,fbCopyFailed:hl,fbRepTitle:Cl,fbRepAppVersion:Al,fbRepTaskId:kl,fbRepTaskType:Rl,fbRepMode:Tl,fbRepFailedStep:Ml,fbRepRetryCount:Il,fbRepConfigs:Dl,fbRepEnv:wl,fbRepUiLang:Hl,fbRepUnknown:Nl,fbRepErrorTitle:El,fbRepTraceback:Ll,fbRepReproSteps:Fl,fbRepReproHint:_l,fbRepExpected:xl,fbRepExpectedHint:Kl,fbRepTruncated:Gl,fbRepIssueTitleStep:Bl,fbRepIssueTitleNoStep:Vl,fbRepErrHeading:Ul,fbRepErrTime:Ol,fbRepErrModel:ql,fbRepErrApi:Wl,fbRepErrType:zl,fbRepErrStatusCode:Ql,fbRepErrInfo:Yl,privacyTitle:jl,gaOptOutLabel:Jl,gaOptOutHint:Xl,gaReportTitle:Zl,gaReportItem1:$l,gaReportItem2:ed,gaReportItem3:td,gaReportItem4:od,gaNeverUploadTitle:nd,gaNeverUploadText:sd,gaStatOn:id,gaStatOff:ad,keyDomainNotSet:cd,keyDomainEnvFollow:rd,keyDomainNotSetHint:pd,keyDomainSelectTitle:ld,keyDomainAuto:dd,keyDomainSaved:md,failSaveKeyDomain:ud,detectKeysBtn:gd,detectKeysRunning:fd,detectKeysHint:Sd,detectKeysDone:vd,detectKeysBusy:yd,failDetectKeys:bd,adSkewStar:Pd,adSkewStarDesc:hd,flintLinkLabel:Cd,tabGallery:Ad,filterAll:kd,filterVideo:Rd,filterImage:Td,filterStatusAll:Md,filterStatusCompleted:Id,filterStatusFailed:Dd,galleryEmpty:wd,galleryReadonlyHint:Hd,presetOpen:Nd,presetSelectHint:Ed,presetSaveAs:Ld,presetSaveName:Fd,presetNamePlaceholder:_d,presetSaved:xd,presetSaveFailed:Kd,presetDeleted:Gd,presetDeleteFailed:Bd,presetDeleteConfirm:Vd,presetSystemReadonly:Ud,presetNameUntitled:Od,presetNoPresets:qd,presetCat_cinematic:Wd,presetCat_oriental:zd,presetCat_painting:Qd,presetCat_animation:Yd,presetCat_fantasy:jd,presetCat_custom:Jd,presetName_film_noir:Xd,presetName_ink_wash:Zd,presetName_watercolor:$d,presetName_pixel_art:em,presetName_dreamscape:tm,presetCat_photographic:om,presetName_docu_real:nm,presetName_golden_hour:sm,presetName_studio_portrait:im,presetName_blockbuster:am,presetName_moody_drama:cm,presetName_wuxia:rm,presetName_guofeng:pm,presetName_oil_classic:lm,presetName_storybook:dm,presetName_anime_vivid:mm,presetName_anime_retro:um,presetName_cyberpunk:gm,presetName_epic_fantasy:fm,modelAdd:Sm,modelInputHint:vm,modelInputPlaceholder:ym,modelListLabel:bm};export{Gc as aStepAudio,Kc as aStepClipGen,xc as aStepClipPrompts,Vc as aStepConcat,Fc as aStepGenerateAnchor,_c as aStepSplit,Bc as aStepSubtitle,Dr as adAdblock,wr as adAdblockDesc,Hr as adClick,Nr as adClickDesc,Pd as adSkewStar,hd as adSkewStarDesc,Mr as adStar,Ir as adStarDesc,Tr as adSupportDesc,Rr as adSupportTitle,Er as adThanks,Ho as addEndFrame,ap as addKey,ro as advancedSettings,ki as agentCommand,Wi as agentCommandLines,Ti as agentDone,Mi as agentMoreTools,Ri as agentPrompt,_i as agentPromptTemplate,Si as aiModifyApplying,wi as aiModifyFailed,ui as aiModifyRequest,gi as aiModifyRequestPlaceholder,vi as aiModifyResult,fi as aiModifyStart,Pc as anchorPrompt,hc as anchorPromptPlaceholder,Cc as anchorRefImage,Ac as anchorRefImageHint,bc as anchorSettings,qr as apiCall,Gr as apiDocs,cp as apiKeyAppendPlaceholder,n as apiKeyConfigured,fr as apiKeyDemoLink,p as apiKeyFromEnv,ur as apiKeyGetLink,gr as apiKeyGuideLink,i as apiKeyMasked,o as apiKeyNotConfigured,s as apiKeyPlaceholder,t as apiKeyTitle,Br as appScenarios,yi as applyAndContinue,tr as artAnchorImage,Zc as artAudio,Qc as artCharacterRef,nr as artClip,or as artClipPrompts,Jc as artEndFrame,jc as artEndFramePrompts,er as artFinalVideo,Wc as artImageAnalysis,sr as artParaVideo,ir as artScenePrompts,Yc as artScript,zc as artStory,$c as artSubtitle,qc as artTitle,Xc as artVideo,rs as artifact,lr as artifactDeleteFailed,pr as artifactDeleted,Dp as artifactSaveFailed,wp as artifactSaved,No as audioConfig,Ec as audioModel,Lc as audioModelDesc,Hc as audioPostStitch,Nc as audioPostStitchDesc,wc as audioSource,$s as awaitingUser,ei as awaitingUserTip,ea as btnResume,ta as btnStop,Zi as btnView,$i as btnViewProgress,_n as cStepAudio,Hn as cStepCharacterRef,Kn as cStepConcat,Ln as cStepEndFrameGen,En as cStepEndFramePrompts,Dn as cStepImageAnalysis,Mn as cStepInit,In as cStepSceneConfig,Nn as cStepScript,wn as cStepStory,xn as cStepSubtitle,Fn as cStepVideoGen,Oo as cancel,Po as chainingMode,Xn as chainingMode_,Sn as charCount,ti as checkpointTitle,ao as chooseImage,c as clear,r as clearConfirm,l as clearEnvHint,dr as clickToPreview,np as close,tp as collapse,Hp as compare,qo as confirm,Uo as confirmSelection,Da as connLost,wa as connLostMsg,$p as continueConfirm,Np as continueNoChange,Ep as continueNoChangeHint,el as continueToApply,Ni as continued,$r as copied,Ii as copy,$a as copyPromptWithPoem,Us as cpAudio,ys as cpCharacterRef,oi as cpDone,Ps as cpEndFrameGen,bs as cpEndFramePrompts,qs as cpFinal,fs as cpImageAnalysis,ni as cpPending,Bs as cpReferences,si as cpRunning,Gs as cpScenes,vs as cpScript,Ss as cpStory,Os as cpSubtitle,Vs as cpVideos,Wt as creativeSettings,Vo as currentSelection,To as customEndFrames,Pm as default,ar as deleteArtifactConfirm,rp as deleteTask,pp as deleteTaskConfirm,lp as deletedTask,gd as detectKeysBtn,yd as detectKeysBusy,vd as detectKeysDone,Sd as detectKeysHint,fd as detectKeysRunning,Yn as dir,bi as discard,Ka as domainCnBakLabel,xa as domainCnLabel,_a as domainComLabel,Fa as domainHint,Ba as domainSaveFailed,Ga as domainSaved,La as domainTitle,kr as doneTipMore,Ar as doneTipTiktok,$t as duration,ss as durationMode,$n as durationSource,Lp as editArtifactHint,Fp as editModalTitle,_p as editOpen,xp as editPlaceholder,Kp as editSave,il as editTextOnly,Mo as enableCustomEndFrames,Lo as enableNarration,Fo as enableSubtitle,Do as endFrameDesc,io as endFrameImage,ma as enterApiKey,ga as enterIdea,yc as enterImagePrompt,rc as enterPoem,ua as enterPrompt,fa as enterText,hr as exampleLinkAnchor,br as exampleLinkCreative,Pr as exampleLinkManuscript,yr as exampleLinkSimple,mp as execAuto,up as execManual,dp as execMode,gp as execModeHint,ep as expand,Hi as failContinue,va as failCreate,fp as failDelete,bd as failDetectKeys,ba as failLoad,Ei as failRegen,Sp as failRemoveKey,ya as failResume,ud as failSaveKeyDomain,Pa as failStop,Ys as failSwitchMode,Kr as faqTitle,pl as fbCollapsedHint,fl as fbCopied,gl as fbCopy,hl as fbCopyFailed,dl as fbDeterministicHint,Pl as fbDiagLoading,ul as fbDiagTitle,ll as fbExpandedHint,Sl as fbFaq,vl as fbGithub,ml as fbNetworkHint,yl as fbPrivacyHint,Al as fbRepAppVersion,Dl as fbRepConfigs,wl as fbRepEnv,Wl as fbRepErrApi,Ul as fbRepErrHeading,Yl as fbRepErrInfo,ql as fbRepErrModel,Ql as fbRepErrStatusCode,Ol as fbRepErrTime,zl as fbRepErrType,El as fbRepErrorTitle,xl as fbRepExpected,Kl as fbRepExpectedHint,Ml as fbRepFailedStep,Vl as fbRepIssueTitleNoStep,Bl as fbRepIssueTitleStep,Tl as fbRepMode,_l as fbRepReproHint,Fl as fbRepReproSteps,Il as fbRepRetryCount,kl as fbRepTaskId,Rl as fbRepTaskType,Cl as fbRepTitle,Ll as fbRepTraceback,Gl as fbRepTruncated,Hl as fbRepUiLang,Nl as fbRepUnknown,rl as fbRetriedN,cl as fbRetryBtn,al as fbRetryHint,bl as fbUrlTooLong,kd as filterAll,Td as filterImage,Md as filterStatusAll,Id as filterStatusCompleted,Dd as filterStatusFailed,Rd as filterVideo,Cd as flintLinkLabel,vr as formTipModels,Sr as formTipTips,sd as gaNeverUploadText,nd as gaNeverUploadTitle,Xl as gaOptOutHint,Jl as gaOptOutLabel,$l as gaReportItem1,ed as gaReportItem2,td as gaReportItem3,od as gaReportItem4,Zl as gaReportTitle,ad as gaStatOff,id as gaStatOn,wd as galleryEmpty,Hd as galleryReadonlyHint,Io as genEndFramesFromRef,Ta as genFailed,Ma as genFailedMsg,jt as genMode,vc as generating,Gp as goHome,Ha as gotoList,Ia as gotoResume,li as handleAgent,di as handleAgentDesc,mi as handleAgentFlint,ai as handleAi,ci as handleAiDesc,Bp as handleEdit,Vp as handleEditDesc,ri as handleSelf,pi as handleSelfDesc,ii as howToHandle,fo as ideaLabel,So as ideaPlaceholder,jn as idea_,dc as imagePrompt,mc as imagePromptPlaceholder,lc as imageSettings,uc as imageSize,Sc as imgComplete,fc as imgGenerate,Bi as impactCancel,Gi as impactConfirm,Ki as impactRetained,xi as impactTitle,as as independentDuration,vp as keyCountLabel,dd as keyDomainAuto,rd as keyDomainEnvFollow,cd as keyDomainNotSet,pd as keyDomainNotSetHint,md as keyDomainSaved,ld as keyDomainSelectTitle,bp as keySrcConfig,yp as keySrcEnv,Pp as keySrcEnvHint,hp as keyStillActive,Yp as langGroupEastAsia,Zp as langGroupEurope,Xp as langGroupMiddleEast,Jp as langGroupSouthAsia,jp as langGroupSoutheastAsia,Qp as langSwitch,Cn as loadFailed,Pn as loading,Un as mStepAudio,qn as mStepConcat,Bn as mStepScenePrompts,Gn as mStepSplit,On as mStepSubtitle,Vn as mStepVideoGen,Ws as manualUnsupported,fn as manuscriptPlaceholder,zt as manuscriptSettings,gn as manuscriptText,Xt as modeI2v,ho as modeKeyframes,Zt as modeKeyframesSimple,Ao as modeNone,Qs as modeSwitched,zs as modeSwitching,Jt as modeT2v,Co as modeTi2vid,Sm as modelAdd,W as modelBetaHint,z as modelBetaTag,m as modelHint,g as modelImageLabel,vm as modelInputHint,ym as modelInputPlaceholder,bm as modelListLabel,Or as modelOverview,Up as modelPaidHint,Op as modelPaidTag,Z as modelSaveFailed,q as modelSaved,$ as modelSupplier,U as modelSync,X as modelSyncFailed,O as modelSyncIdle,Y as modelTagImage,Q as modelTagText,j as modelTagVideo,u as modelTextLabel,J as modelTextRequired,d as modelTitle,f as modelVideoLabel,Lr as moreResources,Cp as multiKeyActive,Ap as multiKeyHint,mo as negativePlaceholder,Zr as networkError,Vi as noAffected,Di as noEditableArtifact,qp as noEditableText,hn as noTasks,co as notSelected,_r as onlineDemo,po as optional,Wp as originalContent,ic as pStepAudio,nc as pStepBuildScenes,cc as pStepConcat,ac as pStepSubtitle,sc as pStepVideoGen,na as paraUnit,ps as paragraphCount,Oi as paramResolution,Ui as paramUpdates,qi as paramVoice,xs as pausePoints,Ks as pausePointsHint,Wa as poemHint,Oa as poemLabel,qa as poemPlaceholder,Ua as poetrySettings,oc as poetrySubtitleFixed,nn as posBottom,sn as posTop,Ji as ppCollapse,ji as ppExpand,Yi as ppStages,Xi as ppWaiting,Yd as presetCat_animation,Wd as presetCat_cinematic,Jd as presetCat_custom,jd as presetCat_fantasy,zd as presetCat_oriental,Qd as presetCat_painting,om as presetCat_photographic,Vd as presetDeleteConfirm,Bd as presetDeleteFailed,Gd as presetDeleted,_d as presetNamePlaceholder,Od as presetNameUntitled,um as presetName_anime_retro,mm as presetName_anime_vivid,am as presetName_blockbuster,gm as presetName_cyberpunk,nm as presetName_docu_real,tm as presetName_dreamscape,fm as presetName_epic_fantasy,Xd as presetName_film_noir,sm as presetName_golden_hour,pm as presetName_guofeng,Zd as presetName_ink_wash,cm as presetName_moody_drama,lm as presetName_oil_classic,em as presetName_pixel_art,dm as presetName_storybook,im as presetName_studio_portrait,$d as presetName_watercolor,rm as presetName_wuxia,qd as presetNoPresets,Nd as presetOpen,Ld as presetSaveAs,Kd as presetSaveFailed,Fd as presetSaveName,xd as presetSaved,Ed as presetSelectHint,Ud as presetSystemReadonly,Qo as previewFailed,Wo as previewPlay,zo as previewStop,jl as privacyTitle,An as progress,Qi as progressBack,Fr as projectHome,Qt as promptLabel,Yt as promptPlaceholder,Ur as promptTips,Ie as providerAddBtn,Me as providerAddTitle,Re as providerAgnesTitle,pe as providerApiAnthropic,qe as providerApiKeyEditHint,Oe as providerApiKeyEditPlaceholder,Ve as providerApiKeyLabel,Ue as providerApiKeyPlaceholder,We as providerApiKeyRequired,xe as providerApiLabel,re as providerApiOpenai,Ke as providerBaseUrlLabel,Ge as providerBaseUrlPlaceholder,Be as providerBaseUrlRequired,ie as providerBuiltin,ce as providerBuiltinAgnes,ae as providerBuiltinHint,ne as providerCount,se as providerCurrent,Ze as providerDeleteConfirm,$e as providerDeleteFailed,Xe as providerDeleted,Ae as providerEditLabel,Te as providerEditReadonly,ke as providerEditTitle,we as providerExistingEmpty,De as providerExistingTitle,ze as providerFetchModels,Qe as providerFetching,oe as providerHint,le as providerInUse,ye as providerIntroAmdEndpoint,ve as providerIntroAmdEntry,be as providerIntroAmdModels,Pe as providerIntroAmdNote,fe as providerIntroFree,ge as providerIntroGuide,he as providerIntroMedia,Ce as providerIntroMediaRecommend,Se as providerIntroText,ue as providerIntroTitle,me as providerManageHint,de as providerManageTitle,Ne as providerManualModelsLabel,Ee as providerManualModelsPlaceholder,tt as providerModelFetchFailed,et as providerModelFetched,Ye as providerModelListHint,Le as providerNameLabel,Fe as providerNamePlaceholder,_e as providerNameRequired,He as providerNoModels,Je as providerSaveFailed,je as providerSaved,ee as providerTextHint,te as providerTitle,Vr as quickLinks,zr as rateFast,Ko as rateNormal,Qr as ratePoem,Wr as rateSlow,Na as reconnecting,Ro as refDescription,gc as refImageHint,so as refImageSimple,ko as referenceImage,op as refresh,Li as regenCurrent,kp as removeKeyBtn,Rp as removeKeyConfirm,Tp as removedKey,yo as requirementDefault,oo as resLandscape,Yr as resLandscapeHD,Jr as resLandscapeWide,to as resPortrait,Tc as resPortraitHD,jr as resPortraitTall,no as resSquare,eo as resolution,ol as resumeTaskBtn,Aa as resumed,zp as resuming,Rn as sStepSubmit,Tn as sStepVideoGen,a as save,Zn as sceneConfig,Jn as sceneCount,tc as sceneCountAuto,Ja as scenePromptTool,Za as scenePromptToolHint,ja as scenePromptsExample,Ya as scenePromptsHint,za as scenePromptsOptional,Qa as scenePromptsPlaceholder,Mp as sceneRefDesc,Ip as sceneReferenceImages,oa as sceneUnit,wo as scene_,kc as scriptText,Rc as scriptTextPlaceholder,Bo as searchVoice,cs as seconds,lo as seedPlaceholder,Go as selectVoice,Ci as selfEditAffected,Fi as selfEditAffectedHint,Ai as selfEditDone,Pi as selfEditPath,hi as selfEditSchemaHint,Xa as showPrompt,Bt as simpleGenerate,Ut as simpleGenerated,Vt as simpleGenerating,Lt as simpleIdea,Ft as simpleIdeaPlaceholder,_t as simplePreview,xt as simplePreviewing,Ot as simpleScenePrompt,qt as simpleSceneVoiceover,Kt as simpleScenes,Gt as simpleSetting,Nt as simpleSettings,Et as simpleTitle,es as sourceManual,os as sourceManualHint,ts as sourcePrompt,ns as sourcePromptHint,xo as speechRate,vn as startGenerate,zi as statusAwaitingUser,ls as statusCompleted,ms as statusFailed,tl as statusNeedsResume,us as statusPending,gs as statusQueued,ds as statusRunning,ra as stopConfirm,pa as stopConfirmById,kn as stopTask,la as stopped,da as stoppedById,ha as stopping,bo as styleDefault,rn as subBgColor,en as subColor,$o as subFont,Ht as subModeImage,Dt as subModeLabel,wt as subModeVideo,on as subPosition,Mc as subPositionHints,Ic as subPositionHintsPlaceholder,tn as subSize,an as subStrokeColor,cn as subStrokeWidth,ln as subStyleFixed,mn as subStyleHints,un as subStyleHintsHint,ip as subStyleHintsPlaceholder,dn as subStyleLLM,pn as subStyleMode,Ca as submitted,yn as submitting,e as subtitle,Eo as subtitleConfig,Zo as subtitleStyle,js as switchToAuto,Xs as switchToAutoConfirm,Js as switchToManual,Zs as switchToManualConfirm,Uc as systemPrompt,Oc as systemPromptPlaceholder,yt as tabCreate,Ad as tabGallery,bt as tabList,ht as tabNewBadge,Pt as tabSimple,zn as taskComplete,Qn as taskId,hs as taskInfo,uo as taskName,go as taskNamePlaceholder,nl as taskNotRunning,sl as taskNotRunningHint,bn as taskRunning,Sa as taskRunningWarn,mr as taskStarting,Ra as task_,Rs as tiAnchorPrompt,Ls as tiAudioSource,Ns as tiChaining,_s as tiDuration,Ds as tiHeight,Cs as tiIdea,As as tiManuscript,Fs as tiMode,Hs as tiParagraphs,Ts as tiPoem,Ms as tiPrompt,ws as tiScenes,ks as tiScript,Es as tiStyle,Is as tiWidth,ec as totalDuration,Ea as ttAnchor,Mt as ttCreative,pc as ttImage,It as ttManuscript,Va as ttPoetry,Tt as ttSimple,Dc as typeAnchor,ia as typeCreative,ca as typeImage,aa as typeManuscript,sp as typePoetry,sa as typeSimple,is as uniformDuration,xr as usageGuide,Wn as videoComplete,vo as visualStyle,V as vm720pHint,y as vmColCapability,h as vmColDuration,P as vmColMode,A as vmColNegative,b as vmColPrice,k as vmColRefVideo,C as vmColResolution,v as vmDiffTitle,w as vmModelDurationsLabel,D as vmModelModesLabel,N as vmModelNegativeLabel,F as vmModelNegativeUnsupported,E as vmModelRefImagesLabel,L as vmModelRefVideoLabel,H as vmModelResLabel,S as vmModelSelect,G as vmNegativeDisabledPlaceholder,I as vmNo,B as vmRatioHint,_ as vmRatioLabel,K as vmRefImagesHint,x as vmSizeLabel,T as vmTagFree,R as vmTagPaid,M as vmYes,Yo as voiceCompatWarning,Xr as voiceDefaultDesc,Xo as voiceEmpty,jo as voiceGenderFemale,Jo as voiceGenderMale,_o as voiceRole,Cr as waitTip,ka as watchLog,Rt as watermarkDisabled,kt as watermarkEnabled,At as watermarkPromo,Ct as watermarkTitle,cr as willDelete,rr as willResetSteps,rt as workspaceActivate,st as workspaceActive,lt as workspaceActiveBadge,it as workspaceAdd,mt as workspaceBrowse,dt as workspaceCurrentActive,ut as workspaceDefault,ft as workspaceListHint,gt as workspaceListTitle,ct as workspaceNamePlaceholder,nt as workspaceNone,at as workspacePathPlaceholder,St as workspaceRegressionHint,pt as workspaceRemove,vt as workspaceRemoveConfirm,ot as workspaceTitle};
|