free-short-video 6.5.1 → 6.5.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/README.md +7 -6
- package/core/config.py +1 -1
- package/core/gallery_cache.py +60 -0
- package/core/presets.py +159 -0
- package/package.json +1 -1
- package/resource/presets/styles.json +92 -0
- package/server.py +4 -0
- package/static/assets/ar-CvuF8gFF.js +1 -0
- package/static/assets/bn-CWLD7QCi.js +1 -0
- package/static/assets/de-DOVh35jv.js +1 -0
- package/static/assets/es-CLzRtmI7.js +1 -0
- package/static/assets/fa-DNTSi8NJ.js +1 -0
- package/static/assets/fr-BpUCsjaC.js +1 -0
- package/static/assets/hi-Bkg-ypdW.js +1 -0
- package/static/assets/id-CJjRdrXY.js +1 -0
- package/static/assets/index-CgXb4MrZ.css +1 -0
- package/static/assets/index-Dn7-Q6vG.js +45 -0
- package/static/assets/it-CyVEADj1.js +1 -0
- package/static/assets/ja-yWWPg0BT.js +1 -0
- package/static/assets/ko-BbbGMI2i.js +1 -0
- package/static/assets/ms-CJ1UCmU_.js +1 -0
- package/static/assets/nl-7OqowihO.js +1 -0
- package/static/assets/pt-C8Z7vWM8.js +1 -0
- package/static/assets/ru-BJpeOLhl.js +1 -0
- package/static/assets/th-BOYCdRJN.js +1 -0
- package/static/assets/tl-DzOYHZWC.js +1 -0
- package/static/assets/tr-IYge5J2a.js +1 -0
- package/static/assets/ur-C24aPBX9.js +1 -0
- package/static/assets/vi-BfnnHjVU.js +1 -0
- package/static/index.html +2 -2
- package/web/routes/gallery_routes.py +167 -0
- package/web/routes/preset_routes.py +65 -0
- package/static/assets/ar-KHCrxRA_.js +0 -1
- package/static/assets/bn-Cdg9UtGd.js +0 -1
- package/static/assets/de-DpVpIIzl.js +0 -1
- package/static/assets/es-CbqgNYrf.js +0 -1
- package/static/assets/fa-eXTzpP2j.js +0 -1
- package/static/assets/fr-SR1IWdla.js +0 -1
- package/static/assets/hi-DrHcqlna.js +0 -1
- package/static/assets/id-DkV63qNl.js +0 -1
- package/static/assets/index-CGsvTiYV.css +0 -1
- package/static/assets/index-CL0ZNqqM.js +0 -45
- package/static/assets/it-Tos-zjmh.js +0 -1
- package/static/assets/ja-CbiPQ4QC.js +0 -1
- package/static/assets/ko-BO0zBA93.js +0 -1
- package/static/assets/ms-DnDGKrps.js +0 -1
- package/static/assets/nl-DaVWNF5X.js +0 -1
- package/static/assets/pt-BDbdLcbe.js +0 -1
- package/static/assets/ru-CuVlJkcC.js +0 -1
- package/static/assets/th-B_U6YxGQ.js +0 -1
- package/static/assets/tl-Dzn1t6Fh.js +0 -1
- package/static/assets/tr-DBSQCQnY.js +0 -1
- package/static/assets/ur-BpwQWAf9.js +0 -1
- package/static/assets/vi-CfYDhyzE.js +0 -1
package/README.md
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
---
|
|
2
2
|
|
|
3
|
-
# What's New in v6.5.
|
|
3
|
+
# What's New in v6.5.2
|
|
4
4
|
|
|
5
5
|
## What's New
|
|
6
6
|
|
|
7
7
|
### Features & Improvements
|
|
8
8
|
|
|
9
|
-
* **
|
|
10
|
-
* **
|
|
11
|
-
* **
|
|
9
|
+
* **Style / prompt preset library.** Creative and poetry video forms now offer a style picker beside the style input. It ships with 18 curated, non-overlapping presets across six categories (photographic, cinematic, oriental, painting, animation, fantasy), each structured as medium + lighting + color + texture to compose cleanly with your subject prompt. Clicking a preset fills the style box in one click and you can keep editing it. Saved as a preset is supported too.
|
|
10
|
+
* **One-click preset reuse with controls.** The picker lists your custom presets first, brings recently used presets to the front, shows the full prompt on hover, and lets you save the current style edit as a named custom preset. System presets are read-only; custom presets can be renamed and deleted.
|
|
11
|
+
* **Media gallery (read-only).** A new parallel "Gallery" tab shows finished videos and images in a filterable grid (type × status). Video cards use the native first frame as a cover with hover playback, and images link to the existing media endpoint. Clicking a card opens the task detail. The gallery is strictly read-only — it exposes no delete or batch operations — and reads entirely from the existing task directory, so no new data files are written into task folders.
|
|
12
|
+
* **Lazy thumbnail cache (gallery).** For larger galleries, video covers are extracted to a rebuildable cache under the config directory (never inside task folders) to keep the grid snappy without touching the task directory structure.
|
|
13
|
+
* **Localization.** All preset category names and system-preset display names are translated across all 22 supported interface languages; the English and Chinese key sets are fully aligned.
|
|
12
14
|
|
|
13
15
|
### Bug Fixes
|
|
14
16
|
|
|
15
|
-
*
|
|
16
|
-
* Fixed creative-video task state not reflecting completed scene videos: generated per-scene videos are now written back to the task state, so the task list and resumes show accurate scene status instead of stuck "pending" values.
|
|
17
|
+
* Creative and poetry forms no longer pre-fill the style field with hardcoded Chinese text on non-Chinese interfaces; an empty value is now a valid choice, matching the backend default.
|
|
17
18
|
|
|
18
19
|
---
|
|
19
20
|
|
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 = "6.5.
|
|
21
|
+
APP_VERSION = "6.5.2"
|
|
22
22
|
|
|
23
23
|
# 未配置 API Key 时的统一报错文案(含免费获取与在线体验兜底,全站路由共用)
|
|
24
24
|
API_KEY_MISSING_MSG = (
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"""core/gallery_cache.py — 产物画廊缩略图缓存(P1 v1.x,可选增强)。
|
|
2
|
+
|
|
3
|
+
缩略图放**独立缓存目录** ``.agnes_config/gallery_cache/``,**不在任务目录内,
|
|
4
|
+
不破坏任务目录结构**。惰性生成:首次访问时对未缓存的成片用 ffmpeg 抽单帧,
|
|
5
|
+
缓存后复用。该目录属可重建 Cache,而非任务产物;画廊仍**纯只读**,不触碰删除。
|
|
6
|
+
"""
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
import logging
|
|
10
|
+
import os
|
|
11
|
+
import subprocess
|
|
12
|
+
|
|
13
|
+
from core.compositor.ffmpeg_tool import resolve_binary
|
|
14
|
+
from core.config import CONFIG_DIR
|
|
15
|
+
|
|
16
|
+
logger = logging.getLogger(__name__)
|
|
17
|
+
|
|
18
|
+
_THUMB_DIR = os.path.join(CONFIG_DIR, "gallery_cache")
|
|
19
|
+
_THUMB_EXT = ".jpg"
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def _thumb_path(task_id: str) -> str:
|
|
23
|
+
return os.path.join(_THUMB_DIR, task_id + _THUMB_EXT)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def has_thumb(task_id: str) -> bool:
|
|
27
|
+
return os.path.isfile(_thumb_path(task_id))
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def ensure_thumb(task_id: str, final_video_file: str) -> str | None:
|
|
31
|
+
"""确保指定视频成片的缩略图存在,缺失时惰性抽帧生成。
|
|
32
|
+
|
|
33
|
+
Args:
|
|
34
|
+
task_id: 任务 id(用作缓存文件名,天然唯一)。
|
|
35
|
+
final_video_file: 成片绝对路径。
|
|
36
|
+
|
|
37
|
+
Returns:
|
|
38
|
+
缩略图路径;若成片不存在或抽帧失败返回 None(前端回退原生首帧)。
|
|
39
|
+
"""
|
|
40
|
+
out = _thumb_path(task_id)
|
|
41
|
+
if os.path.isfile(out):
|
|
42
|
+
return out
|
|
43
|
+
if not final_video_file or not os.path.isfile(final_video_file):
|
|
44
|
+
return None
|
|
45
|
+
try:
|
|
46
|
+
os.makedirs(_THUMB_DIR, exist_ok=True)
|
|
47
|
+
# 抽成片 1s 处一帧作封面,宽高限制到 480p 以控制体积
|
|
48
|
+
subprocess.run([
|
|
49
|
+
resolve_binary("ffmpeg"), "-y",
|
|
50
|
+
"-ss", "1",
|
|
51
|
+
"-i", final_video_file,
|
|
52
|
+
"-frames:v", "1",
|
|
53
|
+
"-vf", "scale=480:-2",
|
|
54
|
+
"-q:v", "4",
|
|
55
|
+
out,
|
|
56
|
+
], stdin=subprocess.DEVNULL, capture_output=True, check=True, timeout=30)
|
|
57
|
+
return out
|
|
58
|
+
except Exception as e:
|
|
59
|
+
logger.warning("[GalleryCache] Failed to build thumbnail for %s: %s", task_id, e)
|
|
60
|
+
return None
|
package/core/presets.py
ADDED
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"""core/presets.py — 风格/提示词预设库(P0-1)。
|
|
2
|
+
|
|
3
|
+
数据来源分两层:
|
|
4
|
+
- **系统预设**(只读):`resource/presets/styles.json`,只存 id + category + prompt;
|
|
5
|
+
名称/分类文案走前端 i18n(避免 JSON 内联 22 语言)。
|
|
6
|
+
- **用户预设**(可读写):持久化到 `.agnes_config/presets.json`,name 用户自填,
|
|
7
|
+
不参与翻译,category 固定为 ``custom``。
|
|
8
|
+
|
|
9
|
+
纯函数、无后端依赖;复用 ``core.config.CONFIG_DIR`` 与原子写约定,不引入数据库,
|
|
10
|
+
不新增任务内实体文件。
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
import json
|
|
14
|
+
import logging
|
|
15
|
+
import os
|
|
16
|
+
import uuid
|
|
17
|
+
from datetime import datetime
|
|
18
|
+
|
|
19
|
+
from core.config import _PROJECT_ROOT, CONFIG_DIR
|
|
20
|
+
|
|
21
|
+
logger = logging.getLogger(__name__)
|
|
22
|
+
|
|
23
|
+
# 系统预设源文件(随项目分发,只读)
|
|
24
|
+
_SYSTEM_PRESETS_PATH = os.path.join(_PROJECT_ROOT, "resource", "presets", "styles.json")
|
|
25
|
+
# 用户预设持久化文件(与 config.json 同级)
|
|
26
|
+
_USER_PRESETS_PATH = os.path.join(CONFIG_DIR, "presets.json")
|
|
27
|
+
|
|
28
|
+
# 用户自定义预设的固定分类
|
|
29
|
+
USER_CATEGORY = "custom"
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def load_system_presets() -> list[dict]:
|
|
33
|
+
"""读取系统预设,失败(缺失/损坏)时返回空列表。
|
|
34
|
+
|
|
35
|
+
Returns:
|
|
36
|
+
``[{"id": str, "category": str, "prompt": str}, ...]``
|
|
37
|
+
"""
|
|
38
|
+
try:
|
|
39
|
+
with open(_SYSTEM_PRESETS_PATH, "r", encoding="utf-8") as f:
|
|
40
|
+
data = json.load(f)
|
|
41
|
+
if not isinstance(data, list):
|
|
42
|
+
return []
|
|
43
|
+
out = []
|
|
44
|
+
for item in data:
|
|
45
|
+
if not isinstance(item, dict):
|
|
46
|
+
continue
|
|
47
|
+
preset = {
|
|
48
|
+
"id": str(item.get("id", "")),
|
|
49
|
+
"category": str(item.get("category", "")),
|
|
50
|
+
"prompt": str(item.get("prompt", "")),
|
|
51
|
+
}
|
|
52
|
+
if preset["id"]:
|
|
53
|
+
out.append(preset)
|
|
54
|
+
return out
|
|
55
|
+
except Exception as e:
|
|
56
|
+
logger.warning("[Presets] Failed to load system presets: %s", e)
|
|
57
|
+
return []
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def _load_user_raw() -> list[dict]:
|
|
61
|
+
"""读取用户预设列表(未校验),损坏/缺失时返回 []。"""
|
|
62
|
+
if not os.path.exists(_USER_PRESETS_PATH):
|
|
63
|
+
return []
|
|
64
|
+
try:
|
|
65
|
+
with open(_USER_PRESETS_PATH, "r", encoding="utf-8") as f:
|
|
66
|
+
data = json.load(f)
|
|
67
|
+
return data if isinstance(data, list) else []
|
|
68
|
+
except Exception as e:
|
|
69
|
+
logger.warning("[Presets] Failed to load user presets: %s", e)
|
|
70
|
+
return []
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def load_user_presets() -> list[dict]:
|
|
74
|
+
"""读取用户预设(结构化过滤)。
|
|
75
|
+
|
|
76
|
+
Returns:
|
|
77
|
+
``[{"id", "name", "category": "custom", "prompt", "created_at"}, ...]``
|
|
78
|
+
"""
|
|
79
|
+
return [
|
|
80
|
+
{
|
|
81
|
+
"id": str(p.get("id", "")),
|
|
82
|
+
"name": str(p.get("name", "未命名")),
|
|
83
|
+
"category": USER_CATEGORY,
|
|
84
|
+
"prompt": str(p.get("prompt", "")),
|
|
85
|
+
"created_at": str(p.get("created_at", "")),
|
|
86
|
+
}
|
|
87
|
+
for p in _load_user_raw()
|
|
88
|
+
if isinstance(p, dict) and p.get("id")
|
|
89
|
+
]
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def _save_user_raw(items: list[dict]):
|
|
93
|
+
"""原子写用户预设到 .agnes_config/presets.json。"""
|
|
94
|
+
os.makedirs(CONFIG_DIR, exist_ok=True)
|
|
95
|
+
tmp_path = _USER_PRESETS_PATH + ".tmp"
|
|
96
|
+
with open(tmp_path, "w", encoding="utf-8") as f:
|
|
97
|
+
json.dump(items, f, indent=2, ensure_ascii=False)
|
|
98
|
+
os.replace(tmp_path, _USER_PRESETS_PATH)
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
def create_user_preset(name: str, prompt: str) -> dict:
|
|
102
|
+
"""新增一条用户预设。
|
|
103
|
+
|
|
104
|
+
Args:
|
|
105
|
+
name: 用户自填名称(可重复,原样保存)。
|
|
106
|
+
prompt: 预设 prompt 本体。
|
|
107
|
+
|
|
108
|
+
Returns:
|
|
109
|
+
新建的预设 dict(含 id / created_at)。
|
|
110
|
+
"""
|
|
111
|
+
preset = {
|
|
112
|
+
"id": "u_" + uuid.uuid4().hex[:10],
|
|
113
|
+
"name": name.strip() or "未命名",
|
|
114
|
+
"category": USER_CATEGORY,
|
|
115
|
+
"prompt": prompt.strip(),
|
|
116
|
+
"created_at": datetime.now().isoformat(timespec="seconds"),
|
|
117
|
+
}
|
|
118
|
+
items = _load_user_raw()
|
|
119
|
+
items.append(preset)
|
|
120
|
+
_save_user_raw(items)
|
|
121
|
+
return preset
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
def delete_user_preset(preset_id: str) -> bool:
|
|
125
|
+
"""删除一条用户预设。
|
|
126
|
+
|
|
127
|
+
Args:
|
|
128
|
+
preset_id: 用户预设 id。
|
|
129
|
+
|
|
130
|
+
Returns:
|
|
131
|
+
True 删除成功;False 未找到该用户预设。
|
|
132
|
+
"""
|
|
133
|
+
items = _load_user_raw()
|
|
134
|
+
kept = [p for p in items if str(p.get("id", "")) != preset_id]
|
|
135
|
+
if len(kept) == len(items):
|
|
136
|
+
return False
|
|
137
|
+
_save_user_raw(kept)
|
|
138
|
+
return True
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
def is_system_preset(preset_id: str) -> bool:
|
|
142
|
+
"""判断 preset_id 是否为系统预设(系统预设只读,不可删)。"""
|
|
143
|
+
return any(p["id"] == preset_id for p in load_system_presets())
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
def get_system_preset_ids() -> set[str]:
|
|
147
|
+
"""返回系统预设 id 集合(供删除校验用)。"""
|
|
148
|
+
return {p["id"] for p in load_system_presets()}
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
def grouped_presets() -> tuple[list[dict], list[dict]]:
|
|
152
|
+
"""返回 (系统预设按分类分组, 用户预设平面列表)。
|
|
153
|
+
|
|
154
|
+
系统分组用于前端「按分类下拉」;用户预设作为独立 ``custom`` 分组追加。
|
|
155
|
+
此组合避免在本模块内重复实现分类聚合逻辑。
|
|
156
|
+
"""
|
|
157
|
+
system = load_system_presets()
|
|
158
|
+
user = load_user_presets()
|
|
159
|
+
return system, user
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "free-short-video",
|
|
3
|
-
"version": "6.5.
|
|
3
|
+
"version": "6.5.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,92 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "docu_real",
|
|
4
|
+
"category": "photographic",
|
|
5
|
+
"prompt": "documentary photography, natural available light, authentic candid framing, photojournalistic realism, subdued natural color grade, fine film grain"
|
|
6
|
+
},
|
|
7
|
+
{
|
|
8
|
+
"id": "golden_hour",
|
|
9
|
+
"category": "photographic",
|
|
10
|
+
"prompt": "golden hour photography, warm low-angle sunlight, long soft shadows, warm color temperature, subtle lens flare, realistic texture, nostalgic feel"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"id": "studio_portrait",
|
|
14
|
+
"category": "photographic",
|
|
15
|
+
"prompt": "professional studio portrait, three-point soft lighting, clean gradient background, catchlight in eyes, sharp focus, 85mm shallow depth of field, smooth natural skin"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"id": "blockbuster",
|
|
19
|
+
"category": "cinematic",
|
|
20
|
+
"prompt": "epic cinematic look, anamorphic lens flare, shallow depth of field, dramatic lighting, teal-and-orange color grading, high contrast, Hollywood blockbuster feel"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"id": "film_noir",
|
|
24
|
+
"category": "cinematic",
|
|
25
|
+
"prompt": "film noir, high-contrast black and white, deep shadows, dramatic harsh lighting, venetian blind patterns, moody 1940s atmosphere, film grain"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": "moody_drama",
|
|
29
|
+
"category": "cinematic",
|
|
30
|
+
"prompt": "moody dramatic cinematic, low-key lighting, volumetric atmosphere, desaturated muted palette, intimate film aesthetics, shallow depth of field"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "ink_wash",
|
|
34
|
+
"category": "oriental",
|
|
35
|
+
"prompt": "traditional Chinese ink wash painting, rice paper texture, flowing brushstrokes, sparse composition, muted ink tones, elegant minimalism"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"id": "wuxia",
|
|
39
|
+
"category": "oriental",
|
|
40
|
+
"prompt": "Chinese sword-fantasy cinema style, dramatic rim lighting, flowing silk robes, ethereal mist, epic heroic composition, cinematic color grade"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"id": "guofeng",
|
|
44
|
+
"category": "oriental",
|
|
45
|
+
"prompt": "refined Chinese classical art style, delicate intricate detail, elegant muted palette, balanced negative space, graceful cultural aesthetic"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"id": "watercolor",
|
|
49
|
+
"category": "painting",
|
|
50
|
+
"prompt": "soft watercolor painting, delicate washes, visible paper grain, fluid color blending, dreamy atmospheric mood, painterly texture"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"id": "oil_classic",
|
|
54
|
+
"category": "painting",
|
|
55
|
+
"prompt": "classic oil painting, rich impasto brushstrokes, warm museum lighting, textured canvas, fine art masterpiece quality"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"id": "storybook",
|
|
59
|
+
"category": "painting",
|
|
60
|
+
"prompt": "children's storybook illustration, hand-painted gouache, soft friendly shapes, cheerful pastel colors, whimsical detail, matte finish"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"id": "anime_vivid",
|
|
64
|
+
"category": "animation",
|
|
65
|
+
"prompt": "modern anime illustration, clean lineart, vibrant colors, cel shading, detailed expressive eyes, studio quality, high-key flat lighting, flat shading"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"id": "anime_retro",
|
|
69
|
+
"category": "animation",
|
|
70
|
+
"prompt": "retro anime aesthetic, 1980s hand-painted gouache backgrounds, cel-shaded characters, matte finish, nostalgic warm palette, flat shading"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"id": "pixel_art",
|
|
74
|
+
"category": "animation",
|
|
75
|
+
"prompt": "16-bit pixel art, retro game aesthetic, limited color palette, crisp blocky pixels, nostalgic mood, clean grid composition"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"id": "cyberpunk",
|
|
79
|
+
"category": "fantasy",
|
|
80
|
+
"prompt": "neon cyberpunk, futuristic cityscape, holographic glow, wet reflective surfaces, high contrast, night scene, anamorphic lens flare"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"id": "dreamscape",
|
|
84
|
+
"category": "fantasy",
|
|
85
|
+
"prompt": "surreal dreamlike scene, ethereal soft glow, soft focus, pastel tones, floating elements, otherworldly atmosphere"
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"id": "epic_fantasy",
|
|
89
|
+
"category": "fantasy",
|
|
90
|
+
"prompt": "epic high-fantasy concept art, dramatic volumetric lighting, vast scale, rich detailed environment, cinematic color grade, awe-inspiring composition"
|
|
91
|
+
}
|
|
92
|
+
]
|
package/server.py
CHANGED
|
@@ -31,8 +31,10 @@ from web import app_state # noqa: F401 兼容 re-export:旧代码 from server
|
|
|
31
31
|
from web.app_state import init_runtime_state
|
|
32
32
|
from web.routes import (
|
|
33
33
|
config_routes,
|
|
34
|
+
gallery_routes,
|
|
34
35
|
health_routes,
|
|
35
36
|
image_routes,
|
|
37
|
+
preset_routes,
|
|
36
38
|
preview_routes,
|
|
37
39
|
task_creation_routes,
|
|
38
40
|
task_routes,
|
|
@@ -204,9 +206,11 @@ app.include_router(health_routes.router)
|
|
|
204
206
|
app.include_router(config_routes.router)
|
|
205
207
|
app.include_router(workspace_routes.router)
|
|
206
208
|
app.include_router(voice_routes.router)
|
|
209
|
+
app.include_router(preset_routes.router)
|
|
207
210
|
app.include_router(image_routes.router)
|
|
208
211
|
app.include_router(video_routes.router)
|
|
209
212
|
app.include_router(task_routes.router)
|
|
213
|
+
app.include_router(gallery_routes.router)
|
|
210
214
|
app.include_router(task_creation_routes.router)
|
|
211
215
|
app.include_router(preview_routes.router)
|
|
212
216
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e="فيديو بالذكاء الاصطناعي، بضغطة واحدة",t="إعداد مفتاح API",o="غير مهيأ",n="مهيأ",s="أدخل مفتاح Agnes API الخاص بك (احصل عليه مجانًا من platform.agnes-ai.com)",a="مهيأ (●●●)",c="حفظ",i="مسح",r="هل أنت متأكد من مسح مفتاح API المهيأ",l="مهيأ (متغير بيئة)",p="تم تعيين مفتاح API عبر متغير البيئة AGNES_API_KEY ولا يمكن مسحه من الواجهة. أزل متغير البيئة ثم أعد المحاولة.",d="اختيار النموذج",m="اختر نماذج Agnes للنص والصور والفيديو المستخدمة في التوليد.",u="نموذج النص / المحادثة",f="نموذج الصور",g="نموذج الفيديو",S="Video model",y="Video model capabilities",b="Capability",P="Price",v="Modes",C="Duration",h="Resolution",k="Negative prompt",R="Ref. video",T="Paid",A="Free",w="Yes",D="No",M="Modes",N="Durations",H="Resolution",I="Negative prompt",L="Ref images",F="Ref. video",E="Negative prompt is not supported by this model",_="Aspect ratio",x="Quality",K="Up to",G="Negative prompt not supported by this model",V="short edge px",B="720P = short edge 720px; output size scales with ratio",U="تحديث القائمة",O="غير متزامن",W="تم الحفظ",q="agnes-2.5-flash قيد الإصدار التجريبي: يتطلب مفتاح API مع صلاحية تجريبية، وإلا ستفشل الاستدعاءات.",z=" (تجريبي)",Q="نص",Y="صورة",j="فيديو",J="نموذج النص لا يمكن أن يكون فارغًا",X="فشل الجلب",Z="فشل الحفظ",$="دليل العمل",ee="غير محدد",te="نشط",oe="إضافة",ne='انقر على "تصفح" على اليمين لاختيار الدليل',se="الاسم (اختياري)",ae="تفعيل",ce="إزالة",ie="الحالي",re="مساحة العمل النشطة",le="تصفح…",pe="افتراضي",de="كل المساحات",me='انقر على "تفعيل" لتبديل دليل العمل الحالي',ue="هذه مساحة اختبار الانحدار، مقفلة بواسطة متغير البيئة ولا يمكن تعديلها من الواجهة.",fe="إزالة هذا الدليل من القائمة (لن يتم حذف الملفات من القرص)",ge="مهمة جديدة",Se="قائمة المهام",ye="⚡ إنشاء بنقرة واحدة",be="جديد",Pe="علامة مائية للفيديو",ve="أضف علامة Agnes Video Generator المائية لمساعدة المزيد من المبدعين على اكتشاف هذه الأداة",Ce="تم تفعيل العلامة المائية",he="تم تعطيل العلامة المائية",ke="صورة وفيديو",Re="فيديو إبداعي",Te="فيديو مقال",Ae="النوع",we="🎬 فيديو",De="🖼️ صورة",Me="إعدادات الفيديو البسيط",Ne="简易模式",He="创作主题",Ie="输入一个创作主题,AI 将自动生成分镜脚本与旁白,例如:太空探险故事",Le="生成预览",Fe="正在生成预览…(约消耗 3 次 LLM 调用)",Ee="分镜预览",_e="生成设置",xe="一键生成",Ke="正在生成视频…",Ge="视频生成任务已提交,可到任务列表查看进度",Ve="画面",Be="旁白",Ue="الإعدادات الإبداعية",Oe="إعدادات المقال",We="وصف الفيديو",qe="قطة برتقالية تغفو على عتبة النافذة بعد المطر، ضوء الشمس يتسلل عبر الزجاج، الستارة تتحرك مع النسيم، 4K واقعي",ze="وضع التوليد",Qe="نص إلى فيديو",Ye="صورة إلى فيديو",je="إطارات مفتاحية",Je="المدة",Xe="الدقة",Ze="عمودي 9:16",$e="أفقي 16:9",et="مربع 1:1",tt="صورة مرجعية",ot="صورة الإطار الأخير",nt="اختيار صورة",st="لم يتم الاختيار",at="إعدادات متقدمة",ct="اختياري",it="اتركه فارغًا لعشوائية",rt="العناصر المطلوب استبعادها",lt="اسم المهمة",pt="اختياري، يولّد تلقائيًا إذا تركت فارغًا",dt="وصف الفكرة",mt="روبوت يسقي زهرة صغيرة في مدينة مهجورة، 3 مشاهد: اكتشاف الشتلة، إحضار الماء، تفتح الزهرة",ut="النمط البصري",ft="3 مشاهد، كل مشهد 5 ثوانٍ، جودة سينمائية",gt="أسلوب واقعي سينمائي",St="وضع التتابع",yt="keyframes (موصى به)",bt="ti2vid (انتقال)",Pt="none (مستقل)",vt="صورة مرجعية (اختياري)",Ct="اختياري. إذا قدمتها، ستستخدمها جميع المشاهد كمرساة بصرية؛ وإلا ستولّد تلقائيًا من القصة.",ht="إطارات نهاية مخصصة",kt="تفعيل",Rt="توليد من المرجع (i2i)",Tt="إطار نهاية واحد لكل مشهد، بالترتيب.",At="مشهد",wt="+ إضافة إطار نهاية",Dt="إعدادات الصوت",Mt="إعدادات الترجمة",Nt="التعليق الصوتي",Ht="الترجمة",It="الصوت",Lt="السرعة",Ft="عادي",Et="اختيار الصوت",_t="ابحث عن اسم الصوت أو الأسلوب...",xt="الحالي",Kt="تأكيد",Gt="إلغاء",Vt="تأكيد",Bt="معاينة",Ut="إيقاف",Ot="فشلت المعاينة، قد لا يدعم هذا الصوت هذه اللغة",Wt="قد لا يكون هذا الصوت متوافقًا مع اللغة الحالية. هل تريد استخدامه",qt="أنثى",zt="ذكر",Qt="لا توجد أصوات مطابقة",Yt="نمط الترجمة",jt="الخط",Jt="اللون",Xt="الحجم",Zt="الموضع",$t="أسفل",eo="أعلى",to="لون الحدود",oo="سماكة الحدود",no="لون الخلفية",so="وضع النمط",ao="ثابت",co="ذكاء اصطناعي",io="تفضيلات النمط",ro="صف كيف يجب أن تتغير الموضع واللون والحجم للترجمة. سيخصص الذكاء الاصطناعي نمطًا لكل ترجمة.",lo="نص المقال",po="الصق مقالك أو بيانك الصحفي أو تدوينتك. مثال: مقدمة منتج من 500 كلمة أو مقال سفر — سيقسم النظام تلقائيًا إلى مشاهد",mo="حرف",uo="بدء التوليد",fo="جارٍ الإرسال...",go="المهمة قيد التنفيذ...",So="جارٍ التحميل...",yo="لا توجد مهام",bo="فشل التحميل",Po="التقدم",vo="إيقاف المهمة",Co="إرسال",ho="توليد الفيديو",ko="تهيئة",Ro="إعداد المشاهد",To="تحليل الصور",Ao="القصة",wo="مرجع الشخصية",Do="السيناريو",Mo="أوامر الإطار الأخير",No="توليد الإطار الأخير",Ho="توليد الفيديو",Io="الصوت",Lo="الترجمة",Fo="الدمج",Eo="تقسيم النص",_o="أوامر المشاهد",xo="توليد الفيديو",Ko="الصوت",Go="الترجمة",Vo="الدمج",Bo="اكتمل توليد الفيديو!",Uo="اكتملت المهمة",Oo="معرف المهمة",Wo="الدليل",qo="الفكرة",zo="عدد المشاهد",Qo="التتابع",Yo="إعداد المشاهد",jo="مصدر معلومات المشاهد",Jo="يدوي",Xo="استخراج من الفكرة",Zo="حدد عدد المشاهد ومدتها يدويًا",$o="سيحلل الذكاء الاصطناعي عدد المشاهد ومدتها من الفكرة",en="مدة المشاهد",tn="موحد",on="مستقل",nn="ثانية",sn="الناتج",an="فقرات",cn="مكتمل",rn="قيد التنفيذ",ln="فشل",pn="قيد الانتظار",dn="في الطابور",mn="تحليل الصور",un="القصة",fn="السيناريو",gn="مرجع الشخصية",Sn="مطالبات الإطار النهائي",yn="الإطارات النهائية",bn="معلومات المهمة",Pn="الفكرة",vn="نص المخطوطة",Cn="نص التقديم",hn="وصف المذيع",kn="نص القصيدة",Rn="المطالبة",Tn="العرض",An="الارتفاع",wn="عدد المشاهد",Dn="عدد الفقرات",Mn="وضع التسلسل",Nn="النمط",Hn="وضع الصوت",In="الوضع",Ln="المدة",Fn="نقاط الإيقاف",En="اختر نقاط التحقق للتوقف في الوضع اليدوي؛ غير المحددة تُمرَّر تلقائياً",_n="القصة المصورة",xn="الصور المرجعية",Kn="مقاطع الفيديو",Gn="التعليق الصوتي",Vn="الترجمة النصية",Bn="التركيب",Un="هذا النوع من المهام لا يدعم الوضع اليدوي",On="جارٍ تغيير وضع التنفيذ...",Wn="تم تغيير وضع التنفيذ",qn="فشل تغيير الوضع",zn="التبديل إلى تلقائي",Qn="التبديل إلى يدوي",Yn="التبديل إلى الوضع التلقائي سيمسح نقاط الإيقاف وينفذ حتى النهاية. متابعة؟",jn="التبديل إلى الوضع اليدوي سيتوقف عند نقطة التحقق التالية لمراجعتك. متابعة؟",Jn="في انتظارك",Xn="المهمة متوقفة عند نقطة تحقق؛ راجع أو عدّل المخرجات ثم تابع",Zn="نقطة التحقق",$n="تم",es="قيد الانتظار",ts="قيد التشغيل",os="كيفية معالجة نقطة التحقق هذه",ns="تعديل بالذكاء الاصطناعي",ss="صف التغيير؛ سيقوم النظام بتعديل المخرجات تلقائياً",as="تعديل بنفسي",cs="اطلع على المسارات، عدّل الملفات محلياً، ثم أكّد",is="وكيل خارجي",rs="انسخ الأمر والمطالبة، استخدم وكيلاً محلياً، ثم أكّد",ls="🗂️ احفظ سير عملك والـ prompts كـ Skills وأدرها بـ Flint",ps="طلب التعديل",ds="مثال: اجعل سرد المشهد 2 أكثر عامية",ms="بدء التعديل",us="الذكاء الاصطناعي يعدّل...",fs="نتيجة التعديل",gs="تطبيق وتأكيد",Ss="تجاهل",ys="مسار المخرَج",bs="متطلبات التنسيق",Ps="الأثر بعد التعديل",vs="تم التعديل، متابعة",Cs="الأمر",hs="المطالبة",ks="تم، متابعة",Rs="🔗 المزيد من أدوات الذكاء الاصطناعي المجانية",Ts="نسخ",As="لا توجد مخرجات قابلة للتعديل في نقطة التحقق هذه",ws="فشل التعديل بالذكاء الاصطناعي",Ds="فشل المتابعة",Ms="تم التأكيد، جارٍ المتابعة",Ns="فشل إعادة الإنشاء",Hs="إعادة إنشاء",Is="ستُحذف المخرجات المتأثرة وتُعاد إنشاؤها؛ غير المتأثرة تُحتفظ بها",Ls="يرجى مراجعة وتحسين مخرجات نقطة التحقق هذه في دليل المهمة {dir}. أبلغني بالنتيجة عند الانتهاء، وسأضغط «تم التعديل، متابعة» في واجهة الويب.\\\\n\\\\nالمتطلبات:\\\\n1. حافظ على تنسيق المخرجات وبنيتها\\\\n2. عدّل المحتوى الدلالي فقط\\\\n3. أبلغ عن الملفات التي تم تغييرها",Fs="سيُحذف ويُعاد تشغيله",Es="مُحتفظ به، بدون إعادة تشغيل",_s="تأكيد الحذف وإعادة التشغيل",xs="إلغاء",Ks="لا توجد مخرجات متأثرة؛ تابع مباشرة",Gs="معلمات المهمة",Vs="الدقة",Bs="الصوت",Us="cd {dir} && traework\\ncd {dir} && opencode\\n# or another local agent (workbuddy / CodeBuddy CLI, etc.)",Os="Awaiting you",Ws="Back",qs="Stages",zs="Expand",Qs="Collapse",Ys="Waiting",js="عرض",Js="التقدم",Xs="استئناف",Zs="إيقاف",$s=" مشهد",ea=" فقرة",ta="بسيط",oa="إبداعي",na="مقال",sa="صورة",aa="إيقاف المهمة الحالية يمكن استئنافها من قائمة المهام.",ca="إيقاف هذه المهمة يمكن استئنافها لاحقًا.",ia="تم إيقاف المهمة، يمكن استئنافها من القائمة",ra="تم إيقاف المهمة",la="الرجاء إدخال مفتاح API",pa="الرجاء وصف الفيديو",da="الرجاء وصف فكرتك",ma="الرجاء إدخال نص المقال",ua="هناك مهمة قيد التنفيذ أو في الطابور بالفعل",fa="فشل الإنشاء",ga="فشل الاستئناف",Sa="فشل التحميل",ya="فشل الإيقاف",ba="جارٍ الإيقاف...",Pa="تم إرسال المهمة، الرجاء الانتظار",va="تم استئناف المهمة، الرجاء الانتظار",Ca="يرجى مراقبة سجلات وحدة التحكم والانتظار بصبر.",ha="المهمة",ka="فشلت المهمة",Ra="افحص سجلات وحدة التحكم، ثم استأنف من قائمة المهام.",Ta="الانتقال إلى قائمة المهام",Aa="انقطع الاتصال",wa="انقطع الاتصال الفوري مع الخادم. قد لا يزال الخادم يعمل في الخلفية. تحقق من الحالة في قائمة المهام.",Da="الانتقال إلى قائمة المهام",Ma="انقطع الاتصال، جارٍ إعادة المحاولة...",Na="مذيع رقمي",Ha="نطاق Agnes",Ia="اختر نطاق الوصول إلى Agnes API. في الصين يُنصح باستخدام .cn للحصول على اتصال أكثر استقرارًا.",La="دولي",Fa="الصين (موصى به)",Ea="الصين احتياطي (غير مذكور في الوثائق الرسمية، قد يُحذف)",_a="تم الحفظ",xa="فشل الحفظ",Ka="فيديو شعر",Ga="إعدادات الشعر",Va="نص القصيدة",Ba="أدخل نص القصيدة كاملاً",Ua="يمكن أن تكون عدة مقاطع، مفصولة بسطر جديد أو علامات ترقيم. سيقسم الذكاء الاصطناعي إلى مشاهد حسب المعنى.",Oa="أوامر المشاهد (اختياري)",Wa="التنسيق: بيت | وصف بصري (مشهد واحد في كل سطر)",qa='اختياري. مشهد واحد في كل سطر، بتنسيق ثابت "بيت | وصف بصري". الطريقتان تعطيان نفس النتيجة: ① اتركه فارغًا، سيولده النظام؛ ② انسخ الأمر أدناه إلى أي ذكاء اصطناعي وألصق النتيجة هنا.',za="مثال: الربيع لا يدرك الفجر... | صباح ربيعي ضبابي، غناء العصافير",Qa="توليد المشاهد بذكاء اصطناعي آخر",Ya="عرض الأمر",ja="يتضمن الأمر عدد المشاهد ومدتها المضبوطين أعلاه، مطابق تمامًا لأمر النظام. انسخه إلى أي ذكاء اصطناعي، أدخل قصيدتك، ودعه يولّد المشاهد، ثم ألصق النتيجة في المربع أعلاه.",Ja="إدخال القصيدة ونسخ الأمر",Xa="المدة الإجمالية",Za="0=تلقائي",$a="تستخدم ترجمة الشعر نمطًا ثابتًا عامًا (أسفل المنتصف، نص أبيض بحدود سوداء) — يمكن التبديل فقط، دون تخصيص.",ec="تقسيم المشاهد",tc="توليد الفيديو",oc="الإلقاء",nc="الترجمة",sc="الدمج",ac="الرجاء إدخال نص القصيدة",cc="صورة بسيطة",ic="إعدادات الصورة",rc="وصف الصورة",lc="بحيرة عند سفح جبال ثلجية، ضباب الصباح، انعكاس الجبال في الماء، إضاءة سينمائية، أفقي",pc="حجم الصورة",dc="اختياري. ارفع لتوليد أشكال مختلفة؛ اتركه فارغًا لتوليد بالذكاء الاصطناعي الخالص.",mc="توليد الصورة",uc="اكتمل توليد الصورة!",fc="جارٍ التوليد...",gc="الرجاء إدخال وصف الصورة",Sc="إعدادات المذيع الرقمي",yc="وصف المذيع",bc="مذيع أخبار محترف يرتدي بدلة، يجلس في استوديو أخبار حديث...",Pc="صورة مرجعية (اختياري)",vc="اختياري. ارفع لضبط مظهر المذيع؛ اتركه فارغًا لتوليد بالذكاء الاصطناعي الخالص.",Cc="نص التعليق",hc="مرحبًا بكم في نشرة الأخبار التقنية اليوم. الخبر الأول: دخل توليد الفيديو بالذكاء الاصطناعي عصرًا مجانيًا...",kc="عمودي 9:16 (HD)",Rc="متطلبات موضع الترجمة",Tc="ضع الترجمة في الثلث السفلي من الشاشة، وتجنب تغطية وجه المذيع",Ac="مذيع",wc="مصدر الصوت",Dc="صوت ما بعد التركيب",Mc="جودة الصوت قابلة للتحكم (الصوت، السرعة)، لكن مطابقة الشفاه أصعب",Nc="صوت النموذج",Hc="الصوت يتحكم فيه النموذج، التأثير غير قابل للتنبؤ؛ لا توجد خيارات للصوت/السرعة",Ic="توليد صورة المذيع",Lc="تقسيم النص",Fc="توليد أوامر المقاطع",Ec="توليد فيديو المقاطع",_c="توليد الصوت",xc="توليد الترجمة",Kc="دمج الفيديو",Gc="أمر النظام",Vc="تعليمات إضافية للنموذج (مثل الأسلوب والجودة)، لا تؤثر على وصف المحتوى الرئيسي",Bc="النواتج الوسيطة",Uc="تحليل الصور",Oc="القصة",Wc="مرجع الشخصية",qc="السيناريو",zc="أوامر الإطار الأخير",Qc="إطار نهاية المشهد {index}",Yc="فيديو المشهد {index}",jc="صوت التعليق",Jc="الترجمة",Xc="الفيديو النهائي",Zc="صورة المذيع",$c="أوامر المقطع",ei="مقطع فيديو",ti="فيديو الفقرة {index}",oi="أوامر المشاهد",ni="حذف هذا الناتج ستحذف جميع النواتج اللاحقة وسيتم إرجاع حالة المهمة.",si="سيتم حذف الملفات التالية",ai="سيتم إعادة تعيين الخطوات التالية",ci="تم حذف الناتج",ii="فشل الحذف",ri="انقر للمعاينة",li="جارٍ بدء المهمة...",pi="احصل على مفتاح API مجانًا",di="دليل الإعداد",mi="جرّبه عبر الإنترنت",ui="🎯 نصائح الأوامر",fi="🧠 مقارنة النماذج",gi="📋 أمثلة أوامر الفيديو البسيط",Si="📋 أمثلة أوامر الفيديو الإبداعي",yi="📋 أمثلة فيديو المقال",bi="📋 أمثلة المذيع الرقمي",Pi="💡 أثناء الانتظار، شاهد ما ينشئه الآخرون بـ Agnes",vi="📈 خطط وسائل التواصل",Ci="🎬 المزيد من اتجاهات الإبداع",hi="⭐ ادعم المشروع",ki="مجاني بالكامل ومفتوح المصدر، لا رسوم أبدًا. ادعم المشروع:",Ri="⭐ امنح نجمة",Ti="ساعد المزيد من الناس على اكتشاف هذه الأداة",Ai="🔓 تعطيل AdBlock",wi="أوقف حظر الإعلانات على الموقع الرسمي",Di="👆 اضغط على إعلان",Mi="نقرة صغيرة، دعم حقيقي",Ni="شكرًا لدعمك ❤️",Hi="المزيد من الموارد",Ii="🏠 الصفحة الرئيسية للمشروع",Li="🎬 تجربة مباشرة",Fi="📖 دليل الاستخدام",Ei="❓ الأسئلة الشائعة",_i="📋 وثائق API",xi="🎯 حالات الاستخدام",Ki="🔗 روابط سريعة",Gi="📖 نصائح الأوامر",Vi="📚 نظرة عامة على النماذج",Bi="📘 استدعاء API",Ui="-30% (بطيء)",Oi="+30% (سريع)",Wi="-15% (إلقاء القصيدة أبطأ)",qi="أفقي 16:9 (HD)",zi="عمودي 9:18",Qi="أفقي 18:9",Yi="الماندرين · أنثى",ji="خطأ في الشبكة",Ji="تم النسخ ✓",Xi="توسيع",Zi="طي",$i="تحديث",er="إغلاق",tr="شعر",or="الكلمات المهمة بخط أحمر كبير، والسرد العادي بخط أبيض صغير في الأسفل",nr="إضافة مفتاح",sr="الصق مفتاح API جديد (يُضاف تلقائيًا إلى المفاتيح الموجودة)",ar="حذف",cr="حذف هذه المهمة وجميع الملفات المُنشأة؟ لا يمكن التراجع عن هذا الإجراء!",ir="تم حذف المهمة",rr="وضع التنفيذ",lr="⚡ تلقائي",pr="✋ يدوي",dr="الوضع التلقائي يعمل حتى النهاية دون تدخل؛ الوضع اليدوي يتوقف عند كل نقطة تحقق للتأكيد أو التعديل، ويمكن استخدامه مع أدوات الذكاء الاصطناعي الخارجية. يمكن التبديل في أي وقت.",mr="فشل الحذف",ur="فشل الإزالة",fr="المفاتيح المُعدة",gr="ENV",Sr="CONFIG",yr="من متغير البيئة؛ عدّله في بيئة التشغيل/.env",br="المفتاح ما زال فعّالًا (موجود في env)",Pr="تم تفعيل تناوب المفاتيح المتعددة",vr="إزالة هذا المفتاح",Cr="هل تريد إزالة هذا المفتاح؟",hr="تمت إزالة المفتاح",kr="ارفع صورة مرجعية لكل مشهد؛ سيستخدمها الفيديو كنقطة بداية بصرية (مع تخطي توليد لوحة القصة بالذكاء الاصطناعي لذلك المشهد). المشاهد دون رفع تستخدم صورًا من الذكاء الاصطناعي.",Rr="الصور المرجعية للمشاهد (اختياري)",Tr="فشل الحفظ",Ar="تم حفظ القطعة",wr="قارن",Dr="✅ المتابعة دون تغييرات",Mr="الاحتفاظ بالقطع الحالية والمتابعة",Nr="بعد الحفظ، ستُعاد توليد القطع السفلية المتأثرة",Hr="تعديل القطع",Ir="فتح نافذة التحرير",Lr="أدخل المحتوى المعدل هنا...",Fr="💾 حفظ التغييرات",Er="الرئيسية",_r="💻 التحرير عبر الإنترنت",xr="حرّر القطع النصية في نافذة واحفظها، وقارن بالأصل في أي وقت",Kr="هذا النموذج مدفوع، يُفوتر حسب الاستخدام. تأكد من فتح حصة الدفع.",Gr=" (مدفوع)",Vr="لا توجد قطع نصية قابلة للتحرير في نقطة التحقق هذه",Br="الأصل",Ur="جارٍ استئناف التنفيذ...",Or="تغيير اللغة",Wr="✅ تأكيد ومتابعة",qr="انقر على «تأكيد ومتابعة» بالأعلى لتطبيق التغييرات",zr="يحتاج إلى استئناف",Qr="استئناف المهمة",Yr="المهمة لا تعمل",jr="انقر على «استئناف المهمة» أعلى اليمين",Jr="يمكن تحرير القطع النصية فقط عبر الإنترنت",Xr="Generation failures are often caused by transient factors. Please retry first (resumes from the failed step).",Zr="Retry Task",$r="Retried {n} time(s)",el="Still failing after multiple retries? Report the issue",tl="Still failing after {n} retries. Please report with diagnostic info.",ol="This looks like a deterministic issue caused by parameters or content. Retrying may not help.",nl="مشكلة في الشبكة أو حل أسماء النطاقات على جهازك: الخادم أنهى المهمة غالبًا، لكن جهازك لا يستطيع جلب الملف. استخدم خادم DNS يستطيع الوصول إلى هذا النطاق (مثل 223.5.5.5 أو 119.29.29.29)، وعطّل اعتراض DNS لدى VPN/الوكيل وبرامج الحماية، ثم أعد المحاولة للاستئناف من الخطوة التي فشلت.",sl="Diagnostic Info",al="Copy Diagnostic Info",cl="Copied. Please paste it into the GitHub Issue.",il="Check the FAQ first",rl="Open an Issue on GitHub",ll="Please review before submitting (your prompt text is not included)",pl="Prefilled content was too long and shortened. Please paste the full diagnostic info.",dl="Generating diagnostic info…",ml="Copy failed, please try again",ul="## Diagnostic Info (Agnes Video Generator)",fl="App Version",gl="Task ID",Sl="Task Type",yl="Generation Mode",bl="Failed Step",Pl="Retry Count",vl="Key Configs",Cl="Environment",hl="unknown",kl="### Error Message",Rl="#### التتبع الكامل",Tl="### Reproduction Steps",Al="<!-- Please fill in: operations and related config -->",wl="### Expected Behavior",Dl="<!-- Please fill in -->",Ml="…(content was too long and truncated, please paste the full diagnostic info)",Nl="[Bug] {taskType} task failed at {failedStep}",Hl="[Bug] {taskType} generation failed",Il="#### Model call error {n}",Ll="Time",Fl="Model",El="API",_l="Error Type",xl="Status Code",Kl="Error Message",Gl="الخصوصية",Vl="إيقاف الإحصائيات المجهولة",Bl="عند التفعيل، لا يتم تحميل أي نصوص تحليلات (Google Analytics 4) ولا يتم إرسال أي بيانات.",Ul="عند تشغيل التحليلات، يتم إرسال ما يلي بشكل مجهول",Ol="أحداث المهام: إنشاء، إكمال، فشل، إيقاف، حذف",Wl="نوع المهمة ووضع التوليد (مثل: فيديو بسيط/t2v، فيديو إبداعي)",ql="إجراءات الواجهة والإعدادات: تبديل نوع المهمة، اختيار النماذج، حفظ/مسح مفاتيح API، النطاق، تبديل العلامة المائية (يتم تسجيل الإجراء فقط، وليس المفتاح نفسه)",zl="ملخص أخطاء الواجهة الأمامية: رسالة الخطأ (مقتطعة إلى 500 حرف)",Ql="لن يتم رفع ما يلي أبدًا بغض النظر عن حالة المفتاح",Yl="المحتوى الإبداعي مثل المطالبات والمخطوطات والنصوص الشعرية؛ مفاتيح API؛ الصور المرجعية. يتم استبدال جميع حقول المحتوى بعلامة <redacted> قبل الإرسال، ويتم اقتطاع النصوص الطويلة تلقائيًا، ولا يدخل شيء إلى نظام التحليلات.",jl="الإحصائيات مفعّلة",Jl="الإحصائيات متوقفة",Xl="未设置域名",Zl="该 Key 尚未绑定域名,将回退到全局配置。建议为每个 Key 选择匹配的域名。",$l="为该 Key 选择绑定域名(空=跟随全局)",ep="跟随全局",tp="Key 域名已保存",op="保存 Key 域名失败",np="自动探测域名",sp="探测中…",ap="自动为每个 Key 探测并补写匹配的域名",cp="域名探测完成,已更新",ip="探测正在进行或触发过于频繁,请稍候再试",rp="域名探测失败",lp="⭐ امنح نجمة لمشروع Flint الجديد",pp="ادعم مدير المهارات الجديد للمؤلف",dp="🪨 Flint · مدير المهارات",mp="Gallery",up="All",fp="Videos",gp="Images",Sp="All statuses",yp="Completed",bp="Failed",Pp="No media yet. Create a task first.",vp="Read-only view. Manage tasks in the list tab.",Cp="Presets",hp="Click a preset to fill the style field (you can still edit it).",kp="Save current style as a preset",Rp="Preset name",Tp="Name your preset (default: Untitled)",Ap="Preset saved",wp="Failed to save preset",Dp="Preset deleted",Mp="Failed to delete preset",Np="Delete this preset?",Hp="System presets are read-only",Ip="Untitled",Lp="No presets yet",Fp="Cinematic",Ep="Oriental",_p="Painting",xp="Animation",Kp="Fantasy",Gp="My presets",Vp="Film Noir",Bp="Ink Wash",Up="Watercolor",Op="Pixel Art",Wp="Dreamscape",qp="Photographic",zp="Documentary",Qp="Golden Hour",Yp="Studio Portrait",jp="Blockbuster",Jp="Moody Drama",Xp="Wuxia",Zp="Guofeng",$p="Classic Oil",ed="Storybook",td="Vivid Anime",od="Retro Anime",nd="Cyberpunk",sd="Epic Fantasy",ad={subtitle:e,apiKeyTitle:t,apiKeyNotConfigured:o,apiKeyConfigured:n,apiKeyPlaceholder:s,apiKeyMasked:a,save:c,clear:i,clearConfirm:r,apiKeyFromEnv:l,clearEnvHint:p,modelTitle:d,modelHint:m,modelTextLabel:u,modelImageLabel:f,modelVideoLabel:g,vmModelSelect:S,vmDiffTitle:y,vmColCapability:b,vmColPrice:P,vmColMode:v,vmColDuration:C,vmColResolution:h,vmColNegative:k,vmColRefVideo:R,vmTagPaid:T,vmTagFree:A,vmYes:w,vmNo:D,vmModelModesLabel:M,vmModelDurationsLabel:N,vmModelResLabel:H,vmModelNegativeLabel:I,vmModelRefImagesLabel:L,vmModelRefVideoLabel:F,vmModelNegativeUnsupported:E,vmRatioLabel:_,vmSizeLabel:x,vmRefImagesHint:K,vmNegativeDisabledPlaceholder:G,vmRatioHint:V,vm720pHint:B,modelSync:U,modelSyncIdle:O,modelSaved:W,modelBetaHint:q,modelBetaTag:z,modelTagText:Q,modelTagImage:Y,modelTagVideo:j,modelTextRequired:J,modelSyncFailed:X,modelSaveFailed:Z,workspaceTitle:$,workspaceNone:ee,workspaceActive:te,workspaceAdd:oe,workspacePathPlaceholder:ne,workspaceNamePlaceholder:se,workspaceActivate:ae,workspaceRemove:ce,workspaceActiveBadge:ie,workspaceCurrentActive:re,workspaceBrowse:le,workspaceDefault:pe,workspaceListTitle:de,workspaceListHint:me,workspaceRegressionHint:ue,workspaceRemoveConfirm:fe,tabCreate:ge,tabList:Se,tabSimple:ye,tabNewBadge:be,watermarkTitle:Pe,watermarkPromo:ve,watermarkEnabled:Ce,watermarkDisabled:he,ttSimple:ke,ttCreative:Re,ttManuscript:Te,subModeLabel:Ae,subModeVideo:we,subModeImage:De,simpleSettings:Me,simpleTitle:Ne,simpleIdea:He,simpleIdeaPlaceholder:Ie,simplePreview:Le,simplePreviewing:Fe,simpleScenes:Ee,simpleSetting:_e,simpleGenerate:xe,simpleGenerating:Ke,simpleGenerated:Ge,simpleScenePrompt:Ve,simpleSceneVoiceover:Be,creativeSettings:Ue,manuscriptSettings:Oe,promptLabel:We,promptPlaceholder:qe,genMode:ze,modeT2v:Qe,modeI2v:Ye,modeKeyframesSimple:je,duration:Je,resolution:Xe,resPortrait:Ze,resLandscape:$e,resSquare:et,refImageSimple:tt,endFrameImage:ot,chooseImage:nt,notSelected:st,advancedSettings:at,optional:ct,seedPlaceholder:it,negativePlaceholder:rt,taskName:lt,taskNamePlaceholder:pt,ideaLabel:dt,ideaPlaceholder:mt,visualStyle:ut,requirementDefault:ft,styleDefault:gt,chainingMode:St,modeKeyframes:yt,modeTi2vid:bt,modeNone:Pt,referenceImage:vt,refDescription:Ct,customEndFrames:ht,enableCustomEndFrames:kt,genEndFramesFromRef:Rt,endFrameDesc:Tt,scene_:At,addEndFrame:wt,audioConfig:Dt,subtitleConfig:Mt,enableNarration:Nt,enableSubtitle:Ht,voiceRole:It,speechRate:Lt,rateNormal:Ft,selectVoice:Et,searchVoice:_t,currentSelection:xt,confirmSelection:Kt,cancel:Gt,confirm:Vt,previewPlay:Bt,previewStop:Ut,previewFailed:Ot,voiceCompatWarning:Wt,voiceGenderFemale:qt,voiceGenderMale:zt,voiceEmpty:Qt,subtitleStyle:Yt,subFont:jt,subColor:Jt,subSize:Xt,subPosition:Zt,posBottom:$t,posTop:eo,subStrokeColor:to,subStrokeWidth:oo,subBgColor:no,subStyleMode:so,subStyleFixed:ao,subStyleLLM:co,subStyleHints:io,subStyleHintsHint:ro,manuscriptText:lo,manuscriptPlaceholder:po,charCount:mo,startGenerate:uo,submitting:fo,taskRunning:go,loading:So,noTasks:yo,loadFailed:bo,progress:Po,stopTask:vo,sStepSubmit:Co,sStepVideoGen:ho,cStepInit:ko,cStepSceneConfig:Ro,cStepImageAnalysis:To,cStepStory:Ao,cStepCharacterRef:wo,cStepScript:Do,cStepEndFramePrompts:Mo,cStepEndFrameGen:No,cStepVideoGen:Ho,cStepAudio:Io,cStepSubtitle:Lo,cStepConcat:Fo,mStepSplit:Eo,mStepScenePrompts:_o,mStepVideoGen:xo,mStepAudio:Ko,mStepSubtitle:Go,mStepConcat:Vo,videoComplete:Bo,taskComplete:Uo,taskId:Oo,dir:Wo,idea_:qo,sceneCount:zo,chainingMode_:Qo,sceneConfig:Yo,durationSource:jo,sourceManual:Jo,sourcePrompt:Xo,sourceManualHint:Zo,sourcePromptHint:$o,durationMode:en,uniformDuration:tn,independentDuration:on,seconds:nn,artifact:sn,paragraphCount:an,statusCompleted:cn,statusRunning:rn,statusFailed:ln,statusPending:pn,statusQueued:dn,cpImageAnalysis:mn,cpStory:un,cpScript:fn,cpCharacterRef:gn,cpEndFramePrompts:Sn,cpEndFrameGen:yn,taskInfo:bn,tiIdea:Pn,tiManuscript:vn,tiScript:Cn,tiAnchorPrompt:hn,tiPoem:kn,tiPrompt:Rn,tiWidth:Tn,tiHeight:An,tiScenes:wn,tiParagraphs:Dn,tiChaining:Mn,tiStyle:Nn,tiAudioSource:Hn,tiMode:In,tiDuration:Ln,pausePoints:Fn,pausePointsHint:En,cpScenes:_n,cpReferences:xn,cpVideos:Kn,cpAudio:Gn,cpSubtitle:Vn,cpFinal:Bn,manualUnsupported:Un,modeSwitching:On,modeSwitched:Wn,failSwitchMode:qn,switchToAuto:zn,switchToManual:Qn,switchToAutoConfirm:Yn,switchToManualConfirm:jn,awaitingUser:Jn,awaitingUserTip:Xn,checkpointTitle:Zn,cpDone:$n,cpPending:es,cpRunning:ts,howToHandle:os,handleAi:ns,handleAiDesc:ss,handleSelf:as,handleSelfDesc:cs,handleAgent:is,handleAgentDesc:rs,handleAgentFlint:ls,aiModifyRequest:ps,aiModifyRequestPlaceholder:ds,aiModifyStart:ms,aiModifyApplying:us,aiModifyResult:fs,applyAndContinue:gs,discard:Ss,selfEditPath:ys,selfEditSchemaHint:bs,selfEditAffected:Ps,selfEditDone:vs,agentCommand:Cs,agentPrompt:hs,agentDone:ks,agentMoreTools:Rs,copy:Ts,noEditableArtifact:As,aiModifyFailed:ws,failContinue:Ds,continued:Ms,failRegen:Ns,regenCurrent:Hs,selfEditAffectedHint:Is,agentPromptTemplate:Ls,impactTitle:Fs,impactRetained:Es,impactConfirm:_s,impactCancel:xs,noAffected:Ks,paramUpdates:Gs,paramResolution:Vs,paramVoice:Bs,agentCommandLines:Us,statusAwaitingUser:Os,progressBack:Ws,ppStages:qs,ppExpand:zs,ppCollapse:Qs,ppWaiting:Ys,btnView:js,btnViewProgress:Js,btnResume:Xs,btnStop:Zs,sceneUnit:$s,paraUnit:ea,typeSimple:ta,typeCreative:oa,typeManuscript:na,typeImage:sa,stopConfirm:aa,stopConfirmById:ca,stopped:ia,stoppedById:ra,enterApiKey:la,enterPrompt:pa,enterIdea:da,enterText:ma,taskRunningWarn:ua,failCreate:fa,failResume:ga,failLoad:Sa,failStop:ya,stopping:ba,submitted:Pa,resumed:va,watchLog:Ca,task_:ha,genFailed:ka,genFailedMsg:Ra,gotoResume:Ta,connLost:Aa,connLostMsg:wa,gotoList:Da,reconnecting:Ma,ttAnchor:Na,domainTitle:Ha,domainHint:Ia,domainComLabel:La,domainCnLabel:Fa,domainCnBakLabel:Ea,domainSaved:_a,domainSaveFailed:xa,ttPoetry:Ka,poetrySettings:Ga,poemLabel:Va,poemPlaceholder:Ba,poemHint:Ua,scenePromptsOptional:Oa,scenePromptsPlaceholder:Wa,scenePromptsHint:qa,scenePromptsExample:za,scenePromptTool:Qa,showPrompt:Ya,scenePromptToolHint:ja,copyPromptWithPoem:Ja,totalDuration:Xa,sceneCountAuto:Za,poetrySubtitleFixed:$a,pStepBuildScenes:ec,pStepVideoGen:tc,pStepAudio:oc,pStepSubtitle:nc,pStepConcat:sc,enterPoem:ac,ttImage:cc,imageSettings:ic,imagePrompt:rc,imagePromptPlaceholder:lc,imageSize:pc,refImageHint:dc,imgGenerate:mc,imgComplete:uc,generating:fc,enterImagePrompt:gc,anchorSettings:Sc,anchorPrompt:yc,anchorPromptPlaceholder:bc,anchorRefImage:Pc,anchorRefImageHint:vc,scriptText:Cc,scriptTextPlaceholder:hc,resPortraitHD:kc,subPositionHints:Rc,subPositionHintsPlaceholder:Tc,typeAnchor:Ac,audioSource:wc,audioPostStitch:Dc,audioPostStitchDesc:Mc,audioModel:Nc,audioModelDesc:Hc,aStepGenerateAnchor:Ic,aStepSplit:Lc,aStepClipPrompts:Fc,aStepClipGen:Ec,aStepAudio:_c,aStepSubtitle:xc,aStepConcat:Kc,systemPrompt:Gc,systemPromptPlaceholder:Vc,artTitle:Bc,artImageAnalysis:Uc,artStory:Oc,artCharacterRef:Wc,artScript:qc,artEndFramePrompts:zc,artEndFrame:Qc,artVideo:Yc,artAudio:jc,artSubtitle:Jc,artFinalVideo:Xc,artAnchorImage:Zc,artClipPrompts:$c,artClip:ei,artParaVideo:ti,artScenePrompts:oi,deleteArtifactConfirm:ni,willDelete:si,willResetSteps:ai,artifactDeleted:ci,artifactDeleteFailed:ii,clickToPreview:ri,taskStarting:li,apiKeyGetLink:pi,apiKeyGuideLink:di,apiKeyDemoLink:mi,formTipTips:ui,formTipModels:fi,exampleLinkSimple:gi,exampleLinkCreative:Si,exampleLinkManuscript:yi,exampleLinkAnchor:bi,waitTip:Pi,doneTipTiktok:vi,doneTipMore:Ci,adSupportTitle:hi,adSupportDesc:ki,adStar:Ri,adStarDesc:Ti,adAdblock:Ai,adAdblockDesc:wi,adClick:Di,adClickDesc:Mi,adThanks:Ni,moreResources:Hi,projectHome:Ii,onlineDemo:Li,usageGuide:Fi,faqTitle:Ei,apiDocs:_i,appScenarios:xi,quickLinks:Ki,promptTips:Gi,modelOverview:Vi,apiCall:Bi,rateSlow:Ui,rateFast:Oi,ratePoem:Wi,resLandscapeHD:qi,resPortraitTall:zi,resLandscapeWide:Qi,voiceDefaultDesc:Yi,networkError:ji,copied:Ji,expand:Xi,collapse:Zi,refresh:$i,close:er,typePoetry:tr,subStyleHintsPlaceholder:or,addKey:nr,apiKeyAppendPlaceholder:sr,deleteTask:ar,deleteTaskConfirm:cr,deletedTask:ir,execMode:rr,execAuto:lr,execManual:pr,execModeHint:dr,failDelete:mr,failRemoveKey:ur,keyCountLabel:fr,keySrcEnv:gr,keySrcConfig:Sr,keySrcEnvHint:yr,keyStillActive:br,multiKeyActive:Pr,removeKeyBtn:vr,removeKeyConfirm:Cr,removedKey:hr,sceneRefDesc:kr,sceneReferenceImages:Rr,artifactSaveFailed:Tr,artifactSaved:Ar,compare:wr,continueNoChange:Dr,continueNoChangeHint:Mr,editArtifactHint:Nr,editModalTitle:Hr,editOpen:Ir,editPlaceholder:Lr,editSave:Fr,goHome:Er,handleEdit:_r,handleEditDesc:xr,modelPaidHint:Kr,modelPaidTag:Gr,noEditableText:Vr,originalContent:Br,resuming:Ur,langSwitch:Or,continueConfirm:Wr,continueToApply:qr,statusNeedsResume:zr,resumeTaskBtn:Qr,taskNotRunning:Yr,taskNotRunningHint:jr,editTextOnly:Jr,fbRetryHint:Xr,fbRetryBtn:Zr,fbRetriedN:$r,fbCollapsedHint:el,fbExpandedHint:tl,fbDeterministicHint:ol,fbNetworkHint:nl,fbDiagTitle:sl,fbCopy:al,fbCopied:cl,fbFaq:il,fbGithub:rl,fbPrivacyHint:ll,fbUrlTooLong:pl,fbDiagLoading:dl,fbCopyFailed:ml,fbRepTitle:ul,fbRepAppVersion:fl,fbRepTaskId:gl,fbRepTaskType:Sl,fbRepMode:yl,fbRepFailedStep:bl,fbRepRetryCount:Pl,fbRepConfigs:vl,fbRepEnv:Cl,fbRepUnknown:hl,fbRepErrorTitle:kl,fbRepTraceback:Rl,fbRepReproSteps:Tl,fbRepReproHint:Al,fbRepExpected:wl,fbRepExpectedHint:Dl,fbRepTruncated:Ml,fbRepIssueTitleStep:Nl,fbRepIssueTitleNoStep:Hl,fbRepErrHeading:Il,fbRepErrTime:Ll,fbRepErrModel:Fl,fbRepErrApi:El,fbRepErrType:_l,fbRepErrStatusCode:xl,fbRepErrInfo:Kl,privacyTitle:Gl,gaOptOutLabel:Vl,gaOptOutHint:Bl,gaReportTitle:Ul,gaReportItem1:Ol,gaReportItem2:Wl,gaReportItem3:ql,gaReportItem4:zl,gaNeverUploadTitle:Ql,gaNeverUploadText:Yl,gaStatOn:jl,gaStatOff:Jl,keyDomainNotSet:Xl,keyDomainNotSetHint:Zl,keyDomainSelectTitle:$l,keyDomainAuto:ep,keyDomainSaved:tp,failSaveKeyDomain:op,detectKeysBtn:np,detectKeysRunning:sp,detectKeysHint:ap,detectKeysDone:cp,detectKeysBusy:ip,failDetectKeys:rp,adSkewStar:lp,adSkewStarDesc:pp,flintLinkLabel:dp,tabGallery:mp,filterAll:up,filterVideo:fp,filterImage:gp,filterStatusAll:Sp,filterStatusCompleted:yp,filterStatusFailed:bp,galleryEmpty:Pp,galleryReadonlyHint:vp,presetOpen:Cp,presetSelectHint:hp,presetSaveAs:kp,presetSaveName:Rp,presetNamePlaceholder:Tp,presetSaved:Ap,presetSaveFailed:wp,presetDeleted:Dp,presetDeleteFailed:Mp,presetDeleteConfirm:Np,presetSystemReadonly:Hp,presetNameUntitled:Ip,presetNoPresets:Lp,presetCat_cinematic:Fp,presetCat_oriental:Ep,presetCat_painting:_p,presetCat_animation:xp,presetCat_fantasy:Kp,presetCat_custom:Gp,presetName_film_noir:Vp,presetName_ink_wash:Bp,presetName_watercolor:Up,presetName_pixel_art:Op,presetName_dreamscape:Wp,presetCat_photographic:qp,presetName_docu_real:zp,presetName_golden_hour:Qp,presetName_studio_portrait:Yp,presetName_blockbuster:jp,presetName_moody_drama:Jp,presetName_wuxia:Xp,presetName_guofeng:Zp,presetName_oil_classic:$p,presetName_storybook:ed,presetName_anime_vivid:td,presetName_anime_retro:od,presetName_cyberpunk:nd,presetName_epic_fantasy:sd};export{_c as aStepAudio,Ec as aStepClipGen,Fc as aStepClipPrompts,Kc as aStepConcat,Ic as aStepGenerateAnchor,Lc as aStepSplit,xc as aStepSubtitle,Ai as adAdblock,wi as adAdblockDesc,Di as adClick,Mi as adClickDesc,lp as adSkewStar,pp as adSkewStarDesc,Ri as adStar,Ti as adStarDesc,ki as adSupportDesc,hi as adSupportTitle,Ni as adThanks,wt as addEndFrame,nr as addKey,at as advancedSettings,Cs as agentCommand,Us as agentCommandLines,ks as agentDone,Rs as agentMoreTools,hs as agentPrompt,Ls as agentPromptTemplate,us as aiModifyApplying,ws as aiModifyFailed,ps as aiModifyRequest,ds as aiModifyRequestPlaceholder,fs as aiModifyResult,ms as aiModifyStart,yc as anchorPrompt,bc as anchorPromptPlaceholder,Pc as anchorRefImage,vc as anchorRefImageHint,Sc as anchorSettings,Bi as apiCall,_i as apiDocs,sr as apiKeyAppendPlaceholder,n as apiKeyConfigured,mi as apiKeyDemoLink,l as apiKeyFromEnv,pi as apiKeyGetLink,di as apiKeyGuideLink,a as apiKeyMasked,o as apiKeyNotConfigured,s as apiKeyPlaceholder,t as apiKeyTitle,xi as appScenarios,gs as applyAndContinue,Zc as artAnchorImage,jc as artAudio,Wc as artCharacterRef,ei as artClip,$c as artClipPrompts,Qc as artEndFrame,zc as artEndFramePrompts,Xc as artFinalVideo,Uc as artImageAnalysis,ti as artParaVideo,oi as artScenePrompts,qc as artScript,Oc as artStory,Jc as artSubtitle,Bc as artTitle,Yc as artVideo,sn as artifact,ii as artifactDeleteFailed,ci as artifactDeleted,Tr as artifactSaveFailed,Ar as artifactSaved,Dt as audioConfig,Nc as audioModel,Hc as audioModelDesc,Dc as audioPostStitch,Mc as audioPostStitchDesc,wc as audioSource,Jn as awaitingUser,Xn as awaitingUserTip,Xs as btnResume,Zs as btnStop,js as btnView,Js as btnViewProgress,Io as cStepAudio,wo as cStepCharacterRef,Fo as cStepConcat,No as cStepEndFrameGen,Mo as cStepEndFramePrompts,To as cStepImageAnalysis,ko as cStepInit,Ro as cStepSceneConfig,Do as cStepScript,Ao as cStepStory,Lo as cStepSubtitle,Ho as cStepVideoGen,Gt as cancel,St as chainingMode,Qo as chainingMode_,mo as charCount,Zn as checkpointTitle,nt as chooseImage,i as clear,r as clearConfirm,p as clearEnvHint,ri as clickToPreview,er as close,Zi as collapse,wr as compare,Vt as confirm,Kt as confirmSelection,Aa as connLost,wa as connLostMsg,Wr as continueConfirm,Dr as continueNoChange,Mr as continueNoChangeHint,qr as continueToApply,Ms as continued,Ji as copied,Ts as copy,Ja as copyPromptWithPoem,Gn as cpAudio,gn as cpCharacterRef,$n as cpDone,yn as cpEndFrameGen,Sn as cpEndFramePrompts,Bn as cpFinal,mn as cpImageAnalysis,es as cpPending,xn as cpReferences,ts as cpRunning,_n as cpScenes,fn as cpScript,un as cpStory,Vn as cpSubtitle,Kn as cpVideos,Ue as creativeSettings,xt as currentSelection,ht as customEndFrames,ad as default,ni as deleteArtifactConfirm,ar as deleteTask,cr as deleteTaskConfirm,ir as deletedTask,np as detectKeysBtn,ip as detectKeysBusy,cp as detectKeysDone,ap as detectKeysHint,sp as detectKeysRunning,Wo as dir,Ss as discard,Ea as domainCnBakLabel,Fa as domainCnLabel,La as domainComLabel,Ia as domainHint,xa as domainSaveFailed,_a as domainSaved,Ha as domainTitle,Ci as doneTipMore,vi as doneTipTiktok,Je as duration,en as durationMode,jo as durationSource,Nr as editArtifactHint,Hr as editModalTitle,Ir as editOpen,Lr as editPlaceholder,Fr as editSave,Jr as editTextOnly,kt as enableCustomEndFrames,Nt as enableNarration,Ht as enableSubtitle,Tt as endFrameDesc,ot as endFrameImage,la as enterApiKey,da as enterIdea,gc as enterImagePrompt,ac as enterPoem,pa as enterPrompt,ma as enterText,bi as exampleLinkAnchor,Si as exampleLinkCreative,yi as exampleLinkManuscript,gi as exampleLinkSimple,lr as execAuto,pr as execManual,rr as execMode,dr as execModeHint,Xi as expand,Ds as failContinue,fa as failCreate,mr as failDelete,rp as failDetectKeys,Sa as failLoad,Ns as failRegen,ur as failRemoveKey,ga as failResume,op as failSaveKeyDomain,ya as failStop,qn as failSwitchMode,Ei as faqTitle,el as fbCollapsedHint,cl as fbCopied,al as fbCopy,ml as fbCopyFailed,ol as fbDeterministicHint,dl as fbDiagLoading,sl as fbDiagTitle,tl as fbExpandedHint,il as fbFaq,rl as fbGithub,nl as fbNetworkHint,ll as fbPrivacyHint,fl as fbRepAppVersion,vl as fbRepConfigs,Cl as fbRepEnv,El as fbRepErrApi,Il as fbRepErrHeading,Kl as fbRepErrInfo,Fl as fbRepErrModel,xl as fbRepErrStatusCode,Ll as fbRepErrTime,_l as fbRepErrType,kl as fbRepErrorTitle,wl as fbRepExpected,Dl as fbRepExpectedHint,bl as fbRepFailedStep,Hl as fbRepIssueTitleNoStep,Nl as fbRepIssueTitleStep,yl as fbRepMode,Al as fbRepReproHint,Tl as fbRepReproSteps,Pl as fbRepRetryCount,gl as fbRepTaskId,Sl as fbRepTaskType,ul as fbRepTitle,Rl as fbRepTraceback,Ml as fbRepTruncated,hl as fbRepUnknown,$r as fbRetriedN,Zr as fbRetryBtn,Xr as fbRetryHint,pl as fbUrlTooLong,up as filterAll,gp as filterImage,Sp as filterStatusAll,yp as filterStatusCompleted,bp as filterStatusFailed,fp as filterVideo,dp as flintLinkLabel,fi as formTipModels,ui as formTipTips,Yl as gaNeverUploadText,Ql as gaNeverUploadTitle,Bl as gaOptOutHint,Vl as gaOptOutLabel,Ol as gaReportItem1,Wl as gaReportItem2,ql as gaReportItem3,zl as gaReportItem4,Ul as gaReportTitle,Jl as gaStatOff,jl as gaStatOn,Pp as galleryEmpty,vp as galleryReadonlyHint,Rt as genEndFramesFromRef,ka as genFailed,Ra as genFailedMsg,ze as genMode,fc as generating,Er as goHome,Da as gotoList,Ta as gotoResume,is as handleAgent,rs as handleAgentDesc,ls as handleAgentFlint,ns as handleAi,ss as handleAiDesc,_r as handleEdit,xr as handleEditDesc,as as handleSelf,cs as handleSelfDesc,os as howToHandle,dt as ideaLabel,mt as ideaPlaceholder,qo as idea_,rc as imagePrompt,lc as imagePromptPlaceholder,ic as imageSettings,pc as imageSize,uc as imgComplete,mc as imgGenerate,xs as impactCancel,_s as impactConfirm,Es as impactRetained,Fs as impactTitle,on as independentDuration,fr as keyCountLabel,ep as keyDomainAuto,Xl as keyDomainNotSet,Zl as keyDomainNotSetHint,tp as keyDomainSaved,$l as keyDomainSelectTitle,Sr as keySrcConfig,gr as keySrcEnv,yr as keySrcEnvHint,br as keyStillActive,Or as langSwitch,bo as loadFailed,So as loading,Ko as mStepAudio,Vo as mStepConcat,_o as mStepScenePrompts,Eo as mStepSplit,Go as mStepSubtitle,xo as mStepVideoGen,Un as manualUnsupported,po as manuscriptPlaceholder,Oe as manuscriptSettings,lo as manuscriptText,Ye as modeI2v,yt as modeKeyframes,je as modeKeyframesSimple,Pt as modeNone,Wn as modeSwitched,On as modeSwitching,Qe as modeT2v,bt as modeTi2vid,q as modelBetaHint,z as modelBetaTag,m as modelHint,f as modelImageLabel,Vi as modelOverview,Kr as modelPaidHint,Gr as modelPaidTag,Z as modelSaveFailed,W as modelSaved,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,g as modelVideoLabel,Hi as moreResources,Pr as multiKeyActive,rt as negativePlaceholder,ji as networkError,Ks as noAffected,As as noEditableArtifact,Vr as noEditableText,yo as noTasks,st as notSelected,Li as onlineDemo,ct as optional,Br as originalContent,oc as pStepAudio,ec as pStepBuildScenes,sc as pStepConcat,nc as pStepSubtitle,tc as pStepVideoGen,ea as paraUnit,an as paragraphCount,Vs as paramResolution,Gs as paramUpdates,Bs as paramVoice,Fn as pausePoints,En as pausePointsHint,Ua as poemHint,Va as poemLabel,Ba as poemPlaceholder,Ga as poetrySettings,$a as poetrySubtitleFixed,$t as posBottom,eo as posTop,Qs as ppCollapse,zs as ppExpand,qs as ppStages,Ys as ppWaiting,xp as presetCat_animation,Fp as presetCat_cinematic,Gp as presetCat_custom,Kp as presetCat_fantasy,Ep as presetCat_oriental,_p as presetCat_painting,qp as presetCat_photographic,Np as presetDeleteConfirm,Mp as presetDeleteFailed,Dp as presetDeleted,Tp as presetNamePlaceholder,Ip as presetNameUntitled,od as presetName_anime_retro,td as presetName_anime_vivid,jp as presetName_blockbuster,nd as presetName_cyberpunk,zp as presetName_docu_real,Wp as presetName_dreamscape,sd as presetName_epic_fantasy,Vp as presetName_film_noir,Qp as presetName_golden_hour,Zp as presetName_guofeng,Bp as presetName_ink_wash,Jp as presetName_moody_drama,$p as presetName_oil_classic,Op as presetName_pixel_art,ed as presetName_storybook,Yp as presetName_studio_portrait,Up as presetName_watercolor,Xp as presetName_wuxia,Lp as presetNoPresets,Cp as presetOpen,kp as presetSaveAs,wp as presetSaveFailed,Rp as presetSaveName,Ap as presetSaved,hp as presetSelectHint,Hp as presetSystemReadonly,Ot as previewFailed,Bt as previewPlay,Ut as previewStop,Gl as privacyTitle,Po as progress,Ws as progressBack,Ii as projectHome,We as promptLabel,qe as promptPlaceholder,Gi as promptTips,Ki as quickLinks,Oi as rateFast,Ft as rateNormal,Wi as ratePoem,Ui as rateSlow,Ma as reconnecting,Ct as refDescription,dc as refImageHint,tt as refImageSimple,vt as referenceImage,$i as refresh,Hs as regenCurrent,vr as removeKeyBtn,Cr as removeKeyConfirm,hr as removedKey,ft as requirementDefault,$e as resLandscape,qi as resLandscapeHD,Qi as resLandscapeWide,Ze as resPortrait,kc as resPortraitHD,zi as resPortraitTall,et as resSquare,Xe as resolution,Qr as resumeTaskBtn,va as resumed,Ur as resuming,Co as sStepSubmit,ho as sStepVideoGen,c as save,Yo as sceneConfig,zo as sceneCount,Za as sceneCountAuto,Qa as scenePromptTool,ja as scenePromptToolHint,za as scenePromptsExample,qa as scenePromptsHint,Oa as scenePromptsOptional,Wa as scenePromptsPlaceholder,kr as sceneRefDesc,Rr as sceneReferenceImages,$s as sceneUnit,At as scene_,Cc as scriptText,hc as scriptTextPlaceholder,_t as searchVoice,nn as seconds,it as seedPlaceholder,Et as selectVoice,Ps as selfEditAffected,Is as selfEditAffectedHint,vs as selfEditDone,ys as selfEditPath,bs as selfEditSchemaHint,Ya as showPrompt,xe as simpleGenerate,Ge as simpleGenerated,Ke as simpleGenerating,He as simpleIdea,Ie as simpleIdeaPlaceholder,Le as simplePreview,Fe as simplePreviewing,Ve as simpleScenePrompt,Be as simpleSceneVoiceover,Ee as simpleScenes,_e as simpleSetting,Me as simpleSettings,Ne as simpleTitle,Jo as sourceManual,Zo as sourceManualHint,Xo as sourcePrompt,$o as sourcePromptHint,Lt as speechRate,uo as startGenerate,Os as statusAwaitingUser,cn as statusCompleted,ln as statusFailed,zr as statusNeedsResume,pn as statusPending,dn as statusQueued,rn as statusRunning,aa as stopConfirm,ca as stopConfirmById,vo as stopTask,ia as stopped,ra as stoppedById,ba as stopping,gt as styleDefault,no as subBgColor,Jt as subColor,jt as subFont,De as subModeImage,Ae as subModeLabel,we as subModeVideo,Zt as subPosition,Rc as subPositionHints,Tc as subPositionHintsPlaceholder,Xt as subSize,to as subStrokeColor,oo as subStrokeWidth,ao as subStyleFixed,io as subStyleHints,ro as subStyleHintsHint,or as subStyleHintsPlaceholder,co as subStyleLLM,so as subStyleMode,Pa as submitted,fo as submitting,e as subtitle,Mt as subtitleConfig,Yt as subtitleStyle,zn as switchToAuto,Yn as switchToAutoConfirm,Qn as switchToManual,jn as switchToManualConfirm,Gc as systemPrompt,Vc as systemPromptPlaceholder,ge as tabCreate,mp as tabGallery,Se as tabList,be as tabNewBadge,ye as tabSimple,Uo as taskComplete,Oo as taskId,bn as taskInfo,lt as taskName,pt as taskNamePlaceholder,Yr as taskNotRunning,jr as taskNotRunningHint,go as taskRunning,ua as taskRunningWarn,li as taskStarting,ha as task_,hn as tiAnchorPrompt,Hn as tiAudioSource,Mn as tiChaining,Ln as tiDuration,An as tiHeight,Pn as tiIdea,vn as tiManuscript,In as tiMode,Dn as tiParagraphs,kn as tiPoem,Rn as tiPrompt,wn as tiScenes,Cn as tiScript,Nn as tiStyle,Tn as tiWidth,Xa as totalDuration,Na as ttAnchor,Re as ttCreative,cc as ttImage,Te as ttManuscript,Ka as ttPoetry,ke as ttSimple,Ac as typeAnchor,oa as typeCreative,sa as typeImage,na as typeManuscript,tr as typePoetry,ta as typeSimple,tn as uniformDuration,Fi as usageGuide,Bo as videoComplete,ut as visualStyle,B as vm720pHint,b as vmColCapability,C as vmColDuration,v as vmColMode,k as vmColNegative,P as vmColPrice,R as vmColRefVideo,h as vmColResolution,y as vmDiffTitle,N as vmModelDurationsLabel,M as vmModelModesLabel,I as vmModelNegativeLabel,E as vmModelNegativeUnsupported,L as vmModelRefImagesLabel,F as vmModelRefVideoLabel,H as vmModelResLabel,S as vmModelSelect,G as vmNegativeDisabledPlaceholder,D as vmNo,V as vmRatioHint,_ as vmRatioLabel,K as vmRefImagesHint,x as vmSizeLabel,A as vmTagFree,T as vmTagPaid,w as vmYes,Wt as voiceCompatWarning,Yi as voiceDefaultDesc,Qt as voiceEmpty,qt as voiceGenderFemale,zt as voiceGenderMale,It as voiceRole,Pi as waitTip,Ca as watchLog,he as watermarkDisabled,Ce as watermarkEnabled,ve as watermarkPromo,Pe as watermarkTitle,si as willDelete,ai as willResetSteps,ae as workspaceActivate,te as workspaceActive,ie as workspaceActiveBadge,oe as workspaceAdd,le as workspaceBrowse,re as workspaceCurrentActive,pe as workspaceDefault,me as workspaceListHint,de as workspaceListTitle,se as workspaceNamePlaceholder,ee as workspaceNone,ne as workspacePathPlaceholder,ue as workspaceRegressionHint,ce as workspaceRemove,fe as workspaceRemoveConfirm,$ as workspaceTitle};
|